From 85f3030a7740a9f95146e484872010edca097d49 Mon Sep 17 00:00:00 2001 From: Pierre-yves FONTANIERE Date: Wed, 22 Jan 2025 10:36:38 +0100 Subject: [PATCH 1/6] Use GO modules to handle dependencies --- go.mod | 14 ++++++++++++++ go.sum | 12 ++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 go.mod create mode 100644 go.sum diff --git a/go.mod b/go.mod new file mode 100644 index 00000000..c402f848 --- /dev/null +++ b/go.mod @@ -0,0 +1,14 @@ +module github.com/HewlettPackard/oneview-golang + +go 1.22.1 + +require ( + github.com/docker/machine v0.16.2 + github.com/stretchr/testify v1.10.0 +) + +require ( + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 00000000..3466281a --- /dev/null +++ b/go.sum @@ -0,0 +1,12 @@ +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/docker/machine v0.16.2 h1:jyF9k3Zg+oIGxxSdYKPScyj3HqFZ6FjgA/3sblcASiU= +github.com/docker/machine v0.16.2/go.mod h1:I8mPNDeK1uH+JTcUU7X0ZW8KiYz0jyAgNaeSJ1rCfDI= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From 3b267c636cb19eb6c343d51844b5249f5d754af6 Mon Sep 17 00:00:00 2001 From: Pierre-yves FONTANIERE Date: Wed, 22 Jan 2025 10:37:58 +0100 Subject: [PATCH 2/6] Vendoring directory is now managed by GO modules --- vendor/github.com/davecgh/go-spew/.gitignore | 22 - vendor/github.com/davecgh/go-spew/.travis.yml | 11 - vendor/github.com/davecgh/go-spew/LICENSE | 6 +- vendor/github.com/davecgh/go-spew/README.md | 194 - .../github.com/davecgh/go-spew/cov_report.sh | 22 - .../github.com/davecgh/go-spew/spew/bypass.go | 194 +- .../davecgh/go-spew/spew/bypasssafe.go | 9 +- .../github.com/davecgh/go-spew/spew/common.go | 4 +- .../davecgh/go-spew/spew/common_test.go | 298 - .../github.com/davecgh/go-spew/spew/config.go | 13 +- vendor/github.com/davecgh/go-spew/spew/doc.go | 11 +- .../github.com/davecgh/go-spew/spew/dump.go | 18 +- .../davecgh/go-spew/spew/dump_test.go | 1042 - .../davecgh/go-spew/spew/dumpcgo_test.go | 98 - .../davecgh/go-spew/spew/dumpnocgo_test.go | 26 - .../davecgh/go-spew/spew/example_test.go | 226 - .../github.com/davecgh/go-spew/spew/format.go | 6 +- .../davecgh/go-spew/spew/format_test.go | 1558 - .../davecgh/go-spew/spew/internal_test.go | 87 - .../go-spew/spew/internalunsafe_test.go | 101 - .../github.com/davecgh/go-spew/spew/spew.go | 2 +- .../davecgh/go-spew/spew/spew_test.go | 309 - .../davecgh/go-spew/spew/testdata/dumpcgo.go | 82 - .../davecgh/go-spew/test_coverage.txt | 61 - .../github.com/docker/machine/.dockerignore | 4 - vendor/github.com/docker/machine/.gitignore | 6 - vendor/github.com/docker/machine/.godir | 1 - vendor/github.com/docker/machine/.travis.yml | 12 - vendor/github.com/docker/machine/CHANGELOG.md | 629 - .../github.com/docker/machine/CONTRIBUTING.md | 288 - vendor/github.com/docker/machine/Dockerfile | 11 - .../docker/machine/Godeps/Godeps.json | 617 - .../github.com/docker/machine/Godeps/Readme | 5 - vendor/github.com/docker/machine/MAINTAINERS | 46 - vendor/github.com/docker/machine/Makefile | 18 - vendor/github.com/docker/machine/Makefile.inc | 31 - vendor/github.com/docker/machine/README.md | 143 - vendor/github.com/docker/machine/ROADMAP.md | 34 - vendor/github.com/docker/machine/appveyor.yml | 18 - vendor/github.com/docker/machine/circle.yml | 30 - .../github.com/docker/machine/cmd/machine.go | 215 - .../docker/machine/cmd/machine_test.go | 17 - .../docker/machine/commands/active.go | 60 - .../docker/machine/commands/active_test.go | 110 - .../docker/machine/commands/commands.go | 464 - .../docker/machine/commands/commands_test.go | 243 - .../commandstest/fake_command_line.go | 100 - .../commands/commandstest/stdout_capture.go | 54 - .../docker/machine/commands/config.go | 38 - .../docker/machine/commands/create.go | 465 - .../docker/machine/commands/create_test.go | 119 - .../github.com/docker/machine/commands/env.go | 268 - .../docker/machine/commands/env_test.go | 600 - .../docker/machine/commands/flag_sort.go | 17 - .../docker/machine/commands/inspect.go | 72 - .../docker/machine/commands/inspect_test.go | 31 - .../github.com/docker/machine/commands/ip.go | 7 - .../docker/machine/commands/ip_test.go | 79 - .../docker/machine/commands/kill.go | 7 - .../docker/machine/commands/kill_test.go | 56 - .../github.com/docker/machine/commands/ls.go | 506 - .../docker/machine/commands/ls_test.go | 535 - .../docker/machine/commands/mcndirs/utils.go | 27 - .../machine/commands/mcndirs/utils_test.go | 70 - .../docker/machine/commands/provision.go | 7 - .../docker/machine/commands/provision_test.go | 67 - .../machine/commands/regeneratecerts.go | 23 - .../docker/machine/commands/restart.go | 16 - .../github.com/docker/machine/commands/rm.go | 88 - .../docker/machine/commands/rm_test.go | 233 - .../github.com/docker/machine/commands/scp.go | 170 - .../docker/machine/commands/scp_test.go | 136 - .../github.com/docker/machine/commands/ssh.go | 51 - .../docker/machine/commands/ssh_test.go | 111 - .../docker/machine/commands/start.go | 16 - .../docker/machine/commands/status.go | 31 - .../docker/machine/commands/stop.go | 7 - .../docker/machine/commands/stop_test.go | 103 - .../docker/machine/commands/upgrade.go | 7 - .../github.com/docker/machine/commands/url.go | 32 - .../docker/machine/commands/url_test.go | 57 - .../docker/machine/commands/version.go | 40 - .../docker/machine/commands/version_test.go | 89 - .../machine/contrib/completion/.gitignore | 1 - .../bash/docker-machine-prompt.bash | 47 - .../bash/docker-machine-wrapper.bash | 56 - .../completion/bash/docker-machine.bash | 252 - .../contrib/completion/zsh/_docker-machine | 358 - vendor/github.com/docker/machine/doc.go | 4 - .../machine/docs/AVAILABLE_DRIVER_PLUGINS.md | 46 - .../docker/machine/docs/DRIVER_SPEC.md | 149 - .../github.com/docker/machine/docs/Dockerfile | 9 - .../github.com/docker/machine/docs/Makefile | 38 - .../github.com/docker/machine/docs/README.md | 89 - .../github.com/docker/machine/docs/RELEASE.md | 45 - .../docker/machine/docs/completion.md | 59 - .../docker/machine/docs/concepts.md | 88 - .../docker/machine/docs/drivers/aws.md | 168 - .../docker/machine/docs/drivers/azure.md | 124 - .../machine/docs/drivers/digital-ocean.md | 50 - .../docker/machine/docs/drivers/exoscale.md | 47 - .../docker/machine/docs/drivers/gce.md | 77 - .../docker/machine/docs/drivers/generic.md | 65 - .../docker/machine/docs/drivers/hyper-v.md | 47 - .../docker/machine/docs/drivers/index.md | 28 - .../docker/machine/docs/drivers/openstack.md | 76 - .../docker/machine/docs/drivers/os-base.md | 57 - .../docker/machine/docs/drivers/rackspace.md | 43 - .../docker/machine/docs/drivers/soft-layer.md | 58 - .../docker/machine/docs/drivers/virtualbox.md | 96 - .../docker/machine/docs/drivers/vm-cloud.md | 53 - .../docker/machine/docs/drivers/vm-fusion.md | 36 - .../docker/machine/docs/drivers/vsphere.md | 50 - .../docker/machine/docs/examples/aws.md | 132 - .../docker/machine/docs/examples/index.md | 17 - .../docker/machine/docs/examples/ocean.md | 143 - .../docker/machine/docs/get-started-cloud.md | 87 - .../docker/machine/docs/get-started.md | 251 - .../machine/docs/img/aws-instance-east.png | Bin 356531 -> 0 bytes .../machine/docs/img/aws-instance-west.png | Bin 318623 -> 0 bytes .../docker/machine/docs/img/coverage.png | Bin 198121 -> 0 bytes .../docker/machine/docs/img/docker-engine.png | Bin 18422 -> 0 bytes .../docker/machine/docs/img/engine.png | Bin 18422 -> 0 bytes .../machine/docs/img/linux_docker_host.svg | 1195 - .../docker/machine/docs/img/logo.png | Bin 118293 -> 0 bytes .../machine/docs/img/mac_docker_host.svg | 1243 - .../machine/docs/img/machine-mac-win.png | Bin 14831 -> 0 bytes .../docker/machine/docs/img/machine.png | Bin 56747 -> 0 bytes .../machine/docs/img/nginx-webserver.png | Bin 82641 -> 0 bytes .../machine/docs/img/ocean_click_api.png | Bin 37125 -> 0 bytes .../docker/machine/docs/img/ocean_droplet.png | Bin 26452 -> 0 bytes .../machine/docs/img/ocean_gen_token.png | Bin 42801 -> 0 bytes .../machine/docs/img/ocean_save_token.png | Bin 51513 -> 0 bytes .../machine/docs/img/ocean_token_create.png | Bin 57135 -> 0 bytes .../machine/docs/img/provision-use-case.png | Bin 24477 -> 0 bytes .../github.com/docker/machine/docs/index.md | 23 - .../docker/machine/docs/install-machine.md | 72 - .../docker/machine/docs/migrate-to-machine.md | 48 - .../docker/machine/docs/overview.md | 67 - .../docker/machine/docs/reference/active.md | 23 - .../docker/machine/docs/reference/config.md | 32 - .../docker/machine/docs/reference/create.md | 242 - .../docker/machine/docs/reference/env.md | 109 - .../docker/machine/docs/reference/help.md | 31 - .../docker/machine/docs/reference/index.md | 33 - .../docker/machine/docs/reference/inspect.md | 89 - .../docker/machine/docs/reference/ip.md | 19 - .../docker/machine/docs/reference/kill.md | 29 - .../docker/machine/docs/reference/ls.md | 108 - .../machine/docs/reference/provision.md | 37 - .../docs/reference/regenerate-certs.md | 30 - .../docker/machine/docs/reference/restart.md | 26 - .../docker/machine/docs/reference/rm.md | 67 - .../docker/machine/docs/reference/scp.md | 35 - .../docker/machine/docs/reference/ssh.md | 86 - .../docker/machine/docs/reference/start.md | 24 - .../docker/machine/docs/reference/status.md | 23 - .../docker/machine/docs/reference/stop.md | 29 - .../docker/machine/docs/reference/upgrade.md | 33 - .../docker/machine/docs/reference/url.md | 16 - .../machine/drivers/amazonec2/amazonec2.go | 1074 - .../drivers/amazonec2/amazonec2_test.go | 423 - .../drivers/amazonec2/awscredentials.go | 19 - .../machine/drivers/amazonec2/ec2client.go | 51 - .../machine/drivers/amazonec2/logger.go | 21 - .../machine/drivers/amazonec2/region.go | 46 - .../machine/drivers/amazonec2/stub_test.go | 139 - .../docker/machine/drivers/azure/azure.go | 508 - .../machine/drivers/azure/azureutil/auth.go | 218 - .../drivers/azure/azureutil/authorizer.go | 15 - .../drivers/azure/azureutil/azureutil.go | 741 - .../drivers/azure/azureutil/cleanup.go | 126 - .../drivers/azure/azureutil/clients.go | 137 - .../drivers/azure/azureutil/context.go | 20 - .../drivers/azure/azureutil/inspector.go | 36 - .../machine/drivers/azure/azureutil/naming.go | 21 - .../drivers/azure/azureutil/powerstate.go | 93 - .../drivers/azure/azureutil/tenantid.go | 116 - .../machine/drivers/azure/azureutil/util.go | 45 - .../drivers/azure/logutil/logfields.go | 16 - .../docker/machine/drivers/azure/util.go | 175 - .../drivers/digitalocean/digitalocean.go | 360 - .../drivers/digitalocean/digitalocean_test.go | 84 - .../docker/machine/drivers/errdriver/error.go | 104 - .../machine/drivers/exoscale/exoscale.go | 464 - .../machine/drivers/exoscale/exoscale_test.go | 25 - .../machine/drivers/fakedriver/fakedriver.go | 109 - .../docker/machine/drivers/generic/generic.go | 196 - .../machine/drivers/generic/generic_test.go | 26 - .../machine/drivers/google/compute_util.go | 464 - .../drivers/google/compute_util_test.go | 70 - .../docker/machine/drivers/google/google.go | 375 - .../machine/drivers/google/google_test.go | 24 - .../docker/machine/drivers/hyperv/hyperv.go | 476 - .../machine/drivers/hyperv/hyperv_test.go | 68 - .../machine/drivers/hyperv/powershell.go | 114 - .../docker/machine/drivers/none/driver.go | 113 - .../machine/drivers/openstack/client.go | 575 - .../machine/drivers/openstack/openstack.go | 787 - .../drivers/openstack/openstack_test.go | 29 - .../machine/drivers/rackspace/client.go | 79 - .../machine/drivers/rackspace/rackspace.go | 154 - .../drivers/rackspace/rackspace_test.go | 27 - .../machine/drivers/softlayer/driver.go | 498 - .../machine/drivers/softlayer/driver_test.go | 93 - .../machine/drivers/softlayer/softlayer.go | 364 - .../docker/machine/drivers/virtualbox/disk.go | 141 - .../machine/drivers/virtualbox/disk_test.go | 55 - .../docker/machine/drivers/virtualbox/ip.go | 36 - .../docker/machine/drivers/virtualbox/misc.go | 106 - .../machine/drivers/virtualbox/network.go | 400 - .../drivers/virtualbox/network_test.go | 406 - .../docker/machine/drivers/virtualbox/vbm.go | 165 - .../machine/drivers/virtualbox/vbm_test.go | 142 - .../machine/drivers/virtualbox/virtualbox.go | 972 - .../drivers/virtualbox/virtualbox_darwin.go | 35 - .../virtualbox/virtualbox_darwin_test.go | 25 - .../drivers/virtualbox/virtualbox_linux.go | 45 - .../virtualbox/virtualbox_linux_test.go | 115 - .../drivers/virtualbox/virtualbox_test.go | 659 - .../drivers/virtualbox/virtualbox_windows.go | 119 - .../docker/machine/drivers/virtualbox/vm.go | 41 - .../machine/drivers/virtualbox/vm_test.go | 44 - .../docker/machine/drivers/virtualbox/vtx.go | 28 - .../machine/drivers/virtualbox/vtx_test.go | 72 - .../machine/drivers/vmwarefusion/fusion.go | 9 - .../drivers/vmwarefusion/fusion_darwin.go | 774 - .../vmwarefusion/fusion_darwin_test.go | 22 - .../drivers/vmwarefusion/vmrun_darwin.go | 78 - .../drivers/vmwarefusion/vmx_darwin.go | 72 - .../drivers/vmwarevcloudair/vcloudair.go | 624 - .../vmwarevcloudair/vcloudlair_test.go | 27 - .../machine/drivers/vmwarevsphere/vsphere.go | 888 - .../drivers/vmwarevsphere/vsphere_test.go | 22 - .../docker/machine/experimental/README.md | 22 - .../machine/experimental/b2d_migration.md | 62 - .../experimental/b2d_migration_tasks.md | 49 - .../docker/machine/its/cli/create_rm_test.go | 79 - .../machine/its/cli/driver_help_test.go | 26 - .../docker/machine/its/cli/help_test.go | 96 - .../docker/machine/its/cli/inspect_test.go | 16 - .../docker/machine/its/cli/ls_test.go | 189 - .../docker/machine/its/cli/status_test.go | 16 - .../docker/machine/its/cli/url_test.go | 16 - .../github.com/docker/machine/its/tester.go | 363 - .../machine/its/thirdparty/commands_test.go | 34 - .../docker/machine/libmachine/auth/auth.go | 18 - .../machine/libmachine/cert/bootstrap.go | 87 - .../docker/machine/libmachine/cert/cert.go | 269 - .../machine/libmachine/cert/cert_test.go | 81 - .../docker/machine/libmachine/check/check.go | 118 - .../machine/libmachine/check/check_test.go | 60 - .../libmachine/crashreport/crash_report.go | 149 - .../crashreport/crash_report_logger.go | 9 - .../crashreport/crash_report_test.go | 39 - .../libmachine/crashreport/os_darwin.go | 12 - .../libmachine/crashreport/os_linux.go | 12 - .../libmachine/crashreport/os_windows.go | 47 - .../libmachine/crashreport/os_windows_test.go | 47 - .../docker/machine/libmachine/drivers/base.go | 91 - .../machine/libmachine/drivers/base_test.go | 50 - .../machine/libmachine/drivers/check.go | 84 - .../machine/libmachine/drivers/drivers.go | 109 - .../libmachine/drivers/notsupported.go | 89 - .../drivers/plugin/localbinary/plugin.go | 245 - .../drivers/plugin/localbinary/plugin_test.go | 159 - .../drivers/plugin/register_driver.go | 63 - .../libmachine/drivers/rpc/client_driver.go | 366 - .../libmachine/drivers/rpc/server_driver.go | 227 - .../drivers/rpc/server_driver_test.go | 75 - .../machine/libmachine/drivers/serial.go | 172 - .../machine/libmachine/drivers/serial_test.go | 296 - .../machine/libmachine/drivers/utils.go | 74 - .../machine/libmachine/engine/engine.go | 21 - .../machine/libmachine/examples/main.go | 145 - .../docker/machine/libmachine/host/host.go | 223 - .../machine/libmachine/host/host_test.go | 57 - .../docker/machine/libmachine/host/host_v0.go | 35 - .../docker/machine/libmachine/host/host_v2.go | 11 - .../docker/machine/libmachine/host/migrate.go | 120 - .../machine/libmachine/host/migrate_test.go | 180 - .../machine/libmachine/host/migrate_v0_v1.go | 73 - .../libmachine/host/migrate_v0_v1_test.go | 89 - .../libmachine/host/migrate_v0_v3_test.go | 23 - .../machine/libmachine/host/migrate_v1_v2.go | 78 - .../libmachine/host/migrate_v1_v2_test.go | 108 - .../machine/libmachine/host/migrate_v2_v3.go | 49 - .../libmachine/hosttest/default_test_host.go | 78 - .../docker/machine/libmachine/libmachine.go | 188 - .../libmachine/libmachinetest/fake_api.go | 88 - .../libmachine/log/fmt_machine_logger_test.go | 97 - .../libmachine/log/history_recorder_test.go | 21 - .../docker/machine/libmachine/log/log_test.go | 91 - .../mcndockerclient/docker_client.go | 47 - .../libmachine/mcndockerclient/docker_host.go | 41 - .../mcndockerclient/docker_versioner.go | 29 - .../mcndockerclient/fake_docker_versioner.go | 14 - .../machine/libmachine/mcnerror/errors.go | 46 - .../docker/machine/libmachine/mcnflag/flag.go | 71 - .../docker/machine/libmachine/mcnutils/b2d.go | 543 - .../machine/libmachine/mcnutils/b2d_test.go | 339 - .../machine/libmachine/mcnutils/utils.go | 133 - .../machine/libmachine/mcnutils/utils_test.go | 101 - .../machine/libmachine/persist/filestore.go | 163 - .../libmachine/persist/filestore_test.go | 249 - .../persist/persisttest/fake_store.go | 50 - .../machine/libmachine/persist/store.go | 47 - .../machine/libmachine/provider/provider.go | 13 - .../machine/libmachine/provision/arch.go | 155 - .../machine/libmachine/provision/arch_test.go | 20 - .../libmachine/provision/boot2docker.go | 271 - .../machine/libmachine/provision/centos.go | 25 - .../libmachine/provision/centos_test.go | 28 - .../libmachine/provision/configure_swarm.go | 149 - .../machine/libmachine/provision/coreos.go | 135 - .../machine/libmachine/provision/debian.go | 143 - .../libmachine/provision/debian_test.go | 20 - .../provision/engine_config_context.go | 13 - .../machine/libmachine/provision/errors.go | 24 - .../libmachine/provision/fake_provisioner.go | 110 - .../machine/libmachine/provision/fedora.go | 25 - .../libmachine/provision/fedora_test.go | 28 - .../machine/libmachine/provision/generic.go | 138 - .../libmachine/provision/oraclelinux.go | 25 - .../libmachine/provision/oraclelinux_test.go | 29 - .../libmachine/provision/os_release.go | 91 - .../libmachine/provision/os_release_test.go | 211 - .../provision/pkgaction/pkg_action.go | 23 - .../provision/pkgaction/pkg_action_test.go | 9 - .../libmachine/provision/provisioner.go | 128 - .../provision/provisiontest/sshcommander.go | 39 - .../provisiontest/sshcommander_test.go | 28 - .../machine/libmachine/provision/rancheros.go | 233 - .../machine/libmachine/provision/redhat.go | 298 - .../provision/redhat_ssh_commander.go | 46 - .../libmachine/provision/redhat_test.go | 43 - .../provision/serviceaction/service_action.go | 29 - .../serviceaction/service_action_test.go | 9 - .../machine/libmachine/provision/suse.go | 240 - .../machine/libmachine/provision/systemd.go | 96 - .../libmachine/provision/ubuntu_systemd.go | 153 - .../provision/ubuntu_systemd_test.go | 44 - .../libmachine/provision/ubuntu_upstart.go | 165 - .../provision/ubuntu_upstart_test.go | 44 - .../machine/libmachine/provision/utils.go | 274 - .../libmachine/provision/utils_test.go | 210 - .../docker/machine/libmachine/shell/shell.go | 30 - .../machine/libmachine/shell/shell_test.go | 31 - .../libmachine/shell/shell_unix_test.go | 20 - .../machine/libmachine/shell/shell_windows.go | 84 - .../libmachine/shell/shell_windows_test.go | 41 - .../docker/machine/libmachine/ssh/client.go | 414 - .../machine/libmachine/ssh/client_test.go | 106 - .../docker/machine/libmachine/ssh/keys.go | 124 - .../machine/libmachine/ssh/keys_test.go | 21 - .../docker/machine/libmachine/ssh/ssh_test.go | 28 - .../libmachine/ssh/sshtest/fake_client.go | 31 - .../docker/machine/libmachine/state/state.go | 36 - .../machine/libmachine/state/state_test.go | 17 - .../docker/machine/libmachine/swarm/swarm.go | 22 - .../machine/libmachine/version/version.go | 11 - vendor/github.com/docker/machine/mk/build.mk | 34 - .../github.com/docker/machine/mk/coverage.mk | 45 - vendor/github.com/docker/machine/mk/dev.mk | 9 - vendor/github.com/docker/machine/mk/main.mk | 58 - vendor/github.com/docker/machine/mk/test.mk | 11 - .../github.com/docker/machine/mk/validate.mk | 20 - .../docker/machine/script/.validate | 33 - .../machine/script/build_in_container.sh | 33 - .../docker/machine/script/release.sh | 244 - .../script/release/github-release-template.md | 43 - .../docker/machine/script/validate-dco | 56 - .../machine/test/integration/.gitignore | 1 - .../test/integration/amazonec2/amazon.bats | 16 - .../amazonec2/create-ebsinstance.bats | 27 - .../amazonec2/createwithkeypair.bats | 32 - .../integration/core/certs-extra-san.bats | 22 - .../test/integration/core/core-commands.bats | 156 - .../test/integration/core/crashreport.bats | 15 - .../test/integration/core/engine-options.bats | 42 - .../test/integration/core/env_shell.bats | 120 - .../test/integration/core/inspect_format.bats | 27 - .../integration/core/regenerate-certs.bats | 15 - .../machine/test/integration/core/scp.bats | 32 - .../test/integration/core/ssh-backends.bats | 40 - .../test/integration/core/swarm-options.bats | 55 - .../machine/test/integration/helpers.bash | 50 - .../machine/test/integration/run-bats.sh | 120 - .../virtualbox/certs-checksum.bats | 24 - .../virtualbox/create-with-upgrading.bats | 29 - .../virtualbox/custom-mem-disk.bats | 58 - .../test/integration/virtualbox/dns.bats | 17 - .../test/integration/virtualbox/guards.bats | 17 - .../virtualbox/pause-save-start.bats | 52 - .../test/integration/virtualbox/upgrade.bats | 30 - .../machine/test/provision/rancheros.bats | 19 - .../docker/machine/test/provision/redhat.bats | 20 - .../github.com/Azure/azure-sdk-for-go/LICENSE | 202 - .../arm/compute/availabilitysets.go | 411 - .../azure-sdk-for-go/arm/compute/client.go | 56 - .../azure-sdk-for-go/arm/compute/models.go | 1208 - .../arm/compute/usageoperations.go | 129 - .../azure-sdk-for-go/arm/compute/version.go | 43 - .../compute/virtualmachineextensionimages.go | 242 - .../arm/compute/virtualmachineextensions.go | 256 - .../arm/compute/virtualmachineimages.go | 368 - .../arm/compute/virtualmachines.go | 916 - .../arm/compute/virtualmachinescalesets.go | 1008 - .../arm/compute/virtualmachinescalesetvms.go | 626 - .../arm/compute/virtualmachinesizes.go | 129 - .../arm/network/applicationgateways.go | 559 - .../azure-sdk-for-go/arm/network/client.go | 130 - .../expressroutecircuitauthorizations.go | 347 - .../network/expressroutecircuitpeerings.go | 343 - .../arm/network/expressroutecircuits.go | 690 - .../network/expressrouteserviceproviders.go | 131 - .../arm/network/interfaces.go | 679 - .../arm/network/loadbalancers.go | 424 - .../arm/network/localnetworkgateways.go | 340 - .../azure-sdk-for-go/arm/network/models.go | 1855 - .../arm/network/publicipaddresses.go | 424 - .../azure-sdk-for-go/arm/network/routes.go | 340 - .../arm/network/routetables.go | 421 - .../arm/network/securitygroups.go | 427 - .../arm/network/securityrules.go | 347 - .../azure-sdk-for-go/arm/network/subnets.go | 345 - .../azure-sdk-for-go/arm/network/usages.go | 131 - .../azure-sdk-for-go/arm/network/version.go | 43 - .../virtualnetworkgatewayconnections.go | 560 - .../arm/network/virtualnetworkgateways.go | 481 - .../arm/network/virtualnetworks.go | 425 - .../arm/resources/resources/client.go | 495 - .../resources/deploymentoperations.go | 202 - .../arm/resources/resources/deployments.go | 532 - .../arm/resources/resources/groups.go | 553 - .../arm/resources/resources/models.go | 460 - .../resources/resources/policyassignments.go | 786 - .../resources/resources/policydefinitions.go | 231 - .../resources/provideroperationdetails.go | 130 - .../arm/resources/resources/providers.go | 317 - .../arm/resources/resources/resources.go | 478 - .../arm/resources/resources/tags.go | 372 - .../arm/resources/resources/version.go | 43 - .../arm/resources/subscriptions/client.go | 282 - .../arm/resources/subscriptions/models.go | 107 - .../resources/subscriptions/subscriptions.go | 266 - .../arm/resources/subscriptions/tenants.go | 119 - .../arm/resources/subscriptions/version.go | 43 - .../azure-sdk-for-go/arm/storage/accounts.go | 653 - .../azure-sdk-for-go/arm/storage/client.go | 56 - .../azure-sdk-for-go/arm/storage/models.go | 217 - .../arm/storage/usageoperations.go | 103 - .../azure-sdk-for-go/arm/storage/version.go | 43 - .../Azure/azure-sdk-for-go/storage/blob.go | 1021 - .../Azure/azure-sdk-for-go/storage/client.go | 400 - .../Azure/azure-sdk-for-go/storage/file.go | 91 - .../Azure/azure-sdk-for-go/storage/queue.go | 306 - .../Azure/azure-sdk-for-go/storage/util.go | 71 - .../github.com/Azure/go-autorest/LICENSE | 191 - .../Azure/go-autorest/autorest/autorest.go | 114 - .../Azure/go-autorest/autorest/azure/async.go | 302 - .../Azure/go-autorest/autorest/azure/azure.go | 165 - .../go-autorest/autorest/azure/config.go | 13 - .../go-autorest/autorest/azure/devicetoken.go | 193 - .../autorest/azure/environments.go | 111 - .../go-autorest/autorest/azure/persist.go | 58 - .../Azure/go-autorest/autorest/azure/token.go | 363 - .../Azure/go-autorest/autorest/client.go | 190 - .../Azure/go-autorest/autorest/date/date.go | 82 - .../Azure/go-autorest/autorest/date/time.go | 70 - .../go-autorest/autorest/date/timerfc1123.go | 86 - .../go-autorest/autorest/date/utility.go | 11 - .../Azure/go-autorest/autorest/error.go | 77 - .../Azure/go-autorest/autorest/preparer.go | 360 - .../Azure/go-autorest/autorest/responder.go | 208 - .../Azure/go-autorest/autorest/sender.go | 234 - .../Azure/go-autorest/autorest/to/convert.go | 133 - .../Azure/go-autorest/autorest/utility.go | 103 - .../Azure/go-autorest/autorest/version.go | 18 - .../github.com/aws/aws-sdk-go/LICENSE.txt | 202 - .../github.com/aws/aws-sdk-go/NOTICE.txt | 3 - .../aws/aws-sdk-go/aws/awserr/error.go | 105 - .../aws/aws-sdk-go/aws/awserr/types.go | 135 - .../aws/aws-sdk-go/aws/awsutil/copy.go | 100 - .../aws/aws-sdk-go/aws/awsutil/equal.go | 27 - .../aws/aws-sdk-go/aws/awsutil/path_value.go | 222 - .../aws/aws-sdk-go/aws/awsutil/prettify.go | 103 - .../aws-sdk-go/aws/awsutil/string_value.go | 89 - .../aws/aws-sdk-go/aws/client/client.go | 120 - .../aws-sdk-go/aws/client/default_retryer.go | 45 - .../aws/client/metadata/client_info.go | 12 - .../github.com/aws/aws-sdk-go/aws/config.go | 270 - .../aws/aws-sdk-go/aws/convert_types.go | 357 - .../aws-sdk-go/aws/corehandlers/handlers.go | 139 - .../aws/corehandlers/param_validator.go | 144 - .../aws/credentials/chain_provider.go | 87 - .../aws-sdk-go/aws/credentials/credentials.go | 220 - .../ec2rolecreds/ec2_role_provider.go | 174 - .../aws/credentials/env_provider.go | 73 - .../aws-sdk-go/aws/credentials/example.ini | 12 - .../shared_credentials_provider.go | 147 - .../aws/credentials/static_provider.go | 44 - .../aws/aws-sdk-go/aws/defaults/defaults.go | 95 - .../aws/aws-sdk-go/aws/ec2metadata/api.go | 43 - .../aws/aws-sdk-go/aws/ec2metadata/service.go | 116 - .../github.com/aws/aws-sdk-go/aws/errors.go | 17 - .../github.com/aws/aws-sdk-go/aws/logger.go | 98 - .../aws/aws-sdk-go/aws/request/handlers.go | 140 - .../aws/aws-sdk-go/aws/request/request.go | 279 - .../aws/request/request_pagination.go | 104 - .../aws/aws-sdk-go/aws/request/retryer.go | 82 - .../aws/aws-sdk-go/aws/session/session.go | 111 - .../github.com/aws/aws-sdk-go/aws/types.go | 88 - .../github.com/aws/aws-sdk-go/aws/version.go | 8 - .../aws-sdk-go/private/endpoints/endpoints.go | 65 - .../private/endpoints/endpoints.json | 89 - .../private/endpoints/endpoints_map.go | 101 - .../private/protocol/ec2query/build.go | 32 - .../private/protocol/ec2query/unmarshal.go | 54 - .../protocol/query/queryutil/queryutil.go | 223 - .../aws-sdk-go/private/protocol/rest/build.go | 254 - .../private/protocol/rest/payload.go | 45 - .../private/protocol/rest/unmarshal.go | 183 - .../private/protocol/xml/xmlutil/build.go | 287 - .../private/protocol/xml/xmlutil/unmarshal.go | 260 - .../protocol/xml/xmlutil/xml_to_struct.go | 105 - .../aws/aws-sdk-go/private/signer/v4/v4.go | 365 - .../aws/aws-sdk-go/private/waiter/waiter.go | 136 - .../aws/aws-sdk-go/service/ec2/api.go | 25609 -------- .../aws-sdk-go/service/ec2/customizations.go | 55 - .../aws/aws-sdk-go/service/ec2/service.go | 89 - .../aws/aws-sdk-go/service/ec2/waiters.go | 761 - .../github.com/bugsnag/bugsnag-go/.travis.yml | 11 - .../bugsnag/bugsnag-go/CHANGELOG.md | 22 - .../bugsnag/bugsnag-go/CONTRIBUTING.md | 78 - .../github.com/bugsnag/bugsnag-go/LICENSE.txt | 20 - .../github.com/bugsnag/bugsnag-go/Makefile | 30 - .../github.com/bugsnag/bugsnag-go/README.md | 553 - .../bugsnag/bugsnag-go/appengine.go | 81 - .../github.com/bugsnag/bugsnag-go/bugsnag.go | 131 - .../bugsnag/bugsnag-go/configuration.go | 169 - .../github.com/bugsnag/bugsnag-go/doc.go | 69 - .../bugsnag/bugsnag-go/errors/README.md | 6 - .../bugsnag/bugsnag-go/errors/error.go | 90 - .../bugsnag/bugsnag-go/errors/parse_panic.go | 127 - .../bugsnag/bugsnag-go/errors/stackframe.go | 97 - .../github.com/bugsnag/bugsnag-go/event.go | 143 - .../bugsnag/bugsnag-go/json_tags.go | 43 - .../github.com/bugsnag/bugsnag-go/metadata.go | 189 - .../bugsnag/bugsnag-go/middleware.go | 96 - .../github.com/bugsnag/bugsnag-go/notifier.go | 102 - .../bugsnag/bugsnag-go/panicwrap.go | 27 - .../github.com/bugsnag/bugsnag-go/payload.go | 96 - .../vendor/github.com/bugsnag/osext/LICENSE | 20 - .../vendor/github.com/bugsnag/osext/osext.go | 32 - .../github.com/bugsnag/osext/osext_plan9.go | 16 - .../github.com/bugsnag/osext/osext_procfs.go | 25 - .../github.com/bugsnag/osext/osext_sysctl.go | 64 - .../github.com/bugsnag/osext/osext_windows.go | 34 - .../github.com/bugsnag/panicwrap/LICENSE | 21 - .../github.com/bugsnag/panicwrap/README.md | 101 - .../github.com/bugsnag/panicwrap/monitor.go | 63 - .../bugsnag/panicwrap/monitor_windows.go | 7 - .../github.com/bugsnag/panicwrap/panicwrap.go | 339 - .../github.com/cenkalti/backoff/.gitignore | 22 - .../github.com/cenkalti/backoff/.travis.yml | 2 - .../github.com/cenkalti/backoff/LICENSE | 20 - .../github.com/cenkalti/backoff/README.md | 69 - .../github.com/cenkalti/backoff/backoff.go | 56 - .../cenkalti/backoff/exponential.go | 141 - .../github.com/cenkalti/backoff/retry.go | 47 - .../github.com/cenkalti/backoff/ticker.go | 105 - .../github.com/codegangsta/cli/.travis.yml | 19 - .../vendor/github.com/codegangsta/cli/LICENSE | 21 - .../github.com/codegangsta/cli/README.md | 341 - .../vendor/github.com/codegangsta/cli/app.go | 333 - .../vendor/github.com/codegangsta/cli/cli.go | 40 - .../github.com/codegangsta/cli/command.go | 216 - .../github.com/codegangsta/cli/context.go | 388 - .../vendor/github.com/codegangsta/cli/flag.go | 527 - .../vendor/github.com/codegangsta/cli/help.go | 246 - .../vendor/github.com/davecgh/go-spew/LICENSE | 13 - .../github.com/davecgh/go-spew/spew/bypass.go | 151 - .../davecgh/go-spew/spew/bypasssafe.go | 37 - .../github.com/davecgh/go-spew/spew/common.go | 341 - .../github.com/davecgh/go-spew/spew/config.go | 297 - .../github.com/davecgh/go-spew/spew/doc.go | 202 - .../github.com/davecgh/go-spew/spew/dump.go | 509 - .../github.com/davecgh/go-spew/spew/format.go | 419 - .../github.com/davecgh/go-spew/spew/spew.go | 148 - .../github.com/dgrijalva/jwt-go/.gitignore | 4 - .../github.com/dgrijalva/jwt-go/.travis.yml | 7 - .../github.com/dgrijalva/jwt-go/LICENSE | 8 - .../github.com/dgrijalva/jwt-go/README.md | 98 - .../dgrijalva/jwt-go/VERSION_HISTORY.md | 67 - .../vendor/github.com/dgrijalva/jwt-go/doc.go | 4 - .../github.com/dgrijalva/jwt-go/ecdsa.go | 147 - .../dgrijalva/jwt-go/ecdsa_utils.go | 67 - .../github.com/dgrijalva/jwt-go/errors.go | 43 - .../github.com/dgrijalva/jwt-go/hmac.go | 94 - .../github.com/dgrijalva/jwt-go/parser.go | 113 - .../vendor/github.com/dgrijalva/jwt-go/rsa.go | 114 - .../github.com/dgrijalva/jwt-go/rsa_pss.go | 126 - .../github.com/dgrijalva/jwt-go/rsa_utils.go | 68 - .../dgrijalva/jwt-go/signing_method.go | 24 - .../github.com/dgrijalva/jwt-go/token.go | 126 - .../github.com/digitalocean/godo/.travis.yml | 6 - .../digitalocean/godo/CONTRIBUTING.md | 23 - .../github.com/digitalocean/godo/LICENSE.txt | 55 - .../github.com/digitalocean/godo/README.md | 136 - .../github.com/digitalocean/godo/account.go | 52 - .../github.com/digitalocean/godo/action.go | 100 - .../github.com/digitalocean/godo/doc.go | 2 - .../github.com/digitalocean/godo/domains.go | 323 - .../digitalocean/godo/droplet_actions.go | 238 - .../github.com/digitalocean/godo/droplets.go | 403 - .../github.com/digitalocean/godo/errors.go | 24 - .../digitalocean/godo/floating_ips.go | 131 - .../digitalocean/godo/floating_ips_actions.go | 97 - .../github.com/digitalocean/godo/godo.go | 341 - .../digitalocean/godo/image_actions.go | 71 - .../github.com/digitalocean/godo/images.go | 194 - .../github.com/digitalocean/godo/keys.go | 222 - .../github.com/digitalocean/godo/links.go | 86 - .../github.com/digitalocean/godo/regions.go | 63 - .../github.com/digitalocean/godo/sizes.go | 63 - .../github.com/digitalocean/godo/strings.go | 83 - .../github.com/digitalocean/godo/timestamp.go | 35 - .../vendor/github.com/docker/docker/LICENSE | 191 - .../vendor/github.com/docker/docker/NOTICE | 19 - .../docker/docker/contrib/syntax/vim/LICENSE | 22 - .../docker/docker/pkg/mflag/LICENSE | 27 - .../docker/docker/pkg/symlink/LICENSE.APACHE | 191 - .../docker/docker/pkg/symlink/LICENSE.BSD | 27 - .../docker/docker/pkg/term/MAINTAINERS | 1 - .../docker/docker/pkg/term/console_windows.go | 87 - .../docker/docker/pkg/term/tc_linux_cgo.go | 47 - .../docker/docker/pkg/term/tc_other.go | 19 - .../github.com/docker/docker/pkg/term/term.go | 103 - .../docker/docker/pkg/term/term_windows.go | 89 - .../docker/docker/pkg/term/termios_darwin.go | 65 - .../docker/docker/pkg/term/termios_freebsd.go | 65 - .../docker/docker/pkg/term/termios_linux.go | 46 - .../docker/go-units/CONTRIBUTING.md | 67 - .../github.com/docker/go-units/LICENSE.code | 191 - .../github.com/docker/go-units/LICENSE.docs | 425 - .../github.com/docker/go-units/MAINTAINERS | 27 - .../github.com/docker/go-units/README.md | 18 - .../github.com/docker/go-units/circle.yml | 11 - .../github.com/docker/go-units/duration.go | 33 - .../vendor/github.com/docker/go-units/size.go | 95 - .../github.com/docker/go-units/ulimit.go | 118 - .../vendor/github.com/go-ini/ini/.gitignore | 4 - .../vendor/github.com/go-ini/ini/LICENSE | 191 - .../vendor/github.com/go-ini/ini/README.md | 578 - .../vendor/github.com/go-ini/ini/README_ZH.md | 565 - .../vendor/github.com/go-ini/ini/ini.go | 1250 - .../vendor/github.com/go-ini/ini/struct.go | 350 - .../vendor/github.com/golang/protobuf/LICENSE | 31 - .../github.com/golang/protobuf/proto/Makefile | 43 - .../github.com/golang/protobuf/proto/clone.go | 223 - .../golang/protobuf/proto/decode.go | 867 - .../golang/protobuf/proto/encode.go | 1325 - .../github.com/golang/protobuf/proto/equal.go | 276 - .../golang/protobuf/proto/extensions.go | 399 - .../github.com/golang/protobuf/proto/lib.go | 894 - .../golang/protobuf/proto/message_set.go | 280 - .../golang/protobuf/proto/pointer_reflect.go | 479 - .../golang/protobuf/proto/pointer_unsafe.go | 266 - .../golang/protobuf/proto/properties.go | 846 - .../github.com/golang/protobuf/proto/text.go | 762 - .../golang/protobuf/proto/text_parser.go | 806 - .../github.com/google/go-querystring/LICENSE | 27 - .../google/go-querystring/query/encode.go | 274 - .../jmespath/go-jmespath/.gitignore | 4 - .../jmespath/go-jmespath/.travis.yml | 9 - .../github.com/jmespath/go-jmespath/LICENSE | 13 - .../github.com/jmespath/go-jmespath/Makefile | 44 - .../github.com/jmespath/go-jmespath/README.md | 7 - .../github.com/jmespath/go-jmespath/api.go | 12 - .../go-jmespath/astnodetype_string.go | 16 - .../jmespath/go-jmespath/functions.go | 840 - .../jmespath/go-jmespath/interpreter.go | 418 - .../github.com/jmespath/go-jmespath/lexer.go | 420 - .../github.com/jmespath/go-jmespath/parser.go | 603 - .../jmespath/go-jmespath/toktype_string.go | 16 - .../github.com/jmespath/go-jmespath/util.go | 185 - .../github.com/mitchellh/mapstructure/LICENSE | 21 - .../mitchellh/mapstructure/README.md | 46 - .../mitchellh/mapstructure/decode_hooks.go | 84 - .../mitchellh/mapstructure/error.go | 32 - .../mitchellh/mapstructure/mapstructure.go | 704 - .../github.com/pmezard/go-difflib/LICENSE | 27 - .../pmezard/go-difflib/difflib/difflib.go | 772 - .../vendor/github.com/pyr/egoscale/LICENSE | 201 - .../pyr/egoscale/src/egoscale/async.go | 36 - .../pyr/egoscale/src/egoscale/error.go | 9 - .../pyr/egoscale/src/egoscale/groups.go | 105 - .../pyr/egoscale/src/egoscale/init.go | 21 - .../pyr/egoscale/src/egoscale/keypair.go | 41 - .../pyr/egoscale/src/egoscale/request.go | 65 - .../pyr/egoscale/src/egoscale/topology.go | 170 - .../pyr/egoscale/src/egoscale/types.go | 407 - .../pyr/egoscale/src/egoscale/vm.go | 162 - .../rackspace/gophercloud/.travis.yml | 17 - .../rackspace/gophercloud/CONTRIBUTING.md | 275 - .../rackspace/gophercloud/CONTRIBUTORS.md | 13 - .../github.com/rackspace/gophercloud/LICENSE | 191 - .../rackspace/gophercloud/README.md | 160 - .../rackspace/gophercloud/UPGRADING.md | 338 - .../rackspace/gophercloud/auth_options.go | 46 - .../rackspace/gophercloud/auth_results.go | 14 - .../github.com/rackspace/gophercloud/doc.go | 67 - .../rackspace/gophercloud/endpoint_search.go | 92 - .../gophercloud/openstack/auth_env.go | 58 - .../rackspace/gophercloud/openstack/client.go | 263 - .../compute/v2/extensions/floatingip/doc.go | 3 - .../v2/extensions/floatingip/fixtures.go | 174 - .../v2/extensions/floatingip/requests.go | 92 - .../v2/extensions/floatingip/results.go | 99 - .../compute/v2/extensions/floatingip/urls.go | 37 - .../compute/v2/extensions/keypairs/doc.go | 3 - .../v2/extensions/keypairs/fixtures.go | 171 - .../v2/extensions/keypairs/requests.go | 102 - .../compute/v2/extensions/keypairs/results.go | 94 - .../compute/v2/extensions/keypairs/urls.go | 25 - .../compute/v2/extensions/startstop/doc.go | 5 - .../v2/extensions/startstop/fixtures.go | 27 - .../v2/extensions/startstop/requests.go | 23 - .../openstack/compute/v2/flavors/doc.go | 7 - .../openstack/compute/v2/flavors/requests.go | 68 - .../openstack/compute/v2/flavors/results.go | 122 - .../openstack/compute/v2/flavors/urls.go | 13 - .../openstack/compute/v2/images/doc.go | 7 - .../openstack/compute/v2/images/requests.go | 65 - .../openstack/compute/v2/images/results.go | 90 - .../openstack/compute/v2/images/urls.go | 11 - .../openstack/compute/v2/servers/doc.go | 6 - .../openstack/compute/v2/servers/fixtures.go | 653 - .../openstack/compute/v2/servers/requests.go | 703 - .../openstack/compute/v2/servers/results.go | 347 - .../openstack/compute/v2/servers/urls.go | 47 - .../openstack/compute/v2/servers/util.go | 20 - .../openstack/endpoint_location.go | 91 - .../openstack/identity/v2/tenants/doc.go | 7 - .../openstack/identity/v2/tenants/fixtures.go | 65 - .../openstack/identity/v2/tenants/requests.go | 33 - .../openstack/identity/v2/tenants/results.go | 62 - .../openstack/identity/v2/tenants/urls.go | 7 - .../openstack/identity/v2/tokens/doc.go | 5 - .../openstack/identity/v2/tokens/errors.go | 30 - .../openstack/identity/v2/tokens/fixtures.go | 128 - .../openstack/identity/v2/tokens/requests.go | 82 - .../openstack/identity/v2/tokens/results.go | 133 - .../openstack/identity/v2/tokens/urls.go | 8 - .../openstack/identity/v3/tokens/doc.go | 6 - .../openstack/identity/v3/tokens/errors.go | 72 - .../openstack/identity/v3/tokens/requests.go | 281 - .../openstack/identity/v3/tokens/results.go | 139 - .../openstack/identity/v3/tokens/urls.go | 7 - .../extensions/layer3/floatingips/requests.go | 167 - .../extensions/layer3/floatingips/results.go | 127 - .../v2/extensions/layer3/floatingips/urls.go | 13 - .../openstack/networking/v2/networks/doc.go | 9 - .../networking/v2/networks/errors.go | 1 - .../networking/v2/networks/requests.go | 191 - .../networking/v2/networks/results.go | 116 - .../openstack/networking/v2/networks/urls.go | 31 - .../openstack/networking/v2/ports/doc.go | 8 - .../openstack/networking/v2/ports/errors.go | 11 - .../openstack/networking/v2/ports/requests.go | 225 - .../openstack/networking/v2/ports/results.go | 126 - .../openstack/networking/v2/ports/urls.go | 31 - .../openstack/utils/choose_version.go | 114 - .../rackspace/gophercloud/pagination/http.go | 54 - .../gophercloud/pagination/linked.go | 67 - .../gophercloud/pagination/marker.go | 40 - .../rackspace/gophercloud/pagination/null.go | 20 - .../rackspace/gophercloud/pagination/pager.go | 224 - .../rackspace/gophercloud/pagination/pkg.go | 4 - .../gophercloud/pagination/single.go | 15 - .../rackspace/gophercloud/params.go | 271 - .../rackspace/gophercloud/provider_client.go | 300 - .../gophercloud/rackspace/auth_env.go | 57 - .../rackspace/gophercloud/rackspace/client.go | 214 - .../rackspace/identity/v2/tokens/delegate.go | 60 - .../rackspace/identity/v2/tokens/doc.go | 3 - .../rackspace/gophercloud/results.go | 150 - .../rackspace/gophercloud/service_client.go | 32 - .../gophercloud/testhelper/client/fake.go | 17 - .../gophercloud/testhelper/convenience.go | 329 - .../rackspace/gophercloud/testhelper/doc.go | 4 - .../gophercloud/testhelper/http_responses.go | 91 - .../github.com/rackspace/gophercloud/util.go | 44 - .../samalba/dockerclient/.gitignore | 22 - .../github.com/samalba/dockerclient/LICENSE | 202 - .../github.com/samalba/dockerclient/README.md | 98 - .../github.com/samalba/dockerclient/auth.go | 39 - .../samalba/dockerclient/dockerclient.go | 937 - .../samalba/dockerclient/example_responses.go | 13 - .../samalba/dockerclient/interface.go | 59 - .../github.com/samalba/dockerclient/types.go | 554 - .../github.com/samalba/dockerclient/utils.go | 33 - .../skarademir/naturalsort/LICENSE.md | 21 - .../skarademir/naturalsort/README.md | 22 - .../skarademir/naturalsort/naturalsort.go | 60 - .../github.com/stretchr/objx/.gitignore | 22 - .../github.com/stretchr/objx/LICENSE.md | 23 - .../vendor/github.com/stretchr/objx/README.md | 3 - .../github.com/stretchr/objx/accessors.go | 179 - .../github.com/stretchr/objx/constants.go | 13 - .../github.com/stretchr/objx/conversions.go | 117 - .../vendor/github.com/stretchr/objx/doc.go | 72 - .../vendor/github.com/stretchr/objx/map.go | 222 - .../github.com/stretchr/objx/mutations.go | 81 - .../github.com/stretchr/objx/security.go | 14 - .../vendor/github.com/stretchr/objx/tests.go | 17 - .../stretchr/objx/type_specific_codegen.go | 2881 - .../vendor/github.com/stretchr/objx/value.go | 56 - .../github.com/stretchr/testify/LICENCE.txt | 22 - .../github.com/stretchr/testify/LICENSE | 22 - .../testify/assert/assertion_forward.go | 387 - .../testify/assert/assertion_forward.go.tmpl | 4 - .../stretchr/testify/assert/assertions.go | 1004 - .../github.com/stretchr/testify/assert/doc.go | 45 - .../stretchr/testify/assert/errors.go | 10 - .../testify/assert/forward_assertions.go | 16 - .../testify/assert/http_assertions.go | 106 - .../github.com/stretchr/testify/mock/doc.go | 44 - .../github.com/stretchr/testify/mock/mock.go | 683 - .../github.com/tent/http-link-go/.gitignore | 1 - .../github.com/tent/http-link-go/.travis.yml | 6 - .../github.com/tent/http-link-go/LICENSE | 27 - .../github.com/tent/http-link-go/README.md | 12 - .../github.com/tent/http-link-go/link.go | 185 - .../github.com/vmware/govcloudair/.gitignore | 25 - .../github.com/vmware/govcloudair/.travis.yml | 10 - .../github.com/vmware/govcloudair/LICENSE | 569 - .../github.com/vmware/govcloudair/Readme.md | 7 - .../github.com/vmware/govcloudair/api.go | 423 - .../github.com/vmware/govcloudair/catalog.go | 57 - .../vmware/govcloudair/catalogitem.go | 49 - .../vmware/govcloudair/edgegateway.go | 311 - .../github.com/vmware/govcloudair/org.go | 56 - .../vmware/govcloudair/orgvdcnetwork.go | 21 - .../github.com/vmware/govcloudair/task.go | 77 - .../vmware/govcloudair/types/v56/types.go | 1394 - .../github.com/vmware/govcloudair/vapp.go | 602 - .../vmware/govcloudair/vapptemplate.go | 21 - .../github.com/vmware/govcloudair/vdc.go | 277 - .../github.com/vmware/govmomi/.drone.sec | 1 - .../github.com/vmware/govmomi/.drone.yml | 17 - .../github.com/vmware/govmomi/.gitignore | 1 - .../github.com/vmware/govmomi/.travis.yml | 12 - .../github.com/vmware/govmomi/CHANGELOG.md | 118 - .../github.com/vmware/govmomi/CONTRIBUTING.md | 92 - .../github.com/vmware/govmomi/CONTRIBUTORS | 39 - .../github.com/vmware/govmomi/LICENSE.txt | 202 - .../vendor/github.com/vmware/govmomi/Makefile | 24 - .../github.com/vmware/govmomi/README.md | 54 - .../github.com/vmware/govmomi/client.go | 167 - .../github.com/vmware/govmomi/find/error.go | 64 - .../github.com/vmware/govmomi/find/finder.go | 803 - .../vmware/govmomi/guest/auth_manager.go | 79 - .../vmware/govmomi/guest/file_manager.go | 202 - .../govmomi/guest/operations_manager.go | 72 - .../vmware/govmomi/guest/process_manager.go | 96 - .../github.com/vmware/govmomi/list/lister.go | 572 - .../github.com/vmware/govmomi/list/path.go | 44 - .../vmware/govmomi/list/recurser.go | 97 - .../govmomi/object/authorization_manager.go | 108 - .../object/cluster_compute_resource.go | 87 - .../vmware/govmomi/object/common.go | 85 - .../vmware/govmomi/object/compute_resource.go | 126 - .../govmomi/object/custom_fields_manager.go | 135 - .../object/customization_spec_manager.go | 165 - .../vmware/govmomi/object/datacenter.go | 90 - .../vmware/govmomi/object/datastore.go | 362 - .../govmomi/object/diagnostic_manager.go | 95 - .../object/distributed_virtual_portgroup.go | 64 - .../object/distributed_virtual_switch.go | 68 - .../govmomi/object/extension_manager.go | 112 - .../vmware/govmomi/object/file_manager.go | 125 - .../vmware/govmomi/object/folder.go | 214 - .../govmomi/object/history_collector.go | 71 - .../govmomi/object/host_account_manager.go | 64 - .../govmomi/object/host_config_manager.go | 122 - .../govmomi/object/host_datastore_browser.go | 64 - .../govmomi/object/host_datastore_system.go | 103 - .../govmomi/object/host_firewall_system.go | 181 - .../govmomi/object/host_network_system.go | 357 - .../govmomi/object/host_storage_system.go | 80 - .../vmware/govmomi/object/host_system.go | 173 - .../object/host_virtual_nic_manager.go | 92 - .../vmware/govmomi/object/host_vsan_system.go | 87 - .../vmware/govmomi/object/http_nfc_lease.go | 143 - .../vmware/govmomi/object/list_view.go | 43 - .../vmware/govmomi/object/network.go | 54 - .../govmomi/object/network_reference.go | 30 - .../vmware/govmomi/object/option_manager.go | 58 - .../vmware/govmomi/object/ovf_manager.go | 103 - .../vmware/govmomi/object/resource_pool.go | 159 - .../vmware/govmomi/object/search_index.go | 162 - .../vmware/govmomi/object/storage_pod.go | 34 - .../object/storage_resource_manager.go | 178 - .../github.com/vmware/govmomi/object/task.go | 52 - .../github.com/vmware/govmomi/object/types.go | 65 - .../vmware/govmomi/object/virtual_app.go | 126 - .../govmomi/object/virtual_device_list.go | 827 - .../govmomi/object/virtual_disk_manager.go | 145 - .../vmware/govmomi/object/virtual_machine.go | 614 - .../vmware_distributed_virtual_switch.go | 21 - .../vmware/govmomi/property/collector.go | 174 - .../vmware/govmomi/property/wait.go | 147 - .../vmware/govmomi/session/keep_alive.go | 127 - .../vmware/govmomi/session/manager.go | 163 - .../github.com/vmware/govmomi/task/error.go | 32 - .../github.com/vmware/govmomi/task/wait.go | 126 - .../github.com/vmware/govmomi/vim25/client.go | 123 - .../vmware/govmomi/vim25/debug/debug.go | 81 - .../github.com/vmware/govmomi/vim25/doc.go | 29 - .../vmware/govmomi/vim25/methods/internal.go | 123 - .../vmware/govmomi/vim25/methods/methods.go | 14103 ----- .../govmomi/vim25/methods/service_content.go | 56 - .../vmware/govmomi/vim25/mo/ancestors.go | 92 - .../vmware/govmomi/vim25/mo/entity.go | 24 - .../vmware/govmomi/vim25/mo/extra.go | 57 - .../github.com/vmware/govmomi/vim25/mo/mo.go | 1660 - .../vmware/govmomi/vim25/mo/reference.go | 26 - .../vmware/govmomi/vim25/mo/registry.go | 21 - .../vmware/govmomi/vim25/mo/retrieve.go | 174 - .../vmware/govmomi/vim25/mo/type_info.go | 247 - .../govmomi/vim25/progress/aggregator.go | 73 - .../vmware/govmomi/vim25/progress/doc.go | 32 - .../vmware/govmomi/vim25/progress/prefix.go | 54 - .../vmware/govmomi/vim25/progress/reader.go | 177 - .../vmware/govmomi/vim25/progress/report.go | 26 - .../vmware/govmomi/vim25/progress/scale.go | 76 - .../vmware/govmomi/vim25/progress/sinker.go | 33 - .../vmware/govmomi/vim25/progress/tee.go | 41 - .../github.com/vmware/govmomi/vim25/retry.go | 105 - .../vmware/govmomi/vim25/soap/client.go | 507 - .../vmware/govmomi/vim25/soap/debug.go | 149 - .../vmware/govmomi/vim25/soap/error.go | 109 - .../vmware/govmomi/vim25/soap/soap.go | 45 - .../vmware/govmomi/vim25/types/base.go | 19 - .../vmware/govmomi/vim25/types/enum.go | 4098 -- .../vmware/govmomi/vim25/types/fault.go | 32 - .../vmware/govmomi/vim25/types/helpers.go | 25 - .../vmware/govmomi/vim25/types/if.go | 3287 - .../vmware/govmomi/vim25/types/internal.go | 262 - .../vmware/govmomi/vim25/types/registry.go | 30 - .../vmware/govmomi/vim25/types/types.go | 49702 ---------------- .../vmware/govmomi/vim25/xml/LICENSE | 27 - .../vmware/govmomi/vim25/xml/extras.go | 93 - .../vmware/govmomi/vim25/xml/marshal.go | 949 - .../vmware/govmomi/vim25/xml/read.go | 779 - .../vmware/govmomi/vim25/xml/typeinfo.go | 366 - .../vmware/govmomi/vim25/xml/xml.go | 1939 - .../vendor/golang.org/x/crypto/LICENSE | 27 - .../vendor/golang.org/x/crypto/PATENTS | 22 - .../x/crypto/curve25519/const_amd64.s | 20 - .../x/crypto/curve25519/cswap_amd64.s | 88 - .../x/crypto/curve25519/curve25519.go | 841 - .../golang.org/x/crypto/curve25519/doc.go | 23 - .../x/crypto/curve25519/freeze_amd64.s | 94 - .../x/crypto/curve25519/ladderstep_amd64.s | 1398 - .../x/crypto/curve25519/mont25519_amd64.go | 240 - .../x/crypto/curve25519/mul_amd64.s | 191 - .../x/crypto/curve25519/square_amd64.s | 153 - .../vendor/golang.org/x/crypto/ssh/buffer.go | 98 - .../vendor/golang.org/x/crypto/ssh/certs.go | 501 - .../vendor/golang.org/x/crypto/ssh/channel.go | 631 - .../vendor/golang.org/x/crypto/ssh/cipher.go | 549 - .../vendor/golang.org/x/crypto/ssh/client.go | 213 - .../golang.org/x/crypto/ssh/client_auth.go | 441 - .../vendor/golang.org/x/crypto/ssh/common.go | 354 - .../golang.org/x/crypto/ssh/connection.go | 144 - .../vendor/golang.org/x/crypto/ssh/doc.go | 18 - .../golang.org/x/crypto/ssh/handshake.go | 412 - .../vendor/golang.org/x/crypto/ssh/kex.go | 526 - .../vendor/golang.org/x/crypto/ssh/keys.go | 646 - .../vendor/golang.org/x/crypto/ssh/mac.go | 57 - .../golang.org/x/crypto/ssh/messages.go | 725 - .../vendor/golang.org/x/crypto/ssh/mux.go | 356 - .../vendor/golang.org/x/crypto/ssh/server.go | 495 - .../vendor/golang.org/x/crypto/ssh/session.go | 605 - .../vendor/golang.org/x/crypto/ssh/tcpip.go | 407 - .../x/crypto/ssh/terminal/terminal.go | 892 - .../golang.org/x/crypto/ssh/terminal/util.go | 128 - .../x/crypto/ssh/terminal/util_bsd.go | 12 - .../x/crypto/ssh/terminal/util_linux.go | 11 - .../x/crypto/ssh/terminal/util_windows.go | 174 - .../golang.org/x/crypto/ssh/transport.go | 332 - .../machine/vendor/golang.org/x/net/LICENSE | 27 - .../machine/vendor/golang.org/x/net/PATENTS | 22 - .../golang.org/x/net/context/context.go | 447 - .../x/net/context/ctxhttp/cancelreq.go | 18 - .../x/net/context/ctxhttp/cancelreq_go14.go | 23 - .../x/net/context/ctxhttp/ctxhttp.go | 79 - .../vendor/golang.org/x/oauth2/.travis.yml | 14 - .../vendor/golang.org/x/oauth2/AUTHORS | 3 - .../golang.org/x/oauth2/CONTRIBUTING.md | 31 - .../vendor/golang.org/x/oauth2/CONTRIBUTORS | 3 - .../vendor/golang.org/x/oauth2/LICENSE | 27 - .../vendor/golang.org/x/oauth2/README.md | 64 - .../golang.org/x/oauth2/client_appengine.go | 25 - .../golang.org/x/oauth2/google/appengine.go | 86 - .../x/oauth2/google/appengine_hook.go | 13 - .../x/oauth2/google/appenginevm_hook.go | 14 - .../golang.org/x/oauth2/google/default.go | 155 - .../golang.org/x/oauth2/google/google.go | 145 - .../vendor/golang.org/x/oauth2/google/jwt.go | 71 - .../vendor/golang.org/x/oauth2/google/sdk.go | 168 - .../golang.org/x/oauth2/internal/oauth2.go | 76 - .../golang.org/x/oauth2/internal/token.go | 221 - .../golang.org/x/oauth2/internal/transport.go | 67 - .../vendor/golang.org/x/oauth2/jws/jws.go | 172 - .../vendor/golang.org/x/oauth2/jwt/jwt.go | 153 - .../vendor/golang.org/x/oauth2/oauth2.go | 337 - .../vendor/golang.org/x/oauth2/token.go | 158 - .../vendor/golang.org/x/oauth2/transport.go | 132 - .../machine/vendor/golang.org/x/sys/LICENSE | 27 - .../machine/vendor/golang.org/x/sys/PATENTS | 22 - .../golang.org/x/sys/windows/registry/key.go | 178 - .../x/sys/windows/registry/syscall.go | 33 - .../x/sys/windows/registry/value.go | 384 - .../sys/windows/registry/zsyscall_windows.go | 82 - .../vendor/google.golang.org/api/LICENSE | 27 - .../api/compute/v1/compute-api.json | 13953 ----- .../api/compute/v1/compute-gen.go | 36282 ----------- .../google.golang.org/api/gensupport/json.go | 177 - .../api/gensupport/params.go | 31 - .../api/googleapi/googleapi.go | 592 - .../googleapi/internal/uritemplates/LICENSE | 18 - .../internal/uritemplates/uritemplates.go | 359 - .../googleapi/internal/uritemplates/utils.go | 13 - .../google.golang.org/api/googleapi/types.go | 182 - .../google.golang.org/appengine/.travis.yml | 18 - .../google.golang.org/appengine/LICENSE | 202 - .../google.golang.org/appengine/README.md | 73 - .../google.golang.org/appengine/appengine.go | 76 - .../appengine/appengine_vm.go | 56 - .../google.golang.org/appengine/errors.go | 46 - .../google.golang.org/appengine/identity.go | 142 - .../appengine/internal/api.go | 640 - .../appengine/internal/api_classic.go | 133 - .../appengine/internal/api_common.go | 101 - .../appengine/internal/app_id.go | 28 - .../app_identity/app_identity_service.pb.go | 296 - .../app_identity/app_identity_service.proto | 64 - .../appengine/internal/base/api_base.pb.go | 133 - .../appengine/internal/base/api_base.proto | 33 - .../internal/datastore/datastore_v3.pb.go | 2778 - .../internal/datastore/datastore_v3.proto | 541 - .../appengine/internal/identity.go | 14 - .../appengine/internal/identity_classic.go | 27 - .../appengine/internal/identity_vm.go | 97 - .../appengine/internal/internal.go | 144 - .../appengine/internal/log/log_service.pb.go | 899 - .../appengine/internal/log/log_service.proto | 150 - .../appengine/internal/metadata.go | 61 - .../internal/modules/modules_service.pb.go | 375 - .../internal/modules/modules_service.proto | 80 - .../appengine/internal/net.go | 56 - .../appengine/internal/regen.sh | 40 - .../internal/remote_api/remote_api.pb.go | 231 - .../internal/remote_api/remote_api.proto | 44 - .../appengine/internal/transaction.go | 107 - .../google.golang.org/appengine/namespace.go | 25 - .../google.golang.org/appengine/timeout.go | 20 - .../vendor/google.golang.org/cloud/LICENSE | 202 - .../cloud/compute/metadata/metadata.go | 327 - .../google.golang.org/cloud/internal/cloud.go | 128 - .../docker/machine/version/version.go | 24 - .../github.com/pmezard/go-difflib/.travis.yml | 5 - .../github.com/pmezard/go-difflib/README.md | 50 - .../go-difflib/difflib/difflib_test.go | 426 - vendor/github.com/stretchr/testify/.gitignore | 24 - .../github.com/stretchr/testify/.travis.yml | 13 - .../stretchr/testify/Godeps/Godeps.json | 21 - .../github.com/stretchr/testify/Godeps/Readme | 5 - .../github.com/stretchr/testify/LICENCE.txt | 22 - vendor/github.com/stretchr/testify/LICENSE | 35 +- vendor/github.com/stretchr/testify/README.md | 332 - .../stretchr/testify/_codegen/main.go | 287 - .../testify/assert/assertion_forward.go | 1602 +- .../testify/assert/assertion_forward.go.tmpl | 1 + .../stretchr/testify/assert/assertions.go | 1806 +- .../testify/assert/assertions_test.go | 1122 - .../github.com/stretchr/testify/assert/doc.go | 43 +- .../testify/assert/forward_assertions.go | 2 +- .../testify/assert/forward_assertions_test.go | 611 - .../testify/assert/http_assertions.go | 121 +- .../testify/assert/http_assertions_test.go | 86 - vendor/github.com/stretchr/testify/doc.go | 22 - .../github.com/stretchr/testify/http/doc.go | 2 - .../testify/http/test_response_writer.go | 49 - .../testify/http/test_round_tripper.go | 17 - .../github.com/stretchr/testify/mock/doc.go | 44 - .../github.com/stretchr/testify/mock/mock.go | 683 - .../stretchr/testify/mock/mock_test.go | 1068 - .../stretchr/testify/package_test.go | 12 - .../stretchr/testify/require/doc.go | 28 - .../testify/require/forward_requirements.go | 16 - .../require/forward_requirements_test.go | 385 - .../stretchr/testify/require/require.go | 464 - .../stretchr/testify/require/require.go.tmpl | 6 - .../testify/require/require_forward.go | 388 - .../testify/require/require_forward.go.tmpl | 4 - .../stretchr/testify/require/requirements.go | 9 - .../testify/require/requirements_test.go | 369 - .../github.com/stretchr/testify/suite/doc.go | 65 - .../stretchr/testify/suite/interfaces.go | 34 - .../stretchr/testify/suite/suite.go | 115 - .../stretchr/testify/suite/suite_test.go | 239 - .../vendor/github.com/davecgh/go-spew/LICENSE | 13 - .../github.com/davecgh/go-spew/spew/bypass.go | 136 - .../davecgh/go-spew/spew/bypasssafe.go | 37 - .../github.com/davecgh/go-spew/spew/common.go | 341 - .../github.com/davecgh/go-spew/spew/config.go | 297 - .../github.com/davecgh/go-spew/spew/doc.go | 202 - .../github.com/davecgh/go-spew/spew/dump.go | 511 - .../github.com/davecgh/go-spew/spew/format.go | 419 - .../github.com/davecgh/go-spew/spew/spew.go | 148 - .../github.com/pmezard/go-difflib/LICENSE | 27 - .../pmezard/go-difflib/difflib/difflib.go | 758 - .../github.com/stretchr/objx/.gitignore | 22 - .../github.com/stretchr/objx/LICENSE.md | 23 - .../vendor/github.com/stretchr/objx/README.md | 3 - .../github.com/stretchr/objx/accessors.go | 179 - .../stretchr/objx/codegen/array-access.txt | 14 - .../stretchr/objx/codegen/index.html | 86 - .../stretchr/objx/codegen/template.txt | 286 - .../stretchr/objx/codegen/types_list.txt | 20 - .../github.com/stretchr/objx/constants.go | 13 - .../github.com/stretchr/objx/conversions.go | 117 - .../vendor/github.com/stretchr/objx/doc.go | 72 - .../vendor/github.com/stretchr/objx/map.go | 222 - .../github.com/stretchr/objx/mutations.go | 81 - .../github.com/stretchr/objx/security.go | 14 - .../vendor/github.com/stretchr/objx/tests.go | 17 - .../stretchr/objx/type_specific_codegen.go | 2881 - .../vendor/github.com/stretchr/objx/value.go | 13 - 1144 files changed, 3207 insertions(+), 337504 deletions(-) delete mode 100644 vendor/github.com/davecgh/go-spew/.gitignore delete mode 100644 vendor/github.com/davecgh/go-spew/.travis.yml delete mode 100644 vendor/github.com/davecgh/go-spew/README.md delete mode 100644 vendor/github.com/davecgh/go-spew/cov_report.sh delete mode 100644 vendor/github.com/davecgh/go-spew/spew/common_test.go delete mode 100644 vendor/github.com/davecgh/go-spew/spew/dump_test.go delete mode 100644 vendor/github.com/davecgh/go-spew/spew/dumpcgo_test.go delete mode 100644 vendor/github.com/davecgh/go-spew/spew/dumpnocgo_test.go delete mode 100644 vendor/github.com/davecgh/go-spew/spew/example_test.go delete mode 100644 vendor/github.com/davecgh/go-spew/spew/format_test.go delete mode 100644 vendor/github.com/davecgh/go-spew/spew/internal_test.go delete mode 100644 vendor/github.com/davecgh/go-spew/spew/internalunsafe_test.go delete mode 100644 vendor/github.com/davecgh/go-spew/spew/spew_test.go delete mode 100644 vendor/github.com/davecgh/go-spew/spew/testdata/dumpcgo.go delete mode 100644 vendor/github.com/davecgh/go-spew/test_coverage.txt delete mode 100644 vendor/github.com/docker/machine/.dockerignore delete mode 100644 vendor/github.com/docker/machine/.gitignore delete mode 100644 vendor/github.com/docker/machine/.godir delete mode 100644 vendor/github.com/docker/machine/.travis.yml delete mode 100644 vendor/github.com/docker/machine/CHANGELOG.md delete mode 100644 vendor/github.com/docker/machine/CONTRIBUTING.md delete mode 100644 vendor/github.com/docker/machine/Dockerfile delete mode 100644 vendor/github.com/docker/machine/Godeps/Godeps.json delete mode 100644 vendor/github.com/docker/machine/Godeps/Readme delete mode 100644 vendor/github.com/docker/machine/MAINTAINERS delete mode 100644 vendor/github.com/docker/machine/Makefile delete mode 100644 vendor/github.com/docker/machine/Makefile.inc delete mode 100644 vendor/github.com/docker/machine/README.md delete mode 100644 vendor/github.com/docker/machine/ROADMAP.md delete mode 100644 vendor/github.com/docker/machine/appveyor.yml delete mode 100644 vendor/github.com/docker/machine/circle.yml delete mode 100644 vendor/github.com/docker/machine/cmd/machine.go delete mode 100644 vendor/github.com/docker/machine/cmd/machine_test.go delete mode 100644 vendor/github.com/docker/machine/commands/active.go delete mode 100644 vendor/github.com/docker/machine/commands/active_test.go delete mode 100644 vendor/github.com/docker/machine/commands/commands.go delete mode 100644 vendor/github.com/docker/machine/commands/commands_test.go delete mode 100644 vendor/github.com/docker/machine/commands/commandstest/fake_command_line.go delete mode 100644 vendor/github.com/docker/machine/commands/commandstest/stdout_capture.go delete mode 100644 vendor/github.com/docker/machine/commands/config.go delete mode 100644 vendor/github.com/docker/machine/commands/create.go delete mode 100644 vendor/github.com/docker/machine/commands/create_test.go delete mode 100644 vendor/github.com/docker/machine/commands/env.go delete mode 100644 vendor/github.com/docker/machine/commands/env_test.go delete mode 100644 vendor/github.com/docker/machine/commands/flag_sort.go delete mode 100644 vendor/github.com/docker/machine/commands/inspect.go delete mode 100644 vendor/github.com/docker/machine/commands/inspect_test.go delete mode 100644 vendor/github.com/docker/machine/commands/ip.go delete mode 100644 vendor/github.com/docker/machine/commands/ip_test.go delete mode 100644 vendor/github.com/docker/machine/commands/kill.go delete mode 100644 vendor/github.com/docker/machine/commands/kill_test.go delete mode 100644 vendor/github.com/docker/machine/commands/ls.go delete mode 100644 vendor/github.com/docker/machine/commands/ls_test.go delete mode 100644 vendor/github.com/docker/machine/commands/mcndirs/utils.go delete mode 100644 vendor/github.com/docker/machine/commands/mcndirs/utils_test.go delete mode 100644 vendor/github.com/docker/machine/commands/provision.go delete mode 100644 vendor/github.com/docker/machine/commands/provision_test.go delete mode 100644 vendor/github.com/docker/machine/commands/regeneratecerts.go delete mode 100644 vendor/github.com/docker/machine/commands/restart.go delete mode 100644 vendor/github.com/docker/machine/commands/rm.go delete mode 100644 vendor/github.com/docker/machine/commands/rm_test.go delete mode 100644 vendor/github.com/docker/machine/commands/scp.go delete mode 100644 vendor/github.com/docker/machine/commands/scp_test.go delete mode 100644 vendor/github.com/docker/machine/commands/ssh.go delete mode 100644 vendor/github.com/docker/machine/commands/ssh_test.go delete mode 100644 vendor/github.com/docker/machine/commands/start.go delete mode 100644 vendor/github.com/docker/machine/commands/status.go delete mode 100644 vendor/github.com/docker/machine/commands/stop.go delete mode 100644 vendor/github.com/docker/machine/commands/stop_test.go delete mode 100644 vendor/github.com/docker/machine/commands/upgrade.go delete mode 100644 vendor/github.com/docker/machine/commands/url.go delete mode 100644 vendor/github.com/docker/machine/commands/url_test.go delete mode 100644 vendor/github.com/docker/machine/commands/version.go delete mode 100644 vendor/github.com/docker/machine/commands/version_test.go delete mode 100644 vendor/github.com/docker/machine/contrib/completion/.gitignore delete mode 100644 vendor/github.com/docker/machine/contrib/completion/bash/docker-machine-prompt.bash delete mode 100644 vendor/github.com/docker/machine/contrib/completion/bash/docker-machine-wrapper.bash delete mode 100644 vendor/github.com/docker/machine/contrib/completion/bash/docker-machine.bash delete mode 100644 vendor/github.com/docker/machine/contrib/completion/zsh/_docker-machine delete mode 100644 vendor/github.com/docker/machine/doc.go delete mode 100644 vendor/github.com/docker/machine/docs/AVAILABLE_DRIVER_PLUGINS.md delete mode 100644 vendor/github.com/docker/machine/docs/DRIVER_SPEC.md delete mode 100644 vendor/github.com/docker/machine/docs/Dockerfile delete mode 100644 vendor/github.com/docker/machine/docs/Makefile delete mode 100644 vendor/github.com/docker/machine/docs/README.md delete mode 100644 vendor/github.com/docker/machine/docs/RELEASE.md delete mode 100644 vendor/github.com/docker/machine/docs/completion.md delete mode 100644 vendor/github.com/docker/machine/docs/concepts.md delete mode 100644 vendor/github.com/docker/machine/docs/drivers/aws.md delete mode 100644 vendor/github.com/docker/machine/docs/drivers/azure.md delete mode 100644 vendor/github.com/docker/machine/docs/drivers/digital-ocean.md delete mode 100644 vendor/github.com/docker/machine/docs/drivers/exoscale.md delete mode 100644 vendor/github.com/docker/machine/docs/drivers/gce.md delete mode 100644 vendor/github.com/docker/machine/docs/drivers/generic.md delete mode 100644 vendor/github.com/docker/machine/docs/drivers/hyper-v.md delete mode 100644 vendor/github.com/docker/machine/docs/drivers/index.md delete mode 100644 vendor/github.com/docker/machine/docs/drivers/openstack.md delete mode 100644 vendor/github.com/docker/machine/docs/drivers/os-base.md delete mode 100644 vendor/github.com/docker/machine/docs/drivers/rackspace.md delete mode 100644 vendor/github.com/docker/machine/docs/drivers/soft-layer.md delete mode 100644 vendor/github.com/docker/machine/docs/drivers/virtualbox.md delete mode 100644 vendor/github.com/docker/machine/docs/drivers/vm-cloud.md delete mode 100644 vendor/github.com/docker/machine/docs/drivers/vm-fusion.md delete mode 100644 vendor/github.com/docker/machine/docs/drivers/vsphere.md delete mode 100644 vendor/github.com/docker/machine/docs/examples/aws.md delete mode 100644 vendor/github.com/docker/machine/docs/examples/index.md delete mode 100644 vendor/github.com/docker/machine/docs/examples/ocean.md delete mode 100644 vendor/github.com/docker/machine/docs/get-started-cloud.md delete mode 100644 vendor/github.com/docker/machine/docs/get-started.md delete mode 100644 vendor/github.com/docker/machine/docs/img/aws-instance-east.png delete mode 100644 vendor/github.com/docker/machine/docs/img/aws-instance-west.png delete mode 100644 vendor/github.com/docker/machine/docs/img/coverage.png delete mode 100644 vendor/github.com/docker/machine/docs/img/docker-engine.png delete mode 100644 vendor/github.com/docker/machine/docs/img/engine.png delete mode 100644 vendor/github.com/docker/machine/docs/img/linux_docker_host.svg delete mode 100644 vendor/github.com/docker/machine/docs/img/logo.png delete mode 100644 vendor/github.com/docker/machine/docs/img/mac_docker_host.svg delete mode 100644 vendor/github.com/docker/machine/docs/img/machine-mac-win.png delete mode 100644 vendor/github.com/docker/machine/docs/img/machine.png delete mode 100644 vendor/github.com/docker/machine/docs/img/nginx-webserver.png delete mode 100644 vendor/github.com/docker/machine/docs/img/ocean_click_api.png delete mode 100644 vendor/github.com/docker/machine/docs/img/ocean_droplet.png delete mode 100644 vendor/github.com/docker/machine/docs/img/ocean_gen_token.png delete mode 100644 vendor/github.com/docker/machine/docs/img/ocean_save_token.png delete mode 100644 vendor/github.com/docker/machine/docs/img/ocean_token_create.png delete mode 100644 vendor/github.com/docker/machine/docs/img/provision-use-case.png delete mode 100644 vendor/github.com/docker/machine/docs/index.md delete mode 100644 vendor/github.com/docker/machine/docs/install-machine.md delete mode 100644 vendor/github.com/docker/machine/docs/migrate-to-machine.md delete mode 100644 vendor/github.com/docker/machine/docs/overview.md delete mode 100644 vendor/github.com/docker/machine/docs/reference/active.md delete mode 100644 vendor/github.com/docker/machine/docs/reference/config.md delete mode 100644 vendor/github.com/docker/machine/docs/reference/create.md delete mode 100644 vendor/github.com/docker/machine/docs/reference/env.md delete mode 100644 vendor/github.com/docker/machine/docs/reference/help.md delete mode 100644 vendor/github.com/docker/machine/docs/reference/index.md delete mode 100644 vendor/github.com/docker/machine/docs/reference/inspect.md delete mode 100644 vendor/github.com/docker/machine/docs/reference/ip.md delete mode 100644 vendor/github.com/docker/machine/docs/reference/kill.md delete mode 100644 vendor/github.com/docker/machine/docs/reference/ls.md delete mode 100644 vendor/github.com/docker/machine/docs/reference/provision.md delete mode 100644 vendor/github.com/docker/machine/docs/reference/regenerate-certs.md delete mode 100644 vendor/github.com/docker/machine/docs/reference/restart.md delete mode 100644 vendor/github.com/docker/machine/docs/reference/rm.md delete mode 100644 vendor/github.com/docker/machine/docs/reference/scp.md delete mode 100644 vendor/github.com/docker/machine/docs/reference/ssh.md delete mode 100644 vendor/github.com/docker/machine/docs/reference/start.md delete mode 100644 vendor/github.com/docker/machine/docs/reference/status.md delete mode 100644 vendor/github.com/docker/machine/docs/reference/stop.md delete mode 100644 vendor/github.com/docker/machine/docs/reference/upgrade.md delete mode 100644 vendor/github.com/docker/machine/docs/reference/url.md delete mode 100644 vendor/github.com/docker/machine/drivers/amazonec2/amazonec2.go delete mode 100644 vendor/github.com/docker/machine/drivers/amazonec2/amazonec2_test.go delete mode 100644 vendor/github.com/docker/machine/drivers/amazonec2/awscredentials.go delete mode 100644 vendor/github.com/docker/machine/drivers/amazonec2/ec2client.go delete mode 100644 vendor/github.com/docker/machine/drivers/amazonec2/logger.go delete mode 100644 vendor/github.com/docker/machine/drivers/amazonec2/region.go delete mode 100644 vendor/github.com/docker/machine/drivers/amazonec2/stub_test.go delete mode 100644 vendor/github.com/docker/machine/drivers/azure/azure.go delete mode 100644 vendor/github.com/docker/machine/drivers/azure/azureutil/auth.go delete mode 100644 vendor/github.com/docker/machine/drivers/azure/azureutil/authorizer.go delete mode 100644 vendor/github.com/docker/machine/drivers/azure/azureutil/azureutil.go delete mode 100644 vendor/github.com/docker/machine/drivers/azure/azureutil/cleanup.go delete mode 100644 vendor/github.com/docker/machine/drivers/azure/azureutil/clients.go delete mode 100644 vendor/github.com/docker/machine/drivers/azure/azureutil/context.go delete mode 100644 vendor/github.com/docker/machine/drivers/azure/azureutil/inspector.go delete mode 100644 vendor/github.com/docker/machine/drivers/azure/azureutil/naming.go delete mode 100644 vendor/github.com/docker/machine/drivers/azure/azureutil/powerstate.go delete mode 100644 vendor/github.com/docker/machine/drivers/azure/azureutil/tenantid.go delete mode 100644 vendor/github.com/docker/machine/drivers/azure/azureutil/util.go delete mode 100644 vendor/github.com/docker/machine/drivers/azure/logutil/logfields.go delete mode 100644 vendor/github.com/docker/machine/drivers/azure/util.go delete mode 100644 vendor/github.com/docker/machine/drivers/digitalocean/digitalocean.go delete mode 100644 vendor/github.com/docker/machine/drivers/digitalocean/digitalocean_test.go delete mode 100644 vendor/github.com/docker/machine/drivers/errdriver/error.go delete mode 100644 vendor/github.com/docker/machine/drivers/exoscale/exoscale.go delete mode 100644 vendor/github.com/docker/machine/drivers/exoscale/exoscale_test.go delete mode 100644 vendor/github.com/docker/machine/drivers/fakedriver/fakedriver.go delete mode 100644 vendor/github.com/docker/machine/drivers/generic/generic.go delete mode 100644 vendor/github.com/docker/machine/drivers/generic/generic_test.go delete mode 100644 vendor/github.com/docker/machine/drivers/google/compute_util.go delete mode 100644 vendor/github.com/docker/machine/drivers/google/compute_util_test.go delete mode 100644 vendor/github.com/docker/machine/drivers/google/google.go delete mode 100644 vendor/github.com/docker/machine/drivers/google/google_test.go delete mode 100644 vendor/github.com/docker/machine/drivers/hyperv/hyperv.go delete mode 100644 vendor/github.com/docker/machine/drivers/hyperv/hyperv_test.go delete mode 100644 vendor/github.com/docker/machine/drivers/hyperv/powershell.go delete mode 100644 vendor/github.com/docker/machine/drivers/none/driver.go delete mode 100644 vendor/github.com/docker/machine/drivers/openstack/client.go delete mode 100644 vendor/github.com/docker/machine/drivers/openstack/openstack.go delete mode 100644 vendor/github.com/docker/machine/drivers/openstack/openstack_test.go delete mode 100644 vendor/github.com/docker/machine/drivers/rackspace/client.go delete mode 100644 vendor/github.com/docker/machine/drivers/rackspace/rackspace.go delete mode 100644 vendor/github.com/docker/machine/drivers/rackspace/rackspace_test.go delete mode 100644 vendor/github.com/docker/machine/drivers/softlayer/driver.go delete mode 100644 vendor/github.com/docker/machine/drivers/softlayer/driver_test.go delete mode 100644 vendor/github.com/docker/machine/drivers/softlayer/softlayer.go delete mode 100644 vendor/github.com/docker/machine/drivers/virtualbox/disk.go delete mode 100644 vendor/github.com/docker/machine/drivers/virtualbox/disk_test.go delete mode 100644 vendor/github.com/docker/machine/drivers/virtualbox/ip.go delete mode 100644 vendor/github.com/docker/machine/drivers/virtualbox/misc.go delete mode 100644 vendor/github.com/docker/machine/drivers/virtualbox/network.go delete mode 100644 vendor/github.com/docker/machine/drivers/virtualbox/network_test.go delete mode 100644 vendor/github.com/docker/machine/drivers/virtualbox/vbm.go delete mode 100644 vendor/github.com/docker/machine/drivers/virtualbox/vbm_test.go delete mode 100644 vendor/github.com/docker/machine/drivers/virtualbox/virtualbox.go delete mode 100644 vendor/github.com/docker/machine/drivers/virtualbox/virtualbox_darwin.go delete mode 100644 vendor/github.com/docker/machine/drivers/virtualbox/virtualbox_darwin_test.go delete mode 100644 vendor/github.com/docker/machine/drivers/virtualbox/virtualbox_linux.go delete mode 100644 vendor/github.com/docker/machine/drivers/virtualbox/virtualbox_linux_test.go delete mode 100644 vendor/github.com/docker/machine/drivers/virtualbox/virtualbox_test.go delete mode 100644 vendor/github.com/docker/machine/drivers/virtualbox/virtualbox_windows.go delete mode 100644 vendor/github.com/docker/machine/drivers/virtualbox/vm.go delete mode 100644 vendor/github.com/docker/machine/drivers/virtualbox/vm_test.go delete mode 100644 vendor/github.com/docker/machine/drivers/virtualbox/vtx.go delete mode 100644 vendor/github.com/docker/machine/drivers/virtualbox/vtx_test.go delete mode 100644 vendor/github.com/docker/machine/drivers/vmwarefusion/fusion.go delete mode 100644 vendor/github.com/docker/machine/drivers/vmwarefusion/fusion_darwin.go delete mode 100644 vendor/github.com/docker/machine/drivers/vmwarefusion/fusion_darwin_test.go delete mode 100644 vendor/github.com/docker/machine/drivers/vmwarefusion/vmrun_darwin.go delete mode 100644 vendor/github.com/docker/machine/drivers/vmwarefusion/vmx_darwin.go delete mode 100644 vendor/github.com/docker/machine/drivers/vmwarevcloudair/vcloudair.go delete mode 100644 vendor/github.com/docker/machine/drivers/vmwarevcloudair/vcloudlair_test.go delete mode 100644 vendor/github.com/docker/machine/drivers/vmwarevsphere/vsphere.go delete mode 100644 vendor/github.com/docker/machine/drivers/vmwarevsphere/vsphere_test.go delete mode 100644 vendor/github.com/docker/machine/experimental/README.md delete mode 100644 vendor/github.com/docker/machine/experimental/b2d_migration.md delete mode 100644 vendor/github.com/docker/machine/experimental/b2d_migration_tasks.md delete mode 100644 vendor/github.com/docker/machine/its/cli/create_rm_test.go delete mode 100644 vendor/github.com/docker/machine/its/cli/driver_help_test.go delete mode 100644 vendor/github.com/docker/machine/its/cli/help_test.go delete mode 100644 vendor/github.com/docker/machine/its/cli/inspect_test.go delete mode 100644 vendor/github.com/docker/machine/its/cli/ls_test.go delete mode 100644 vendor/github.com/docker/machine/its/cli/status_test.go delete mode 100644 vendor/github.com/docker/machine/its/cli/url_test.go delete mode 100644 vendor/github.com/docker/machine/its/tester.go delete mode 100644 vendor/github.com/docker/machine/its/thirdparty/commands_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/auth/auth.go delete mode 100644 vendor/github.com/docker/machine/libmachine/cert/bootstrap.go delete mode 100644 vendor/github.com/docker/machine/libmachine/cert/cert.go delete mode 100644 vendor/github.com/docker/machine/libmachine/cert/cert_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/check/check.go delete mode 100644 vendor/github.com/docker/machine/libmachine/check/check_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/crashreport/crash_report.go delete mode 100644 vendor/github.com/docker/machine/libmachine/crashreport/crash_report_logger.go delete mode 100644 vendor/github.com/docker/machine/libmachine/crashreport/crash_report_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/crashreport/os_darwin.go delete mode 100644 vendor/github.com/docker/machine/libmachine/crashreport/os_linux.go delete mode 100644 vendor/github.com/docker/machine/libmachine/crashreport/os_windows.go delete mode 100644 vendor/github.com/docker/machine/libmachine/crashreport/os_windows_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/drivers/base.go delete mode 100644 vendor/github.com/docker/machine/libmachine/drivers/base_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/drivers/check.go delete mode 100644 vendor/github.com/docker/machine/libmachine/drivers/drivers.go delete mode 100644 vendor/github.com/docker/machine/libmachine/drivers/notsupported.go delete mode 100644 vendor/github.com/docker/machine/libmachine/drivers/plugin/localbinary/plugin.go delete mode 100644 vendor/github.com/docker/machine/libmachine/drivers/plugin/localbinary/plugin_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/drivers/plugin/register_driver.go delete mode 100644 vendor/github.com/docker/machine/libmachine/drivers/rpc/client_driver.go delete mode 100644 vendor/github.com/docker/machine/libmachine/drivers/rpc/server_driver.go delete mode 100644 vendor/github.com/docker/machine/libmachine/drivers/rpc/server_driver_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/drivers/serial.go delete mode 100644 vendor/github.com/docker/machine/libmachine/drivers/serial_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/drivers/utils.go delete mode 100644 vendor/github.com/docker/machine/libmachine/engine/engine.go delete mode 100644 vendor/github.com/docker/machine/libmachine/examples/main.go delete mode 100644 vendor/github.com/docker/machine/libmachine/host/host.go delete mode 100644 vendor/github.com/docker/machine/libmachine/host/host_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/host/host_v0.go delete mode 100644 vendor/github.com/docker/machine/libmachine/host/host_v2.go delete mode 100644 vendor/github.com/docker/machine/libmachine/host/migrate.go delete mode 100644 vendor/github.com/docker/machine/libmachine/host/migrate_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/host/migrate_v0_v1.go delete mode 100644 vendor/github.com/docker/machine/libmachine/host/migrate_v0_v1_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/host/migrate_v0_v3_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/host/migrate_v1_v2.go delete mode 100644 vendor/github.com/docker/machine/libmachine/host/migrate_v1_v2_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/host/migrate_v2_v3.go delete mode 100644 vendor/github.com/docker/machine/libmachine/hosttest/default_test_host.go delete mode 100644 vendor/github.com/docker/machine/libmachine/libmachine.go delete mode 100644 vendor/github.com/docker/machine/libmachine/libmachinetest/fake_api.go delete mode 100644 vendor/github.com/docker/machine/libmachine/log/fmt_machine_logger_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/log/history_recorder_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/log/log_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/mcndockerclient/docker_client.go delete mode 100644 vendor/github.com/docker/machine/libmachine/mcndockerclient/docker_host.go delete mode 100644 vendor/github.com/docker/machine/libmachine/mcndockerclient/docker_versioner.go delete mode 100644 vendor/github.com/docker/machine/libmachine/mcndockerclient/fake_docker_versioner.go delete mode 100644 vendor/github.com/docker/machine/libmachine/mcnerror/errors.go delete mode 100644 vendor/github.com/docker/machine/libmachine/mcnflag/flag.go delete mode 100644 vendor/github.com/docker/machine/libmachine/mcnutils/b2d.go delete mode 100644 vendor/github.com/docker/machine/libmachine/mcnutils/b2d_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/mcnutils/utils.go delete mode 100644 vendor/github.com/docker/machine/libmachine/mcnutils/utils_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/persist/filestore.go delete mode 100644 vendor/github.com/docker/machine/libmachine/persist/filestore_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/persist/persisttest/fake_store.go delete mode 100644 vendor/github.com/docker/machine/libmachine/persist/store.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provider/provider.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/arch.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/arch_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/boot2docker.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/centos.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/centos_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/configure_swarm.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/coreos.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/debian.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/debian_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/engine_config_context.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/errors.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/fake_provisioner.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/fedora.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/fedora_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/generic.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/oraclelinux.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/oraclelinux_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/os_release.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/os_release_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/pkgaction/pkg_action.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/pkgaction/pkg_action_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/provisioner.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/provisiontest/sshcommander.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/provisiontest/sshcommander_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/rancheros.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/redhat.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/redhat_ssh_commander.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/redhat_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/serviceaction/service_action.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/serviceaction/service_action_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/suse.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/systemd.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/ubuntu_systemd.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/ubuntu_systemd_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/ubuntu_upstart.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/ubuntu_upstart_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/utils.go delete mode 100644 vendor/github.com/docker/machine/libmachine/provision/utils_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/shell/shell.go delete mode 100644 vendor/github.com/docker/machine/libmachine/shell/shell_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/shell/shell_unix_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/shell/shell_windows.go delete mode 100644 vendor/github.com/docker/machine/libmachine/shell/shell_windows_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/ssh/client.go delete mode 100644 vendor/github.com/docker/machine/libmachine/ssh/client_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/ssh/keys.go delete mode 100644 vendor/github.com/docker/machine/libmachine/ssh/keys_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/ssh/ssh_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/ssh/sshtest/fake_client.go delete mode 100644 vendor/github.com/docker/machine/libmachine/state/state.go delete mode 100644 vendor/github.com/docker/machine/libmachine/state/state_test.go delete mode 100644 vendor/github.com/docker/machine/libmachine/swarm/swarm.go delete mode 100644 vendor/github.com/docker/machine/libmachine/version/version.go delete mode 100644 vendor/github.com/docker/machine/mk/build.mk delete mode 100644 vendor/github.com/docker/machine/mk/coverage.mk delete mode 100644 vendor/github.com/docker/machine/mk/dev.mk delete mode 100644 vendor/github.com/docker/machine/mk/main.mk delete mode 100644 vendor/github.com/docker/machine/mk/test.mk delete mode 100644 vendor/github.com/docker/machine/mk/validate.mk delete mode 100644 vendor/github.com/docker/machine/script/.validate delete mode 100644 vendor/github.com/docker/machine/script/build_in_container.sh delete mode 100644 vendor/github.com/docker/machine/script/release.sh delete mode 100644 vendor/github.com/docker/machine/script/release/github-release-template.md delete mode 100644 vendor/github.com/docker/machine/script/validate-dco delete mode 100644 vendor/github.com/docker/machine/test/integration/.gitignore delete mode 100644 vendor/github.com/docker/machine/test/integration/amazonec2/amazon.bats delete mode 100644 vendor/github.com/docker/machine/test/integration/amazonec2/create-ebsinstance.bats delete mode 100644 vendor/github.com/docker/machine/test/integration/amazonec2/createwithkeypair.bats delete mode 100644 vendor/github.com/docker/machine/test/integration/core/certs-extra-san.bats delete mode 100644 vendor/github.com/docker/machine/test/integration/core/core-commands.bats delete mode 100644 vendor/github.com/docker/machine/test/integration/core/crashreport.bats delete mode 100644 vendor/github.com/docker/machine/test/integration/core/engine-options.bats delete mode 100644 vendor/github.com/docker/machine/test/integration/core/env_shell.bats delete mode 100644 vendor/github.com/docker/machine/test/integration/core/inspect_format.bats delete mode 100644 vendor/github.com/docker/machine/test/integration/core/regenerate-certs.bats delete mode 100644 vendor/github.com/docker/machine/test/integration/core/scp.bats delete mode 100644 vendor/github.com/docker/machine/test/integration/core/ssh-backends.bats delete mode 100644 vendor/github.com/docker/machine/test/integration/core/swarm-options.bats delete mode 100644 vendor/github.com/docker/machine/test/integration/helpers.bash delete mode 100644 vendor/github.com/docker/machine/test/integration/run-bats.sh delete mode 100644 vendor/github.com/docker/machine/test/integration/virtualbox/certs-checksum.bats delete mode 100644 vendor/github.com/docker/machine/test/integration/virtualbox/create-with-upgrading.bats delete mode 100644 vendor/github.com/docker/machine/test/integration/virtualbox/custom-mem-disk.bats delete mode 100644 vendor/github.com/docker/machine/test/integration/virtualbox/dns.bats delete mode 100644 vendor/github.com/docker/machine/test/integration/virtualbox/guards.bats delete mode 100644 vendor/github.com/docker/machine/test/integration/virtualbox/pause-save-start.bats delete mode 100644 vendor/github.com/docker/machine/test/integration/virtualbox/upgrade.bats delete mode 100644 vendor/github.com/docker/machine/test/provision/rancheros.bats delete mode 100644 vendor/github.com/docker/machine/test/provision/redhat.bats delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/availabilitysets.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/client.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/models.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/usageoperations.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/version.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachineextensionimages.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachineextensions.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachineimages.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachines.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinescalesets.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinescalesetvms.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinesizes.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/applicationgateways.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/client.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressroutecircuitauthorizations.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressroutecircuitpeerings.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressroutecircuits.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressrouteserviceproviders.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/interfaces.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/loadbalancers.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/localnetworkgateways.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/models.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/publicipaddresses.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/routes.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/routetables.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/securitygroups.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/securityrules.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/subnets.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/usages.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/version.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/virtualnetworkgatewayconnections.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/virtualnetworkgateways.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/virtualnetworks.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/client.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/deploymentoperations.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/deployments.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/groups.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/models.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/policyassignments.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/policydefinitions.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/provideroperationdetails.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/providers.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/resources.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/tags.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/version.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/subscriptions/client.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/subscriptions/models.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/subscriptions/subscriptions.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/subscriptions/tenants.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/subscriptions/version.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/accounts.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/client.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/models.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/usageoperations.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/version.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/storage/blob.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/storage/client.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/storage/file.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/storage/queue.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/storage/util.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/autorest.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/azure/async.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/azure/azure.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/azure/config.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/azure/devicetoken.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/azure/environments.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/azure/persist.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/azure/token.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/client.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/date/date.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/date/time.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/date/timerfc1123.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/date/utility.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/error.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/preparer.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/responder.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/sender.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/to/convert.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/utility.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/version.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/LICENSE.txt delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/NOTICE.txt delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/awserr/error.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/awserr/types.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/awsutil/copy.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/awsutil/equal.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/awsutil/path_value.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/awsutil/prettify.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/awsutil/string_value.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/client/client.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/client/default_retryer.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/client/metadata/client_info.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/config.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/convert_types.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/param_validator.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/credentials/chain_provider.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds/ec2_role_provider.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/credentials/env_provider.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/credentials/example.ini delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/credentials/shared_credentials_provider.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/credentials/static_provider.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/defaults/defaults.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/api.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/errors.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/logger.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/request/handlers.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/request/request.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/request/request_pagination.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/request/retryer.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/session/session.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/types.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/version.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/endpoints/endpoints.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/endpoints/endpoints.json delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/endpoints/endpoints_map.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/ec2query/build.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/ec2query/unmarshal.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/query/queryutil/queryutil.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/build.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/payload.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/unmarshal.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/build.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/unmarshal.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/xml_to_struct.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/signer/v4/v4.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/waiter/waiter.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/service/ec2/customizations.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/service/ec2/service.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/service/ec2/waiters.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/.travis.yml delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/CHANGELOG.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/CONTRIBUTING.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/LICENSE.txt delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/Makefile delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/README.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/appengine.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/bugsnag.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/configuration.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/doc.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/errors/README.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/errors/error.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/errors/parse_panic.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/errors/stackframe.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/event.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/json_tags.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/metadata.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/middleware.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/notifier.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/panicwrap.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/payload.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/osext/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/osext/osext.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/osext/osext_plan9.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/osext/osext_procfs.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/osext/osext_sysctl.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/osext/osext_windows.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/panicwrap/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/panicwrap/README.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/panicwrap/monitor.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/panicwrap/monitor_windows.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/bugsnag/panicwrap/panicwrap.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/.gitignore delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/.travis.yml delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/README.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/backoff.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/exponential.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/retry.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/ticker.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/.travis.yml delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/README.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/app.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/cli.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/command.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/context.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/flag.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/help.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/bypass.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/common.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/config.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/doc.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/dump.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/format.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/spew.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/.gitignore delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/.travis.yml delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/README.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/VERSION_HISTORY.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/doc.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/ecdsa.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/ecdsa_utils.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/errors.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/hmac.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/parser.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/rsa.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/rsa_pss.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/rsa_utils.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/signing_method.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/token.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/.travis.yml delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/CONTRIBUTING.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/LICENSE.txt delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/README.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/account.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/action.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/doc.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/domains.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/droplet_actions.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/droplets.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/errors.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/floating_ips.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/floating_ips_actions.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/godo.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/image_actions.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/images.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/keys.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/links.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/regions.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/sizes.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/strings.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/timestamp.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/docker/docker/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/docker/docker/NOTICE delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/docker/docker/contrib/syntax/vim/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/mflag/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/symlink/LICENSE.APACHE delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/symlink/LICENSE.BSD delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/MAINTAINERS delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/console_windows.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/tc_linux_cgo.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/tc_other.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/term.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/term_windows.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/termios_darwin.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/termios_freebsd.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/termios_linux.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/docker/go-units/CONTRIBUTING.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/docker/go-units/LICENSE.code delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/docker/go-units/LICENSE.docs delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/docker/go-units/MAINTAINERS delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/docker/go-units/README.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/docker/go-units/circle.yml delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/docker/go-units/duration.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/docker/go-units/size.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/docker/go-units/ulimit.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/go-ini/ini/.gitignore delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/go-ini/ini/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/go-ini/ini/README.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/go-ini/ini/README_ZH.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/go-ini/ini/ini.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/go-ini/ini/struct.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/Makefile delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/clone.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/decode.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/encode.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/equal.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/extensions.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/lib.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/message_set.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/pointer_reflect.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/pointer_unsafe.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/properties.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/text.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/text_parser.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/google/go-querystring/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/google/go-querystring/query/encode.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/.gitignore delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/.travis.yml delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/Makefile delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/README.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/api.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/astnodetype_string.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/functions.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/interpreter.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/lexer.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/parser.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/toktype_string.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/util.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/mitchellh/mapstructure/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/mitchellh/mapstructure/README.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/mitchellh/mapstructure/decode_hooks.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/mitchellh/mapstructure/error.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/mitchellh/mapstructure/mapstructure.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/pmezard/go-difflib/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/pmezard/go-difflib/difflib/difflib.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/async.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/error.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/groups.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/init.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/keypair.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/request.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/topology.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/types.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/vm.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/.travis.yml delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/CONTRIBUTING.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/CONTRIBUTORS.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/README.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/UPGRADING.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/auth_options.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/auth_results.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/doc.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/endpoint_search.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/auth_env.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/client.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/floatingip/doc.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/floatingip/fixtures.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/floatingip/requests.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/floatingip/results.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/floatingip/urls.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/keypairs/doc.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/keypairs/fixtures.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/keypairs/requests.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/keypairs/results.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/keypairs/urls.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/startstop/doc.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/startstop/fixtures.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/startstop/requests.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/flavors/doc.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/flavors/requests.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/flavors/results.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/flavors/urls.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/images/doc.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/images/requests.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/images/results.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/images/urls.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/servers/doc.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/servers/fixtures.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/servers/requests.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/servers/results.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/servers/urls.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/servers/util.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/endpoint_location.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tenants/doc.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tenants/fixtures.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tenants/requests.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tenants/results.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tenants/urls.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tokens/doc.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tokens/errors.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tokens/fixtures.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tokens/requests.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tokens/results.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tokens/urls.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v3/tokens/doc.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v3/tokens/errors.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v3/tokens/requests.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v3/tokens/results.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v3/tokens/urls.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/extensions/layer3/floatingips/requests.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/extensions/layer3/floatingips/results.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/extensions/layer3/floatingips/urls.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/networks/doc.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/networks/errors.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/networks/requests.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/networks/results.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/networks/urls.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/ports/doc.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/ports/errors.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/ports/requests.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/ports/results.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/ports/urls.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/utils/choose_version.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/pagination/http.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/pagination/linked.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/pagination/marker.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/pagination/null.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/pagination/pager.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/pagination/pkg.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/pagination/single.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/params.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/provider_client.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/rackspace/auth_env.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/rackspace/client.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/rackspace/identity/v2/tokens/delegate.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/rackspace/identity/v2/tokens/doc.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/results.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/service_client.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/testhelper/client/fake.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/testhelper/convenience.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/testhelper/doc.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/testhelper/http_responses.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/util.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/.gitignore delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/README.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/auth.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/dockerclient.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/example_responses.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/interface.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/types.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/utils.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/skarademir/naturalsort/LICENSE.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/skarademir/naturalsort/README.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/skarademir/naturalsort/naturalsort.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/.gitignore delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/LICENSE.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/README.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/accessors.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/constants.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/conversions.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/doc.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/map.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/mutations.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/security.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/tests.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/type_specific_codegen.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/value.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/LICENCE.txt delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/assert/assertion_forward.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/assert/assertion_forward.go.tmpl delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/assert/assertions.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/assert/doc.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/assert/errors.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/assert/forward_assertions.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/assert/http_assertions.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/mock/doc.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/mock/mock.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/tent/http-link-go/.gitignore delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/tent/http-link-go/.travis.yml delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/tent/http-link-go/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/tent/http-link-go/README.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/tent/http-link-go/link.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/.gitignore delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/.travis.yml delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/Readme.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/api.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/catalog.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/catalogitem.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/edgegateway.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/org.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/orgvdcnetwork.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/task.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/types/v56/types.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/vapp.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/vapptemplate.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/vdc.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/.drone.sec delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/.drone.yml delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/.gitignore delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/.travis.yml delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/CHANGELOG.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/CONTRIBUTING.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/CONTRIBUTORS delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/LICENSE.txt delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/Makefile delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/README.md delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/client.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/find/error.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/find/finder.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/guest/auth_manager.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/guest/file_manager.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/guest/operations_manager.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/guest/process_manager.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/list/lister.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/list/path.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/list/recurser.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/authorization_manager.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/cluster_compute_resource.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/common.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/compute_resource.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/custom_fields_manager.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/customization_spec_manager.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/datacenter.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/datastore.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/diagnostic_manager.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/distributed_virtual_portgroup.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/distributed_virtual_switch.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/extension_manager.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/file_manager.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/folder.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/history_collector.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_account_manager.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_config_manager.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_datastore_browser.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_datastore_system.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_firewall_system.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_network_system.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_storage_system.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_system.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_virtual_nic_manager.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_vsan_system.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/http_nfc_lease.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/list_view.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/network.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/network_reference.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/option_manager.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/ovf_manager.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/resource_pool.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/search_index.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/storage_pod.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/storage_resource_manager.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/task.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/types.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/virtual_app.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/virtual_device_list.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/virtual_disk_manager.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/virtual_machine.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/vmware_distributed_virtual_switch.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/property/collector.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/property/wait.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/session/keep_alive.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/session/manager.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/task/error.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/task/wait.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/client.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/debug/debug.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/doc.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/methods/internal.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/methods/methods.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/methods/service_content.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/ancestors.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/entity.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/extra.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/mo.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/reference.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/registry.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/retrieve.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/type_info.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/aggregator.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/doc.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/prefix.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/reader.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/report.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/scale.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/sinker.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/tee.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/retry.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/soap/client.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/soap/debug.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/soap/error.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/soap/soap.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/base.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/enum.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/fault.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/helpers.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/if.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/internal.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/registry.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/types.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/xml/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/xml/extras.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/xml/marshal.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/xml/read.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/xml/typeinfo.go delete mode 100644 vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/xml/xml.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/PATENTS delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/curve25519/const_amd64.s delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/curve25519/cswap_amd64.s delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/curve25519/curve25519.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/curve25519/doc.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/curve25519/freeze_amd64.s delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/curve25519/ladderstep_amd64.s delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/curve25519/mont25519_amd64.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/curve25519/mul_amd64.s delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/curve25519/square_amd64.s delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/ssh/buffer.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/ssh/certs.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/ssh/channel.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/ssh/cipher.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/ssh/client.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/ssh/client_auth.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/ssh/common.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/ssh/connection.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/ssh/doc.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/ssh/handshake.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/ssh/kex.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/ssh/keys.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/ssh/mac.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/ssh/messages.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/ssh/mux.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/ssh/server.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/ssh/session.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/ssh/tcpip.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/ssh/terminal/terminal.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/ssh/terminal/util.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/ssh/terminal/util_bsd.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/ssh/terminal/util_linux.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/ssh/terminal/util_windows.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/crypto/ssh/transport.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/net/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/net/PATENTS delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/net/context/context.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/net/context/ctxhttp/cancelreq.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/net/context/ctxhttp/cancelreq_go14.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/oauth2/.travis.yml delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/oauth2/AUTHORS delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/oauth2/CONTRIBUTING.md delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/oauth2/CONTRIBUTORS delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/oauth2/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/oauth2/README.md delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/oauth2/client_appengine.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/oauth2/google/appengine.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/oauth2/google/appengine_hook.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/oauth2/google/appenginevm_hook.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/oauth2/google/default.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/oauth2/google/google.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/oauth2/google/jwt.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/oauth2/google/sdk.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/oauth2/internal/oauth2.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/oauth2/internal/token.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/oauth2/internal/transport.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/oauth2/jws/jws.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/oauth2/jwt/jwt.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/oauth2/oauth2.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/oauth2/token.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/oauth2/transport.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/sys/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/sys/PATENTS delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/sys/windows/registry/key.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/sys/windows/registry/syscall.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/sys/windows/registry/value.go delete mode 100644 vendor/github.com/docker/machine/vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/api/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/api/compute/v1/compute-api.json delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/api/compute/v1/compute-gen.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/api/gensupport/json.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/api/gensupport/params.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/api/googleapi/googleapi.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/api/googleapi/internal/uritemplates/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/api/googleapi/internal/uritemplates/uritemplates.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/api/googleapi/internal/uritemplates/utils.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/api/googleapi/types.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/.travis.yml delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/README.md delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/appengine.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/appengine_vm.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/errors.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/identity.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/internal/api.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/internal/api_classic.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/internal/api_common.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/internal/app_id.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/internal/app_identity/app_identity_service.pb.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/internal/app_identity/app_identity_service.proto delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/internal/base/api_base.pb.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/internal/base/api_base.proto delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.pb.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.proto delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/internal/identity.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/internal/identity_classic.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/internal/identity_vm.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/internal/internal.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/internal/log/log_service.pb.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/internal/log/log_service.proto delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/internal/metadata.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/internal/modules/modules_service.pb.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/internal/modules/modules_service.proto delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/internal/net.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/internal/regen.sh delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/internal/remote_api/remote_api.pb.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/internal/remote_api/remote_api.proto delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/internal/transaction.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/namespace.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/appengine/timeout.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/cloud/LICENSE delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/cloud/compute/metadata/metadata.go delete mode 100644 vendor/github.com/docker/machine/vendor/google.golang.org/cloud/internal/cloud.go delete mode 100644 vendor/github.com/docker/machine/version/version.go delete mode 100644 vendor/github.com/pmezard/go-difflib/.travis.yml delete mode 100644 vendor/github.com/pmezard/go-difflib/README.md delete mode 100644 vendor/github.com/pmezard/go-difflib/difflib/difflib_test.go delete mode 100644 vendor/github.com/stretchr/testify/.gitignore delete mode 100644 vendor/github.com/stretchr/testify/.travis.yml delete mode 100644 vendor/github.com/stretchr/testify/Godeps/Godeps.json delete mode 100644 vendor/github.com/stretchr/testify/Godeps/Readme delete mode 100644 vendor/github.com/stretchr/testify/LICENCE.txt delete mode 100644 vendor/github.com/stretchr/testify/README.md delete mode 100644 vendor/github.com/stretchr/testify/_codegen/main.go delete mode 100644 vendor/github.com/stretchr/testify/assert/assertions_test.go delete mode 100644 vendor/github.com/stretchr/testify/assert/forward_assertions_test.go delete mode 100644 vendor/github.com/stretchr/testify/assert/http_assertions_test.go delete mode 100644 vendor/github.com/stretchr/testify/doc.go delete mode 100644 vendor/github.com/stretchr/testify/http/doc.go delete mode 100644 vendor/github.com/stretchr/testify/http/test_response_writer.go delete mode 100644 vendor/github.com/stretchr/testify/http/test_round_tripper.go delete mode 100644 vendor/github.com/stretchr/testify/mock/doc.go delete mode 100644 vendor/github.com/stretchr/testify/mock/mock.go delete mode 100644 vendor/github.com/stretchr/testify/mock/mock_test.go delete mode 100644 vendor/github.com/stretchr/testify/package_test.go delete mode 100644 vendor/github.com/stretchr/testify/require/doc.go delete mode 100644 vendor/github.com/stretchr/testify/require/forward_requirements.go delete mode 100644 vendor/github.com/stretchr/testify/require/forward_requirements_test.go delete mode 100644 vendor/github.com/stretchr/testify/require/require.go delete mode 100644 vendor/github.com/stretchr/testify/require/require.go.tmpl delete mode 100644 vendor/github.com/stretchr/testify/require/require_forward.go delete mode 100644 vendor/github.com/stretchr/testify/require/require_forward.go.tmpl delete mode 100644 vendor/github.com/stretchr/testify/require/requirements.go delete mode 100644 vendor/github.com/stretchr/testify/require/requirements_test.go delete mode 100644 vendor/github.com/stretchr/testify/suite/doc.go delete mode 100644 vendor/github.com/stretchr/testify/suite/interfaces.go delete mode 100644 vendor/github.com/stretchr/testify/suite/suite.go delete mode 100644 vendor/github.com/stretchr/testify/suite/suite_test.go delete mode 100644 vendor/github.com/stretchr/testify/vendor/github.com/davecgh/go-spew/LICENSE delete mode 100644 vendor/github.com/stretchr/testify/vendor/github.com/davecgh/go-spew/spew/bypass.go delete mode 100644 vendor/github.com/stretchr/testify/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go delete mode 100644 vendor/github.com/stretchr/testify/vendor/github.com/davecgh/go-spew/spew/common.go delete mode 100644 vendor/github.com/stretchr/testify/vendor/github.com/davecgh/go-spew/spew/config.go delete mode 100644 vendor/github.com/stretchr/testify/vendor/github.com/davecgh/go-spew/spew/doc.go delete mode 100644 vendor/github.com/stretchr/testify/vendor/github.com/davecgh/go-spew/spew/dump.go delete mode 100644 vendor/github.com/stretchr/testify/vendor/github.com/davecgh/go-spew/spew/format.go delete mode 100644 vendor/github.com/stretchr/testify/vendor/github.com/davecgh/go-spew/spew/spew.go delete mode 100644 vendor/github.com/stretchr/testify/vendor/github.com/pmezard/go-difflib/LICENSE delete mode 100644 vendor/github.com/stretchr/testify/vendor/github.com/pmezard/go-difflib/difflib/difflib.go delete mode 100644 vendor/github.com/stretchr/testify/vendor/github.com/stretchr/objx/.gitignore delete mode 100644 vendor/github.com/stretchr/testify/vendor/github.com/stretchr/objx/LICENSE.md delete mode 100644 vendor/github.com/stretchr/testify/vendor/github.com/stretchr/objx/README.md delete mode 100644 vendor/github.com/stretchr/testify/vendor/github.com/stretchr/objx/accessors.go delete mode 100644 vendor/github.com/stretchr/testify/vendor/github.com/stretchr/objx/codegen/array-access.txt delete mode 100644 vendor/github.com/stretchr/testify/vendor/github.com/stretchr/objx/codegen/index.html delete mode 100644 vendor/github.com/stretchr/testify/vendor/github.com/stretchr/objx/codegen/template.txt delete mode 100644 vendor/github.com/stretchr/testify/vendor/github.com/stretchr/objx/codegen/types_list.txt delete mode 100644 vendor/github.com/stretchr/testify/vendor/github.com/stretchr/objx/constants.go delete mode 100644 vendor/github.com/stretchr/testify/vendor/github.com/stretchr/objx/conversions.go delete mode 100644 vendor/github.com/stretchr/testify/vendor/github.com/stretchr/objx/doc.go delete mode 100644 vendor/github.com/stretchr/testify/vendor/github.com/stretchr/objx/map.go delete mode 100644 vendor/github.com/stretchr/testify/vendor/github.com/stretchr/objx/mutations.go delete mode 100644 vendor/github.com/stretchr/testify/vendor/github.com/stretchr/objx/security.go delete mode 100644 vendor/github.com/stretchr/testify/vendor/github.com/stretchr/objx/tests.go delete mode 100644 vendor/github.com/stretchr/testify/vendor/github.com/stretchr/objx/type_specific_codegen.go delete mode 100644 vendor/github.com/stretchr/testify/vendor/github.com/stretchr/objx/value.go diff --git a/vendor/github.com/davecgh/go-spew/.gitignore b/vendor/github.com/davecgh/go-spew/.gitignore deleted file mode 100644 index 00268614..00000000 --- a/vendor/github.com/davecgh/go-spew/.gitignore +++ /dev/null @@ -1,22 +0,0 @@ -# Compiled Object files, Static and Dynamic libs (Shared Objects) -*.o -*.a -*.so - -# Folders -_obj -_test - -# Architecture specific extensions/prefixes -*.[568vq] -[568vq].out - -*.cgo1.go -*.cgo2.c -_cgo_defun.c -_cgo_gotypes.go -_cgo_export.* - -_testmain.go - -*.exe diff --git a/vendor/github.com/davecgh/go-spew/.travis.yml b/vendor/github.com/davecgh/go-spew/.travis.yml deleted file mode 100644 index 10f469a2..00000000 --- a/vendor/github.com/davecgh/go-spew/.travis.yml +++ /dev/null @@ -1,11 +0,0 @@ -language: go -go: 1.2 -install: - - go get -v code.google.com/p/go.tools/cmd/cover -script: - - go test -v -tags=disableunsafe ./spew - - go test -v -tags=testcgo ./spew -covermode=count -coverprofile=profile.cov -after_success: - - go get -v github.com/mattn/goveralls - - export PATH=$PATH:$HOME/gopath/bin - - goveralls -coverprofile=profile.cov -service=travis-ci diff --git a/vendor/github.com/davecgh/go-spew/LICENSE b/vendor/github.com/davecgh/go-spew/LICENSE index 2a7cfd2b..bc52e96f 100644 --- a/vendor/github.com/davecgh/go-spew/LICENSE +++ b/vendor/github.com/davecgh/go-spew/LICENSE @@ -1,6 +1,8 @@ -Copyright (c) 2012-2013 Dave Collins +ISC License -Permission to use, copy, modify, and distribute this software for any +Copyright (c) 2012-2016 Dave Collins + +Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. diff --git a/vendor/github.com/davecgh/go-spew/README.md b/vendor/github.com/davecgh/go-spew/README.md deleted file mode 100644 index 777a8e1d..00000000 --- a/vendor/github.com/davecgh/go-spew/README.md +++ /dev/null @@ -1,194 +0,0 @@ -go-spew -======= - -[![Build Status](https://travis-ci.org/davecgh/go-spew.png?branch=master)] -(https://travis-ci.org/davecgh/go-spew) [![Coverage Status] -(https://coveralls.io/repos/davecgh/go-spew/badge.png?branch=master)] -(https://coveralls.io/r/davecgh/go-spew?branch=master) - -Go-spew implements a deep pretty printer for Go data structures to aid in -debugging. A comprehensive suite of tests with 100% test coverage is provided -to ensure proper functionality. See `test_coverage.txt` for the gocov coverage -report. Go-spew is licensed under the liberal ISC license, so it may be used in -open source or commercial projects. - -If you're interested in reading about how this package came to life and some -of the challenges involved in providing a deep pretty printer, there is a blog -post about it -[here](https://blog.cyphertite.com/go-spew-a-journey-into-dumping-go-data-structures/). - -## Documentation - -[![GoDoc](https://godoc.org/github.com/davecgh/go-spew/spew?status.png)] -(http://godoc.org/github.com/davecgh/go-spew/spew) - -Full `go doc` style documentation for the project can be viewed online without -installing this package by using the excellent GoDoc site here: -http://godoc.org/github.com/davecgh/go-spew/spew - -You can also view the documentation locally once the package is installed with -the `godoc` tool by running `godoc -http=":6060"` and pointing your browser to -http://localhost:6060/pkg/github.com/davecgh/go-spew/spew - -## Installation - -```bash -$ go get -u github.com/davecgh/go-spew/spew -``` - -## Quick Start - -Add this import line to the file you're working in: - -```Go -import "github.com/davecgh/go-spew/spew" -``` - -To dump a variable with full newlines, indentation, type, and pointer -information use Dump, Fdump, or Sdump: - -```Go -spew.Dump(myVar1, myVar2, ...) -spew.Fdump(someWriter, myVar1, myVar2, ...) -str := spew.Sdump(myVar1, myVar2, ...) -``` - -Alternatively, if you would prefer to use format strings with a compacted inline -printing style, use the convenience wrappers Printf, Fprintf, etc with %v (most -compact), %+v (adds pointer addresses), %#v (adds types), or %#+v (adds types -and pointer addresses): - -```Go -spew.Printf("myVar1: %v -- myVar2: %+v", myVar1, myVar2) -spew.Printf("myVar3: %#v -- myVar4: %#+v", myVar3, myVar4) -spew.Fprintf(someWriter, "myVar1: %v -- myVar2: %+v", myVar1, myVar2) -spew.Fprintf(someWriter, "myVar3: %#v -- myVar4: %#+v", myVar3, myVar4) -``` - -## Debugging a Web Application Example - -Here is an example of how you can use `spew.Sdump()` to help debug a web application. Please be sure to wrap your output using the `html.EscapeString()` function for safety reasons. You should also only use this debugging technique in a development environment, never in production. - -```Go -package main - -import ( - "fmt" - "html" - "net/http" - - "github.com/davecgh/go-spew/spew" -) - -func handler(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "text/html") - fmt.Fprintf(w, "Hi there, %s!", r.URL.Path[1:]) - fmt.Fprintf(w, "") -} - -func main() { - http.HandleFunc("/", handler) - http.ListenAndServe(":8080", nil) -} -``` - -## Sample Dump Output - -``` -(main.Foo) { - unexportedField: (*main.Bar)(0xf84002e210)({ - flag: (main.Flag) flagTwo, - data: (uintptr) - }), - ExportedField: (map[interface {}]interface {}) { - (string) "one": (bool) true - } -} -([]uint8) { - 00000000 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 |............... | - 00000010 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 |!"#$%&'()*+,-./0| - 00000020 31 32 |12| -} -``` - -## Sample Formatter Output - -Double pointer to a uint8: -``` - %v: <**>5 - %+v: <**>(0xf8400420d0->0xf8400420c8)5 - %#v: (**uint8)5 - %#+v: (**uint8)(0xf8400420d0->0xf8400420c8)5 -``` - -Pointer to circular struct with a uint8 field and a pointer to itself: -``` - %v: <*>{1 <*>} - %+v: <*>(0xf84003e260){ui8:1 c:<*>(0xf84003e260)} - %#v: (*main.circular){ui8:(uint8)1 c:(*main.circular)} - %#+v: (*main.circular)(0xf84003e260){ui8:(uint8)1 c:(*main.circular)(0xf84003e260)} -``` - -## Configuration Options - -Configuration of spew is handled by fields in the ConfigState type. For -convenience, all of the top-level functions use a global state available via the -spew.Config global. - -It is also possible to create a ConfigState instance that provides methods -equivalent to the top-level functions. This allows concurrent configuration -options. See the ConfigState documentation for more details. - -``` -* Indent - String to use for each indentation level for Dump functions. - It is a single space by default. A popular alternative is "\t". - -* MaxDepth - Maximum number of levels to descend into nested data structures. - There is no limit by default. - -* DisableMethods - Disables invocation of error and Stringer interface methods. - Method invocation is enabled by default. - -* DisablePointerMethods - Disables invocation of error and Stringer interface methods on types - which only accept pointer receivers from non-pointer variables. This option - relies on access to the unsafe package, so it will not have any effect when - running in environments without access to the unsafe package such as Google - App Engine or with the "disableunsafe" build tag specified. - Pointer method invocation is enabled by default. - -* ContinueOnMethod - Enables recursion into types after invoking error and Stringer interface - methods. Recursion after method invocation is disabled by default. - -* SortKeys - Specifies map keys should be sorted before being printed. Use - this to have a more deterministic, diffable output. Note that - only native types (bool, int, uint, floats, uintptr and string) - and types which implement error or Stringer interfaces are supported, - with other types sorted according to the reflect.Value.String() output - which guarantees display stability. Natural map order is used by - default. - -* SpewKeys - SpewKeys specifies that, as a last resort attempt, map keys should be - spewed to strings and sorted by those strings. This is only considered - if SortKeys is true. - -``` - -## Unsafe Package Dependency - -This package relies on the unsafe package to perform some of the more advanced -features, however it also supports a "limited" mode which allows it to work in -environments where the unsafe package is not available. By default, it will -operate in this mode on Google App Engine. The "disableunsafe" build tag may -also be specified to force the package to build without using the unsafe -package. - -## License - -Go-spew is licensed under the liberal ISC License. diff --git a/vendor/github.com/davecgh/go-spew/cov_report.sh b/vendor/github.com/davecgh/go-spew/cov_report.sh deleted file mode 100644 index 9579497e..00000000 --- a/vendor/github.com/davecgh/go-spew/cov_report.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh - -# This script uses gocov to generate a test coverage report. -# The gocov tool my be obtained with the following command: -# go get github.com/axw/gocov/gocov -# -# It will be installed to $GOPATH/bin, so ensure that location is in your $PATH. - -# Check for gocov. -if ! type gocov >/dev/null 2>&1; then - echo >&2 "This script requires the gocov tool." - echo >&2 "You may obtain it with the following command:" - echo >&2 "go get github.com/axw/gocov/gocov" - exit 1 -fi - -# Only run the cgo tests if gcc is installed. -if type gcc >/dev/null 2>&1; then - (cd spew && gocov test -tags testcgo | gocov report) -else - (cd spew && gocov test | gocov report) -fi diff --git a/vendor/github.com/davecgh/go-spew/spew/bypass.go b/vendor/github.com/davecgh/go-spew/spew/bypass.go index 565bf589..79299478 100644 --- a/vendor/github.com/davecgh/go-spew/spew/bypass.go +++ b/vendor/github.com/davecgh/go-spew/spew/bypass.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Dave Collins +// Copyright (c) 2015-2016 Dave Collins // // Permission to use, copy, modify, and distribute this software for any // purpose with or without fee is hereby granted, provided that the above @@ -13,9 +13,12 @@ // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. // NOTE: Due to the following build constraints, this file will only be compiled -// when the code is not running on Google App Engine and "-tags disableunsafe" -// is not added to the go build command line. -// +build !appengine,!disableunsafe +// when the code is not running on Google App Engine, compiled by GopherJS, and +// "-tags safe" is not added to the go build command line. The "disableunsafe" +// tag is deprecated and thus should not be used. +// Go versions prior to 1.4 are disabled because they use a different layout +// for interfaces which make the implementation of unsafeReflectValue more complex. +// +build !js,!appengine,!safe,!disableunsafe,go1.4 package spew @@ -33,80 +36,49 @@ const ( ptrSize = unsafe.Sizeof((*byte)(nil)) ) +type flag uintptr + var ( - // offsetPtr, offsetScalar, and offsetFlag are the offsets for the - // internal reflect.Value fields. These values are valid before golang - // commit ecccf07e7f9d which changed the format. The are also valid - // after commit 82f48826c6c7 which changed the format again to mirror - // the original format. Code in the init function updates these offsets - // as necessary. - offsetPtr = uintptr(ptrSize) - offsetScalar = uintptr(0) - offsetFlag = uintptr(ptrSize * 2) - - // flagKindWidth and flagKindShift indicate various bits that the - // reflect package uses internally to track kind information. - // - // flagRO indicates whether or not the value field of a reflect.Value is - // read-only. - // - // flagIndir indicates whether the value field of a reflect.Value is - // the actual data or a pointer to the data. - // - // These values are valid before golang commit 90a7c3c86944 which - // changed their positions. Code in the init function updates these - // flags as necessary. - flagKindWidth = uintptr(5) - flagKindShift = uintptr(flagKindWidth - 1) - flagRO = uintptr(1 << 0) - flagIndir = uintptr(1 << 1) + // flagRO indicates whether the value field of a reflect.Value + // is read-only. + flagRO flag + + // flagAddr indicates whether the address of the reflect.Value's + // value may be taken. + flagAddr flag ) -func init() { - // Older versions of reflect.Value stored small integers directly in the - // ptr field (which is named val in the older versions). Versions - // between commits ecccf07e7f9d and 82f48826c6c7 added a new field named - // scalar for this purpose which unfortunately came before the flag - // field, so the offset of the flag field is different for those - // versions. - // - // This code constructs a new reflect.Value from a known small integer - // and checks if the size of the reflect.Value struct indicates it has - // the scalar field. When it does, the offsets are updated accordingly. - vv := reflect.ValueOf(0xf00) - if unsafe.Sizeof(vv) == (ptrSize * 4) { - offsetScalar = ptrSize * 2 - offsetFlag = ptrSize * 3 - } +// flagKindMask holds the bits that make up the kind +// part of the flags field. In all the supported versions, +// it is in the lower 5 bits. +const flagKindMask = flag(0x1f) - // Commit 90a7c3c86944 changed the flag positions such that the low - // order bits are the kind. This code extracts the kind from the flags - // field and ensures it's the correct type. When it's not, the flag - // order has been changed to the newer format, so the flags are updated - // accordingly. - upf := unsafe.Pointer(uintptr(unsafe.Pointer(&vv)) + offsetFlag) - upfv := *(*uintptr)(upf) - flagKindMask := uintptr((1<>flagKindShift != uintptr(reflect.Int) { - flagKindShift = 0 - flagRO = 1 << 5 - flagIndir = 1 << 6 - - // Commit adf9b30e5594 modified the flags to separate the - // flagRO flag into two bits which specifies whether or not the - // field is embedded. This causes flagIndir to move over a bit - // and means that flagRO is the combination of either of the - // original flagRO bit and the new bit. - // - // This code detects the change by extracting what used to be - // the indirect bit to ensure it's set. When it's not, the flag - // order has been changed to the newer format, so the flags are - // updated accordingly. - if upfv&flagIndir == 0 { - flagRO = 3 << 5 - flagIndir = 1 << 7 - } +// Different versions of Go have used different +// bit layouts for the flags type. This table +// records the known combinations. +var okFlags = []struct { + ro, addr flag +}{{ + // From Go 1.4 to 1.5 + ro: 1 << 5, + addr: 1 << 7, +}, { + // Up to Go tip. + ro: 1<<5 | 1<<6, + addr: 1 << 8, +}} + +var flagValOffset = func() uintptr { + field, ok := reflect.TypeOf(reflect.Value{}).FieldByName("flag") + if !ok { + panic("reflect.Value has no flag field") } + return field.Offset +}() + +// flagField returns a pointer to the flag field of a reflect.Value. +func flagField(v *reflect.Value) *flag { + return (*flag)(unsafe.Pointer(uintptr(unsafe.Pointer(v)) + flagValOffset)) } // unsafeReflectValue converts the passed reflect.Value into a one that bypasses @@ -118,34 +90,56 @@ func init() { // This allows us to check for implementations of the Stringer and error // interfaces to be used for pretty printing ordinarily unaddressable and // inaccessible values such as unexported struct fields. -func unsafeReflectValue(v reflect.Value) (rv reflect.Value) { - indirects := 1 - vt := v.Type() - upv := unsafe.Pointer(uintptr(unsafe.Pointer(&v)) + offsetPtr) - rvf := *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&v)) + offsetFlag)) - if rvf&flagIndir != 0 { - vt = reflect.PtrTo(v.Type()) - indirects++ - } else if offsetScalar != 0 { - // The value is in the scalar field when it's not one of the - // reference types. - switch vt.Kind() { - case reflect.Uintptr: - case reflect.Chan: - case reflect.Func: - case reflect.Map: - case reflect.Ptr: - case reflect.UnsafePointer: - default: - upv = unsafe.Pointer(uintptr(unsafe.Pointer(&v)) + - offsetScalar) - } +func unsafeReflectValue(v reflect.Value) reflect.Value { + if !v.IsValid() || (v.CanInterface() && v.CanAddr()) { + return v } + flagFieldPtr := flagField(&v) + *flagFieldPtr &^= flagRO + *flagFieldPtr |= flagAddr + return v +} - pv := reflect.NewAt(vt, upv) - rv = pv - for i := 0; i < indirects; i++ { - rv = rv.Elem() +// Sanity checks against future reflect package changes +// to the type or semantics of the Value.flag field. +func init() { + field, ok := reflect.TypeOf(reflect.Value{}).FieldByName("flag") + if !ok { + panic("reflect.Value has no flag field") + } + if field.Type.Kind() != reflect.TypeOf(flag(0)).Kind() { + panic("reflect.Value flag field has changed kind") + } + type t0 int + var t struct { + A t0 + // t0 will have flagEmbedRO set. + t0 + // a will have flagStickyRO set + a t0 + } + vA := reflect.ValueOf(t).FieldByName("A") + va := reflect.ValueOf(t).FieldByName("a") + vt0 := reflect.ValueOf(t).FieldByName("t0") + + // Infer flagRO from the difference between the flags + // for the (otherwise identical) fields in t. + flagPublic := *flagField(&vA) + flagWithRO := *flagField(&va) | *flagField(&vt0) + flagRO = flagPublic ^ flagWithRO + + // Infer flagAddr from the difference between a value + // taken from a pointer and not. + vPtrA := reflect.ValueOf(&t).Elem().FieldByName("A") + flagNoPtr := *flagField(&vA) + flagPtr := *flagField(&vPtrA) + flagAddr = flagNoPtr ^ flagPtr + + // Check that the inferred flags tally with one of the known versions. + for _, f := range okFlags { + if flagRO == f.ro && flagAddr == f.addr { + return + } } - return rv + panic("reflect.Value read-only flag has changed semantics") } diff --git a/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go b/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go index 457e4123..205c28d6 100644 --- a/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go +++ b/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Dave Collins +// Copyright (c) 2015-2016 Dave Collins // // Permission to use, copy, modify, and distribute this software for any // purpose with or without fee is hereby granted, provided that the above @@ -13,9 +13,10 @@ // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. // NOTE: Due to the following build constraints, this file will only be compiled -// when either the code is running on Google App Engine or "-tags disableunsafe" -// is added to the go build command line. -// +build appengine disableunsafe +// when the code is running on Google App Engine, compiled by GopherJS, or +// "-tags safe" is added to the go build command line. The "disableunsafe" +// tag is deprecated and thus should not be used. +// +build js appengine safe disableunsafe !go1.4 package spew diff --git a/vendor/github.com/davecgh/go-spew/spew/common.go b/vendor/github.com/davecgh/go-spew/spew/common.go index 14f02dc1..1be8ce94 100644 --- a/vendor/github.com/davecgh/go-spew/spew/common.go +++ b/vendor/github.com/davecgh/go-spew/spew/common.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 Dave Collins + * Copyright (c) 2013-2016 Dave Collins * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -180,7 +180,7 @@ func printComplex(w io.Writer, c complex128, floatPrecision int) { w.Write(closeParenBytes) } -// printHexPtr outputs a uintptr formatted as hexidecimal with a leading '0x' +// printHexPtr outputs a uintptr formatted as hexadecimal with a leading '0x' // prefix to Writer w. func printHexPtr(w io.Writer, p uintptr) { // Null pointer. diff --git a/vendor/github.com/davecgh/go-spew/spew/common_test.go b/vendor/github.com/davecgh/go-spew/spew/common_test.go deleted file mode 100644 index 39b7525b..00000000 --- a/vendor/github.com/davecgh/go-spew/spew/common_test.go +++ /dev/null @@ -1,298 +0,0 @@ -/* - * Copyright (c) 2013 Dave Collins - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -package spew_test - -import ( - "fmt" - "reflect" - "testing" - - "github.com/davecgh/go-spew/spew" -) - -// custom type to test Stinger interface on non-pointer receiver. -type stringer string - -// String implements the Stringer interface for testing invocation of custom -// stringers on types with non-pointer receivers. -func (s stringer) String() string { - return "stringer " + string(s) -} - -// custom type to test Stinger interface on pointer receiver. -type pstringer string - -// String implements the Stringer interface for testing invocation of custom -// stringers on types with only pointer receivers. -func (s *pstringer) String() string { - return "stringer " + string(*s) -} - -// xref1 and xref2 are cross referencing structs for testing circular reference -// detection. -type xref1 struct { - ps2 *xref2 -} -type xref2 struct { - ps1 *xref1 -} - -// indirCir1, indirCir2, and indirCir3 are used to generate an indirect circular -// reference for testing detection. -type indirCir1 struct { - ps2 *indirCir2 -} -type indirCir2 struct { - ps3 *indirCir3 -} -type indirCir3 struct { - ps1 *indirCir1 -} - -// embed is used to test embedded structures. -type embed struct { - a string -} - -// embedwrap is used to test embedded structures. -type embedwrap struct { - *embed - e *embed -} - -// panicer is used to intentionally cause a panic for testing spew properly -// handles them -type panicer int - -func (p panicer) String() string { - panic("test panic") -} - -// customError is used to test custom error interface invocation. -type customError int - -func (e customError) Error() string { - return fmt.Sprintf("error: %d", int(e)) -} - -// stringizeWants converts a slice of wanted test output into a format suitable -// for a test error message. -func stringizeWants(wants []string) string { - s := "" - for i, want := range wants { - if i > 0 { - s += fmt.Sprintf("want%d: %s", i+1, want) - } else { - s += "want: " + want - } - } - return s -} - -// testFailed returns whether or not a test failed by checking if the result -// of the test is in the slice of wanted strings. -func testFailed(result string, wants []string) bool { - for _, want := range wants { - if result == want { - return false - } - } - return true -} - -type sortableStruct struct { - x int -} - -func (ss sortableStruct) String() string { - return fmt.Sprintf("ss.%d", ss.x) -} - -type unsortableStruct struct { - x int -} - -type sortTestCase struct { - input []reflect.Value - expected []reflect.Value -} - -func helpTestSortValues(tests []sortTestCase, cs *spew.ConfigState, t *testing.T) { - getInterfaces := func(values []reflect.Value) []interface{} { - interfaces := []interface{}{} - for _, v := range values { - interfaces = append(interfaces, v.Interface()) - } - return interfaces - } - - for _, test := range tests { - spew.SortValues(test.input, cs) - // reflect.DeepEqual cannot really make sense of reflect.Value, - // probably because of all the pointer tricks. For instance, - // v(2.0) != v(2.0) on a 32-bits system. Turn them into interface{} - // instead. - input := getInterfaces(test.input) - expected := getInterfaces(test.expected) - if !reflect.DeepEqual(input, expected) { - t.Errorf("Sort mismatch:\n %v != %v", input, expected) - } - } -} - -// TestSortValues ensures the sort functionality for relect.Value based sorting -// works as intended. -func TestSortValues(t *testing.T) { - v := reflect.ValueOf - - a := v("a") - b := v("b") - c := v("c") - embedA := v(embed{"a"}) - embedB := v(embed{"b"}) - embedC := v(embed{"c"}) - tests := []sortTestCase{ - // No values. - { - []reflect.Value{}, - []reflect.Value{}, - }, - // Bools. - { - []reflect.Value{v(false), v(true), v(false)}, - []reflect.Value{v(false), v(false), v(true)}, - }, - // Ints. - { - []reflect.Value{v(2), v(1), v(3)}, - []reflect.Value{v(1), v(2), v(3)}, - }, - // Uints. - { - []reflect.Value{v(uint8(2)), v(uint8(1)), v(uint8(3))}, - []reflect.Value{v(uint8(1)), v(uint8(2)), v(uint8(3))}, - }, - // Floats. - { - []reflect.Value{v(2.0), v(1.0), v(3.0)}, - []reflect.Value{v(1.0), v(2.0), v(3.0)}, - }, - // Strings. - { - []reflect.Value{b, a, c}, - []reflect.Value{a, b, c}, - }, - // Array - { - []reflect.Value{v([3]int{3, 2, 1}), v([3]int{1, 3, 2}), v([3]int{1, 2, 3})}, - []reflect.Value{v([3]int{1, 2, 3}), v([3]int{1, 3, 2}), v([3]int{3, 2, 1})}, - }, - // Uintptrs. - { - []reflect.Value{v(uintptr(2)), v(uintptr(1)), v(uintptr(3))}, - []reflect.Value{v(uintptr(1)), v(uintptr(2)), v(uintptr(3))}, - }, - // SortableStructs. - { - // Note: not sorted - DisableMethods is set. - []reflect.Value{v(sortableStruct{2}), v(sortableStruct{1}), v(sortableStruct{3})}, - []reflect.Value{v(sortableStruct{2}), v(sortableStruct{1}), v(sortableStruct{3})}, - }, - // UnsortableStructs. - { - // Note: not sorted - SpewKeys is false. - []reflect.Value{v(unsortableStruct{2}), v(unsortableStruct{1}), v(unsortableStruct{3})}, - []reflect.Value{v(unsortableStruct{2}), v(unsortableStruct{1}), v(unsortableStruct{3})}, - }, - // Invalid. - { - []reflect.Value{embedB, embedA, embedC}, - []reflect.Value{embedB, embedA, embedC}, - }, - } - cs := spew.ConfigState{DisableMethods: true, SpewKeys: false} - helpTestSortValues(tests, &cs, t) -} - -// TestSortValuesWithMethods ensures the sort functionality for relect.Value -// based sorting works as intended when using string methods. -func TestSortValuesWithMethods(t *testing.T) { - v := reflect.ValueOf - - a := v("a") - b := v("b") - c := v("c") - tests := []sortTestCase{ - // Ints. - { - []reflect.Value{v(2), v(1), v(3)}, - []reflect.Value{v(1), v(2), v(3)}, - }, - // Strings. - { - []reflect.Value{b, a, c}, - []reflect.Value{a, b, c}, - }, - // SortableStructs. - { - []reflect.Value{v(sortableStruct{2}), v(sortableStruct{1}), v(sortableStruct{3})}, - []reflect.Value{v(sortableStruct{1}), v(sortableStruct{2}), v(sortableStruct{3})}, - }, - // UnsortableStructs. - { - // Note: not sorted - SpewKeys is false. - []reflect.Value{v(unsortableStruct{2}), v(unsortableStruct{1}), v(unsortableStruct{3})}, - []reflect.Value{v(unsortableStruct{2}), v(unsortableStruct{1}), v(unsortableStruct{3})}, - }, - } - cs := spew.ConfigState{DisableMethods: false, SpewKeys: false} - helpTestSortValues(tests, &cs, t) -} - -// TestSortValuesWithSpew ensures the sort functionality for relect.Value -// based sorting works as intended when using spew to stringify keys. -func TestSortValuesWithSpew(t *testing.T) { - v := reflect.ValueOf - - a := v("a") - b := v("b") - c := v("c") - tests := []sortTestCase{ - // Ints. - { - []reflect.Value{v(2), v(1), v(3)}, - []reflect.Value{v(1), v(2), v(3)}, - }, - // Strings. - { - []reflect.Value{b, a, c}, - []reflect.Value{a, b, c}, - }, - // SortableStructs. - { - []reflect.Value{v(sortableStruct{2}), v(sortableStruct{1}), v(sortableStruct{3})}, - []reflect.Value{v(sortableStruct{1}), v(sortableStruct{2}), v(sortableStruct{3})}, - }, - // UnsortableStructs. - { - []reflect.Value{v(unsortableStruct{2}), v(unsortableStruct{1}), v(unsortableStruct{3})}, - []reflect.Value{v(unsortableStruct{1}), v(unsortableStruct{2}), v(unsortableStruct{3})}, - }, - } - cs := spew.ConfigState{DisableMethods: true, SpewKeys: true} - helpTestSortValues(tests, &cs, t) -} diff --git a/vendor/github.com/davecgh/go-spew/spew/config.go b/vendor/github.com/davecgh/go-spew/spew/config.go index ee1ab07b..2e3d22f3 100644 --- a/vendor/github.com/davecgh/go-spew/spew/config.go +++ b/vendor/github.com/davecgh/go-spew/spew/config.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 Dave Collins + * Copyright (c) 2013-2016 Dave Collins * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -64,9 +64,18 @@ type ConfigState struct { // inside these interface methods. As a result, this option relies on // access to the unsafe package, so it will not have any effect when // running in environments without access to the unsafe package such as - // Google App Engine or with the "disableunsafe" build tag specified. + // Google App Engine or with the "safe" build tag specified. DisablePointerMethods bool + // DisablePointerAddresses specifies whether to disable the printing of + // pointer addresses. This is useful when diffing data structures in tests. + DisablePointerAddresses bool + + // DisableCapacities specifies whether to disable the printing of capacities + // for arrays, slices, maps and channels. This is useful when diffing + // data structures in tests. + DisableCapacities bool + // ContinueOnMethod specifies whether or not recursion should continue once // a custom error or Stringer interface is invoked. The default, false, // means it will print the results of invoking the custom error or Stringer diff --git a/vendor/github.com/davecgh/go-spew/spew/doc.go b/vendor/github.com/davecgh/go-spew/spew/doc.go index 5be0c406..aacaac6f 100644 --- a/vendor/github.com/davecgh/go-spew/spew/doc.go +++ b/vendor/github.com/davecgh/go-spew/spew/doc.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 Dave Collins + * Copyright (c) 2013-2016 Dave Collins * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -91,6 +91,15 @@ The following configuration options are available: which only accept pointer receivers from non-pointer variables. Pointer method invocation is enabled by default. + * DisablePointerAddresses + DisablePointerAddresses specifies whether to disable the printing of + pointer addresses. This is useful when diffing data structures in tests. + + * DisableCapacities + DisableCapacities specifies whether to disable the printing of + capacities for arrays, slices, maps and channels. This is useful when + diffing data structures in tests. + * ContinueOnMethod Enables recursion into types after invoking error and Stringer interface methods. Recursion after method invocation is disabled by default. diff --git a/vendor/github.com/davecgh/go-spew/spew/dump.go b/vendor/github.com/davecgh/go-spew/spew/dump.go index a0ff95e2..f78d89fc 100644 --- a/vendor/github.com/davecgh/go-spew/spew/dump.go +++ b/vendor/github.com/davecgh/go-spew/spew/dump.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 Dave Collins + * Copyright (c) 2013-2016 Dave Collins * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -35,16 +35,16 @@ var ( // cCharRE is a regular expression that matches a cgo char. // It is used to detect character arrays to hexdump them. - cCharRE = regexp.MustCompile("^.*\\._Ctype_char$") + cCharRE = regexp.MustCompile(`^.*\._Ctype_char$`) // cUnsignedCharRE is a regular expression that matches a cgo unsigned // char. It is used to detect unsigned character arrays to hexdump // them. - cUnsignedCharRE = regexp.MustCompile("^.*\\._Ctype_unsignedchar$") + cUnsignedCharRE = regexp.MustCompile(`^.*\._Ctype_unsignedchar$`) // cUint8tCharRE is a regular expression that matches a cgo uint8_t. // It is used to detect uint8_t arrays to hexdump them. - cUint8tCharRE = regexp.MustCompile("^.*\\._Ctype_uint8_t$") + cUint8tCharRE = regexp.MustCompile(`^.*\._Ctype_uint8_t$`) ) // dumpState contains information about the state of a dump operation. @@ -129,7 +129,7 @@ func (d *dumpState) dumpPtr(v reflect.Value) { d.w.Write(closeParenBytes) // Display pointer information. - if len(pointerChain) > 0 { + if !d.cs.DisablePointerAddresses && len(pointerChain) > 0 { d.w.Write(openParenBytes) for i, addr := range pointerChain { if i > 0 { @@ -143,10 +143,10 @@ func (d *dumpState) dumpPtr(v reflect.Value) { // Display dereferenced value. d.w.Write(openParenBytes) switch { - case nilFound == true: + case nilFound: d.w.Write(nilAngleBytes) - case cycleFound == true: + case cycleFound: d.w.Write(circularBytes) default: @@ -282,13 +282,13 @@ func (d *dumpState) dump(v reflect.Value) { case reflect.Map, reflect.String: valueLen = v.Len() } - if valueLen != 0 || valueCap != 0 { + if valueLen != 0 || !d.cs.DisableCapacities && valueCap != 0 { d.w.Write(openParenBytes) if valueLen != 0 { d.w.Write(lenEqualsBytes) printInt(d.w, int64(valueLen), 10) } - if valueCap != 0 { + if !d.cs.DisableCapacities && valueCap != 0 { if valueLen != 0 { d.w.Write(spaceBytes) } diff --git a/vendor/github.com/davecgh/go-spew/spew/dump_test.go b/vendor/github.com/davecgh/go-spew/spew/dump_test.go deleted file mode 100644 index 2b320401..00000000 --- a/vendor/github.com/davecgh/go-spew/spew/dump_test.go +++ /dev/null @@ -1,1042 +0,0 @@ -/* - * Copyright (c) 2013 Dave Collins - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -/* -Test Summary: -NOTE: For each test, a nil pointer, a single pointer and double pointer to the -base test element are also tested to ensure proper indirection across all types. - -- Max int8, int16, int32, int64, int -- Max uint8, uint16, uint32, uint64, uint -- Boolean true and false -- Standard complex64 and complex128 -- Array containing standard ints -- Array containing type with custom formatter on pointer receiver only -- Array containing interfaces -- Array containing bytes -- Slice containing standard float32 values -- Slice containing type with custom formatter on pointer receiver only -- Slice containing interfaces -- Slice containing bytes -- Nil slice -- Standard string -- Nil interface -- Sub-interface -- Map with string keys and int vals -- Map with custom formatter type on pointer receiver only keys and vals -- Map with interface keys and values -- Map with nil interface value -- Struct with primitives -- Struct that contains another struct -- Struct that contains custom type with Stringer pointer interface via both - exported and unexported fields -- Struct that contains embedded struct and field to same struct -- Uintptr to 0 (null pointer) -- Uintptr address of real variable -- Unsafe.Pointer to 0 (null pointer) -- Unsafe.Pointer to address of real variable -- Nil channel -- Standard int channel -- Function with no params and no returns -- Function with param and no returns -- Function with multiple params and multiple returns -- Struct that is circular through self referencing -- Structs that are circular through cross referencing -- Structs that are indirectly circular -- Type that panics in its Stringer interface -*/ - -package spew_test - -import ( - "bytes" - "fmt" - "testing" - "unsafe" - - "github.com/davecgh/go-spew/spew" -) - -// dumpTest is used to describe a test to be perfomed against the Dump method. -type dumpTest struct { - in interface{} - wants []string -} - -// dumpTests houses all of the tests to be performed against the Dump method. -var dumpTests = make([]dumpTest, 0) - -// addDumpTest is a helper method to append the passed input and desired result -// to dumpTests -func addDumpTest(in interface{}, wants ...string) { - test := dumpTest{in, wants} - dumpTests = append(dumpTests, test) -} - -func addIntDumpTests() { - // Max int8. - v := int8(127) - nv := (*int8)(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "int8" - vs := "127" - addDumpTest(v, "("+vt+") "+vs+"\n") - addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs+")\n") - addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n") - addDumpTest(nv, "(*"+vt+")()\n") - - // Max int16. - v2 := int16(32767) - nv2 := (*int16)(nil) - pv2 := &v2 - v2Addr := fmt.Sprintf("%p", pv2) - pv2Addr := fmt.Sprintf("%p", &pv2) - v2t := "int16" - v2s := "32767" - addDumpTest(v2, "("+v2t+") "+v2s+"\n") - addDumpTest(pv2, "(*"+v2t+")("+v2Addr+")("+v2s+")\n") - addDumpTest(&pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")("+v2s+")\n") - addDumpTest(nv2, "(*"+v2t+")()\n") - - // Max int32. - v3 := int32(2147483647) - nv3 := (*int32)(nil) - pv3 := &v3 - v3Addr := fmt.Sprintf("%p", pv3) - pv3Addr := fmt.Sprintf("%p", &pv3) - v3t := "int32" - v3s := "2147483647" - addDumpTest(v3, "("+v3t+") "+v3s+"\n") - addDumpTest(pv3, "(*"+v3t+")("+v3Addr+")("+v3s+")\n") - addDumpTest(&pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")("+v3s+")\n") - addDumpTest(nv3, "(*"+v3t+")()\n") - - // Max int64. - v4 := int64(9223372036854775807) - nv4 := (*int64)(nil) - pv4 := &v4 - v4Addr := fmt.Sprintf("%p", pv4) - pv4Addr := fmt.Sprintf("%p", &pv4) - v4t := "int64" - v4s := "9223372036854775807" - addDumpTest(v4, "("+v4t+") "+v4s+"\n") - addDumpTest(pv4, "(*"+v4t+")("+v4Addr+")("+v4s+")\n") - addDumpTest(&pv4, "(**"+v4t+")("+pv4Addr+"->"+v4Addr+")("+v4s+")\n") - addDumpTest(nv4, "(*"+v4t+")()\n") - - // Max int. - v5 := int(2147483647) - nv5 := (*int)(nil) - pv5 := &v5 - v5Addr := fmt.Sprintf("%p", pv5) - pv5Addr := fmt.Sprintf("%p", &pv5) - v5t := "int" - v5s := "2147483647" - addDumpTest(v5, "("+v5t+") "+v5s+"\n") - addDumpTest(pv5, "(*"+v5t+")("+v5Addr+")("+v5s+")\n") - addDumpTest(&pv5, "(**"+v5t+")("+pv5Addr+"->"+v5Addr+")("+v5s+")\n") - addDumpTest(nv5, "(*"+v5t+")()\n") -} - -func addUintDumpTests() { - // Max uint8. - v := uint8(255) - nv := (*uint8)(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "uint8" - vs := "255" - addDumpTest(v, "("+vt+") "+vs+"\n") - addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs+")\n") - addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n") - addDumpTest(nv, "(*"+vt+")()\n") - - // Max uint16. - v2 := uint16(65535) - nv2 := (*uint16)(nil) - pv2 := &v2 - v2Addr := fmt.Sprintf("%p", pv2) - pv2Addr := fmt.Sprintf("%p", &pv2) - v2t := "uint16" - v2s := "65535" - addDumpTest(v2, "("+v2t+") "+v2s+"\n") - addDumpTest(pv2, "(*"+v2t+")("+v2Addr+")("+v2s+")\n") - addDumpTest(&pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")("+v2s+")\n") - addDumpTest(nv2, "(*"+v2t+")()\n") - - // Max uint32. - v3 := uint32(4294967295) - nv3 := (*uint32)(nil) - pv3 := &v3 - v3Addr := fmt.Sprintf("%p", pv3) - pv3Addr := fmt.Sprintf("%p", &pv3) - v3t := "uint32" - v3s := "4294967295" - addDumpTest(v3, "("+v3t+") "+v3s+"\n") - addDumpTest(pv3, "(*"+v3t+")("+v3Addr+")("+v3s+")\n") - addDumpTest(&pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")("+v3s+")\n") - addDumpTest(nv3, "(*"+v3t+")()\n") - - // Max uint64. - v4 := uint64(18446744073709551615) - nv4 := (*uint64)(nil) - pv4 := &v4 - v4Addr := fmt.Sprintf("%p", pv4) - pv4Addr := fmt.Sprintf("%p", &pv4) - v4t := "uint64" - v4s := "18446744073709551615" - addDumpTest(v4, "("+v4t+") "+v4s+"\n") - addDumpTest(pv4, "(*"+v4t+")("+v4Addr+")("+v4s+")\n") - addDumpTest(&pv4, "(**"+v4t+")("+pv4Addr+"->"+v4Addr+")("+v4s+")\n") - addDumpTest(nv4, "(*"+v4t+")()\n") - - // Max uint. - v5 := uint(4294967295) - nv5 := (*uint)(nil) - pv5 := &v5 - v5Addr := fmt.Sprintf("%p", pv5) - pv5Addr := fmt.Sprintf("%p", &pv5) - v5t := "uint" - v5s := "4294967295" - addDumpTest(v5, "("+v5t+") "+v5s+"\n") - addDumpTest(pv5, "(*"+v5t+")("+v5Addr+")("+v5s+")\n") - addDumpTest(&pv5, "(**"+v5t+")("+pv5Addr+"->"+v5Addr+")("+v5s+")\n") - addDumpTest(nv5, "(*"+v5t+")()\n") -} - -func addBoolDumpTests() { - // Boolean true. - v := bool(true) - nv := (*bool)(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "bool" - vs := "true" - addDumpTest(v, "("+vt+") "+vs+"\n") - addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs+")\n") - addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n") - addDumpTest(nv, "(*"+vt+")()\n") - - // Boolean false. - v2 := bool(false) - pv2 := &v2 - v2Addr := fmt.Sprintf("%p", pv2) - pv2Addr := fmt.Sprintf("%p", &pv2) - v2t := "bool" - v2s := "false" - addDumpTest(v2, "("+v2t+") "+v2s+"\n") - addDumpTest(pv2, "(*"+v2t+")("+v2Addr+")("+v2s+")\n") - addDumpTest(&pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")("+v2s+")\n") -} - -func addFloatDumpTests() { - // Standard float32. - v := float32(3.1415) - nv := (*float32)(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "float32" - vs := "3.1415" - addDumpTest(v, "("+vt+") "+vs+"\n") - addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs+")\n") - addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n") - addDumpTest(nv, "(*"+vt+")()\n") - - // Standard float64. - v2 := float64(3.1415926) - nv2 := (*float64)(nil) - pv2 := &v2 - v2Addr := fmt.Sprintf("%p", pv2) - pv2Addr := fmt.Sprintf("%p", &pv2) - v2t := "float64" - v2s := "3.1415926" - addDumpTest(v2, "("+v2t+") "+v2s+"\n") - addDumpTest(pv2, "(*"+v2t+")("+v2Addr+")("+v2s+")\n") - addDumpTest(&pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")("+v2s+")\n") - addDumpTest(nv2, "(*"+v2t+")()\n") -} - -func addComplexDumpTests() { - // Standard complex64. - v := complex(float32(6), -2) - nv := (*complex64)(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "complex64" - vs := "(6-2i)" - addDumpTest(v, "("+vt+") "+vs+"\n") - addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs+")\n") - addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n") - addDumpTest(nv, "(*"+vt+")()\n") - - // Standard complex128. - v2 := complex(float64(-6), 2) - nv2 := (*complex128)(nil) - pv2 := &v2 - v2Addr := fmt.Sprintf("%p", pv2) - pv2Addr := fmt.Sprintf("%p", &pv2) - v2t := "complex128" - v2s := "(-6+2i)" - addDumpTest(v2, "("+v2t+") "+v2s+"\n") - addDumpTest(pv2, "(*"+v2t+")("+v2Addr+")("+v2s+")\n") - addDumpTest(&pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")("+v2s+")\n") - addDumpTest(nv2, "(*"+v2t+")()\n") -} - -func addArrayDumpTests() { - // Array containing standard ints. - v := [3]int{1, 2, 3} - vLen := fmt.Sprintf("%d", len(v)) - vCap := fmt.Sprintf("%d", cap(v)) - nv := (*[3]int)(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "int" - vs := "(len=" + vLen + " cap=" + vCap + ") {\n (" + vt + ") 1,\n (" + - vt + ") 2,\n (" + vt + ") 3\n}" - addDumpTest(v, "([3]"+vt+") "+vs+"\n") - addDumpTest(pv, "(*[3]"+vt+")("+vAddr+")("+vs+")\n") - addDumpTest(&pv, "(**[3]"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n") - addDumpTest(nv, "(*[3]"+vt+")()\n") - - // Array containing type with custom formatter on pointer receiver only. - v2i0 := pstringer("1") - v2i1 := pstringer("2") - v2i2 := pstringer("3") - v2 := [3]pstringer{v2i0, v2i1, v2i2} - v2i0Len := fmt.Sprintf("%d", len(v2i0)) - v2i1Len := fmt.Sprintf("%d", len(v2i1)) - v2i2Len := fmt.Sprintf("%d", len(v2i2)) - v2Len := fmt.Sprintf("%d", len(v2)) - v2Cap := fmt.Sprintf("%d", cap(v2)) - nv2 := (*[3]pstringer)(nil) - pv2 := &v2 - v2Addr := fmt.Sprintf("%p", pv2) - pv2Addr := fmt.Sprintf("%p", &pv2) - v2t := "spew_test.pstringer" - v2sp := "(len=" + v2Len + " cap=" + v2Cap + ") {\n (" + v2t + - ") (len=" + v2i0Len + ") stringer 1,\n (" + v2t + - ") (len=" + v2i1Len + ") stringer 2,\n (" + v2t + - ") (len=" + v2i2Len + ") " + "stringer 3\n}" - v2s := v2sp - if spew.UnsafeDisabled { - v2s = "(len=" + v2Len + " cap=" + v2Cap + ") {\n (" + v2t + - ") (len=" + v2i0Len + ") \"1\",\n (" + v2t + ") (len=" + - v2i1Len + ") \"2\",\n (" + v2t + ") (len=" + v2i2Len + - ") " + "\"3\"\n}" - } - addDumpTest(v2, "([3]"+v2t+") "+v2s+"\n") - addDumpTest(pv2, "(*[3]"+v2t+")("+v2Addr+")("+v2sp+")\n") - addDumpTest(&pv2, "(**[3]"+v2t+")("+pv2Addr+"->"+v2Addr+")("+v2sp+")\n") - addDumpTest(nv2, "(*[3]"+v2t+")()\n") - - // Array containing interfaces. - v3i0 := "one" - v3 := [3]interface{}{v3i0, int(2), uint(3)} - v3i0Len := fmt.Sprintf("%d", len(v3i0)) - v3Len := fmt.Sprintf("%d", len(v3)) - v3Cap := fmt.Sprintf("%d", cap(v3)) - nv3 := (*[3]interface{})(nil) - pv3 := &v3 - v3Addr := fmt.Sprintf("%p", pv3) - pv3Addr := fmt.Sprintf("%p", &pv3) - v3t := "[3]interface {}" - v3t2 := "string" - v3t3 := "int" - v3t4 := "uint" - v3s := "(len=" + v3Len + " cap=" + v3Cap + ") {\n (" + v3t2 + ") " + - "(len=" + v3i0Len + ") \"one\",\n (" + v3t3 + ") 2,\n (" + - v3t4 + ") 3\n}" - addDumpTest(v3, "("+v3t+") "+v3s+"\n") - addDumpTest(pv3, "(*"+v3t+")("+v3Addr+")("+v3s+")\n") - addDumpTest(&pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")("+v3s+")\n") - addDumpTest(nv3, "(*"+v3t+")()\n") - - // Array containing bytes. - v4 := [34]byte{ - 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, - 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, - 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, - 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, - 0x31, 0x32, - } - v4Len := fmt.Sprintf("%d", len(v4)) - v4Cap := fmt.Sprintf("%d", cap(v4)) - nv4 := (*[34]byte)(nil) - pv4 := &v4 - v4Addr := fmt.Sprintf("%p", pv4) - pv4Addr := fmt.Sprintf("%p", &pv4) - v4t := "[34]uint8" - v4s := "(len=" + v4Len + " cap=" + v4Cap + ") " + - "{\n 00000000 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20" + - " |............... |\n" + - " 00000010 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30" + - " |!\"#$%&'()*+,-./0|\n" + - " 00000020 31 32 " + - " |12|\n}" - addDumpTest(v4, "("+v4t+") "+v4s+"\n") - addDumpTest(pv4, "(*"+v4t+")("+v4Addr+")("+v4s+")\n") - addDumpTest(&pv4, "(**"+v4t+")("+pv4Addr+"->"+v4Addr+")("+v4s+")\n") - addDumpTest(nv4, "(*"+v4t+")()\n") -} - -func addSliceDumpTests() { - // Slice containing standard float32 values. - v := []float32{3.14, 6.28, 12.56} - vLen := fmt.Sprintf("%d", len(v)) - vCap := fmt.Sprintf("%d", cap(v)) - nv := (*[]float32)(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "float32" - vs := "(len=" + vLen + " cap=" + vCap + ") {\n (" + vt + ") 3.14,\n (" + - vt + ") 6.28,\n (" + vt + ") 12.56\n}" - addDumpTest(v, "([]"+vt+") "+vs+"\n") - addDumpTest(pv, "(*[]"+vt+")("+vAddr+")("+vs+")\n") - addDumpTest(&pv, "(**[]"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n") - addDumpTest(nv, "(*[]"+vt+")()\n") - - // Slice containing type with custom formatter on pointer receiver only. - v2i0 := pstringer("1") - v2i1 := pstringer("2") - v2i2 := pstringer("3") - v2 := []pstringer{v2i0, v2i1, v2i2} - v2i0Len := fmt.Sprintf("%d", len(v2i0)) - v2i1Len := fmt.Sprintf("%d", len(v2i1)) - v2i2Len := fmt.Sprintf("%d", len(v2i2)) - v2Len := fmt.Sprintf("%d", len(v2)) - v2Cap := fmt.Sprintf("%d", cap(v2)) - nv2 := (*[]pstringer)(nil) - pv2 := &v2 - v2Addr := fmt.Sprintf("%p", pv2) - pv2Addr := fmt.Sprintf("%p", &pv2) - v2t := "spew_test.pstringer" - v2s := "(len=" + v2Len + " cap=" + v2Cap + ") {\n (" + v2t + ") (len=" + - v2i0Len + ") stringer 1,\n (" + v2t + ") (len=" + v2i1Len + - ") stringer 2,\n (" + v2t + ") (len=" + v2i2Len + ") " + - "stringer 3\n}" - addDumpTest(v2, "([]"+v2t+") "+v2s+"\n") - addDumpTest(pv2, "(*[]"+v2t+")("+v2Addr+")("+v2s+")\n") - addDumpTest(&pv2, "(**[]"+v2t+")("+pv2Addr+"->"+v2Addr+")("+v2s+")\n") - addDumpTest(nv2, "(*[]"+v2t+")()\n") - - // Slice containing interfaces. - v3i0 := "one" - v3 := []interface{}{v3i0, int(2), uint(3), nil} - v3i0Len := fmt.Sprintf("%d", len(v3i0)) - v3Len := fmt.Sprintf("%d", len(v3)) - v3Cap := fmt.Sprintf("%d", cap(v3)) - nv3 := (*[]interface{})(nil) - pv3 := &v3 - v3Addr := fmt.Sprintf("%p", pv3) - pv3Addr := fmt.Sprintf("%p", &pv3) - v3t := "[]interface {}" - v3t2 := "string" - v3t3 := "int" - v3t4 := "uint" - v3t5 := "interface {}" - v3s := "(len=" + v3Len + " cap=" + v3Cap + ") {\n (" + v3t2 + ") " + - "(len=" + v3i0Len + ") \"one\",\n (" + v3t3 + ") 2,\n (" + - v3t4 + ") 3,\n (" + v3t5 + ") \n}" - addDumpTest(v3, "("+v3t+") "+v3s+"\n") - addDumpTest(pv3, "(*"+v3t+")("+v3Addr+")("+v3s+")\n") - addDumpTest(&pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")("+v3s+")\n") - addDumpTest(nv3, "(*"+v3t+")()\n") - - // Slice containing bytes. - v4 := []byte{ - 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, - 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, - 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, - 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, - 0x31, 0x32, - } - v4Len := fmt.Sprintf("%d", len(v4)) - v4Cap := fmt.Sprintf("%d", cap(v4)) - nv4 := (*[]byte)(nil) - pv4 := &v4 - v4Addr := fmt.Sprintf("%p", pv4) - pv4Addr := fmt.Sprintf("%p", &pv4) - v4t := "[]uint8" - v4s := "(len=" + v4Len + " cap=" + v4Cap + ") " + - "{\n 00000000 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20" + - " |............... |\n" + - " 00000010 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30" + - " |!\"#$%&'()*+,-./0|\n" + - " 00000020 31 32 " + - " |12|\n}" - addDumpTest(v4, "("+v4t+") "+v4s+"\n") - addDumpTest(pv4, "(*"+v4t+")("+v4Addr+")("+v4s+")\n") - addDumpTest(&pv4, "(**"+v4t+")("+pv4Addr+"->"+v4Addr+")("+v4s+")\n") - addDumpTest(nv4, "(*"+v4t+")()\n") - - // Nil slice. - v5 := []int(nil) - nv5 := (*[]int)(nil) - pv5 := &v5 - v5Addr := fmt.Sprintf("%p", pv5) - pv5Addr := fmt.Sprintf("%p", &pv5) - v5t := "[]int" - v5s := "" - addDumpTest(v5, "("+v5t+") "+v5s+"\n") - addDumpTest(pv5, "(*"+v5t+")("+v5Addr+")("+v5s+")\n") - addDumpTest(&pv5, "(**"+v5t+")("+pv5Addr+"->"+v5Addr+")("+v5s+")\n") - addDumpTest(nv5, "(*"+v5t+")()\n") -} - -func addStringDumpTests() { - // Standard string. - v := "test" - vLen := fmt.Sprintf("%d", len(v)) - nv := (*string)(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "string" - vs := "(len=" + vLen + ") \"test\"" - addDumpTest(v, "("+vt+") "+vs+"\n") - addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs+")\n") - addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n") - addDumpTest(nv, "(*"+vt+")()\n") -} - -func addInterfaceDumpTests() { - // Nil interface. - var v interface{} - nv := (*interface{})(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "interface {}" - vs := "" - addDumpTest(v, "("+vt+") "+vs+"\n") - addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs+")\n") - addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n") - addDumpTest(nv, "(*"+vt+")()\n") - - // Sub-interface. - v2 := interface{}(uint16(65535)) - pv2 := &v2 - v2Addr := fmt.Sprintf("%p", pv2) - pv2Addr := fmt.Sprintf("%p", &pv2) - v2t := "uint16" - v2s := "65535" - addDumpTest(v2, "("+v2t+") "+v2s+"\n") - addDumpTest(pv2, "(*"+v2t+")("+v2Addr+")("+v2s+")\n") - addDumpTest(&pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")("+v2s+")\n") -} - -func addMapDumpTests() { - // Map with string keys and int vals. - k := "one" - kk := "two" - m := map[string]int{k: 1, kk: 2} - klen := fmt.Sprintf("%d", len(k)) // not kLen to shut golint up - kkLen := fmt.Sprintf("%d", len(kk)) - mLen := fmt.Sprintf("%d", len(m)) - nilMap := map[string]int(nil) - nm := (*map[string]int)(nil) - pm := &m - mAddr := fmt.Sprintf("%p", pm) - pmAddr := fmt.Sprintf("%p", &pm) - mt := "map[string]int" - mt1 := "string" - mt2 := "int" - ms := "(len=" + mLen + ") {\n (" + mt1 + ") (len=" + klen + ") " + - "\"one\": (" + mt2 + ") 1,\n (" + mt1 + ") (len=" + kkLen + - ") \"two\": (" + mt2 + ") 2\n}" - ms2 := "(len=" + mLen + ") {\n (" + mt1 + ") (len=" + kkLen + ") " + - "\"two\": (" + mt2 + ") 2,\n (" + mt1 + ") (len=" + klen + - ") \"one\": (" + mt2 + ") 1\n}" - addDumpTest(m, "("+mt+") "+ms+"\n", "("+mt+") "+ms2+"\n") - addDumpTest(pm, "(*"+mt+")("+mAddr+")("+ms+")\n", - "(*"+mt+")("+mAddr+")("+ms2+")\n") - addDumpTest(&pm, "(**"+mt+")("+pmAddr+"->"+mAddr+")("+ms+")\n", - "(**"+mt+")("+pmAddr+"->"+mAddr+")("+ms2+")\n") - addDumpTest(nm, "(*"+mt+")()\n") - addDumpTest(nilMap, "("+mt+") \n") - - // Map with custom formatter type on pointer receiver only keys and vals. - k2 := pstringer("one") - v2 := pstringer("1") - m2 := map[pstringer]pstringer{k2: v2} - k2Len := fmt.Sprintf("%d", len(k2)) - v2Len := fmt.Sprintf("%d", len(v2)) - m2Len := fmt.Sprintf("%d", len(m2)) - nilMap2 := map[pstringer]pstringer(nil) - nm2 := (*map[pstringer]pstringer)(nil) - pm2 := &m2 - m2Addr := fmt.Sprintf("%p", pm2) - pm2Addr := fmt.Sprintf("%p", &pm2) - m2t := "map[spew_test.pstringer]spew_test.pstringer" - m2t1 := "spew_test.pstringer" - m2t2 := "spew_test.pstringer" - m2s := "(len=" + m2Len + ") {\n (" + m2t1 + ") (len=" + k2Len + ") " + - "stringer one: (" + m2t2 + ") (len=" + v2Len + ") stringer 1\n}" - if spew.UnsafeDisabled { - m2s = "(len=" + m2Len + ") {\n (" + m2t1 + ") (len=" + k2Len + - ") " + "\"one\": (" + m2t2 + ") (len=" + v2Len + - ") \"1\"\n}" - } - addDumpTest(m2, "("+m2t+") "+m2s+"\n") - addDumpTest(pm2, "(*"+m2t+")("+m2Addr+")("+m2s+")\n") - addDumpTest(&pm2, "(**"+m2t+")("+pm2Addr+"->"+m2Addr+")("+m2s+")\n") - addDumpTest(nm2, "(*"+m2t+")()\n") - addDumpTest(nilMap2, "("+m2t+") \n") - - // Map with interface keys and values. - k3 := "one" - k3Len := fmt.Sprintf("%d", len(k3)) - m3 := map[interface{}]interface{}{k3: 1} - m3Len := fmt.Sprintf("%d", len(m3)) - nilMap3 := map[interface{}]interface{}(nil) - nm3 := (*map[interface{}]interface{})(nil) - pm3 := &m3 - m3Addr := fmt.Sprintf("%p", pm3) - pm3Addr := fmt.Sprintf("%p", &pm3) - m3t := "map[interface {}]interface {}" - m3t1 := "string" - m3t2 := "int" - m3s := "(len=" + m3Len + ") {\n (" + m3t1 + ") (len=" + k3Len + ") " + - "\"one\": (" + m3t2 + ") 1\n}" - addDumpTest(m3, "("+m3t+") "+m3s+"\n") - addDumpTest(pm3, "(*"+m3t+")("+m3Addr+")("+m3s+")\n") - addDumpTest(&pm3, "(**"+m3t+")("+pm3Addr+"->"+m3Addr+")("+m3s+")\n") - addDumpTest(nm3, "(*"+m3t+")()\n") - addDumpTest(nilMap3, "("+m3t+") \n") - - // Map with nil interface value. - k4 := "nil" - k4Len := fmt.Sprintf("%d", len(k4)) - m4 := map[string]interface{}{k4: nil} - m4Len := fmt.Sprintf("%d", len(m4)) - nilMap4 := map[string]interface{}(nil) - nm4 := (*map[string]interface{})(nil) - pm4 := &m4 - m4Addr := fmt.Sprintf("%p", pm4) - pm4Addr := fmt.Sprintf("%p", &pm4) - m4t := "map[string]interface {}" - m4t1 := "string" - m4t2 := "interface {}" - m4s := "(len=" + m4Len + ") {\n (" + m4t1 + ") (len=" + k4Len + ")" + - " \"nil\": (" + m4t2 + ") \n}" - addDumpTest(m4, "("+m4t+") "+m4s+"\n") - addDumpTest(pm4, "(*"+m4t+")("+m4Addr+")("+m4s+")\n") - addDumpTest(&pm4, "(**"+m4t+")("+pm4Addr+"->"+m4Addr+")("+m4s+")\n") - addDumpTest(nm4, "(*"+m4t+")()\n") - addDumpTest(nilMap4, "("+m4t+") \n") -} - -func addStructDumpTests() { - // Struct with primitives. - type s1 struct { - a int8 - b uint8 - } - v := s1{127, 255} - nv := (*s1)(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "spew_test.s1" - vt2 := "int8" - vt3 := "uint8" - vs := "{\n a: (" + vt2 + ") 127,\n b: (" + vt3 + ") 255\n}" - addDumpTest(v, "("+vt+") "+vs+"\n") - addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs+")\n") - addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n") - addDumpTest(nv, "(*"+vt+")()\n") - - // Struct that contains another struct. - type s2 struct { - s1 s1 - b bool - } - v2 := s2{s1{127, 255}, true} - nv2 := (*s2)(nil) - pv2 := &v2 - v2Addr := fmt.Sprintf("%p", pv2) - pv2Addr := fmt.Sprintf("%p", &pv2) - v2t := "spew_test.s2" - v2t2 := "spew_test.s1" - v2t3 := "int8" - v2t4 := "uint8" - v2t5 := "bool" - v2s := "{\n s1: (" + v2t2 + ") {\n a: (" + v2t3 + ") 127,\n b: (" + - v2t4 + ") 255\n },\n b: (" + v2t5 + ") true\n}" - addDumpTest(v2, "("+v2t+") "+v2s+"\n") - addDumpTest(pv2, "(*"+v2t+")("+v2Addr+")("+v2s+")\n") - addDumpTest(&pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")("+v2s+")\n") - addDumpTest(nv2, "(*"+v2t+")()\n") - - // Struct that contains custom type with Stringer pointer interface via both - // exported and unexported fields. - type s3 struct { - s pstringer - S pstringer - } - v3 := s3{"test", "test2"} - nv3 := (*s3)(nil) - pv3 := &v3 - v3Addr := fmt.Sprintf("%p", pv3) - pv3Addr := fmt.Sprintf("%p", &pv3) - v3t := "spew_test.s3" - v3t2 := "spew_test.pstringer" - v3s := "{\n s: (" + v3t2 + ") (len=4) stringer test,\n S: (" + v3t2 + - ") (len=5) stringer test2\n}" - v3sp := v3s - if spew.UnsafeDisabled { - v3s = "{\n s: (" + v3t2 + ") (len=4) \"test\",\n S: (" + - v3t2 + ") (len=5) \"test2\"\n}" - v3sp = "{\n s: (" + v3t2 + ") (len=4) \"test\",\n S: (" + - v3t2 + ") (len=5) stringer test2\n}" - } - addDumpTest(v3, "("+v3t+") "+v3s+"\n") - addDumpTest(pv3, "(*"+v3t+")("+v3Addr+")("+v3sp+")\n") - addDumpTest(&pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")("+v3sp+")\n") - addDumpTest(nv3, "(*"+v3t+")()\n") - - // Struct that contains embedded struct and field to same struct. - e := embed{"embedstr"} - eLen := fmt.Sprintf("%d", len("embedstr")) - v4 := embedwrap{embed: &e, e: &e} - nv4 := (*embedwrap)(nil) - pv4 := &v4 - eAddr := fmt.Sprintf("%p", &e) - v4Addr := fmt.Sprintf("%p", pv4) - pv4Addr := fmt.Sprintf("%p", &pv4) - v4t := "spew_test.embedwrap" - v4t2 := "spew_test.embed" - v4t3 := "string" - v4s := "{\n embed: (*" + v4t2 + ")(" + eAddr + ")({\n a: (" + v4t3 + - ") (len=" + eLen + ") \"embedstr\"\n }),\n e: (*" + v4t2 + - ")(" + eAddr + ")({\n a: (" + v4t3 + ") (len=" + eLen + ")" + - " \"embedstr\"\n })\n}" - addDumpTest(v4, "("+v4t+") "+v4s+"\n") - addDumpTest(pv4, "(*"+v4t+")("+v4Addr+")("+v4s+")\n") - addDumpTest(&pv4, "(**"+v4t+")("+pv4Addr+"->"+v4Addr+")("+v4s+")\n") - addDumpTest(nv4, "(*"+v4t+")()\n") -} - -func addUintptrDumpTests() { - // Null pointer. - v := uintptr(0) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "uintptr" - vs := "" - addDumpTest(v, "("+vt+") "+vs+"\n") - addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs+")\n") - addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n") - - // Address of real variable. - i := 1 - v2 := uintptr(unsafe.Pointer(&i)) - nv2 := (*uintptr)(nil) - pv2 := &v2 - v2Addr := fmt.Sprintf("%p", pv2) - pv2Addr := fmt.Sprintf("%p", &pv2) - v2t := "uintptr" - v2s := fmt.Sprintf("%p", &i) - addDumpTest(v2, "("+v2t+") "+v2s+"\n") - addDumpTest(pv2, "(*"+v2t+")("+v2Addr+")("+v2s+")\n") - addDumpTest(&pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")("+v2s+")\n") - addDumpTest(nv2, "(*"+v2t+")()\n") -} - -func addUnsafePointerDumpTests() { - // Null pointer. - v := unsafe.Pointer(uintptr(0)) - nv := (*unsafe.Pointer)(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "unsafe.Pointer" - vs := "" - addDumpTest(v, "("+vt+") "+vs+"\n") - addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs+")\n") - addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n") - addDumpTest(nv, "(*"+vt+")()\n") - - // Address of real variable. - i := 1 - v2 := unsafe.Pointer(&i) - pv2 := &v2 - v2Addr := fmt.Sprintf("%p", pv2) - pv2Addr := fmt.Sprintf("%p", &pv2) - v2t := "unsafe.Pointer" - v2s := fmt.Sprintf("%p", &i) - addDumpTest(v2, "("+v2t+") "+v2s+"\n") - addDumpTest(pv2, "(*"+v2t+")("+v2Addr+")("+v2s+")\n") - addDumpTest(&pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")("+v2s+")\n") - addDumpTest(nv, "(*"+vt+")()\n") -} - -func addChanDumpTests() { - // Nil channel. - var v chan int - pv := &v - nv := (*chan int)(nil) - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "chan int" - vs := "" - addDumpTest(v, "("+vt+") "+vs+"\n") - addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs+")\n") - addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n") - addDumpTest(nv, "(*"+vt+")()\n") - - // Real channel. - v2 := make(chan int) - pv2 := &v2 - v2Addr := fmt.Sprintf("%p", pv2) - pv2Addr := fmt.Sprintf("%p", &pv2) - v2t := "chan int" - v2s := fmt.Sprintf("%p", v2) - addDumpTest(v2, "("+v2t+") "+v2s+"\n") - addDumpTest(pv2, "(*"+v2t+")("+v2Addr+")("+v2s+")\n") - addDumpTest(&pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")("+v2s+")\n") -} - -func addFuncDumpTests() { - // Function with no params and no returns. - v := addIntDumpTests - nv := (*func())(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "func()" - vs := fmt.Sprintf("%p", v) - addDumpTest(v, "("+vt+") "+vs+"\n") - addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs+")\n") - addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n") - addDumpTest(nv, "(*"+vt+")()\n") - - // Function with param and no returns. - v2 := TestDump - nv2 := (*func(*testing.T))(nil) - pv2 := &v2 - v2Addr := fmt.Sprintf("%p", pv2) - pv2Addr := fmt.Sprintf("%p", &pv2) - v2t := "func(*testing.T)" - v2s := fmt.Sprintf("%p", v2) - addDumpTest(v2, "("+v2t+") "+v2s+"\n") - addDumpTest(pv2, "(*"+v2t+")("+v2Addr+")("+v2s+")\n") - addDumpTest(&pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")("+v2s+")\n") - addDumpTest(nv2, "(*"+v2t+")()\n") - - // Function with multiple params and multiple returns. - var v3 = func(i int, s string) (b bool, err error) { - return true, nil - } - nv3 := (*func(int, string) (bool, error))(nil) - pv3 := &v3 - v3Addr := fmt.Sprintf("%p", pv3) - pv3Addr := fmt.Sprintf("%p", &pv3) - v3t := "func(int, string) (bool, error)" - v3s := fmt.Sprintf("%p", v3) - addDumpTest(v3, "("+v3t+") "+v3s+"\n") - addDumpTest(pv3, "(*"+v3t+")("+v3Addr+")("+v3s+")\n") - addDumpTest(&pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")("+v3s+")\n") - addDumpTest(nv3, "(*"+v3t+")()\n") -} - -func addCircularDumpTests() { - // Struct that is circular through self referencing. - type circular struct { - c *circular - } - v := circular{nil} - v.c = &v - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "spew_test.circular" - vs := "{\n c: (*" + vt + ")(" + vAddr + ")({\n c: (*" + vt + ")(" + - vAddr + ")()\n })\n}" - vs2 := "{\n c: (*" + vt + ")(" + vAddr + ")()\n}" - addDumpTest(v, "("+vt+") "+vs+"\n") - addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs2+")\n") - addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs2+")\n") - - // Structs that are circular through cross referencing. - v2 := xref1{nil} - ts2 := xref2{&v2} - v2.ps2 = &ts2 - pv2 := &v2 - ts2Addr := fmt.Sprintf("%p", &ts2) - v2Addr := fmt.Sprintf("%p", pv2) - pv2Addr := fmt.Sprintf("%p", &pv2) - v2t := "spew_test.xref1" - v2t2 := "spew_test.xref2" - v2s := "{\n ps2: (*" + v2t2 + ")(" + ts2Addr + ")({\n ps1: (*" + v2t + - ")(" + v2Addr + ")({\n ps2: (*" + v2t2 + ")(" + ts2Addr + - ")()\n })\n })\n}" - v2s2 := "{\n ps2: (*" + v2t2 + ")(" + ts2Addr + ")({\n ps1: (*" + v2t + - ")(" + v2Addr + ")()\n })\n}" - addDumpTest(v2, "("+v2t+") "+v2s+"\n") - addDumpTest(pv2, "(*"+v2t+")("+v2Addr+")("+v2s2+")\n") - addDumpTest(&pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")("+v2s2+")\n") - - // Structs that are indirectly circular. - v3 := indirCir1{nil} - tic2 := indirCir2{nil} - tic3 := indirCir3{&v3} - tic2.ps3 = &tic3 - v3.ps2 = &tic2 - pv3 := &v3 - tic2Addr := fmt.Sprintf("%p", &tic2) - tic3Addr := fmt.Sprintf("%p", &tic3) - v3Addr := fmt.Sprintf("%p", pv3) - pv3Addr := fmt.Sprintf("%p", &pv3) - v3t := "spew_test.indirCir1" - v3t2 := "spew_test.indirCir2" - v3t3 := "spew_test.indirCir3" - v3s := "{\n ps2: (*" + v3t2 + ")(" + tic2Addr + ")({\n ps3: (*" + v3t3 + - ")(" + tic3Addr + ")({\n ps1: (*" + v3t + ")(" + v3Addr + - ")({\n ps2: (*" + v3t2 + ")(" + tic2Addr + - ")()\n })\n })\n })\n}" - v3s2 := "{\n ps2: (*" + v3t2 + ")(" + tic2Addr + ")({\n ps3: (*" + v3t3 + - ")(" + tic3Addr + ")({\n ps1: (*" + v3t + ")(" + v3Addr + - ")()\n })\n })\n}" - addDumpTest(v3, "("+v3t+") "+v3s+"\n") - addDumpTest(pv3, "(*"+v3t+")("+v3Addr+")("+v3s2+")\n") - addDumpTest(&pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")("+v3s2+")\n") -} - -func addPanicDumpTests() { - // Type that panics in its Stringer interface. - v := panicer(127) - nv := (*panicer)(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "spew_test.panicer" - vs := "(PANIC=test panic)127" - addDumpTest(v, "("+vt+") "+vs+"\n") - addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs+")\n") - addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n") - addDumpTest(nv, "(*"+vt+")()\n") -} - -func addErrorDumpTests() { - // Type that has a custom Error interface. - v := customError(127) - nv := (*customError)(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "spew_test.customError" - vs := "error: 127" - addDumpTest(v, "("+vt+") "+vs+"\n") - addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs+")\n") - addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n") - addDumpTest(nv, "(*"+vt+")()\n") -} - -// TestDump executes all of the tests described by dumpTests. -func TestDump(t *testing.T) { - // Setup tests. - addIntDumpTests() - addUintDumpTests() - addBoolDumpTests() - addFloatDumpTests() - addComplexDumpTests() - addArrayDumpTests() - addSliceDumpTests() - addStringDumpTests() - addInterfaceDumpTests() - addMapDumpTests() - addStructDumpTests() - addUintptrDumpTests() - addUnsafePointerDumpTests() - addChanDumpTests() - addFuncDumpTests() - addCircularDumpTests() - addPanicDumpTests() - addErrorDumpTests() - addCgoDumpTests() - - t.Logf("Running %d tests", len(dumpTests)) - for i, test := range dumpTests { - buf := new(bytes.Buffer) - spew.Fdump(buf, test.in) - s := buf.String() - if testFailed(s, test.wants) { - t.Errorf("Dump #%d\n got: %s %s", i, s, stringizeWants(test.wants)) - continue - } - } -} - -func TestDumpSortedKeys(t *testing.T) { - cfg := spew.ConfigState{SortKeys: true} - s := cfg.Sdump(map[int]string{1: "1", 3: "3", 2: "2"}) - expected := "(map[int]string) (len=3) {\n(int) 1: (string) (len=1) " + - "\"1\",\n(int) 2: (string) (len=1) \"2\",\n(int) 3: (string) " + - "(len=1) \"3\"\n" + - "}\n" - if s != expected { - t.Errorf("Sorted keys mismatch:\n %v %v", s, expected) - } - - s = cfg.Sdump(map[stringer]int{"1": 1, "3": 3, "2": 2}) - expected = "(map[spew_test.stringer]int) (len=3) {\n" + - "(spew_test.stringer) (len=1) stringer 1: (int) 1,\n" + - "(spew_test.stringer) (len=1) stringer 2: (int) 2,\n" + - "(spew_test.stringer) (len=1) stringer 3: (int) 3\n" + - "}\n" - if s != expected { - t.Errorf("Sorted keys mismatch:\n %v %v", s, expected) - } - - s = cfg.Sdump(map[pstringer]int{pstringer("1"): 1, pstringer("3"): 3, pstringer("2"): 2}) - expected = "(map[spew_test.pstringer]int) (len=3) {\n" + - "(spew_test.pstringer) (len=1) stringer 1: (int) 1,\n" + - "(spew_test.pstringer) (len=1) stringer 2: (int) 2,\n" + - "(spew_test.pstringer) (len=1) stringer 3: (int) 3\n" + - "}\n" - if spew.UnsafeDisabled { - expected = "(map[spew_test.pstringer]int) (len=3) {\n" + - "(spew_test.pstringer) (len=1) \"1\": (int) 1,\n" + - "(spew_test.pstringer) (len=1) \"2\": (int) 2,\n" + - "(spew_test.pstringer) (len=1) \"3\": (int) 3\n" + - "}\n" - } - if s != expected { - t.Errorf("Sorted keys mismatch:\n %v %v", s, expected) - } - - s = cfg.Sdump(map[customError]int{customError(1): 1, customError(3): 3, customError(2): 2}) - expected = "(map[spew_test.customError]int) (len=3) {\n" + - "(spew_test.customError) error: 1: (int) 1,\n" + - "(spew_test.customError) error: 2: (int) 2,\n" + - "(spew_test.customError) error: 3: (int) 3\n" + - "}\n" - if s != expected { - t.Errorf("Sorted keys mismatch:\n %v %v", s, expected) - } - -} diff --git a/vendor/github.com/davecgh/go-spew/spew/dumpcgo_test.go b/vendor/github.com/davecgh/go-spew/spew/dumpcgo_test.go deleted file mode 100644 index 18a38358..00000000 --- a/vendor/github.com/davecgh/go-spew/spew/dumpcgo_test.go +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright (c) 2013 Dave Collins -// -// Permission to use, copy, modify, and distribute this software for any -// purpose with or without fee is hereby granted, provided that the above -// copyright notice and this permission notice appear in all copies. -// -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -// NOTE: Due to the following build constraints, this file will only be compiled -// when both cgo is supported and "-tags testcgo" is added to the go test -// command line. This means the cgo tests are only added (and hence run) when -// specifially requested. This configuration is used because spew itself -// does not require cgo to run even though it does handle certain cgo types -// specially. Rather than forcing all clients to require cgo and an external -// C compiler just to run the tests, this scheme makes them optional. -// +build cgo,testcgo - -package spew_test - -import ( - "fmt" - - "github.com/davecgh/go-spew/spew/testdata" -) - -func addCgoDumpTests() { - // C char pointer. - v := testdata.GetCgoCharPointer() - nv := testdata.GetCgoNullCharPointer() - pv := &v - vcAddr := fmt.Sprintf("%p", v) - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "*testdata._Ctype_char" - vs := "116" - addDumpTest(v, "("+vt+")("+vcAddr+")("+vs+")\n") - addDumpTest(pv, "(*"+vt+")("+vAddr+"->"+vcAddr+")("+vs+")\n") - addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+"->"+vcAddr+")("+vs+")\n") - addDumpTest(nv, "("+vt+")()\n") - - // C char array. - v2, v2l, v2c := testdata.GetCgoCharArray() - v2Len := fmt.Sprintf("%d", v2l) - v2Cap := fmt.Sprintf("%d", v2c) - v2t := "[6]testdata._Ctype_char" - v2s := "(len=" + v2Len + " cap=" + v2Cap + ") " + - "{\n 00000000 74 65 73 74 32 00 " + - " |test2.|\n}" - addDumpTest(v2, "("+v2t+") "+v2s+"\n") - - // C unsigned char array. - v3, v3l, v3c := testdata.GetCgoUnsignedCharArray() - v3Len := fmt.Sprintf("%d", v3l) - v3Cap := fmt.Sprintf("%d", v3c) - v3t := "[6]testdata._Ctype_unsignedchar" - v3s := "(len=" + v3Len + " cap=" + v3Cap + ") " + - "{\n 00000000 74 65 73 74 33 00 " + - " |test3.|\n}" - addDumpTest(v3, "("+v3t+") "+v3s+"\n") - - // C signed char array. - v4, v4l, v4c := testdata.GetCgoSignedCharArray() - v4Len := fmt.Sprintf("%d", v4l) - v4Cap := fmt.Sprintf("%d", v4c) - v4t := "[6]testdata._Ctype_schar" - v4t2 := "testdata._Ctype_schar" - v4s := "(len=" + v4Len + " cap=" + v4Cap + ") " + - "{\n (" + v4t2 + ") 116,\n (" + v4t2 + ") 101,\n (" + v4t2 + - ") 115,\n (" + v4t2 + ") 116,\n (" + v4t2 + ") 52,\n (" + v4t2 + - ") 0\n}" - addDumpTest(v4, "("+v4t+") "+v4s+"\n") - - // C uint8_t array. - v5, v5l, v5c := testdata.GetCgoUint8tArray() - v5Len := fmt.Sprintf("%d", v5l) - v5Cap := fmt.Sprintf("%d", v5c) - v5t := "[6]testdata._Ctype_uint8_t" - v5s := "(len=" + v5Len + " cap=" + v5Cap + ") " + - "{\n 00000000 74 65 73 74 35 00 " + - " |test5.|\n}" - addDumpTest(v5, "("+v5t+") "+v5s+"\n") - - // C typedefed unsigned char array. - v6, v6l, v6c := testdata.GetCgoTypdefedUnsignedCharArray() - v6Len := fmt.Sprintf("%d", v6l) - v6Cap := fmt.Sprintf("%d", v6c) - v6t := "[6]testdata._Ctype_custom_uchar_t" - v6s := "(len=" + v6Len + " cap=" + v6Cap + ") " + - "{\n 00000000 74 65 73 74 36 00 " + - " |test6.|\n}" - addDumpTest(v6, "("+v6t+") "+v6s+"\n") -} diff --git a/vendor/github.com/davecgh/go-spew/spew/dumpnocgo_test.go b/vendor/github.com/davecgh/go-spew/spew/dumpnocgo_test.go deleted file mode 100644 index 52a0971f..00000000 --- a/vendor/github.com/davecgh/go-spew/spew/dumpnocgo_test.go +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) 2013 Dave Collins -// -// Permission to use, copy, modify, and distribute this software for any -// purpose with or without fee is hereby granted, provided that the above -// copyright notice and this permission notice appear in all copies. -// -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -// NOTE: Due to the following build constraints, this file will only be compiled -// when either cgo is not supported or "-tags testcgo" is not added to the go -// test command line. This file intentionally does not setup any cgo tests in -// this scenario. -// +build !cgo !testcgo - -package spew_test - -func addCgoDumpTests() { - // Don't add any tests for cgo since this file is only compiled when - // there should not be any cgo tests. -} diff --git a/vendor/github.com/davecgh/go-spew/spew/example_test.go b/vendor/github.com/davecgh/go-spew/spew/example_test.go deleted file mode 100644 index de6c4e30..00000000 --- a/vendor/github.com/davecgh/go-spew/spew/example_test.go +++ /dev/null @@ -1,226 +0,0 @@ -/* - * Copyright (c) 2013 Dave Collins - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -package spew_test - -import ( - "fmt" - - "github.com/davecgh/go-spew/spew" -) - -type Flag int - -const ( - flagOne Flag = iota - flagTwo -) - -var flagStrings = map[Flag]string{ - flagOne: "flagOne", - flagTwo: "flagTwo", -} - -func (f Flag) String() string { - if s, ok := flagStrings[f]; ok { - return s - } - return fmt.Sprintf("Unknown flag (%d)", int(f)) -} - -type Bar struct { - data uintptr -} - -type Foo struct { - unexportedField Bar - ExportedField map[interface{}]interface{} -} - -// This example demonstrates how to use Dump to dump variables to stdout. -func ExampleDump() { - // The following package level declarations are assumed for this example: - /* - type Flag int - - const ( - flagOne Flag = iota - flagTwo - ) - - var flagStrings = map[Flag]string{ - flagOne: "flagOne", - flagTwo: "flagTwo", - } - - func (f Flag) String() string { - if s, ok := flagStrings[f]; ok { - return s - } - return fmt.Sprintf("Unknown flag (%d)", int(f)) - } - - type Bar struct { - data uintptr - } - - type Foo struct { - unexportedField Bar - ExportedField map[interface{}]interface{} - } - */ - - // Setup some sample data structures for the example. - bar := Bar{uintptr(0)} - s1 := Foo{bar, map[interface{}]interface{}{"one": true}} - f := Flag(5) - b := []byte{ - 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, - 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, - 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, - 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, - 0x31, 0x32, - } - - // Dump! - spew.Dump(s1, f, b) - - // Output: - // (spew_test.Foo) { - // unexportedField: (spew_test.Bar) { - // data: (uintptr) - // }, - // ExportedField: (map[interface {}]interface {}) (len=1) { - // (string) (len=3) "one": (bool) true - // } - // } - // (spew_test.Flag) Unknown flag (5) - // ([]uint8) (len=34 cap=34) { - // 00000000 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 |............... | - // 00000010 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 |!"#$%&'()*+,-./0| - // 00000020 31 32 |12| - // } - // -} - -// This example demonstrates how to use Printf to display a variable with a -// format string and inline formatting. -func ExamplePrintf() { - // Create a double pointer to a uint 8. - ui8 := uint8(5) - pui8 := &ui8 - ppui8 := &pui8 - - // Create a circular data type. - type circular struct { - ui8 uint8 - c *circular - } - c := circular{ui8: 1} - c.c = &c - - // Print! - spew.Printf("ppui8: %v\n", ppui8) - spew.Printf("circular: %v\n", c) - - // Output: - // ppui8: <**>5 - // circular: {1 <*>{1 <*>}} -} - -// This example demonstrates how to use a ConfigState. -func ExampleConfigState() { - // Modify the indent level of the ConfigState only. The global - // configuration is not modified. - scs := spew.ConfigState{Indent: "\t"} - - // Output using the ConfigState instance. - v := map[string]int{"one": 1} - scs.Printf("v: %v\n", v) - scs.Dump(v) - - // Output: - // v: map[one:1] - // (map[string]int) (len=1) { - // (string) (len=3) "one": (int) 1 - // } -} - -// This example demonstrates how to use ConfigState.Dump to dump variables to -// stdout -func ExampleConfigState_Dump() { - // See the top-level Dump example for details on the types used in this - // example. - - // Create two ConfigState instances with different indentation. - scs := spew.ConfigState{Indent: "\t"} - scs2 := spew.ConfigState{Indent: " "} - - // Setup some sample data structures for the example. - bar := Bar{uintptr(0)} - s1 := Foo{bar, map[interface{}]interface{}{"one": true}} - - // Dump using the ConfigState instances. - scs.Dump(s1) - scs2.Dump(s1) - - // Output: - // (spew_test.Foo) { - // unexportedField: (spew_test.Bar) { - // data: (uintptr) - // }, - // ExportedField: (map[interface {}]interface {}) (len=1) { - // (string) (len=3) "one": (bool) true - // } - // } - // (spew_test.Foo) { - // unexportedField: (spew_test.Bar) { - // data: (uintptr) - // }, - // ExportedField: (map[interface {}]interface {}) (len=1) { - // (string) (len=3) "one": (bool) true - // } - // } - // -} - -// This example demonstrates how to use ConfigState.Printf to display a variable -// with a format string and inline formatting. -func ExampleConfigState_Printf() { - // See the top-level Dump example for details on the types used in this - // example. - - // Create two ConfigState instances and modify the method handling of the - // first ConfigState only. - scs := spew.NewDefaultConfig() - scs2 := spew.NewDefaultConfig() - scs.DisableMethods = true - - // Alternatively - // scs := spew.ConfigState{Indent: " ", DisableMethods: true} - // scs2 := spew.ConfigState{Indent: " "} - - // This is of type Flag which implements a Stringer and has raw value 1. - f := flagTwo - - // Dump using the ConfigState instances. - scs.Printf("f: %v\n", f) - scs2.Printf("f: %v\n", f) - - // Output: - // f: 1 - // f: flagTwo -} diff --git a/vendor/github.com/davecgh/go-spew/spew/format.go b/vendor/github.com/davecgh/go-spew/spew/format.go index ecf3b80e..b04edb7d 100644 --- a/vendor/github.com/davecgh/go-spew/spew/format.go +++ b/vendor/github.com/davecgh/go-spew/spew/format.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 Dave Collins + * Copyright (c) 2013-2016 Dave Collins * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -182,10 +182,10 @@ func (f *formatState) formatPtr(v reflect.Value) { // Display dereferenced value. switch { - case nilFound == true: + case nilFound: f.fs.Write(nilAngleBytes) - case cycleFound == true: + case cycleFound: f.fs.Write(circularShortBytes) default: diff --git a/vendor/github.com/davecgh/go-spew/spew/format_test.go b/vendor/github.com/davecgh/go-spew/spew/format_test.go deleted file mode 100644 index b664b3f1..00000000 --- a/vendor/github.com/davecgh/go-spew/spew/format_test.go +++ /dev/null @@ -1,1558 +0,0 @@ -/* - * Copyright (c) 2013 Dave Collins - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -/* -Test Summary: -NOTE: For each test, a nil pointer, a single pointer and double pointer to the -base test element are also tested to ensure proper indirection across all types. - -- Max int8, int16, int32, int64, int -- Max uint8, uint16, uint32, uint64, uint -- Boolean true and false -- Standard complex64 and complex128 -- Array containing standard ints -- Array containing type with custom formatter on pointer receiver only -- Array containing interfaces -- Slice containing standard float32 values -- Slice containing type with custom formatter on pointer receiver only -- Slice containing interfaces -- Nil slice -- Standard string -- Nil interface -- Sub-interface -- Map with string keys and int vals -- Map with custom formatter type on pointer receiver only keys and vals -- Map with interface keys and values -- Map with nil interface value -- Struct with primitives -- Struct that contains another struct -- Struct that contains custom type with Stringer pointer interface via both - exported and unexported fields -- Struct that contains embedded struct and field to same struct -- Uintptr to 0 (null pointer) -- Uintptr address of real variable -- Unsafe.Pointer to 0 (null pointer) -- Unsafe.Pointer to address of real variable -- Nil channel -- Standard int channel -- Function with no params and no returns -- Function with param and no returns -- Function with multiple params and multiple returns -- Struct that is circular through self referencing -- Structs that are circular through cross referencing -- Structs that are indirectly circular -- Type that panics in its Stringer interface -- Type that has a custom Error interface -- %x passthrough with uint -- %#x passthrough with uint -- %f passthrough with precision -- %f passthrough with width and precision -- %d passthrough with width -- %q passthrough with string -*/ - -package spew_test - -import ( - "bytes" - "fmt" - "testing" - "unsafe" - - "github.com/davecgh/go-spew/spew" -) - -// formatterTest is used to describe a test to be perfomed against NewFormatter. -type formatterTest struct { - format string - in interface{} - wants []string -} - -// formatterTests houses all of the tests to be performed against NewFormatter. -var formatterTests = make([]formatterTest, 0) - -// addFormatterTest is a helper method to append the passed input and desired -// result to formatterTests. -func addFormatterTest(format string, in interface{}, wants ...string) { - test := formatterTest{format, in, wants} - formatterTests = append(formatterTests, test) -} - -func addIntFormatterTests() { - // Max int8. - v := int8(127) - nv := (*int8)(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "int8" - vs := "127" - addFormatterTest("%v", v, vs) - addFormatterTest("%v", pv, "<*>"+vs) - addFormatterTest("%v", &pv, "<**>"+vs) - addFormatterTest("%v", nv, "") - addFormatterTest("%+v", v, vs) - addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs) - addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%+v", nv, "") - addFormatterTest("%#v", v, "("+vt+")"+vs) - addFormatterTest("%#v", pv, "(*"+vt+")"+vs) - addFormatterTest("%#v", &pv, "(**"+vt+")"+vs) - addFormatterTest("%#v", nv, "(*"+vt+")"+"") - addFormatterTest("%#+v", v, "("+vt+")"+vs) - addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs) - addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%#+v", nv, "(*"+vt+")"+"") - - // Max int16. - v2 := int16(32767) - nv2 := (*int16)(nil) - pv2 := &v2 - v2Addr := fmt.Sprintf("%p", pv2) - pv2Addr := fmt.Sprintf("%p", &pv2) - v2t := "int16" - v2s := "32767" - addFormatterTest("%v", v2, v2s) - addFormatterTest("%v", pv2, "<*>"+v2s) - addFormatterTest("%v", &pv2, "<**>"+v2s) - addFormatterTest("%v", nv2, "") - addFormatterTest("%+v", v2, v2s) - addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2s) - addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2s) - addFormatterTest("%+v", nv2, "") - addFormatterTest("%#v", v2, "("+v2t+")"+v2s) - addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2s) - addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2s) - addFormatterTest("%#v", nv2, "(*"+v2t+")"+"") - addFormatterTest("%#+v", v2, "("+v2t+")"+v2s) - addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2s) - addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2s) - addFormatterTest("%#+v", nv2, "(*"+v2t+")"+"") - - // Max int32. - v3 := int32(2147483647) - nv3 := (*int32)(nil) - pv3 := &v3 - v3Addr := fmt.Sprintf("%p", pv3) - pv3Addr := fmt.Sprintf("%p", &pv3) - v3t := "int32" - v3s := "2147483647" - addFormatterTest("%v", v3, v3s) - addFormatterTest("%v", pv3, "<*>"+v3s) - addFormatterTest("%v", &pv3, "<**>"+v3s) - addFormatterTest("%v", nv3, "") - addFormatterTest("%+v", v3, v3s) - addFormatterTest("%+v", pv3, "<*>("+v3Addr+")"+v3s) - addFormatterTest("%+v", &pv3, "<**>("+pv3Addr+"->"+v3Addr+")"+v3s) - addFormatterTest("%+v", nv3, "") - addFormatterTest("%#v", v3, "("+v3t+")"+v3s) - addFormatterTest("%#v", pv3, "(*"+v3t+")"+v3s) - addFormatterTest("%#v", &pv3, "(**"+v3t+")"+v3s) - addFormatterTest("%#v", nv3, "(*"+v3t+")"+"") - addFormatterTest("%#+v", v3, "("+v3t+")"+v3s) - addFormatterTest("%#+v", pv3, "(*"+v3t+")("+v3Addr+")"+v3s) - addFormatterTest("%#+v", &pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")"+v3s) - addFormatterTest("%#v", nv3, "(*"+v3t+")"+"") - - // Max int64. - v4 := int64(9223372036854775807) - nv4 := (*int64)(nil) - pv4 := &v4 - v4Addr := fmt.Sprintf("%p", pv4) - pv4Addr := fmt.Sprintf("%p", &pv4) - v4t := "int64" - v4s := "9223372036854775807" - addFormatterTest("%v", v4, v4s) - addFormatterTest("%v", pv4, "<*>"+v4s) - addFormatterTest("%v", &pv4, "<**>"+v4s) - addFormatterTest("%v", nv4, "") - addFormatterTest("%+v", v4, v4s) - addFormatterTest("%+v", pv4, "<*>("+v4Addr+")"+v4s) - addFormatterTest("%+v", &pv4, "<**>("+pv4Addr+"->"+v4Addr+")"+v4s) - addFormatterTest("%+v", nv4, "") - addFormatterTest("%#v", v4, "("+v4t+")"+v4s) - addFormatterTest("%#v", pv4, "(*"+v4t+")"+v4s) - addFormatterTest("%#v", &pv4, "(**"+v4t+")"+v4s) - addFormatterTest("%#v", nv4, "(*"+v4t+")"+"") - addFormatterTest("%#+v", v4, "("+v4t+")"+v4s) - addFormatterTest("%#+v", pv4, "(*"+v4t+")("+v4Addr+")"+v4s) - addFormatterTest("%#+v", &pv4, "(**"+v4t+")("+pv4Addr+"->"+v4Addr+")"+v4s) - addFormatterTest("%#+v", nv4, "(*"+v4t+")"+"") - - // Max int. - v5 := int(2147483647) - nv5 := (*int)(nil) - pv5 := &v5 - v5Addr := fmt.Sprintf("%p", pv5) - pv5Addr := fmt.Sprintf("%p", &pv5) - v5t := "int" - v5s := "2147483647" - addFormatterTest("%v", v5, v5s) - addFormatterTest("%v", pv5, "<*>"+v5s) - addFormatterTest("%v", &pv5, "<**>"+v5s) - addFormatterTest("%v", nv5, "") - addFormatterTest("%+v", v5, v5s) - addFormatterTest("%+v", pv5, "<*>("+v5Addr+")"+v5s) - addFormatterTest("%+v", &pv5, "<**>("+pv5Addr+"->"+v5Addr+")"+v5s) - addFormatterTest("%+v", nv5, "") - addFormatterTest("%#v", v5, "("+v5t+")"+v5s) - addFormatterTest("%#v", pv5, "(*"+v5t+")"+v5s) - addFormatterTest("%#v", &pv5, "(**"+v5t+")"+v5s) - addFormatterTest("%#v", nv5, "(*"+v5t+")"+"") - addFormatterTest("%#+v", v5, "("+v5t+")"+v5s) - addFormatterTest("%#+v", pv5, "(*"+v5t+")("+v5Addr+")"+v5s) - addFormatterTest("%#+v", &pv5, "(**"+v5t+")("+pv5Addr+"->"+v5Addr+")"+v5s) - addFormatterTest("%#+v", nv5, "(*"+v5t+")"+"") -} - -func addUintFormatterTests() { - // Max uint8. - v := uint8(255) - nv := (*uint8)(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "uint8" - vs := "255" - addFormatterTest("%v", v, vs) - addFormatterTest("%v", pv, "<*>"+vs) - addFormatterTest("%v", &pv, "<**>"+vs) - addFormatterTest("%v", nv, "") - addFormatterTest("%+v", v, vs) - addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs) - addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%+v", nv, "") - addFormatterTest("%#v", v, "("+vt+")"+vs) - addFormatterTest("%#v", pv, "(*"+vt+")"+vs) - addFormatterTest("%#v", &pv, "(**"+vt+")"+vs) - addFormatterTest("%#v", nv, "(*"+vt+")"+"") - addFormatterTest("%#+v", v, "("+vt+")"+vs) - addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs) - addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%#+v", nv, "(*"+vt+")"+"") - - // Max uint16. - v2 := uint16(65535) - nv2 := (*uint16)(nil) - pv2 := &v2 - v2Addr := fmt.Sprintf("%p", pv2) - pv2Addr := fmt.Sprintf("%p", &pv2) - v2t := "uint16" - v2s := "65535" - addFormatterTest("%v", v2, v2s) - addFormatterTest("%v", pv2, "<*>"+v2s) - addFormatterTest("%v", &pv2, "<**>"+v2s) - addFormatterTest("%v", nv2, "") - addFormatterTest("%+v", v2, v2s) - addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2s) - addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2s) - addFormatterTest("%+v", nv2, "") - addFormatterTest("%#v", v2, "("+v2t+")"+v2s) - addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2s) - addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2s) - addFormatterTest("%#v", nv2, "(*"+v2t+")"+"") - addFormatterTest("%#+v", v2, "("+v2t+")"+v2s) - addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2s) - addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2s) - addFormatterTest("%#+v", nv2, "(*"+v2t+")"+"") - - // Max uint32. - v3 := uint32(4294967295) - nv3 := (*uint32)(nil) - pv3 := &v3 - v3Addr := fmt.Sprintf("%p", pv3) - pv3Addr := fmt.Sprintf("%p", &pv3) - v3t := "uint32" - v3s := "4294967295" - addFormatterTest("%v", v3, v3s) - addFormatterTest("%v", pv3, "<*>"+v3s) - addFormatterTest("%v", &pv3, "<**>"+v3s) - addFormatterTest("%v", nv3, "") - addFormatterTest("%+v", v3, v3s) - addFormatterTest("%+v", pv3, "<*>("+v3Addr+")"+v3s) - addFormatterTest("%+v", &pv3, "<**>("+pv3Addr+"->"+v3Addr+")"+v3s) - addFormatterTest("%+v", nv3, "") - addFormatterTest("%#v", v3, "("+v3t+")"+v3s) - addFormatterTest("%#v", pv3, "(*"+v3t+")"+v3s) - addFormatterTest("%#v", &pv3, "(**"+v3t+")"+v3s) - addFormatterTest("%#v", nv3, "(*"+v3t+")"+"") - addFormatterTest("%#+v", v3, "("+v3t+")"+v3s) - addFormatterTest("%#+v", pv3, "(*"+v3t+")("+v3Addr+")"+v3s) - addFormatterTest("%#+v", &pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")"+v3s) - addFormatterTest("%#v", nv3, "(*"+v3t+")"+"") - - // Max uint64. - v4 := uint64(18446744073709551615) - nv4 := (*uint64)(nil) - pv4 := &v4 - v4Addr := fmt.Sprintf("%p", pv4) - pv4Addr := fmt.Sprintf("%p", &pv4) - v4t := "uint64" - v4s := "18446744073709551615" - addFormatterTest("%v", v4, v4s) - addFormatterTest("%v", pv4, "<*>"+v4s) - addFormatterTest("%v", &pv4, "<**>"+v4s) - addFormatterTest("%v", nv4, "") - addFormatterTest("%+v", v4, v4s) - addFormatterTest("%+v", pv4, "<*>("+v4Addr+")"+v4s) - addFormatterTest("%+v", &pv4, "<**>("+pv4Addr+"->"+v4Addr+")"+v4s) - addFormatterTest("%+v", nv4, "") - addFormatterTest("%#v", v4, "("+v4t+")"+v4s) - addFormatterTest("%#v", pv4, "(*"+v4t+")"+v4s) - addFormatterTest("%#v", &pv4, "(**"+v4t+")"+v4s) - addFormatterTest("%#v", nv4, "(*"+v4t+")"+"") - addFormatterTest("%#+v", v4, "("+v4t+")"+v4s) - addFormatterTest("%#+v", pv4, "(*"+v4t+")("+v4Addr+")"+v4s) - addFormatterTest("%#+v", &pv4, "(**"+v4t+")("+pv4Addr+"->"+v4Addr+")"+v4s) - addFormatterTest("%#+v", nv4, "(*"+v4t+")"+"") - - // Max uint. - v5 := uint(4294967295) - nv5 := (*uint)(nil) - pv5 := &v5 - v5Addr := fmt.Sprintf("%p", pv5) - pv5Addr := fmt.Sprintf("%p", &pv5) - v5t := "uint" - v5s := "4294967295" - addFormatterTest("%v", v5, v5s) - addFormatterTest("%v", pv5, "<*>"+v5s) - addFormatterTest("%v", &pv5, "<**>"+v5s) - addFormatterTest("%v", nv5, "") - addFormatterTest("%+v", v5, v5s) - addFormatterTest("%+v", pv5, "<*>("+v5Addr+")"+v5s) - addFormatterTest("%+v", &pv5, "<**>("+pv5Addr+"->"+v5Addr+")"+v5s) - addFormatterTest("%+v", nv5, "") - addFormatterTest("%#v", v5, "("+v5t+")"+v5s) - addFormatterTest("%#v", pv5, "(*"+v5t+")"+v5s) - addFormatterTest("%#v", &pv5, "(**"+v5t+")"+v5s) - addFormatterTest("%#v", nv5, "(*"+v5t+")"+"") - addFormatterTest("%#+v", v5, "("+v5t+")"+v5s) - addFormatterTest("%#+v", pv5, "(*"+v5t+")("+v5Addr+")"+v5s) - addFormatterTest("%#+v", &pv5, "(**"+v5t+")("+pv5Addr+"->"+v5Addr+")"+v5s) - addFormatterTest("%#v", nv5, "(*"+v5t+")"+"") -} - -func addBoolFormatterTests() { - // Boolean true. - v := bool(true) - nv := (*bool)(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "bool" - vs := "true" - addFormatterTest("%v", v, vs) - addFormatterTest("%v", pv, "<*>"+vs) - addFormatterTest("%v", &pv, "<**>"+vs) - addFormatterTest("%v", nv, "") - addFormatterTest("%+v", v, vs) - addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs) - addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%+v", nv, "") - addFormatterTest("%#v", v, "("+vt+")"+vs) - addFormatterTest("%#v", pv, "(*"+vt+")"+vs) - addFormatterTest("%#v", &pv, "(**"+vt+")"+vs) - addFormatterTest("%#v", nv, "(*"+vt+")"+"") - addFormatterTest("%#+v", v, "("+vt+")"+vs) - addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs) - addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%#+v", nv, "(*"+vt+")"+"") - - // Boolean false. - v2 := bool(false) - pv2 := &v2 - v2Addr := fmt.Sprintf("%p", pv2) - pv2Addr := fmt.Sprintf("%p", &pv2) - v2t := "bool" - v2s := "false" - addFormatterTest("%v", v2, v2s) - addFormatterTest("%v", pv2, "<*>"+v2s) - addFormatterTest("%v", &pv2, "<**>"+v2s) - addFormatterTest("%+v", v2, v2s) - addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2s) - addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2s) - addFormatterTest("%#v", v2, "("+v2t+")"+v2s) - addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2s) - addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2s) - addFormatterTest("%#+v", v2, "("+v2t+")"+v2s) - addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2s) - addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2s) -} - -func addFloatFormatterTests() { - // Standard float32. - v := float32(3.1415) - nv := (*float32)(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "float32" - vs := "3.1415" - addFormatterTest("%v", v, vs) - addFormatterTest("%v", pv, "<*>"+vs) - addFormatterTest("%v", &pv, "<**>"+vs) - addFormatterTest("%v", nv, "") - addFormatterTest("%+v", v, vs) - addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs) - addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%+v", nv, "") - addFormatterTest("%#v", v, "("+vt+")"+vs) - addFormatterTest("%#v", pv, "(*"+vt+")"+vs) - addFormatterTest("%#v", &pv, "(**"+vt+")"+vs) - addFormatterTest("%#v", nv, "(*"+vt+")"+"") - addFormatterTest("%#+v", v, "("+vt+")"+vs) - addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs) - addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%#+v", nv, "(*"+vt+")"+"") - - // Standard float64. - v2 := float64(3.1415926) - nv2 := (*float64)(nil) - pv2 := &v2 - v2Addr := fmt.Sprintf("%p", pv2) - pv2Addr := fmt.Sprintf("%p", &pv2) - v2t := "float64" - v2s := "3.1415926" - addFormatterTest("%v", v2, v2s) - addFormatterTest("%v", pv2, "<*>"+v2s) - addFormatterTest("%v", &pv2, "<**>"+v2s) - addFormatterTest("%+v", nv2, "") - addFormatterTest("%+v", v2, v2s) - addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2s) - addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2s) - addFormatterTest("%+v", nv2, "") - addFormatterTest("%#v", v2, "("+v2t+")"+v2s) - addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2s) - addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2s) - addFormatterTest("%#v", nv2, "(*"+v2t+")"+"") - addFormatterTest("%#+v", v2, "("+v2t+")"+v2s) - addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2s) - addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2s) - addFormatterTest("%#+v", nv2, "(*"+v2t+")"+"") -} - -func addComplexFormatterTests() { - // Standard complex64. - v := complex(float32(6), -2) - nv := (*complex64)(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "complex64" - vs := "(6-2i)" - addFormatterTest("%v", v, vs) - addFormatterTest("%v", pv, "<*>"+vs) - addFormatterTest("%v", &pv, "<**>"+vs) - addFormatterTest("%+v", nv, "") - addFormatterTest("%+v", v, vs) - addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs) - addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%+v", nv, "") - addFormatterTest("%#v", v, "("+vt+")"+vs) - addFormatterTest("%#v", pv, "(*"+vt+")"+vs) - addFormatterTest("%#v", &pv, "(**"+vt+")"+vs) - addFormatterTest("%#v", nv, "(*"+vt+")"+"") - addFormatterTest("%#+v", v, "("+vt+")"+vs) - addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs) - addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%#+v", nv, "(*"+vt+")"+"") - - // Standard complex128. - v2 := complex(float64(-6), 2) - nv2 := (*complex128)(nil) - pv2 := &v2 - v2Addr := fmt.Sprintf("%p", pv2) - pv2Addr := fmt.Sprintf("%p", &pv2) - v2t := "complex128" - v2s := "(-6+2i)" - addFormatterTest("%v", v2, v2s) - addFormatterTest("%v", pv2, "<*>"+v2s) - addFormatterTest("%v", &pv2, "<**>"+v2s) - addFormatterTest("%+v", nv2, "") - addFormatterTest("%+v", v2, v2s) - addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2s) - addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2s) - addFormatterTest("%+v", nv2, "") - addFormatterTest("%#v", v2, "("+v2t+")"+v2s) - addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2s) - addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2s) - addFormatterTest("%#v", nv2, "(*"+v2t+")"+"") - addFormatterTest("%#+v", v2, "("+v2t+")"+v2s) - addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2s) - addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2s) - addFormatterTest("%#+v", nv2, "(*"+v2t+")"+"") -} - -func addArrayFormatterTests() { - // Array containing standard ints. - v := [3]int{1, 2, 3} - nv := (*[3]int)(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "[3]int" - vs := "[1 2 3]" - addFormatterTest("%v", v, vs) - addFormatterTest("%v", pv, "<*>"+vs) - addFormatterTest("%v", &pv, "<**>"+vs) - addFormatterTest("%+v", nv, "") - addFormatterTest("%+v", v, vs) - addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs) - addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%+v", nv, "") - addFormatterTest("%#v", v, "("+vt+")"+vs) - addFormatterTest("%#v", pv, "(*"+vt+")"+vs) - addFormatterTest("%#v", &pv, "(**"+vt+")"+vs) - addFormatterTest("%#v", nv, "(*"+vt+")"+"") - addFormatterTest("%#+v", v, "("+vt+")"+vs) - addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs) - addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%#+v", nv, "(*"+vt+")"+"") - - // Array containing type with custom formatter on pointer receiver only. - v2 := [3]pstringer{"1", "2", "3"} - nv2 := (*[3]pstringer)(nil) - pv2 := &v2 - v2Addr := fmt.Sprintf("%p", pv2) - pv2Addr := fmt.Sprintf("%p", &pv2) - v2t := "[3]spew_test.pstringer" - v2sp := "[stringer 1 stringer 2 stringer 3]" - v2s := v2sp - if spew.UnsafeDisabled { - v2s = "[1 2 3]" - } - addFormatterTest("%v", v2, v2s) - addFormatterTest("%v", pv2, "<*>"+v2sp) - addFormatterTest("%v", &pv2, "<**>"+v2sp) - addFormatterTest("%+v", nv2, "") - addFormatterTest("%+v", v2, v2s) - addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2sp) - addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2sp) - addFormatterTest("%+v", nv2, "") - addFormatterTest("%#v", v2, "("+v2t+")"+v2s) - addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2sp) - addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2sp) - addFormatterTest("%#v", nv2, "(*"+v2t+")"+"") - addFormatterTest("%#+v", v2, "("+v2t+")"+v2s) - addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2sp) - addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2sp) - addFormatterTest("%#+v", nv2, "(*"+v2t+")"+"") - - // Array containing interfaces. - v3 := [3]interface{}{"one", int(2), uint(3)} - nv3 := (*[3]interface{})(nil) - pv3 := &v3 - v3Addr := fmt.Sprintf("%p", pv3) - pv3Addr := fmt.Sprintf("%p", &pv3) - v3t := "[3]interface {}" - v3t2 := "string" - v3t3 := "int" - v3t4 := "uint" - v3s := "[one 2 3]" - v3s2 := "[(" + v3t2 + ")one (" + v3t3 + ")2 (" + v3t4 + ")3]" - addFormatterTest("%v", v3, v3s) - addFormatterTest("%v", pv3, "<*>"+v3s) - addFormatterTest("%v", &pv3, "<**>"+v3s) - addFormatterTest("%+v", nv3, "") - addFormatterTest("%+v", v3, v3s) - addFormatterTest("%+v", pv3, "<*>("+v3Addr+")"+v3s) - addFormatterTest("%+v", &pv3, "<**>("+pv3Addr+"->"+v3Addr+")"+v3s) - addFormatterTest("%+v", nv3, "") - addFormatterTest("%#v", v3, "("+v3t+")"+v3s2) - addFormatterTest("%#v", pv3, "(*"+v3t+")"+v3s2) - addFormatterTest("%#v", &pv3, "(**"+v3t+")"+v3s2) - addFormatterTest("%#v", nv3, "(*"+v3t+")"+"") - addFormatterTest("%#+v", v3, "("+v3t+")"+v3s2) - addFormatterTest("%#+v", pv3, "(*"+v3t+")("+v3Addr+")"+v3s2) - addFormatterTest("%#+v", &pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")"+v3s2) - addFormatterTest("%#+v", nv3, "(*"+v3t+")"+"") -} - -func addSliceFormatterTests() { - // Slice containing standard float32 values. - v := []float32{3.14, 6.28, 12.56} - nv := (*[]float32)(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "[]float32" - vs := "[3.14 6.28 12.56]" - addFormatterTest("%v", v, vs) - addFormatterTest("%v", pv, "<*>"+vs) - addFormatterTest("%v", &pv, "<**>"+vs) - addFormatterTest("%+v", nv, "") - addFormatterTest("%+v", v, vs) - addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs) - addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%+v", nv, "") - addFormatterTest("%#v", v, "("+vt+")"+vs) - addFormatterTest("%#v", pv, "(*"+vt+")"+vs) - addFormatterTest("%#v", &pv, "(**"+vt+")"+vs) - addFormatterTest("%#v", nv, "(*"+vt+")"+"") - addFormatterTest("%#+v", v, "("+vt+")"+vs) - addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs) - addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%#+v", nv, "(*"+vt+")"+"") - - // Slice containing type with custom formatter on pointer receiver only. - v2 := []pstringer{"1", "2", "3"} - nv2 := (*[]pstringer)(nil) - pv2 := &v2 - v2Addr := fmt.Sprintf("%p", pv2) - pv2Addr := fmt.Sprintf("%p", &pv2) - v2t := "[]spew_test.pstringer" - v2s := "[stringer 1 stringer 2 stringer 3]" - addFormatterTest("%v", v2, v2s) - addFormatterTest("%v", pv2, "<*>"+v2s) - addFormatterTest("%v", &pv2, "<**>"+v2s) - addFormatterTest("%+v", nv2, "") - addFormatterTest("%+v", v2, v2s) - addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2s) - addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2s) - addFormatterTest("%+v", nv2, "") - addFormatterTest("%#v", v2, "("+v2t+")"+v2s) - addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2s) - addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2s) - addFormatterTest("%#v", nv2, "(*"+v2t+")"+"") - addFormatterTest("%#+v", v2, "("+v2t+")"+v2s) - addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2s) - addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2s) - addFormatterTest("%#+v", nv2, "(*"+v2t+")"+"") - - // Slice containing interfaces. - v3 := []interface{}{"one", int(2), uint(3), nil} - nv3 := (*[]interface{})(nil) - pv3 := &v3 - v3Addr := fmt.Sprintf("%p", pv3) - pv3Addr := fmt.Sprintf("%p", &pv3) - v3t := "[]interface {}" - v3t2 := "string" - v3t3 := "int" - v3t4 := "uint" - v3t5 := "interface {}" - v3s := "[one 2 3 ]" - v3s2 := "[(" + v3t2 + ")one (" + v3t3 + ")2 (" + v3t4 + ")3 (" + v3t5 + - ")]" - addFormatterTest("%v", v3, v3s) - addFormatterTest("%v", pv3, "<*>"+v3s) - addFormatterTest("%v", &pv3, "<**>"+v3s) - addFormatterTest("%+v", nv3, "") - addFormatterTest("%+v", v3, v3s) - addFormatterTest("%+v", pv3, "<*>("+v3Addr+")"+v3s) - addFormatterTest("%+v", &pv3, "<**>("+pv3Addr+"->"+v3Addr+")"+v3s) - addFormatterTest("%+v", nv3, "") - addFormatterTest("%#v", v3, "("+v3t+")"+v3s2) - addFormatterTest("%#v", pv3, "(*"+v3t+")"+v3s2) - addFormatterTest("%#v", &pv3, "(**"+v3t+")"+v3s2) - addFormatterTest("%#v", nv3, "(*"+v3t+")"+"") - addFormatterTest("%#+v", v3, "("+v3t+")"+v3s2) - addFormatterTest("%#+v", pv3, "(*"+v3t+")("+v3Addr+")"+v3s2) - addFormatterTest("%#+v", &pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")"+v3s2) - addFormatterTest("%#+v", nv3, "(*"+v3t+")"+"") - - // Nil slice. - var v4 []int - nv4 := (*[]int)(nil) - pv4 := &v4 - v4Addr := fmt.Sprintf("%p", pv4) - pv4Addr := fmt.Sprintf("%p", &pv4) - v4t := "[]int" - v4s := "" - addFormatterTest("%v", v4, v4s) - addFormatterTest("%v", pv4, "<*>"+v4s) - addFormatterTest("%v", &pv4, "<**>"+v4s) - addFormatterTest("%+v", nv4, "") - addFormatterTest("%+v", v4, v4s) - addFormatterTest("%+v", pv4, "<*>("+v4Addr+")"+v4s) - addFormatterTest("%+v", &pv4, "<**>("+pv4Addr+"->"+v4Addr+")"+v4s) - addFormatterTest("%+v", nv4, "") - addFormatterTest("%#v", v4, "("+v4t+")"+v4s) - addFormatterTest("%#v", pv4, "(*"+v4t+")"+v4s) - addFormatterTest("%#v", &pv4, "(**"+v4t+")"+v4s) - addFormatterTest("%#v", nv4, "(*"+v4t+")"+"") - addFormatterTest("%#+v", v4, "("+v4t+")"+v4s) - addFormatterTest("%#+v", pv4, "(*"+v4t+")("+v4Addr+")"+v4s) - addFormatterTest("%#+v", &pv4, "(**"+v4t+")("+pv4Addr+"->"+v4Addr+")"+v4s) - addFormatterTest("%#+v", nv4, "(*"+v4t+")"+"") -} - -func addStringFormatterTests() { - // Standard string. - v := "test" - nv := (*string)(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "string" - vs := "test" - addFormatterTest("%v", v, vs) - addFormatterTest("%v", pv, "<*>"+vs) - addFormatterTest("%v", &pv, "<**>"+vs) - addFormatterTest("%+v", nv, "") - addFormatterTest("%+v", v, vs) - addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs) - addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%+v", nv, "") - addFormatterTest("%#v", v, "("+vt+")"+vs) - addFormatterTest("%#v", pv, "(*"+vt+")"+vs) - addFormatterTest("%#v", &pv, "(**"+vt+")"+vs) - addFormatterTest("%#v", nv, "(*"+vt+")"+"") - addFormatterTest("%#+v", v, "("+vt+")"+vs) - addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs) - addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%#+v", nv, "(*"+vt+")"+"") -} - -func addInterfaceFormatterTests() { - // Nil interface. - var v interface{} - nv := (*interface{})(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "interface {}" - vs := "" - addFormatterTest("%v", v, vs) - addFormatterTest("%v", pv, "<*>"+vs) - addFormatterTest("%v", &pv, "<**>"+vs) - addFormatterTest("%+v", nv, "") - addFormatterTest("%+v", v, vs) - addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs) - addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%+v", nv, "") - addFormatterTest("%#v", v, "("+vt+")"+vs) - addFormatterTest("%#v", pv, "(*"+vt+")"+vs) - addFormatterTest("%#v", &pv, "(**"+vt+")"+vs) - addFormatterTest("%#v", nv, "(*"+vt+")"+"") - addFormatterTest("%#+v", v, "("+vt+")"+vs) - addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs) - addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%#+v", nv, "(*"+vt+")"+"") - - // Sub-interface. - v2 := interface{}(uint16(65535)) - pv2 := &v2 - v2Addr := fmt.Sprintf("%p", pv2) - pv2Addr := fmt.Sprintf("%p", &pv2) - v2t := "uint16" - v2s := "65535" - addFormatterTest("%v", v2, v2s) - addFormatterTest("%v", pv2, "<*>"+v2s) - addFormatterTest("%v", &pv2, "<**>"+v2s) - addFormatterTest("%+v", v2, v2s) - addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2s) - addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2s) - addFormatterTest("%#v", v2, "("+v2t+")"+v2s) - addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2s) - addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2s) - addFormatterTest("%#+v", v2, "("+v2t+")"+v2s) - addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2s) - addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2s) -} - -func addMapFormatterTests() { - // Map with string keys and int vals. - v := map[string]int{"one": 1, "two": 2} - nilMap := map[string]int(nil) - nv := (*map[string]int)(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "map[string]int" - vs := "map[one:1 two:2]" - vs2 := "map[two:2 one:1]" - addFormatterTest("%v", v, vs, vs2) - addFormatterTest("%v", pv, "<*>"+vs, "<*>"+vs2) - addFormatterTest("%v", &pv, "<**>"+vs, "<**>"+vs2) - addFormatterTest("%+v", nilMap, "") - addFormatterTest("%+v", nv, "") - addFormatterTest("%+v", v, vs, vs2) - addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs, "<*>("+vAddr+")"+vs2) - addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs, - "<**>("+pvAddr+"->"+vAddr+")"+vs2) - addFormatterTest("%+v", nilMap, "") - addFormatterTest("%+v", nv, "") - addFormatterTest("%#v", v, "("+vt+")"+vs, "("+vt+")"+vs2) - addFormatterTest("%#v", pv, "(*"+vt+")"+vs, "(*"+vt+")"+vs2) - addFormatterTest("%#v", &pv, "(**"+vt+")"+vs, "(**"+vt+")"+vs2) - addFormatterTest("%#v", nilMap, "("+vt+")"+"") - addFormatterTest("%#v", nv, "(*"+vt+")"+"") - addFormatterTest("%#+v", v, "("+vt+")"+vs, "("+vt+")"+vs2) - addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs, - "(*"+vt+")("+vAddr+")"+vs2) - addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs, - "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs2) - addFormatterTest("%#+v", nilMap, "("+vt+")"+"") - addFormatterTest("%#+v", nv, "(*"+vt+")"+"") - - // Map with custom formatter type on pointer receiver only keys and vals. - v2 := map[pstringer]pstringer{"one": "1"} - nv2 := (*map[pstringer]pstringer)(nil) - pv2 := &v2 - v2Addr := fmt.Sprintf("%p", pv2) - pv2Addr := fmt.Sprintf("%p", &pv2) - v2t := "map[spew_test.pstringer]spew_test.pstringer" - v2s := "map[stringer one:stringer 1]" - if spew.UnsafeDisabled { - v2s = "map[one:1]" - } - addFormatterTest("%v", v2, v2s) - addFormatterTest("%v", pv2, "<*>"+v2s) - addFormatterTest("%v", &pv2, "<**>"+v2s) - addFormatterTest("%+v", nv2, "") - addFormatterTest("%+v", v2, v2s) - addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2s) - addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2s) - addFormatterTest("%+v", nv2, "") - addFormatterTest("%#v", v2, "("+v2t+")"+v2s) - addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2s) - addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2s) - addFormatterTest("%#v", nv2, "(*"+v2t+")"+"") - addFormatterTest("%#+v", v2, "("+v2t+")"+v2s) - addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2s) - addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2s) - addFormatterTest("%#+v", nv2, "(*"+v2t+")"+"") - - // Map with interface keys and values. - v3 := map[interface{}]interface{}{"one": 1} - nv3 := (*map[interface{}]interface{})(nil) - pv3 := &v3 - v3Addr := fmt.Sprintf("%p", pv3) - pv3Addr := fmt.Sprintf("%p", &pv3) - v3t := "map[interface {}]interface {}" - v3t1 := "string" - v3t2 := "int" - v3s := "map[one:1]" - v3s2 := "map[(" + v3t1 + ")one:(" + v3t2 + ")1]" - addFormatterTest("%v", v3, v3s) - addFormatterTest("%v", pv3, "<*>"+v3s) - addFormatterTest("%v", &pv3, "<**>"+v3s) - addFormatterTest("%+v", nv3, "") - addFormatterTest("%+v", v3, v3s) - addFormatterTest("%+v", pv3, "<*>("+v3Addr+")"+v3s) - addFormatterTest("%+v", &pv3, "<**>("+pv3Addr+"->"+v3Addr+")"+v3s) - addFormatterTest("%+v", nv3, "") - addFormatterTest("%#v", v3, "("+v3t+")"+v3s2) - addFormatterTest("%#v", pv3, "(*"+v3t+")"+v3s2) - addFormatterTest("%#v", &pv3, "(**"+v3t+")"+v3s2) - addFormatterTest("%#v", nv3, "(*"+v3t+")"+"") - addFormatterTest("%#+v", v3, "("+v3t+")"+v3s2) - addFormatterTest("%#+v", pv3, "(*"+v3t+")("+v3Addr+")"+v3s2) - addFormatterTest("%#+v", &pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")"+v3s2) - addFormatterTest("%#+v", nv3, "(*"+v3t+")"+"") - - // Map with nil interface value - v4 := map[string]interface{}{"nil": nil} - nv4 := (*map[string]interface{})(nil) - pv4 := &v4 - v4Addr := fmt.Sprintf("%p", pv4) - pv4Addr := fmt.Sprintf("%p", &pv4) - v4t := "map[string]interface {}" - v4t1 := "interface {}" - v4s := "map[nil:]" - v4s2 := "map[nil:(" + v4t1 + ")]" - addFormatterTest("%v", v4, v4s) - addFormatterTest("%v", pv4, "<*>"+v4s) - addFormatterTest("%v", &pv4, "<**>"+v4s) - addFormatterTest("%+v", nv4, "") - addFormatterTest("%+v", v4, v4s) - addFormatterTest("%+v", pv4, "<*>("+v4Addr+")"+v4s) - addFormatterTest("%+v", &pv4, "<**>("+pv4Addr+"->"+v4Addr+")"+v4s) - addFormatterTest("%+v", nv4, "") - addFormatterTest("%#v", v4, "("+v4t+")"+v4s2) - addFormatterTest("%#v", pv4, "(*"+v4t+")"+v4s2) - addFormatterTest("%#v", &pv4, "(**"+v4t+")"+v4s2) - addFormatterTest("%#v", nv4, "(*"+v4t+")"+"") - addFormatterTest("%#+v", v4, "("+v4t+")"+v4s2) - addFormatterTest("%#+v", pv4, "(*"+v4t+")("+v4Addr+")"+v4s2) - addFormatterTest("%#+v", &pv4, "(**"+v4t+")("+pv4Addr+"->"+v4Addr+")"+v4s2) - addFormatterTest("%#+v", nv4, "(*"+v4t+")"+"") -} - -func addStructFormatterTests() { - // Struct with primitives. - type s1 struct { - a int8 - b uint8 - } - v := s1{127, 255} - nv := (*s1)(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "spew_test.s1" - vt2 := "int8" - vt3 := "uint8" - vs := "{127 255}" - vs2 := "{a:127 b:255}" - vs3 := "{a:(" + vt2 + ")127 b:(" + vt3 + ")255}" - addFormatterTest("%v", v, vs) - addFormatterTest("%v", pv, "<*>"+vs) - addFormatterTest("%v", &pv, "<**>"+vs) - addFormatterTest("%+v", nv, "") - addFormatterTest("%+v", v, vs2) - addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs2) - addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs2) - addFormatterTest("%+v", nv, "") - addFormatterTest("%#v", v, "("+vt+")"+vs3) - addFormatterTest("%#v", pv, "(*"+vt+")"+vs3) - addFormatterTest("%#v", &pv, "(**"+vt+")"+vs3) - addFormatterTest("%#v", nv, "(*"+vt+")"+"") - addFormatterTest("%#+v", v, "("+vt+")"+vs3) - addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs3) - addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs3) - addFormatterTest("%#+v", nv, "(*"+vt+")"+"") - - // Struct that contains another struct. - type s2 struct { - s1 s1 - b bool - } - v2 := s2{s1{127, 255}, true} - nv2 := (*s2)(nil) - pv2 := &v2 - v2Addr := fmt.Sprintf("%p", pv2) - pv2Addr := fmt.Sprintf("%p", &pv2) - v2t := "spew_test.s2" - v2t2 := "spew_test.s1" - v2t3 := "int8" - v2t4 := "uint8" - v2t5 := "bool" - v2s := "{{127 255} true}" - v2s2 := "{s1:{a:127 b:255} b:true}" - v2s3 := "{s1:(" + v2t2 + "){a:(" + v2t3 + ")127 b:(" + v2t4 + ")255} b:(" + - v2t5 + ")true}" - addFormatterTest("%v", v2, v2s) - addFormatterTest("%v", pv2, "<*>"+v2s) - addFormatterTest("%v", &pv2, "<**>"+v2s) - addFormatterTest("%+v", nv2, "") - addFormatterTest("%+v", v2, v2s2) - addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2s2) - addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2s2) - addFormatterTest("%+v", nv2, "") - addFormatterTest("%#v", v2, "("+v2t+")"+v2s3) - addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2s3) - addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2s3) - addFormatterTest("%#v", nv2, "(*"+v2t+")"+"") - addFormatterTest("%#+v", v2, "("+v2t+")"+v2s3) - addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2s3) - addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2s3) - addFormatterTest("%#+v", nv2, "(*"+v2t+")"+"") - - // Struct that contains custom type with Stringer pointer interface via both - // exported and unexported fields. - type s3 struct { - s pstringer - S pstringer - } - v3 := s3{"test", "test2"} - nv3 := (*s3)(nil) - pv3 := &v3 - v3Addr := fmt.Sprintf("%p", pv3) - pv3Addr := fmt.Sprintf("%p", &pv3) - v3t := "spew_test.s3" - v3t2 := "spew_test.pstringer" - v3s := "{stringer test stringer test2}" - v3sp := v3s - v3s2 := "{s:stringer test S:stringer test2}" - v3s2p := v3s2 - v3s3 := "{s:(" + v3t2 + ")stringer test S:(" + v3t2 + ")stringer test2}" - v3s3p := v3s3 - if spew.UnsafeDisabled { - v3s = "{test test2}" - v3sp = "{test stringer test2}" - v3s2 = "{s:test S:test2}" - v3s2p = "{s:test S:stringer test2}" - v3s3 = "{s:(" + v3t2 + ")test S:(" + v3t2 + ")test2}" - v3s3p = "{s:(" + v3t2 + ")test S:(" + v3t2 + ")stringer test2}" - } - addFormatterTest("%v", v3, v3s) - addFormatterTest("%v", pv3, "<*>"+v3sp) - addFormatterTest("%v", &pv3, "<**>"+v3sp) - addFormatterTest("%+v", nv3, "") - addFormatterTest("%+v", v3, v3s2) - addFormatterTest("%+v", pv3, "<*>("+v3Addr+")"+v3s2p) - addFormatterTest("%+v", &pv3, "<**>("+pv3Addr+"->"+v3Addr+")"+v3s2p) - addFormatterTest("%+v", nv3, "") - addFormatterTest("%#v", v3, "("+v3t+")"+v3s3) - addFormatterTest("%#v", pv3, "(*"+v3t+")"+v3s3p) - addFormatterTest("%#v", &pv3, "(**"+v3t+")"+v3s3p) - addFormatterTest("%#v", nv3, "(*"+v3t+")"+"") - addFormatterTest("%#+v", v3, "("+v3t+")"+v3s3) - addFormatterTest("%#+v", pv3, "(*"+v3t+")("+v3Addr+")"+v3s3p) - addFormatterTest("%#+v", &pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")"+v3s3p) - addFormatterTest("%#+v", nv3, "(*"+v3t+")"+"") - - // Struct that contains embedded struct and field to same struct. - e := embed{"embedstr"} - v4 := embedwrap{embed: &e, e: &e} - nv4 := (*embedwrap)(nil) - pv4 := &v4 - eAddr := fmt.Sprintf("%p", &e) - v4Addr := fmt.Sprintf("%p", pv4) - pv4Addr := fmt.Sprintf("%p", &pv4) - v4t := "spew_test.embedwrap" - v4t2 := "spew_test.embed" - v4t3 := "string" - v4s := "{<*>{embedstr} <*>{embedstr}}" - v4s2 := "{embed:<*>(" + eAddr + "){a:embedstr} e:<*>(" + eAddr + - "){a:embedstr}}" - v4s3 := "{embed:(*" + v4t2 + "){a:(" + v4t3 + ")embedstr} e:(*" + v4t2 + - "){a:(" + v4t3 + ")embedstr}}" - v4s4 := "{embed:(*" + v4t2 + ")(" + eAddr + "){a:(" + v4t3 + - ")embedstr} e:(*" + v4t2 + ")(" + eAddr + "){a:(" + v4t3 + ")embedstr}}" - addFormatterTest("%v", v4, v4s) - addFormatterTest("%v", pv4, "<*>"+v4s) - addFormatterTest("%v", &pv4, "<**>"+v4s) - addFormatterTest("%+v", nv4, "") - addFormatterTest("%+v", v4, v4s2) - addFormatterTest("%+v", pv4, "<*>("+v4Addr+")"+v4s2) - addFormatterTest("%+v", &pv4, "<**>("+pv4Addr+"->"+v4Addr+")"+v4s2) - addFormatterTest("%+v", nv4, "") - addFormatterTest("%#v", v4, "("+v4t+")"+v4s3) - addFormatterTest("%#v", pv4, "(*"+v4t+")"+v4s3) - addFormatterTest("%#v", &pv4, "(**"+v4t+")"+v4s3) - addFormatterTest("%#v", nv4, "(*"+v4t+")"+"") - addFormatterTest("%#+v", v4, "("+v4t+")"+v4s4) - addFormatterTest("%#+v", pv4, "(*"+v4t+")("+v4Addr+")"+v4s4) - addFormatterTest("%#+v", &pv4, "(**"+v4t+")("+pv4Addr+"->"+v4Addr+")"+v4s4) - addFormatterTest("%#+v", nv4, "(*"+v4t+")"+"") -} - -func addUintptrFormatterTests() { - // Null pointer. - v := uintptr(0) - nv := (*uintptr)(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "uintptr" - vs := "" - addFormatterTest("%v", v, vs) - addFormatterTest("%v", pv, "<*>"+vs) - addFormatterTest("%v", &pv, "<**>"+vs) - addFormatterTest("%+v", nv, "") - addFormatterTest("%+v", v, vs) - addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs) - addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%+v", nv, "") - addFormatterTest("%#v", v, "("+vt+")"+vs) - addFormatterTest("%#v", pv, "(*"+vt+")"+vs) - addFormatterTest("%#v", &pv, "(**"+vt+")"+vs) - addFormatterTest("%#v", nv, "(*"+vt+")"+"") - addFormatterTest("%#+v", v, "("+vt+")"+vs) - addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs) - addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%#+v", nv, "(*"+vt+")"+"") - - // Address of real variable. - i := 1 - v2 := uintptr(unsafe.Pointer(&i)) - pv2 := &v2 - v2Addr := fmt.Sprintf("%p", pv2) - pv2Addr := fmt.Sprintf("%p", &pv2) - v2t := "uintptr" - v2s := fmt.Sprintf("%p", &i) - addFormatterTest("%v", v2, v2s) - addFormatterTest("%v", pv2, "<*>"+v2s) - addFormatterTest("%v", &pv2, "<**>"+v2s) - addFormatterTest("%+v", v2, v2s) - addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2s) - addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2s) - addFormatterTest("%#v", v2, "("+v2t+")"+v2s) - addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2s) - addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2s) - addFormatterTest("%#+v", v2, "("+v2t+")"+v2s) - addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2s) - addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2s) -} - -func addUnsafePointerFormatterTests() { - // Null pointer. - v := unsafe.Pointer(uintptr(0)) - nv := (*unsafe.Pointer)(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "unsafe.Pointer" - vs := "" - addFormatterTest("%v", v, vs) - addFormatterTest("%v", pv, "<*>"+vs) - addFormatterTest("%v", &pv, "<**>"+vs) - addFormatterTest("%+v", nv, "") - addFormatterTest("%+v", v, vs) - addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs) - addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%+v", nv, "") - addFormatterTest("%#v", v, "("+vt+")"+vs) - addFormatterTest("%#v", pv, "(*"+vt+")"+vs) - addFormatterTest("%#v", &pv, "(**"+vt+")"+vs) - addFormatterTest("%#v", nv, "(*"+vt+")"+"") - addFormatterTest("%#+v", v, "("+vt+")"+vs) - addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs) - addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%#+v", nv, "(*"+vt+")"+"") - - // Address of real variable. - i := 1 - v2 := unsafe.Pointer(&i) - pv2 := &v2 - v2Addr := fmt.Sprintf("%p", pv2) - pv2Addr := fmt.Sprintf("%p", &pv2) - v2t := "unsafe.Pointer" - v2s := fmt.Sprintf("%p", &i) - addFormatterTest("%v", v2, v2s) - addFormatterTest("%v", pv2, "<*>"+v2s) - addFormatterTest("%v", &pv2, "<**>"+v2s) - addFormatterTest("%+v", v2, v2s) - addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2s) - addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2s) - addFormatterTest("%#v", v2, "("+v2t+")"+v2s) - addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2s) - addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2s) - addFormatterTest("%#+v", v2, "("+v2t+")"+v2s) - addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2s) - addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2s) -} - -func addChanFormatterTests() { - // Nil channel. - var v chan int - pv := &v - nv := (*chan int)(nil) - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "chan int" - vs := "" - addFormatterTest("%v", v, vs) - addFormatterTest("%v", pv, "<*>"+vs) - addFormatterTest("%v", &pv, "<**>"+vs) - addFormatterTest("%+v", nv, "") - addFormatterTest("%+v", v, vs) - addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs) - addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%+v", nv, "") - addFormatterTest("%#v", v, "("+vt+")"+vs) - addFormatterTest("%#v", pv, "(*"+vt+")"+vs) - addFormatterTest("%#v", &pv, "(**"+vt+")"+vs) - addFormatterTest("%#v", nv, "(*"+vt+")"+"") - addFormatterTest("%#+v", v, "("+vt+")"+vs) - addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs) - addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%#+v", nv, "(*"+vt+")"+"") - - // Real channel. - v2 := make(chan int) - pv2 := &v2 - v2Addr := fmt.Sprintf("%p", pv2) - pv2Addr := fmt.Sprintf("%p", &pv2) - v2t := "chan int" - v2s := fmt.Sprintf("%p", v2) - addFormatterTest("%v", v2, v2s) - addFormatterTest("%v", pv2, "<*>"+v2s) - addFormatterTest("%v", &pv2, "<**>"+v2s) - addFormatterTest("%+v", v2, v2s) - addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2s) - addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2s) - addFormatterTest("%#v", v2, "("+v2t+")"+v2s) - addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2s) - addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2s) - addFormatterTest("%#+v", v2, "("+v2t+")"+v2s) - addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2s) - addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2s) -} - -func addFuncFormatterTests() { - // Function with no params and no returns. - v := addIntFormatterTests - nv := (*func())(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "func()" - vs := fmt.Sprintf("%p", v) - addFormatterTest("%v", v, vs) - addFormatterTest("%v", pv, "<*>"+vs) - addFormatterTest("%v", &pv, "<**>"+vs) - addFormatterTest("%+v", nv, "") - addFormatterTest("%+v", v, vs) - addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs) - addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%+v", nv, "") - addFormatterTest("%#v", v, "("+vt+")"+vs) - addFormatterTest("%#v", pv, "(*"+vt+")"+vs) - addFormatterTest("%#v", &pv, "(**"+vt+")"+vs) - addFormatterTest("%#v", nv, "(*"+vt+")"+"") - addFormatterTest("%#+v", v, "("+vt+")"+vs) - addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs) - addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%#+v", nv, "(*"+vt+")"+"") - - // Function with param and no returns. - v2 := TestFormatter - nv2 := (*func(*testing.T))(nil) - pv2 := &v2 - v2Addr := fmt.Sprintf("%p", pv2) - pv2Addr := fmt.Sprintf("%p", &pv2) - v2t := "func(*testing.T)" - v2s := fmt.Sprintf("%p", v2) - addFormatterTest("%v", v2, v2s) - addFormatterTest("%v", pv2, "<*>"+v2s) - addFormatterTest("%v", &pv2, "<**>"+v2s) - addFormatterTest("%+v", nv2, "") - addFormatterTest("%+v", v2, v2s) - addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2s) - addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2s) - addFormatterTest("%+v", nv2, "") - addFormatterTest("%#v", v2, "("+v2t+")"+v2s) - addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2s) - addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2s) - addFormatterTest("%#v", nv2, "(*"+v2t+")"+"") - addFormatterTest("%#+v", v2, "("+v2t+")"+v2s) - addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2s) - addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2s) - addFormatterTest("%#+v", nv2, "(*"+v2t+")"+"") - - // Function with multiple params and multiple returns. - var v3 = func(i int, s string) (b bool, err error) { - return true, nil - } - nv3 := (*func(int, string) (bool, error))(nil) - pv3 := &v3 - v3Addr := fmt.Sprintf("%p", pv3) - pv3Addr := fmt.Sprintf("%p", &pv3) - v3t := "func(int, string) (bool, error)" - v3s := fmt.Sprintf("%p", v3) - addFormatterTest("%v", v3, v3s) - addFormatterTest("%v", pv3, "<*>"+v3s) - addFormatterTest("%v", &pv3, "<**>"+v3s) - addFormatterTest("%+v", nv3, "") - addFormatterTest("%+v", v3, v3s) - addFormatterTest("%+v", pv3, "<*>("+v3Addr+")"+v3s) - addFormatterTest("%+v", &pv3, "<**>("+pv3Addr+"->"+v3Addr+")"+v3s) - addFormatterTest("%+v", nv3, "") - addFormatterTest("%#v", v3, "("+v3t+")"+v3s) - addFormatterTest("%#v", pv3, "(*"+v3t+")"+v3s) - addFormatterTest("%#v", &pv3, "(**"+v3t+")"+v3s) - addFormatterTest("%#v", nv3, "(*"+v3t+")"+"") - addFormatterTest("%#+v", v3, "("+v3t+")"+v3s) - addFormatterTest("%#+v", pv3, "(*"+v3t+")("+v3Addr+")"+v3s) - addFormatterTest("%#+v", &pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")"+v3s) - addFormatterTest("%#+v", nv3, "(*"+v3t+")"+"") -} - -func addCircularFormatterTests() { - // Struct that is circular through self referencing. - type circular struct { - c *circular - } - v := circular{nil} - v.c = &v - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "spew_test.circular" - vs := "{<*>{<*>}}" - vs2 := "{<*>}" - vs3 := "{c:<*>(" + vAddr + "){c:<*>(" + vAddr + ")}}" - vs4 := "{c:<*>(" + vAddr + ")}" - vs5 := "{c:(*" + vt + "){c:(*" + vt + ")}}" - vs6 := "{c:(*" + vt + ")}" - vs7 := "{c:(*" + vt + ")(" + vAddr + "){c:(*" + vt + ")(" + vAddr + - ")}}" - vs8 := "{c:(*" + vt + ")(" + vAddr + ")}" - addFormatterTest("%v", v, vs) - addFormatterTest("%v", pv, "<*>"+vs2) - addFormatterTest("%v", &pv, "<**>"+vs2) - addFormatterTest("%+v", v, vs3) - addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs4) - addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs4) - addFormatterTest("%#v", v, "("+vt+")"+vs5) - addFormatterTest("%#v", pv, "(*"+vt+")"+vs6) - addFormatterTest("%#v", &pv, "(**"+vt+")"+vs6) - addFormatterTest("%#+v", v, "("+vt+")"+vs7) - addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs8) - addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs8) - - // Structs that are circular through cross referencing. - v2 := xref1{nil} - ts2 := xref2{&v2} - v2.ps2 = &ts2 - pv2 := &v2 - ts2Addr := fmt.Sprintf("%p", &ts2) - v2Addr := fmt.Sprintf("%p", pv2) - pv2Addr := fmt.Sprintf("%p", &pv2) - v2t := "spew_test.xref1" - v2t2 := "spew_test.xref2" - v2s := "{<*>{<*>{<*>}}}" - v2s2 := "{<*>{<*>}}" - v2s3 := "{ps2:<*>(" + ts2Addr + "){ps1:<*>(" + v2Addr + "){ps2:<*>(" + - ts2Addr + ")}}}" - v2s4 := "{ps2:<*>(" + ts2Addr + "){ps1:<*>(" + v2Addr + ")}}" - v2s5 := "{ps2:(*" + v2t2 + "){ps1:(*" + v2t + "){ps2:(*" + v2t2 + - ")}}}" - v2s6 := "{ps2:(*" + v2t2 + "){ps1:(*" + v2t + ")}}" - v2s7 := "{ps2:(*" + v2t2 + ")(" + ts2Addr + "){ps1:(*" + v2t + - ")(" + v2Addr + "){ps2:(*" + v2t2 + ")(" + ts2Addr + - ")}}}" - v2s8 := "{ps2:(*" + v2t2 + ")(" + ts2Addr + "){ps1:(*" + v2t + - ")(" + v2Addr + ")}}" - addFormatterTest("%v", v2, v2s) - addFormatterTest("%v", pv2, "<*>"+v2s2) - addFormatterTest("%v", &pv2, "<**>"+v2s2) - addFormatterTest("%+v", v2, v2s3) - addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2s4) - addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2s4) - addFormatterTest("%#v", v2, "("+v2t+")"+v2s5) - addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2s6) - addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2s6) - addFormatterTest("%#+v", v2, "("+v2t+")"+v2s7) - addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2s8) - addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2s8) - - // Structs that are indirectly circular. - v3 := indirCir1{nil} - tic2 := indirCir2{nil} - tic3 := indirCir3{&v3} - tic2.ps3 = &tic3 - v3.ps2 = &tic2 - pv3 := &v3 - tic2Addr := fmt.Sprintf("%p", &tic2) - tic3Addr := fmt.Sprintf("%p", &tic3) - v3Addr := fmt.Sprintf("%p", pv3) - pv3Addr := fmt.Sprintf("%p", &pv3) - v3t := "spew_test.indirCir1" - v3t2 := "spew_test.indirCir2" - v3t3 := "spew_test.indirCir3" - v3s := "{<*>{<*>{<*>{<*>}}}}" - v3s2 := "{<*>{<*>{<*>}}}" - v3s3 := "{ps2:<*>(" + tic2Addr + "){ps3:<*>(" + tic3Addr + "){ps1:<*>(" + - v3Addr + "){ps2:<*>(" + tic2Addr + ")}}}}" - v3s4 := "{ps2:<*>(" + tic2Addr + "){ps3:<*>(" + tic3Addr + "){ps1:<*>(" + - v3Addr + ")}}}" - v3s5 := "{ps2:(*" + v3t2 + "){ps3:(*" + v3t3 + "){ps1:(*" + v3t + - "){ps2:(*" + v3t2 + ")}}}}" - v3s6 := "{ps2:(*" + v3t2 + "){ps3:(*" + v3t3 + "){ps1:(*" + v3t + - ")}}}" - v3s7 := "{ps2:(*" + v3t2 + ")(" + tic2Addr + "){ps3:(*" + v3t3 + ")(" + - tic3Addr + "){ps1:(*" + v3t + ")(" + v3Addr + "){ps2:(*" + v3t2 + - ")(" + tic2Addr + ")}}}}" - v3s8 := "{ps2:(*" + v3t2 + ")(" + tic2Addr + "){ps3:(*" + v3t3 + ")(" + - tic3Addr + "){ps1:(*" + v3t + ")(" + v3Addr + ")}}}" - addFormatterTest("%v", v3, v3s) - addFormatterTest("%v", pv3, "<*>"+v3s2) - addFormatterTest("%v", &pv3, "<**>"+v3s2) - addFormatterTest("%+v", v3, v3s3) - addFormatterTest("%+v", pv3, "<*>("+v3Addr+")"+v3s4) - addFormatterTest("%+v", &pv3, "<**>("+pv3Addr+"->"+v3Addr+")"+v3s4) - addFormatterTest("%#v", v3, "("+v3t+")"+v3s5) - addFormatterTest("%#v", pv3, "(*"+v3t+")"+v3s6) - addFormatterTest("%#v", &pv3, "(**"+v3t+")"+v3s6) - addFormatterTest("%#+v", v3, "("+v3t+")"+v3s7) - addFormatterTest("%#+v", pv3, "(*"+v3t+")("+v3Addr+")"+v3s8) - addFormatterTest("%#+v", &pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")"+v3s8) -} - -func addPanicFormatterTests() { - // Type that panics in its Stringer interface. - v := panicer(127) - nv := (*panicer)(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "spew_test.panicer" - vs := "(PANIC=test panic)127" - addFormatterTest("%v", v, vs) - addFormatterTest("%v", pv, "<*>"+vs) - addFormatterTest("%v", &pv, "<**>"+vs) - addFormatterTest("%v", nv, "") - addFormatterTest("%+v", v, vs) - addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs) - addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%+v", nv, "") - addFormatterTest("%#v", v, "("+vt+")"+vs) - addFormatterTest("%#v", pv, "(*"+vt+")"+vs) - addFormatterTest("%#v", &pv, "(**"+vt+")"+vs) - addFormatterTest("%#v", nv, "(*"+vt+")"+"") - addFormatterTest("%#+v", v, "("+vt+")"+vs) - addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs) - addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%#+v", nv, "(*"+vt+")"+"") -} - -func addErrorFormatterTests() { - // Type that has a custom Error interface. - v := customError(127) - nv := (*customError)(nil) - pv := &v - vAddr := fmt.Sprintf("%p", pv) - pvAddr := fmt.Sprintf("%p", &pv) - vt := "spew_test.customError" - vs := "error: 127" - addFormatterTest("%v", v, vs) - addFormatterTest("%v", pv, "<*>"+vs) - addFormatterTest("%v", &pv, "<**>"+vs) - addFormatterTest("%v", nv, "") - addFormatterTest("%+v", v, vs) - addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs) - addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%+v", nv, "") - addFormatterTest("%#v", v, "("+vt+")"+vs) - addFormatterTest("%#v", pv, "(*"+vt+")"+vs) - addFormatterTest("%#v", &pv, "(**"+vt+")"+vs) - addFormatterTest("%#v", nv, "(*"+vt+")"+"") - addFormatterTest("%#+v", v, "("+vt+")"+vs) - addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs) - addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs) - addFormatterTest("%#+v", nv, "(*"+vt+")"+"") -} - -func addPassthroughFormatterTests() { - // %x passthrough with uint. - v := uint(4294967295) - pv := &v - vAddr := fmt.Sprintf("%x", pv) - pvAddr := fmt.Sprintf("%x", &pv) - vs := "ffffffff" - addFormatterTest("%x", v, vs) - addFormatterTest("%x", pv, vAddr) - addFormatterTest("%x", &pv, pvAddr) - - // %#x passthrough with uint. - v2 := int(2147483647) - pv2 := &v2 - v2Addr := fmt.Sprintf("%#x", pv2) - pv2Addr := fmt.Sprintf("%#x", &pv2) - v2s := "0x7fffffff" - addFormatterTest("%#x", v2, v2s) - addFormatterTest("%#x", pv2, v2Addr) - addFormatterTest("%#x", &pv2, pv2Addr) - - // %f passthrough with precision. - addFormatterTest("%.2f", 3.1415, "3.14") - addFormatterTest("%.3f", 3.1415, "3.142") - addFormatterTest("%.4f", 3.1415, "3.1415") - - // %f passthrough with width and precision. - addFormatterTest("%5.2f", 3.1415, " 3.14") - addFormatterTest("%6.3f", 3.1415, " 3.142") - addFormatterTest("%7.4f", 3.1415, " 3.1415") - - // %d passthrough with width. - addFormatterTest("%3d", 127, "127") - addFormatterTest("%4d", 127, " 127") - addFormatterTest("%5d", 127, " 127") - - // %q passthrough with string. - addFormatterTest("%q", "test", "\"test\"") -} - -// TestFormatter executes all of the tests described by formatterTests. -func TestFormatter(t *testing.T) { - // Setup tests. - addIntFormatterTests() - addUintFormatterTests() - addBoolFormatterTests() - addFloatFormatterTests() - addComplexFormatterTests() - addArrayFormatterTests() - addSliceFormatterTests() - addStringFormatterTests() - addInterfaceFormatterTests() - addMapFormatterTests() - addStructFormatterTests() - addUintptrFormatterTests() - addUnsafePointerFormatterTests() - addChanFormatterTests() - addFuncFormatterTests() - addCircularFormatterTests() - addPanicFormatterTests() - addErrorFormatterTests() - addPassthroughFormatterTests() - - t.Logf("Running %d tests", len(formatterTests)) - for i, test := range formatterTests { - buf := new(bytes.Buffer) - spew.Fprintf(buf, test.format, test.in) - s := buf.String() - if testFailed(s, test.wants) { - t.Errorf("Formatter #%d format: %s got: %s %s", i, test.format, s, - stringizeWants(test.wants)) - continue - } - } -} - -type testStruct struct { - x int -} - -func (ts testStruct) String() string { - return fmt.Sprintf("ts.%d", ts.x) -} - -type testStructP struct { - x int -} - -func (ts *testStructP) String() string { - return fmt.Sprintf("ts.%d", ts.x) -} - -func TestPrintSortedKeys(t *testing.T) { - cfg := spew.ConfigState{SortKeys: true} - s := cfg.Sprint(map[int]string{1: "1", 3: "3", 2: "2"}) - expected := "map[1:1 2:2 3:3]" - if s != expected { - t.Errorf("Sorted keys mismatch 1:\n %v %v", s, expected) - } - - s = cfg.Sprint(map[stringer]int{"1": 1, "3": 3, "2": 2}) - expected = "map[stringer 1:1 stringer 2:2 stringer 3:3]" - if s != expected { - t.Errorf("Sorted keys mismatch 2:\n %v %v", s, expected) - } - - s = cfg.Sprint(map[pstringer]int{pstringer("1"): 1, pstringer("3"): 3, pstringer("2"): 2}) - expected = "map[stringer 1:1 stringer 2:2 stringer 3:3]" - if spew.UnsafeDisabled { - expected = "map[1:1 2:2 3:3]" - } - if s != expected { - t.Errorf("Sorted keys mismatch 3:\n %v %v", s, expected) - } - - s = cfg.Sprint(map[testStruct]int{testStruct{1}: 1, testStruct{3}: 3, testStruct{2}: 2}) - expected = "map[ts.1:1 ts.2:2 ts.3:3]" - if s != expected { - t.Errorf("Sorted keys mismatch 4:\n %v %v", s, expected) - } - - if !spew.UnsafeDisabled { - s = cfg.Sprint(map[testStructP]int{testStructP{1}: 1, testStructP{3}: 3, testStructP{2}: 2}) - expected = "map[ts.1:1 ts.2:2 ts.3:3]" - if s != expected { - t.Errorf("Sorted keys mismatch 5:\n %v %v", s, expected) - } - } - - s = cfg.Sprint(map[customError]int{customError(1): 1, customError(3): 3, customError(2): 2}) - expected = "map[error: 1:1 error: 2:2 error: 3:3]" - if s != expected { - t.Errorf("Sorted keys mismatch 6:\n %v %v", s, expected) - } -} diff --git a/vendor/github.com/davecgh/go-spew/spew/internal_test.go b/vendor/github.com/davecgh/go-spew/spew/internal_test.go deleted file mode 100644 index 1069ee21..00000000 --- a/vendor/github.com/davecgh/go-spew/spew/internal_test.go +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (c) 2013 Dave Collins - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -/* -This test file is part of the spew package rather than than the spew_test -package because it needs access to internals to properly test certain cases -which are not possible via the public interface since they should never happen. -*/ - -package spew - -import ( - "bytes" - "reflect" - "testing" -) - -// dummyFmtState implements a fake fmt.State to use for testing invalid -// reflect.Value handling. This is necessary because the fmt package catches -// invalid values before invoking the formatter on them. -type dummyFmtState struct { - bytes.Buffer -} - -func (dfs *dummyFmtState) Flag(f int) bool { - if f == int('+') { - return true - } - return false -} - -func (dfs *dummyFmtState) Precision() (int, bool) { - return 0, false -} - -func (dfs *dummyFmtState) Width() (int, bool) { - return 0, false -} - -// TestInvalidReflectValue ensures the dump and formatter code handles an -// invalid reflect value properly. This needs access to internal state since it -// should never happen in real code and therefore can't be tested via the public -// API. -func TestInvalidReflectValue(t *testing.T) { - i := 1 - - // Dump invalid reflect value. - v := new(reflect.Value) - buf := new(bytes.Buffer) - d := dumpState{w: buf, cs: &Config} - d.dump(*v) - s := buf.String() - want := "" - if s != want { - t.Errorf("InvalidReflectValue #%d\n got: %s want: %s", i, s, want) - } - i++ - - // Formatter invalid reflect value. - buf2 := new(dummyFmtState) - f := formatState{value: *v, cs: &Config, fs: buf2} - f.format(*v) - s = buf2.String() - want = "" - if s != want { - t.Errorf("InvalidReflectValue #%d got: %s want: %s", i, s, want) - } -} - -// SortValues makes the internal sortValues function available to the test -// package. -func SortValues(values []reflect.Value, cs *ConfigState) { - sortValues(values, cs) -} diff --git a/vendor/github.com/davecgh/go-spew/spew/internalunsafe_test.go b/vendor/github.com/davecgh/go-spew/spew/internalunsafe_test.go deleted file mode 100644 index 83e070e9..00000000 --- a/vendor/github.com/davecgh/go-spew/spew/internalunsafe_test.go +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright (c) 2013-2015 Dave Collins - -// Permission to use, copy, modify, and distribute this software for any -// purpose with or without fee is hereby granted, provided that the above -// copyright notice and this permission notice appear in all copies. - -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -// NOTE: Due to the following build constraints, this file will only be compiled -// when the code is not running on Google App Engine and "-tags disableunsafe" -// is not added to the go build command line. -// +build !appengine,!disableunsafe - -/* -This test file is part of the spew package rather than than the spew_test -package because it needs access to internals to properly test certain cases -which are not possible via the public interface since they should never happen. -*/ - -package spew - -import ( - "bytes" - "reflect" - "testing" - "unsafe" -) - -// changeKind uses unsafe to intentionally change the kind of a reflect.Value to -// the maximum kind value which does not exist. This is needed to test the -// fallback code which punts to the standard fmt library for new types that -// might get added to the language. -func changeKind(v *reflect.Value, readOnly bool) { - rvf := (*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(v)) + offsetFlag)) - *rvf = *rvf | ((1< + * Copyright (c) 2013-2016 Dave Collins * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above diff --git a/vendor/github.com/davecgh/go-spew/spew/spew_test.go b/vendor/github.com/davecgh/go-spew/spew/spew_test.go deleted file mode 100644 index dbbc0856..00000000 --- a/vendor/github.com/davecgh/go-spew/spew/spew_test.go +++ /dev/null @@ -1,309 +0,0 @@ -/* - * Copyright (c) 2013 Dave Collins - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -package spew_test - -import ( - "bytes" - "fmt" - "io/ioutil" - "os" - "testing" - - "github.com/davecgh/go-spew/spew" -) - -// spewFunc is used to identify which public function of the spew package or -// ConfigState a test applies to. -type spewFunc int - -const ( - fCSFdump spewFunc = iota - fCSFprint - fCSFprintf - fCSFprintln - fCSPrint - fCSPrintln - fCSSdump - fCSSprint - fCSSprintf - fCSSprintln - fCSErrorf - fCSNewFormatter - fErrorf - fFprint - fFprintln - fPrint - fPrintln - fSdump - fSprint - fSprintf - fSprintln -) - -// Map of spewFunc values to names for pretty printing. -var spewFuncStrings = map[spewFunc]string{ - fCSFdump: "ConfigState.Fdump", - fCSFprint: "ConfigState.Fprint", - fCSFprintf: "ConfigState.Fprintf", - fCSFprintln: "ConfigState.Fprintln", - fCSSdump: "ConfigState.Sdump", - fCSPrint: "ConfigState.Print", - fCSPrintln: "ConfigState.Println", - fCSSprint: "ConfigState.Sprint", - fCSSprintf: "ConfigState.Sprintf", - fCSSprintln: "ConfigState.Sprintln", - fCSErrorf: "ConfigState.Errorf", - fCSNewFormatter: "ConfigState.NewFormatter", - fErrorf: "spew.Errorf", - fFprint: "spew.Fprint", - fFprintln: "spew.Fprintln", - fPrint: "spew.Print", - fPrintln: "spew.Println", - fSdump: "spew.Sdump", - fSprint: "spew.Sprint", - fSprintf: "spew.Sprintf", - fSprintln: "spew.Sprintln", -} - -func (f spewFunc) String() string { - if s, ok := spewFuncStrings[f]; ok { - return s - } - return fmt.Sprintf("Unknown spewFunc (%d)", int(f)) -} - -// spewTest is used to describe a test to be performed against the public -// functions of the spew package or ConfigState. -type spewTest struct { - cs *spew.ConfigState - f spewFunc - format string - in interface{} - want string -} - -// spewTests houses the tests to be performed against the public functions of -// the spew package and ConfigState. -// -// These tests are only intended to ensure the public functions are exercised -// and are intentionally not exhaustive of types. The exhaustive type -// tests are handled in the dump and format tests. -var spewTests []spewTest - -// redirStdout is a helper function to return the standard output from f as a -// byte slice. -func redirStdout(f func()) ([]byte, error) { - tempFile, err := ioutil.TempFile("", "ss-test") - if err != nil { - return nil, err - } - fileName := tempFile.Name() - defer os.Remove(fileName) // Ignore error - - origStdout := os.Stdout - os.Stdout = tempFile - f() - os.Stdout = origStdout - tempFile.Close() - - return ioutil.ReadFile(fileName) -} - -func initSpewTests() { - // Config states with various settings. - scsDefault := spew.NewDefaultConfig() - scsNoMethods := &spew.ConfigState{Indent: " ", DisableMethods: true} - scsNoPmethods := &spew.ConfigState{Indent: " ", DisablePointerMethods: true} - scsMaxDepth := &spew.ConfigState{Indent: " ", MaxDepth: 1} - scsContinue := &spew.ConfigState{Indent: " ", ContinueOnMethod: true} - - // Variables for tests on types which implement Stringer interface with and - // without a pointer receiver. - ts := stringer("test") - tps := pstringer("test") - - // depthTester is used to test max depth handling for structs, array, slices - // and maps. - type depthTester struct { - ic indirCir1 - arr [1]string - slice []string - m map[string]int - } - dt := depthTester{indirCir1{nil}, [1]string{"arr"}, []string{"slice"}, - map[string]int{"one": 1}} - - // Variable for tests on types which implement error interface. - te := customError(10) - - spewTests = []spewTest{ - {scsDefault, fCSFdump, "", int8(127), "(int8) 127\n"}, - {scsDefault, fCSFprint, "", int16(32767), "32767"}, - {scsDefault, fCSFprintf, "%v", int32(2147483647), "2147483647"}, - {scsDefault, fCSFprintln, "", int(2147483647), "2147483647\n"}, - {scsDefault, fCSPrint, "", int64(9223372036854775807), "9223372036854775807"}, - {scsDefault, fCSPrintln, "", uint8(255), "255\n"}, - {scsDefault, fCSSdump, "", uint8(64), "(uint8) 64\n"}, - {scsDefault, fCSSprint, "", complex(1, 2), "(1+2i)"}, - {scsDefault, fCSSprintf, "%v", complex(float32(3), 4), "(3+4i)"}, - {scsDefault, fCSSprintln, "", complex(float64(5), 6), "(5+6i)\n"}, - {scsDefault, fCSErrorf, "%#v", uint16(65535), "(uint16)65535"}, - {scsDefault, fCSNewFormatter, "%v", uint32(4294967295), "4294967295"}, - {scsDefault, fErrorf, "%v", uint64(18446744073709551615), "18446744073709551615"}, - {scsDefault, fFprint, "", float32(3.14), "3.14"}, - {scsDefault, fFprintln, "", float64(6.28), "6.28\n"}, - {scsDefault, fPrint, "", true, "true"}, - {scsDefault, fPrintln, "", false, "false\n"}, - {scsDefault, fSdump, "", complex(-10, -20), "(complex128) (-10-20i)\n"}, - {scsDefault, fSprint, "", complex(-1, -2), "(-1-2i)"}, - {scsDefault, fSprintf, "%v", complex(float32(-3), -4), "(-3-4i)"}, - {scsDefault, fSprintln, "", complex(float64(-5), -6), "(-5-6i)\n"}, - {scsNoMethods, fCSFprint, "", ts, "test"}, - {scsNoMethods, fCSFprint, "", &ts, "<*>test"}, - {scsNoMethods, fCSFprint, "", tps, "test"}, - {scsNoMethods, fCSFprint, "", &tps, "<*>test"}, - {scsNoPmethods, fCSFprint, "", ts, "stringer test"}, - {scsNoPmethods, fCSFprint, "", &ts, "<*>stringer test"}, - {scsNoPmethods, fCSFprint, "", tps, "test"}, - {scsNoPmethods, fCSFprint, "", &tps, "<*>stringer test"}, - {scsMaxDepth, fCSFprint, "", dt, "{{} [] [] map[]}"}, - {scsMaxDepth, fCSFdump, "", dt, "(spew_test.depthTester) {\n" + - " ic: (spew_test.indirCir1) {\n \n },\n" + - " arr: ([1]string) (len=1 cap=1) {\n \n },\n" + - " slice: ([]string) (len=1 cap=1) {\n \n },\n" + - " m: (map[string]int) (len=1) {\n \n }\n}\n"}, - {scsContinue, fCSFprint, "", ts, "(stringer test) test"}, - {scsContinue, fCSFdump, "", ts, "(spew_test.stringer) " + - "(len=4) (stringer test) \"test\"\n"}, - {scsContinue, fCSFprint, "", te, "(error: 10) 10"}, - {scsContinue, fCSFdump, "", te, "(spew_test.customError) " + - "(error: 10) 10\n"}, - } -} - -// TestSpew executes all of the tests described by spewTests. -func TestSpew(t *testing.T) { - initSpewTests() - - t.Logf("Running %d tests", len(spewTests)) - for i, test := range spewTests { - buf := new(bytes.Buffer) - switch test.f { - case fCSFdump: - test.cs.Fdump(buf, test.in) - - case fCSFprint: - test.cs.Fprint(buf, test.in) - - case fCSFprintf: - test.cs.Fprintf(buf, test.format, test.in) - - case fCSFprintln: - test.cs.Fprintln(buf, test.in) - - case fCSPrint: - b, err := redirStdout(func() { test.cs.Print(test.in) }) - if err != nil { - t.Errorf("%v #%d %v", test.f, i, err) - continue - } - buf.Write(b) - - case fCSPrintln: - b, err := redirStdout(func() { test.cs.Println(test.in) }) - if err != nil { - t.Errorf("%v #%d %v", test.f, i, err) - continue - } - buf.Write(b) - - case fCSSdump: - str := test.cs.Sdump(test.in) - buf.WriteString(str) - - case fCSSprint: - str := test.cs.Sprint(test.in) - buf.WriteString(str) - - case fCSSprintf: - str := test.cs.Sprintf(test.format, test.in) - buf.WriteString(str) - - case fCSSprintln: - str := test.cs.Sprintln(test.in) - buf.WriteString(str) - - case fCSErrorf: - err := test.cs.Errorf(test.format, test.in) - buf.WriteString(err.Error()) - - case fCSNewFormatter: - fmt.Fprintf(buf, test.format, test.cs.NewFormatter(test.in)) - - case fErrorf: - err := spew.Errorf(test.format, test.in) - buf.WriteString(err.Error()) - - case fFprint: - spew.Fprint(buf, test.in) - - case fFprintln: - spew.Fprintln(buf, test.in) - - case fPrint: - b, err := redirStdout(func() { spew.Print(test.in) }) - if err != nil { - t.Errorf("%v #%d %v", test.f, i, err) - continue - } - buf.Write(b) - - case fPrintln: - b, err := redirStdout(func() { spew.Println(test.in) }) - if err != nil { - t.Errorf("%v #%d %v", test.f, i, err) - continue - } - buf.Write(b) - - case fSdump: - str := spew.Sdump(test.in) - buf.WriteString(str) - - case fSprint: - str := spew.Sprint(test.in) - buf.WriteString(str) - - case fSprintf: - str := spew.Sprintf(test.format, test.in) - buf.WriteString(str) - - case fSprintln: - str := spew.Sprintln(test.in) - buf.WriteString(str) - - default: - t.Errorf("%v #%d unrecognized function", test.f, i) - continue - } - s := buf.String() - if test.want != s { - t.Errorf("ConfigState #%d\n got: %s want: %s", i, s, test.want) - continue - } - } -} diff --git a/vendor/github.com/davecgh/go-spew/spew/testdata/dumpcgo.go b/vendor/github.com/davecgh/go-spew/spew/testdata/dumpcgo.go deleted file mode 100644 index 5c87dd45..00000000 --- a/vendor/github.com/davecgh/go-spew/spew/testdata/dumpcgo.go +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright (c) 2013 Dave Collins -// -// Permission to use, copy, modify, and distribute this software for any -// purpose with or without fee is hereby granted, provided that the above -// copyright notice and this permission notice appear in all copies. -// -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -// NOTE: Due to the following build constraints, this file will only be compiled -// when both cgo is supported and "-tags testcgo" is added to the go test -// command line. This code should really only be in the dumpcgo_test.go file, -// but unfortunately Go will not allow cgo in test files, so this is a -// workaround to allow cgo types to be tested. This configuration is used -// because spew itself does not require cgo to run even though it does handle -// certain cgo types specially. Rather than forcing all clients to require cgo -// and an external C compiler just to run the tests, this scheme makes them -// optional. -// +build cgo,testcgo - -package testdata - -/* -#include -typedef unsigned char custom_uchar_t; - -char *ncp = 0; -char *cp = "test"; -char ca[6] = {'t', 'e', 's', 't', '2', '\0'}; -unsigned char uca[6] = {'t', 'e', 's', 't', '3', '\0'}; -signed char sca[6] = {'t', 'e', 's', 't', '4', '\0'}; -uint8_t ui8ta[6] = {'t', 'e', 's', 't', '5', '\0'}; -custom_uchar_t tuca[6] = {'t', 'e', 's', 't', '6', '\0'}; -*/ -import "C" - -// GetCgoNullCharPointer returns a null char pointer via cgo. This is only -// used for tests. -func GetCgoNullCharPointer() interface{} { - return C.ncp -} - -// GetCgoCharPointer returns a char pointer via cgo. This is only used for -// tests. -func GetCgoCharPointer() interface{} { - return C.cp -} - -// GetCgoCharArray returns a char array via cgo and the array's len and cap. -// This is only used for tests. -func GetCgoCharArray() (interface{}, int, int) { - return C.ca, len(C.ca), cap(C.ca) -} - -// GetCgoUnsignedCharArray returns an unsigned char array via cgo and the -// array's len and cap. This is only used for tests. -func GetCgoUnsignedCharArray() (interface{}, int, int) { - return C.uca, len(C.uca), cap(C.uca) -} - -// GetCgoSignedCharArray returns a signed char array via cgo and the array's len -// and cap. This is only used for tests. -func GetCgoSignedCharArray() (interface{}, int, int) { - return C.sca, len(C.sca), cap(C.sca) -} - -// GetCgoUint8tArray returns a uint8_t array via cgo and the array's len and -// cap. This is only used for tests. -func GetCgoUint8tArray() (interface{}, int, int) { - return C.ui8ta, len(C.ui8ta), cap(C.ui8ta) -} - -// GetCgoTypdefedUnsignedCharArray returns a typedefed unsigned char array via -// cgo and the array's len and cap. This is only used for tests. -func GetCgoTypdefedUnsignedCharArray() (interface{}, int, int) { - return C.tuca, len(C.tuca), cap(C.tuca) -} diff --git a/vendor/github.com/davecgh/go-spew/test_coverage.txt b/vendor/github.com/davecgh/go-spew/test_coverage.txt deleted file mode 100644 index 2cd087a2..00000000 --- a/vendor/github.com/davecgh/go-spew/test_coverage.txt +++ /dev/null @@ -1,61 +0,0 @@ - -github.com/davecgh/go-spew/spew/dump.go dumpState.dump 100.00% (88/88) -github.com/davecgh/go-spew/spew/format.go formatState.format 100.00% (82/82) -github.com/davecgh/go-spew/spew/format.go formatState.formatPtr 100.00% (52/52) -github.com/davecgh/go-spew/spew/dump.go dumpState.dumpPtr 100.00% (44/44) -github.com/davecgh/go-spew/spew/dump.go dumpState.dumpSlice 100.00% (39/39) -github.com/davecgh/go-spew/spew/common.go handleMethods 100.00% (30/30) -github.com/davecgh/go-spew/spew/common.go printHexPtr 100.00% (18/18) -github.com/davecgh/go-spew/spew/common.go unsafeReflectValue 100.00% (13/13) -github.com/davecgh/go-spew/spew/format.go formatState.constructOrigFormat 100.00% (12/12) -github.com/davecgh/go-spew/spew/dump.go fdump 100.00% (11/11) -github.com/davecgh/go-spew/spew/format.go formatState.Format 100.00% (11/11) -github.com/davecgh/go-spew/spew/common.go init 100.00% (10/10) -github.com/davecgh/go-spew/spew/common.go printComplex 100.00% (9/9) -github.com/davecgh/go-spew/spew/common.go valuesSorter.Less 100.00% (8/8) -github.com/davecgh/go-spew/spew/format.go formatState.buildDefaultFormat 100.00% (7/7) -github.com/davecgh/go-spew/spew/format.go formatState.unpackValue 100.00% (5/5) -github.com/davecgh/go-spew/spew/dump.go dumpState.indent 100.00% (4/4) -github.com/davecgh/go-spew/spew/common.go catchPanic 100.00% (4/4) -github.com/davecgh/go-spew/spew/config.go ConfigState.convertArgs 100.00% (4/4) -github.com/davecgh/go-spew/spew/spew.go convertArgs 100.00% (4/4) -github.com/davecgh/go-spew/spew/format.go newFormatter 100.00% (3/3) -github.com/davecgh/go-spew/spew/dump.go Sdump 100.00% (3/3) -github.com/davecgh/go-spew/spew/common.go printBool 100.00% (3/3) -github.com/davecgh/go-spew/spew/common.go sortValues 100.00% (3/3) -github.com/davecgh/go-spew/spew/config.go ConfigState.Sdump 100.00% (3/3) -github.com/davecgh/go-spew/spew/dump.go dumpState.unpackValue 100.00% (3/3) -github.com/davecgh/go-spew/spew/spew.go Printf 100.00% (1/1) -github.com/davecgh/go-spew/spew/spew.go Println 100.00% (1/1) -github.com/davecgh/go-spew/spew/spew.go Sprint 100.00% (1/1) -github.com/davecgh/go-spew/spew/spew.go Sprintf 100.00% (1/1) -github.com/davecgh/go-spew/spew/spew.go Sprintln 100.00% (1/1) -github.com/davecgh/go-spew/spew/common.go printFloat 100.00% (1/1) -github.com/davecgh/go-spew/spew/config.go NewDefaultConfig 100.00% (1/1) -github.com/davecgh/go-spew/spew/common.go printInt 100.00% (1/1) -github.com/davecgh/go-spew/spew/common.go printUint 100.00% (1/1) -github.com/davecgh/go-spew/spew/common.go valuesSorter.Len 100.00% (1/1) -github.com/davecgh/go-spew/spew/common.go valuesSorter.Swap 100.00% (1/1) -github.com/davecgh/go-spew/spew/config.go ConfigState.Errorf 100.00% (1/1) -github.com/davecgh/go-spew/spew/config.go ConfigState.Fprint 100.00% (1/1) -github.com/davecgh/go-spew/spew/config.go ConfigState.Fprintf 100.00% (1/1) -github.com/davecgh/go-spew/spew/config.go ConfigState.Fprintln 100.00% (1/1) -github.com/davecgh/go-spew/spew/config.go ConfigState.Print 100.00% (1/1) -github.com/davecgh/go-spew/spew/config.go ConfigState.Printf 100.00% (1/1) -github.com/davecgh/go-spew/spew/config.go ConfigState.Println 100.00% (1/1) -github.com/davecgh/go-spew/spew/config.go ConfigState.Sprint 100.00% (1/1) -github.com/davecgh/go-spew/spew/config.go ConfigState.Sprintf 100.00% (1/1) -github.com/davecgh/go-spew/spew/config.go ConfigState.Sprintln 100.00% (1/1) -github.com/davecgh/go-spew/spew/config.go ConfigState.NewFormatter 100.00% (1/1) -github.com/davecgh/go-spew/spew/config.go ConfigState.Fdump 100.00% (1/1) -github.com/davecgh/go-spew/spew/config.go ConfigState.Dump 100.00% (1/1) -github.com/davecgh/go-spew/spew/dump.go Fdump 100.00% (1/1) -github.com/davecgh/go-spew/spew/dump.go Dump 100.00% (1/1) -github.com/davecgh/go-spew/spew/spew.go Fprintln 100.00% (1/1) -github.com/davecgh/go-spew/spew/format.go NewFormatter 100.00% (1/1) -github.com/davecgh/go-spew/spew/spew.go Errorf 100.00% (1/1) -github.com/davecgh/go-spew/spew/spew.go Fprint 100.00% (1/1) -github.com/davecgh/go-spew/spew/spew.go Fprintf 100.00% (1/1) -github.com/davecgh/go-spew/spew/spew.go Print 100.00% (1/1) -github.com/davecgh/go-spew/spew ------------------------------- 100.00% (505/505) - diff --git a/vendor/github.com/docker/machine/.dockerignore b/vendor/github.com/docker/machine/.dockerignore deleted file mode 100644 index 4a7598c9..00000000 --- a/vendor/github.com/docker/machine/.dockerignore +++ /dev/null @@ -1,4 +0,0 @@ -docker-machine* -*.log -bin -cover \ No newline at end of file diff --git a/vendor/github.com/docker/machine/.gitignore b/vendor/github.com/docker/machine/.gitignore deleted file mode 100644 index 2c63e103..00000000 --- a/vendor/github.com/docker/machine/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -docker-machine* -*.log -*.iml -.idea/ -./bin -cover diff --git a/vendor/github.com/docker/machine/.godir b/vendor/github.com/docker/machine/.godir deleted file mode 100644 index 38ee32ee..00000000 --- a/vendor/github.com/docker/machine/.godir +++ /dev/null @@ -1 +0,0 @@ -github.com/docker/machine diff --git a/vendor/github.com/docker/machine/.travis.yml b/vendor/github.com/docker/machine/.travis.yml deleted file mode 100644 index d738107f..00000000 --- a/vendor/github.com/docker/machine/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -sudo: required -dist: trusty -language: bash -services: docker -env: - matrix: - - TARGET_OS=linux TARGET_ARCH=amd64 TARGETS="build validate" - - TARGET_OS=darwin TARGET_ARCH=amd64 TARGETS="build-x" - - TARGET_OS=windows TARGET_ARCH=amd64 TARGETS="build-x" -script: - - USE_CONTAINER=true make "$TARGETS" - - "[[ \"$(find bin -type f -name docker-machine*)\" != \"\" ]]" diff --git a/vendor/github.com/docker/machine/CHANGELOG.md b/vendor/github.com/docker/machine/CHANGELOG.md deleted file mode 100644 index 219fc3ad..00000000 --- a/vendor/github.com/docker/machine/CHANGELOG.md +++ /dev/null @@ -1,629 +0,0 @@ -# Changelog - -# 0.8.0 (2016-6-14) - -General -- Fix issue with plugin heartbeat log repeating on disconnect -- Add `tcsh` support to `env --shell` -- Add `zsh` completion scripts -- Bump Go version to 1.6.2 - -Drivers -- `amazonec2` - - Workaround to prevent orphaned SSH keys -- `virtualbox` - - Add option for VM UI type (`--virtualbox-ui-type`) -- `vmwarefusion` - - Fix CPU option inconsistency -- `openstack` - - Expose user data parameter (`--openstack-user-data-file`) -- `generic` - - Copy public key to created Machine directory - -Provisioners -- Add Oracle Enterprise Linux support -- Fix port binding of Swarm master -- Add ability to create a manager instance which does not get scheduled on -- Introduce `--swarm-join-opt` to pass options to agent nodes -- Various SSH-related fixes -- Fix state for upgrade path - -# 0.7.0 (2016-4-13) - -General -- `DRIVER` environment variable now supported to supply value for `create --driver` flag -- Update to Go 1.6.1 -- SSH client has been refactored -- RC versions of Machine will now create and upgrade to boot2docker RCs instead - of stable versions if available - -Drivers -- `azure` - - Driver has been completely re-written to use resource templates and a significantly easier-to-use authentication model -- `digitalocean` - - New `--digitalocean-ssh-key-fingerprint` for using existing SSH keys instead of creating new ones -- `virtualbox` - - Fix issue with `bootlocal.sh` - - New `--virtualbox-nictype` flag to set driver for NAT network - - More robust host-only interface collision detection - - Add support for running VirtualBox on a Windows 32 bit host - - Change default DNS passthrough handling -- `amazonec2` - - Specifying multiple security groups to use is now supported -- `exoscale` - - Add support for user-data -- `hyperv` - - Machines can now be created by a non-administrator -- `rackspace` - - New `--rackspace-active-timeout` parameter -- `vmwarefusion` - - Bind mount shared folder directory by default -- `google` - - New `--google-use-internal-ip-only` parameter - -Provisioners -- General - - Support for specifying Docker engine port in some cases -- CentOS - - Now defaults to using upstream `get.docker.com` script instead of custom RPMs. -- boot2docker - - More robust eth* interface detection -- Swarm - - Add `--swarm-experimental` parameter to enable experimental Swarm features - - -# 0.6.0 (2016-02-04) - -+ Fix SSH wait before provisioning issue - -# 0.6.0-rc4 (2016-02-03) - -General - -+ `env` - + Fix shell auto detection - -Drivers - -+ `exoscale` - + Fix configuration of exoscale endpoint - -# 0.6.0-rc3 (2016-02-01) - -- Exit with code 3 if error is during pre-create check - -# 0.6.0-rc2 (2016-01-28) - -- Fix issue creating Swarms -- Fix `ls` header issue -- Add code to wait for Docker daemon before returning from `start` / `restart` -- Start porting integration tests to Go from BATS -- Add Appveyor for Windows tests -- Update CoreOS provisioner to use `docker daemon` -- Various documentation and error message fixes -- Add ability to create GCE machine using existing VM - -# 0.6.0-rc1 (2016-01-18) - -General - -- Update to Go 1.5.3 -- Short form of command invocations is now supported - - `docker-machine start`, `docker-machine stop` and others will now use - `default` as the machine name argument if one is not specified -- Fix issue with panics in drivers -- Machine now returns exit code 3 if the pre-create check fails. - - This is potentially useful for scripting `docker-machine`. -- `docker-machine provision` command added to allow re-running of provisioning - on instances. - - This allows users to re-run provisioning if it fails during `create` - instead of needing to completely start over. - -Provisioning - -- Most provisioners now use `docker daemon` instead of `docker -d` -- Swarm masters now run with replication enabled -- If `/var/lib` is a BTRFS partition, `btrfs` will now be used as the storage - driver for the instance - -Drivers - -- Amazon EC2 - - Default VPC will be used automatically if none is specified - - Credentials are now be read from the conventional `~/.aws/credentials` - file automatically - - Fix a few issues such as nil pointer dereferences -- VMware Fusion - - Try to get IP from multiple DHCP lease files -- OpenStack - - Only derive tenant ID if tenant name is supplied - -# 0.5.6 (2016-01-11) - -General - -- `create` - - Set swarm master to advertise on port 3376 - - Fix swarm restart policy - - Stop asking for ssh key passwords interactively -- `env` - - Improve documentation - - Fix bash on windows - - Automatic shell detection on Windows -- `help` - - Don't show the full path to `docker-machine.exe` on windows -- `ls` - - Allow custom format - - Improve documentation -- `restart` - - Improve documentation -- `rm` - - Improve documentation - - Better user experience when removing multiple hosts -- `version` - - Don't show the full path to `docker-machine.exe` on windows -- `start`, `stop`, `restart`, `kill` - - Better logs and homogeneous behaviour across all drivers - -Build - -- Introduce CI tests for external binary compatibility -- Add amazon EC2 integration test - -Misc - -- Improve BugSnags reports: better shell detection, better windows version detection -- Update DockerClient dependency -- Improve bash-completion script -- Improve documentation for bash-completion - -Drivers - -- Amazon EC2 - - Improve documentation - - Support optional tags - - Option to create EbsOptimized instances -- Google - - Fix remove when instance is stopped -- Openstack - - Flags to import and reuse existing nova keypairs -- VirtualBox - - Fix multiple bugs related to host-only adapters - - Retry commands when `VBoxManage` is not ready - - Reject VirtualBox versions older that 4.3 - - Fail with a clear message when Hyper-v installation prevents VirtualBox from working - - Print a warning for Boot2Docker v1.9.1, which is known to have an issue with AUFS -- Vmware Fusion - - Support soft links in VM paths - -Libmachine - -- Fix code sample that uses libmachine -- libmachine can be used in external applications - - -# 0.5.5 (2015-12-28) - -General - -- `env` - - Better error message if swarm is down - - Add quotes to command if there are spaces in the path - - Fix Powershell env hints - - Default to cmd shell on windows - - Detect fish shell -- `scp` - - Ignore empty ssh key -- `stop`, `start`, `kill` - - Add feedback to the user -- `rm` - - Now works when `config.json` is not found -- `ssh` - - Disable ControlPath - - Log which SSH client is used -- `ls` - - Listing is now faster by reducing calls to the driver - - Shows if the active machine is a swarm cluster - -Build - -- Automate 90% of the release process -- Upgrade to Go 1.5.2 -- Don't build 32bits binaries for Linux and OSX -- Prevent makefile from defaulting to using containers - -Misc - -- Update docker-machine version -- Updated the bash completion with new options added -- Bugsnag: Retrieve windows version on non-english OS - -Drivers - -- Amazon EC2 - - Convert API calls to official SDK - - Make DeviceName configurable -- Digital Ocean - - Custom SSH port support -- Generic - - Don't support `kill` since `stop` is not supported -- Google - - Coreos provisionning -- Hyper-V - - Lot's of code simplifications - - Pre-Check that the user is an Administrator - - Pre-Check that the virtual switch exists - - Add Environment variables for each flag - - Fix how Powershell is detected - - VSwitch name should be saved to config.json - - Add a flag to set the CPU count - - Close handle after copying boot2docker.iso into vm folder - will otherwise keep hyper-v from starting vm - - Update Boot2Docker cache in PreCreateCheck phase -- OpenStack - - Filter floating IPs by tenant ID -- Virtualbox - - Reject duplicate hostonlyifs Name/IP with clear message - - Detect when hostonlyif can't be created. Point to known working version of VirtualBox - - Don't create the VM if no hardware virtualization is available and add a flag to force create - - Add `VBox.log` to bugsnag crashreport - - Update Boot2Docker cache in PreCreateCheck phase - - Detect Incompatibility with Hyper-v -- VSphere - - Rewrite driver to work with govmomi instead of wrapping govc -- All - - Change host restart to use the driver implementation - - Fix truncated logs - - Increase heartbeat interval and timeout - -Provisioners - -- Download latest Boot2Docker if it is out-of-date -- Add swarm config to coreos -- All provisioners now honor `engine-install-url` - -# 0.5.4 (2015-12-28) - -This is a patch release to fix a regression with STDOUT/STDERR behavior (#2587). - -# 0.5.3 (2015-12-14) - -**Please note**: With this release Machine will be reverting back to distribution in a single binary, which is more efficient on bandwidth and hard disk space. All the core driver plugins are now included in the main binary. You will want to delete the old driver binaries that you might have in your path. - -e.g.: - -```console -$ rm /usr/local/bin/docker-machine-driver-{amazonec2,azure,digitalocean,exoscale,generic,google,hyperv,none,openstack,rackspace,softlayer,virtualbox,vmwarefusion,vmwarevcloudair,vmwarevsphere} -``` - -Non-core driver plugins should still work as intended (in externally distributed binaries of the form `docker-machine-driver-name`. Please report any issues you encounter them with externally loaded plugins. - -General - -- Optionally report crashes to Bugsnag to help us improve docker-machine -- Fix multiple nil dereferences in `docker-machine ls` command -- Improve the build and CI -- `docker-machine env` now supports emacs -- Run Swarm containers in provisioning step using Docker API instead of SSH/shell -- Show docker daemon version in `docker-machine ls` -- `docker-machine ls` can filter by engine label -- `docker-machine ls` filters are case insensitive -- `--timeout` flag for `docker-machine ls` -- Logs use `logrus` library -- Swarm container network is now `host` -- Added advertise flag to Swarm manager template -- Fix `help` flag for `docker-machine ssh` -- Add confirmation `-y` flag to `docker-machine rm` -- Fix `docker-machine config` for fish -- Embed all core drivers in `docker-machine` binary to reduce the bundle from 120M to 15M - -Drivers - -- Generic - - Support password protected ssh keys though ssh-agent - - Support DNS names -- Virtualbox - - Show a warning if virtualbox is too old - - Recognize yet another Hardware Virtualization issue pattern - - Fix Hardware Virtualization on Linux/AMD - - Add the `--virtualbox-host-dns-resolver` flag - - Allow virtualbox DNSProxy override -- Google - - Open firewall port for Swarm when needed -- VMware Fusion - - Explicitly set umask before invoking vmrun in vmwarefusion - - Activate the plugin only on OSX - - Add id/gid option to mount when using vmhgfs - - Fix for vSphere driver boot2docker ISO issues -- Digital Ocean - - Support for creating Droplets with Cloud-init User Data -- Openstack - - Sanitize keynames by replacing dots with underscores -- All - - Most base images are now set to `Ubuntu 15.10` - - Fix compatibility with drivers developed with docker-machine 0.5.0 - - Better error report for broken/incompatible drivers - - Don't break `config.json` configuration when the disk is full - -Provisioners - -- Increase timeout for installing boot2docker -- Support `Ubuntu 15.10` - -Misc - -- Improve the documentation -- Update known drivers list - -# 0.5.2 (2015-11-30) - -General - -- Bash autocompletion and helpers fixed -- Remove `RawDriver` from `config.json` - Driver parameters can now be edited - directly again in this file. -- Change fish `env` variable setting to be global -- Add `docker-machine version` command -- Move back to normal `codegangsta/cli` upstream -- `--tls-san` flag for extra SANs - -Drivers - -- Fix `GetURL` IPv6 compatibility -- Add documentation page for available 3rd party drivers -- VirtualBox - - Support for shared folders and virtualization detection on Linux hosts - - Improved detection of invalid host-only interface settings -- Google - - Update default images -- VMware Fusion - - Add option to disable shared folder -- Generic - - New environment variables for flags - -Provisioners - -- Support for Ubuntu >=15.04. This means Ubuntu machines can be created which - work with `overlay` driver of lib network. -- Fix issue with current netstat / daemon availability checking - -# 0.5.1 (2015-11-16) - -- Fixed boot2docker VM import regression -- Fix regression breaking `docker-machine env -u` to unset environment variables -- Enhanced virtualization capability detection and `VBoxManage` path detection -- Properly lock VirtualBox access when running several commands concurrently -- Allow plugins to write to STDOUT without `--debug` enabled -- Fix Rackspace driver regression -- Support colons in `docker-machine scp` filepaths -- Pass environment variables for provisioned Engines to Swarm as well -- Various enhancements around boot2docker ISO upgrade (progress bar, increased timeout) - -# 0.5.0 (2015-11-1) - -- General - - Add pluggable driver model - - Clean up code to be more modular and reusable in `libmachine` - - Add `--github-api-token` for situations where users are getting rate limited - by GitHub attempting to get the current `boot2docker.iso` version - - Various enhancements around the Makefile and build toolchain (still an active WIP) - - Disable SSH multiplex explicitly in commands run with the "External" client - - Show "-" for "inactive" machines instead of nothing - - Make daemon status detection more robust -- Provisioners - - New CoreOS, SUSE, and Arch Linux provisioners - - Fixes around package installation / upgrade code on Debian and Ubuntu -- CLI - - Support for regular expression pattern matching and matching by names in `ls --filter` - - `--no-proxy` flag for `env` (sets `NO_PROXY` in addition to other environment variables) -- Drivers - - `openstack` - - `--openstack-ip-version` parameter - - `--openstack-active-timeout` parameter - - `google` - - fix destructive behavior of `start` / `stop` - - `hyperv` - - fix issues with PowerShell - - `vmwarefusion` - - some issues with shared folders fixed - - `--vmwarefusion-configdrive-url` option for configuration via `cloud-init` - - `amazonec2` - - `--amazonec2-use-private-address` option to use private networking - - `virtualbox` - - Enhancements around robustness of the created host-only network - - Fix IPv6 network mask prefix parsing - - `--virtualbox-no-share` option to disable the automatic home directory mount - - `--virtualbox-hostonly-nictype` and `--virtualbox-hostonly-nicpromisc` for controlling settings around the created hostonly NIC - -# 0.4.1 (2015-08) - -- Fixes `upgrade` functionality on Debian based systems -- Fixes `upgrade` functionality on Ubuntu based systems - -# 0.4.0 (2015-08-11) - -## Updates - -- HTTP Proxy support for Docker Engine -- RedHat distros now use Docker Yum repositories -- Ability to set environment variables in the Docker Engine -- Internal libmachine updates for stability - -## Drivers - -- Google: - - Preemptible instances - - Static IP support - -## Fixes - -- Swarm Discovery Flag is verified -- Timeout added to `ls` command to prevent hangups -- SSH command failure now reports information about error -- Configuration migration updates - -# 0.3.0 (2015-06-18) - -## Features - -- Engine option configuration (ability to configure all engine options) -- Swarm option configuration (ability to configure all swarm options) -- New Provisioning system to allow for greater flexibility and stability for installing and configuring Docker -- New Provisioners - - Rancher OS - - RedHat Enterprise Linux 7.0+ (experimental) - - Fedora 21+ (experimental) - - Debian 8+ (experimental) -- PowerShell support (configure Windows Docker CLI) -- Command Prompt (cmd.exe) support (configure Windows Docker CLI) -- Filter command help by driver -- Ability to import Boot2Docker instances -- Boot2Docker CLI migration guide (experimental) -- Format option for `inspect` command -- New logging output format to improve readability and display across platforms -- Updated "active" machine concept - now is implicit according to `DOCKER_HOST` environment variable. Note: this removes the implicit "active" machine and can no longer be specified with the `active` command. You change the "active" host by using the `env` command instead. -- Specify Swarm version (`--swarm-image` flag) - -## Drivers - -- New: Exoscale Driver -- New: Generic Driver (provision any host with supported base OS and SSH) -- Amazon EC2 - - SSH user is configurable - - Support for Spot instances - - Add option to use private address only - - Base AMI updated to 20150417 -- Google - - Support custom disk types - - Updated base image to v20150316 -- Openstack - - Support for Keystone v3 domains -- Rackspace - - Misc fixes including environment variable for Flavor Id and stability -- Softlayer - - Enable local disk as provisioning option - - Fixes for SSH access errors - - Fixed bug where public IP would always be returned when requesting private - - Add support for specifying public and private VLAN IDs -- VirtualBox - - Use Intel network interface driver (adds great stability) - - Stability fixes for NAT access - - Use DNS pass through - - Default CPU to single core for improved performance - - Enable shared folder support for Windows hosts -- VMware Fusion - - Boot2Docker ISO updated - - Shared folder support - -## Fixes - -- Provisioning improvements to ensure Docker is available -- SSH improvements for provisioning stability -- Fixed SSH key generation bug on Windows -- Help formatting for improved readability - -## Breaking Changes - -- "Short-Form" name reference no longer supported Instead of "docker-machine " implying the active host you must now use docker-machine -- VMware shared folders require Boot2Docker 1.7 - -## Special Thanks - -We would like to thank all contributors. Machine would not be where it is -without you. We would also like to give special thanks to the following -contributors for outstanding contributions to the project: - -- @frapposelli for VMware updates and fixes -- @hairyhenderson for several improvements to Softlayer driver, inspect formatting and lots of fixes -- @ibuildthecloud for rancher os provisioning -- @sthulb for portable SSH library -- @vincentbernat for exoscale -- @zchee for Amazon updates and great doc updates - -# 0.2.0 (2015-04-16) - -Core Stability and Driver Updates - -## Core - -- Support for system proxy environment -- New command to regenerate TLS certificates - - Note: this will restart the Docker engine to apply -- Updates to driver operations (create, start, stop, etc) for better reliability -- New internal `libmachine` package for internal api (not ready for public usage) -- Updated Driver Interface - - [Driver Spec](https://github.com/docker/machine/blob/master/docs/DRIVER_SPEC.md) - - Removed host provisioning from Drivers to enable a more consistent install - - Removed SSH commands from each Driver for more consistent operations -- Swarm: machine now uses Swarm default binpacking strategy - -## Driver Updates - -- All drivers updated to new Driver interface -- Amazon EC2 - - Better checking for subnets on creation - - Support for using Private IPs in VPC - - Fixed bug with duplicate security group authorization with Swarm - - Support for IAM instance profile - - Fixed bug where IP was not properly detected upon stop -- DigitalOcean - - IPv6 support - - Backup option - - Private Networking -- Openstack / Rackspace - - Gophercloud updated to latest version - - New insecure flag to disable TLS (use with caution) -- Google - - Google source image updated - - Ability to specify auth token via file -- VMware Fusion - - Paravirtualized driver for disk (pvscsi) - - Enhanced paravirtualized NIC (vmxnet3) - - Power option updates - - SSH keys persistent across reboots - - Stop now gracefully stops VM - - vCPUs now match host CPUs -- SoftLayer - - Fixed provision bug where `curl` was not present -- VirtualBox - - Correct power operations with Saved VM state - - Fixed bug where image option was ignored - -## CLI - -- Auto-regeneration of TLS certificates when TLS error is detected - - Note: this will restart the Docker engine to apply -- Minor UI updates including improved sorting and updated command docs -- Bug with `config` and `env` with spaces fixed - - Note: you now must use `eval $(docker-machine env machine)` to load environment settings -- Updates to better support `fish` shell -- Use `--tlsverify` for both `config` and `env` commands -- Commands now use eval for better interoperability with shell - -## Testing - -- New integration test framework (bats) - -# 0.1.0 (2015-02-26) - -Initial beta release. - -- Provision Docker Engines using multiple drivers -- Provide light management for the machines - - Create, Start, Stop, Restart, Kill, Remove, SSH -- Configure the Docker Engine for secure communication (TLS) -- Easily switch target machine for fast configuration of Docker Engine client -- Provision Swarm clusters (experimental) - -## Included drivers - -- Amazon EC2 -- Digital Ocean -- Google -- Microsoft Azure -- Microsoft Hyper-V -- Openstack -- Rackspace -- VirtualBox -- VMware Fusion -- VMware vCloud Air -- VMware vSphere diff --git a/vendor/github.com/docker/machine/CONTRIBUTING.md b/vendor/github.com/docker/machine/CONTRIBUTING.md deleted file mode 100644 index ee3be0c7..00000000 --- a/vendor/github.com/docker/machine/CONTRIBUTING.md +++ /dev/null @@ -1,288 +0,0 @@ -# Contributing to machine - -[![GoDoc](https://godoc.org/github.com/docker/machine?status.png)](https://godoc.org/github.com/docker/machine) -[![Build Status](https://travis-ci.org/docker/machine.svg?branch=master)](https://travis-ci.org/docker/machine) -[![Windows Build Status](https://ci.appveyor.com/api/projects/status/github/docker/machine?svg=true)](https://ci.appveyor.com/project/dmp42/machine-fp5u5) -[![Coverage Status](https://coveralls.io/repos/docker/machine/badge.svg?branch=master&service=github)](https://coveralls.io/github/docker/machine?branch=master) - -Want to hack on Machine? Awesome! Here are instructions to get you -started. - -Machine is a part of the [Docker](https://www.docker.com) project, and follows -the same rules and principles. If you're already familiar with the way -Docker does things, you'll feel right at home. - -Otherwise, please read [Docker's contributions -guidelines](https://github.com/docker/docker/blob/master/CONTRIBUTING.md). - -# Building - -The requirements to build Machine are: - -1. A running instance of Docker or a Golang 1.6 development environment -2. The `bash` shell -3. [Make](https://www.gnu.org/software/make/) - -## Build using Docker containers - -To build the `docker-machine` binary using containers, simply run: - - $ export USE_CONTAINER=true - $ make build - -## Local Go development environment - -Make sure the source code directory is under a correct directory structure; -Example of cloning and preparing the correct environment `GOPATH`: - - $ mkdir docker-machine - $ cd docker-machine - $ export GOPATH="$PWD" - $ go get github.com/docker/machine - $ cd src/github.com/docker/machine - -If you want to use your existing workspace, make sure your `GOPATH` is set to -the directory that contains your `src` directory, e.g.: - - $ export GOPATH=/home/yourname/work - $ mkdir -p $GOPATH/src/github.com/docker - $ cd $GOPATH/src/github.com/docker && git clone git@github.com:docker/machine.git - $ cd machine - -At this point, simply run: - - $ make build - -## Built binary - -After the build is complete a `bin/docker-machine` binary will be created. - -You may call: - - $ make clean - -to clean-up build results. - -## Tests and validation - -We use the usual `go` tools for this, to run those commands you need at least the linter which you can -install with `go get -u github.com/golang/lint/golint` - -To run basic validation (dco, fmt), and the project unit tests, call: - - $ make test - -If you want more indepth validation (vet, lint), and all tests with race detection, call: - - $ make validate - -If you make a pull request, it is highly encouraged that you submit tests for -the code that you have added or modified in the same pull request. - -## Code Coverage - -To generate an html code coverage report of the Machine codebase, run: - - make coverage-serve - -And navigate to (hit `CTRL+C` to stop the server). - -### Native build - -Alternatively, if you are building natively, you can simply run: - - make coverage-html - -This will generate and open the report file: - -![](/docs/img/coverage.png) - -## List of all targets - -### High-level targets - - make clean - make build - make test - make validate - -### Advanced build targets - -Build for all supported OSes and architectures (binaries will be in the `bin` project subfolder): - - make build-x - -Build for a specific list of OSes and architectures: - - TARGET_OS=linux TARGET_ARCH="amd64 arm" make build-x - -You can further control build options through the following environment variables: - - DEBUG=true # enable debug build - STATIC=true # build static (note: when cross-compiling, the build is always static) - VERBOSE=true # verbose output - PREFIX=folder # put binaries in another folder (not the default `./bin`) - -Scrub build results: - - make build-clean - -### Coverage targets - - make coverage-html - make coverage-serve - make coverage-send - make coverage-generate - make coverage-clean - -### Tests targets - - make test-short - make test-long - make test-integration - -### Validation targets - - make fmt - make vet - make lint - make dco - -### Restore, update and save dependencies - -When you make a fresh copy of the repo, all the dependecies are in `vendor/` directory for the builds to work. If you want to update the dependencies - -#### Restore the dependencies - - make dep-restore - - This uses godep to restores all the dependencies to your `$GOPATH`. Note that this changes the packages in your `$GOPATH` - -#### Add one ore more dependencies - - go get -u - -#### Save the dependencies to `vendor/` - - make dep-save - -4. Verify the changes in your repo, commit and submit a pull request - -## Integration Tests - -### Setup - -We use [BATS](https://github.com/sstephenson/bats) for integration testing, so, -first make sure to [install it](https://github.com/sstephenson/bats#installing-bats-from-source). - -### Basic Usage - -You first need to build, calling `make build`. - -You can then invoke integration tests calling `DRIVER=foo make test-integration TESTSUITE`, where `TESTSUITE` is -one of the `test/integration` subfolder, and `foo` is the specific driver you want to test. - -Examples: - -```console -$ DRIVER=virtualbox make test-integration test/integration/core/core-commands.bats - ✓ virtualbox: machine should not exist - ✓ virtualbox: create - ✓ virtualbox: ls - ✓ virtualbox: run busybox container - ✓ virtualbox: url - ✓ virtualbox: ip - ✓ virtualbox: ssh - ✓ virtualbox: docker commands with the socket should work - ✓ virtualbox: stop - ✓ virtualbox: machine should show stopped after stop - ✓ virtualbox: machine should now allow upgrade when stopped - ✓ virtualbox: start - ✓ virtualbox: machine should show running after start - ✓ virtualbox: kill - ✓ virtualbox: machine should show stopped after kill - ✓ virtualbox: restart - ✓ virtualbox: machine should show running after restart - -17 tests, 0 failures -Cleaning up machines... -Successfully removed bats-virtualbox-test -``` - -To invoke a directory of tests recursively: - -```console -$ DRIVER=virtualbox make test-integration test/integration/core/ -... -``` - -### Extra Create Arguments - -In some cases, for instance to test the creation of a specific base OS (e.g. -RHEL) as opposed to the default with the common tests, you may want to run -common tests with different create arguments than you get out of the box. - -Keep in mind that Machine supports environment variables for many of these -flags. So, for instance, you could run the command (substituting, of course, -the proper secrets): - - $ DRIVER=amazonec2 \ - AWS_VPC_ID=vpc-xxxxxxx \ - AWS_SECRET_ACCESS_KEY=yyyyyyyyyyyyy \ - AWS_ACCESS_KEY_ID=zzzzzzzzzzzzzzzz \ - AWS_AMI=ami-12663b7a \ - AWS_SSH_USER=ec2-user \ - make test-integration test/integration/core - -in order to run the core tests on Red Hat Enterprise Linux on Amazon. - -### Layout - -The `test/integration` directory is layed out to divide up tests based on the -areas which the test. If you are uncertain where to put yours, we are happy to -guide you. - -At the time of writing, there is: - -1. A `core` directory which contains tests that are applicable to all drivers. -2. A `drivers` directory which contains tests that are applicable only to - specific drivers with sub-directories for each provider. -3. A `cli` directory which is meant for testing functionality of the command - line interface, without much regard for driver-specific details. - -### Guidelines - -The best practices for writing integration tests on Docker Machine are still a -work in progress, but here are some general guidelines from the maintainers: - -1. Ideally, each test file should have only one concern. -2. Tests generally should not spin up more than one machine unless the test is - deliberately testing something which involves multiple machines, such as an `ls` - test which involves several machines, or a test intended to create and check - some property of a Swarm cluster. -3. BATS will print the output of commands executed during a test if the test - fails. This can be useful, for instance to dump the magic `$output` variable - that BATS provides and/or to get debugging information. -4. It is not strictly needed to clean up the machines as part of the test. The - BATS wrapper script has a hook to take care of cleaning up all created machines - after each test. - -# Drivers - -Docker Machine has several included drivers that supports provisioning hosts -in various providers. If you wish to contribute a driver, we ask the following -to ensure we keep the driver in a consistent and stable state: - -- Address issues filed against this driver in a timely manner -- Review PRs for the driver -- Be responsible for maintaining the infrastructure to run unit tests - and integration tests on the new supported environment -- Participate in a weekly driver maintainer meeting - -If you can commit to those, the next step is to make sure the driver adheres -to the [spec](https://github.com/docker/machine/blob/master/docs/DRIVER_SPEC.md). - -Once you have created and tested the driver, you can open a PR. - -Note: even if those are met does not guarantee a driver will be accepted. -If you have questions, please do not hesitate to contact us on IRC. diff --git a/vendor/github.com/docker/machine/Dockerfile b/vendor/github.com/docker/machine/Dockerfile deleted file mode 100644 index dcdab243..00000000 --- a/vendor/github.com/docker/machine/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM golang:1.6.2 - -RUN go get github.com/golang/lint/golint \ - github.com/mattn/goveralls \ - golang.org/x/tools/cover - -ENV USER root -WORKDIR /go/src/github.com/docker/machine - -COPY . ./ -RUN mkdir bin diff --git a/vendor/github.com/docker/machine/Godeps/Godeps.json b/vendor/github.com/docker/machine/Godeps/Godeps.json deleted file mode 100644 index 294da299..00000000 --- a/vendor/github.com/docker/machine/Godeps/Godeps.json +++ /dev/null @@ -1,617 +0,0 @@ -{ - "ImportPath": "github.com/docker/machine", - "GoVersion": "go1.6", - "GodepVersion": "v66", - "Packages": [ - "github.com/docker/machine", - "github.com/docker/machine/cmd", - "github.com/docker/machine/commands", - "github.com/docker/machine/commands/commandstest", - "github.com/docker/machine/commands/mcndirs", - "github.com/docker/machine/drivers/amazonec2", - "github.com/docker/machine/drivers/azure", - "github.com/docker/machine/drivers/azure/azureutil", - "github.com/docker/machine/drivers/azure/logutil", - "github.com/docker/machine/drivers/digitalocean", - "github.com/docker/machine/drivers/errdriver", - "github.com/docker/machine/drivers/exoscale", - "github.com/docker/machine/drivers/fakedriver", - "github.com/docker/machine/drivers/generic", - "github.com/docker/machine/drivers/google", - "github.com/docker/machine/drivers/hyperv", - "github.com/docker/machine/drivers/none", - "github.com/docker/machine/drivers/openstack", - "github.com/docker/machine/drivers/rackspace", - "github.com/docker/machine/drivers/softlayer", - "github.com/docker/machine/drivers/virtualbox", - "github.com/docker/machine/drivers/vmwarefusion", - "github.com/docker/machine/drivers/vmwarevcloudair", - "github.com/docker/machine/drivers/vmwarevsphere", - "github.com/docker/machine/its", - "github.com/docker/machine/its/cli", - "github.com/docker/machine/its/thirdparty", - "github.com/docker/machine/libmachine", - "github.com/docker/machine/libmachine/auth", - "github.com/docker/machine/libmachine/cert", - "github.com/docker/machine/libmachine/check", - "github.com/docker/machine/libmachine/crashreport", - "github.com/docker/machine/libmachine/drivers", - "github.com/docker/machine/libmachine/drivers/plugin", - "github.com/docker/machine/libmachine/drivers/plugin/localbinary", - "github.com/docker/machine/libmachine/drivers/rpc", - "github.com/docker/machine/libmachine/engine", - "github.com/docker/machine/libmachine/examples", - "github.com/docker/machine/libmachine/host", - "github.com/docker/machine/libmachine/hosttest", - "github.com/docker/machine/libmachine/libmachinetest", - "github.com/docker/machine/libmachine/log", - "github.com/docker/machine/libmachine/mcndockerclient", - "github.com/docker/machine/libmachine/mcnerror", - "github.com/docker/machine/libmachine/mcnflag", - "github.com/docker/machine/libmachine/mcnutils", - "github.com/docker/machine/libmachine/persist", - "github.com/docker/machine/libmachine/persist/persisttest", - "github.com/docker/machine/libmachine/provider", - "github.com/docker/machine/libmachine/provision", - "github.com/docker/machine/libmachine/provision/pkgaction", - "github.com/docker/machine/libmachine/provision/provisiontest", - "github.com/docker/machine/libmachine/provision/serviceaction", - "github.com/docker/machine/libmachine/shell", - "github.com/docker/machine/libmachine/ssh", - "github.com/docker/machine/libmachine/ssh/sshtest", - "github.com/docker/machine/libmachine/state", - "github.com/docker/machine/libmachine/swarm", - "github.com/docker/machine/libmachine/version", - "github.com/docker/machine/version" - ], - "Deps": [ - { - "ImportPath": "github.com/Azure/azure-sdk-for-go/arm/compute", - "Comment": "v2.1.1-beta", - "Rev": "a1883f7b98346e4908a6c25230c95a8a3026a10c" - }, - { - "ImportPath": "github.com/Azure/azure-sdk-for-go/arm/network", - "Comment": "v2.1.1-beta", - "Rev": "a1883f7b98346e4908a6c25230c95a8a3026a10c" - }, - { - "ImportPath": "github.com/Azure/azure-sdk-for-go/arm/resources/resources", - "Comment": "v2.1.1-beta", - "Rev": "a1883f7b98346e4908a6c25230c95a8a3026a10c" - }, - { - "ImportPath": "github.com/Azure/azure-sdk-for-go/arm/resources/subscriptions", - "Comment": "v2.1.1-beta", - "Rev": "a1883f7b98346e4908a6c25230c95a8a3026a10c" - }, - { - "ImportPath": "github.com/Azure/azure-sdk-for-go/arm/storage", - "Comment": "v2.1.1-beta", - "Rev": "a1883f7b98346e4908a6c25230c95a8a3026a10c" - }, - { - "ImportPath": "github.com/Azure/azure-sdk-for-go/storage", - "Comment": "v2.1.1-beta", - "Rev": "a1883f7b98346e4908a6c25230c95a8a3026a10c" - }, - { - "ImportPath": "github.com/Azure/go-autorest/autorest", - "Comment": "v7.0.4-6-gec603a8", - "Rev": "ec603a8ea5ffc45df35c7d948d9acfd6cbc07b46" - }, - { - "ImportPath": "github.com/Azure/go-autorest/autorest/azure", - "Comment": "v7.0.4-6-gec603a8", - "Rev": "ec603a8ea5ffc45df35c7d948d9acfd6cbc07b46" - }, - { - "ImportPath": "github.com/Azure/go-autorest/autorest/date", - "Comment": "v7.0.4-6-gec603a8", - "Rev": "ec603a8ea5ffc45df35c7d948d9acfd6cbc07b46" - }, - { - "ImportPath": "github.com/Azure/go-autorest/autorest/to", - "Comment": "v7.0.4-6-gec603a8", - "Rev": "ec603a8ea5ffc45df35c7d948d9acfd6cbc07b46" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/aws", - "Comment": "v1.0.2", - "Rev": "9d7bc2d6ca2ada0468f705f0e9725ca97f8550c8" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/aws/awserr", - "Comment": "v1.0.2", - "Rev": "9d7bc2d6ca2ada0468f705f0e9725ca97f8550c8" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/aws/awsutil", - "Comment": "v1.0.2", - "Rev": "9d7bc2d6ca2ada0468f705f0e9725ca97f8550c8" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/aws/client", - "Comment": "v1.0.2", - "Rev": "9d7bc2d6ca2ada0468f705f0e9725ca97f8550c8" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/aws/client/metadata", - "Comment": "v1.0.2", - "Rev": "9d7bc2d6ca2ada0468f705f0e9725ca97f8550c8" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/aws/corehandlers", - "Comment": "v1.0.2", - "Rev": "9d7bc2d6ca2ada0468f705f0e9725ca97f8550c8" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/aws/credentials", - "Comment": "v1.0.2", - "Rev": "9d7bc2d6ca2ada0468f705f0e9725ca97f8550c8" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds", - "Comment": "v1.0.2", - "Rev": "9d7bc2d6ca2ada0468f705f0e9725ca97f8550c8" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/aws/defaults", - "Comment": "v1.0.2", - "Rev": "9d7bc2d6ca2ada0468f705f0e9725ca97f8550c8" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/aws/ec2metadata", - "Comment": "v1.0.2", - "Rev": "9d7bc2d6ca2ada0468f705f0e9725ca97f8550c8" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/aws/request", - "Comment": "v1.0.2", - "Rev": "9d7bc2d6ca2ada0468f705f0e9725ca97f8550c8" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/aws/session", - "Comment": "v1.0.2", - "Rev": "9d7bc2d6ca2ada0468f705f0e9725ca97f8550c8" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/private/endpoints", - "Comment": "v1.0.2", - "Rev": "9d7bc2d6ca2ada0468f705f0e9725ca97f8550c8" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/private/protocol/ec2query", - "Comment": "v1.0.2", - "Rev": "9d7bc2d6ca2ada0468f705f0e9725ca97f8550c8" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/private/protocol/query/queryutil", - "Comment": "v1.0.2", - "Rev": "9d7bc2d6ca2ada0468f705f0e9725ca97f8550c8" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/private/protocol/rest", - "Comment": "v1.0.2", - "Rev": "9d7bc2d6ca2ada0468f705f0e9725ca97f8550c8" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil", - "Comment": "v1.0.2", - "Rev": "9d7bc2d6ca2ada0468f705f0e9725ca97f8550c8" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/private/signer/v4", - "Comment": "v1.0.2", - "Rev": "9d7bc2d6ca2ada0468f705f0e9725ca97f8550c8" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/private/waiter", - "Comment": "v1.0.2", - "Rev": "9d7bc2d6ca2ada0468f705f0e9725ca97f8550c8" - }, - { - "ImportPath": "github.com/aws/aws-sdk-go/service/ec2", - "Comment": "v1.0.2", - "Rev": "9d7bc2d6ca2ada0468f705f0e9725ca97f8550c8" - }, - { - "ImportPath": "github.com/bugsnag/bugsnag-go", - "Comment": "v1.0.5-19-g02e9528", - "Rev": "02e952891c52fbcb15f113d90633897355783b6e" - }, - { - "ImportPath": "github.com/bugsnag/bugsnag-go/errors", - "Comment": "v1.0.5-19-g02e9528", - "Rev": "02e952891c52fbcb15f113d90633897355783b6e" - }, - { - "ImportPath": "github.com/bugsnag/osext", - "Rev": "0dd3f918b21bec95ace9dc86c7e70266cfc5c702" - }, - { - "ImportPath": "github.com/bugsnag/panicwrap", - "Comment": "1.0.0", - "Rev": "e5f9854865b9778a45169fc249e99e338d4d6f27" - }, - { - "ImportPath": "github.com/cenkalti/backoff", - "Rev": "9831e1e25c874e0a0601b6dc43641071414eec7a" - }, - { - "ImportPath": "github.com/codegangsta/cli", - "Comment": "v1.11.0-6-g0302d39", - "Rev": "0302d3914d2a6ad61404584cdae6e6dbc9c03599" - }, - { - "ImportPath": "github.com/davecgh/go-spew/spew", - "Rev": "5215b55f46b2b919f50a1df0eaa5886afe4e3b3d" - }, - { - "ImportPath": "github.com/dgrijalva/jwt-go", - "Comment": "v2.4.0-4-gafef698", - "Rev": "afef698c326bfd906b11659432544e5aae441d44" - }, - { - "ImportPath": "github.com/digitalocean/godo", - "Comment": "v0.9.0-8-g2124bf3", - "Rev": "2124bf3eeeb4ac070337bb19ef7b76a745de56f4" - }, - { - "ImportPath": "github.com/docker/docker/pkg/term", - "Comment": "v1.5.0", - "Rev": "a8a31eff10544860d2188dddabdee4d727545796" - }, - { - "ImportPath": "github.com/docker/go-units", - "Comment": "v0.1.0-21-g0bbddae", - "Rev": "0bbddae09c5a5419a8c6dcdd7ff90da3d450393b" - }, - { - "ImportPath": "github.com/go-ini/ini", - "Comment": "v0-56-g03e0e7d", - "Rev": "03e0e7d51a13a91c765d8d0161246bc14a38001a" - }, - { - "ImportPath": "github.com/golang/protobuf/proto", - "Rev": "3c84672111d91bb5ac31719e112f9f7126a0e26e" - }, - { - "ImportPath": "github.com/google/go-querystring/query", - "Rev": "30f7a39f4a218feb5325f3aebc60c32a572a8274" - }, - { - "ImportPath": "github.com/jmespath/go-jmespath", - "Comment": "0.2.2", - "Rev": "3433f3ea46d9f8019119e7dd41274e112a2359a9" - }, - { - "ImportPath": "github.com/mitchellh/mapstructure", - "Rev": "740c764bc6149d3f1806231418adb9f52c11bcbf" - }, - { - "ImportPath": "github.com/pmezard/go-difflib/difflib", - "Rev": "792786c7400a136282c1664665ae0a8db921c6c2" - }, - { - "ImportPath": "github.com/pyr/egoscale/src/egoscale", - "Rev": "347f81398d2ea1f3eebf1cd27ee3183669e34819" - }, - { - "ImportPath": "github.com/rackspace/gophercloud", - "Comment": "v1.0.0-558-gce0f487", - "Rev": "ce0f487f6747ab43c4e4404722df25349385bebd" - }, - { - "ImportPath": "github.com/rackspace/gophercloud/openstack", - "Comment": "v1.0.0-558-gce0f487", - "Rev": "ce0f487f6747ab43c4e4404722df25349385bebd" - }, - { - "ImportPath": "github.com/rackspace/gophercloud/openstack/compute/v2/extensions/floatingip", - "Comment": "v1.0.0-558-gce0f487", - "Rev": "ce0f487f6747ab43c4e4404722df25349385bebd" - }, - { - "ImportPath": "github.com/rackspace/gophercloud/openstack/compute/v2/extensions/keypairs", - "Comment": "v1.0.0-558-gce0f487", - "Rev": "ce0f487f6747ab43c4e4404722df25349385bebd" - }, - { - "ImportPath": "github.com/rackspace/gophercloud/openstack/compute/v2/extensions/startstop", - "Comment": "v1.0.0-558-gce0f487", - "Rev": "ce0f487f6747ab43c4e4404722df25349385bebd" - }, - { - "ImportPath": "github.com/rackspace/gophercloud/openstack/compute/v2/flavors", - "Comment": "v1.0.0-558-gce0f487", - "Rev": "ce0f487f6747ab43c4e4404722df25349385bebd" - }, - { - "ImportPath": "github.com/rackspace/gophercloud/openstack/compute/v2/images", - "Comment": "v1.0.0-558-gce0f487", - "Rev": "ce0f487f6747ab43c4e4404722df25349385bebd" - }, - { - "ImportPath": "github.com/rackspace/gophercloud/openstack/compute/v2/servers", - "Comment": "v1.0.0-558-gce0f487", - "Rev": "ce0f487f6747ab43c4e4404722df25349385bebd" - }, - { - "ImportPath": "github.com/rackspace/gophercloud/openstack/identity/v2/tenants", - "Comment": "v1.0.0-558-gce0f487", - "Rev": "ce0f487f6747ab43c4e4404722df25349385bebd" - }, - { - "ImportPath": "github.com/rackspace/gophercloud/openstack/identity/v2/tokens", - "Comment": "v1.0.0-558-gce0f487", - "Rev": "ce0f487f6747ab43c4e4404722df25349385bebd" - }, - { - "ImportPath": "github.com/rackspace/gophercloud/openstack/identity/v3/tokens", - "Comment": "v1.0.0-558-gce0f487", - "Rev": "ce0f487f6747ab43c4e4404722df25349385bebd" - }, - { - "ImportPath": "github.com/rackspace/gophercloud/openstack/networking/v2/extensions/layer3/floatingips", - "Comment": "v1.0.0-558-gce0f487", - "Rev": "ce0f487f6747ab43c4e4404722df25349385bebd" - }, - { - "ImportPath": "github.com/rackspace/gophercloud/openstack/networking/v2/networks", - "Comment": "v1.0.0-558-gce0f487", - "Rev": "ce0f487f6747ab43c4e4404722df25349385bebd" - }, - { - "ImportPath": "github.com/rackspace/gophercloud/openstack/networking/v2/ports", - "Comment": "v1.0.0-558-gce0f487", - "Rev": "ce0f487f6747ab43c4e4404722df25349385bebd" - }, - { - "ImportPath": "github.com/rackspace/gophercloud/openstack/utils", - "Comment": "v1.0.0-558-gce0f487", - "Rev": "ce0f487f6747ab43c4e4404722df25349385bebd" - }, - { - "ImportPath": "github.com/rackspace/gophercloud/pagination", - "Comment": "v1.0.0-558-gce0f487", - "Rev": "ce0f487f6747ab43c4e4404722df25349385bebd" - }, - { - "ImportPath": "github.com/rackspace/gophercloud/rackspace", - "Comment": "v1.0.0-558-gce0f487", - "Rev": "ce0f487f6747ab43c4e4404722df25349385bebd" - }, - { - "ImportPath": "github.com/rackspace/gophercloud/rackspace/identity/v2/tokens", - "Comment": "v1.0.0-558-gce0f487", - "Rev": "ce0f487f6747ab43c4e4404722df25349385bebd" - }, - { - "ImportPath": "github.com/rackspace/gophercloud/testhelper", - "Comment": "v1.0.0-558-gce0f487", - "Rev": "ce0f487f6747ab43c4e4404722df25349385bebd" - }, - { - "ImportPath": "github.com/rackspace/gophercloud/testhelper/client", - "Comment": "v1.0.0-558-gce0f487", - "Rev": "ce0f487f6747ab43c4e4404722df25349385bebd" - }, - { - "ImportPath": "github.com/samalba/dockerclient", - "Rev": "f661dd4754aa5c52da85d04b5871ee0e11f4b59c" - }, - { - "ImportPath": "github.com/skarademir/naturalsort", - "Rev": "69a5d87bef620f77ee8508db30c846b3b84b111e" - }, - { - "ImportPath": "github.com/stretchr/objx", - "Rev": "1a9d0bb9f541897e62256577b352fdbc1fb4fd94" - }, - { - "ImportPath": "github.com/stretchr/testify/assert", - "Comment": "v1.1.3-4-g1f4a164", - "Rev": "1f4a1643a57e798696635ea4c126e9127adb7d3c" - }, - { - "ImportPath": "github.com/stretchr/testify/mock", - "Comment": "v1.1.3-4-g1f4a164", - "Rev": "1f4a1643a57e798696635ea4c126e9127adb7d3c" - }, - { - "ImportPath": "github.com/tent/http-link-go", - "Rev": "ac974c61c2f990f4115b119354b5e0b47550e888" - }, - { - "ImportPath": "github.com/vmware/govcloudair", - "Comment": "v0.0.2", - "Rev": "66a23eaabc61518f91769939ff541886fe1dceef" - }, - { - "ImportPath": "github.com/vmware/govcloudair/types/v56", - "Comment": "v0.0.2", - "Rev": "66a23eaabc61518f91769939ff541886fe1dceef" - }, - { - "ImportPath": "github.com/vmware/govmomi", - "Comment": "v0.1.0-454-g9051bd6", - "Rev": "9051bd6b44125d9472e0c148b5965692ab283d4a" - }, - { - "ImportPath": "github.com/vmware/govmomi/find", - "Comment": "v0.1.0-454-g9051bd6", - "Rev": "9051bd6b44125d9472e0c148b5965692ab283d4a" - }, - { - "ImportPath": "github.com/vmware/govmomi/guest", - "Comment": "v0.1.0-454-g9051bd6", - "Rev": "9051bd6b44125d9472e0c148b5965692ab283d4a" - }, - { - "ImportPath": "github.com/vmware/govmomi/list", - "Comment": "v0.1.0-454-g9051bd6", - "Rev": "9051bd6b44125d9472e0c148b5965692ab283d4a" - }, - { - "ImportPath": "github.com/vmware/govmomi/object", - "Comment": "v0.1.0-454-g9051bd6", - "Rev": "9051bd6b44125d9472e0c148b5965692ab283d4a" - }, - { - "ImportPath": "github.com/vmware/govmomi/property", - "Comment": "v0.1.0-454-g9051bd6", - "Rev": "9051bd6b44125d9472e0c148b5965692ab283d4a" - }, - { - "ImportPath": "github.com/vmware/govmomi/session", - "Comment": "v0.1.0-454-g9051bd6", - "Rev": "9051bd6b44125d9472e0c148b5965692ab283d4a" - }, - { - "ImportPath": "github.com/vmware/govmomi/task", - "Comment": "v0.1.0-454-g9051bd6", - "Rev": "9051bd6b44125d9472e0c148b5965692ab283d4a" - }, - { - "ImportPath": "github.com/vmware/govmomi/vim25", - "Comment": "v0.1.0-454-g9051bd6", - "Rev": "9051bd6b44125d9472e0c148b5965692ab283d4a" - }, - { - "ImportPath": "github.com/vmware/govmomi/vim25/debug", - "Comment": "v0.1.0-454-g9051bd6", - "Rev": "9051bd6b44125d9472e0c148b5965692ab283d4a" - }, - { - "ImportPath": "github.com/vmware/govmomi/vim25/methods", - "Comment": "v0.1.0-454-g9051bd6", - "Rev": "9051bd6b44125d9472e0c148b5965692ab283d4a" - }, - { - "ImportPath": "github.com/vmware/govmomi/vim25/mo", - "Comment": "v0.1.0-454-g9051bd6", - "Rev": "9051bd6b44125d9472e0c148b5965692ab283d4a" - }, - { - "ImportPath": "github.com/vmware/govmomi/vim25/progress", - "Comment": "v0.1.0-454-g9051bd6", - "Rev": "9051bd6b44125d9472e0c148b5965692ab283d4a" - }, - { - "ImportPath": "github.com/vmware/govmomi/vim25/soap", - "Comment": "v0.1.0-454-g9051bd6", - "Rev": "9051bd6b44125d9472e0c148b5965692ab283d4a" - }, - { - "ImportPath": "github.com/vmware/govmomi/vim25/types", - "Comment": "v0.1.0-454-g9051bd6", - "Rev": "9051bd6b44125d9472e0c148b5965692ab283d4a" - }, - { - "ImportPath": "github.com/vmware/govmomi/vim25/xml", - "Comment": "v0.1.0-454-g9051bd6", - "Rev": "9051bd6b44125d9472e0c148b5965692ab283d4a" - }, - { - "ImportPath": "golang.org/x/crypto/curve25519", - "Rev": "beef0f4390813b96e8e68fd78570396d0f4751fc" - }, - { - "ImportPath": "golang.org/x/crypto/ssh", - "Rev": "beef0f4390813b96e8e68fd78570396d0f4751fc" - }, - { - "ImportPath": "golang.org/x/crypto/ssh/terminal", - "Rev": "beef0f4390813b96e8e68fd78570396d0f4751fc" - }, - { - "ImportPath": "golang.org/x/net/context", - "Rev": "4f2fc6c1e69d41baf187332ee08fbd2b296f21ed" - }, - { - "ImportPath": "golang.org/x/net/context/ctxhttp", - "Rev": "4f2fc6c1e69d41baf187332ee08fbd2b296f21ed" - }, - { - "ImportPath": "golang.org/x/oauth2", - "Rev": "442624c9ec9243441e83b374a9e22ac549b5c51d" - }, - { - "ImportPath": "golang.org/x/oauth2/google", - "Rev": "442624c9ec9243441e83b374a9e22ac549b5c51d" - }, - { - "ImportPath": "golang.org/x/oauth2/internal", - "Rev": "442624c9ec9243441e83b374a9e22ac549b5c51d" - }, - { - "ImportPath": "golang.org/x/oauth2/jws", - "Rev": "442624c9ec9243441e83b374a9e22ac549b5c51d" - }, - { - "ImportPath": "golang.org/x/oauth2/jwt", - "Rev": "442624c9ec9243441e83b374a9e22ac549b5c51d" - }, - { - "ImportPath": "golang.org/x/sys/windows/registry", - "Rev": "d9157a9621b69ad1d8d77a1933590c416593f24f" - }, - { - "ImportPath": "google.golang.org/api/compute/v1", - "Rev": "030d584ade5f79aa2ed0ce067e8f7da50c9a10d5" - }, - { - "ImportPath": "google.golang.org/api/gensupport", - "Rev": "030d584ade5f79aa2ed0ce067e8f7da50c9a10d5" - }, - { - "ImportPath": "google.golang.org/api/googleapi", - "Rev": "030d584ade5f79aa2ed0ce067e8f7da50c9a10d5" - }, - { - "ImportPath": "google.golang.org/api/googleapi/internal/uritemplates", - "Rev": "030d584ade5f79aa2ed0ce067e8f7da50c9a10d5" - }, - { - "ImportPath": "google.golang.org/appengine", - "Rev": "6a436539be38c296a8075a871cc536686b458371" - }, - { - "ImportPath": "google.golang.org/appengine/internal", - "Rev": "6a436539be38c296a8075a871cc536686b458371" - }, - { - "ImportPath": "google.golang.org/appengine/internal/app_identity", - "Rev": "6a436539be38c296a8075a871cc536686b458371" - }, - { - "ImportPath": "google.golang.org/appengine/internal/base", - "Rev": "6a436539be38c296a8075a871cc536686b458371" - }, - { - "ImportPath": "google.golang.org/appengine/internal/datastore", - "Rev": "6a436539be38c296a8075a871cc536686b458371" - }, - { - "ImportPath": "google.golang.org/appengine/internal/log", - "Rev": "6a436539be38c296a8075a871cc536686b458371" - }, - { - "ImportPath": "google.golang.org/appengine/internal/modules", - "Rev": "6a436539be38c296a8075a871cc536686b458371" - }, - { - "ImportPath": "google.golang.org/appengine/internal/remote_api", - "Rev": "6a436539be38c296a8075a871cc536686b458371" - }, - { - "ImportPath": "google.golang.org/cloud/compute/metadata", - "Rev": "975617b05ea8a58727e6c1a06b6161ff4185a9f2" - }, - { - "ImportPath": "google.golang.org/cloud/internal", - "Rev": "975617b05ea8a58727e6c1a06b6161ff4185a9f2" - } - ] -} diff --git a/vendor/github.com/docker/machine/Godeps/Readme b/vendor/github.com/docker/machine/Godeps/Readme deleted file mode 100644 index 4cdaa53d..00000000 --- a/vendor/github.com/docker/machine/Godeps/Readme +++ /dev/null @@ -1,5 +0,0 @@ -This directory tree is generated automatically by godep. - -Please do not edit. - -See https://github.com/tools/godep for more information. diff --git a/vendor/github.com/docker/machine/MAINTAINERS b/vendor/github.com/docker/machine/MAINTAINERS deleted file mode 100644 index aa9aa981..00000000 --- a/vendor/github.com/docker/machine/MAINTAINERS +++ /dev/null @@ -1,46 +0,0 @@ -# Machine maintainers file -# -# This file describes who runs the docker/machine project and how. -# This is a living document - if you see something out of date or missing, speak up! -# -# It is structured to be consumable by both humans and programs. -# To extract its contents programmatically, use any TOML-compliant parser. -# -# This file is compiled into the MAINTAINERS file in docker/opensource. -# -[Org] - [Org."Core maintainers"] - people = [ - "dgageot", - "ehazlett", - "jeanlaurent", - "nathanleclaire", - ] - -[people] - -# A reference list of all people associated with the project. -# All other sections should refer to people by their canonical key -# in the people section. - - # ADD YOURSELF HERE IN ALPHABETICAL ORDER - - [people.dgageot] - Name = "David Gageot" - Email = "david.gageot@docker.com" - GitHub = "dgageot" - - [people.ehazlett] - Name = "Evan Hazlett" - Email = "ejhazlett@gmail.com" - GitHub = "ehazlett" - - [people.jeanlaurent] - Name = "Jean-Laurent de Morlhon" - Email = "jeanlaurent@docker.com>" - GitHub = "jeanlaurent" - - [people.nathanleclaire] - Name = "Nathan LeClaire" - Email = "nathan.leclaire@docker.com" - GitHub = "nathanleclaire" diff --git a/vendor/github.com/docker/machine/Makefile b/vendor/github.com/docker/machine/Makefile deleted file mode 100644 index 5bbe5b00..00000000 --- a/vendor/github.com/docker/machine/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -# Plain make targets if not requested inside a container -ifneq (,$(findstring test-integration,$(MAKECMDGOALS))) - include Makefile.inc - include mk/main.mk -else ifneq ($(USE_CONTAINER), true) - include Makefile.inc - include mk/main.mk -else -# Otherwise, with docker, swallow all targets and forward into a container -DOCKER_BUILD_DONE := "" - -test: .DEFAULT - -.DEFAULT: - @test ! -z "$(DOCKER_BUILD_DONE)" || ./script/build_in_container.sh $(MAKECMDGOALS) - $(eval DOCKER_BUILD_DONE := "done") - -endif diff --git a/vendor/github.com/docker/machine/Makefile.inc b/vendor/github.com/docker/machine/Makefile.inc deleted file mode 100644 index 480a8991..00000000 --- a/vendor/github.com/docker/machine/Makefile.inc +++ /dev/null @@ -1,31 +0,0 @@ -# Project name, used to name the binaries -PKG_NAME := docker-machine - -# If true, disable optimizations and does NOT strip the binary -DEBUG ?= -# If true, "build" will produce a static binary (cross compile always produce static build regardless) -STATIC ?= -# If true, turn on verbose output for build -VERBOSE ?= -# Build tags -BUILDTAGS ?= -# Adjust number of parallel builds (XXX not used) -PARALLEL ?= -1 -# Coverage default directory -COVERAGE_DIR ?= cover -# Whether to perform targets inside a docker container, or natively on the host -USE_CONTAINER ?= - -# List of cross compilation targets -ifeq ($(TARGET_OS),) - TARGET_OS := darwin linux windows -endif - -ifeq ($(TARGET_ARCH),) - TARGET_ARCH := amd64 386 -endif - -# Output prefix, defaults to local directory if not specified -ifeq ($(PREFIX),) - PREFIX := $(shell pwd) -endif diff --git a/vendor/github.com/docker/machine/README.md b/vendor/github.com/docker/machine/README.md deleted file mode 100644 index 3c7f9fd1..00000000 --- a/vendor/github.com/docker/machine/README.md +++ /dev/null @@ -1,143 +0,0 @@ -# Docker Machine - -![](/docs/img/logo.png) - -Machine lets you create Docker hosts on your computer, on cloud providers, and -inside your own data center. It creates servers, installs Docker on them, then -configures the Docker client to talk to them. - -It works a bit like this: - -```console -$ docker-machine create -d virtualbox default -Running pre-create checks... -Creating machine... -(default) Creating VirtualBox VM... -(default) Creating SSH key... -(default) Starting VM... -Waiting for machine to be running, this may take a few minutes... -Machine is running, waiting for SSH to be available... -Detecting operating system of created instance... -Detecting the provisioner... -Provisioning with boot2docker... -Copying certs to the local machine directory... -Copying certs to the remote machine... -Setting Docker configuration on the remote daemon... -Checking connection to Docker... -Docker is up and running! -To see how to connect Docker to this machine, run: docker-machine env default - -$ docker-machine ls -NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS -default - virtualbox Running tcp://192.168.99.188:2376 v1.9.1 - -$ eval "$(docker-machine env default)" - -$ docker run busybox echo hello world -Unable to find image 'busybox:latest' locally -511136ea3c5a: Pull complete -df7546f9f060: Pull complete -ea13149945cb: Pull complete -4986bf8c1536: Pull complete -hello world -``` - -In addition to local VMs, you can create and manage cloud servers: - -```console -$ docker-machine create -d digitalocean --digitalocean-access-token=secret staging -Creating SSH key... -Creating Digital Ocean droplet... -To see how to connect Docker to this machine, run: docker-machine env staging - -$ docker-machine ls -NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS -default - virtualbox Running tcp://192.168.99.188:2376 v1.9.1 -staging - digitalocean Running tcp://203.0.113.81:2376 v1.9.1 -``` - -## Installation and documentation - -Full documentation [is available here](https://docs.docker.com/machine/). - -## Contributing - -Want to hack on Machine? Please start with the [Contributing Guide](https://github.com/docker/machine/blob/master/CONTRIBUTING.md). - -## Driver Plugins - -In addition to the core driver plugins bundled alongside Docker Machine, users -can make and distribute their own plugin for any virtualization technology or -cloud provider. To browse the list of known Docker Machine plugins, please [see -this document in our -repo](https://github.com/docker/machine/blob/master/docs/AVAILABLE_DRIVER_PLUGINS.md). - -## Troubleshooting - -Docker Machine tries to do the right thing in a variety of scenarios but -sometimes things do not go according to plan. Here is a quick troubleshooting -guide which may help you to resolve of the issues you may be seeing. - -Note that some of the suggested solutions are only available on the Docker -Machine master branch. If you need them, consider compiling Docker Machine from -source. -#### `docker-machine` hangs - -A common issue with Docker Machine is that it will hang when attempting to start -up the virtual machine. Since starting the machine is part of the `create` -process, `create` is often where these types of errors show up. - -A hang could be due to a variety of factors, but the most common suspect is -networking. Consider the following: - -- Are you using a VPN? If so, try disconnecting and see if creation will - succeed without the VPN. Some VPN software aggressively controls routes and - you may need to [manually add the route](https://github.com/docker/machine/issues/1500#issuecomment-121134958). -- Are you connected to a proxy server, corporate or otherwise? If so, take a - look at the `--no-proxy` flag for `env` and at [setting environment variables - for the created Docker Engine](https://docs.docker.com/machine/reference/create/#specifying-configuration-options-for-the-created-docker-engine). -- Are there a lot of host-only interfaces listed by the command `VBoxManage list - hostonlyifs`? If so, this has sometimes been known to cause bugs. Consider - removing the ones you are not using (`VBoxManage hostonlyif remove name`) and - trying machine creation again. - -We are keenly aware of this as an issue and working towards a set of solutions -which is robust for all users, so please give us feedback and/or report issues, -workarounds, and desired workflows as you discover them. - -#### Machine creation errors out before finishing - -If you see messages such as "exit status 1" creating machines with VirtualBox, -this frequently indicates that there is an issue with VirtualBox itself. Please -[file an issue](https://github.com/docker/machine/issues/new) and include a link -to a [Github Gist](https://gist.github.com/) with the output of the VirtualBox -log (usually located at -`$HOME/.docker/machine/machines/machinename/machinename/Logs/VBox.log`), as well -as the output of running the Docker Machine command which is failing with the -global `--debug` flag enabled. This will help us to track down which versions -of VirtualBox are failing where, and under which conditions. - -If you see messages such as "exit status 255", this frequently indicates there -has been an issue with SSH. Please investigate your SSH configuration if you -have one, and/or [file an issue](https://github.com/docker/machine/issues). - -#### "You may be getting rate limited by Github" error message - -In order to `create` or `upgrade` virtual machines running Docker, Docker -Machine will check the Github API for the latest release of the [boot2docker -operating system](https://github.com/boot2docker/boot2docker). The Github API -allows for a small number of unauthenticated requests from a given client, but -if you share an IP address with many other users (e.g. in an office), you may -get rate limited by their API, and Docker Machine will error out with messages -indicating this. - -In order to work around this issue, you can [generate a -token](https://help.github.com/articles/creating-an-access-token-for-command-line-use/) -and pass it to Docker Machine using the global `--github-api-token` flag like -so: - -```console -$ docker-machine --github-api-token=token create -d virtualbox newbox -``` - -This should eliminate any issues you've been experiencing with rate limiting. diff --git a/vendor/github.com/docker/machine/ROADMAP.md b/vendor/github.com/docker/machine/ROADMAP.md deleted file mode 100644 index 7f9d4a99..00000000 --- a/vendor/github.com/docker/machine/ROADMAP.md +++ /dev/null @@ -1,34 +0,0 @@ -# Machine Roadmap - -Machine currently works really well for development and test environments. The -goal is to make it work better for provisioning and managing production -environments. - -This is not a simple task -- production is inherently far more complex than -development -- but there are three things which are big steps towards that goal: -**client/server architecture**, **swarm integration** and **flexible -provisioning**. - -(Note: this document is a high-level overview of where we are taking Machine. -For what is coming in specific releases, see our [upcoming -milestones](https://github.com/docker/machine/milestones).) - -### Docker Engine / Swarm Configuration - -Currently there are only a few things that can be configured in the Docker Engine and Swarm. This will enable more operations such as Engine labels and Swarm strategies. - -### Boot2Docker Migration Support - -Currently both Machine and Boot2Docker provider similar functionality. This will enable users to migrate from boot2docker to machine. - -### Expand Provisioner - -Machine currently supports running Boot2Docker for "local" providers and Ubuntu for "remote" providers. This will expand the provisioning capabilities to include other base operating systems such as Red Hat-like distributions and possibly other "just enough" operating systems. - -### Windows Experience - -Currently, the Machine on Windows experience is not as good as the Mac / Linux. There is no "recommended" path to use Machine and there are several inconsistencies on Windows such as logging and output formatting. - -# Project Planning - -An [Open-Source Planning Process](https://github.com/docker/machine/wiki/Open-Source-Planning-Process) is used to define the Roadmap. [Project Pages](https://github.com/docker/machine/wiki) define the goals for each Milestone and identify current progress. diff --git a/vendor/github.com/docker/machine/appveyor.yml b/vendor/github.com/docker/machine/appveyor.yml deleted file mode 100644 index cd1397a4..00000000 --- a/vendor/github.com/docker/machine/appveyor.yml +++ /dev/null @@ -1,18 +0,0 @@ -version: "{build}" - -skip_tags: true - -os: Windows Server 2012 R2 - -environment: - GOPATH: c:\gopath - -clone_folder: c:\gopath\src\github.com\docker\machine - -build_script: - - go build -i -o ./bin/docker-machine.exe ./cmd/machine.go - -test_script: - - powershell -Command go test -v ./libmachine/shell - -deploy: off diff --git a/vendor/github.com/docker/machine/circle.yml b/vendor/github.com/docker/machine/circle.yml deleted file mode 100644 index 6019f8e3..00000000 --- a/vendor/github.com/docker/machine/circle.yml +++ /dev/null @@ -1,30 +0,0 @@ -machine: - pre: - - bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/1.0.22/binscripts/gvm-installer) - - post: - - gvm install go1.6 -B --name=stable - - environment: - CHECKOUT: /home/ubuntu/$CIRCLE_PROJECT_REPONAME - BASE_DIR: src/github.com/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME - BASE_STABLE: ../../../$HOME/.gvm/pkgsets/stable/global/$BASE_DIR - GO15VENDOREXPERIMENT: 1 - -dependencies: - override: - - > - gvm use stable && - mkdir -p "$(dirname $BASE_STABLE)" && - cp -R "$CHECKOUT" "$BASE_STABLE" - -test: - pre: - - gvm use stable && make build: - pwd: $BASE_STABLE - - gvm use stable && go get github.com/docker/docker-machine-driver-ci-test - - override: - - gvm use stable && PATH=../../../../bin:$PATH DRIVER=ci-test go test -v github.com/docker/machine/its/...: - pwd: $BASE_STABLE - timeout: 600 diff --git a/vendor/github.com/docker/machine/cmd/machine.go b/vendor/github.com/docker/machine/cmd/machine.go deleted file mode 100644 index a80cc334..00000000 --- a/vendor/github.com/docker/machine/cmd/machine.go +++ /dev/null @@ -1,215 +0,0 @@ -package main - -import ( - "fmt" - "os" - "strconv" - - "path/filepath" - - "github.com/codegangsta/cli" - "github.com/docker/machine/commands" - "github.com/docker/machine/commands/mcndirs" - "github.com/docker/machine/drivers/amazonec2" - "github.com/docker/machine/drivers/azure" - "github.com/docker/machine/drivers/digitalocean" - "github.com/docker/machine/drivers/exoscale" - "github.com/docker/machine/drivers/generic" - "github.com/docker/machine/drivers/google" - "github.com/docker/machine/drivers/hyperv" - "github.com/docker/machine/drivers/none" - "github.com/docker/machine/drivers/openstack" - "github.com/docker/machine/drivers/rackspace" - "github.com/docker/machine/drivers/softlayer" - "github.com/docker/machine/drivers/virtualbox" - "github.com/docker/machine/drivers/vmwarefusion" - "github.com/docker/machine/drivers/vmwarevcloudair" - "github.com/docker/machine/drivers/vmwarevsphere" - "github.com/docker/machine/libmachine/drivers/plugin" - "github.com/docker/machine/libmachine/drivers/plugin/localbinary" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/version" -) - -var AppHelpTemplate = `Usage: {{.Name}} {{if .Flags}}[OPTIONS] {{end}}COMMAND [arg...] - -{{.Usage}} - -Version: {{.Version}}{{if or .Author .Email}} - -Author:{{if .Author}} - {{.Author}}{{if .Email}} - <{{.Email}}>{{end}}{{else}} - {{.Email}}{{end}}{{end}} -{{if .Flags}} -Options: - {{range .Flags}}{{.}} - {{end}}{{end}} -Commands: - {{range .Commands}}{{.Name}}{{with .ShortName}}, {{.}}{{end}}{{ "\t" }}{{.Usage}} - {{end}} -Run '{{.Name}} COMMAND --help' for more information on a command. -` - -var CommandHelpTemplate = `Usage: docker-machine {{.Name}}{{if .Flags}} [OPTIONS]{{end}} [arg...] - -{{.Usage}}{{if .Description}} - -Description: - {{.Description}}{{end}}{{if .Flags}} - -Options: - {{range .Flags}} - {{.}}{{end}}{{ end }} -` - -func setDebugOutputLevel() { - // TODO: I'm not really a fan of this method and really would rather - // use -v / --verbose TBQH - for _, f := range os.Args { - if f == "-D" || f == "--debug" || f == "-debug" { - log.SetDebug(true) - } - } - - debugEnv := os.Getenv("MACHINE_DEBUG") - if debugEnv != "" { - showDebug, err := strconv.ParseBool(debugEnv) - if err != nil { - fmt.Fprintf(os.Stderr, "Error parsing boolean value from MACHINE_DEBUG: %s\n", err) - os.Exit(1) - } - log.SetDebug(showDebug) - } -} - -func main() { - if os.Getenv(localbinary.PluginEnvKey) == localbinary.PluginEnvVal { - driverName := os.Getenv(localbinary.PluginEnvDriverName) - runDriver(driverName) - return - } - - localbinary.CurrentBinaryIsDockerMachine = true - - setDebugOutputLevel() - cli.AppHelpTemplate = AppHelpTemplate - cli.CommandHelpTemplate = CommandHelpTemplate - app := cli.NewApp() - app.Name = filepath.Base(os.Args[0]) - app.Author = "Docker Machine Contributors" - app.Email = "https://github.com/docker/machine" - - app.Commands = commands.Commands - app.CommandNotFound = cmdNotFound - app.Usage = "Create and manage machines running Docker." - app.Version = version.FullVersion() - - log.Debug("Docker Machine Version: ", app.Version) - - app.Flags = []cli.Flag{ - cli.BoolFlag{ - Name: "debug, D", - Usage: "Enable debug mode", - }, - cli.StringFlag{ - EnvVar: "MACHINE_STORAGE_PATH", - Name: "storage-path, s", - Value: mcndirs.GetBaseDir(), - Usage: "Configures storage path", - }, - cli.StringFlag{ - EnvVar: "MACHINE_TLS_CA_CERT", - Name: "tls-ca-cert", - Usage: "CA to verify remotes against", - Value: "", - }, - cli.StringFlag{ - EnvVar: "MACHINE_TLS_CA_KEY", - Name: "tls-ca-key", - Usage: "Private key to generate certificates", - Value: "", - }, - cli.StringFlag{ - EnvVar: "MACHINE_TLS_CLIENT_CERT", - Name: "tls-client-cert", - Usage: "Client cert to use for TLS", - Value: "", - }, - cli.StringFlag{ - EnvVar: "MACHINE_TLS_CLIENT_KEY", - Name: "tls-client-key", - Usage: "Private key used in client TLS auth", - Value: "", - }, - cli.StringFlag{ - EnvVar: "MACHINE_GITHUB_API_TOKEN", - Name: "github-api-token", - Usage: "Token to use for requests to the Github API", - Value: "", - }, - cli.BoolFlag{ - EnvVar: "MACHINE_NATIVE_SSH", - Name: "native-ssh", - Usage: "Use the native (Go-based) SSH implementation.", - }, - cli.StringFlag{ - EnvVar: "MACHINE_BUGSNAG_API_TOKEN", - Name: "bugsnag-api-token", - Usage: "BugSnag API token for crash reporting", - Value: "", - }, - } - - if err := app.Run(os.Args); err != nil { - log.Error(err) - } -} - -func runDriver(driverName string) { - switch driverName { - case "amazonec2": - plugin.RegisterDriver(amazonec2.NewDriver("", "")) - case "azure": - plugin.RegisterDriver(azure.NewDriver("", "")) - case "digitalocean": - plugin.RegisterDriver(digitalocean.NewDriver("", "")) - case "exoscale": - plugin.RegisterDriver(exoscale.NewDriver("", "")) - case "generic": - plugin.RegisterDriver(generic.NewDriver("", "")) - case "google": - plugin.RegisterDriver(google.NewDriver("", "")) - case "hyperv": - plugin.RegisterDriver(hyperv.NewDriver("", "")) - case "none": - plugin.RegisterDriver(none.NewDriver("", "")) - case "openstack": - plugin.RegisterDriver(openstack.NewDriver("", "")) - case "rackspace": - plugin.RegisterDriver(rackspace.NewDriver("", "")) - case "softlayer": - plugin.RegisterDriver(softlayer.NewDriver("", "")) - case "virtualbox": - plugin.RegisterDriver(virtualbox.NewDriver("", "")) - case "vmwarefusion": - plugin.RegisterDriver(vmwarefusion.NewDriver("", "")) - case "vmwarevcloudair": - plugin.RegisterDriver(vmwarevcloudair.NewDriver("", "")) - case "vmwarevsphere": - plugin.RegisterDriver(vmwarevsphere.NewDriver("", "")) - default: - fmt.Fprintf(os.Stderr, "Unsupported driver: %s\n", driverName) - os.Exit(1) - } -} - -func cmdNotFound(c *cli.Context, command string) { - log.Errorf( - "%s: '%s' is not a %s command. See '%s --help'.", - c.App.Name, - command, - c.App.Name, - os.Args[0], - ) - os.Exit(1) -} diff --git a/vendor/github.com/docker/machine/cmd/machine_test.go b/vendor/github.com/docker/machine/cmd/machine_test.go deleted file mode 100644 index 0287158a..00000000 --- a/vendor/github.com/docker/machine/cmd/machine_test.go +++ /dev/null @@ -1,17 +0,0 @@ -package main - -import ( - "os" - "testing" - - "github.com/docker/machine/commands/mcndirs" -) - -func TestStorePathSetCorrectly(t *testing.T) { - mcndirs.BaseDir = "" - os.Args = []string{"docker-machine", "--storage-path", "/tmp/foo"} - main() - if mcndirs.BaseDir != "/tmp/foo" { - t.Fatal("Expected MACHINE_STORAGE_PATH environment variable to be /tmp/foo but was ", os.Getenv("MACHINE_STORAGE_PATH")) - } -} diff --git a/vendor/github.com/docker/machine/commands/active.go b/vendor/github.com/docker/machine/commands/active.go deleted file mode 100644 index 5941f839..00000000 --- a/vendor/github.com/docker/machine/commands/active.go +++ /dev/null @@ -1,60 +0,0 @@ -package commands - -import ( - "errors" - "fmt" - - "time" - - "github.com/docker/machine/libmachine" - "github.com/docker/machine/libmachine/persist" - "github.com/docker/machine/libmachine/state" -) - -const ( - activeDefaultTimeout = 10 -) - -var ( - errNoActiveHost = errors.New("No active host found") - errActiveTimeout = errors.New("Error getting active host: timeout") -) - -func cmdActive(c CommandLine, api libmachine.API) error { - if len(c.Args()) > 0 { - return ErrTooManyArguments - } - - hosts, hostsInError, err := persist.LoadAllHosts(api) - if err != nil { - return fmt.Errorf("Error getting active host: %s", err) - } - - timeout := time.Duration(c.Int("timeout")) * time.Second - items := getHostListItems(hosts, hostsInError, timeout) - - active, err := activeHost(items) - - if err != nil { - return err - } - - fmt.Println(active.Name) - return nil -} - -func activeHost(items []HostListItem) (HostListItem, error) { - timeout := false - for _, item := range items { - if item.ActiveHost || item.ActiveSwarm { - return item, nil - } - if item.State == state.Timeout { - timeout = true - } - } - if timeout { - return HostListItem{}, errActiveTimeout - } - return HostListItem{}, errNoActiveHost -} diff --git a/vendor/github.com/docker/machine/commands/active_test.go b/vendor/github.com/docker/machine/commands/active_test.go deleted file mode 100644 index 08a18e69..00000000 --- a/vendor/github.com/docker/machine/commands/active_test.go +++ /dev/null @@ -1,110 +0,0 @@ -package commands - -import ( - "testing" - - "github.com/docker/machine/libmachine/state" - "github.com/stretchr/testify/assert" -) - -func TestCmdActiveNone(t *testing.T) { - hostListItems := []HostListItem{ - { - Name: "host1", - ActiveHost: false, - ActiveSwarm: false, - State: state.Running, - }, - { - Name: "host2", - ActiveHost: false, - ActiveSwarm: false, - State: state.Running, - }, - { - Name: "host3", - ActiveHost: false, - ActiveSwarm: false, - State: state.Running, - }, - } - _, err := activeHost(hostListItems) - assert.Equal(t, err, errNoActiveHost) -} - -func TestCmdActiveHost(t *testing.T) { - hostListItems := []HostListItem{ - { - Name: "host1", - ActiveHost: false, - ActiveSwarm: false, - State: state.Timeout, - }, - { - Name: "host2", - ActiveHost: true, - ActiveSwarm: false, - State: state.Running, - }, - { - Name: "host3", - ActiveHost: false, - ActiveSwarm: false, - State: state.Running, - }, - } - active, err := activeHost(hostListItems) - assert.Equal(t, err, nil) - assert.Equal(t, active.Name, "host2") -} - -func TestCmdActiveSwarm(t *testing.T) { - hostListItems := []HostListItem{ - { - Name: "host1", - ActiveHost: false, - ActiveSwarm: false, - State: state.Running, - }, - { - Name: "host2", - ActiveHost: false, - ActiveSwarm: false, - State: state.Running, - }, - { - Name: "host3", - ActiveHost: false, - ActiveSwarm: true, - State: state.Running, - }, - } - active, err := activeHost(hostListItems) - assert.Equal(t, err, nil) - assert.Equal(t, active.Name, "host3") -} - -func TestCmdActiveTimeout(t *testing.T) { - hostListItems := []HostListItem{ - { - Name: "host1", - ActiveHost: false, - ActiveSwarm: false, - State: state.Running, - }, - { - Name: "host2", - ActiveHost: false, - ActiveSwarm: false, - State: state.Running, - }, - { - Name: "host3", - ActiveHost: false, - ActiveSwarm: false, - State: state.Timeout, - }, - } - _, err := activeHost(hostListItems) - assert.Equal(t, err, errActiveTimeout) -} diff --git a/vendor/github.com/docker/machine/commands/commands.go b/vendor/github.com/docker/machine/commands/commands.go deleted file mode 100644 index 632b7918..00000000 --- a/vendor/github.com/docker/machine/commands/commands.go +++ /dev/null @@ -1,464 +0,0 @@ -package commands - -import ( - "errors" - "fmt" - "os" - "strings" - - "github.com/codegangsta/cli" - "github.com/docker/machine/commands/mcndirs" - "github.com/docker/machine/libmachine" - "github.com/docker/machine/libmachine/crashreport" - "github.com/docker/machine/libmachine/host" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnerror" - "github.com/docker/machine/libmachine/mcnutils" - "github.com/docker/machine/libmachine/persist" - "github.com/docker/machine/libmachine/ssh" -) - -const ( - defaultMachineName = "default" -) - -var ( - ErrHostLoad = errors.New("All specified hosts had errors loading their configuration.") - ErrNoDefault = fmt.Errorf("Error: No machine name(s) specified and no %q machine exists.", defaultMachineName) - ErrNoMachineSpecified = errors.New("Error: Expected to get one or more machine names as arguments") - ErrExpectedOneMachine = errors.New("Error: Expected one machine name as an argument") - ErrTooManyArguments = errors.New("Error: Too many arguments given") - - osExit = func(code int) { os.Exit(code) } -) - -// CommandLine contains all the information passed to the commands on the command line. -type CommandLine interface { - ShowHelp() - - ShowVersion() - - Application() *cli.App - - Args() cli.Args - - IsSet(name string) bool - - Bool(name string) bool - - Int(name string) int - - String(name string) string - - StringSlice(name string) []string - - GlobalString(name string) string - - FlagNames() (names []string) - - Generic(name string) interface{} -} - -type contextCommandLine struct { - *cli.Context -} - -func (c *contextCommandLine) ShowHelp() { - cli.ShowCommandHelp(c.Context, c.Command.Name) -} - -func (c *contextCommandLine) ShowVersion() { - cli.ShowVersion(c.Context) -} - -func (c *contextCommandLine) Application() *cli.App { - return c.App -} - -// targetHost returns a specific host name if one is indicated by the first CLI -// arg, or the default host name if no host is specified. -func targetHost(c CommandLine, api libmachine.API) (string, error) { - if len(c.Args()) == 0 { - defaultExists, err := api.Exists(defaultMachineName) - if err != nil { - return "", fmt.Errorf("Error checking if host %q exists: %s", defaultMachineName, err) - } - - if defaultExists { - return defaultMachineName, nil - } - - return "", ErrNoDefault - } - - return c.Args()[0], nil -} - -func runAction(actionName string, c CommandLine, api libmachine.API) error { - var ( - hostsToLoad []string - ) - - // If user did not specify a machine name explicitly, use the 'default' - // machine if it exists. This allows short form commands such as - // 'docker-machine stop' for convenience. - if len(c.Args()) == 0 { - target, err := targetHost(c, api) - if err != nil { - return err - } - - hostsToLoad = []string{target} - } else { - hostsToLoad = c.Args() - } - - hosts, hostsInError := persist.LoadHosts(api, hostsToLoad) - - if len(hostsInError) > 0 { - errs := []error{} - for _, err := range hostsInError { - errs = append(errs, err) - } - return consolidateErrs(errs) - } - - if len(hosts) == 0 { - return ErrHostLoad - } - - if errs := runActionForeachMachine(actionName, hosts); len(errs) > 0 { - return consolidateErrs(errs) - } - - for _, h := range hosts { - if err := api.Save(h); err != nil { - return fmt.Errorf("Error saving host to store: %s", err) - } - } - - return nil -} - -func runCommand(command func(commandLine CommandLine, api libmachine.API) error) func(context *cli.Context) { - return func(context *cli.Context) { - api := libmachine.NewClient(mcndirs.GetBaseDir(), mcndirs.GetMachineCertDir()) - defer api.Close() - - if context.GlobalBool("native-ssh") { - api.SSHClientType = ssh.Native - } - api.GithubAPIToken = context.GlobalString("github-api-token") - api.Filestore.Path = context.GlobalString("storage-path") - - // TODO (nathanleclaire): These should ultimately be accessed - // through the libmachine client by the rest of the code and - // not through their respective modules. For now, however, - // they are also being set the way that they originally were - // set to preserve backwards compatibility. - mcndirs.BaseDir = api.Filestore.Path - mcnutils.GithubAPIToken = api.GithubAPIToken - ssh.SetDefaultClient(api.SSHClientType) - - if err := command(&contextCommandLine{context}, api); err != nil { - log.Error(err) - - if crashErr, ok := err.(crashreport.CrashError); ok { - crashReporter := crashreport.NewCrashReporter(mcndirs.GetBaseDir(), context.GlobalString("bugsnag-api-token")) - crashReporter.Send(crashErr) - - if _, ok := crashErr.Cause.(mcnerror.ErrDuringPreCreate); ok { - osExit(3) - return - } - } - - osExit(1) - return - } - } -} - -func confirmInput(msg string) (bool, error) { - fmt.Printf("%s (y/n): ", msg) - - var resp string - _, err := fmt.Scanln(&resp) - if err != nil { - return false, err - } - - confirmed := strings.Index(strings.ToLower(resp), "y") == 0 - return confirmed, nil -} - -var Commands = []cli.Command{ - { - Name: "active", - Usage: "Print which machine is active", - Action: runCommand(cmdActive), - Flags: []cli.Flag{ - cli.IntFlag{ - Name: "timeout, t", - Usage: fmt.Sprintf("Timeout in seconds, default to %ds", activeDefaultTimeout), - Value: activeDefaultTimeout, - }, - }, - }, - { - Name: "config", - Usage: "Print the connection config for machine", - Description: "Argument is a machine name.", - Action: runCommand(cmdConfig), - Flags: []cli.Flag{ - cli.BoolFlag{ - Name: "swarm", - Usage: "Display the Swarm config instead of the Docker daemon", - }, - }, - }, - { - Flags: SharedCreateFlags, - Name: "create", - Usage: "Create a machine", - Description: fmt.Sprintf("Run '%s create --driver name' to include the create flags for that driver in the help text.", os.Args[0]), - Action: runCommand(cmdCreateOuter), - SkipFlagParsing: true, - }, - { - Name: "env", - Usage: "Display the commands to set up the environment for the Docker client", - Description: "Argument is a machine name.", - Action: runCommand(cmdEnv), - Flags: []cli.Flag{ - cli.BoolFlag{ - Name: "swarm", - Usage: "Display the Swarm config instead of the Docker daemon", - }, - cli.StringFlag{ - Name: "shell", - Usage: "Force environment to be configured for a specified shell: [fish, cmd, powershell, tcsh], default is auto-detect", - }, - cli.BoolFlag{ - Name: "unset, u", - Usage: "Unset variables instead of setting them", - }, - cli.BoolFlag{ - Name: "no-proxy", - Usage: "Add machine IP to NO_PROXY environment variable", - }, - }, - }, - { - Name: "inspect", - Usage: "Inspect information about a machine", - Description: "Argument is a machine name.", - Action: runCommand(cmdInspect), - Flags: []cli.Flag{ - cli.StringFlag{ - Name: "format, f", - Usage: "Format the output using the given go template.", - Value: "", - }, - }, - }, - { - Name: "ip", - Usage: "Get the IP address of a machine", - Description: "Argument(s) are one or more machine names.", - Action: runCommand(cmdIP), - }, - { - Name: "kill", - Usage: "Kill a machine", - Description: "Argument(s) are one or more machine names.", - Action: runCommand(cmdKill), - }, - { - Name: "ls", - Usage: "List machines", - Action: runCommand(cmdLs), - Flags: []cli.Flag{ - cli.BoolFlag{ - Name: "quiet, q", - Usage: "Enable quiet mode", - }, - cli.StringSliceFlag{ - Name: "filter", - Usage: "Filter output based on conditions provided", - Value: &cli.StringSlice{}, - }, - cli.IntFlag{ - Name: "timeout, t", - Usage: fmt.Sprintf("Timeout in seconds, default to %ds", lsDefaultTimeout), - Value: lsDefaultTimeout, - }, - cli.StringFlag{ - Name: "format, f", - Usage: "Pretty-print machines using a Go template", - }, - }, - }, - { - Name: "provision", - Usage: "Re-provision existing machines", - Action: runCommand(cmdProvision), - }, - { - Name: "regenerate-certs", - Usage: "Regenerate TLS Certificates for a machine", - Description: "Argument(s) are one or more machine names.", - Action: runCommand(cmdRegenerateCerts), - Flags: []cli.Flag{ - cli.BoolFlag{ - Name: "force, f", - Usage: "Force rebuild and do not prompt", - }, - }, - }, - { - Name: "restart", - Usage: "Restart a machine", - Description: "Argument(s) are one or more machine names.", - Action: runCommand(cmdRestart), - }, - { - Flags: []cli.Flag{ - cli.BoolFlag{ - Name: "force, f", - Usage: "Remove local configuration even if machine cannot be removed, also implies an automatic yes (`-y`)", - }, - cli.BoolFlag{ - Name: "y", - Usage: "Assumes automatic yes to proceed with remove, without prompting further user confirmation", - }, - }, - Name: "rm", - Usage: "Remove a machine", - Description: "Argument(s) are one or more machine names.", - Action: runCommand(cmdRm), - }, - { - Name: "ssh", - Usage: "Log into or run a command on a machine with SSH.", - Description: "Arguments are [machine-name] [command]", - Action: runCommand(cmdSSH), - SkipFlagParsing: true, - }, - { - Name: "scp", - Usage: "Copy files between machines", - Description: "Arguments are [machine:][path] [machine:][path].", - Action: runCommand(cmdScp), - Flags: []cli.Flag{ - cli.BoolFlag{ - Name: "recursive, r", - Usage: "Copy files recursively (required to copy directories)", - }, - }, - }, - { - Name: "start", - Usage: "Start a machine", - Description: "Argument(s) are one or more machine names.", - Action: runCommand(cmdStart), - }, - { - Name: "status", - Usage: "Get the status of a machine", - Description: "Argument is a machine name.", - Action: runCommand(cmdStatus), - }, - { - Name: "stop", - Usage: "Stop a machine", - Description: "Argument(s) are one or more machine names.", - Action: runCommand(cmdStop), - }, - { - Name: "upgrade", - Usage: "Upgrade a machine to the latest version of Docker", - Description: "Argument(s) are one or more machine names.", - Action: runCommand(cmdUpgrade), - }, - { - Name: "url", - Usage: "Get the URL of a machine", - Description: "Argument is a machine name.", - Action: runCommand(cmdURL), - }, - { - Name: "version", - Usage: "Show the Docker Machine version or a machine docker version", - Action: runCommand(cmdVersion), - }, -} - -func printIP(h *host.Host) func() error { - return func() error { - ip, err := h.Driver.GetIP() - if err != nil { - return fmt.Errorf("Error getting IP address: %s", err) - } - - fmt.Println(ip) - - return nil - } -} - -// machineCommand maps the command name to the corresponding machine command. -// We run commands concurrently and communicate back an error if there was one. -func machineCommand(actionName string, host *host.Host, errorChan chan<- error) { - // TODO: These actions should have their own type. - commands := map[string](func() error){ - "configureAuth": host.ConfigureAuth, - "start": host.Start, - "stop": host.Stop, - "restart": host.Restart, - "kill": host.Kill, - "upgrade": host.Upgrade, - "ip": printIP(host), - "provision": host.Provision, - } - - log.Debugf("command=%s machine=%s", actionName, host.Name) - - errorChan <- commands[actionName]() -} - -// runActionForeachMachine will run the command across multiple machines -func runActionForeachMachine(actionName string, machines []*host.Host) []error { - var ( - numConcurrentActions = 0 - errorChan = make(chan error) - errs = []error{} - ) - - for _, machine := range machines { - numConcurrentActions++ - go machineCommand(actionName, machine, errorChan) - } - - // TODO: We should probably only do 5-10 of these - // at a time, since otherwise cloud providers might - // rate limit us. - for i := 0; i < numConcurrentActions; i++ { - if err := <-errorChan; err != nil { - errs = append(errs, err) - } - } - - close(errorChan) - - return errs -} - -func consolidateErrs(errs []error) error { - finalErr := "" - for _, err := range errs { - finalErr = fmt.Sprintf("%s\n%s", finalErr, err) - } - - return errors.New(strings.TrimSpace(finalErr)) -} diff --git a/vendor/github.com/docker/machine/commands/commands_test.go b/vendor/github.com/docker/machine/commands/commands_test.go deleted file mode 100644 index 4b871019..00000000 --- a/vendor/github.com/docker/machine/commands/commands_test.go +++ /dev/null @@ -1,243 +0,0 @@ -package commands - -import ( - "errors" - "flag" - "testing" - - "github.com/codegangsta/cli" - "github.com/docker/machine/commands/commandstest" - "github.com/docker/machine/drivers/fakedriver" - "github.com/docker/machine/libmachine" - "github.com/docker/machine/libmachine/crashreport" - "github.com/docker/machine/libmachine/host" - "github.com/docker/machine/libmachine/hosttest" - "github.com/docker/machine/libmachine/mcnerror" - "github.com/docker/machine/libmachine/provision" - "github.com/docker/machine/libmachine/state" - "github.com/stretchr/testify/assert" -) - -func TestRunActionForeachMachine(t *testing.T) { - defer provision.SetDetector(&provision.StandardDetector{}) - provision.SetDetector(&provision.FakeDetector{ - Provisioner: provision.NewNetstatProvisioner(), - }) - - // Assume a bunch of machines in randomly started or - // stopped states. - machines := []*host.Host{ - { - Name: "foo", - DriverName: "fakedriver", - Driver: &fakedriver.Driver{ - MockState: state.Running, - }, - }, - { - Name: "bar", - DriverName: "fakedriver", - Driver: &fakedriver.Driver{ - MockState: state.Stopped, - }, - }, - { - Name: "baz", - // Ssh, don't tell anyone but this - // driver only _thinks_ it's named - // virtualbox... (to test serial actions) - // It's actually FakeDriver! - DriverName: "virtualbox", - Driver: &fakedriver.Driver{ - MockState: state.Stopped, - }, - }, - { - Name: "spam", - DriverName: "virtualbox", - Driver: &fakedriver.Driver{ - MockState: state.Running, - }, - }, - { - Name: "eggs", - DriverName: "fakedriver", - Driver: &fakedriver.Driver{ - MockState: state.Stopped, - }, - }, - { - Name: "ham", - DriverName: "fakedriver", - Driver: &fakedriver.Driver{ - MockState: state.Running, - }, - }, - } - - runActionForeachMachine("start", machines) - - for _, machine := range machines { - machineState, _ := machine.Driver.GetState() - - assert.Equal(t, state.Running, machineState) - } - - runActionForeachMachine("stop", machines) - - for _, machine := range machines { - machineState, _ := machine.Driver.GetState() - - assert.Equal(t, state.Stopped, machineState) - } -} - -func TestPrintIPEmptyGivenLocalEngine(t *testing.T) { - stdoutGetter := commandstest.NewStdoutGetter() - defer stdoutGetter.Stop() - - host, _ := hosttest.GetDefaultTestHost() - err := printIP(host)() - - assert.NoError(t, err) - assert.Equal(t, "\n", stdoutGetter.Output()) -} - -func TestPrintIPPrintsGivenRemoteEngine(t *testing.T) { - stdoutGetter := commandstest.NewStdoutGetter() - defer stdoutGetter.Stop() - - host, _ := hosttest.GetDefaultTestHost() - host.Driver = &fakedriver.Driver{ - MockState: state.Running, - MockIP: "1.2.3.4", - } - err := printIP(host)() - - assert.NoError(t, err) - assert.Equal(t, "1.2.3.4\n", stdoutGetter.Output()) -} - -func TestConsolidateError(t *testing.T) { - cases := []struct { - inputErrs []error - expectedErr error - }{ - { - inputErrs: []error{ - errors.New("Couldn't remove host 'bar'"), - }, - expectedErr: errors.New("Couldn't remove host 'bar'"), - }, - { - inputErrs: []error{ - errors.New("Couldn't remove host 'bar'"), - errors.New("Couldn't remove host 'foo'"), - }, - expectedErr: errors.New("Couldn't remove host 'bar'\nCouldn't remove host 'foo'"), - }, - } - - for _, c := range cases { - assert.Equal(t, c.expectedErr, consolidateErrs(c.inputErrs)) - } -} - -type MockCrashReporter struct { - sent bool -} - -func (m *MockCrashReporter) Send(err crashreport.CrashError) error { - m.sent = true - return nil -} - -func TestSendCrashReport(t *testing.T) { - defer func(fnOsExit func(code int)) { osExit = fnOsExit }(osExit) - osExit = func(code int) {} - - defer func(factory func(baseDir string, apiKey string) crashreport.CrashReporter) { - crashreport.NewCrashReporter = factory - }(crashreport.NewCrashReporter) - - tests := []struct { - description string - err error - sent bool - }{ - { - description: "Should send crash error", - err: crashreport.CrashError{ - Cause: errors.New("BUG"), - Command: "command", - Context: "context", - DriverName: "virtualbox", - }, - sent: true, - }, - { - description: "Should not send standard error", - err: errors.New("BUG"), - sent: false, - }, - } - - for _, test := range tests { - mockCrashReporter := &MockCrashReporter{} - crashreport.NewCrashReporter = func(baseDir string, apiKey string) crashreport.CrashReporter { - return mockCrashReporter - } - - command := func(commandLine CommandLine, api libmachine.API) error { - return test.err - } - - context := cli.NewContext(cli.NewApp(), &flag.FlagSet{}, nil) - runCommand(command)(context) - - assert.Equal(t, test.sent, mockCrashReporter.sent, test.description) - } -} - -func TestReturnExitCode1onError(t *testing.T) { - command := func(commandLine CommandLine, api libmachine.API) error { - return errors.New("foo is not bar") - } - - exitCode := checkErrorCodeForCommand(command) - - assert.Equal(t, 1, exitCode) -} - -func TestReturnExitCode3onErrorDuringPreCreate(t *testing.T) { - command := func(commandLine CommandLine, api libmachine.API) error { - return crashreport.CrashError{ - Cause: mcnerror.ErrDuringPreCreate{ - Cause: errors.New("foo is not bar"), - }, - } - } - - exitCode := checkErrorCodeForCommand(command) - - assert.Equal(t, 3, exitCode) -} - -func checkErrorCodeForCommand(command func(commandLine CommandLine, api libmachine.API) error) int { - var setExitCode int - - originalOSExit := osExit - - defer func() { - osExit = originalOSExit - }() - - osExit = func(code int) { - setExitCode = code - } - - context := cli.NewContext(cli.NewApp(), &flag.FlagSet{}, nil) - runCommand(command)(context) - - return setExitCode -} diff --git a/vendor/github.com/docker/machine/commands/commandstest/fake_command_line.go b/vendor/github.com/docker/machine/commands/commandstest/fake_command_line.go deleted file mode 100644 index be9368e3..00000000 --- a/vendor/github.com/docker/machine/commands/commandstest/fake_command_line.go +++ /dev/null @@ -1,100 +0,0 @@ -package commandstest - -import ( - "github.com/codegangsta/cli" -) - -type FakeFlagger struct { - Data map[string]interface{} -} - -type FakeCommandLine struct { - LocalFlags, GlobalFlags *FakeFlagger - HelpShown, VersionShown bool - CliArgs []string -} - -func (ff FakeFlagger) String(key string) string { - if value, ok := ff.Data[key]; ok { - return value.(string) - } - return "" -} - -func (ff FakeFlagger) StringSlice(key string) []string { - if value, ok := ff.Data[key]; ok { - return value.([]string) - } - return []string{} -} - -func (ff FakeFlagger) Int(key string) int { - if value, ok := ff.Data[key]; ok { - return value.(int) - } - return 0 -} - -func (ff FakeFlagger) Bool(key string) bool { - if value, ok := ff.Data[key]; ok { - return value.(bool) - } - return false -} - -func (fcli *FakeCommandLine) IsSet(key string) bool { - _, ok := fcli.LocalFlags.Data[key] - return ok -} - -func (fcli *FakeCommandLine) String(key string) string { - return fcli.LocalFlags.String(key) -} - -func (fcli *FakeCommandLine) StringSlice(key string) []string { - return fcli.LocalFlags.StringSlice(key) -} - -func (fcli *FakeCommandLine) Int(key string) int { - return fcli.LocalFlags.Int(key) -} - -func (fcli *FakeCommandLine) Bool(key string) bool { - if fcli.LocalFlags == nil { - return false - } - return fcli.LocalFlags.Bool(key) -} - -func (fcli *FakeCommandLine) GlobalString(key string) string { - return fcli.GlobalFlags.String(key) -} - -func (fcli *FakeCommandLine) Generic(name string) interface{} { - return fcli.LocalFlags.Data[name] -} - -func (fcli *FakeCommandLine) FlagNames() []string { - flagNames := []string{} - for key := range fcli.LocalFlags.Data { - flagNames = append(flagNames, key) - } - - return flagNames -} - -func (fcli *FakeCommandLine) ShowHelp() { - fcli.HelpShown = true -} - -func (fcli *FakeCommandLine) Application() *cli.App { - return cli.NewApp() -} - -func (fcli *FakeCommandLine) Args() cli.Args { - return fcli.CliArgs -} - -func (fcli *FakeCommandLine) ShowVersion() { - fcli.VersionShown = true -} diff --git a/vendor/github.com/docker/machine/commands/commandstest/stdout_capture.go b/vendor/github.com/docker/machine/commands/commandstest/stdout_capture.go deleted file mode 100644 index 926aed3d..00000000 --- a/vendor/github.com/docker/machine/commands/commandstest/stdout_capture.go +++ /dev/null @@ -1,54 +0,0 @@ -package commandstest - -import ( - "bytes" - "io" - - "os" -) - -var ( - stdout *os.File -) - -func init() { - stdout = os.Stdout -} - -type StdoutGetter interface { - Output() string - Stop() -} - -type stdoutCapturer struct { - stdout *os.File - output chan string -} - -func NewStdoutGetter() StdoutGetter { - r, w, _ := os.Pipe() - os.Stdout = w - - output := make(chan string) - go func() { - var testOutput bytes.Buffer - io.Copy(&testOutput, r) - output <- testOutput.String() - }() - - return &stdoutCapturer{ - stdout: w, - output: output, - } -} - -func (c *stdoutCapturer) Output() string { - c.stdout.Close() - text := <-c.output - close(c.output) - return text -} - -func (c *stdoutCapturer) Stop() { - os.Stdout = stdout -} diff --git a/vendor/github.com/docker/machine/commands/config.go b/vendor/github.com/docker/machine/commands/config.go deleted file mode 100644 index 010b5eeb..00000000 --- a/vendor/github.com/docker/machine/commands/config.go +++ /dev/null @@ -1,38 +0,0 @@ -package commands - -import ( - "fmt" - "os" - - "github.com/docker/machine/libmachine" - "github.com/docker/machine/libmachine/check" - "github.com/docker/machine/libmachine/log" -) - -func cmdConfig(c CommandLine, api libmachine.API) error { - // Ensure that log messages always go to stderr when this command is - // being run (it is intended to be run in a subshell) - log.SetOutWriter(os.Stderr) - - target, err := targetHost(c, api) - if err != nil { - return err - } - - host, err := api.Load(target) - if err != nil { - return err - } - - dockerHost, authOptions, err := check.DefaultConnChecker.Check(host, c.Bool("swarm")) - if err != nil { - return fmt.Errorf("Error running connection boilerplate: %s", err) - } - - log.Debug(dockerHost) - - fmt.Printf("--tlsverify\n--tlscacert=%q\n--tlscert=%q\n--tlskey=%q\n-H=%s\n", - authOptions.CaCertPath, authOptions.ClientCertPath, authOptions.ClientKeyPath, dockerHost) - - return nil -} diff --git a/vendor/github.com/docker/machine/commands/create.go b/vendor/github.com/docker/machine/commands/create.go deleted file mode 100644 index 49a633e8..00000000 --- a/vendor/github.com/docker/machine/commands/create.go +++ /dev/null @@ -1,465 +0,0 @@ -package commands - -import ( - "encoding/json" - "flag" - "fmt" - "os" - "path/filepath" - "regexp" - "sort" - "strings" - - "errors" - - "time" - - "github.com/codegangsta/cli" - "github.com/docker/machine/commands/mcndirs" - "github.com/docker/machine/libmachine" - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/crashreport" - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/drivers/rpc" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/host" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnerror" - "github.com/docker/machine/libmachine/mcnflag" - "github.com/docker/machine/libmachine/swarm" -) - -var ( - errNoMachineName = errors.New("Error: No machine name specified") -) - -var ( - SharedCreateFlags = []cli.Flag{ - cli.StringFlag{ - Name: "driver, d", - Usage: fmt.Sprintf( - "Driver to create machine with.", - ), - Value: "none", - EnvVar: "MACHINE_DRIVER", - }, - cli.StringFlag{ - Name: "engine-install-url", - Usage: "Custom URL to use for engine installation", - Value: drivers.DefaultEngineInstallURL, - EnvVar: "MACHINE_DOCKER_INSTALL_URL", - }, - cli.StringSliceFlag{ - Name: "engine-opt", - Usage: "Specify arbitrary flags to include with the created engine in the form flag=value", - Value: &cli.StringSlice{}, - }, - cli.StringSliceFlag{ - Name: "engine-insecure-registry", - Usage: "Specify insecure registries to allow with the created engine", - Value: &cli.StringSlice{}, - }, - cli.StringSliceFlag{ - Name: "engine-registry-mirror", - Usage: "Specify registry mirrors to use", - Value: &cli.StringSlice{}, - EnvVar: "ENGINE_REGISTRY_MIRROR", - }, - cli.StringSliceFlag{ - Name: "engine-label", - Usage: "Specify labels for the created engine", - Value: &cli.StringSlice{}, - }, - cli.StringFlag{ - Name: "engine-storage-driver", - Usage: "Specify a storage driver to use with the engine", - }, - cli.StringSliceFlag{ - Name: "engine-env", - Usage: "Specify environment variables to set in the engine", - Value: &cli.StringSlice{}, - }, - cli.BoolFlag{ - Name: "swarm", - Usage: "Configure Machine to join a Swarm cluster", - }, - cli.StringFlag{ - Name: "swarm-image", - Usage: "Specify Docker image to use for Swarm", - Value: "swarm:latest", - EnvVar: "MACHINE_SWARM_IMAGE", - }, - cli.BoolFlag{ - Name: "swarm-master", - Usage: "Configure Machine to be a Swarm master", - }, - cli.StringFlag{ - Name: "swarm-discovery", - Usage: "Discovery service to use with Swarm", - Value: "", - }, - cli.StringFlag{ - Name: "swarm-strategy", - Usage: "Define a default scheduling strategy for Swarm", - Value: "spread", - }, - cli.StringSliceFlag{ - Name: "swarm-opt", - Usage: "Define arbitrary flags for Swarm master", - Value: &cli.StringSlice{}, - }, - cli.StringSliceFlag{ - Name: "swarm-join-opt", - Usage: "Define arbitrary flags for Swarm join", - Value: &cli.StringSlice{}, - }, - cli.StringFlag{ - Name: "swarm-host", - Usage: "ip/socket to listen on for Swarm master", - Value: "tcp://0.0.0.0:3376", - }, - cli.StringFlag{ - Name: "swarm-addr", - Usage: "addr to advertise for Swarm (default: detect and use the machine IP)", - Value: "", - }, - cli.BoolFlag{ - Name: "swarm-experimental", - Usage: "Enable Swarm experimental features", - }, - cli.StringSliceFlag{ - Name: "tls-san", - Usage: "Support extra SANs for TLS certs", - Value: &cli.StringSlice{}, - }, - } -) - -func cmdCreateInner(c CommandLine, api libmachine.API) error { - if len(c.Args()) > 1 { - return fmt.Errorf("Invalid command line. Found extra arguments %v", c.Args()[1:]) - } - - name := c.Args().First() - if name == "" { - c.ShowHelp() - return errNoMachineName - } - - validName := host.ValidateHostName(name) - if !validName { - return fmt.Errorf("Error creating machine: %s", mcnerror.ErrInvalidHostname) - } - - if err := validateSwarmDiscovery(c.String("swarm-discovery")); err != nil { - return fmt.Errorf("Error parsing swarm discovery: %s", err) - } - - // TODO: Fix hacky JSON solution - rawDriver, err := json.Marshal(&drivers.BaseDriver{ - MachineName: name, - StorePath: c.GlobalString("storage-path"), - }) - if err != nil { - return fmt.Errorf("Error attempting to marshal bare driver data: %s", err) - } - - driverName := c.String("driver") - h, err := api.NewHost(driverName, rawDriver) - if err != nil { - return fmt.Errorf("Error getting new host: %s", err) - } - - h.HostOptions = &host.Options{ - AuthOptions: &auth.Options{ - CertDir: mcndirs.GetMachineCertDir(), - CaCertPath: tlsPath(c, "tls-ca-cert", "ca.pem"), - CaPrivateKeyPath: tlsPath(c, "tls-ca-key", "ca-key.pem"), - ClientCertPath: tlsPath(c, "tls-client-cert", "cert.pem"), - ClientKeyPath: tlsPath(c, "tls-client-key", "key.pem"), - ServerCertPath: filepath.Join(mcndirs.GetMachineDir(), name, "server.pem"), - ServerKeyPath: filepath.Join(mcndirs.GetMachineDir(), name, "server-key.pem"), - StorePath: filepath.Join(mcndirs.GetMachineDir(), name), - ServerCertSANs: c.StringSlice("tls-san"), - }, - EngineOptions: &engine.Options{ - ArbitraryFlags: c.StringSlice("engine-opt"), - Env: c.StringSlice("engine-env"), - InsecureRegistry: c.StringSlice("engine-insecure-registry"), - Labels: c.StringSlice("engine-label"), - RegistryMirror: c.StringSlice("engine-registry-mirror"), - StorageDriver: c.String("engine-storage-driver"), - TLSVerify: true, - InstallURL: c.String("engine-install-url"), - }, - SwarmOptions: &swarm.Options{ - IsSwarm: c.Bool("swarm") || c.Bool("swarm-master"), - Image: c.String("swarm-image"), - Agent: c.Bool("swarm"), - Master: c.Bool("swarm-master"), - Discovery: c.String("swarm-discovery"), - Address: c.String("swarm-addr"), - Host: c.String("swarm-host"), - Strategy: c.String("swarm-strategy"), - ArbitraryFlags: c.StringSlice("swarm-opt"), - ArbitraryJoinFlags: c.StringSlice("swarm-join-opt"), - IsExperimental: c.Bool("swarm-experimental"), - }, - } - - exists, err := api.Exists(h.Name) - if err != nil { - return fmt.Errorf("Error checking if host exists: %s", err) - } - if exists { - return mcnerror.ErrHostAlreadyExists{ - Name: h.Name, - } - } - - // driverOpts is the actual data we send over the wire to set the - // driver parameters (an interface fulfilling drivers.DriverOptions, - // concrete type rpcdriver.RpcFlags). - mcnFlags := h.Driver.GetCreateFlags() - driverOpts := getDriverOpts(c, mcnFlags) - - if err := h.Driver.SetConfigFromFlags(driverOpts); err != nil { - return fmt.Errorf("Error setting machine configuration from flags provided: %s", err) - } - - if err := api.Create(h); err != nil { - // Wait for all the logs to reach the client - time.Sleep(2 * time.Second) - - vBoxLog := "" - if h.DriverName == "virtualbox" { - vBoxLog = filepath.Join(api.GetMachinesDir(), h.Name, h.Name, "Logs", "VBox.log") - } - - return crashreport.CrashError{ - Cause: err, - Command: "Create", - Context: "api.performCreate", - DriverName: h.DriverName, - LogFilePath: vBoxLog, - } - } - - if err := api.Save(h); err != nil { - return fmt.Errorf("Error attempting to save store: %s", err) - } - - log.Infof("To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: %s env %s", os.Args[0], name) - - return nil -} - -// The following function is needed because the CLI acrobatics that we're doing -// (with having an "outer" and "inner" function each with their own custom -// settings and flag parsing needs) are not well supported by codegangsta/cli. -// -// Instead of trying to make a convoluted series of flag parsing and relying on -// codegangsta/cli internals work well, we simply read the flags we're -// interested in from the outer function into module-level variables, and then -// use them from the "inner" function. -// -// I'm not very pleased about this, but it seems to be the only decent -// compromise without drastically modifying codegangsta/cli internals or our -// own CLI. -func flagHackLookup(flagName string) string { - // e.g. "-d" for "--driver" - flagPrefix := flagName[1:3] - - // TODO: Should we support -flag-name (single hyphen) syntax as well? - for i, arg := range os.Args { - if strings.Contains(arg, flagPrefix) { - // format '--driver foo' or '-d foo' - if arg == flagPrefix || arg == flagName { - if i+1 < len(os.Args) { - return os.Args[i+1] - } - } - - // format '--driver=foo' or '-d=foo' - if strings.HasPrefix(arg, flagPrefix+"=") || strings.HasPrefix(arg, flagName+"=") { - return strings.Split(arg, "=")[1] - } - } - } - - return "" -} - -func cmdCreateOuter(c CommandLine, api libmachine.API) error { - const ( - flagLookupMachineName = "flag-lookup" - ) - - // We didn't recognize the driver name. - driverName := flagHackLookup("--driver") - if driverName == "" { - //TODO: Check Environment have to include flagHackLookup function. - driverName = os.Getenv("MACHINE_DRIVER") - if driverName == "" { - c.ShowHelp() - return nil // ? - } - } - - // TODO: Fix hacky JSON solution - rawDriver, err := json.Marshal(&drivers.BaseDriver{ - MachineName: flagLookupMachineName, - }) - if err != nil { - return fmt.Errorf("Error attempting to marshal bare driver data: %s", err) - } - - h, err := api.NewHost(driverName, rawDriver) - if err != nil { - return err - } - - // TODO: So much flag manipulation and voodoo here, it seems to be - // asking for trouble. - // - // mcnFlags is the data we get back over the wire (type mcnflag.Flag) - // to indicate which parameters are available. - mcnFlags := h.Driver.GetCreateFlags() - - // This bit will actually make "create" display the correct flags based - // on the requested driver. - cliFlags, err := convertMcnFlagsToCliFlags(mcnFlags) - if err != nil { - return fmt.Errorf("Error trying to convert provided driver flags to cli flags: %s", err) - } - - for i := range c.Application().Commands { - cmd := &c.Application().Commands[i] - if cmd.HasName("create") { - cmd = addDriverFlagsToCommand(cliFlags, cmd) - } - } - - return c.Application().Run(os.Args) -} - -func getDriverOpts(c CommandLine, mcnflags []mcnflag.Flag) drivers.DriverOptions { - // TODO: This function is pretty damn YOLO and would benefit from some - // sanity checking around types and assertions. - // - // But, we need it so that we can actually send the flags for creating - // a machine over the wire (cli.Context is a no go since there is so - // much stuff in it). - driverOpts := rpcdriver.RPCFlags{ - Values: make(map[string]interface{}), - } - - for _, f := range mcnflags { - driverOpts.Values[f.String()] = f.Default() - - // Hardcoded logic for boolean... :( - if f.Default() == nil { - driverOpts.Values[f.String()] = false - } - } - - for _, name := range c.FlagNames() { - getter, ok := c.Generic(name).(flag.Getter) - if ok { - driverOpts.Values[name] = getter.Get() - } else { - // TODO: This is pretty hacky. StringSlice is the only - // type so far we have to worry about which is not a - // Getter, though. - if c.IsSet(name) { - driverOpts.Values[name] = c.StringSlice(name) - } - } - } - - return driverOpts -} - -func convertMcnFlagsToCliFlags(mcnFlags []mcnflag.Flag) ([]cli.Flag, error) { - cliFlags := []cli.Flag{} - for _, f := range mcnFlags { - switch t := f.(type) { - // TODO: It seems pretty wrong to just default "nil" to this, - // but cli.BoolFlag doesn't have a "Value" field (false is - // always the default) - case *mcnflag.BoolFlag: - f := f.(*mcnflag.BoolFlag) - cliFlags = append(cliFlags, cli.BoolFlag{ - Name: f.Name, - EnvVar: f.EnvVar, - Usage: f.Usage, - }) - case *mcnflag.IntFlag: - f := f.(*mcnflag.IntFlag) - cliFlags = append(cliFlags, cli.IntFlag{ - Name: f.Name, - EnvVar: f.EnvVar, - Usage: f.Usage, - Value: f.Value, - }) - case *mcnflag.StringFlag: - f := f.(*mcnflag.StringFlag) - cliFlags = append(cliFlags, cli.StringFlag{ - Name: f.Name, - EnvVar: f.EnvVar, - Usage: f.Usage, - Value: f.Value, - }) - case *mcnflag.StringSliceFlag: - f := f.(*mcnflag.StringSliceFlag) - cliFlags = append(cliFlags, cli.StringSliceFlag{ - Name: f.Name, - EnvVar: f.EnvVar, - Usage: f.Usage, - - //TODO: Is this used with defaults? Can we convert the literal []string to cli.StringSlice properly? - Value: &cli.StringSlice{}, - }) - default: - log.Warn("Flag is ", f) - return nil, fmt.Errorf("Flag is unrecognized flag type: %T", t) - } - } - - return cliFlags, nil -} - -func addDriverFlagsToCommand(cliFlags []cli.Flag, cmd *cli.Command) *cli.Command { - cmd.Flags = append(SharedCreateFlags, cliFlags...) - cmd.SkipFlagParsing = false - cmd.Action = runCommand(cmdCreateInner) - sort.Sort(ByFlagName(cmd.Flags)) - - return cmd -} - -func validateSwarmDiscovery(discovery string) error { - if discovery == "" { - return nil - } - - matched, err := regexp.MatchString(`[^:]*://.*`, discovery) - if err != nil { - return err - } - - if matched { - return nil - } - - return fmt.Errorf("Swarm Discovery URL was in the wrong format: %s", discovery) -} - -func tlsPath(c CommandLine, flag string, defaultName string) string { - path := c.GlobalString(flag) - if path != "" { - return path - } - - return filepath.Join(mcndirs.GetMachineCertDir(), defaultName) -} diff --git a/vendor/github.com/docker/machine/commands/create_test.go b/vendor/github.com/docker/machine/commands/create_test.go deleted file mode 100644 index ae8fa43c..00000000 --- a/vendor/github.com/docker/machine/commands/create_test.go +++ /dev/null @@ -1,119 +0,0 @@ -package commands - -import ( - "testing" - - "flag" - "github.com/docker/machine/commands/commandstest" - "github.com/docker/machine/libmachine/mcnflag" - "github.com/stretchr/testify/assert" -) - -func TestValidateSwarmDiscoveryErrorsGivenInvalidURL(t *testing.T) { - err := validateSwarmDiscovery("foo") - assert.Error(t, err) -} - -func TestValidateSwarmDiscoveryAcceptsEmptyString(t *testing.T) { - err := validateSwarmDiscovery("") - assert.NoError(t, err) -} - -func TestValidateSwarmDiscoveryAcceptsValidFormat(t *testing.T) { - err := validateSwarmDiscovery("token://deadbeefcafe") - assert.NoError(t, err) -} - -type fakeFlagGetter struct { - flag.Value - value interface{} -} - -func (ff fakeFlagGetter) Get() interface{} { - return ff.value -} - -var nilStringSlice []string - -var getDriverOptsFlags = []mcnflag.Flag{ - mcnflag.BoolFlag{ - Name: "bool", - }, - mcnflag.IntFlag{ - Name: "int", - }, - mcnflag.IntFlag{ - Name: "int_defaulted", - Value: 42, - }, - mcnflag.StringFlag{ - Name: "string", - }, - mcnflag.StringFlag{ - Name: "string_defaulted", - Value: "bob", - }, - mcnflag.StringSliceFlag{ - Name: "stringslice", - }, - mcnflag.StringSliceFlag{ - Name: "stringslice_defaulted", - Value: []string{"joe"}, - }, -} - -var getDriverOptsTests = []struct { - data map[string]interface{} - expected map[string]interface{} -}{ - { - expected: map[string]interface{}{ - "bool": false, - "int": 0, - "int_defaulted": 42, - "string": "", - "string_defaulted": "bob", - "stringslice": nilStringSlice, - "stringslice_defaulted": []string{"joe"}, - }, - }, - { - data: map[string]interface{}{ - "bool": fakeFlagGetter{value: true}, - "int": fakeFlagGetter{value: 42}, - "int_defaulted": fakeFlagGetter{value: 37}, - "string": fakeFlagGetter{value: "jake"}, - "string_defaulted": fakeFlagGetter{value: "george"}, - // NB: StringSlices are not flag.Getters. - "stringslice": []string{"ford"}, - "stringslice_defaulted": []string{"zaphod", "arthur"}, - }, - expected: map[string]interface{}{ - "bool": true, - "int": 42, - "int_defaulted": 37, - "string": "jake", - "string_defaulted": "george", - "stringslice": []string{"ford"}, - "stringslice_defaulted": []string{"zaphod", "arthur"}, - }, - }, -} - -func TestGetDriverOpts(t *testing.T) { - for _, tt := range getDriverOptsTests { - commandLine := &commandstest.FakeCommandLine{ - LocalFlags: &commandstest.FakeFlagger{ - Data: tt.data, - }, - } - driverOpts := getDriverOpts(commandLine, getDriverOptsFlags) - assert.Equal(t, tt.expected["bool"], driverOpts.Bool("bool")) - assert.Equal(t, tt.expected["int"], driverOpts.Int("int")) - assert.Equal(t, tt.expected["int_defaulted"], driverOpts.Int("int_defaulted")) - assert.Equal(t, tt.expected["string"], driverOpts.String("string")) - assert.Equal(t, tt.expected["string_defaulted"], driverOpts.String("string_defaulted")) - assert.Equal(t, tt.expected["stringslice"], driverOpts.StringSlice("stringslice")) - assert.Equal(t, tt.expected["stringslice_defaulted"], driverOpts.StringSlice("stringslice_defaulted")) - } -} diff --git a/vendor/github.com/docker/machine/commands/env.go b/vendor/github.com/docker/machine/commands/env.go deleted file mode 100644 index a4203326..00000000 --- a/vendor/github.com/docker/machine/commands/env.go +++ /dev/null @@ -1,268 +0,0 @@ -package commands - -import ( - "errors" - "fmt" - "os" - "path/filepath" - "strings" - "text/template" - - "github.com/docker/machine/commands/mcndirs" - "github.com/docker/machine/libmachine" - "github.com/docker/machine/libmachine/check" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/shell" -) - -const ( - envTmpl = `{{ .Prefix }}DOCKER_TLS_VERIFY{{ .Delimiter }}{{ .DockerTLSVerify }}{{ .Suffix }}{{ .Prefix }}DOCKER_HOST{{ .Delimiter }}{{ .DockerHost }}{{ .Suffix }}{{ .Prefix }}DOCKER_CERT_PATH{{ .Delimiter }}{{ .DockerCertPath }}{{ .Suffix }}{{ .Prefix }}DOCKER_MACHINE_NAME{{ .Delimiter }}{{ .MachineName }}{{ .Suffix }}{{ if .NoProxyVar }}{{ .Prefix }}{{ .NoProxyVar }}{{ .Delimiter }}{{ .NoProxyValue }}{{ .Suffix }}{{end}}{{ .UsageHint }}` -) - -var ( - errImproperUnsetEnvArgs = errors.New("Error: Expected no machine name when the -u flag is present") - defaultUsageHinter UsageHintGenerator -) - -func init() { - defaultUsageHinter = &EnvUsageHintGenerator{} -} - -type ShellConfig struct { - Prefix string - Delimiter string - Suffix string - DockerCertPath string - DockerHost string - DockerTLSVerify string - UsageHint string - MachineName string - NoProxyVar string - NoProxyValue string -} - -func cmdEnv(c CommandLine, api libmachine.API) error { - var ( - err error - shellCfg *ShellConfig - ) - - // Ensure that log messages always go to stderr when this command is - // being run (it is intended to be run in a subshell) - log.SetOutWriter(os.Stderr) - - if c.Bool("unset") { - shellCfg, err = shellCfgUnset(c, api) - if err != nil { - return err - } - } else { - shellCfg, err = shellCfgSet(c, api) - if err != nil { - return err - } - } - - return executeTemplateStdout(shellCfg) -} - -func shellCfgSet(c CommandLine, api libmachine.API) (*ShellConfig, error) { - if len(c.Args()) > 1 { - return nil, ErrExpectedOneMachine - } - - target, err := targetHost(c, api) - if err != nil { - return nil, err - } - - host, err := api.Load(target) - if err != nil { - return nil, err - } - - dockerHost, _, err := check.DefaultConnChecker.Check(host, c.Bool("swarm")) - if err != nil { - return nil, fmt.Errorf("Error checking TLS connection: %s", err) - } - - userShell, err := getShell(c.String("shell")) - if err != nil { - return nil, err - } - - shellCfg := &ShellConfig{ - DockerCertPath: filepath.Join(mcndirs.GetMachineDir(), host.Name), - DockerHost: dockerHost, - DockerTLSVerify: "1", - UsageHint: defaultUsageHinter.GenerateUsageHint(userShell, os.Args), - MachineName: host.Name, - } - - if c.Bool("no-proxy") { - ip, err := host.Driver.GetIP() - if err != nil { - return nil, fmt.Errorf("Error getting host IP: %s", err) - } - - noProxyVar, noProxyValue := findNoProxyFromEnv() - - // add the docker host to the no_proxy list idempotently - switch { - case noProxyValue == "": - noProxyValue = ip - case strings.Contains(noProxyValue, ip): - //ip already in no_proxy list, nothing to do - default: - noProxyValue = fmt.Sprintf("%s,%s", noProxyValue, ip) - } - - shellCfg.NoProxyVar = noProxyVar - shellCfg.NoProxyValue = noProxyValue - } - - switch userShell { - case "fish": - shellCfg.Prefix = "set -gx " - shellCfg.Suffix = "\";\n" - shellCfg.Delimiter = " \"" - case "powershell": - shellCfg.Prefix = "$Env:" - shellCfg.Suffix = "\"\n" - shellCfg.Delimiter = " = \"" - case "cmd": - shellCfg.Prefix = "SET " - shellCfg.Suffix = "\n" - shellCfg.Delimiter = "=" - case "tcsh": - shellCfg.Prefix = "setenv " - shellCfg.Suffix = "\";\n" - shellCfg.Delimiter = " \"" - case "emacs": - shellCfg.Prefix = "(setenv \"" - shellCfg.Suffix = "\")\n" - shellCfg.Delimiter = "\" \"" - default: - shellCfg.Prefix = "export " - shellCfg.Suffix = "\"\n" - shellCfg.Delimiter = "=\"" - } - - return shellCfg, nil -} - -func shellCfgUnset(c CommandLine, api libmachine.API) (*ShellConfig, error) { - if len(c.Args()) != 0 { - return nil, errImproperUnsetEnvArgs - } - - userShell, err := getShell(c.String("shell")) - if err != nil { - return nil, err - } - - shellCfg := &ShellConfig{ - UsageHint: defaultUsageHinter.GenerateUsageHint(userShell, os.Args), - } - - if c.Bool("no-proxy") { - shellCfg.NoProxyVar, shellCfg.NoProxyValue = findNoProxyFromEnv() - } - - switch userShell { - case "fish": - shellCfg.Prefix = "set -e " - shellCfg.Suffix = ";\n" - shellCfg.Delimiter = "" - case "powershell": - shellCfg.Prefix = `Remove-Item Env:\\` - shellCfg.Suffix = "\n" - shellCfg.Delimiter = "" - case "cmd": - shellCfg.Prefix = "SET " - shellCfg.Suffix = "\n" - shellCfg.Delimiter = "=" - case "emacs": - shellCfg.Prefix = "(setenv \"" - shellCfg.Suffix = ")\n" - shellCfg.Delimiter = "\" nil" - case "tcsh": - shellCfg.Prefix = "unsetenv " - shellCfg.Suffix = ";\n" - shellCfg.Delimiter = "" - default: - shellCfg.Prefix = "unset " - shellCfg.Suffix = "\n" - shellCfg.Delimiter = "" - } - - return shellCfg, nil -} - -func executeTemplateStdout(shellCfg *ShellConfig) error { - t := template.New("envConfig") - tmpl, err := t.Parse(envTmpl) - if err != nil { - return err - } - - return tmpl.Execute(os.Stdout, shellCfg) -} - -func getShell(userShell string) (string, error) { - if userShell != "" { - return userShell, nil - } - return shell.Detect() -} - -func findNoProxyFromEnv() (string, string) { - // first check for an existing lower case no_proxy var - noProxyVar := "no_proxy" - noProxyValue := os.Getenv("no_proxy") - - // otherwise default to allcaps HTTP_PROXY - if noProxyValue == "" { - noProxyVar = "NO_PROXY" - noProxyValue = os.Getenv("NO_PROXY") - } - return noProxyVar, noProxyValue -} - -type UsageHintGenerator interface { - GenerateUsageHint(string, []string) string -} - -type EnvUsageHintGenerator struct{} - -func (g *EnvUsageHintGenerator) GenerateUsageHint(userShell string, args []string) string { - cmd := "" - comment := "#" - - dockerMachinePath := args[0] - if strings.Contains(dockerMachinePath, " ") || strings.Contains(dockerMachinePath, `\`) { - args[0] = fmt.Sprintf("\"%s\"", dockerMachinePath) - } - - commandLine := strings.Join(args, " ") - - switch userShell { - case "fish": - cmd = fmt.Sprintf("eval (%s)", commandLine) - case "powershell": - cmd = fmt.Sprintf("& %s | Invoke-Expression", commandLine) - case "cmd": - cmd = fmt.Sprintf("\t@FOR /f \"tokens=*\" %%i IN ('%s') DO @%%i", commandLine) - comment = "REM" - case "emacs": - cmd = fmt.Sprintf("(with-temp-buffer (shell-command \"%s\" (current-buffer)) (eval-buffer))", commandLine) - comment = ";;" - case "tcsh": - cmd = fmt.Sprintf("eval `%s`", commandLine) - comment = ":" - default: - cmd = fmt.Sprintf("eval $(%s)", commandLine) - } - - return fmt.Sprintf("%s Run this command to configure your shell: \n%s %s\n", comment, comment, cmd) -} diff --git a/vendor/github.com/docker/machine/commands/env_test.go b/vendor/github.com/docker/machine/commands/env_test.go deleted file mode 100644 index ae8565cd..00000000 --- a/vendor/github.com/docker/machine/commands/env_test.go +++ /dev/null @@ -1,600 +0,0 @@ -package commands - -import ( - "os" - "path/filepath" - "testing" - - "github.com/docker/machine/commands/commandstest" - "github.com/docker/machine/commands/mcndirs" - "github.com/docker/machine/drivers/fakedriver" - "github.com/docker/machine/libmachine" - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/check" - "github.com/docker/machine/libmachine/host" - "github.com/docker/machine/libmachine/libmachinetest" - "github.com/docker/machine/libmachine/state" - "github.com/stretchr/testify/assert" -) - -type FakeConnChecker struct { - DockerHost string - AuthOptions *auth.Options - Err error -} - -func (fcc *FakeConnChecker) Check(_ *host.Host, _ bool) (string, *auth.Options, error) { - return fcc.DockerHost, fcc.AuthOptions, fcc.Err -} - -type SimpleUsageHintGenerator struct { - Hint string -} - -func (suhg *SimpleUsageHintGenerator) GenerateUsageHint(_ string, _ []string) string { - return suhg.Hint -} - -func TestHints(t *testing.T) { - var tests = []struct { - userShell string - commandLine []string - expectedHints string - }{ - {"", []string{"machine", "env", "default"}, "# Run this command to configure your shell: \n# eval $(machine env default)\n"}, - {"", []string{"machine", "env", "--no-proxy", "default"}, "# Run this command to configure your shell: \n# eval $(machine env --no-proxy default)\n"}, - {"", []string{"machine", "env", "--swarm", "default"}, "# Run this command to configure your shell: \n# eval $(machine env --swarm default)\n"}, - {"", []string{"machine", "env", "--no-proxy", "--swarm", "default"}, "# Run this command to configure your shell: \n# eval $(machine env --no-proxy --swarm default)\n"}, - {"", []string{"machine", "env", "--unset"}, "# Run this command to configure your shell: \n# eval $(machine env --unset)\n"}, - {"", []string{`C:\\Program Files\docker-machine.exe`, "env", "default"}, "# Run this command to configure your shell: \n# eval $(\"C:\\\\Program Files\\docker-machine.exe\" env default)\n"}, - {"", []string{`C:\\Me\docker-machine.exe`, "env", "default"}, "# Run this command to configure your shell: \n# eval $(\"C:\\\\Me\\docker-machine.exe\" env default)\n"}, - - {"fish", []string{"./machine", "env", "--shell=fish", "default"}, "# Run this command to configure your shell: \n# eval (./machine env --shell=fish default)\n"}, - {"fish", []string{"./machine", "env", "--shell=fish", "--no-proxy", "default"}, "# Run this command to configure your shell: \n# eval (./machine env --shell=fish --no-proxy default)\n"}, - {"fish", []string{"./machine", "env", "--shell=fish", "--swarm", "default"}, "# Run this command to configure your shell: \n# eval (./machine env --shell=fish --swarm default)\n"}, - {"fish", []string{"./machine", "env", "--shell=fish", "--no-proxy", "--swarm", "default"}, "# Run this command to configure your shell: \n# eval (./machine env --shell=fish --no-proxy --swarm default)\n"}, - {"fish", []string{"./machine", "env", "--shell=fish", "--unset"}, "# Run this command to configure your shell: \n# eval (./machine env --shell=fish --unset)\n"}, - - {"powershell", []string{"./machine", "env", "--shell=powershell", "default"}, "# Run this command to configure your shell: \n# & ./machine env --shell=powershell default | Invoke-Expression\n"}, - {"powershell", []string{"./machine", "env", "--shell=powershell", "--no-proxy", "default"}, "# Run this command to configure your shell: \n# & ./machine env --shell=powershell --no-proxy default | Invoke-Expression\n"}, - {"powershell", []string{"./machine", "env", "--shell=powershell", "--swarm", "default"}, "# Run this command to configure your shell: \n# & ./machine env --shell=powershell --swarm default | Invoke-Expression\n"}, - {"powershell", []string{"./machine", "env", "--shell=powershell", "--no-proxy", "--swarm", "default"}, "# Run this command to configure your shell: \n# & ./machine env --shell=powershell --no-proxy --swarm default | Invoke-Expression\n"}, - {"powershell", []string{"./machine", "env", "--shell=powershell", "--unset"}, "# Run this command to configure your shell: \n# & ./machine env --shell=powershell --unset | Invoke-Expression\n"}, - {"powershell", []string{"./machine", "env", "--shell=powershell", "--unset"}, "# Run this command to configure your shell: \n# & ./machine env --shell=powershell --unset | Invoke-Expression\n"}, - {"powershell", []string{`C:\\Program Files\docker-machine.exe`, "env", "--shell=powershell", "default"}, "# Run this command to configure your shell: \n# & \"C:\\\\Program Files\\docker-machine.exe\" env --shell=powershell default | Invoke-Expression\n"}, - {"powershell", []string{`C:\\Me\docker-machine.exe`, "env", "--shell=powershell", "default"}, "# Run this command to configure your shell: \n# & \"C:\\\\Me\\docker-machine.exe\" env --shell=powershell default | Invoke-Expression\n"}, - - {"cmd", []string{"./machine", "env", "--shell=cmd", "default"}, "REM Run this command to configure your shell: \nREM \t@FOR /f \"tokens=*\" %i IN ('./machine env --shell=cmd default') DO @%i\n"}, - {"cmd", []string{"./machine", "env", "--shell=cmd", "--no-proxy", "default"}, "REM Run this command to configure your shell: \nREM \t@FOR /f \"tokens=*\" %i IN ('./machine env --shell=cmd --no-proxy default') DO @%i\n"}, - {"cmd", []string{"./machine", "env", "--shell=cmd", "--swarm", "default"}, "REM Run this command to configure your shell: \nREM \t@FOR /f \"tokens=*\" %i IN ('./machine env --shell=cmd --swarm default') DO @%i\n"}, - {"cmd", []string{"./machine", "env", "--shell=cmd", "--no-proxy", "--swarm", "default"}, "REM Run this command to configure your shell: \nREM \t@FOR /f \"tokens=*\" %i IN ('./machine env --shell=cmd --no-proxy --swarm default') DO @%i\n"}, - {"cmd", []string{"./machine", "env", "--shell=cmd", "--unset"}, "REM Run this command to configure your shell: \nREM \t@FOR /f \"tokens=*\" %i IN ('./machine env --shell=cmd --unset') DO @%i\n"}, - {"cmd", []string{`C:\\Program Files\docker-machine.exe`, "env", "--shell=cmd", "default"}, "REM Run this command to configure your shell: \nREM \t@FOR /f \"tokens=*\" %i IN ('\"C:\\\\Program Files\\docker-machine.exe\" env --shell=cmd default') DO @%i\n"}, - {"cmd", []string{`C:\\Me\docker-machine.exe`, "env", "--shell=cmd", "default"}, "REM Run this command to configure your shell: \nREM \t@FOR /f \"tokens=*\" %i IN ('\"C:\\\\Me\\docker-machine.exe\" env --shell=cmd default') DO @%i\n"}, - - {"emacs", []string{"./machine", "env", "--shell=emacs", "default"}, ";; Run this command to configure your shell: \n;; (with-temp-buffer (shell-command \"./machine env --shell=emacs default\" (current-buffer)) (eval-buffer))\n"}, - {"emacs", []string{"./machine", "env", "--shell=emacs", "--no-proxy", "default"}, ";; Run this command to configure your shell: \n;; (with-temp-buffer (shell-command \"./machine env --shell=emacs --no-proxy default\" (current-buffer)) (eval-buffer))\n"}, - {"emacs", []string{"./machine", "env", "--shell=emacs", "--swarm", "default"}, ";; Run this command to configure your shell: \n;; (with-temp-buffer (shell-command \"./machine env --shell=emacs --swarm default\" (current-buffer)) (eval-buffer))\n"}, - {"emacs", []string{"./machine", "env", "--shell=emacs", "--no-proxy", "--swarm", "default"}, ";; Run this command to configure your shell: \n;; (with-temp-buffer (shell-command \"./machine env --shell=emacs --no-proxy --swarm default\" (current-buffer)) (eval-buffer))\n"}, - {"emacs", []string{"./machine", "env", "--shell=emacs", "--unset"}, ";; Run this command to configure your shell: \n;; (with-temp-buffer (shell-command \"./machine env --shell=emacs --unset\" (current-buffer)) (eval-buffer))\n"}, - - {"tcsh", []string{"./machine", "env", "--shell=tcsh", "default"}, ": Run this command to configure your shell: \n: eval `./machine env --shell=tcsh default`\n"}, - {"tcsh", []string{"./machine", "env", "--shell=tcsh", "--no-proxy", "default"}, ": Run this command to configure your shell: \n: eval `./machine env --shell=tcsh --no-proxy default`\n"}, - {"tcsh", []string{"./machine", "env", "--shell=tcsh", "--swarm", "default"}, ": Run this command to configure your shell: \n: eval `./machine env --shell=tcsh --swarm default`\n"}, - {"tcsh", []string{"./machine", "env", "--shell=tcsh", "--no-proxy", "--swarm", "default"}, ": Run this command to configure your shell: \n: eval `./machine env --shell=tcsh --no-proxy --swarm default`\n"}, - {"tcsh", []string{"./machine", "env", "--shell=tcsh", "--unset"}, ": Run this command to configure your shell: \n: eval `./machine env --shell=tcsh --unset`\n"}, - } - - for _, test := range tests { - hints := defaultUsageHinter.GenerateUsageHint(test.userShell, test.commandLine) - assert.Equal(t, test.expectedHints, hints) - } -} - -func revertUsageHinter(uhg UsageHintGenerator) { - defaultUsageHinter = uhg -} - -func TestShellCfgSet(t *testing.T) { - const ( - usageHint = "This is a usage hint" - ) - - // TODO: This should be embedded in some kind of wrapper struct for all - // these `env` operations. - defer revertUsageHinter(defaultUsageHinter) - defaultUsageHinter = &SimpleUsageHintGenerator{usageHint} - - var tests = []struct { - description string - commandLine CommandLine - api libmachine.API - connChecker check.ConnChecker - noProxyVar string - noProxyValue string - expectedShellCfg *ShellConfig - expectedErr error - }{ - { - description: "no host name specified", - api: &libmachinetest.FakeAPI{ - Hosts: []*host.Host{}, - }, - commandLine: &commandstest.FakeCommandLine{ - CliArgs: nil, - }, - expectedShellCfg: nil, - expectedErr: ErrNoDefault, - }, - { - description: "bash shell set happy path without any flags set", - commandLine: &commandstest.FakeCommandLine{ - CliArgs: []string{"quux"}, - LocalFlags: &commandstest.FakeFlagger{ - Data: map[string]interface{}{ - "shell": "bash", - "swarm": false, - "no-proxy": false, - }, - }, - }, - api: &libmachinetest.FakeAPI{ - Hosts: []*host.Host{ - { - Name: "quux", - }, - }, - }, - connChecker: &FakeConnChecker{ - DockerHost: "tcp://1.2.3.4:2376", - AuthOptions: nil, - Err: nil, - }, - expectedShellCfg: &ShellConfig{ - Prefix: "export ", - Delimiter: "=\"", - Suffix: "\"\n", - DockerCertPath: filepath.Join(mcndirs.GetMachineDir(), "quux"), - DockerHost: "tcp://1.2.3.4:2376", - DockerTLSVerify: "1", - UsageHint: usageHint, - MachineName: "quux", - }, - expectedErr: nil, - }, - { - description: "bash shell set happy path with 'default' vm", - commandLine: &commandstest.FakeCommandLine{ - CliArgs: []string{}, - LocalFlags: &commandstest.FakeFlagger{ - Data: map[string]interface{}{ - "shell": "bash", - "swarm": false, - "no-proxy": false, - }, - }, - }, - api: &libmachinetest.FakeAPI{ - Hosts: []*host.Host{ - { - Name: defaultMachineName, - }, - }, - }, - connChecker: &FakeConnChecker{ - DockerHost: "tcp://1.2.3.4:2376", - AuthOptions: nil, - Err: nil, - }, - expectedShellCfg: &ShellConfig{ - Prefix: "export ", - Delimiter: "=\"", - Suffix: "\"\n", - DockerCertPath: filepath.Join(mcndirs.GetMachineDir(), defaultMachineName), - DockerHost: "tcp://1.2.3.4:2376", - DockerTLSVerify: "1", - UsageHint: usageHint, - MachineName: defaultMachineName, - }, - expectedErr: nil, - }, - { - description: "fish shell set happy path", - commandLine: &commandstest.FakeCommandLine{ - CliArgs: []string{"quux"}, - LocalFlags: &commandstest.FakeFlagger{ - Data: map[string]interface{}{ - "shell": "fish", - "swarm": false, - "no-proxy": false, - }, - }, - }, - api: &libmachinetest.FakeAPI{ - Hosts: []*host.Host{ - { - Name: "quux", - }, - }, - }, - connChecker: &FakeConnChecker{ - DockerHost: "tcp://1.2.3.4:2376", - AuthOptions: nil, - Err: nil, - }, - expectedShellCfg: &ShellConfig{ - Prefix: "set -gx ", - Suffix: "\";\n", - Delimiter: " \"", - DockerCertPath: filepath.Join(mcndirs.GetMachineDir(), "quux"), - DockerHost: "tcp://1.2.3.4:2376", - DockerTLSVerify: "1", - UsageHint: usageHint, - MachineName: "quux", - }, - expectedErr: nil, - }, - { - description: "powershell set happy path", - commandLine: &commandstest.FakeCommandLine{ - CliArgs: []string{"quux"}, - LocalFlags: &commandstest.FakeFlagger{ - Data: map[string]interface{}{ - "shell": "powershell", - "swarm": false, - "no-proxy": false, - }, - }, - }, - api: &libmachinetest.FakeAPI{ - Hosts: []*host.Host{ - { - Name: "quux", - }, - }, - }, - connChecker: &FakeConnChecker{ - DockerHost: "tcp://1.2.3.4:2376", - AuthOptions: nil, - Err: nil, - }, - expectedShellCfg: &ShellConfig{ - Prefix: "$Env:", - Suffix: "\"\n", - Delimiter: " = \"", - DockerCertPath: filepath.Join(mcndirs.GetMachineDir(), "quux"), - DockerHost: "tcp://1.2.3.4:2376", - DockerTLSVerify: "1", - UsageHint: usageHint, - MachineName: "quux", - }, - expectedErr: nil, - }, - { - description: "emacs set happy path", - commandLine: &commandstest.FakeCommandLine{ - CliArgs: []string{"quux"}, - LocalFlags: &commandstest.FakeFlagger{ - Data: map[string]interface{}{ - "shell": "emacs", - "swarm": false, - "no-proxy": false, - }, - }, - }, - api: &libmachinetest.FakeAPI{ - Hosts: []*host.Host{ - { - Name: "quux", - }, - }, - }, - connChecker: &FakeConnChecker{ - DockerHost: "tcp://1.2.3.4:2376", - AuthOptions: nil, - Err: nil, - }, - expectedShellCfg: &ShellConfig{ - Prefix: "(setenv \"", - Suffix: "\")\n", - Delimiter: "\" \"", - DockerCertPath: filepath.Join(mcndirs.GetMachineDir(), "quux"), - DockerHost: "tcp://1.2.3.4:2376", - DockerTLSVerify: "1", - UsageHint: usageHint, - MachineName: "quux", - }, - expectedErr: nil, - }, - { - description: "cmd.exe happy path", - commandLine: &commandstest.FakeCommandLine{ - CliArgs: []string{"quux"}, - LocalFlags: &commandstest.FakeFlagger{ - Data: map[string]interface{}{ - "shell": "cmd", - "swarm": false, - "no-proxy": false, - }, - }, - }, - api: &libmachinetest.FakeAPI{ - Hosts: []*host.Host{ - { - Name: "quux", - }, - }, - }, - connChecker: &FakeConnChecker{ - DockerHost: "tcp://1.2.3.4:2376", - AuthOptions: nil, - Err: nil, - }, - expectedShellCfg: &ShellConfig{ - Prefix: "SET ", - Suffix: "\n", - Delimiter: "=", - DockerCertPath: filepath.Join(mcndirs.GetMachineDir(), "quux"), - DockerHost: "tcp://1.2.3.4:2376", - DockerTLSVerify: "1", - UsageHint: usageHint, - MachineName: "quux", - }, - expectedErr: nil, - }, - { - description: "bash shell set happy path with --no-proxy flag; no existing environment variable set", - commandLine: &commandstest.FakeCommandLine{ - CliArgs: []string{"quux"}, - LocalFlags: &commandstest.FakeFlagger{ - Data: map[string]interface{}{ - "shell": "bash", - "swarm": false, - "no-proxy": true, - }, - }, - }, - api: &libmachinetest.FakeAPI{ - Hosts: []*host.Host{ - { - Name: "quux", - Driver: &fakedriver.Driver{ - MockState: state.Running, - MockIP: "1.2.3.4", - }, - }, - }, - }, - connChecker: &FakeConnChecker{ - DockerHost: "tcp://1.2.3.4:2376", - AuthOptions: nil, - Err: nil, - }, - expectedShellCfg: &ShellConfig{ - Prefix: "export ", - Delimiter: "=\"", - Suffix: "\"\n", - DockerCertPath: filepath.Join(mcndirs.GetMachineDir(), "quux"), - DockerHost: "tcp://1.2.3.4:2376", - DockerTLSVerify: "1", - UsageHint: usageHint, - NoProxyVar: "NO_PROXY", - NoProxyValue: "1.2.3.4", // From FakeDriver - MachineName: "quux", - }, - noProxyVar: "NO_PROXY", - noProxyValue: "", - expectedErr: nil, - }, - { - description: "bash shell set happy path with --no-proxy flag; existing environment variable _is_ set", - commandLine: &commandstest.FakeCommandLine{ - CliArgs: []string{"quux"}, - LocalFlags: &commandstest.FakeFlagger{ - Data: map[string]interface{}{ - "shell": "bash", - "swarm": false, - "no-proxy": true, - }, - }, - }, - api: &libmachinetest.FakeAPI{ - Hosts: []*host.Host{ - { - Name: "quux", - Driver: &fakedriver.Driver{ - MockState: state.Running, - MockIP: "1.2.3.4", - }, - }, - }, - }, - connChecker: &FakeConnChecker{ - DockerHost: "tcp://1.2.3.4:2376", - AuthOptions: nil, - Err: nil, - }, - expectedShellCfg: &ShellConfig{ - Prefix: "export ", - Delimiter: "=\"", - Suffix: "\"\n", - DockerCertPath: filepath.Join(mcndirs.GetMachineDir(), "quux"), - DockerHost: "tcp://1.2.3.4:2376", - DockerTLSVerify: "1", - UsageHint: usageHint, - NoProxyVar: "no_proxy", - NoProxyValue: "192.168.59.1,1.2.3.4", // From FakeDriver - MachineName: "quux", - }, - noProxyVar: "no_proxy", - noProxyValue: "192.168.59.1", - expectedErr: nil, - }, - } - - for _, test := range tests { - // TODO: Ideally this should not hit the environment at all but - // rather should go through an interface. - os.Setenv(test.noProxyVar, test.noProxyValue) - - t.Log(test.description) - - check.DefaultConnChecker = test.connChecker - shellCfg, err := shellCfgSet(test.commandLine, test.api) - assert.Equal(t, test.expectedShellCfg, shellCfg) - assert.Equal(t, test.expectedErr, err) - - os.Unsetenv(test.noProxyVar) - } -} - -func TestShellCfgUnset(t *testing.T) { - const ( - usageHint = "This is the unset usage hint" - ) - - defer revertUsageHinter(defaultUsageHinter) - defaultUsageHinter = &SimpleUsageHintGenerator{usageHint} - - var tests = []struct { - description string - commandLine CommandLine - api libmachine.API - connChecker check.ConnChecker - noProxyVar string - noProxyValue string - expectedShellCfg *ShellConfig - expectedErr error - }{ - { - description: "more than expected args passed in", - commandLine: &commandstest.FakeCommandLine{ - CliArgs: []string{"foo", "bar"}, - }, - expectedShellCfg: nil, - expectedErr: errImproperUnsetEnvArgs, - }, - { - description: "bash shell unset happy path without any flags set", - commandLine: &commandstest.FakeCommandLine{ - CliArgs: nil, - LocalFlags: &commandstest.FakeFlagger{ - Data: map[string]interface{}{ - "shell": "bash", - "swarm": false, - "no-proxy": false, - }, - }, - }, - api: &libmachinetest.FakeAPI{}, - connChecker: &FakeConnChecker{ - DockerHost: "tcp://1.2.3.4:2376", - AuthOptions: nil, - Err: nil, - }, - expectedShellCfg: &ShellConfig{ - Prefix: "unset ", - Suffix: "\n", - Delimiter: "", - UsageHint: usageHint, - }, - expectedErr: nil, - }, - { - description: "fish shell unset happy path", - commandLine: &commandstest.FakeCommandLine{ - CliArgs: nil, - LocalFlags: &commandstest.FakeFlagger{ - Data: map[string]interface{}{ - "shell": "fish", - "swarm": false, - "no-proxy": false, - }, - }, - }, - api: &libmachinetest.FakeAPI{}, - connChecker: &FakeConnChecker{ - DockerHost: "tcp://1.2.3.4:2376", - AuthOptions: nil, - Err: nil, - }, - expectedShellCfg: &ShellConfig{ - Prefix: "set -e ", - Suffix: ";\n", - Delimiter: "", - UsageHint: usageHint, - }, - expectedErr: nil, - }, - { - description: "powershell unset happy path", - commandLine: &commandstest.FakeCommandLine{ - CliArgs: nil, - LocalFlags: &commandstest.FakeFlagger{ - Data: map[string]interface{}{ - "shell": "powershell", - "swarm": false, - "no-proxy": false, - }, - }, - }, - api: &libmachinetest.FakeAPI{}, - connChecker: &FakeConnChecker{ - DockerHost: "tcp://1.2.3.4:2376", - AuthOptions: nil, - Err: nil, - }, - expectedShellCfg: &ShellConfig{ - Prefix: `Remove-Item Env:\\`, - Suffix: "\n", - Delimiter: "", - UsageHint: usageHint, - }, - expectedErr: nil, - }, - { - description: "cmd.exe unset happy path", - commandLine: &commandstest.FakeCommandLine{ - CliArgs: nil, - LocalFlags: &commandstest.FakeFlagger{ - Data: map[string]interface{}{ - "shell": "cmd", - "swarm": false, - "no-proxy": false, - }, - }, - }, - api: &libmachinetest.FakeAPI{}, - connChecker: &FakeConnChecker{ - DockerHost: "tcp://1.2.3.4:2376", - AuthOptions: nil, - Err: nil, - }, - expectedShellCfg: &ShellConfig{ - Prefix: "SET ", - Suffix: "\n", - Delimiter: "=", - UsageHint: usageHint, - }, - expectedErr: nil, - }, - // TODO: There is kind of a funny bug (feature?) I discovered - // reasoning about unset() where if there was a NO_PROXY value - // set _before_ the original docker-machine env, it won't be - // restored (NO_PROXY won't be unset at all, it will stay the - // same). We should define expected behavior in this case. - } - - for _, test := range tests { - os.Setenv(test.noProxyVar, test.noProxyValue) - - t.Log(test.description) - - check.DefaultConnChecker = test.connChecker - shellCfg, err := shellCfgUnset(test.commandLine, test.api) - assert.Equal(t, test.expectedShellCfg, shellCfg) - assert.Equal(t, test.expectedErr, err) - - os.Setenv(test.noProxyVar, "") - } -} diff --git a/vendor/github.com/docker/machine/commands/flag_sort.go b/vendor/github.com/docker/machine/commands/flag_sort.go deleted file mode 100644 index 746043b5..00000000 --- a/vendor/github.com/docker/machine/commands/flag_sort.go +++ /dev/null @@ -1,17 +0,0 @@ -package commands - -import "github.com/codegangsta/cli" - -type ByFlagName []cli.Flag - -func (flags ByFlagName) Len() int { - return len(flags) -} - -func (flags ByFlagName) Swap(i, j int) { - flags[i], flags[j] = flags[j], flags[i] -} - -func (flags ByFlagName) Less(i, j int) bool { - return flags[i].String() < flags[j].String() -} diff --git a/vendor/github.com/docker/machine/commands/inspect.go b/vendor/github.com/docker/machine/commands/inspect.go deleted file mode 100644 index 03fe6e9e..00000000 --- a/vendor/github.com/docker/machine/commands/inspect.go +++ /dev/null @@ -1,72 +0,0 @@ -package commands - -import ( - "encoding/json" - "fmt" - "os" - "text/template" - - "github.com/docker/machine/libmachine" -) - -var funcMap = template.FuncMap{ - "json": func(v interface{}) string { - a, _ := json.Marshal(v) - return string(a) - }, - "prettyjson": func(v interface{}) string { - a, _ := json.MarshalIndent(v, "", " ") - return string(a) - }, -} - -func cmdInspect(c CommandLine, api libmachine.API) error { - if len(c.Args()) > 1 { - c.ShowHelp() - return ErrExpectedOneMachine - } - - target, err := targetHost(c, api) - if err != nil { - return err - } - - host, err := api.Load(target) - if err != nil { - return err - } - - tmplString := c.String("format") - if tmplString != "" { - var tmpl *template.Template - var err error - if tmpl, err = template.New("").Funcs(funcMap).Parse(tmplString); err != nil { - return fmt.Errorf("Template parsing error: %v\n", err) - } - - jsonHost, err := json.Marshal(host) - if err != nil { - return err - } - - obj := make(map[string]interface{}) - if err := json.Unmarshal(jsonHost, &obj); err != nil { - return err - } - - if err := tmpl.Execute(os.Stdout, obj); err != nil { - return err - } - - os.Stdout.Write([]byte{'\n'}) - } else { - prettyJSON, err := json.MarshalIndent(host, "", " ") - if err != nil { - return err - } - - fmt.Println(string(prettyJSON)) - } - - return nil -} diff --git a/vendor/github.com/docker/machine/commands/inspect_test.go b/vendor/github.com/docker/machine/commands/inspect_test.go deleted file mode 100644 index 779ce35d..00000000 --- a/vendor/github.com/docker/machine/commands/inspect_test.go +++ /dev/null @@ -1,31 +0,0 @@ -package commands - -import ( - "testing" - - "github.com/docker/machine/commands/commandstest" - "github.com/docker/machine/libmachine" - "github.com/docker/machine/libmachine/libmachinetest" - "github.com/stretchr/testify/assert" -) - -func TestCmdInspect(t *testing.T) { - testCases := []struct { - commandLine CommandLine - api libmachine.API - expectedErr error - }{ - { - commandLine: &commandstest.FakeCommandLine{ - CliArgs: []string{"foo", "bar"}, - }, - api: &libmachinetest.FakeAPI{}, - expectedErr: ErrExpectedOneMachine, - }, - } - - for _, tc := range testCases { - err := cmdInspect(tc.commandLine, tc.api) - assert.Equal(t, tc.expectedErr, err) - } -} diff --git a/vendor/github.com/docker/machine/commands/ip.go b/vendor/github.com/docker/machine/commands/ip.go deleted file mode 100644 index 13e45f68..00000000 --- a/vendor/github.com/docker/machine/commands/ip.go +++ /dev/null @@ -1,7 +0,0 @@ -package commands - -import "github.com/docker/machine/libmachine" - -func cmdIP(c CommandLine, api libmachine.API) error { - return runAction("ip", c, api) -} diff --git a/vendor/github.com/docker/machine/commands/ip_test.go b/vendor/github.com/docker/machine/commands/ip_test.go deleted file mode 100644 index 108b33b5..00000000 --- a/vendor/github.com/docker/machine/commands/ip_test.go +++ /dev/null @@ -1,79 +0,0 @@ -package commands - -import ( - "testing" - - "github.com/docker/machine/commands/commandstest" - "github.com/docker/machine/drivers/fakedriver" - "github.com/docker/machine/libmachine" - "github.com/docker/machine/libmachine/host" - "github.com/docker/machine/libmachine/libmachinetest" - "github.com/docker/machine/libmachine/state" - "github.com/stretchr/testify/assert" -) - -func TestCmdIPMissingMachineName(t *testing.T) { - commandLine := &commandstest.FakeCommandLine{} - api := &libmachinetest.FakeAPI{} - - err := cmdURL(commandLine, api) - - assert.Equal(t, err, ErrNoDefault) -} - -func TestCmdIP(t *testing.T) { - testCases := []struct { - commandLine CommandLine - api libmachine.API - expectedErr error - expectedOut string - }{ - { - commandLine: &commandstest.FakeCommandLine{ - CliArgs: []string{"machine"}, - }, - api: &libmachinetest.FakeAPI{ - Hosts: []*host.Host{ - { - Name: "machine", - Driver: &fakedriver.Driver{ - MockState: state.Running, - MockIP: "1.2.3.4", - }, - }, - }, - }, - expectedErr: nil, - expectedOut: "1.2.3.4\n", - }, - { - commandLine: &commandstest.FakeCommandLine{ - CliArgs: []string{}, - }, - api: &libmachinetest.FakeAPI{ - Hosts: []*host.Host{ - { - Name: "default", - Driver: &fakedriver.Driver{ - MockState: state.Running, - MockIP: "1.2.3.4", - }, - }, - }, - }, - expectedErr: nil, - expectedOut: "1.2.3.4\n", - }, - } - - for _, tc := range testCases { - stdoutGetter := commandstest.NewStdoutGetter() - - err := cmdIP(tc.commandLine, tc.api) - - assert.Equal(t, tc.expectedErr, err) - assert.Equal(t, tc.expectedOut, stdoutGetter.Output()) - - stdoutGetter.Stop() - } -} diff --git a/vendor/github.com/docker/machine/commands/kill.go b/vendor/github.com/docker/machine/commands/kill.go deleted file mode 100644 index f8c2aac3..00000000 --- a/vendor/github.com/docker/machine/commands/kill.go +++ /dev/null @@ -1,7 +0,0 @@ -package commands - -import "github.com/docker/machine/libmachine" - -func cmdKill(c CommandLine, api libmachine.API) error { - return runAction("kill", c, api) -} diff --git a/vendor/github.com/docker/machine/commands/kill_test.go b/vendor/github.com/docker/machine/commands/kill_test.go deleted file mode 100644 index 23c1ef5a..00000000 --- a/vendor/github.com/docker/machine/commands/kill_test.go +++ /dev/null @@ -1,56 +0,0 @@ -package commands - -import ( - "testing" - - "github.com/docker/machine/commands/commandstest" - "github.com/docker/machine/drivers/fakedriver" - "github.com/docker/machine/libmachine/host" - "github.com/docker/machine/libmachine/libmachinetest" - "github.com/docker/machine/libmachine/state" - "github.com/stretchr/testify/assert" -) - -func TestCmdKillMissingMachineName(t *testing.T) { - commandLine := &commandstest.FakeCommandLine{} - api := &libmachinetest.FakeAPI{} - - err := cmdKill(commandLine, api) - - assert.Equal(t, ErrNoDefault, err) -} - -func TestCmdKill(t *testing.T) { - commandLine := &commandstest.FakeCommandLine{ - CliArgs: []string{"machineToKill1", "machineToKill2"}, - } - api := &libmachinetest.FakeAPI{ - Hosts: []*host.Host{ - { - Name: "machineToKill1", - Driver: &fakedriver.Driver{ - MockState: state.Running, - }, - }, - { - Name: "machineToKill2", - Driver: &fakedriver.Driver{ - MockState: state.Running, - }, - }, - { - Name: "machine", - Driver: &fakedriver.Driver{ - MockState: state.Running, - }, - }, - }, - } - - err := cmdKill(commandLine, api) - assert.NoError(t, err) - - assert.Equal(t, state.Stopped, libmachinetest.State(api, "machineToKill1")) - assert.Equal(t, state.Stopped, libmachinetest.State(api, "machineToKill2")) - assert.Equal(t, state.Running, libmachinetest.State(api, "machine")) -} diff --git a/vendor/github.com/docker/machine/commands/ls.go b/vendor/github.com/docker/machine/commands/ls.go deleted file mode 100644 index 7375c290..00000000 --- a/vendor/github.com/docker/machine/commands/ls.go +++ /dev/null @@ -1,506 +0,0 @@ -package commands - -import ( - "errors" - "fmt" - "os" - "regexp" - "sort" - "strings" - "text/tabwriter" - "text/template" - "time" - - "io" - - "github.com/docker/machine/libmachine" - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/host" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcndockerclient" - "github.com/docker/machine/libmachine/persist" - "github.com/docker/machine/libmachine/state" - "github.com/docker/machine/libmachine/swarm" - "github.com/skarademir/naturalsort" -) - -const ( - lsDefaultTimeout = 10 - tableFormatKey = "table" - lsDefaultFormat = "table {{ .Name }}\t{{ .Active }}\t{{ .DriverName}}\t{{ .State }}\t{{ .URL }}\t{{ .Swarm }}\t{{ .DockerVersion }}\t{{ .Error}}" -) - -var ( - headers = map[string]string{ - "Name": "NAME", - "Active": "ACTIVE", - "ActiveHost": "ACTIVE_HOST", - "ActiveSwarm": "ACTIVE_SWARM", - "DriverName": "DRIVER", - "State": "STATE", - "URL": "URL", - "SwarmOptions": "SWARM_OPTIONS", - "Swarm": "SWARM", - "EngineOptions": "ENGINE_OPTIONS", - "Error": "ERRORS", - "DockerVersion": "DOCKER", - "ResponseTime": "RESPONSE", - } -) - -type HostListItem struct { - Name string - Active string - ActiveHost bool - ActiveSwarm bool - DriverName string - State state.State - URL string - SwarmOptions *swarm.Options - Swarm string - EngineOptions *engine.Options - Error string - DockerVersion string - ResponseTime time.Duration -} - -// FilterOptions - -type FilterOptions struct { - SwarmName []string - DriverName []string - State []string - Name []string - Labels []string -} - -func cmdLs(c CommandLine, api libmachine.API) error { - filters, err := parseFilters(c.StringSlice("filter")) - if err != nil { - return err - } - - hostList, hostInError, err := persist.LoadAllHosts(api) - if err != nil { - return err - } - - hostList = filterHosts(hostList, filters) - - // Just print out the names if we're being quiet - if c.Bool("quiet") { - for _, host := range hostList { - fmt.Println(host.Name) - } - return nil - } - - template, table, err := parseFormat(c.String("format")) - if err != nil { - return err - } - - var w io.Writer - if table { - tabWriter := tabwriter.NewWriter(os.Stdout, 5, 1, 3, ' ', 0) - defer tabWriter.Flush() - - w = tabWriter - - if err := template.Execute(w, headers); err != nil { - return err - } - } else { - w = os.Stdout - } - - timeout := time.Duration(c.Int("timeout")) * time.Second - items := getHostListItems(hostList, hostInError, timeout) - - swarmMasters := make(map[string]string) - swarmInfo := make(map[string]string) - - for _, host := range hostList { - if host.HostOptions != nil { - swarmOptions := host.HostOptions.SwarmOptions - if swarmOptions.Master { - swarmMasters[swarmOptions.Discovery] = host.Name - } - - if swarmOptions.Discovery != "" { - swarmInfo[host.Name] = swarmOptions.Discovery - } - } - } - - for _, item := range items { - swarmColumn := "" - if item.SwarmOptions != nil && item.SwarmOptions.Discovery != "" { - swarmColumn = swarmMasters[item.SwarmOptions.Discovery] - if item.SwarmOptions.Master { - swarmColumn = fmt.Sprintf("%s (master)", swarmColumn) - } - } - item.Swarm = swarmColumn - - if err := template.Execute(w, item); err != nil { - return err - } - } - - return nil -} - -func parseFormat(format string) (*template.Template, bool, error) { - table := false - finalFormat := format - - if finalFormat == "" { - finalFormat = lsDefaultFormat - } - - if strings.HasPrefix(finalFormat, tableFormatKey) { - table = true - finalFormat = finalFormat[len(tableFormatKey):] - } - - finalFormat = strings.Trim(finalFormat, " ") - r := strings.NewReplacer(`\t`, "\t", `\n`, "\n") - finalFormat = r.Replace(finalFormat) - - template, err := template.New("").Parse(finalFormat + "\n") - if err != nil { - return nil, false, err - } - - return template, table, nil -} - -func parseFilters(filters []string) (FilterOptions, error) { - options := FilterOptions{} - for _, f := range filters { - kv := strings.SplitN(f, "=", 2) - if len(kv) != 2 { - return options, errors.New("Unsupported filter syntax.") - } - key, value := strings.ToLower(kv[0]), kv[1] - - switch key { - case "swarm": - options.SwarmName = append(options.SwarmName, value) - case "driver": - options.DriverName = append(options.DriverName, value) - case "state": - options.State = append(options.State, value) - case "name": - options.Name = append(options.Name, value) - case "label": - options.Labels = append(options.Labels, value) - default: - return options, fmt.Errorf("Unsupported filter key '%s'", key) - } - } - return options, nil -} - -func filterHosts(hosts []*host.Host, filters FilterOptions) []*host.Host { - if len(filters.SwarmName) == 0 && - len(filters.DriverName) == 0 && - len(filters.State) == 0 && - len(filters.Name) == 0 && - len(filters.Labels) == 0 { - return hosts - } - - filteredHosts := []*host.Host{} - swarmMasters := getSwarmMasters(hosts) - - for _, h := range hosts { - if filterHost(h, filters, swarmMasters) { - filteredHosts = append(filteredHosts, h) - } - } - return filteredHosts -} - -func getSwarmMasters(hosts []*host.Host) map[string]string { - swarmMasters := make(map[string]string) - for _, h := range hosts { - if h.HostOptions != nil { - swarmOptions := h.HostOptions.SwarmOptions - if swarmOptions != nil && swarmOptions.Master { - swarmMasters[swarmOptions.Discovery] = h.Name - } - } - } - return swarmMasters -} - -func filterHost(host *host.Host, filters FilterOptions, swarmMasters map[string]string) bool { - swarmMatches := matchesSwarmName(host, filters.SwarmName, swarmMasters) - driverMatches := matchesDriverName(host, filters.DriverName) - stateMatches := matchesState(host, filters.State) - nameMatches := matchesName(host, filters.Name) - labelMatches := matchesLabel(host, filters.Labels) - - return swarmMatches && driverMatches && stateMatches && nameMatches && labelMatches -} - -func matchesSwarmName(host *host.Host, swarmNames []string, swarmMasters map[string]string) bool { - if len(swarmNames) == 0 { - return true - } - for _, n := range swarmNames { - if host.HostOptions != nil && host.HostOptions.SwarmOptions != nil { - if strings.EqualFold(n, swarmMasters[host.HostOptions.SwarmOptions.Discovery]) { - return true - } - } - } - return false -} - -func matchesDriverName(host *host.Host, driverNames []string) bool { - if len(driverNames) == 0 { - return true - } - for _, n := range driverNames { - if strings.EqualFold(host.DriverName, n) { - return true - } - } - return false -} - -func matchesState(host *host.Host, states []string) bool { - if len(states) == 0 { - return true - } - for _, n := range states { - s, err := host.Driver.GetState() - if err != nil { - log.Warn(err) - } - if strings.EqualFold(n, s.String()) { - return true - } - } - return false -} - -func matchesName(host *host.Host, names []string) bool { - if len(names) == 0 { - return true - } - for _, n := range names { - r, err := regexp.Compile(n) - if err != nil { - log.Error(err) - os.Exit(1) // TODO: Can we get rid of this call, and exit 'properly' ? - } - if r.MatchString(host.Driver.GetMachineName()) { - return true - } - } - return false -} - -func matchesLabel(host *host.Host, labels []string) bool { - if len(labels) == 0 { - return true - } - - var englabels = make(map[string]string, len(host.HostOptions.EngineOptions.Labels)) - - if host.HostOptions != nil && host.HostOptions.EngineOptions.Labels != nil { - for _, s := range host.HostOptions.EngineOptions.Labels { - kv := strings.SplitN(s, "=", 2) - englabels[kv[0]] = kv[1] - } - } - - for _, l := range labels { - kv := strings.SplitN(l, "=", 2) - if val, exists := englabels[kv[0]]; exists && strings.EqualFold(val, kv[1]) { - return true - } - } - return false -} - -// PERFORMANCE: The code of this function is complicated because we try -// to call the underlying drivers as less as possible to get the information -// we need. -func attemptGetHostState(h *host.Host, stateQueryChan chan<- HostListItem) { - requestBeginning := time.Now() - url := "" - currentState := state.None - dockerVersion := "Unknown" - hostError := "" - - url, err := h.URL() - - // PERFORMANCE: if we have the url, it's ok to assume the host is running - // This reduces the number of calls to the drivers - if err == nil { - if url != "" { - currentState = state.Running - } else { - currentState, err = h.Driver.GetState() - } - } else { - currentState, _ = h.Driver.GetState() - } - - if err == nil && url != "" { - // PERFORMANCE: Reuse the url instead of asking the host again. - // This reduces the number of calls to the drivers - dockerHost := &mcndockerclient.RemoteDocker{ - HostURL: url, - AuthOption: h.AuthOptions(), - } - dockerVersion, err = mcndockerclient.DockerVersion(dockerHost) - - if err != nil { - dockerVersion = "Unknown" - } else { - dockerVersion = fmt.Sprintf("v%s", dockerVersion) - } - } - - if err != nil { - hostError = err.Error() - } - if hostError == drivers.ErrHostIsNotRunning.Error() { - hostError = "" - } - - var swarmOptions *swarm.Options - var engineOptions *engine.Options - if h.HostOptions != nil { - swarmOptions = h.HostOptions.SwarmOptions - engineOptions = h.HostOptions.EngineOptions - } - - isMaster := false - swarmHost := "" - if swarmOptions != nil { - isMaster = swarmOptions.Master - swarmHost = swarmOptions.Host - } - - activeHost := isActive(currentState, url) - activeSwarm := isSwarmActive(currentState, url, isMaster, swarmHost) - active := "-" - if activeHost { - active = "*" - } - if activeSwarm { - active = "* (swarm)" - } - - stateQueryChan <- HostListItem{ - Name: h.Name, - Active: active, - ActiveHost: activeHost, - ActiveSwarm: activeSwarm, - DriverName: h.Driver.DriverName(), - State: currentState, - URL: url, - SwarmOptions: swarmOptions, - EngineOptions: engineOptions, - DockerVersion: dockerVersion, - Error: hostError, - ResponseTime: time.Now().Round(time.Millisecond).Sub(requestBeginning.Round(time.Millisecond)), - } -} - -func getHostState(h *host.Host, hostListItemsChan chan<- HostListItem, timeout time.Duration) { - // This channel is used to communicate the properties we are querying - // about the host in the case of a successful read. - stateQueryChan := make(chan HostListItem) - - go attemptGetHostState(h, stateQueryChan) - - select { - // If we get back useful information, great. Forward it straight to - // the original parent channel. - case hli := <-stateQueryChan: - hostListItemsChan <- hli - - // Otherwise, give up after a predetermined duration. - case <-time.After(timeout): - hostListItemsChan <- HostListItem{ - Name: h.Name, - DriverName: h.Driver.DriverName(), - State: state.Timeout, - ResponseTime: timeout, - } - } -} - -func getHostListItems(hostList []*host.Host, hostsInError map[string]error, timeout time.Duration) []HostListItem { - log.Debugf("timeout set to %s", timeout) - - hostListItems := []HostListItem{} - hostListItemsChan := make(chan HostListItem) - - for _, h := range hostList { - go getHostState(h, hostListItemsChan, timeout) - } - - for range hostList { - hostListItems = append(hostListItems, <-hostListItemsChan) - } - - close(hostListItemsChan) - - for name, err := range hostsInError { - hostListItems = append(hostListItems, newHostListItemInError(name, err)) - } - - sortHostListItemsByName(hostListItems) - return hostListItems -} - -func newHostListItemInError(name string, err error) HostListItem { - return HostListItem{ - Name: name, - DriverName: "not found", - State: state.Error, - Error: strings.Replace(err.Error(), "\n", " ", -1), - } -} - -func sortHostListItemsByName(items []HostListItem) { - m := make(map[string]HostListItem, len(items)) - s := make([]string, len(items)) - for i, v := range items { - name := strings.ToLower(v.Name) - m[name] = v - s[i] = name - } - sort.Sort(naturalsort.NaturalSort(s)) - for i, v := range s { - items[i] = m[v] - } -} - -func isActive(currentState state.State, hostURL string) bool { - return currentState == state.Running && hostURL == os.Getenv("DOCKER_HOST") -} - -func isSwarmActive(currentState state.State, hostURL string, isMaster bool, swarmHost string) bool { - return isMaster && currentState == state.Running && toSwarmURL(hostURL, swarmHost) == os.Getenv("DOCKER_HOST") -} - -func urlPort(urlWithPort string) string { - parts := strings.Split(urlWithPort, ":") - return parts[len(parts)-1] -} - -func toSwarmURL(hostURL string, swarmHost string) string { - hostPort := urlPort(hostURL) - swarmPort := urlPort(swarmHost) - return strings.Replace(hostURL, ":"+hostPort, ":"+swarmPort, 1) -} diff --git a/vendor/github.com/docker/machine/commands/ls_test.go b/vendor/github.com/docker/machine/commands/ls_test.go deleted file mode 100644 index 4509c680..00000000 --- a/vendor/github.com/docker/machine/commands/ls_test.go +++ /dev/null @@ -1,535 +0,0 @@ -package commands - -import ( - "os" - "testing" - - "time" - - "errors" - - "github.com/docker/machine/drivers/fakedriver" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/host" - "github.com/docker/machine/libmachine/mcndockerclient" - "github.com/docker/machine/libmachine/state" - "github.com/docker/machine/libmachine/swarm" - "github.com/stretchr/testify/assert" -) - -func TestParseFiltersErrorsGivenInvalidFilter(t *testing.T) { - _, err := parseFilters([]string{"foo=bar"}) - assert.EqualError(t, err, "Unsupported filter key 'foo'") -} - -func TestParseFiltersSwarm(t *testing.T) { - actual, _ := parseFilters([]string{"swarm=foo"}) - assert.Equal(t, actual, FilterOptions{SwarmName: []string{"foo"}}) -} - -func TestParseFiltersDriver(t *testing.T) { - actual, _ := parseFilters([]string{"driver=bar"}) - assert.Equal(t, actual, FilterOptions{DriverName: []string{"bar"}}) -} - -func TestParseFiltersState(t *testing.T) { - actual, _ := parseFilters([]string{"state=Running"}) - assert.Equal(t, actual, FilterOptions{State: []string{"Running"}}) -} - -func TestParseFiltersName(t *testing.T) { - actual, _ := parseFilters([]string{"name=dev"}) - assert.Equal(t, actual, FilterOptions{Name: []string{"dev"}}) -} - -func TestParseFiltersLabel(t *testing.T) { - actual, err := parseFilters([]string{"label=com.example.foo=bar"}) - assert.EqualValues(t, actual, FilterOptions{Labels: []string{"com.example.foo=bar"}}) - assert.Nil(t, err, "returned err value must be Nil") -} - -func TestParseFiltersAll(t *testing.T) { - actual, _ := parseFilters([]string{"swarm=foo", "driver=bar", "state=Stopped", "name=dev"}) - assert.Equal(t, actual, FilterOptions{SwarmName: []string{"foo"}, DriverName: []string{"bar"}, State: []string{"Stopped"}, Name: []string{"dev"}}) -} - -func TestParseFiltersAllCase(t *testing.T) { - actual, err := parseFilters([]string{"sWarM=foo", "DrIver=bar", "StaTe=Stopped", "NAMe=dev", "LABEL=com=foo"}) - assert.Equal(t, actual, FilterOptions{SwarmName: []string{"foo"}, DriverName: []string{"bar"}, State: []string{"Stopped"}, Name: []string{"dev"}, Labels: []string{"com=foo"}}) - assert.Nil(t, err, "err should be nil") -} - -func TestParseFiltersDuplicates(t *testing.T) { - actual, _ := parseFilters([]string{"swarm=foo", "driver=bar", "name=mark", "swarm=baz", "driver=qux", "state=Running", "state=Starting", "name=time"}) - assert.Equal(t, actual, FilterOptions{SwarmName: []string{"foo", "baz"}, DriverName: []string{"bar", "qux"}, State: []string{"Running", "Starting"}, Name: []string{"mark", "time"}}) -} - -func TestParseFiltersValueWithEqual(t *testing.T) { - actual, _ := parseFilters([]string{"driver=bar=baz"}) - assert.Equal(t, actual, FilterOptions{DriverName: []string{"bar=baz"}}) -} - -func TestFilterHostsReturnsFiltersValuesCaseInsensitive(t *testing.T) { - opts := FilterOptions{ - SwarmName: []string{"fOo"}, - DriverName: []string{"ViRtUaLboX"}, - State: []string{"StOPpeD"}, - Labels: []string{"com.EXAMPLE.app=FOO"}, - } - hosts := []*host.Host{} - actual := filterHosts(hosts, opts) - assert.EqualValues(t, actual, hosts) -} -func TestFilterHostsReturnsSameGivenNoFilters(t *testing.T) { - opts := FilterOptions{} - hosts := []*host.Host{ - { - Name: "testhost", - DriverName: "fakedriver", - }, - } - actual := filterHosts(hosts, opts) - assert.EqualValues(t, actual, hosts) -} - -func TestFilterHostsReturnSetLabel(t *testing.T) { - opts := FilterOptions{ - Labels: []string{"com.class.foo=bar"}, - } - hosts := []*host.Host{ - { - Name: "testhost", - DriverName: "fakedriver", - HostOptions: &host.Options{ - EngineOptions: &engine.Options{ - Labels: []string{"com.class.foo=bar"}, - }, - }, - }, - } - actual := filterHosts(hosts, opts) - assert.EqualValues(t, actual, hosts) -} - -func TestFilterHostsReturnsEmptyGivenEmptyHosts(t *testing.T) { - opts := FilterOptions{ - SwarmName: []string{"foo"}, - } - hosts := []*host.Host{} - assert.Empty(t, filterHosts(hosts, opts)) -} - -func TestFilterHostsReturnsEmptyGivenNonMatchingFilters(t *testing.T) { - opts := FilterOptions{ - SwarmName: []string{"foo"}, - } - hosts := []*host.Host{ - { - Name: "testhost", - DriverName: "fakedriver", - }, - } - assert.Empty(t, filterHosts(hosts, opts)) -} - -func TestFilterHostsBySwarmName(t *testing.T) { - opts := FilterOptions{ - SwarmName: []string{"master"}, - } - master := - &host.Host{ - Name: "master", - HostOptions: &host.Options{ - SwarmOptions: &swarm.Options{Master: true, Discovery: "foo"}, - }, - } - node1 := - &host.Host{ - Name: "node1", - HostOptions: &host.Options{ - SwarmOptions: &swarm.Options{Master: false, Discovery: "foo"}, - }, - } - othermaster := - &host.Host{ - Name: "othermaster", - HostOptions: &host.Options{ - SwarmOptions: &swarm.Options{Master: true, Discovery: "bar"}, - }, - } - hosts := []*host.Host{master, node1, othermaster} - expected := []*host.Host{master, node1} - - assert.EqualValues(t, filterHosts(hosts, opts), expected) -} - -func TestFilterHostsByDriverName(t *testing.T) { - opts := FilterOptions{ - DriverName: []string{"fakedriver"}, - } - node1 := - &host.Host{ - Name: "node1", - DriverName: "fakedriver", - } - node2 := - &host.Host{ - Name: "node2", - DriverName: "virtualbox", - } - node3 := - &host.Host{ - Name: "node3", - DriverName: "fakedriver", - } - hosts := []*host.Host{node1, node2, node3} - expected := []*host.Host{node1, node3} - - assert.EqualValues(t, filterHosts(hosts, opts), expected) -} - -func TestFilterHostsByState(t *testing.T) { - opts := FilterOptions{ - State: []string{"Paused", "Saved", "Stopped"}, - } - node1 := - &host.Host{ - Name: "node1", - DriverName: "fakedriver", - Driver: &fakedriver.Driver{MockState: state.Paused}, - } - node2 := - &host.Host{ - Name: "node2", - DriverName: "virtualbox", - Driver: &fakedriver.Driver{MockState: state.Stopped}, - } - node3 := - &host.Host{ - Name: "node3", - DriverName: "fakedriver", - Driver: &fakedriver.Driver{MockState: state.Running}, - } - hosts := []*host.Host{node1, node2, node3} - expected := []*host.Host{node1, node2} - - assert.EqualValues(t, filterHosts(hosts, opts), expected) -} - -func TestFilterHostsByName(t *testing.T) { - opts := FilterOptions{ - Name: []string{"fire", "ice", "earth", "a.?r"}, - } - node1 := - &host.Host{ - Name: "fire", - DriverName: "fakedriver", - Driver: &fakedriver.Driver{MockState: state.Paused, MockName: "fire"}, - } - node2 := - &host.Host{ - Name: "ice", - DriverName: "adriver", - Driver: &fakedriver.Driver{MockState: state.Paused, MockName: "ice"}, - } - node3 := - &host.Host{ - Name: "air", - DriverName: "nodriver", - Driver: &fakedriver.Driver{MockState: state.Paused, MockName: "air"}, - } - node4 := - &host.Host{ - Name: "water", - DriverName: "falsedriver", - Driver: &fakedriver.Driver{MockState: state.Paused, MockName: "water"}, - } - hosts := []*host.Host{node1, node2, node3, node4} - expected := []*host.Host{node1, node2, node3} - - assert.EqualValues(t, filterHosts(hosts, opts), expected) -} - -func TestFilterHostsMultiFlags(t *testing.T) { - opts := FilterOptions{ - SwarmName: []string{}, - DriverName: []string{"fakedriver", "virtualbox"}, - } - node1 := - &host.Host{ - Name: "node1", - DriverName: "fakedriver", - } - node2 := - &host.Host{ - Name: "node2", - DriverName: "virtualbox", - } - node3 := - &host.Host{ - Name: "node3", - DriverName: "softlayer", - } - hosts := []*host.Host{node1, node2, node3} - expected := []*host.Host{node1, node2} - - assert.EqualValues(t, filterHosts(hosts, opts), expected) -} - -func TestFilterHostsDifferentFlagsProduceAND(t *testing.T) { - opts := FilterOptions{ - DriverName: []string{"virtualbox"}, - State: []string{"Running"}, - } - - hosts := []*host.Host{ - { - Name: "node1", - DriverName: "fakedriver", - Driver: &fakedriver.Driver{MockState: state.Paused}, - }, - { - Name: "node2", - DriverName: "virtualbox", - Driver: &fakedriver.Driver{MockState: state.Stopped}, - }, - { - Name: "node3", - DriverName: "fakedriver", - Driver: &fakedriver.Driver{MockState: state.Running}, - }, - } - - assert.Empty(t, filterHosts(hosts, opts)) -} - -func TestGetHostListItems(t *testing.T) { - defer func(versioner mcndockerclient.DockerVersioner) { mcndockerclient.CurrentDockerVersioner = versioner }(mcndockerclient.CurrentDockerVersioner) - mcndockerclient.CurrentDockerVersioner = &mcndockerclient.FakeDockerVersioner{Version: "1.9"} - - // TODO: Ideally this would mockable via interface instead. - defer func(host string) { os.Setenv("DOCKER_HOST", host) }(os.Getenv("DOCKER_HOST")) - os.Setenv("DOCKER_HOST", "tcp://active.host.com:2376") - - hosts := []*host.Host{ - { - Name: "foo", - Driver: &fakedriver.Driver{ - MockState: state.Running, - MockIP: "active.host.com", - }, - }, - { - Name: "bar100", - Driver: &fakedriver.Driver{ - MockState: state.Stopped, - }, - }, - { - Name: "bar10", - Driver: &fakedriver.Driver{ - MockState: state.Error, - }, - }, - } - - expected := []struct { - name string - state state.State - active bool - version string - error string - }{ - {"bar10", state.Error, false, "Unknown", "Unable to get ip"}, - {"bar100", state.Stopped, false, "Unknown", ""}, - {"foo", state.Running, true, "v1.9", ""}, - } - - items := getHostListItems(hosts, map[string]error{}, 10*time.Second) - - for i := range expected { - assert.Equal(t, expected[i].name, items[i].Name) - assert.Equal(t, expected[i].state, items[i].State) - assert.Equal(t, expected[i].active, items[i].ActiveHost) - assert.Equal(t, expected[i].version, items[i].DockerVersion) - assert.Equal(t, expected[i].error, items[i].Error) - } -} - -func TestGetHostListItemsEnvDockerHostUnset(t *testing.T) { - defer func(versioner mcndockerclient.DockerVersioner) { mcndockerclient.CurrentDockerVersioner = versioner }(mcndockerclient.CurrentDockerVersioner) - mcndockerclient.CurrentDockerVersioner = &mcndockerclient.FakeDockerVersioner{Version: "1.9"} - - defer func(host string) { os.Setenv("DOCKER_HOST", host) }(os.Getenv("DOCKER_HOST")) - os.Unsetenv("DOCKER_HOST") - - hosts := []*host.Host{ - { - Name: "foo", - Driver: &fakedriver.Driver{ - MockState: state.Running, - MockIP: "120.0.0.1", - }, - }, - { - Name: "bar", - Driver: &fakedriver.Driver{ - MockState: state.Stopped, - }, - }, - { - Name: "baz", - Driver: &fakedriver.Driver{ - MockState: state.Saved, - }, - }, - } - - expected := map[string]struct { - state state.State - active bool - }{ - "foo": {state.Running, false}, - "bar": {state.Stopped, false}, - "baz": {state.Saved, false}, - } - - items := getHostListItems(hosts, map[string]error{}, 10*time.Second) - - for _, item := range items { - expected := expected[item.Name] - - assert.Equal(t, expected.state, item.State) - assert.Equal(t, expected.active, item.ActiveHost) - } -} - -func TestIsActive(t *testing.T) { - cases := []struct { - dockerHost string - state state.State - expected bool - }{ - {"", state.Running, false}, - {"tcp://5.6.7.8:2376", state.Running, false}, - {"tcp://1.2.3.4:2376", state.Stopped, false}, - {"tcp://1.2.3.4:2376", state.Running, true}, - {"tcp://1.2.3.4:3376", state.Running, false}, - } - - for _, c := range cases { - os.Unsetenv("DOCKER_HOST") - if c.dockerHost != "" { - os.Setenv("DOCKER_HOST", c.dockerHost) - } - - actual := isActive(c.state, "tcp://1.2.3.4:2376") - - assert.Equal(t, c.expected, actual) - } -} - -func TestIsSwarmActive(t *testing.T) { - cases := []struct { - dockerHost string - state state.State - isMaster bool - expected bool - }{ - {"", state.Running, false, false}, - {"tcp://5.6.7.8:3376", state.Running, true, false}, - {"tcp://1.2.3.4:3376", state.Stopped, true, false}, - {"tcp://1.2.3.4:3376", state.Running, true, true}, - {"tcp://1.2.3.4:3376", state.Running, false, false}, - {"tcp://1.2.3.4:2376", state.Running, true, false}, - } - - for _, c := range cases { - os.Unsetenv("DOCKER_HOST") - if c.dockerHost != "" { - os.Setenv("DOCKER_HOST", c.dockerHost) - } - - actual := isSwarmActive(c.state, "tcp://1.2.3.4:2376", c.isMaster, "tcp://0.0.0.0:3376") - - assert.Equal(t, c.expected, actual) - } -} - -func TestGetHostStateTimeout(t *testing.T) { - hosts := []*host.Host{ - { - Name: "foo", - Driver: &fakedriver.Driver{ - MockState: state.Timeout, - }, - }, - } - - hostItem := getHostListItems(hosts, nil, time.Millisecond)[0] - - assert.Equal(t, "foo", hostItem.Name) - assert.Equal(t, state.Timeout, hostItem.State) - assert.Equal(t, "Driver", hostItem.DriverName) - assert.Equal(t, time.Millisecond, hostItem.ResponseTime) -} - -func TestGetHostStateError(t *testing.T) { - hosts := []*host.Host{ - { - Name: "foo", - Driver: &fakedriver.Driver{ - MockState: state.Error, - }, - }, - } - - hostItem := getHostListItems(hosts, nil, 10*time.Second)[0] - - assert.Equal(t, "foo", hostItem.Name) - assert.Equal(t, state.Error, hostItem.State) - assert.Equal(t, "Driver", hostItem.DriverName) - assert.Empty(t, hostItem.URL) - assert.Equal(t, "Unable to get ip", hostItem.Error) - assert.Nil(t, hostItem.SwarmOptions) -} - -func TestGetSomeHostInError(t *testing.T) { - defer func(versioner mcndockerclient.DockerVersioner) { mcndockerclient.CurrentDockerVersioner = versioner }(mcndockerclient.CurrentDockerVersioner) - mcndockerclient.CurrentDockerVersioner = &mcndockerclient.FakeDockerVersioner{Version: "1.9"} - - hosts := []*host.Host{ - { - Name: "foo", - Driver: &fakedriver.Driver{ - MockState: state.Running, - }, - }, - } - hostsInError := map[string]error{ - "bar": errors.New("invalid memory address or nil pointer dereference"), - } - - hostItems := getHostListItems(hosts, hostsInError, 10*time.Second) - assert.Equal(t, 2, len(hostItems)) - - hostItem := hostItems[0] - assert.Equal(t, "bar", hostItem.Name) - assert.Equal(t, state.Error, hostItem.State) - assert.Equal(t, "not found", hostItem.DriverName) - assert.Empty(t, hostItem.URL) - assert.Equal(t, "invalid memory address or nil pointer dereference", hostItem.Error) - assert.Nil(t, hostItem.SwarmOptions) - - hostItem = hostItems[1] - assert.Equal(t, "foo", hostItem.Name) - assert.Equal(t, state.Running, hostItem.State) -} - -func TestOnErrorWithMultilineComment(t *testing.T) { - err := errors.New("MissingParameter: The request must contain the parameter InstanceId\n status code: 400, request id:") - - itemInError := newHostListItemInError("foo", err) - - assert.Equal(t, itemInError.Error, "MissingParameter: The request must contain the parameter InstanceId status code: 400, request id:") -} diff --git a/vendor/github.com/docker/machine/commands/mcndirs/utils.go b/vendor/github.com/docker/machine/commands/mcndirs/utils.go deleted file mode 100644 index 3181e7c8..00000000 --- a/vendor/github.com/docker/machine/commands/mcndirs/utils.go +++ /dev/null @@ -1,27 +0,0 @@ -package mcndirs - -import ( - "os" - "path/filepath" - - "github.com/docker/machine/libmachine/mcnutils" -) - -var ( - BaseDir = os.Getenv("MACHINE_STORAGE_PATH") -) - -func GetBaseDir() string { - if BaseDir == "" { - BaseDir = filepath.Join(mcnutils.GetHomeDir(), ".docker", "machine") - } - return BaseDir -} - -func GetMachineDir() string { - return filepath.Join(GetBaseDir(), "machines") -} - -func GetMachineCertDir() string { - return filepath.Join(GetBaseDir(), "certs") -} diff --git a/vendor/github.com/docker/machine/commands/mcndirs/utils_test.go b/vendor/github.com/docker/machine/commands/mcndirs/utils_test.go deleted file mode 100644 index 9fca65f7..00000000 --- a/vendor/github.com/docker/machine/commands/mcndirs/utils_test.go +++ /dev/null @@ -1,70 +0,0 @@ -package mcndirs - -import ( - "path" - "strings" - "testing" - - "github.com/docker/machine/libmachine/mcnutils" -) - -func TestGetBaseDir(t *testing.T) { - // reset any override env var - BaseDir = "" - - homeDir := mcnutils.GetHomeDir() - baseDir := GetBaseDir() - - if strings.Index(baseDir, homeDir) != 0 { - t.Fatalf("expected base dir with prefix %s; received %s", homeDir, baseDir) - } -} - -func TestGetCustomBaseDir(t *testing.T) { - root := "/tmp" - BaseDir = root - baseDir := GetBaseDir() - - if strings.Index(baseDir, root) != 0 { - t.Fatalf("expected base dir with prefix %s; received %s", root, baseDir) - } - BaseDir = "" -} - -func TestGetMachineDir(t *testing.T) { - root := "/tmp" - BaseDir = root - machineDir := GetMachineDir() - - if strings.Index(machineDir, root) != 0 { - t.Fatalf("expected machine dir with prefix %s; received %s", root, machineDir) - } - - path, filename := path.Split(machineDir) - if strings.Index(path, root) != 0 { - t.Fatalf("expected base path of %s; received %s", root, path) - } - if filename != "machines" { - t.Fatalf("expected machine dir \"machines\"; received %s", filename) - } - BaseDir = "" -} - -func TestGetMachineCertDir(t *testing.T) { - root := "/tmp" - BaseDir = root - clientDir := GetMachineCertDir() - - if strings.Index(clientDir, root) != 0 { - t.Fatalf("expected machine client cert dir with prefix %s; received %s", root, clientDir) - } - - path, filename := path.Split(clientDir) - if strings.Index(path, root) != 0 { - t.Fatalf("expected base path of %s; received %s", root, path) - } - if filename != "certs" { - t.Fatalf("expected machine client dir \"certs\"; received %s", filename) - } - BaseDir = "" -} diff --git a/vendor/github.com/docker/machine/commands/provision.go b/vendor/github.com/docker/machine/commands/provision.go deleted file mode 100644 index d7070413..00000000 --- a/vendor/github.com/docker/machine/commands/provision.go +++ /dev/null @@ -1,7 +0,0 @@ -package commands - -import "github.com/docker/machine/libmachine" - -func cmdProvision(c CommandLine, api libmachine.API) error { - return runAction("provision", c, api) -} diff --git a/vendor/github.com/docker/machine/commands/provision_test.go b/vendor/github.com/docker/machine/commands/provision_test.go deleted file mode 100644 index 53f1bb15..00000000 --- a/vendor/github.com/docker/machine/commands/provision_test.go +++ /dev/null @@ -1,67 +0,0 @@ -package commands - -import ( - "testing" - - "github.com/docker/machine/commands/commandstest" - "github.com/docker/machine/drivers/fakedriver" - "github.com/docker/machine/libmachine" - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/host" - "github.com/docker/machine/libmachine/libmachinetest" - "github.com/docker/machine/libmachine/provision" - "github.com/docker/machine/libmachine/swarm" - "github.com/stretchr/testify/assert" -) - -func TestCmdProvision(t *testing.T) { - testCases := []struct { - commandLine CommandLine - api libmachine.API - expectedErr error - }{ - { - commandLine: &commandstest.FakeCommandLine{ - CliArgs: []string{"foo", "bar"}, - }, - api: &libmachinetest.FakeAPI{ - Hosts: []*host.Host{ - { - Name: "foo", - Driver: &fakedriver.Driver{}, - HostOptions: &host.Options{ - EngineOptions: &engine.Options{}, - AuthOptions: &auth.Options{}, - SwarmOptions: &swarm.Options{}, - }, - }, - { - Name: "bar", - Driver: &fakedriver.Driver{}, - HostOptions: &host.Options{ - EngineOptions: &engine.Options{}, - AuthOptions: &auth.Options{}, - SwarmOptions: &swarm.Options{}, - }, - }, - }, - }, - expectedErr: nil, - }, - } - - provision.SetDetector(&provision.FakeDetector{ - Provisioner: provision.NewFakeProvisioner(nil), - }) - - // fakeprovisioner always returns "true" for compatible host, so we - // just need to register it. - provision.Register("fakeprovisioner", &provision.RegisteredProvisioner{ - New: provision.NewFakeProvisioner, - }) - - for _, tc := range testCases { - assert.Equal(t, tc.expectedErr, cmdProvision(tc.commandLine, tc.api)) - } -} diff --git a/vendor/github.com/docker/machine/commands/regeneratecerts.go b/vendor/github.com/docker/machine/commands/regeneratecerts.go deleted file mode 100644 index f801f729..00000000 --- a/vendor/github.com/docker/machine/commands/regeneratecerts.go +++ /dev/null @@ -1,23 +0,0 @@ -package commands - -import ( - "github.com/docker/machine/libmachine" - "github.com/docker/machine/libmachine/log" -) - -func cmdRegenerateCerts(c CommandLine, api libmachine.API) error { - if !c.Bool("force") { - ok, err := confirmInput("Regenerate TLS machine certs? Warning: this is irreversible.") - if err != nil { - return err - } - - if !ok { - return nil - } - } - - log.Infof("Regenerating TLS certificates") - - return runAction("configureAuth", c, api) -} diff --git a/vendor/github.com/docker/machine/commands/restart.go b/vendor/github.com/docker/machine/commands/restart.go deleted file mode 100644 index 1b197f9e..00000000 --- a/vendor/github.com/docker/machine/commands/restart.go +++ /dev/null @@ -1,16 +0,0 @@ -package commands - -import ( - "github.com/docker/machine/libmachine" - "github.com/docker/machine/libmachine/log" -) - -func cmdRestart(c CommandLine, api libmachine.API) error { - if err := runAction("restart", c, api); err != nil { - return err - } - - log.Info("Restarted machines may have new IP addresses. You may need to re-run the `docker-machine env` command.") - - return nil -} diff --git a/vendor/github.com/docker/machine/commands/rm.go b/vendor/github.com/docker/machine/commands/rm.go deleted file mode 100644 index c64ae37d..00000000 --- a/vendor/github.com/docker/machine/commands/rm.go +++ /dev/null @@ -1,88 +0,0 @@ -package commands - -import ( - "fmt" - - "strings" - - "errors" - - "github.com/docker/machine/libmachine" - "github.com/docker/machine/libmachine/log" -) - -func cmdRm(c CommandLine, api libmachine.API) error { - if len(c.Args()) == 0 { - c.ShowHelp() - return ErrNoMachineSpecified - } - - log.Info(fmt.Sprintf("About to remove %s", strings.Join(c.Args(), ", "))) - - force := c.Bool("force") - confirm := c.Bool("y") - var errorOccured []string - - if !userConfirm(confirm, force) { - return nil - } - - for _, hostName := range c.Args() { - err := removeRemoteMachine(hostName, api) - if err != nil { - errorOccured = collectError(fmt.Sprintf("Error removing host %q: %s", hostName, err), force, errorOccured) - } - - if err == nil || force { - removeErr := removeLocalMachine(hostName, api) - if removeErr != nil { - errorOccured = collectError(fmt.Sprintf("Can't remove \"%s\"", hostName), force, errorOccured) - } else { - log.Infof("Successfully removed %s", hostName) - } - } - } - - if len(errorOccured) > 0 && !force { - return errors.New(strings.Join(errorOccured, "\n")) - } - - return nil -} - -func userConfirm(confirm bool, force bool) bool { - if confirm || force { - return true - } - - sure, err := confirmInput(fmt.Sprintf("Are you sure?")) - if err != nil { - return false - } - - return sure -} - -func removeRemoteMachine(hostName string, api libmachine.API) error { - currentHost, loaderr := api.Load(hostName) - if loaderr != nil { - return loaderr - } - - return currentHost.Driver.Remove() -} - -func removeLocalMachine(hostName string, api libmachine.API) error { - exist, _ := api.Exists(hostName) - if !exist { - return errors.New(hostName + " does not exist.") - } - return api.Remove(hostName) -} - -func collectError(message string, force bool, errorOccured []string) []string { - if force { - log.Error(message) - } - return append(errorOccured, message) -} diff --git a/vendor/github.com/docker/machine/commands/rm_test.go b/vendor/github.com/docker/machine/commands/rm_test.go deleted file mode 100644 index adfe6a29..00000000 --- a/vendor/github.com/docker/machine/commands/rm_test.go +++ /dev/null @@ -1,233 +0,0 @@ -package commands - -import ( - "testing" - - "errors" - - "github.com/docker/machine/commands/commandstest" - "github.com/docker/machine/drivers/fakedriver" - "github.com/docker/machine/libmachine/host" - "github.com/docker/machine/libmachine/libmachinetest" - "github.com/stretchr/testify/assert" -) - -func TestCmdRmMissingMachineName(t *testing.T) { - commandLine := &commandstest.FakeCommandLine{} - api := &libmachinetest.FakeAPI{} - - err := cmdRm(commandLine, api) - - assert.Equal(t, ErrNoMachineSpecified, err) - assert.True(t, commandLine.HelpShown) -} - -func TestCmdRm(t *testing.T) { - commandLine := &commandstest.FakeCommandLine{ - CliArgs: []string{"machineToRemove1", "machineToRemove2"}, - LocalFlags: &commandstest.FakeFlagger{ - Data: map[string]interface{}{ - "y": true, - }, - }, - } - api := &libmachinetest.FakeAPI{ - Hosts: []*host.Host{ - { - Name: "machineToRemove1", - Driver: &fakedriver.Driver{}, - }, - { - Name: "machineToRemove2", - Driver: &fakedriver.Driver{}, - }, - { - Name: "machine", - Driver: &fakedriver.Driver{}, - }, - }, - } - - err := cmdRm(commandLine, api) - assert.NoError(t, err) - - assert.False(t, libmachinetest.Exists(api, "machineToRemove1")) - assert.False(t, libmachinetest.Exists(api, "machineToRemove2")) - assert.True(t, libmachinetest.Exists(api, "machine")) -} - -func TestCmdRmforcefully(t *testing.T) { - commandLine := &commandstest.FakeCommandLine{ - CliArgs: []string{"machineToRemove1", "machineToRemove2"}, - LocalFlags: &commandstest.FakeFlagger{ - Data: map[string]interface{}{ - "force": true, - }, - }, - } - api := &libmachinetest.FakeAPI{ - Hosts: []*host.Host{ - { - Name: "machineToRemove1", - Driver: &fakedriver.Driver{}, - }, - { - Name: "machineToRemove2", - Driver: &fakedriver.Driver{}, - }, - }, - } - - err := cmdRm(commandLine, api) - assert.NoError(t, err) - - assert.False(t, libmachinetest.Exists(api, "machineToRemove1")) - assert.False(t, libmachinetest.Exists(api, "machineToRemove2")) -} - -func TestCmdRmforceDoesAutoConfirm(t *testing.T) { - commandLine := &commandstest.FakeCommandLine{ - CliArgs: []string{"machineToRemove1", "machineToRemove2"}, - LocalFlags: &commandstest.FakeFlagger{ - Data: map[string]interface{}{ - "y": false, - "force": true, - }, - }, - } - api := &libmachinetest.FakeAPI{ - Hosts: []*host.Host{ - { - Name: "machineToRemove1", - Driver: &fakedriver.Driver{}, - }, - { - Name: "machineToRemove2", - Driver: &fakedriver.Driver{}, - }, - }, - } - - err := cmdRm(commandLine, api) - assert.NoError(t, err) - - assert.False(t, libmachinetest.Exists(api, "machineToRemove1")) - assert.False(t, libmachinetest.Exists(api, "machineToRemove2")) -} - -func TestCmdRmforceConfirmUnset(t *testing.T) { - commandLine := &commandstest.FakeCommandLine{ - CliArgs: []string{"machineToRemove1"}, - LocalFlags: &commandstest.FakeFlagger{ - Data: map[string]interface{}{ - "y": false, - "force": false, - }, - }, - } - api := &libmachinetest.FakeAPI{ - Hosts: []*host.Host{ - { - Name: "machineToRemove1", - Driver: &fakedriver.Driver{}, - }, - }, - } - - err := cmdRm(commandLine, api) - assert.NoError(t, err) - - assert.True(t, libmachinetest.Exists(api, "machineToRemove1")) -} - -type DriverWithRemoveWhichFail struct { - fakedriver.Driver -} - -func (d *DriverWithRemoveWhichFail) Remove() error { - return errors.New("unknown error") -} - -func TestDontStopWhenADriverRemovalFails(t *testing.T) { - commandLine := &commandstest.FakeCommandLine{ - CliArgs: []string{"machineToRemove1", "machineToRemove2", "machineToRemove3"}, - LocalFlags: &commandstest.FakeFlagger{ - Data: map[string]interface{}{ - "y": true, - }, - }, - } - api := &libmachinetest.FakeAPI{ - Hosts: []*host.Host{ - { - Name: "machineToRemove1", - Driver: &fakedriver.Driver{}, - }, - { - Name: "machineToRemove2", - Driver: &DriverWithRemoveWhichFail{}, - }, - { - Name: "machineToRemove3", - Driver: &fakedriver.Driver{}, - }, - }, - } - - err := cmdRm(commandLine, api) - assert.EqualError(t, err, "Error removing host \"machineToRemove2\": unknown error") - - assert.False(t, libmachinetest.Exists(api, "machineToRemove1")) - assert.True(t, libmachinetest.Exists(api, "machineToRemove2")) - assert.False(t, libmachinetest.Exists(api, "machineToRemove3")) -} - -func TestForceRemoveEvenWhenItFails(t *testing.T) { - commandLine := &commandstest.FakeCommandLine{ - CliArgs: []string{"machineToRemove1"}, - LocalFlags: &commandstest.FakeFlagger{ - Data: map[string]interface{}{ - "y": true, - "force": true, - }, - }, - } - api := &libmachinetest.FakeAPI{ - Hosts: []*host.Host{ - { - Name: "machineToRemove1", - Driver: &DriverWithRemoveWhichFail{}, - }, - }, - } - - err := cmdRm(commandLine, api) - assert.NoError(t, err) - - assert.False(t, libmachinetest.Exists(api, "machineToRemove1")) -} - -func TestDontRemoveMachineIsRemovalFailsAndNotForced(t *testing.T) { - commandLine := &commandstest.FakeCommandLine{ - CliArgs: []string{"machineToRemove1"}, - LocalFlags: &commandstest.FakeFlagger{ - Data: map[string]interface{}{ - "y": true, - "force": false, - }, - }, - } - api := &libmachinetest.FakeAPI{ - Hosts: []*host.Host{ - { - Name: "machineToRemove1", - Driver: &DriverWithRemoveWhichFail{}, - }, - }, - } - - err := cmdRm(commandLine, api) - assert.EqualError(t, err, "Error removing host \"machineToRemove1\": unknown error") - - assert.True(t, libmachinetest.Exists(api, "machineToRemove1")) -} diff --git a/vendor/github.com/docker/machine/commands/scp.go b/vendor/github.com/docker/machine/commands/scp.go deleted file mode 100644 index ca5e9859..00000000 --- a/vendor/github.com/docker/machine/commands/scp.go +++ /dev/null @@ -1,170 +0,0 @@ -package commands - -import ( - "errors" - "fmt" - "os" - "os/exec" - "strings" - - "github.com/docker/machine/libmachine" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/persist" -) - -var ( - errWrongNumberArguments = errors.New("Improper number of arguments") - - // TODO: possibly move this to ssh package - baseSSHArgs = []string{ - "-o", "IdentitiesOnly=yes", - "-o", "StrictHostKeyChecking=no", - "-o", "UserKnownHostsFile=/dev/null", - "-o", "LogLevel=quiet", // suppress "Warning: Permanently added '[localhost]:2022' (ECDSA) to the list of known hosts." - } -) - -// HostInfo gives the mandatory information to connect to a host. -type HostInfo interface { - GetMachineName() string - - GetIP() (string, error) - - GetSSHUsername() string - - GetSSHKeyPath() string -} - -// HostInfoLoader loads host information. -type HostInfoLoader interface { - load(name string) (HostInfo, error) -} - -type storeHostInfoLoader struct { - store persist.Store -} - -func (s *storeHostInfoLoader) load(name string) (HostInfo, error) { - host, err := s.store.Load(name) - if err != nil { - return nil, fmt.Errorf("Error loading host: %s", err) - } - - return host.Driver, nil -} - -func cmdScp(c CommandLine, api libmachine.API) error { - args := c.Args() - if len(args) != 2 { - c.ShowHelp() - return errWrongNumberArguments - } - - src := args[0] - dest := args[1] - - hostInfoLoader := &storeHostInfoLoader{api} - - cmd, err := getScpCmd(src, dest, c.Bool("recursive"), hostInfoLoader) - if err != nil { - return err - } - - return runCmdWithStdIo(*cmd) -} - -func getScpCmd(src, dest string, recursive bool, hostInfoLoader HostInfoLoader) (*exec.Cmd, error) { - cmdPath, err := exec.LookPath("scp") - if err != nil { - return nil, errors.New("Error: You must have a copy of the scp binary locally to use the scp feature.") - } - - srcHost, srcPath, srcOpts, err := getInfoForScpArg(src, hostInfoLoader) - if err != nil { - return nil, err - } - - destHost, destPath, destOpts, err := getInfoForScpArg(dest, hostInfoLoader) - if err != nil { - return nil, err - } - - // TODO: Check that "-3" flag is available in user's version of scp. - // It is on every system I've checked, but the manual mentioned it's "newer" - sshArgs := baseSSHArgs - sshArgs = append(sshArgs, "-3") - if recursive { - sshArgs = append(sshArgs, "-r") - } - - // Append needed -i / private key flags to command. - sshArgs = append(sshArgs, srcOpts...) - sshArgs = append(sshArgs, destOpts...) - - // Append actual arguments for the scp command (i.e. docker@:/path) - locationArg, err := generateLocationArg(srcHost, srcPath) - if err != nil { - return nil, err - } - - sshArgs = append(sshArgs, locationArg) - locationArg, err = generateLocationArg(destHost, destPath) - if err != nil { - return nil, err - } - sshArgs = append(sshArgs, locationArg) - - cmd := exec.Command(cmdPath, sshArgs...) - log.Debug(*cmd) - return cmd, nil -} - -func getInfoForScpArg(hostAndPath string, hostInfoLoader HostInfoLoader) (HostInfo, string, []string, error) { - // Local path. e.g. "/tmp/foo" - if !strings.Contains(hostAndPath, ":") { - return nil, hostAndPath, nil, nil - } - - // Path with hostname. e.g. "hostname:/usr/bin/cmatrix" - parts := strings.SplitN(hostAndPath, ":", 2) - hostName := parts[0] - path := parts[1] - if hostName == "localhost" { - return nil, path, nil, nil - } - - // Remote path - hostInfo, err := hostInfoLoader.load(hostName) - if err != nil { - return nil, "", nil, fmt.Errorf("Error loading host: %s", err) - } - - args := []string{} - if hostInfo.GetSSHKeyPath() != "" { - args = append(args, "-i", hostInfo.GetSSHKeyPath()) - } - - return hostInfo, path, args, nil -} - -func generateLocationArg(hostInfo HostInfo, path string) (string, error) { - if hostInfo == nil { - return path, nil - } - - ip, err := hostInfo.GetIP() - if err != nil { - return "", err - } - - location := fmt.Sprintf("%s@%s:%s", hostInfo.GetSSHUsername(), ip, path) - return location, nil -} - -func runCmdWithStdIo(cmd exec.Cmd) error { - cmd.Stdin = os.Stdin - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - - return cmd.Run() -} diff --git a/vendor/github.com/docker/machine/commands/scp_test.go b/vendor/github.com/docker/machine/commands/scp_test.go deleted file mode 100644 index 71207f2d..00000000 --- a/vendor/github.com/docker/machine/commands/scp_test.go +++ /dev/null @@ -1,136 +0,0 @@ -package commands - -import ( - "os/exec" - "testing" - - "github.com/stretchr/testify/assert" -) - -type MockHostInfo struct { - name string - ip string - sshUsername string - sshKeyPath string -} - -func (h *MockHostInfo) GetMachineName() string { - return h.name -} - -func (h *MockHostInfo) GetIP() (string, error) { - return h.ip, nil -} - -func (h *MockHostInfo) GetSSHUsername() string { - return h.sshUsername -} - -func (h *MockHostInfo) GetSSHKeyPath() string { - return h.sshKeyPath -} - -type MockHostInfoLoader struct { - hostInfo MockHostInfo -} - -func (l *MockHostInfoLoader) load(name string) (HostInfo, error) { - info := l.hostInfo - info.name = name - return &info, nil -} - -func TestGetInfoForLocalScpArg(t *testing.T) { - host, path, opts, err := getInfoForScpArg("/tmp/foo", nil) - assert.Nil(t, host) - assert.Equal(t, "/tmp/foo", path) - assert.Nil(t, opts) - assert.NoError(t, err) - - host, path, opts, err = getInfoForScpArg("localhost:C:\\path", nil) - assert.Nil(t, host) - assert.Equal(t, "C:\\path", path) - assert.Nil(t, opts) - assert.NoError(t, err) -} - -func TestGetInfoForRemoteScpArg(t *testing.T) { - hostInfoLoader := MockHostInfoLoader{MockHostInfo{ - sshKeyPath: "/fake/keypath/id_rsa", - }} - - host, path, opts, err := getInfoForScpArg("myfunhost:/home/docker/foo", &hostInfoLoader) - assert.Equal(t, "myfunhost", host.GetMachineName()) - assert.Equal(t, "/home/docker/foo", path) - assert.Equal(t, []string{"-i", "/fake/keypath/id_rsa"}, opts) - assert.NoError(t, err) - - host, path, opts, err = getInfoForScpArg("myfunhost:C:\\path", &hostInfoLoader) - assert.Equal(t, "myfunhost", host.GetMachineName()) - assert.Equal(t, "C:\\path", path) - assert.NoError(t, err) -} - -func TestHostLocation(t *testing.T) { - arg, err := generateLocationArg(nil, "/home/docker/foo") - - assert.Equal(t, "/home/docker/foo", arg) - assert.NoError(t, err) -} - -func TestRemoteLocation(t *testing.T) { - hostInfo := MockHostInfo{ - ip: "12.34.56.78", - sshUsername: "root", - } - - arg, err := generateLocationArg(&hostInfo, "/home/docker/foo") - - assert.Equal(t, "root@12.34.56.78:/home/docker/foo", arg) - assert.NoError(t, err) -} - -func TestGetScpCmd(t *testing.T) { - hostInfoLoader := MockHostInfoLoader{MockHostInfo{ - ip: "12.34.56.78", - sshUsername: "root", - sshKeyPath: "/fake/keypath/id_rsa", - }} - - cmd, err := getScpCmd("/tmp/foo", "myfunhost:/home/docker/foo", true, &hostInfoLoader) - - expectedArgs := append( - baseSSHArgs, - "-3", - "-r", - "-i", - "/fake/keypath/id_rsa", - "/tmp/foo", - "root@12.34.56.78:/home/docker/foo", - ) - expectedCmd := exec.Command("/usr/bin/scp", expectedArgs...) - - assert.Equal(t, expectedCmd, cmd) - assert.NoError(t, err) -} - -func TestGetScpCmdWithoutSshKey(t *testing.T) { - hostInfoLoader := MockHostInfoLoader{MockHostInfo{ - ip: "1.2.3.4", - sshUsername: "user", - }} - - cmd, err := getScpCmd("/tmp/foo", "myfunhost:/home/docker/foo", true, &hostInfoLoader) - - expectedArgs := append( - baseSSHArgs, - "-3", - "-r", - "/tmp/foo", - "user@1.2.3.4:/home/docker/foo", - ) - expectedCmd := exec.Command("/usr/bin/scp", expectedArgs...) - - assert.Equal(t, expectedCmd, cmd) - assert.NoError(t, err) -} diff --git a/vendor/github.com/docker/machine/commands/ssh.go b/vendor/github.com/docker/machine/commands/ssh.go deleted file mode 100644 index 3c34174c..00000000 --- a/vendor/github.com/docker/machine/commands/ssh.go +++ /dev/null @@ -1,51 +0,0 @@ -package commands - -import ( - "fmt" - - "github.com/docker/machine/libmachine" - "github.com/docker/machine/libmachine/state" -) - -type errStateInvalidForSSH struct { - HostName string -} - -func (e errStateInvalidForSSH) Error() string { - return fmt.Sprintf("Error: Cannot run SSH command: Host %q is not running", e.HostName) -} - -func cmdSSH(c CommandLine, api libmachine.API) error { - // Check for help flag -- Needed due to SkipFlagParsing - firstArg := c.Args().First() - if firstArg == "-help" || firstArg == "--help" || firstArg == "-h" { - c.ShowHelp() - return nil - } - - target, err := targetHost(c, api) - if err != nil { - return err - } - - host, err := api.Load(target) - if err != nil { - return err - } - - currentState, err := host.Driver.GetState() - if err != nil { - return err - } - - if currentState != state.Running { - return errStateInvalidForSSH{host.Name} - } - - client, err := host.CreateSSHClient() - if err != nil { - return err - } - - return client.Shell(c.Args().Tail()...) -} diff --git a/vendor/github.com/docker/machine/commands/ssh_test.go b/vendor/github.com/docker/machine/commands/ssh_test.go deleted file mode 100644 index ebfa10fd..00000000 --- a/vendor/github.com/docker/machine/commands/ssh_test.go +++ /dev/null @@ -1,111 +0,0 @@ -package commands - -import ( - "testing" - - "github.com/docker/machine/commands/commandstest" - "github.com/docker/machine/drivers/fakedriver" - "github.com/docker/machine/libmachine" - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/host" - "github.com/docker/machine/libmachine/libmachinetest" - "github.com/docker/machine/libmachine/ssh" - "github.com/docker/machine/libmachine/ssh/sshtest" - "github.com/docker/machine/libmachine/state" - "github.com/stretchr/testify/assert" -) - -type FakeSSHClientCreator struct { - client ssh.Client -} - -func (fsc *FakeSSHClientCreator) CreateSSHClient(d drivers.Driver) (ssh.Client, error) { - if fsc.client == nil { - fsc.client = &sshtest.FakeClient{} - } - return fsc.client, nil -} - -func TestCmdSSH(t *testing.T) { - testCases := []struct { - commandLine CommandLine - api libmachine.API - expectedErr error - helpShown bool - clientCreator host.SSHClientCreator - expectedShell []string - }{ - { - commandLine: &commandstest.FakeCommandLine{ - CliArgs: []string{"-h"}, - }, - api: &libmachinetest.FakeAPI{}, - expectedErr: nil, - helpShown: true, - }, - { - commandLine: &commandstest.FakeCommandLine{ - CliArgs: []string{"--help"}, - }, - api: &libmachinetest.FakeAPI{}, - expectedErr: nil, - helpShown: true, - }, - { - commandLine: &commandstest.FakeCommandLine{ - CliArgs: []string{}, - }, - api: &libmachinetest.FakeAPI{}, - expectedErr: ErrNoDefault, - }, - { - commandLine: &commandstest.FakeCommandLine{ - CliArgs: []string{"default", "df", "-h"}, - }, - api: &libmachinetest.FakeAPI{ - Hosts: []*host.Host{ - { - Name: "default", - Driver: &fakedriver.Driver{ - MockState: state.Running, - }, - }, - }, - }, - expectedErr: nil, - clientCreator: &FakeSSHClientCreator{}, - expectedShell: []string{"df", "-h"}, - }, - { - commandLine: &commandstest.FakeCommandLine{ - CliArgs: []string{"default"}, - }, - api: &libmachinetest.FakeAPI{ - Hosts: []*host.Host{ - { - Name: "default", - Driver: &fakedriver.Driver{ - MockState: state.Stopped, - }, - }, - }, - }, - expectedErr: errStateInvalidForSSH{"default"}, - }, - } - - for _, tc := range testCases { - host.SetSSHClientCreator(tc.clientCreator) - - err := cmdSSH(tc.commandLine, tc.api) - assert.Equal(t, err, tc.expectedErr) - - if fcl, ok := tc.commandLine.(*commandstest.FakeCommandLine); ok { - assert.Equal(t, tc.helpShown, fcl.HelpShown) - } - - if fcc, ok := tc.clientCreator.(*FakeSSHClientCreator); ok { - assert.Equal(t, tc.expectedShell, fcc.client.(*sshtest.FakeClient).ActivatedShell) - } - } -} diff --git a/vendor/github.com/docker/machine/commands/start.go b/vendor/github.com/docker/machine/commands/start.go deleted file mode 100644 index 09322f1d..00000000 --- a/vendor/github.com/docker/machine/commands/start.go +++ /dev/null @@ -1,16 +0,0 @@ -package commands - -import ( - "github.com/docker/machine/libmachine" - "github.com/docker/machine/libmachine/log" -) - -func cmdStart(c CommandLine, api libmachine.API) error { - if err := runAction("start", c, api); err != nil { - return err - } - - log.Info("Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.") - - return nil -} diff --git a/vendor/github.com/docker/machine/commands/status.go b/vendor/github.com/docker/machine/commands/status.go deleted file mode 100644 index 6a1c9d72..00000000 --- a/vendor/github.com/docker/machine/commands/status.go +++ /dev/null @@ -1,31 +0,0 @@ -package commands - -import ( - "github.com/docker/machine/libmachine" - "github.com/docker/machine/libmachine/log" -) - -func cmdStatus(c CommandLine, api libmachine.API) error { - if len(c.Args()) > 1 { - return ErrExpectedOneMachine - } - - target, err := targetHost(c, api) - if err != nil { - return err - } - - host, err := api.Load(target) - if err != nil { - return err - } - - currentState, err := host.Driver.GetState() - if err != nil { - log.Errorf("error getting state for host %s: %s", host.Name, err) - } - - log.Info(currentState) - - return nil -} diff --git a/vendor/github.com/docker/machine/commands/stop.go b/vendor/github.com/docker/machine/commands/stop.go deleted file mode 100644 index bd0cd386..00000000 --- a/vendor/github.com/docker/machine/commands/stop.go +++ /dev/null @@ -1,7 +0,0 @@ -package commands - -import "github.com/docker/machine/libmachine" - -func cmdStop(c CommandLine, api libmachine.API) error { - return runAction("stop", c, api) -} diff --git a/vendor/github.com/docker/machine/commands/stop_test.go b/vendor/github.com/docker/machine/commands/stop_test.go deleted file mode 100644 index 76af0955..00000000 --- a/vendor/github.com/docker/machine/commands/stop_test.go +++ /dev/null @@ -1,103 +0,0 @@ -package commands - -import ( - "testing" - - "github.com/docker/machine/commands/commandstest" - "github.com/docker/machine/drivers/fakedriver" - "github.com/docker/machine/libmachine" - "github.com/docker/machine/libmachine/host" - "github.com/docker/machine/libmachine/libmachinetest" - "github.com/docker/machine/libmachine/state" - "github.com/stretchr/testify/assert" -) - -func TestCmdStop(t *testing.T) { - testCases := []struct { - commandLine CommandLine - api libmachine.API - expectedErr error - expectedStates map[string]state.State - }{ - { - commandLine: &commandstest.FakeCommandLine{ - CliArgs: []string{}, - }, - api: &libmachinetest.FakeAPI{ - Hosts: []*host.Host{ - { - Name: "default", - Driver: &fakedriver.Driver{ - MockState: state.Running, - }, - }, - }, - }, - expectedErr: nil, - expectedStates: map[string]state.State{ - "default": state.Stopped, - }, - }, - { - commandLine: &commandstest.FakeCommandLine{ - CliArgs: []string{}, - }, - api: &libmachinetest.FakeAPI{ - Hosts: []*host.Host{ - { - Name: "foobar", - Driver: &fakedriver.Driver{ - MockState: state.Running, - }, - }, - }, - }, - expectedErr: ErrNoDefault, - expectedStates: map[string]state.State{ - "foobar": state.Running, - }, - }, - { - commandLine: &commandstest.FakeCommandLine{ - CliArgs: []string{"machineToStop1", "machineToStop2"}, - }, - api: &libmachinetest.FakeAPI{ - Hosts: []*host.Host{ - { - Name: "machineToStop1", - Driver: &fakedriver.Driver{ - MockState: state.Running, - }, - }, - { - Name: "machineToStop2", - Driver: &fakedriver.Driver{ - MockState: state.Running, - }, - }, - { - Name: "machine", - Driver: &fakedriver.Driver{ - MockState: state.Running, - }, - }, - }, - }, - expectedErr: nil, - expectedStates: map[string]state.State{ - "machineToStop1": state.Stopped, - "machineToStop2": state.Stopped, - "machine": state.Running, - }, - }, - } - - for _, tc := range testCases { - err := cmdStop(tc.commandLine, tc.api) - assert.Equal(t, tc.expectedErr, err) - - for hostName, expectedState := range tc.expectedStates { - assert.Equal(t, expectedState, libmachinetest.State(tc.api, hostName)) - } - } -} diff --git a/vendor/github.com/docker/machine/commands/upgrade.go b/vendor/github.com/docker/machine/commands/upgrade.go deleted file mode 100644 index 84282f16..00000000 --- a/vendor/github.com/docker/machine/commands/upgrade.go +++ /dev/null @@ -1,7 +0,0 @@ -package commands - -import "github.com/docker/machine/libmachine" - -func cmdUpgrade(c CommandLine, api libmachine.API) error { - return runAction("upgrade", c, api) -} diff --git a/vendor/github.com/docker/machine/commands/url.go b/vendor/github.com/docker/machine/commands/url.go deleted file mode 100644 index 8552e14b..00000000 --- a/vendor/github.com/docker/machine/commands/url.go +++ /dev/null @@ -1,32 +0,0 @@ -package commands - -import ( - "fmt" - - "github.com/docker/machine/libmachine" -) - -func cmdURL(c CommandLine, api libmachine.API) error { - if len(c.Args()) > 1 { - return ErrExpectedOneMachine - } - - target, err := targetHost(c, api) - if err != nil { - return err - } - - host, err := api.Load(target) - if err != nil { - return err - } - - url, err := host.URL() - if err != nil { - return err - } - - fmt.Println(url) - - return nil -} diff --git a/vendor/github.com/docker/machine/commands/url_test.go b/vendor/github.com/docker/machine/commands/url_test.go deleted file mode 100644 index 02f72689..00000000 --- a/vendor/github.com/docker/machine/commands/url_test.go +++ /dev/null @@ -1,57 +0,0 @@ -package commands - -import ( - "testing" - - "github.com/docker/machine/commands/commandstest" - "github.com/docker/machine/drivers/fakedriver" - "github.com/docker/machine/libmachine/host" - "github.com/docker/machine/libmachine/libmachinetest" - "github.com/docker/machine/libmachine/state" - "github.com/stretchr/testify/assert" -) - -func TestCmdURLMissingMachineName(t *testing.T) { - commandLine := &commandstest.FakeCommandLine{} - api := &libmachinetest.FakeAPI{} - - err := cmdURL(commandLine, api) - - assert.Equal(t, ErrNoDefault, err) -} - -func TestCmdURLTooManyNames(t *testing.T) { - commandLine := &commandstest.FakeCommandLine{ - CliArgs: []string{"machineToRemove1", "machineToRemove2"}, - } - api := &libmachinetest.FakeAPI{} - - err := cmdURL(commandLine, api) - - assert.EqualError(t, err, "Error: Expected one machine name as an argument") -} - -func TestCmdURL(t *testing.T) { - commandLine := &commandstest.FakeCommandLine{ - CliArgs: []string{"machine"}, - } - api := &libmachinetest.FakeAPI{ - Hosts: []*host.Host{ - { - Name: "machine", - Driver: &fakedriver.Driver{ - MockState: state.Running, - MockIP: "120.0.0.1", - }, - }, - }, - } - - stdoutGetter := commandstest.NewStdoutGetter() - defer stdoutGetter.Stop() - - err := cmdURL(commandLine, api) - - assert.NoError(t, err) - assert.Equal(t, "tcp://120.0.0.1:2376\n", stdoutGetter.Output()) -} diff --git a/vendor/github.com/docker/machine/commands/version.go b/vendor/github.com/docker/machine/commands/version.go deleted file mode 100644 index a1a53904..00000000 --- a/vendor/github.com/docker/machine/commands/version.go +++ /dev/null @@ -1,40 +0,0 @@ -package commands - -import ( - "fmt" - - "io" - "os" - - "github.com/docker/machine/libmachine" - "github.com/docker/machine/libmachine/mcndockerclient" -) - -func cmdVersion(c CommandLine, api libmachine.API) error { - return printVersion(c, api, os.Stdout) -} - -func printVersion(c CommandLine, api libmachine.API, out io.Writer) error { - if len(c.Args()) == 0 { - c.ShowVersion() - return nil - } - - if len(c.Args()) != 1 { - return ErrExpectedOneMachine - } - - host, err := api.Load(c.Args().First()) - if err != nil { - return err - } - - version, err := mcndockerclient.DockerVersion(host) - if err != nil { - return err - } - - fmt.Fprintln(out, version) - - return nil -} diff --git a/vendor/github.com/docker/machine/commands/version_test.go b/vendor/github.com/docker/machine/commands/version_test.go deleted file mode 100644 index 67a57c57..00000000 --- a/vendor/github.com/docker/machine/commands/version_test.go +++ /dev/null @@ -1,89 +0,0 @@ -package commands - -import ( - "errors" - "testing" - - "bytes" - - "github.com/docker/machine/commands/commandstest" - "github.com/docker/machine/libmachine/host" - "github.com/docker/machine/libmachine/libmachinetest" - "github.com/docker/machine/libmachine/mcndockerclient" - "github.com/stretchr/testify/assert" -) - -func TestCmdVersion(t *testing.T) { - commandLine := &commandstest.FakeCommandLine{} - api := &libmachinetest.FakeAPI{} - - err := cmdVersion(commandLine, api) - - assert.True(t, commandLine.VersionShown) - assert.NoError(t, err) -} - -func TestCmdVersionTooManyNames(t *testing.T) { - commandLine := &commandstest.FakeCommandLine{ - CliArgs: []string{"machine1", "machine2"}, - } - api := &libmachinetest.FakeAPI{} - - err := cmdVersion(commandLine, api) - - assert.EqualError(t, err, "Error: Expected one machine name as an argument") -} - -func TestCmdVersionNotFound(t *testing.T) { - commandLine := &commandstest.FakeCommandLine{ - CliArgs: []string{"unknown"}, - } - api := &libmachinetest.FakeAPI{} - - err := cmdVersion(commandLine, api) - - assert.EqualError(t, err, `Host does not exist: "unknown"`) -} - -func TestCmdVersionOnHost(t *testing.T) { - defer func(versioner mcndockerclient.DockerVersioner) { mcndockerclient.CurrentDockerVersioner = versioner }(mcndockerclient.CurrentDockerVersioner) - mcndockerclient.CurrentDockerVersioner = &mcndockerclient.FakeDockerVersioner{Version: "1.9.1"} - - commandLine := &commandstest.FakeCommandLine{ - CliArgs: []string{"machine"}, - } - api := &libmachinetest.FakeAPI{ - Hosts: []*host.Host{ - { - Name: "machine", - }, - }, - } - - out := &bytes.Buffer{} - err := printVersion(commandLine, api, out) - - assert.NoError(t, err) - assert.Equal(t, "1.9.1\n", out.String()) -} - -func TestCmdVersionFailure(t *testing.T) { - defer func(versioner mcndockerclient.DockerVersioner) { mcndockerclient.CurrentDockerVersioner = versioner }(mcndockerclient.CurrentDockerVersioner) - mcndockerclient.CurrentDockerVersioner = &mcndockerclient.FakeDockerVersioner{Err: errors.New("connection failure")} - - commandLine := &commandstest.FakeCommandLine{ - CliArgs: []string{"machine"}, - } - api := &libmachinetest.FakeAPI{ - Hosts: []*host.Host{ - { - Name: "machine", - }, - }, - } - - out := &bytes.Buffer{} - err := printVersion(commandLine, api, out) - - assert.EqualError(t, err, "connection failure") -} diff --git a/vendor/github.com/docker/machine/contrib/completion/.gitignore b/vendor/github.com/docker/machine/contrib/completion/.gitignore deleted file mode 100644 index b9d4dad0..00000000 --- a/vendor/github.com/docker/machine/contrib/completion/.gitignore +++ /dev/null @@ -1 +0,0 @@ -!docker-machine* diff --git a/vendor/github.com/docker/machine/contrib/completion/bash/docker-machine-prompt.bash b/vendor/github.com/docker/machine/contrib/completion/bash/docker-machine-prompt.bash deleted file mode 100644 index 0a6e43a8..00000000 --- a/vendor/github.com/docker/machine/contrib/completion/bash/docker-machine-prompt.bash +++ /dev/null @@ -1,47 +0,0 @@ -# -# bash prompt support for docker-machine -# -# This script allows you to see the active machine in your bash prompt. -# -# To enable: -# 1a. Copy this file somewhere and source it in your .bashrc -# source /some/where/docker-machine-prompt.bash -# 1b. Alternatively, just copy this file into into /etc/bash_completion.d -# 2. Change your PS1 to call __docker-machine-ps1 as command-substitution -# PS1='[\u@\h \W$(__docker_machine_ps1 " [%s]")]\$ ' -# -# Configuration: -# -# DOCKER_MACHINE_PS1_SHOWSTATUS -# When set, the machine status is indicated in the prompt. This can be slow, -# so use with care. -# - -__docker_machine_ps1 () { - local format=${1:- [%s]} - if test ${DOCKER_MACHINE_NAME}; then - local status - if test ${DOCKER_MACHINE_PS1_SHOWSTATUS:-false} = true; then - status=$(docker-machine status ${DOCKER_MACHINE_NAME}) - case ${status} in - Running) - status=' R' - ;; - Stopping) - status=' R->S' - ;; - Starting) - status=' S->R' - ;; - Error|Timeout) - status=' E' - ;; - *) - # Just consider everything elase as 'stopped' - status=' S' - ;; - esac - fi - printf -- "${format}" "${DOCKER_MACHINE_NAME}${status}" - fi -} diff --git a/vendor/github.com/docker/machine/contrib/completion/bash/docker-machine-wrapper.bash b/vendor/github.com/docker/machine/contrib/completion/bash/docker-machine-wrapper.bash deleted file mode 100644 index 89aabfa3..00000000 --- a/vendor/github.com/docker/machine/contrib/completion/bash/docker-machine-wrapper.bash +++ /dev/null @@ -1,56 +0,0 @@ -# -# Function wrapper to docker-machine that adds a use subcommand. -# -# The use subcommand runs `eval "$(docker-machine env [args])"`, which is a lot -# less typing. -# -# To enable: -# 1a. Copy this file somewhere and source it in your .bashrc -# source /some/where/docker-machine-wrapper.bash -# 1b. Alternatively, just copy this file into into /etc/bash_completion.d -# -# Configuration: -# -# DOCKER_MACHINE_WRAPPED -# When set to a value other than true, this will disable the alias wrapper -# alias for docker-machine. This is useful if you don't want the wrapper, -# but it is installed by default by your installation. -# - -: ${DOCKER_MACHINE_WRAPPED:=true} - -__docker_machine_wrapper () { - if [[ "$1" == use ]]; then - # Special use wrapper - shift 1 - case "$1" in - -h|--help|"") - cat < /dev/null; then - ${completion_func} - fi - - return 0 -} - -complete -F _docker_machine docker-machine diff --git a/vendor/github.com/docker/machine/contrib/completion/zsh/_docker-machine b/vendor/github.com/docker/machine/contrib/completion/zsh/_docker-machine deleted file mode 100644 index 07909a89..00000000 --- a/vendor/github.com/docker/machine/contrib/completion/zsh/_docker-machine +++ /dev/null @@ -1,358 +0,0 @@ -#compdef docker-machine -# Description -# ----------- -# zsh completion for docker-machine -# https://github.com/leonhartX/docker-machine-zsh-completion -# ------------------------------------------------------------------------- -# Version -# ------- -# 0.1.1 -# ------------------------------------------------------------------------- -# Authors -# ------- -# * Ke Xu -# ------------------------------------------------------------------------- -# Inspiration -# ----------- -# * @sdurrheimer docker-compose-zsh-completion https://github.com/sdurrheimer/docker-compose-zsh-completion -# * @ilkka _docker-machine - - -__docker-machine_get_hosts() { - [[ $PREFIX = -* ]] && return 1 - local state - declare -a hosts - state=$1; shift - if [[ $state != all ]]; then - hosts=(${(f)"$(_call_program commands docker-machine ls -q --filter state=$state)"}) - else - hosts=(${(f)"$(_call_program commands docker-machine ls -q)"}) - fi - _describe 'host' hosts "$@" && ret=0 - return ret -} - -__docker-machine_hosts_with_state() { - declare -a hosts - hosts=(${(f)"$(_call_program commands docker-machine ls -f '{{.Name}}\:{{.DriverName}}\({{.State}}\)\ {{.URL}}')"}) - _describe 'host' hosts -} - -__docker-machine_hosts_all() { - __docker-machine_get_hosts all "$@" -} - -__docker-machine_hosts_running() { - __docker-machine_get_hosts Running "$@" -} - -__docker-machine_get_swarm() { - declare -a swarms - swarms=(${(f)"$(_call_program commands docker-machine ls -f {{.Swarm}} | awk '{print $1}')"}) - _describe 'swarm' swarms -} - -__docker-machine_hosts_and_files() { - _alternative "hosts:host:__docker-machine_hosts_all -qS ':'" 'files:files:_path_files' -} - -__docker-machine_filters() { - [[ $PREFIX = -* ]] && return 1 - integer ret=1 - - if compset -P '*='; then - case "${${words[-1]%=*}#*=}" in - (driver) - _describe -t driver-filter-opts "driver filter" opts_driver && ret=0 - ;; - (swarm) - __docker-machine_get_swarm && ret=0 - ;; - (state) - opts_state=('Running' 'Paused' 'Saved' 'Stopped' 'Stopping' 'Starting' 'Error') - _describe -t state-filter-opts "state filter" opts_state && ret=0 - ;; - (name) - __docker-machine_hosts_all && ret=0 - ;; - (label) - _message 'label' && ret=0 - ;; - *) - _message 'value' && ret=0 - ;; - esac - else - opts=('driver' 'swarm' 'state' 'name' 'label') - _describe -t filter-opts "filter" opts -qS "=" && ret=0 - fi - return ret -} - -__get_swarm_discovery() { - declare -a masters serivces - local service - services=() - masters=($(docker-machine ls -f {{.Swarm}} |grep '(master)' |awk '{print $1}')) - for master in $masters; do - service=${${${(f)"$(_call_program commands docker-machine inspect -f '{{.HostOptions.SwarmOptions.Discovery}}:{{.Name}}' $master)"}/:/\\:}} - services=($services $service) - done - _describe -t services "swarm service" services && ret=0 - return ret -} - -__get_create_argument() { - typeset -g docker_machine_driver - if [[ CURRENT -le 2 ]]; then - docker_machine_driver="none" - elif [[ CURRENT > 2 && $words[CURRENT-2] = '-d' || $words[CURRENT-2] = '--driver' ]]; then - docker_machine_driver=$words[CURRENT-1] - elif [[ $words[CURRENT-1] =~ '^(-d|--driver)=' ]]; then - docker_machine_driver=${${words[CURRENT-1]}/*=/} - fi - local driver_opt_cmd - local -a opts_provider opts_common opts_read_argument - opts_read_argument=( - ": :->argument" - ) - opts_common=( - $opts_help \ - '(--driver -d)'{--driver=,-d=}'[Driver to create machine with]:dirver:->driver-option' \ - '--engine-install-url=[Custom URL to use for engine installation]:url' \ - '*--engine-opt=[Specify arbitrary flags to include with the created engine in the form flag=value]:flag' \ - '*--engine-insecure-registry=[Specify insecure registries to allow with the created engine]:registry' \ - '*--engine-registry-mirror=[Specify registry mirrors to use]:mirror' \ - '*--engine-label=[Specify labels for the created engine]:label' \ - '--engine-storage-driver=[Specify a storage driver to use with the engine]:storage-driver:->storage-driver-option' \ - '*--engine-env=[Specify environment variables to set in the engine]:environment' \ - '--swarm[Configure Machine with Swarm]' \ - '--swarm-image=[Specify Docker image to use for Swarm]:image' \ - '--swarm-master[Configure Machine to be a Swarm master]' \ - '--swarm-discovery=[Discovery service to use with Swarm]:service:->swarm-service' \ - '--swarm-strategy=[Define a default scheduling strategy for Swarm]:strategy:(spread binpack random)' \ - '*--swarm-opt=[Define arbitrary flags for swarm]:flag' \ - '*--swarm-join-opt=[Define arbitrary flags for Swarm join]:flag' \ - '--swarm-host=[ip/socket to listen on for Swarm master]:host' \ - '--swarm-addr=[addr to advertise for Swarm (default: detect and use the machine IP)]:address' \ - '--swarm-experimental[Enable Swarm experimental features]' \ - '*--tls-san=[Support extra SANs for TLS certs]:option' - ) - driver_opt_cmd="docker-machine create -d $docker_machine_driver | grep $docker_machine_driver | sed -e 's/\(--.*\)\ *\[\1[^]]*\]/*\1/g' -e 's/\(\[[^]]*\)/\\\\\\1\\\\/g' -e 's/\".*\"\(.*\)/\1/g' | awk '{printf \"%s[\", \$1; for(i=2;i<=NF;i++) {printf \"%s \", \$i}; print \"]\"}'" - if [[ $docker_machine_driver != "none" ]]; then - opts_provider=(${(f)"$(_call_program commands $driver_opt_cmd)"}) - _arguments \ - $opts_provider \ - $opts_read_argument \ - $opts_common && ret=0 - else - _arguments $opts_common && ret=0 - fi - case $state in - (driver-option) - _describe -t driver-option "driver" opts_driver && ret=0 - ;; - (storage-driver-option) - _describe -t storage-driver-option "storage driver" opts_storage_driver && ret=0 - ;; - (swarm-service) - __get_swarm_discovery && ret=0 - ;; - (argument) - ret=0 - ;; - esac - return ret -} - - -__docker-machine_subcommand() { - local opts_help="(- :)"{-h,--help}"[Print usage]" - local -a opts_only_host opts_driver opts_storage_driver opts_stragery - opts_only_host=( - "$opts_help" - "*:host:__docker-machine_hosts_all" - ) - opts_driver=('amazonec2' 'azure' 'digitalocean' 'exoscale' 'generic' 'google' 'hyperv' 'none' 'openstack' 'rackspace' 'softlayer' 'virtualbox' 'vmwarefusion' 'vmwarevcloudair' 'vmwarevsphere') - opts_storage_driver=('overlay' 'aufs' 'btrfs' 'devicemapper' 'vfs' 'zfs') - integer ret=1 - - case "$words[1]" in - (active) - _arguments \ - $opts_help \ - '(--timeout -t)'{--timeout=,-t=}'[Timeout in seconds, default to 10s]:seconds' && ret=0 - ;; - (config) - _arguments \ - $opts_help \ - '--swarm[Display the Swarm config instead of the Docker daemon]' \ - "*:host:__docker-machine_hosts_all" && ret=0 - ;; - (create) - __get_create_argument - ;; - (env) - _arguments \ - $opts_help \ - '--swarm[Display the Swarm config instead of the Docker daemon]' \ - '--shell=[Force environment to be configured for a specified shell: \[fish, cmd, powershell\], default is auto-detect]:shell' \ - '(--unset -u)'{--unset,-u}'[Unset variables instead of setting them]' \ - '--no-proxy[Add machine IP to NO_PROXY environment variable]' \ - '*:host:__docker-machine_hosts_running' && ret=0 - ;; - (help) - _arguments ':subcommand:__docker-machine_commands' && ret=0 - ;; - (inspect) - _arguments \ - $opts_help \ - '(--format -f)'{--format=,-f=}'[Format the output using the given go template]:template' \ - '*:host:__docker-machine_hosts_all' && ret=0 - ;; - (ip) - _arguments \ - $opts_help \ - '*:host:__docker-machine_hosts_running' && ret=0 - ;; - (kill) - _arguments \ - $opts_help \ - '*:host:__docker-machine_hosts_with_state' && ret=0 - ;; - (ls) - _arguments \ - $opts_help \ - '(--quiet -q)'{--quiet,-q}'[Enable quiet mode]' \ - '*--filter=[Filter output based on conditions provided]:filter:->filter-options' \ - '(--timeout -t)'{--timeout=,-t=}'[Timeout in seconds, default to 10s]:seconds' \ - '(--format -f)'{--format=,-f=}'[Pretty-print machines using a Go template]:template' && ret=0 - case $state in - (filter-options) - __docker-machine_filters && ret=0 - ;; - esac - ;; - (provision) - _arguments $opts_only_host && ret=0 - ;; - (regenerate-certs) - _arguments \ - $opts_help \ - '(--force -f)'{--force,-f}'[Force rebuild and do not prompt]' \ - '*:host:__docker-machine_hosts_all' && ret=0 - ;; - (restart) - _arguments \ - $opts_help \ - '*:host:__docker-machine_hosts_with_state' && ret=0 - ;; - (rm) - _arguments \ - $opts_help \ - '(--force -f)'{--force,-f}'[Remove local configuration even if machine cannot be removed, also implies an automatic yes (`-y`)]' \ - '-y[Assumes automatic yes to proceed with remove, without prompting further user confirmation]' \ - '*:host:__docker-machine_hosts_with_state' && ret=0 - ;; - (scp) - _arguments \ - $opts_help \ - '(--recursive -r)'{--recursive,-r}'[Copy files recursively (required to copy directories))]' \ - '*:files:__docker-machine_hosts_and_files' && ret=0 - ;; - (ssh) - _arguments \ - $opts_help \ - '*:host:__docker-machine_hosts_running' && ret=0 - ;; - (start) - _arguments \ - $opts_help \ - '*:host:__docker-machine_hosts_with_state' && ret=0 - ;; - (status) - _arguments $opts_only_host && ret=0 - ;; - (stop) - _arguments \ - $opts_help \ - '*:host:__docker-machine_hosts_with_state' && ret=0 - ;; - (upgrade) - _arguments $opts_only_host && ret=0 - ;; - (url) - _arguments \ - $opts_help \ - '*:host:__docker-machine_hosts_running' && ret=0 - ;; - esac - - return ret -} - - -__docker-machine_commands() { - local cache_policy - - zstyle -s ":completion:${curcontext}:" cache-policy cache_policy - if [[ -z "$cache_policy" ]]; then - zstyle ":completion:${curcontext}:" cache-policy __docker-machine_caching_policy - fi - - if ( [[ ${+_docker_machine_subcommands} -eq 0 ]] || _cache_invalid docker_machine_subcommands) \ - && ! _retrieve_cache docker_machine_subcommands; - then - local -a lines - lines=(${(f)"$(_call_program commands docker-machine 2>&1)"}) - _docker_machine_subcommands=(${${${lines[$((${lines[(i)Commands:]} + 1)),${lines[(I) *]}]}## #}/$'\t'##/:}) - (( $#_docker_machine_subcommands > 0 )) && _store_cache docker_machine_subcommands _docker_machine_subcommands - fi - _describe -t docker-machine-commands "docker-machine command" _docker_machine_subcommands -} - -__docker-machine_caching_policy() { - oldp=( "$1"(Nmh+1) ) - (( $#oldp )) -} - -_docker-machine() { - if [[ $service != docker-machine ]]; then - _call_function - _$service - return - fi - - local curcontext="$curcontext" state line - integer ret=1 - typeset -A opt_args - - _arguments -C \ - "(- :)"{-h,--help}"[Show help]" \ - "(-D --debug)"{-D,--debug}"[Enable debug mode]" \ - '(-s --stroage-path)'{-s,--storage-path}'[Configures storage path]:file:_files' \ - '--tls-ca-cert[CA to verify remotes against]:file:_files' \ - '--tls-ca-key[Private key to generate certificates]:file:_files' \ - '--tls-client-cert[Client cert to use for TLS]:file:_files' \ - '--tls-client-key[Private key used in client TLS auth]:file:_files' \ - '--github-api-token[Token to use for requests to the Github API]' \ - '--native-ssh[Use the native (Go-based) SSH implementation.]' \ - '--bugsnag-api-token[BugSnag API token for crash reporting]' \ - '(- :)'{-v,--version}'[Print the version]' \ - "(-): :->command" \ - "(-)*:: :->option-or-argument" && ret=0 - - case $state in - (command) - __docker-machine_commands && ret=0 - ;; - (option-or-argument) - curcontext=${curcontext%:*:*}:docker-machine-$words[1]: - __docker-machine_subcommand && ret=0 - ret=0 - ;; - esac - - return ret -} - -_docker-machine "$@" diff --git a/vendor/github.com/docker/machine/doc.go b/vendor/github.com/docker/machine/doc.go deleted file mode 100644 index 6ae33122..00000000 --- a/vendor/github.com/docker/machine/doc.go +++ /dev/null @@ -1,4 +0,0 @@ -// Package machine defines interfaces to manage a variety of docker instances -// deployed on different backends (VMs, baremetal). -// The goal is to allow users get from zero to docker as fast as possible. -package machine diff --git a/vendor/github.com/docker/machine/docs/AVAILABLE_DRIVER_PLUGINS.md b/vendor/github.com/docker/machine/docs/AVAILABLE_DRIVER_PLUGINS.md deleted file mode 100644 index e3606165..00000000 --- a/vendor/github.com/docker/machine/docs/AVAILABLE_DRIVER_PLUGINS.md +++ /dev/null @@ -1,46 +0,0 @@ - - -# Available driver plugins - -This document is intended to act as a reference for the available 3rd-party -driver plugins available in the ecosystem beyond the core Machine drivers. If -you have created a Docker Machine driver, we highly encourage you to submit a -pull request adding the relevant information to the list. Submitting your -driver here will allow others to discover it and the core Machine team to keep -you informed of upstream changes. - -**NOTE**: The linked repositories are not maintained by or formally associated -with Docker Inc. Use 3rd party plugins at your own risk. - -| Name | Repository | Maintainer GitHub Handle | Maintainer Email | -| ---------------------- | ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | -| 1&1 Cloud Server | | [StackPointCloud, Inc.](https://github.com/stackpointcloud) | sdk@1and1.com | -| Aliyun ECS | | [denverdino](https://github.com/denverdino)
[menglingwei](https://github.com/menglingwei) | denverdino@gmail.com
v.con@qq.com | -| Amazon Cloud Formation | | [Jeff Ellin](https://github.com/jeffellin) | acf@ellin.com | -| BrightBox | | [NeilW](https://github.com/NeilW) | neil@aldur.co.uk | -| CenturyLink Cloud | | [ack](https://github.com/ack) | albert.choi@ctl.io | -| Citrix XenServer | | [robertbreker](https://github.com/robertbreker)
[phusl](https://github.com/phusl) | robert.breker@citrix.com
phus.lu@citrix.com | -| Docker-In-Docker | | [nathanleclaire](https://github.com/nathanleclaire) | nathan.leclaire@gmail.com | -| HPE OneView | | [wenlock](https://github.com/wenlock)
[miqui](https://github.com/miqui) | wenlock@hpe.com
miqui@hpe.com | -| KVM | | [dhiltgen](https://github.com/dhiltgen) | daniel.hiltgen@docker.com | -| OpenNebula | | [jmelis](https://github.com/jmelis) | jmelis@opennebula.org | -| OVH Cloud | | [yadutaf](https://github.com/yadutaf) | jt@yadutaf.fr | -| Packet | | [betawaffle](https://github.com/betawaffle) | andy@packet.net | -| ProfitBricks | | [StackPointCloud, Inc.](https://github.com/stackpointcloud) | legal90@gmail.com | -| Parallels Desktop for Mac | | [legal90](https://github.com/legal90) | legal90@gmail.com | -| RackHD | | [kacole2](https://github.com/kacole2) | kendrick.coleman@emc.com | -| SAKURA CLOUD | | [yamamoto-febc](https://github.com/yamamoto-febc) | yamamoto.febc@gmail.com | -| Scaleway | | [scaleway](https://github.com/scaleway) | opensource@scaleway.com | -| Skytap | | [dantjones](https://github.com/dantjones) | djones@skytap.com | -| Ubiquity Hosting | | [Justin Canington](https://github.com/justacan)
[Andrew Ayers](https://github.com/andrew-ayers) | justin.canington@nobistech.net
andrew.ayers@nobistech.net | -| UCloud | | [xiaohui](https://github.com/xiaohui) | xiaohui.zju@gmail.com | -| VMWare Workstation | | [pecigonzalo](https://github.com/pecigonzalo) | pecigonzalo@outlook.com | -| VULTR | | [janeczku](https://github.com/janeczku) | jb@festplatte.eu.org | -| xhyve | | [zchee](https://github.com/zchee) | zchee.io@gmail.com | diff --git a/vendor/github.com/docker/machine/docs/DRIVER_SPEC.md b/vendor/github.com/docker/machine/docs/DRIVER_SPEC.md deleted file mode 100644 index 4a14465a..00000000 --- a/vendor/github.com/docker/machine/docs/DRIVER_SPEC.md +++ /dev/null @@ -1,149 +0,0 @@ - - -# Machine Driver Specification v1 - -This is the standard configuration and specification for version 1 drivers. - -Along with defining how a driver should provision instances, the standard -also discusses behavior and operations Machine expects. - -# Requirements - -The following are required for a driver to be included as a supported driver -for Docker Machine. - -## Base Operating System - -The provider must offer a base operating system supported by the Docker Engine. - -Currently Machine requires Ubuntu for non-Boot2Docker machines. This will -change in the future. - -## API Access - -We prefer accessing the provider service via HTTP APIs and strongly recommend -using those over external executables. For example, using the Amazon EC2 API -instead of the EC2 command line tools. If in doubt, contact a project -maintainer. - -## SSH - -The provider must offer SSH access to control the instance. This does not -have to be public, but must offer it as Machine relies on SSH for system -level maintenance. - -# Provider Operations - -The following instance operations should be supported by the provider. - -## Create - -`Create` will launch a new instance and make sure it is ready for provisioning. -This includes setting up the instance with the proper SSH keys and making -sure SSH is available including any access control (firewall). This should -return an error on failure. - -## Remove - -`Remove` will remove the instance from the provider. This should remove the -instance and any associated services or artifacts that were created as part -of the instance including keys and access groups. This should return an -error on failure. - -## Start - -`Start` will start a stopped instance. This should ensure the instance is -ready for operations such as SSH and Docker. This should return an error on -failure. - -## Stop - -`Stop` will stop a running instance. This should ensure the instance is -stopped and return an error on failure. - -## Kill - -`Kill` will forcibly stop a running instance. This should ensure the instance -is stopped and return an error on failure. - -## Restart - -`Restart` will restart a running instance. This should ensure the instance -is ready for operations such as SSH and Docker. This should return an error -on failure. - -## Status - -`Status` will return the state of the instance. This should return the -current state of the instance (running, stopped, error, etc). This should -return an error on failure. - -# Testing - -Testing is strongly recommended for drivers. Unit tests are preferred as well -as inclusion into the [integration tests](https://github.com/docker/machine#integration-tests). - -# Maintaining - -Driver plugin maintainers are encouraged to host their own repo and distribute -the driver plugins as executables. - -# Implementation - -The following describes what is needed to create a Machine Driver. The driver -interface has methods that must be implemented for all drivers. These include -operations such as `Create`, `Remove`, `Start`, `Stop` etc. - -For details see the [Driver Interface](https://github.com/docker/machine/blob/master/drivers/drivers.go#L24). - -To provide this functionality, you should embed the `drivers.BaseDriver` struct, similar to the following: - - type Driver struct { - *drivers.BaseDriver - DriverSpecificField string - } - -Each driver must then use an `init` func to "register" the driver: - - func init() { - drivers.Register("drivername", &drivers.RegisteredDriver{ - New: NewDriver, - GetCreateFlags: GetCreateFlags, - }) - } - -## Flags - -Driver flags are used for provider specific customizations. To add flags, use -a `GetCreateFlags` func. For example: - - func GetCreateFlags() []cli.Flag { - return []cli.Flag{ - cli.StringFlag{ - EnvVar: "DRIVERNAME_TOKEN", - Name: "drivername-token", - Usage: "Provider access token", - - }, - cli.StringFlag{ - EnvVar: "DRIVERNAME_IMAGE", - Name: "drivername-image", - Usage: "Provider Image", - Value: "ubuntu-14-04-x64", - }, - } - } - -## Examples - -You can reference the existing [Drivers](https://github.com/docker/machine/tree/master/drivers) -as well. diff --git a/vendor/github.com/docker/machine/docs/Dockerfile b/vendor/github.com/docker/machine/docs/Dockerfile deleted file mode 100644 index 3884418d..00000000 --- a/vendor/github.com/docker/machine/docs/Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -FROM docs/base:oss -MAINTAINER Docker Docs - -env PROJECT=machine - -# To get the git info for this repo -COPY . /src -RUN rm -rf /docs/content/$PROJECT/ -COPY . /docs/content/$PROJECT/ diff --git a/vendor/github.com/docker/machine/docs/Makefile b/vendor/github.com/docker/machine/docs/Makefile deleted file mode 100644 index 5a83bf6b..00000000 --- a/vendor/github.com/docker/machine/docs/Makefile +++ /dev/null @@ -1,38 +0,0 @@ -.PHONY: all default docs docs-build docs-shell shell test - -# to allow `make DOCSDIR=docs docs-shell` (to create a bind mount in docs) -DOCS_MOUNT := $(if $(DOCSDIR),-v $(CURDIR)/$(DOCSDIR):/$(DOCSDIR)) - -# to allow `make DOCSPORT=9000 docs` -DOCSPORT := 8000 - -# Get the IP ADDRESS -DOCKER_IP=$(shell python -c "import urlparse ; print urlparse.urlparse('$(DOCKER_HOST)').hostname or ''") -HUGO_BASE_URL=$(shell test -z "$(DOCKER_IP)" && echo localhost || echo "$(DOCKER_IP)") -HUGO_BIND_IP=0.0.0.0 - -GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD 2>/dev/null) -GIT_BRANCH_CLEAN := $(shell echo $(GIT_BRANCH) | sed -e "s/[^[:alnum:]]/-/g") -DOCKER_DOCS_IMAGE := docker-docs$(if $(GIT_BRANCH_CLEAN),:$(GIT_BRANCH_CLEAN)) - -DOCKER_RUN_DOCS := docker run --rm -it $(DOCS_MOUNT) -e AWS_S3_BUCKET -e NOCACHE - -# for some docs workarounds (see below in "docs-build" target) -GITCOMMIT := $(shell git rev-parse --short HEAD 2>/dev/null) - -default: docs - -docs: docs-build - $(DOCKER_RUN_DOCS) -p $(if $(DOCSPORT),$(DOCSPORT):)8000 -e DOCKERHOST "$(DOCKER_DOCS_IMAGE)" hugo server --port=$(DOCSPORT) --baseUrl=$(HUGO_BASE_URL) --bind=$(HUGO_BIND_IP) - -docs-draft: docs-build - $(DOCKER_RUN_DOCS) -p $(if $(DOCSPORT),$(DOCSPORT):)8000 -e DOCKERHOST "$(DOCKER_DOCS_IMAGE)" hugo server --buildDrafts="true" --port=$(DOCSPORT) --baseUrl=$(HUGO_BASE_URL) --bind=$(HUGO_BIND_IP) - -docs-shell: docs-build - $(DOCKER_RUN_DOCS) -p $(if $(DOCSPORT),$(DOCSPORT):)8000 "$(DOCKER_DOCS_IMAGE)" bash - -test: docs-build - $(DOCKER_RUN_DOCS) "$(DOCKER_DOCS_IMAGE)" - -docs-build: - docker build -t "$(DOCKER_DOCS_IMAGE)" . diff --git a/vendor/github.com/docker/machine/docs/README.md b/vendor/github.com/docker/machine/docs/README.md deleted file mode 100644 index 94e48ac4..00000000 --- a/vendor/github.com/docker/machine/docs/README.md +++ /dev/null @@ -1,89 +0,0 @@ - - -# Contributing to the Docker Machine documentation - -The documentation in this directory is part of the [this documentation](https://docs.docker.com). Docker uses [the Hugo static generator](http://gohugo.io/overview/introduction/) to convert project Markdown files to a static HTML site. - -You don't need to be a Hugo expert to contribute to the machine documentation. If you are familiar with Markdown, you can modify the content in the `docs` files. - -If you want to add a new file or change the location of the document in the menu, you do need to know a little more. If you want the detail of contributing, [use our contributor guide](http://docs.docker.com/project/make-a-contribution/). - -## Documentation contributing workflow - -1. Edit a Markdown file in the tree. - -2. Save your changes. - -3. Make sure all your changes maintain an 80 character line wrap. - - All check lines you've written. Don't wrap content you didn't change material. - -4. Make sure you are in the `docs` subdirectory. - -5. Build the documentation. - - $ make docs - ---> ffcf3f6c4e97 - Removing intermediate container a676414185e8 - Successfully built ffcf3f6c4e97 - docker run --rm -it -e AWS_S3_BUCKET -e NOCACHE -p 8000:8000 -e DOCKERHOST "docs-base:test-tooling" hugo server --port=8000 --baseUrl=192.168.59.103 --bind=0.0.0.0 - ERROR: 2015/06/13 MenuEntry's .Url is deprecated and will be removed in Hugo 0.15. Use .URL instead. - 0 of 4 drafts rendered - 0 future content - 12 pages created - 0 paginator pages created - 0 tags created - 0 categories created - in 55 ms - Serving pages from /docs/public - Web Server is available at http://0.0.0.0:8000/ - Press Ctrl+C to stop - -6. Open the available server in your browser. - - The documentation server has the complete menu but only the Docker machine - documentation resolves. You can't access the other project docs from this - localized build. - -## Tips on Hugo metadata and menu positioning - -The top of each Docker machine documentation file contains TOML metadata. The metadata is commented out to prevent it from appearing in GitHub. - - - -The metadata alone has this structure: - - +++ - title = "Extending services in machine" - description = "How to use Docker machine's extends keyword to share configuration between files and projects" - keywords = ["fig, composition, machine, docker, orchestration, documentation, docs"] - [menu.main] - parent="workw_machine" - weight=2 - +++ - -The `[menu.main]` section refers to navigation defined [in the main Docker menu](https://github.com/docker/docs-base/blob/hugo/config.toml). This metadata says _add a menu item called_ Extending services in machine _to the menu with the_ `smn_workdw_machine` _identifier_. If you locate the menu in the configuration, you'll find _Create multi-container applications_ is the menu title. - -You can move an article in the tree by specifying a new parent. You can shift the location of the item by changing its weight. Higher numbers are heavier and shift the item to the bottom of menu. Low or no numbers shift it up. - -## Other key documentation repositories - -The `docker/docs-base` repository contains [the Hugo theme and menu configuration](https://github.com/docker/docs-base). If you open the `Dockerfile` you'll see the `make docs` relies on this as a base image for building the machine documentation. - -The `docker/docs.docker.com` repository contains [build system for building the Docker documentation site](https://github.com/docker/docs.docker.com). Fork this repository to build the entire documentation site. diff --git a/vendor/github.com/docker/machine/docs/RELEASE.md b/vendor/github.com/docker/machine/docs/RELEASE.md deleted file mode 100644 index 4f3c86e3..00000000 --- a/vendor/github.com/docker/machine/docs/RELEASE.md +++ /dev/null @@ -1,45 +0,0 @@ - - -# Docker Machine Release Process - -The Docker Machine release process is fairly straightforward and as many steps -have been taken as possible to make it automated, but there is a procedure and -several "checklist items" which should be documented. This document is intended -to cover the current Docker Machine release process. It is written for Docker -Machine core maintainers who might find themselves performing a release. - -0. The new version of `azure` driver released in 0.7.0 is not backwards compatible - and therefore errors out with a message saying the new driver is unsupported with - the new version. The commit 7b961604 should be undone prior to 0.8.0 release and - this notice must be removed from `docs/RELEASE.md`. -1. **Get a GITHUB_TOKEN** Check that you have a proper `GITHUB_TOKEN`. This - token needs only to have the `repo` scope. The token can be created on github - in the settings > Personal Access Token menu. -2. **Run the release script** At the root of the project, run the following - command `GITHUB_TOKEN=XXXX script/release.sh X.Y.Z` where `XXXX` is the - value of the GITHUB_TOKEN generated, `X.Y.Z` the version to release - ( Explicitly excluding the 'v' prefix, the script takes care of it.). As of - now, this version number must match the content of `version/version.go`. The - script has been built to be as resilient as possible, cleaning everything - it does along its way if necessary. You can run it many times in a row, - fixing the various bits along the way. -3. **Update the changelog on github** -- The script generated a list of all - commits since last release. You need to edit this manually, getting rid of - non critical details, and putting emphasis to what need our users attention. -4. **Update the CHANGELOG.md** -- Add the same notes from the previous step to - the `CHANGELOG.md` file in the repository. -5. **Update the Documentation** -- Ensure that the `docs` branch on GitHub - (which the Docker docs team uses to deploy from) is up to date with the - changes to be deployed from the release branch / master. Make sure to - update `docs/install-machine.md` to have the correct version as well. -6. **Verify the Installation** -- Copy and paste the suggested commands in the - installation notes to ensure that they work properly. Best of all, grab an - (uninvolved) buddy and have them try it. `docker-machine -v` should give - them the released version once they have run the install commands. -7. (Optional) **Drink a Glass of Wine** -- You've worked hard on this release. - You deserve it. For wine suggestions, please consult your friendly - neighborhood sommelier. diff --git a/vendor/github.com/docker/machine/docs/completion.md b/vendor/github.com/docker/machine/docs/completion.md deleted file mode 100644 index 3d12556f..00000000 --- a/vendor/github.com/docker/machine/docs/completion.md +++ /dev/null @@ -1,59 +0,0 @@ - - -# Command-line Completion - -Docker Machine comes with [command completion](http://en.wikipedia.org/wiki/Command-line_completion) -for the bash and zsh shell. - -## Installing Command Completion - -### Bash - -Make sure bash completion is installed. If you use a current Linux in a non-minimal installation, bash completion should be available. -On a Mac, install with `brew install bash-completion` - -Place the completion scripts in `/etc/bash_completion.d/` (`` `brew --prefix`/etc/bash_completion.d/`` on a Mac), using e.g. - - files=(docker-machine docker-machine-wrapper docker-machine-prompt) - for f in "${files[@]}"; do - curl -L https://raw.githubusercontent.com/docker/machine/v$(docker-machine --version | tr -ds ',' ' ' | awk 'NR==1{print $(3)}')/contrib/completion/bash/$f.bash > `brew --prefix`/etc/bash_completion.d/$f - done - -Completion will be available upon next login. - - -### Zsh - -Place the completion scripts in your `/path/to/zsh/completion`, using e.g. `~/.zsh/completion/` - - mkdir -p ~/.zsh/completion - curl -L https://raw.githubusercontent.com/docker/machine/v$(docker-machine --version | tr -ds ',' ' ' | awk 'NR==1{print $(3)}')/contrib/completion/zsh/_docker-machine > ~/.zsh/completion/_docker-machine - -Include the directory in your `$fpath`, e.g. by adding in `~/.zshrc` - - fpath=(~/.zsh/completion $fpath) - -Make sure `compinit` is loaded or do it by adding in `~/.zshrc` - - autoload -Uz compinit && compinit -i - -Then reload your shell - - exec $SHELL -l - - - diff --git a/vendor/github.com/docker/machine/docs/concepts.md b/vendor/github.com/docker/machine/docs/concepts.md deleted file mode 100644 index 3f290665..00000000 --- a/vendor/github.com/docker/machine/docs/concepts.md +++ /dev/null @@ -1,88 +0,0 @@ - - - -# Understand Machine concepts and get help - -Docker Machine allows you to provision Docker machines in a variety of environments, including virtual machines that reside on your local system, on cloud providers, or on bare metal servers (physical computers). Docker Machine creates a Docker host, and you use the Docker Engine client as needed to build images and create containers on the host. - -## Drivers for creating machines - -To create a virtual machine, you supply Docker Machine with the name of the driver you want use. The driver determines where the virtual machine is created. For example, on a local Mac or Windows system, the driver is typically Oracle VirtualBox. For provisioning physical machines, a generic driver is provided. For cloud providers, Docker Machine supports drivers such as AWS, Microsoft Azure, Digital Ocean, and many more. The Docker Machine reference includes a complete [list of supported drivers](drivers/index.md). - -## Default base operating systems for local and cloud hosts - -Since Docker runs on Linux, each VM that Docker Machine provisions relies on a -base operating system. For convenience, there are default base operating -systems. For the Oracle Virtual Box driver, this base operating system is boot2docker. For drivers used to connect to cloud providers, the base operating system is Ubuntu 12.04+. You can change this default when you create a machine. The Docker Machine reference includes a complete [list of -supported operating systems](drivers/os-base.md). - -## IP addresses for Docker hosts - -For each machine you create, the Docker host address is the IP address of the -Linux VM. This address is assigned by the `docker-machine create` subcommand. -You use the `docker-machine ls` command to list the machines you have created. -The `docker-machine ip ` command returns a specific host's IP -address. - -## Configuring CLI environment variables for a Docker host - -Before you can run a `docker` command on a machine, you need to configure your -command-line to point to that machine. The `docker-machine env ` -subcommand outputs the configuration command you should use. - -For a complete list of `docker-machine` subcommands, see the [Docker Machine subcommand reference](reference/index.md). - -## Crash Reporting - -Provisioning a host is a complex matter that can fail for a lot of reasons. Your -workstation may have a wide variety of shell, network configuration, VPN, proxy -or firewall issues. There are also reasons from the other end of the chain: -your cloud provider or the network in between. - -To help `docker-machine` be as stable as possible, we added a monitoring of -crashes whenever you try to `create` or `upgrade` a host. This will send, over -HTTPS, to Bugsnag some information about your `docker-machine` version, build, -OS, ARCH, the path to your current shell and, the history of the last command as -you could see it with a `--debug` option. This data is sent to help us pinpoint -recurring issues with `docker-machine` and will only be transmitted in the case -of a crash of `docker-machine`. - -If you wish to opt out of error reporting, you can create a `no-error-report` -file in your `$HOME/.docker/machine` directory, and Docker Machine will disable -this behavior. e.g.: - - $ mkdir -p ~/.docker/machine && touch ~/.docker/machine/no-error-report - -Leaving the file empty is fine -- Docker Machine just checks for its presence. - -## Getting help - -Docker Machine is still in its infancy and under active development. If you need -help, would like to contribute, or simply want to talk about the project with -like-minded individuals, we have a number of open channels for communication. - -- To report bugs or file feature requests: please use the [issue tracker on - Github](https://github.com/docker/machine/issues). -- To talk about the project with people in real time: please join the - `#docker-machine` channel on IRC. -- To contribute code or documentation changes: please [submit a pull request on - Github](https://github.com/docker/machine/pulls). - -For more information and resources, please visit -[our help page](/opensource/get-help.md). - -## Where to go next - -- Create and run a Docker host on your [local system using VirtualBox](get-started.md) -- Provision multiple Docker hosts [on your cloud provider](get-started-cloud.md) -- Docker Machine driver reference -- Docker Machine subcommand reference diff --git a/vendor/github.com/docker/machine/docs/drivers/aws.md b/vendor/github.com/docker/machine/docs/drivers/aws.md deleted file mode 100644 index 0b8a9c39..00000000 --- a/vendor/github.com/docker/machine/docs/drivers/aws.md +++ /dev/null @@ -1,168 +0,0 @@ - - -# Amazon Web Services - -Create machines on [Amazon Web Services](http://aws.amazon.com). - -To create machines on [Amazon Web Services](http://aws.amazon.com), you must supply two parameters: the AWS Access Key ID and the AWS Secret Access Key. - -## Configuring credentials - -Before using the amazonec2 driver, ensure that you've configured credentials. - -### AWS credential file - -One way to configure credentials is to use the standard credential file for Amazon AWS `~/.aws/credentials` file, which might look like: - - [default] - aws_access_key_id = AKID1234567890 - aws_secret_access_key = MY-SECRET-KEY - -On Mac OS or various flavors of Linux you can install the [AWS Command Line Interface](http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html#cli-quick-configuration) (`aws cli`) in the terminal and use the `aws configure` command which guides you through the creation of the credentials file. - -This is the simplest method, you can then create a new machine with: - - $ docker-machine create --driver amazonec2 aws01 - -### Command line flags - -Alternatively, you can use the flags `--amazonec2-access-key` and `--amazonec2-secret-key` on the command line: - - $ docker-machine create --driver amazonec2 --amazonec2-access-key AKI******* --amazonec2-secret-key 8T93C******* aws01 - -### Environment variables - -You can use environment variables: - - $ export AWS_ACCESS_KEY_ID=AKID1234567890 - $ export AWS_SECRET_ACCESS_KEY=MY-SECRET-KEY - $ docker-machine create --driver amazonec2 aws01 - -## Options - -- `--amazonec2-access-key`: Your access key id for the Amazon Web Services API. -- `--amazonec2-secret-key`: Your secret access key for the Amazon Web Services API. -- `--amazonec2-session-token`: Your session token for the Amazon Web Services API. -- `--amazonec2-ami`: The AMI ID of the instance to use. -- `--amazonec2-region`: The region to use when launching the instance. -- `--amazonec2-vpc-id`: Your VPC ID to launch the instance in. -- `--amazonec2-zone`: The AWS zone to launch the instance in (i.e. one of a,b,c,d,e). -- `--amazonec2-subnet-id`: AWS VPC subnet id. -- `--amazonec2-security-group`: AWS VPC security group name. -- `--amazonec2-tags`: AWS extra tag key-value pairs (comma-separated, e.g. key1,value1,key2,value2). -- `--amazonec2-instance-type`: The instance type to run. -- `--amazonec2-device-name`: The root device name of the instance. -- `--amazonec2-root-size`: The root disk size of the instance (in GB). -- `--amazonec2-volume-type`: The Amazon EBS volume type to be attached to the instance. -- `--amazonec2-iam-instance-profile`: The AWS IAM role name to be used as the instance profile. -- `--amazonec2-ssh-user`: The SSH Login username, which must match the default SSH user set in the ami used. -- `--amazonec2-request-spot-instance`: Use spot instances. -- `--amazonec2-spot-price`: Spot instance bid price (in dollars). Require the `--amazonec2-request-spot-instance` flag. -- `--amazonec2-use-private-address`: Use the private IP address for docker-machine, but still create a public IP address. -- `--amazonec2-private-address-only`: Use the private IP address only. -- `--amazonec2-monitoring`: Enable CloudWatch Monitoring. -- `--amazonec2-use-ebs-optimized-instance`: Create an EBS Optimized Instance, instance type must support it. -- `--amazonec2-ssh-keypath`: Path to Private Key file to use for instance. Matching public key with .pub extension should exist -- `--amazonec2-retries`: Set retry count for recoverable failures (use -1 to disable) - - -Environment variables and default values: - -| CLI option | Environment variable | Default | -| ---------------------------------------- | ----------------------- | ---------------- | -| `--amazonec2-access-key` | `AWS_ACCESS_KEY_ID` | - | -| `--amazonec2-secret-key` | `AWS_SECRET_ACCESS_KEY` | - | -| `--amazonec2-session-token` | `AWS_SESSION_TOKEN` | - | -| `--amazonec2-ami` | `AWS_AMI` | `ami-5f709f34` | -| `--amazonec2-region` | `AWS_DEFAULT_REGION` | `us-east-1` | -| `--amazonec2-vpc-id` | `AWS_VPC_ID` | - | -| `--amazonec2-zone` | `AWS_ZONE` | `a` | -| `--amazonec2-subnet-id` | `AWS_SUBNET_ID` | - | -| `--amazonec2-security-group` | `AWS_SECURITY_GROUP` | `docker-machine` | -| `--amazonec2-tags` | `AWS_TAGS` | - | -| `--amazonec2-instance-type` | `AWS_INSTANCE_TYPE` | `t2.micro` | -| `--amazonec2-device-name` | `AWS_DEVICE_NAME` | `/dev/sda1` | -| `--amazonec2-root-size` | `AWS_ROOT_SIZE` | `16` | -| `--amazonec2-volume-type` | `AWS_VOLUME_TYPE` | `gp2` | -| `--amazonec2-iam-instance-profile` | `AWS_INSTANCE_PROFILE` | - | -| `--amazonec2-ssh-user` | `AWS_SSH_USER` | `ubuntu` | -| `--amazonec2-request-spot-instance` | - | `false` | -| `--amazonec2-spot-price` | - | `0.50` | -| `--amazonec2-use-private-address` | - | `false` | -| `--amazonec2-private-address-only` | - | `false` | -| `--amazonec2-monitoring` | - | `false` | -| `--amazonec2-use-ebs-optimized-instance` | - | `false` | -| `--amazonec2-ssh-keypath` | `AWS_SSH_KEYPATH` | - | -| `--amazonec2-retries` | - | `5` | - -## Default AMIs - -By default, the Amazon EC2 driver will use a daily image of Ubuntu 15.10. - -| Region | AMI ID | -| -------------- | ------------ | -| ap-northeast-1 | ami-b36d4edd | -| ap-southeast-1 | ami-1069af73 | -| ap-southeast-2 | ami-1d336a7e | -| cn-north-1 | ami-79eb2214 | -| eu-west-1 | ami-8aa67cf9 | -| eu-central-1 | ami-ab0210c7 | -| sa-east-1 | ami-185de774 | -| us-east-1 | ami-26d5af4c | -| us-west-1 | ami-9cbcd2fc | -| us-west-2 | ami-16b1a077 | -| us-gov-west-1 | ami-b0bad893 | - -## Security Group - -Note that a security group will be created and associated to the host. This security group will have the following ports opened inbound: - -- ssh (22/tcp) -- docker (2376/tcp) -- swarm (3376/tcp), only if the node is a swarm master - -If you specify a security group yourself using the `--amazonec2-security-group` flag, the above ports will be checked and opened and the security group modified. -If you want more ports to be opened, like application specific ports, use the aws console and modify the configuration manually. - -## VPC ID - -We determine your default vpc id at the start of a command. -In some cases, either because your account does not have a default vpc, or you don't want to use the default one, you can specify a vpc with the `--amazonec2-vpc-id` flag. - -To find the VPC ID: - -1. Login to the AWS console -2. Go to **Services -> VPC -> Your VPCs**. -3. Locate the VPC ID you want from the _VPC_ column. -4. Go to **Services -> VPC -> Subnets**. Examine the _Availability Zone_ column to verify that zone `a` exists and matches your VPC ID. - - For example, `us-east1-a` is in the `a` availability zone. If the `a` zone is not present, you can create a new subnet in that zone or specify a different zone when you create the machine. - -To create a machine with a non-default vpc-id: - - $ docker-machine create --driver amazonec2 --amazonec2-access-key AKI******* --amazonec2-secret-key 8T93C********* --amazonec2-vpc-id vpc-****** aws02 - -This example assumes the VPC ID was found in the `a` availability zone. Use the`--amazonec2-zone` flag to specify a zone other than the `a` zone. For example, `--amazonec2-zone c` signifies `us-east1-c`. - -## VPC Connectivity -Machine uses SSH to complete the set up of instances in EC2 and requires the ability to access the instance directly. - -If you use the flag `--amazonec2-private-address-only`, you will need to ensure that you have some method of accessing the new instance from within the internal network of the VPC (e.g. a corporate VPN to the VPC, a VPN instance inside the VPC or using Docker-machine from an instance within your VPC). - -Configuration of VPCs is beyond the scope of this guide, however the first step in troubleshooting is ensuring if you are using private subnets that you follow the design guidance in the [AWS VPC User Guide](http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario2.html) and have some form of NAT available so that the set up process can access the internet to complete set up. - -## Custom AMI and SSH username - -The default SSH username for the default AMIs is `ubuntu`. - -You need to change the SSH username only if the custom AMI you use has a different SSH username. - -You can change the SSH username with the `--amazonec2-ssh-user` according to the AMI you selected with the `--amazonec2-ami`. diff --git a/vendor/github.com/docker/machine/docs/drivers/azure.md b/vendor/github.com/docker/machine/docs/drivers/azure.md deleted file mode 100644 index 0bb82d46..00000000 --- a/vendor/github.com/docker/machine/docs/drivers/azure.md +++ /dev/null @@ -1,124 +0,0 @@ - - -# Microsoft Azure - -You will need an Azure Subscription to use this Docker Machine driver. -[Sign up for a free trial.][trial] - -> **NOTE:** This documentation is for the new version of the Azure driver, which started -> shipping with v0.7.0. This driver is not backwards-compatible with the old -> Azure driver. If you want to continue managing your existing Azure machines, please -> download and use machine versions prior to v0.7.0. - -[azure]: http://azure.microsoft.com/ -[trial]: https://azure.microsoft.com/free/ - -## Authentication - -The first time you try to create a machine, Azure driver will ask you to -authenticate: - - $ docker-machine create --driver azure --azure-subscription-id - Running pre-create checks... - Microsoft Azure: To sign in, use a web browser to open the page https://aka.ms/devicelogin. - Enter the code [...] to authenticate. - -After authenticating, the driver will remember your credentials up to two weeks. - -> **KNOWN ISSUE:** There is a known issue with Azure Active Directory causing stored -> credentials to expire within hours rather than 14 days when the user logs in with -> personal Microsoft Account (formerly _Live ID_) instead of an Active Directory account. -> Currently, there is no ETA for resolution, however in the meanwhile you can -> [create an AAD account][aad-docs] and login with that as a workaround. - -[aad-docs]: https://azure.microsoft.com/documentation/articles/virtual-machines-windows-create-aad-work-id/ - -## Options - -Azure driver only has a single required argument to make things easier. Please -read the optional flags to configure machine details and placement further. - -Required: - -- `--azure-subscription-id`: **(required)** Your Azure Subscription ID. - -Optional: - -- `--azure-image`: Azure virtual machine image in the format of Publisher:Offer:Sku:Version [[?][vm-image]] -- `--azure-location`: Azure region to create the virtual machine. [[?][location]] -- `--azure-resource-group`: Azure Resource Group name to create the resources in. -- `--azure-size`: Size for Azure Virtual Machine. [[?][vm-size]] -- `--azure-ssh-user`: Username for SSH login. -- `--azure-vnet`: Azure Virtual Network name to connect the virtual machine. [[?][vnet]] -- `--azure-subnet`: Azure Subnet Name to be used within the Virtual Network. -- `--azure-subnet-prefix`: Private CIDR block. Used to create subnet if it does not exist. Must match in the case that the subnet does exist. -- `--azure-availability-set`: Azure Availability Set to place the virtual machine into. [[?][av-set]] -- `--azure-open-port`: Make additional port number(s) accessible from the Internet [[?][nsg]] -- `--azure-private-ip-address`: Specify a static private IP address for the machine. -- `--azure-use-private-ip`: Use private IP address of the machine to connect. It's useful for managing Docker machines from another machine on the same network e.g. while deploying Swarm. -- `--azure-no-public-ip`: Do not create a public IP address for the machine (implies `--azure-use-private-ip`). Should be used only when creating machines from an Azure VM within the same subnet. -- `--azure-static-public-ip`: Assign a static public IP address to the machine. -- `--azure-docker-port`: Port number for Docker engine. -- `--azure-environment`: Azure environment (e.g. `AzurePublicCloud`, `AzureChinaCloud`). - -[vm-image]: https://azure.microsoft.com/en-us/documentation/articles/resource-groups-vm-searching/ -[location]: https://azure.microsoft.com/en-us/regions/ -[vm-size]: https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-size-specs/ -[vnet]: https://azure.microsoft.com/en-us/documentation/articles/virtual-networks-overview/ -[av-set]: https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-manage-availability/ - -Environment variables and default values: - -| CLI option | Environment variable | Default | -| ------------------------------- | ----------------------------- | ------------------ | -| **`--azure-subscription-id`** | `AZURE_SUBSCRIPTION_ID` | - | -| `--azure-environment` | `AZURE_ENVIRONMENT` | `AzurePublicCloud` | -| `--azure-image` | `AZURE_IMAGE` | `canonical:UbuntuServer:16.04.0-LTS:latest` | -| `--azure-location` | `AZURE_LOCATION` | `westus` | -| `--azure-resource-group` | `AZURE_RESOURCE_GROUP` | `docker-machine` | -| `--azure-size` | `AZURE_SIZE` | `Standard_A2` | -| `--azure-ssh-user` | `AZURE_SSH_USER` | `docker-user` | -| `--azure-vnet` | `AZURE_VNET` | `docker-machine` | -| `--azure-subnet` | `AZURE_SUBNET` | `docker-machine` | -| `--azure-subnet-prefix` | `AZURE_SUBNET_PREFIX` | `192.168.0.0/16` | -| `--azure-availability-set` | `AZURE_AVAILABILITY_SET` | `docker-machine` | -| `--azure-open-port` | - | - | -| `--azure-private-ip-address` | - | - | -| `--azure-use-private-ip` | - | - | -| `--azure-no-public-ip` | - | - | -| `--azure-static-public-ip` | - | - | -| `--azure-docker-port` | `AZURE_DOCKER_PORT` | `2376` | - -## Notes - -Azure runs fully on the new [Azure Resource Manager (ARM)][arm] stack. Each -machine created comes with a few more Azure resources associated with it: - -* A [Virtual Network][vnet] and a subnet under it is created to place your -machines into. This establishes a local network between your docker machines. -* An [Availability Set][av-set] is created to maximize availability of your -machines. - -These are created once when the first machine is created and reused afterwards. -Although they are free resources, driver does a best effort to clean them up -after the last machine using these resources is removed. - -Each machine is created with a public dynamic IP address for external -connectivity. All its ports (except Docker and SSH) are closed by default. You -can use `--azure-open-port` argument to specify multiple port numbers to be -accessible from Internet. - -Once the machine is created, you can modify [Network Security Group][nsg] -rules and open ports of the machine from the [Azure Portal][portal]. - -[arm]: https://azure.microsoft.com/en-us/documentation/articles/resource-group-overview/ -[nsg]: https://azure.microsoft.com/en-us/documentation/articles/virtual-networks-nsg/ -[portal]: https://portal.azure.com/ diff --git a/vendor/github.com/docker/machine/docs/drivers/digital-ocean.md b/vendor/github.com/docker/machine/docs/drivers/digital-ocean.md deleted file mode 100644 index 491c4e95..00000000 --- a/vendor/github.com/docker/machine/docs/drivers/digital-ocean.md +++ /dev/null @@ -1,50 +0,0 @@ - - -# Digital Ocean - -Create Docker machines on [Digital Ocean](https://www.digitalocean.com/). - -You need to create a personal access token under "Apps & API" in the Digital Ocean -Control Panel and pass that to `docker-machine create` with the `--digitalocean-access-token` option. - - $ docker-machine create --driver digitalocean --digitalocean-access-token=aa9399a2175a93b17b1c86c807e08d3fc4b79876545432a629602f61cf6ccd6b test-this - -Options: - -- `--digitalocean-access-token`: **required** Your personal access token for the Digital Ocean API. -- `--digitalocean-image`: The name of the Digital Ocean image to use. -- `--digitalocean-region`: The region to create the droplet in, see [Regions API](https://developers.digitalocean.com/documentation/v2/#regions) for how to get a list. -- `--digitalocean-size`: The size of the Digital Ocean droplet (larger than default options are of the form `2gb`). -- `--digitalocean-ipv6`: Enable IPv6 support for the droplet. -- `--digitalocean-private-networking`: Enable private networking support for the droplet. -- `--digitalocean-backups`: Enable Digital Oceans backups for the droplet. -- `--digitalocean-userdata`: Path to file containing User Data for the droplet. -- `--digitalocean-ssh-user`: SSH username. -- `--digitalocean-ssh-port`: SSH port. -- `--digitalocean-ssh-key-fingerprint`: Use an existing SSH key instead of creating a new one, see [SSH keys](https://developers.digitalocean.com/documentation/v2/#ssh-keys). - -The DigitalOcean driver will use `ubuntu-15-10-x64` as the default image. - -Environment variables and default values: - -| CLI option | Environment variable | Default | -| ----------------------------------- | --------------------------------- | ------------------ | -| **`--digitalocean-access-token`** | `DIGITALOCEAN_ACCESS_TOKEN` | - | -| `--digitalocean-image` | `DIGITALOCEAN_IMAGE` | `ubuntu-15-10-x64` | -| `--digitalocean-region` | `DIGITALOCEAN_REGION` | `nyc3` | -| `--digitalocean-size` | `DIGITALOCEAN_SIZE` | `512mb` | -| `--digitalocean-ipv6` | `DIGITALOCEAN_IPV6` | `false` | -| `--digitalocean-private-networking` | `DIGITALOCEAN_PRIVATE_NETWORKING` | `false` | -| `--digitalocean-backups` | `DIGITALOCEAN_BACKUPS` | `false` | -| `--digitalocean-userdata` | `DIGITALOCEAN_USERDATA` | - | -| `--digitalocean-ssh-user` | `DIGITALOCEAN_SSH_USER` | `root` | -| `--digitalocean-ssh-port` | `DIGITALOCEAN_SSH_PORT` | 22 | -| `--digitalocean-ssh-key-fingerprint`| `DIGITALOCEAN_SSH_KEY_FINGERPRINT`| - | diff --git a/vendor/github.com/docker/machine/docs/drivers/exoscale.md b/vendor/github.com/docker/machine/docs/drivers/exoscale.md deleted file mode 100644 index 3aed5be7..00000000 --- a/vendor/github.com/docker/machine/docs/drivers/exoscale.md +++ /dev/null @@ -1,47 +0,0 @@ - - -# Exoscale - -Create machines on [exoscale](https://www.exoscale.ch/). - -Get your API key and API secret key from [API details](https://portal.exoscale.ch/account/api) and pass them to `machine create` with the `--exoscale-api-key` and `--exoscale-api-secret-key` options. - - $ docker-machine create --driver exoscale --exoscale-api-key=API --exoscale-api-secret-key=SECRET vm - -Options: - -- `--exoscale-url`: Your API endpoint. -- `--exoscale-api-key`: **required** Your API key. -- `--exoscale-api-secret-key`: **required** Your API secret key. -- `--exoscale-instance-profile`: Instance profile. -- `--exoscale-disk-size`: Disk size for the host in GB (10, 50, 100, 200, 400). -- `--exoscale-image`: Image template (eg. ubuntu-14.04, ubuntu-15.10). -- `--exoscale-security-group`: Security group. It will be created if it doesn't exist. -- `--exoscale-availability-zone`: Exoscale availability zone. -- `--exoscale-ssh-user`: SSH username, which must match the default SSH user for the used image. -- `--exoscale-userdata`: Path to file containing user data for cloud-init. - -If a custom security group is provided, you need to ensure that you allow TCP ports 22 and 2376 in an ingress rule. Moreover, if you want to use Swarm, also add TCP port 3376. - -Environment variables and default values: - -| CLI option | Environment variable | Default | -| ------------------------------- | ---------------------------- | --------------------------------- | -| `--exoscale-url` | `EXOSCALE_ENDPOINT` | `https://api.exoscale.ch/compute` | -| **`--exoscale-api-key`** | `EXOSCALE_API_KEY` | - | -| **`--exoscale-api-secret-key`** | `EXOSCALE_API_SECRET` | - | -| `--exoscale-instance-profile` | `EXOSCALE_INSTANCE_PROFILE` | `small` | -| `--exoscale-disk-size` | `EXOSCALE_DISK_SIZE` | `50` | -| `--exoscale-image` | `EXOSCALE_IMAGE` | `ubuntu-15.10` | -| `--exoscale-security-group` | `EXOSCALE_SECURITY_GROUP` | `docker-machine` | -| `--exoscale-availability-zone` | `EXOSCALE_AVAILABILITY_ZONE` | `ch-gva-2` | -| `--exoscale-ssh-user` | `EXOSCALE_SSH_USER` | `ubuntu` | -| `--exoscale-userdata` | `EXOSCALE_USERDATA` | - | diff --git a/vendor/github.com/docker/machine/docs/drivers/gce.md b/vendor/github.com/docker/machine/docs/drivers/gce.md deleted file mode 100644 index 258e1380..00000000 --- a/vendor/github.com/docker/machine/docs/drivers/gce.md +++ /dev/null @@ -1,77 +0,0 @@ - - -# Google Compute Engine - -Create machines on [Google Compute Engine](https://cloud.google.com/compute/). -You will need a Google account and a project id. -See for details on projects. - -### Credentials - -The Google driver uses [Application Default Credentials](https://developers.google.com/identity/protocols/application-default-credentials) -to get authorization credentials for use in calling Google APIs. - -So if `docker-machine` is used from a GCE host, authentication will happen automatically -via the built-in service account. -Otherwise, [install gcloud](https://cloud.google.com/sdk/) and get -through the oauth2 process with `gcloud auth login`. - -### Example - -To create a machine instance, specify `--driver google`, the project id and the machine name. - - $ gcloud auth login - $ docker-machine create --driver google --google-project PROJECT_ID vm01 - $ docker-machine create --driver google \ - --google-project PROJECT_ID \ - --google-zone us-central1-a \ - --google-machine-type f1-micro \ - vm02 - -### Options - - - `--google-project`: **required** The id of your project to use when launching the instance. - - `--google-zone`: The zone to launch the instance. - - `--google-machine-type`: The type of instance. - - `--google-machine-image`: The absolute URL to a base VM image to instantiate. - - `--google-username`: The username to use for the instance. - - `--google-scopes`: The scopes for OAuth 2.0 to Access Google APIs. See [Google Compute Engine Doc](https://cloud.google.com/storage/docs/authentication). - - `--google-disk-size`: The disk size of instance. - - `--google-disk-type`: The disk type of instance. - - `--google-address`: Instance's static external IP (name or IP). - - `--google-preemptible`: Instance preemptibility. - - `--google-tags`: Instance tags (comma-separated). - - `--google-use-internal-ip`: When this option is used during create it will make docker-machine use internal rather than public NATed IPs. The flag is persistent in the sense that a machine created with it retains the IP. It's useful for managing docker machines from another machine on the same network e.g. while deploying swarm. - - `--google-use-internal-ip-only`: When this option is used during create, the new VM will not be assigned a public IP address. This is useful only when the host running `docker-machine` is located inside the Google Cloud infrastructure; otherwise, `docker-machine` can't reach the VM to provision the Docker daemon. The presence of this flag implies `--google-use-internal-ip`. - - `--google-use-existing`: Don't create a new VM, use an existing one. This is useful when you'd like to provision Docker on a VM you created yourself, maybe because it uses create options not supported by this driver. - -The GCE driver will use the `ubuntu-1510-wily-v20151114` instance image unless otherwise specified. To obtain a -list of image URLs run: - - gcloud compute images list --uri - -Environment variables and default values: - -| CLI option | Environment variable | Default | -| -------------------------- | ------------------------ | ------------------------------------ | -| **`--google-project`** | `GOOGLE_PROJECT` | - | -| `--google-zone` | `GOOGLE_ZONE` | `us-central1-a` | -| `--google-machine-type` | `GOOGLE_MACHINE_TYPE` | `f1-standard-1` | -| `--google-machine-image` | `GOOGLE_MACHINE_IMAGE` | `ubuntu-1510-wily-v20151114` | -| `--google-username` | `GOOGLE_USERNAME` | `docker-user` | -| `--google-scopes` | `GOOGLE_SCOPES` | `devstorage.read_only,logging.write` | -| `--google-disk-size` | `GOOGLE_DISK_SIZE` | `10` | -| `--google-disk-type` | `GOOGLE_DISK_TYPE` | `pd-standard` | -| `--google-address` | `GOOGLE_ADDRESS` | - | -| `--google-preemptible` | `GOOGLE_PREEMPTIBLE` | - | -| `--google-tags` | `GOOGLE_TAGS` | - | -| `--google-use-internal-ip` | `GOOGLE_USE_INTERNAL_IP` | - | -| `--google-use-existing` | `GOOGLE_USE_EXISTING` | - | diff --git a/vendor/github.com/docker/machine/docs/drivers/generic.md b/vendor/github.com/docker/machine/docs/drivers/generic.md deleted file mode 100644 index f37a7758..00000000 --- a/vendor/github.com/docker/machine/docs/drivers/generic.md +++ /dev/null @@ -1,65 +0,0 @@ - - -# Generic - -Create machines using an existing VM/Host with SSH. - -This is useful if you are using a provider that Machine does not support -directly or if you would like to import an existing host to allow Docker -Machine to manage. - -The driver will perform a list of tasks on create: - -- If docker is not running on the host, it will be installed automatically. -- It will update the host packages (`apt-get update`, `yum update`...). -- It will generate certificates to secure the docker daemon. -- The docker daemon will be restarted, thus all running containers will be stopped. -- The hostname will be changed to fit the machine name. - -### Example - -To create a machine instance, specify `--driver generic`, the IP address or DNS -name of the host and the path to the SSH private key authorized to connect -to the host. - - $ docker-machine create \ - --driver generic \ - --generic-ip-address=203.0.113.81 \ - --generic-ssh-key ~/.ssh/id_rsa \ - vm - -### Sudo privileges - -The user that is used to SSH into the host can be specified with -`--generic-ssh-user` flag. This user has to have password-less sudo -privileges. -If it's not the case, you need to edit the `sudoers` file and configure the user -as a sudoer with `NOPASSWD`. See https://help.ubuntu.com/community/Sudoers. - -### Options - -- `--generic-engine-port`: Port to use for Docker Daemon (Note: This flag will not work with boot2docker). -- `--generic-ip-address`: **required** IP Address of host. -- `--generic-ssh-key`: Path to the SSH user private key. -- `--generic-ssh-user`: SSH username used to connect. -- `--generic-ssh-port`: Port to use for SSH. - -> **Note**: You must use a base operating system supported by Machine. - -Environment variables and default values: - -| CLI option | Environment variable | Default | -| -------------------------- | -------------------- | ------------------------- | -| `--generic-engine-port` | `GENERIC_ENGINE_PORT`| `2376` | -| **`--generic-ip-address`** | `GENERIC_IP_ADDRESS` | - | -| `--generic-ssh-key` | `GENERIC_SSH_KEY` | - | -| `--generic-ssh-user` | `GENERIC_SSH_USER` | `root` | -| `--generic-ssh-port` | `GENERIC_SSH_PORT` | `22` | diff --git a/vendor/github.com/docker/machine/docs/drivers/hyper-v.md b/vendor/github.com/docker/machine/docs/drivers/hyper-v.md deleted file mode 100644 index b664afac..00000000 --- a/vendor/github.com/docker/machine/docs/drivers/hyper-v.md +++ /dev/null @@ -1,47 +0,0 @@ - - -# Microsoft Hyper-V - -Creates a Boot2Docker virtual machine locally on your Windows machine -using Hyper-V. [See here](http://windows.microsoft.com/en-us/windows-8/hyper-v-run-virtual-machines) -for instructions to enable Hyper-V. You will need to use an -Administrator level account to create and manage Hyper-V machines. - -> **Note**: You will need an existing virtual switch to use the -> driver. Hyper-V can share an external network interface (aka -> bridging), see [this blog](http://blogs.technet.com/b/canitpro/archive/2014/03/11/step-by-step-enabling-hyper-v-for-use-on-windows-8-1.aspx). -> If you would like to use NAT, create an internal network, and use -> [Internet Connection -> Sharing](http://www.packet6.com/allowing-windows-8-1-hyper-v-vm-to-work-with-wifi/). - - $ docker-machine create --driver hyperv vm - -Options: - -- `--hyperv-boot2docker-url`: The URL of the boot2docker ISO. -- `--hyperv-virtual-switch`: Name of the virtual switch to use. -- `--hyperv-disk-size`: Size of disk for the host in MB. -- `--hyperv-memory`: Size of memory for the host in MB. -- `--hyperv-cpu-count`: Number of CPUs for the host. -- `--hyperv-static-macaddress`: Hyper-V network adapter's static MAC address. -- `--hyperv-vlan-id`: Hyper-V network adapter's VLAN ID if any. - -Environment variables and default values: - -| CLI option | Environment variable | Default | -| ---------------------------- | -------------------------- | ------------------------ | -| `--hyperv-boot2docker-url` | `HYPERV_BOOT2DOCKER_URL` | _Latest boot2docker url_ | -| `--hyperv-virtual-switch` | `HYPERV_VIRTUAL_SWITCH` | _first found_ | -| `--hyperv-disk-size` | `HYPERV_DISK_SIZE` | `20000` | -| `--hyperv-memory` | `HYPERV_MEMORY` | `1024` | -| `--hyperv-cpu-count` | `HYPERV_CPU_COUNT` | `1` | -| `--hyperv-static-macaddress` | `HYPERV_STATIC_MACADDRESS` | _undefined_ | -| `--hyperv-cpu-count` | `HYPERV_VLAN_ID` | _undefined_ | diff --git a/vendor/github.com/docker/machine/docs/drivers/index.md b/vendor/github.com/docker/machine/docs/drivers/index.md deleted file mode 100644 index 1a0de4b0..00000000 --- a/vendor/github.com/docker/machine/docs/drivers/index.md +++ /dev/null @@ -1,28 +0,0 @@ - - -# Supported Drivers - -- [Amazon Web Services](aws.md) -- [Microsoft Azure](azure.md) -- [Digital Ocean](digital-ocean.md) -- [Exoscale](exoscale.md) -- [Google Compute Engine](gce.md) -- [Generic](generic.md) -- [Microsoft Hyper-V](hyper-v.md) -- [OpenStack](openstack.md) -- [Rackspace](rackspace.md) -- [IBM Softlayer](soft-layer.md) -- [Oracle VirtualBox](virtualbox.md) -- [VMware vCloud Air](vm-cloud.md) -- [VMware Fusion](vm-fusion.md) -- [VMware vSphere](vsphere.md) diff --git a/vendor/github.com/docker/machine/docs/drivers/openstack.md b/vendor/github.com/docker/machine/docs/drivers/openstack.md deleted file mode 100644 index 2e185c63..00000000 --- a/vendor/github.com/docker/machine/docs/drivers/openstack.md +++ /dev/null @@ -1,76 +0,0 @@ - - -# OpenStack - -Create machines on [OpenStack](http://www.openstack.org/software/) - -Mandatory: - -- `--openstack-auth-url`: Keystone service base URL. -- `--openstack-flavor-id` or `--openstack-flavor-name`: Identify the flavor that will be used for the machine. -- `--openstack-image-id` or `--openstack-image-name`: Identify the image that will be used for the machine. - - - $ docker-machine create --driver openstack vm - -Options: - -- `--openstack-active-timeout`: The timeout in seconds until the OpenStack instance must be active. -- `--openstack-availability-zone`: The availability zone in which to launch the server. -- `--openstack-domain-name` or `--openstack-domain-id`: Domain to use for authentication (Keystone v3 only). -- `--openstack-endpoint-type`: Endpoint type can be `internalURL`, `adminURL` on `publicURL`. If is a helper for the driver - to choose the right URL in the OpenStack service catalog. If not provided the default id `publicURL` -- `--openstack-floatingip-pool`: The IP pool that will be used to get a public IP can assign it to the machine. If there is an - IP address already allocated but not assigned to any machine, this IP will be chosen and assigned to the machine. If - there is no IP address already allocated a new IP will be allocated and assigned to the machine. -- `--openstack-keypair-name`: Specify the existing Nova keypair to use. -- `--openstack-insecure`: Explicitly allow openstack driver to perform "insecure" SSL (https) requests. The server's certificate will not be verified against any certificate authorities. This option should be used with caution. -- `--openstack-ip-version`: If the instance has both IPv4 and IPv6 address, you can select IP version. If not provided `4` will be used. -- `--openstack-net-name` or `--openstack-net-id`: Identify the private network the machine will be connected on. If your OpenStack project project contains only one private network it will be use automatically. -- `--openstack-password`: User password. It can be omitted if the standard environment variable `OS_PASSWORD` is set. -- `--openstack-private-key-file`: Used with `--openstack-keypair-name`, associates the private key to the keypair. -- `--openstack-region`: The region to work on. Can be omitted if there is only one region on the OpenStack. -- `--openstack-sec-groups`: If security groups are available on your OpenStack you can specify a comma separated list - to use for the machine (e.g. `secgrp001,secgrp002`). -- `--openstack-username`: User identifier to authenticate with. -- `--openstack-ssh-port`: Customize the SSH port if the SSH server on the machine does not listen on the default port. -- `--openstack-ssh-user`: The username to use for SSH into the machine. If not provided `root` will be used. -- `--openstack-tenant-name` or `--openstack-tenant-id`: Identify the tenant in which the machine will be created. - -Environment variables and default values: - -| CLI option | Environment variable | Default | -| ------------------------------- | ---------------------- | ----------- | -| `--openstack-active-timeout` | `OS_ACTIVE_TIMEOUT` | `200` | -| `--openstack-auth-url` | `OS_AUTH_URL` | - | -| `--openstack-availability-zone` | `OS_AVAILABILITY_ZONE` | - | -| `--openstack-domain-id` | `OS_DOMAIN_ID` | - | -| `--openstack-domain-name` | `OS_DOMAIN_NAME` | - | -| `--openstack-endpoint-type` | `OS_ENDPOINT_TYPE` | `publicURL` | -| `--openstack-flavor-id` | `OS_FLAVOR_ID` | - | -| `--openstack-flavor-name` | `OS_FLAVOR_NAME` | - | -| `--openstack-floatingip-pool` | `OS_FLOATINGIP_POOL` | - | -| `--openstack-image-id` | `OS_IMAGE_ID` | - | -| `--openstack-image-name` | `OS_IMAGE_NAME` | - | -| `--openstack-insecure` | `OS_INSECURE` | `false` | -| `--openstack-ip-version` | `OS_IP_VERSION` | `4` | -| `--openstack-keypair-name` | `OS_KEYPAIR_NAME` | - | -| `--openstack-net-id` | `OS_NETWORK_ID` | - | -| `--openstack-net-name` | `OS_NETWORK_NAME` | - | -| `--openstack-password` | `OS_PASSWORD` | - | -| `--openstack-private-key-file` | `OS_PRIVATE_KEY_FILE` | - | -| `--openstack-region` | `OS_REGION_NAME` | - | -| `--openstack-sec-groups` | `OS_SECURITY_GROUPS` | - | -| `--openstack-ssh-port` | `OS_SSH_PORT` | `22` | -| `--openstack-ssh-user` | `OS_SSH_USER` | `root` | -| `--openstack-tenant-id` | `OS_TENANT_ID` | - | -| `--openstack-tenant-name` | `OS_TENANT_NAME` | - | -| `--openstack-username` | `OS_USERNAME` | - | diff --git a/vendor/github.com/docker/machine/docs/drivers/os-base.md b/vendor/github.com/docker/machine/docs/drivers/os-base.md deleted file mode 100644 index f1ab8e48..00000000 --- a/vendor/github.com/docker/machine/docs/drivers/os-base.md +++ /dev/null @@ -1,57 +0,0 @@ - - -# Driver options and operating system defaults - -When Docker Machine provisions containers on local network provider or with a -remote, cloud provider such as Amazon Web Services, you must define both the -driver for your provider and a base operating system. There are over 10 -supported drivers and a generic driver for adding machines for other providers. - -Each driver has a set of options specific to that provider. These options -provide information to machine such as connection credentials, ports, and so -forth. For example, to create an Azure machine: - -Grab your subscription ID from the portal, then run `docker-machine create` with -these details: - -```bash -$ docker-machine create -d azure --azure-subscription-id="SUB_ID" --azure-subscription-cert="mycert.pem" A-VERY-UNIQUE-NAME -``` - -To see a list of providers and review the options available to a provider, see -the reference for that driver. - -In addition to the provider, you have the option of identifying a base operating -system. It is an option because Docker Machine has defaults for both local and -remote providers. For local providers such as VirtualBox, Fusion, Hyper-V, and -so forth, the default base operating system is Boot2Docker. For cloud providers, -the base operating system is the latest Ubuntu LTS the provider supports. - -| Operating System | Version | Notes | -| ----------------------- | ------- | ------------------ | -| Boot2Docker | 1.5+ | default for local | -| Ubuntu | 12.04+ | default for remote | -| RancherOS | 0.3+ | | -| Debian | 8.0+ | experimental | -| RedHat Enterprise Linux | 7.0+ | experimental | -| CentOS | 7+ | experimental | -| Fedora | 21+ | experimental | - -To use a different base operating system on a remote provider, specify the -provider's image flag and one of its available images. For example, to select a -`debian-8-x64` image on DigitalOcean you would supply the -`--digitalocean-image=debian-8-x64` flag. - -If you change the base image for a provider, you may also need to change -the SSH user. For example, the default Red Hat AMI on EC2 expects the -SSH user to be `ec2-user`, so you would have to specify this with -`--amazonec2-ssh-user ec2-user`. diff --git a/vendor/github.com/docker/machine/docs/drivers/rackspace.md b/vendor/github.com/docker/machine/docs/drivers/rackspace.md deleted file mode 100644 index bf489bca..00000000 --- a/vendor/github.com/docker/machine/docs/drivers/rackspace.md +++ /dev/null @@ -1,43 +0,0 @@ - - -# Rackspace - -Create machines on [Rackspace cloud](http://www.rackspace.com/cloud) - - $ docker-machine create --driver rackspace --rackspace-username=user --rackspace-api-key=KEY --rackspace-region=region vm - -Options: - -- `--rackspace-username`: **required** Rackspace account username. -- `--rackspace-api-key`: **required** Rackspace API key. -- `--rackspace-region`: **required** Rackspace region name. -- `--rackspace-endpoint-type`: Rackspace endpoint type (`adminURL`, `internalURL` or the default `publicURL`). -- `--rackspace-image-id`: Rackspace image ID. Default: Ubuntu 15.10 (Wily Werewolf) (PVHVM). -- `--rackspace-flavor-id`: Rackspace flavor ID. Default: General Purpose 1GB. -- `--rackspace-ssh-user`: SSH user for the newly booted machine. -- `--rackspace-ssh-port`: SSH port for the newly booted machine. -- `--rackspace-docker-install`: Set if Docker has to be installed on the machine. - -The Rackspace driver will use `59a3fadd-93e7-4674-886a-64883e17115f` (Ubuntu 15.10) by default. - -Environment variables and default values: - -| CLI option | Environment variable | Default | -| ---------------------------- | -------------------- | -------------------------------------- | -| **`--rackspace-username`** | `OS_USERNAME` | - | -| **`--rackspace-api-key`** | `OS_API_KEY` | - | -| **`--rackspace-region`** | `OS_REGION_NAME` | - | -| `--rackspace-endpoint-type` | `OS_ENDPOINT_TYPE` | `publicURL` | -| `--rackspace-image-id` | - | `59a3fadd-93e7-4674-886a-64883e17115f` | -| `--rackspace-flavor-id` | `OS_FLAVOR_ID` | `general1-1` | -| `--rackspace-ssh-user` | - | `root` | -| `--rackspace-ssh-port` | - | `22` | -| `--rackspace-docker-install` | - | `true` | diff --git a/vendor/github.com/docker/machine/docs/drivers/soft-layer.md b/vendor/github.com/docker/machine/docs/drivers/soft-layer.md deleted file mode 100644 index 7c1ac22e..00000000 --- a/vendor/github.com/docker/machine/docs/drivers/soft-layer.md +++ /dev/null @@ -1,58 +0,0 @@ - - -# IBM Softlayer - -Create machines on [Softlayer](http://softlayer.com). - -You need to generate an API key in the softlayer control panel. -[Retrieve your API key](http://knowledgelayer.softlayer.com/procedure/retrieve-your-api-key) - - $ docker-machine create --driver softlayer --softlayer-user=user --softlayer-api-key=KEY --softlayer-domain=domain vm - -Options: - -- `--softlayer-memory`: Memory for host in MB. -- `--softlayer-disk-size`: A value of `0` will set the SoftLayer default. -- `--softlayer-user`: **required** Username for your SoftLayer account, api key needs to match this user. -- `--softlayer-api-key`: **required** API key for your user account. -- `--softlayer-region`: SoftLayer region. -- `--softlayer-cpu`: Number of CPUs for the machine. -- `--softlayer-hostname`: Hostname for the machine. -- `--softlayer-domain`: **required** Domain name for the machine. -- `--softlayer-api-endpoint`: Change SoftLayer API endpoint. -- `--softlayer-hourly-billing`: Specifies that hourly billing should be used, otherwise monthly billing is used. -- `--softlayer-local-disk`: Use local machine disk instead of SoftLayer SAN. -- `--softlayer-private-net-only`: Disable public networking. -- `--softlayer-image`: OS Image to use. -- `--softlayer-public-vlan-id`: Your public VLAN ID. -- `--softlayer-private-vlan-id`: Your private VLAN ID. - -The SoftLayer driver will use `UBUNTU_LATEST` as the image type by default. - -Environment variables and default values: - -| CLI option | Environment variable | Default | -| ------------------------------ | --------------------------- | --------------------------- | -| `--softlayer-memory` | `SOFTLAYER_MEMORY` | `1024` | -| `--softlayer-disk-size` | `SOFTLAYER_DISK_SIZE` | `0` | -| **`--softlayer-user`** | `SOFTLAYER_USER` | - | -| **`--softlayer-api-key`** | `SOFTLAYER_API_KEY` | - | -| `--softlayer-region` | `SOFTLAYER_REGION` | `dal01` | -| `--softlayer-cpu` | `SOFTLAYER_CPU` | `1` | -| `--softlayer-hostname` | `SOFTLAYER_HOSTNAME` | `docker` | -| **`--softlayer-domain`** | `SOFTLAYER_DOMAIN` | - | -| `--softlayer-api-endpoint` | `SOFTLAYER_API_ENDPOINT` | `api.softlayer.com/rest/v3` | -| `--softlayer-hourly-billing` | `SOFTLAYER_HOURLY_BILLING` | `false` | -| `--softlayer-local-disk` | `SOFTLAYER_LOCAL_DISK` | `false` | -| `--softlayer-private-net-only` | `SOFTLAYER_PRIVATE_NET` | `false` | -| `--softlayer-image` | `SOFTLAYER_IMAGE` | `UBUNTU_LATEST` | -| `--softlayer-public-vlan-id` | `SOFTLAYER_PUBLIC_VLAN_ID` | `0` | -| `--softlayer-private-vlan-id` | `SOFTLAYER_PRIVATE_VLAN_ID` | `0` | diff --git a/vendor/github.com/docker/machine/docs/drivers/virtualbox.md b/vendor/github.com/docker/machine/docs/drivers/virtualbox.md deleted file mode 100644 index df6fcc9b..00000000 --- a/vendor/github.com/docker/machine/docs/drivers/virtualbox.md +++ /dev/null @@ -1,96 +0,0 @@ - - -# Oracle VirtualBox - -Create machines locally using [VirtualBox](https://www.virtualbox.org/). -This driver requires VirtualBox 5+ to be installed on your host. -Using VirtualBox 4.3+ should work but will give you a warning. Older versions -will refuse to work. - - $ docker-machine create --driver=virtualbox vbox-test - -You can create an entirely new machine or you can convert a Boot2Docker VM into -a machine by importing the VM. To convert a Boot2Docker VM, you'd use the following -command: - - $ docker-machine create -d virtualbox --virtualbox-import-boot2docker-vm boot2docker-vm b2d - -The size of the VM's disk can be configured this way: - - $ docker-machine create -d virtualbox --virtualbox-disk-size "100000" large - -Options: - -- `--virtualbox-memory`: Size of memory for the host in MB. -- `--virtualbox-cpu-count`: Number of CPUs to use to create the VM. Defaults to single CPU. -- `--virtualbox-disk-size`: Size of disk for the host in MB. -- `--virtualbox-host-dns-resolver`: Use the host DNS resolver. (Boolean value, defaults to false) -- `--virtualbox-boot2docker-url`: The URL of the boot2docker image. Defaults to the latest available version. -- `--virtualbox-import-boot2docker-vm`: The name of a Boot2Docker VM to import. -- `--virtualbox-hostonly-cidr`: The CIDR of the host only adapter. -- `--virtualbox-hostonly-nictype`: Host Only Network Adapter Type. Possible values are are '82540EM' (Intel PRO/1000), 'Am79C973' (PCnet-FAST III) and 'virtio' Paravirtualized network adapter. -- `--virtualbox-hostonly-nicpromisc`: Host Only Network Adapter Promiscuous Mode. Possible options are deny , allow-vms, allow-all -- `--virtualbox-no-share`: Disable the mount of your home directory -- `--virtualbox-no-dns-proxy`: Disable proxying all DNS requests to the host (Boolean value, default to false) -- `--virtualbox-no-vtx-check`: Disable checking for the availability of hardware virtualization before the vm is started - -The `--virtualbox-boot2docker-url` flag takes a few different forms. By -default, if no value is specified for this flag, Machine will check locally for -a boot2docker ISO. If one is found, that will be used as the ISO for the -created machine. If one is not found, the latest ISO release available on -[boot2docker/boot2docker](https://github.com/boot2docker/boot2docker) will be -downloaded and stored locally for future use. Note that this means you must run -`docker-machine upgrade` deliberately on a machine if you wish to update the "cached" -boot2docker ISO. - -This is the default behavior (when `--virtualbox-boot2docker-url=""`), but the -option also supports specifying ISOs by the `http://` and `file://` protocols. -`file://` will look at the path specified locally to locate the ISO: for -instance, you could specify `--virtualbox-boot2docker-url -file://$HOME/Downloads/rc.iso` to test out a release candidate ISO that you have -downloaded already. You could also just get an ISO straight from the Internet -using the `http://` form. - -To customize the host only adapter, you can use the `--virtualbox-hostonly-cidr` -flag. This will specify the host IP and Machine will calculate the VirtualBox -DHCP server address (a random IP on the subnet between `.1` and `.25`) so -it does not clash with the specified host IP. -Machine will also specify the DHCP lower bound to `.100` and the upper bound -to `.254`. For example, a specified CIDR of `192.168.24.1/24` would have a -DHCP server between `192.168.24.2-25`, a lower bound of `192.168.24.100` and -upper bound of `192.168.24.254`. - -Environment variables and default values: - -| CLI option | Environment variable | Default | -| ------------------------------------ | ---------------------------------- | ------------------------ | -| `--virtualbox-memory` | `VIRTUALBOX_MEMORY_SIZE` | `1024` | -| `--virtualbox-cpu-count` | `VIRTUALBOX_CPU_COUNT` | `1` | -| `--virtualbox-disk-size` | `VIRTUALBOX_DISK_SIZE` | `20000` | -| `--virtualbox-host-dns-resolver` | `VIRTUALBOX_HOST_DNS_RESOLVER` | `false` | -| `--virtualbox-boot2docker-url` | `VIRTUALBOX_BOOT2DOCKER_URL` | _Latest boot2docker url_ | -| `--virtualbox-import-boot2docker-vm` | `VIRTUALBOX_BOOT2DOCKER_IMPORT_VM` | `boot2docker-vm` | -| `--virtualbox-hostonly-cidr` | `VIRTUALBOX_HOSTONLY_CIDR` | `192.168.99.1/24` | -| `--virtualbox-hostonly-nictype` | `VIRTUALBOX_HOSTONLY_NIC_TYPE` | `82540EM` | -| `--virtualbox-hostonly-nicpromisc` | `VIRTUALBOX_HOSTONLY_NIC_PROMISC` | `deny` | -| `--virtualbox-no-share` | `VIRTUALBOX_NO_SHARE` | `false` | -| `--virtualbox-no-dns-proxy` | `VIRTUALBOX_NO_DNS_PROXY` | `false` | -| `--virtualbox-no-vtx-check` | `VIRTUALBOX_NO_VTX_CHECK` | `false` | - -## Known Issues - -Vboxfs suffers from a [longstanding bug](https://www.virtualbox.org/ticket/9069) -causing [sendfile(2)](http://linux.die.net/man/2/sendfile) to serve cached file -contents. - -This will often cause problems when using a web server such as nginx to serve -static files from a shared volume. For development environments, a good -workaround is to disable sendfile in your server configuration. diff --git a/vendor/github.com/docker/machine/docs/drivers/vm-cloud.md b/vendor/github.com/docker/machine/docs/drivers/vm-cloud.md deleted file mode 100644 index 8be64c4e..00000000 --- a/vendor/github.com/docker/machine/docs/drivers/vm-cloud.md +++ /dev/null @@ -1,53 +0,0 @@ - - -# VMware vCloud Air - -Creates machines on [vCloud Air](http://vcloud.vmware.com) subscription service. You need an account within an existing subscription of vCloud Air VPC or Dedicated Cloud. - - $ docker-machine create --driver vmwarevcloudair --vmwarevcloudair-username=user --vmwarevcloudair-password=SECRET vm - -Options: - -- `--vmwarevcloudair-username`: **required** vCloud Air Username. -- `--vmwarevcloudair-password`: **required** vCloud Air Password. -- `--vmwarevcloudair-computeid`: Compute ID (if using Dedicated Cloud). -- `--vmwarevcloudair-vdcid`: Virtual Data Center ID. -- `--vmwarevcloudair-orgvdcnetwork`: Organization VDC Network to attach. -- `--vmwarevcloudair-edgegateway`: Organization Edge Gateway. -- `--vmwarevcloudair-publicip`: Org Public IP to use. -- `--vmwarevcloudair-catalog`: Catalog. -- `--vmwarevcloudair-catalogitem`: Catalog Item. -- `--vmwarevcloudair-provision`: Install Docker binaries. -- `--vmwarevcloudair-cpu-count`: VM CPU Count. -- `--vmwarevcloudair-memory-size`: VM Memory Size in MB. -- `--vmwarevcloudair-ssh-port`: SSH port. -- `--vmwarevcloudair-docker-port`: Docker port. - -The VMware vCloud Air driver will use the `Ubuntu Server 12.04 LTS (amd64 20140927)` image by default. - -Environment variables and default values: - -| CLI option | Environment variable | Default | -| --------------------------------- | ------------------------- | ------------------------------------------ | -| **`--vmwarevcloudair-username`** | `VCLOUDAIR_USERNAME` | - | -| **`--vmwarevcloudair-password`** | `VCLOUDAIR_PASSWORD` | - | -| `--vmwarevcloudair-computeid` | `VCLOUDAIR_COMPUTEID` | - | -| `--vmwarevcloudair-vdcid` | `VCLOUDAIR_VDCID` | - | -| `--vmwarevcloudair-orgvdcnetwork` | `VCLOUDAIR_ORGVDCNETWORK` | `-default-routed` | -| `--vmwarevcloudair-edgegateway` | `VCLOUDAIR_EDGEGATEWAY` | `` | -| `--vmwarevcloudair-publicip` | `VCLOUDAIR_PUBLICIP` | - | -| `--vmwarevcloudair-catalog` | `VCLOUDAIR_CATALOG` | `Public Catalog` | -| `--vmwarevcloudair-catalogitem` | `VCLOUDAIR_CATALOGITEM` | `Ubuntu Server 12.04 LTS (amd64 20140927)` | -| `--vmwarevcloudair-provision` | `VCLOUDAIR_PROVISION` | `true` | -| `--vmwarevcloudair-cpu-count` | `VCLOUDAIR_CPU_COUNT` | `1` | -| `--vmwarevcloudair-memory-size` | `VCLOUDAIR_MEMORY_SIZE` | `2048` | -| `--vmwarevcloudair-ssh-port` | `VCLOUDAIR_SSH_PORT` | `22` | -| `--vmwarevcloudair-docker-port` | `VCLOUDAIR_DOCKER_PORT` | `2376` | diff --git a/vendor/github.com/docker/machine/docs/drivers/vm-fusion.md b/vendor/github.com/docker/machine/docs/drivers/vm-fusion.md deleted file mode 100644 index f7c496af..00000000 --- a/vendor/github.com/docker/machine/docs/drivers/vm-fusion.md +++ /dev/null @@ -1,36 +0,0 @@ - - -# VMware Fusion - -Creates machines locally on [VMware Fusion](http://www.vmware.com/products/fusion). Requires VMware Fusion to be installed. - - $ docker-machine create --driver vmwarefusion vm - -Options: - -- `--vmwarefusion-boot2docker-url`: URL for boot2docker image. -- `--vmwarefusion-cpu-count`: Number of CPUs for the machine (-1 to use the number of CPUs available) -- `--vmwarefusion-disk-size`: Size of disk for host VM (in MB). -- `--vmwarefusion-memory-size`: Size of memory for host VM (in MB). -- `--vmwarefusion-no-share`: Disable the mount of your home directory. - -The VMware Fusion driver uses the latest boot2docker image. -See [frapposelli/boot2docker](https://github.com/frapposelli/boot2docker/tree/vmware-64bit) - -Environment variables and default values: - -| CLI option | Environment variable | Default | -| -------------------------------- | ------------------------ | ------------------------ | -| `--vmwarefusion-boot2docker-url` | `FUSION_BOOT2DOCKER_URL` | _Latest boot2docker url_ | -| `--vmwarefusion-cpu-count` | `FUSION_CPU_COUNT` | `1` | -| `--vmwarefusion-disk-size` | `FUSION_DISK_SIZE` | `20000` | -| `--vmwarefusion-memory-size` | `FUSION_MEMORY_SIZE` | `1024` | -| `--vmwarefusion-no-share` | `FUSION_NO_SHARE` | `false` | diff --git a/vendor/github.com/docker/machine/docs/drivers/vsphere.md b/vendor/github.com/docker/machine/docs/drivers/vsphere.md deleted file mode 100644 index f9423491..00000000 --- a/vendor/github.com/docker/machine/docs/drivers/vsphere.md +++ /dev/null @@ -1,50 +0,0 @@ - - -# VMware vSphere - -Creates machines on a [VMware vSphere](http://www.vmware.com/products/vsphere) Virtual Infrastructure. The machine must have a working vSphere ESXi installation. You can use a paid license or free 60 day trial license. Your installation may also include an optional VCenter server. - $ docker-machine create --driver vmwarevsphere --vmwarevsphere-username=user --vmwarevsphere-password=SECRET vm - -Options: - -- `--vmwarevsphere-username`: **required** vSphere Username. -- `--vmwarevsphere-password`: **required** vSphere Password. -- `--vmwarevsphere-cpu-count`: CPU number for Docker VM. -- `--vmwarevsphere-memory-size`: Size of memory for Docker VM (in MB). -- `--vmwarevsphere-disk-size`: Size of disk for Docker VM (in MB). -- `--vmwarevsphere-boot2docker-url`: URL for boot2docker image. -- `--vmwarevsphere-vcenter`: IP/hostname for vCenter (or ESXi if connecting directly to a single host). -- `--vmwarevsphere-vcenter-port`: vSphere Port for vCenter. -- `--vmwarevsphere-network`: Network where the Docker VM will be attached. -- `--vmwarevsphere-datastore`: Datastore for Docker VM. -- `--vmwarevsphere-datacenter`: Datacenter for Docker VM (must be set to `ha-datacenter` when connecting to a single host). -- `--vmwarevsphere-pool`: Resource pool for Docker VM. -- `--vmwarevsphere-hostsystem`: vSphere compute resource where the docker VM will be instantiated (use /* or / if using a cluster). - -The VMware vSphere driver uses the latest boot2docker image. - -Environment variables and default values: - -| CLI option | Environment variable | Default | -| --------------------------------- | ------------------------- | ------------------------ | -| **`--vmwarevsphere-username`** | `VSPHERE_USERNAME` | - | -| **`--vmwarevsphere-password`** | `VSPHERE_PASSWORD` | - | -| `--vmwarevsphere-cpu-count` | `VSPHERE_CPU_COUNT` | `2` | -| `--vmwarevsphere-memory-size` | `VSPHERE_MEMORY_SIZE` | `2048` | -| `--vmwarevsphere-boot2docker-url` | `VSPHERE_BOOT2DOCKER_URL` | _Latest boot2docker url_ | -| `--vmwarevsphere-vcenter` | `VSPHERE_VCENTER` | - | -| `--vmwarevsphere-vcenter-port` | `VSPHERE_VCENTER_PORT` | 443 | -| `--vmwarevsphere-disk-size` | `VSPHERE_DISK_SIZE` | `20000` | -| `--vmwarevsphere-network` | `VSPHERE_NETWORK` | - | -| `--vmwarevsphere-datastore` | `VSPHERE_DATASTORE` | - | -| `--vmwarevsphere-datacenter` | `VSPHERE_DATACENTER` | - | -| `--vmwarevsphere-pool` | `VSPHERE_POOL` | - | -| `--vmwarevsphere-hostsystem` | `VSPHERE_HOSTSYSTEM` | - | diff --git a/vendor/github.com/docker/machine/docs/examples/aws.md b/vendor/github.com/docker/machine/docs/examples/aws.md deleted file mode 100644 index fc3e2215..00000000 --- a/vendor/github.com/docker/machine/docs/examples/aws.md +++ /dev/null @@ -1,132 +0,0 @@ - - -# Amazon Web Services (AWS) EC2 example - -Follow along with this example to create a Dockerized Amazon Web Services (AWS) EC2 instance. - -### Step 1. Sign up for AWS and configure credentials - -1. If you are not already an AWS user, sign up for AWS to create an account and get root access to EC2 cloud computers. - - If you have an Amazon account, you can use it as your root user account. - -2. Create an IAM (Identity and Access Management) administrator user, an admin group, and a key pair associated with a region. - - From the AWS menus, select **Services** > **IAM** to get started. - - To create machines on AWS, you must supply two parameters: - - * an AWS Access Key ID - - * an AWS Secret Access Key - - See the AWS documentation on Setting Up with Amazon EC2. Follow the steps for "Create an IAM User" and "Create a Key Pair". - -### Step 2. Use Machine to create the instance - -1. Optionally, create an AWS credential file. - - You can create an `~/.aws/credentials` file to hold your AWS keys so that you don't have to type them every time you run the `docker-machine create` command. Here is an example of a credentials file. - - [default] - aws_access_key_id = AKID1234567890 - aws_secret_access_key = MY-SECRET-KEY - -2. Run `docker-machine create` with the `amazonec2` driver, your keys, and a name for the new instance. - - **Using a credentials file** - - If you specified your keys in a credentials file, this command looks like this to create an instance called `aws-sandbox`: - - docker-machine create --driver amazonec2 aws-sandbox - - **Specifying keys at the command line** - - If you don't have a credentials file, you can use the flags `--amazonec2-access-key` and `--amazonec2-secret-key` on the command line: - - $ docker-machine create --driver amazonec2 --amazonec2-access-key AKI******* --amazonec2-secret-key 8T93C******* aws-sandbox - - **Specifying a region** - - By default, the driver creates new instances in region us-east-1 (North Virginia). You can specify a different region by using the `--amazonec2-region` flag. For example, this command creates a machine called "aws-01" in us-west-1 (Northern California). - - $ docker-machine create --driver amazonec2 --amazonec2-region us-west-1 aws-01 - -3. Go to the AWS EC2 Dashboard to view the new instance. - - Log into AWS with your IAM credentials, and navigate to your EC2 Running Instances. - - ![instance on AWS EC2 Dashboard](../img/aws-instance-east.png) - - **Note**: Make sure you set the region appropriately from the menu in the upper right; otherwise, you won't see the new instance. If you did not specify a region as part of `docker-machine create` (with the optional `--amazonec2-region` flag), then the region will be US East, which is the default. - -3. At the command terminal, run `docker-machine ls`. - - $ docker-machine ls - NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS - aws-sandbox * amazonec2 Running tcp://52.90.113.128:2376 v1.10.0 - default - virtualbox Running tcp://192.168.99.100:2376 v1.10.0-rc4 - aws-sandbox - digitalocean Running tcp://104.131.43.236:2376 v1.9.1 - - The new `aws-sandbox` instance is running, and it is the active host as indicated by the asterisk (*). When you create a new machine, your command shell automatically connects to it. If for some reason your new machine is not the active host, you'll need to run `docker-machine env aws-sandbox`, followed by `eval $(docker-machine env aws-sandbox)` to connect to it. - -### Step 3. Run Docker commands on the instance - -1. Run some `docker-machine` commands to inspect the remote host. For example, `docker-machine ip ` gets the host IP address and `docker-machine inspect ` lists all the details. - - $ docker-machine ip - 192.168.99.100 - - $ docker-machine inspect aws-sandbox - { - "ConfigVersion": 3, - "Driver": { - "IPAddress": "52.90.113.128", - "MachineName": "aws-sandbox", - "SSHUser": "ubuntu", - "SSHPort": 22, - ... - -2. Verify Docker Engine is installed correctly by running `docker` commands. - - Start with something basic like `docker run hello-world`, or for a more interesting test, run a Dockerized webserver on your new remote machine. - - In this example, the `-p` option is used to expose port 80 from the `nginx` container and make it accessible on port `8000` of the `aws-sandbox` host. - - $ docker run -d -p 8000:80 --name webserver kitematic/hello-world-nginx - Unable to find image 'kitematic/hello-world-nginx:latest' locally - latest: Pulling from kitematic/hello-world-nginx - a285d7f063ea: Pull complete - 2d7baf27389b: Pull complete - ... - Digest: sha256:ec0ca6dcb034916784c988b4f2432716e2e92b995ac606e080c7a54b52b87066 - Status: Downloaded newer image for kitematic/hello-world-nginx:latest - 942dfb4a0eaae75bf26c9785ade4ff47ceb2ec2a152be82b9d7960e8b5777e65 - - In a web browser, go to `http://:8000` to bring up the webserver home page. You got the `` from the output of the `docker-machine ip ` command you ran in a previous step. Use the port you exposed in the `docker run` command. - - ![nginx webserver](../img/nginx-webserver.png) - -### Step 4. Use Machine to remove the instance - -To remove an instance and all of its containers and images, first stop the machine, then use `docker-machine rm`: - - $ docker-machine stop aws-sandbox - $ docker-machine rm aws-sandbox - Do you really want to remove "aws-sandbox"? (y/n): y - Successfully removed aws-sandbox -## Where to go next - -- [Understand Machine concepts](../concepts.md) -- [Docker Machine driver reference](../drivers/index.md) -- [Docker Machine subcommand reference](../reference/index.md) -- [Provision a Docker Swarm cluster with Docker Machine](/swarm/provision-with-machine.md) diff --git a/vendor/github.com/docker/machine/docs/examples/index.md b/vendor/github.com/docker/machine/docs/examples/index.md deleted file mode 100644 index 18a9d12b..00000000 --- a/vendor/github.com/docker/machine/docs/examples/index.md +++ /dev/null @@ -1,17 +0,0 @@ - - - -# Learn by example - -- [Digital Ocean Example](ocean.md) -- [AWS Example](aws.md) diff --git a/vendor/github.com/docker/machine/docs/examples/ocean.md b/vendor/github.com/docker/machine/docs/examples/ocean.md deleted file mode 100644 index 23e03606..00000000 --- a/vendor/github.com/docker/machine/docs/examples/ocean.md +++ /dev/null @@ -1,143 +0,0 @@ - - -# Digital Ocean example - -Follow along with this example to create a Dockerized Digital Ocean Droplet (cloud host). - -### Step 1. Create a Digital Ocean account - -If you have not done so already, go to Digital Ocean, create an account, and log in. - -### Step 2. Generate a personal access token - -To generate your access token: - - 1. Go to the Digital Ocean administrator console and click **API** in the header. - - ![Click API in Digital Ocean console](../img/ocean_click_api.png) - - 2. Click **Generate New Token** to get to the token generator. - - ![Generate token](../img/ocean_gen_token.png) - - 3. Give the token a clever name (e.g. "machine"), make sure the **Write (Optional)** checkbox is checked, and click **Generate Token**. - - ![Name and generate token](../img/ocean_token_create.png) - - 4. Grab (copy to clipboard) the generated big long hex string and store it somewhere safe. - - ![Copy and save personal access token](../img/ocean_save_token.png) - - This is the personal access token you'll use in the next step to create your cloud server. - -### Step 3. Use Machine to create the Droplet - -1. Run `docker-machine create` with the `digitalocean` driver and pass your key to the `--digitalocean-access-token` flag, along with a name for the new cloud server. - - For this example, we'll call our new Droplet "docker-sandbox". - - $ docker-machine create --driver digitalocean --digitalocean-access-token xxxxx docker-sandbox - Running pre-create checks... - Creating machine... - (docker-sandbox) OUT | Creating SSH key... - (docker-sandbox) OUT | Creating Digital Ocean droplet... - (docker-sandbox) OUT | Waiting for IP address to be assigned to the Droplet... - Waiting for machine to be running, this may take a few minutes... - Machine is running, waiting for SSH to be available... - Detecting operating system of created instance... - Detecting the provisioner... - Provisioning created instance... - Copying certs to the local machine directory... - Copying certs to the remote machine... - Setting Docker configuration on the remote daemon... - To see how to connect Docker to this machine, run: docker-machine env docker-sandbox - - When the Droplet is created, Docker generates a unique SSH key and stores it on your local system in `~/.docker/machines`. Initially, this is used to provision the host. Later, it's used under the hood to access the Droplet directly with the `docker-machine ssh` command. Docker Engine is installed on the cloud server and the daemon is configured to accept remote connections over TCP using TLS for authentication. - -2. Go to the Digital Ocean console to view the new Droplet. - - ![Droplet in Digital Ocean created with Machine](../img/ocean_droplet.png) - -3. At the command terminal, run `docker-machine ls`. - - $ docker-machine ls - NAME ACTIVE DRIVER STATE URL SWARM - default - virtualbox Running tcp://192.168.99.100:2376 - docker-sandbox * digitalocean Running tcp://45.55.139.48:2376 - - The new `docker-sandbox` machine is running, and it is the active host as indicated by the asterisk (*). When you create a new machine, your command shell automatically connects to it. If for some reason your new machine is not the active host, you'll need to run `docker-machine env docker-sandbox`, followed by `eval $(docker-machine env docker-sandbox)` to connect to it. - -### Step 4. Run Docker commands on the Droplet - -1. Run some `docker-machine` commands to inspect the remote host. For example, `docker-machine ip ` gets the host IP adddress and `docker-machine inspect ` lists all the details. - - $ docker-machine ip docker-sandbox - 104.131.43.236 - - $ docker-machine inspect docker-sandbox - { - "ConfigVersion": 3, - "Driver": { - "IPAddress": "104.131.43.236", - "MachineName": "docker-sandbox", - "SSHUser": "root", - "SSHPort": 22, - "SSHKeyPath": "/Users/samanthastevens/.docker/machine/machines/docker-sandbox/id_rsa", - "StorePath": "/Users/samanthastevens/.docker/machine", - "SwarmMaster": false, - "SwarmHost": "tcp://0.0.0.0:3376", - "SwarmDiscovery": "", - ... - -2. Verify Docker Engine is installed correctly by running `docker` commands. - - Start with something basic like `docker run hello-world`, or for a more interesting test, run a Dockerized webserver on your new remote machine. - - In this example, the `-p` option is used to expose port 80 from the `nginx` container and make it accessible on port `8000` of the `docker-sandbox` host. - - $ docker run -d -p 8000:80 --name webserver kitematic/hello-world-nginx - Unable to find image 'kitematic/hello-world-nginx:latest' locally - latest: Pulling from kitematic/hello-world-nginx - a285d7f063ea: Pull complete - 2d7baf27389b: Pull complete - ... - Digest: sha256:ec0ca6dcb034916784c988b4f2432716e2e92b995ac606e080c7a54b52b87066 - Status: Downloaded newer image for kitematic/hello-world-nginx:latest - 942dfb4a0eaae75bf26c9785ade4ff47ceb2ec2a152be82b9d7960e8b5777e65 - - In a web browser, go to `http://:8000` to bring up the webserver home page. You got the `` from the output of the `docker-machine ip ` command you ran in a previous step. Use the port you exposed in the `docker run` command. - - ![nginx webserver](../img/nginx-webserver.png) - -### Step 5. Use Machine to remove the Droplet - -To remove a host and all of its containers and images, first stop the machine, then use `docker-machine rm`: - - $ docker-machine stop docker-sandbox - $ docker-machine rm docker-sandbox - Do you really want to remove "docker-sandbox"? (y/n): y - Successfully removed docker-sandbox - - $ docker-machine ls - NAME ACTIVE DRIVER STATE URL SWARM - default * virtualbox Running tcp:////xxx.xxx.xx.xxx:xxxx - -If you monitor the Digital Ocean console while you run these commands, you will see it update first to reflect that the Droplet was stopped, and then removed. - -If you create a host with Docker Machine, but remove it through the cloud provider console, Machine will lose track of the server status. So please use the `docker-machine rm` command for hosts you create with `docker-machine create`. - -## Where to go next - -- [Understand Machine concepts](../concepts.md) -- [Docker Machine driver reference](../drivers/index.md) -- [Docker Machine subcommand reference](../reference/index.md) -- [Provision a Docker Swarm cluster with Docker Machine](/swarm/provision-with-machine.md) diff --git a/vendor/github.com/docker/machine/docs/get-started-cloud.md b/vendor/github.com/docker/machine/docs/get-started-cloud.md deleted file mode 100644 index f84e8d1f..00000000 --- a/vendor/github.com/docker/machine/docs/get-started-cloud.md +++ /dev/null @@ -1,87 +0,0 @@ - - -# Use Docker Machine to provision hosts on cloud providers - -Docker Machine driver plugins are available for many cloud platforms, so you can use Machine to provision cloud hosts. When you use Docker Machine for provisioning, you create cloud hosts with Docker Engine installed on them. - -You'll need to install and run Docker Machine, and create an account with the cloud provider. - -Then you provide account verification, security credentials, and configuration options for the providers as flags to `docker-machine create`. The flags are unique for each cloud-specific driver. For instance, to pass a Digital Ocean access token you use the `--digitalocean-access-token` flag. Take a look at the examples below for Digital Ocean and AWS. - -## Examples - -### Digital Ocean - -For Digital Ocean, this command creates a Droplet (cloud host) called "docker-sandbox". - - $ docker-machine create --driver digitalocean --digitalocean-access-token xxxxx docker-sandbox - -For a step-by-step guide on using Machine to create Docker hosts on Digital Ocean, see the [Digital Ocean Example](examples/ocean.md). - -### Amazon Web Services (AWS) - -For AWS EC2, this command creates an instance called "aws-sandbox": - - $ docker-machine create --driver amazonec2 --amazonec2-access-key AKI******* --amazonec2-secret-key 8T93C******* aws-sandbox - -For a step-by-step guide on using Machine to create Dockerized AWS instances, see the [Amazon Web Services (AWS) example](examples/aws.md). - -## The docker-machine create command - -The `docker-machine create` command typically requires that you specify, at a minimum: - -* `--driver` - to indicate the provider on which to create the machine (VirtualBox, DigitalOcean, AWS, and so on) - -* Account verification and security credentials (for cloud providers), specific to the cloud service you are using - -* `` - name of the host you want to create - -For convenience, `docker-machine` will use sensible defaults for choosing settings such as the image that the server is based on, but you override the defaults using the respective flags (e.g. `--digitalocean-image`). This is useful if, for example, you want to create a cloud server with a lot of memory and CPUs (by default `docker-machine` creates a small server). - -For a full list of the flags/settings available and their defaults, see the output of `docker-machine create -h` at the command line, the create command in the Machine command line reference, and driver options and operating system defaults in the Machine driver reference. - -## Drivers for cloud providers - -When you install Docker Machine, you get a set of drivers for various cloud providers (like Amazon Web Services, Digital Ocean, or Microsoft Azure) and local providers (like Oracle VirtualBox, VMWare Fusion, or Microsoft Hyper-V). - -See Docker Machine driver reference for details on the drivers, including required flags and configuration options (which vary by provider). - -## 3rd-party driver plugins - - Several Docker Machine driver plugins for use with other cloud platforms are available from 3rd party contributors. These are use-at-your-own-risk plugins, not maintained by or formally associated with Docker. - - See Available driver plugins in the docker/machine repo on GitHub. - -## Adding a host without a driver - -You can add a host to Docker which only has a URL and no driver. Then you can use the machine name you provide here for an existing host so you don’t have to type out the URL every time you run a Docker command. - - $ docker-machine create --url=tcp://50.134.234.20:2376 custombox - $ docker-machine ls - NAME ACTIVE DRIVER STATE URL - custombox * none Running tcp://50.134.234.20:2376 - -## Using Machine to provision Docker Swarm clusters - -Docker Machine can also provision Docker Swarm clusters. This can be used with any driver and will be secured with TLS. - -* To get started with Swarm, see How to get Docker Swarm. - -* To learn how to use Machine to provision a Swarm cluster, see Provision a Swarm cluster with Docker Machine. - -## Where to go next -- Example: Provision Dockerized [Digital Ocean Droplets](examples/ocean.md) -- Example: Provision Dockerized [AWS EC2 Instances](examples/aws.md) -- [Understand Machine concepts](concepts.md) -- [Docker Machine driver reference](drivers/index.md) -- [Docker Machine subcommand reference](reference/index.md) -- [Provision a Docker Swarm cluster with Docker Machine](/swarm/provision-with-machine.md) diff --git a/vendor/github.com/docker/machine/docs/get-started.md b/vendor/github.com/docker/machine/docs/get-started.md deleted file mode 100644 index 3db5e13f..00000000 --- a/vendor/github.com/docker/machine/docs/get-started.md +++ /dev/null @@ -1,251 +0,0 @@ - - -# Get started with Docker Machine and a local VM - -Let's take a look at using `docker-machine` for creating, using, and managing a -Docker host inside of VirtualBox. - -## Prerequisites - -* Make sure you have the latest VirtualBox correctly installed -on your system. If you used Toolbox for Mac or Windows to install Docker Machine, VirtualBox is automatically installed. - -* If you used the Quickstart Terminal to launch your first machine and set your terminal environment to point to it, a default machine was automatically created. If this is the case, you can still follow along with these steps, but create another machine and name it something other than "default" (e.g., staging or sandbox). - -## Use Machine to run Docker containers - -To run a Docker container, you: - -* create a new (or start an existing) Docker virtual machine -* switch your environment to your new VM -* use the docker client to create, load, and manage containers - -Once you create a machine, you can reuse it as often as you like. Like any VirtualBox VM, it maintains its configuration between uses. - -The examples here show how to create and start a machine, run Docker commands, and work with containers. - -## Create a machine - -1. Open a command shell or terminal window. - - These command examples shows a Bash shell. For a different shell, such as C Shell, the same commands are the same except where noted. - -2. Use `docker-machine ls` to list available machines. - - In this example, no machines have been created yet. - - $ docker-machine ls - NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS - -3. Create a machine. - - Run the `docker-machine create` command, passing the string `virtualbox` to the `--driver` flag. The final argument is the name of the machine. If this is your first machine, name it `default`. If you already have a "default" machine, choose another name for this new machine. - - $ docker-machine create --driver virtualbox default - Running pre-create checks... - Creating machine... - (staging) Copying /Users/ripley/.docker/machine/cache/boot2docker.iso to /Users/ripley/.docker/machine/machines/default/boot2docker.iso... - (staging) Creating VirtualBox VM... - (staging) Creating SSH key... - (staging) Starting the VM... - (staging) Waiting for an IP... - Waiting for machine to be running, this may take a few minutes... - Machine is running, waiting for SSH to be available... - Detecting operating system of created instance... - Detecting the provisioner... - Provisioning with boot2docker... - Copying certs to the local machine directory... - Copying certs to the remote machine... - Setting Docker configuration on the remote daemon... - Checking connection to Docker... - Docker is up and running! - To see how to connect Docker to this machine, run: docker-machine env default - - This command downloads a lightweight Linux distribution -(boot2docker) with the Docker daemon installed, and creates and starts a VirtualBox VM with Docker running. - -4. List available machines again to see your newly minted machine. - - $ docker-machine ls - NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS - default * virtualbox Running tcp://192.168.99.187:2376 v1.9.1 - -5. Get the environment commands for your new VM. - - As noted in the output of the `docker-machine create` command, you need to tell Docker to talk to the new machine. You can do this with the `docker-machine env` command. - - $ docker-machine env default - export DOCKER_TLS_VERIFY="1" - export DOCKER_HOST="tcp://172.16.62.130:2376" - export DOCKER_CERT_PATH="/Users//.docker/machine/machines/default" - export DOCKER_MACHINE_NAME="default" - # Run this command to configure your shell: - # eval "$(docker-machine env default)" - -6. Connect your shell to the new machine. - - $ eval "$(docker-machine env default)" - - **Note**: If you are using `fish`, or a Windows shell such as - Powershell/`cmd.exe` the above method will not work as described. - Instead, see the `env` command's documentation - to learn how to set the environment variables for your shell. - - This sets environment variables for the current shell that the Docker client will read which specify the TLS settings. You need to do this each time you open a new shell or restart your machine. - - You can now run Docker commands on this host. - -## Run containers and experiment with Machine commands - -Run a container with `docker run` to verify your set up. - -1. Use `docker run` to download and run `busybox` with a simple 'echo' command. - - $ docker run busybox echo hello world - Unable to find image 'busybox' locally - Pulling repository busybox - e72ac664f4f0: Download complete - 511136ea3c5a: Download complete - df7546f9f060: Download complete - e433a6c5b276: Download complete - hello world - -2. Get the host IP address. - - Any exposed ports are available on the Docker host’s IP address, which you can get using the `docker-machine ip` command: - - $ docker-machine ip default - 192.168.99.100 - -3. Run a webserver (nginx) in a container with the following command: - - $ docker run -d -p 8000:80 nginx - - When the image is finished pulling, you can hit the server at port 8000 on the IP address given to you by `docker-machine ip`. For instance: - - $ curl $(docker-machine ip default):8000 - - - - Welcome to nginx! - - - -

Welcome to nginx!

-

If you see this page, the nginx web server is successfully installed and - working. Further configuration is required.

- -

For online documentation and support please refer to - nginx.org.
- Commercial support is available at - nginx.com.

- -

Thank you for using nginx.

- - - - You can create and manage as many local VMs running Docker as you please; just run `docker-machine create` again. All created machines will appear in the output of `docker-machine ls`. - -## Start and stop machines - -If you are finished using a host for the time being, you can stop it with `docker-machine stop` and later start it again with `docker-machine start`. - - $ docker-machine stop default - $ docker-machine start default - -## Operate on machines without specifying the name - -Some `docker-machine` commands will assume that the given operation should be run on a machine named `default` (if it exists) if no machine name is specified. Because using a local VM named `default` is such a common pattern, this allows you to save some typing on the most frequently used Machine commands. - -For example: - - $ docker-machine stop - Stopping "default".... - Machine "default" was stopped. - - $ docker-machine start - Starting "default"... - (default) Waiting for an IP... - Machine "default" was started. - Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command. - - $ eval $(docker-machine env) - - $ docker-machine ip - 192.168.99.100 - -Commands that follow this style are: - - - `docker-machine config` - - `docker-machine env` - - `docker-machine inspect` - - `docker-machine ip` - - `docker-machine kill` - - `docker-machine provision` - - `docker-machine regenerate-certs` - - `docker-machine restart` - - `docker-machine ssh` - - `docker-machine start` - - `docker-machine status` - - `docker-machine stop` - - `docker-machine upgrade` - - `docker-machine url` - -For machines other than `default`, and commands other than those listed above, you must always specify the name explicitly as an argument. - -## Start local machines on startup - -In order to ensure that the Docker client is automatically configured at the start of each shell session, some users like to embed `eval $(docker-machine env default)` in their shell profiles (e.g., the `~/.bash_profile` file). However, this fails if the `default` machine is not running. If desired, you can configure your system to start the `default` machine automatically. - -Here is an example of how to configure this on OS X. - -Create a file called `com.docker.machine.default.plist` under `~/Library/LaunchAgents` with the following content: - -``` - - - - - EnvironmentVariables - - PATH - /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin - - Label - com.docker.machine.default - ProgramArguments - - /usr/local/bin/docker-machine - start - default - - RunAtLoad - - - -``` - -You can change the `default` string above to make this `LaunchAgent` start any machine(s) you desire. - -## Where to go next - -- Provision multiple Docker hosts [on your cloud provider](get-started-cloud.md) -- [Understand Machine concepts](concepts.md) -- Docker Machine driver reference -- Docker Machine subcommand reference diff --git a/vendor/github.com/docker/machine/docs/img/aws-instance-east.png b/vendor/github.com/docker/machine/docs/img/aws-instance-east.png deleted file mode 100644 index 2a4007899280f5c2cfe583309bb0873904d30e52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356531 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

nurdfiKgE3o*Bv4 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 =eo#mD}W8QKA+vxn=vr`{e@T}HRO(gK!0->R`k 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

R;{}>_erP3Wp6OA_ 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 SjL}g4P91mu5%a_O>;Df%xaoWV diff --git a/vendor/github.com/docker/machine/docs/img/aws-instance-west.png b/vendor/github.com/docker/machine/docs/img/aws-instance-west.png deleted file mode 100644 index 534f0184eaf5e517d22ce766e1dc97644164b4a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 318623 zcmdS9Ra6~aur&%ngS!O{?(QDk3GPm?5P}5=gpIqqOK^AB;O?%$CBTM_!=B}G{+I5@-uI5-4CROG*R_&vDv;o#7^ z9AsoPm1Jb7HQii3IefN-gHw!5O-Ip8UMCs_K9+=s5TR0ha9J>hJL3;nsESPp!BIwK zE??6$H2Kv+{XWQ6jsOQ~_05BP!D$t6yOguK^0)!0An&TPUv=XfpFQ zH^eoXu< z>s4Lq2>G!CNX5&hwStF}qs|#1YG}lfh^^*GlVU=K(+wEHOpiv=Hi@o}!g0XabJw2A z-MeB|&)kzNb+`Hn#(^TjQ@Z@FM8hHcq6cffxo&jG*VS0L{HV=Xr33AH#$O<(1 z3}boApKQV>GV&X_{L*|b&cF`p$%vyfJSvCje3PF`0jF##JXSwGWisdZrZIjRnrh?{ zRo2U=MTN)@wHNizSfE=6KF4Wr*weRyUWt#YG zhSF#1wg?&PYr~aW`-j$VGjOWg7{JIgknG`1El{Td2Xz5Q9*cxHWBDIG;f>9Hc$y==rxf%a4LiS17|*@7rfKN zzQZ{WmoI3WBPKygwjeY>5eRg)5V=4IAK<>m%RoQr_xTFnO~?^m_1pR@zTewkq}||> zYgTV^BuzIa7G)~i(4R$M&AoCu9Tw#XqiB{7sfCrAnB{spDCbzpQDkyIU2dBgff2leFiQ(OE|V!YRhm)^cSLt& zcS3h;-iYUbVXF!Q?P_!ZlI#ez(b|D8zpe%atTyY#*WfRNu)-Jn4fn;q?g=rd$FL4v z{-PK(9lGB~cFn(b^A_(Gm%zynIXMvgJ$bEgLww!yL<2^YPP9<{N*jW|7Lpp`9OC$a zbx*)DflFHFeHNa01ox1~{&y?khCuJsr;sOgb@dsk8C?#oIL35NeGab=SDhw(TXso2 z<3WcCMyg2(tx1lG&c)%yUN$`IAs1@u@1w_!$2|`x5A6;$Kmj+NEa*n*##MP##8j|U ziByhM)N0n~h}W@{{48hCLFP~HjQyVUJ^w{cO<`Igwy4#xM!H7-vZynyvrR;yN3rK4 zB=3b7GfO@|K5PUl_ET(Gmc1JKwBqzp)+>LVW1M4!eTP#+b5ygsqxeEt3wv`>v%Uk> z!qpPx>iqKC1>Dn%`HpJdN|ojN6}46N<(>l3p9=H0O9yAE=cY@(O4=pQb36`5&8*Gb zKb#>JKO&*h5Dv&&1npphU`*s#WDU&7FpoiTuj-DeR z+#>qJ{hKS1h@en>J4pv!*M;X|o5&t#46_=W9Ni7gh;WH0<}DWH4(`_I zoMk`77&3-o*5^q!5)T6_F&qUM7qATDjopTq0tQ-o7D^@hE!1G)InUlkfhS13br# z+T$6APlrY0=9zm_EXUqxw6-o2B$M$i+4oVG(;T+(U&Vyza|(6hmy(t&Yf-!yz38S{ zYuKDqPDZPK_b6ejOC~_MX~l{dta*4Pnz+&PQ*%7i>ZWFYn~$$dns`*`aYU0q~b~{nn-QPV} zHCJU&wW0r~&aAH!5IdU{>{Qso?6kQ`TFYu6m_e0d-j&xbVGVJ4_gOIIvv(i2zqM1K zy0rhVer##UCE^KUH1t=24i}MY+82eLc++eO0pL2gC&JXDX|1)r`sokRN?Nw$Iz$J$ zc(}4uW4f8scDWn3J+tc%2w#ocz$;1WP72IL|0a;Spd78d3p8r|BcEx#9=JWUowU6G zst2Ws%lozhpN$grT2n-)?f?a1xkgbZ2(;xxbhhMkELgTX<00(Dzx}Oad*O0pdxN*{ zOLN6I#4 z?`A2?_xmu^*kDnwM$l=n@t?;zpaw$|10#|ujr#^#K>|`)>6`0TWH`6?`xH3lYAN|Q zQ;R{L{Gfb+eFvoG;_O2mOWp`L+1OGf`yU@@Cxrkb#u|pDBrb5GLSrkE^va&~`4w^> zau|;n4-Z8t;J((t`QiT+sf+9!uwE?RD^5Ub4r!ePJsSvF+p4lqNqEcMiX2=9g`ZqN zmz#di=L`oY1*aq{t>X=UVTxj*qq`!Z^fzhc3{q}^i*hPdltQvKB{V^=M(=Dj{nfc< z>um7xGwKUMXA~jfN=r~w08=4TL;&4gr6Mpegf98H54h#CXPcqKfP{MGGd|S?e7Mc^ zo#}b(_60_)*`kuX2@9aH`2YQ>zfg+$N|OL2$~5@(g@S8dkqZ$6UZx-C|2hQ*$4Olm zq<;+|zV;R1f#f-e4rJ%*?*88o{=aVre!zV)C42D4My}dLzzl7bi2j$e3Q)=CryVW-bBU$a6@F`yOkv59a?_aVVQ7~a#xG2< zGT^W${R0>M(lP~nm<}bG`VFWOTVYiTOnrPHCL-^&v40r$JAqb{47p`ttjHjQibF;J3!wR$ zfx{G6c%fOsEI>ER?MB#Ezn?%9tBpHAxGjjMUj~tRrQltYYgumrt-L-h`6&p`pbS>FL0}Iu?~+$LklL1Y71r@y`bB%b`Ut$HU1+{XzLV z62Ro2Yf4Uzh{o$JhaP`ORh6%xRQzO?0i$#h17ww71zV;>(a+kuzJDIwCuYWqj5`Lx zYZ`Ta0$Qs%yEA#Ta^R&JIw@cZG&VNNmiC*H`o zow!{#Fwg@2{LF^l+K zOhZx#DfIaubMqhQFE~Ucuvv>DAo`zoikZY_6?I1N7_~b6{7Y;jqUiG#T?Zg&-yg!C zx9P@U7hb+Y@}Ow?sc37jfAPYCbOCjdUNKi+{_ga~Q+`p$;DOxtxMKwX?1*y^NY&Iu zO{-g-Ih3SOEVSnjJxOXebOF35&d!5R&DRL?yex0nxBk=Qz+K)q!~B|Z%EVXtb4`-f zAUBN4U&ez!R^gpq(bK$5%P`*8}-z82}J19{BtU z{0sb1!M1;dNWVX#6}ORG)WPFzS7y`W#Wuu$ehb<@zdyIzHE`ey-Rb!YO0ywfB~10u zl6ZovN7g7&t*rsDVzZ=ru^o2CwRc|MKOw6eC&fpr*A8g5>+3stxT?(>)`^$fN3VzrV}|KtQDTFr!CEMjaMO}o49uRwo6C+)Q+NpTex`&g-u*cRDX=e~jCKgS`g;*wTy~s6Jrr%A4o)eBkTfu%nVB zu)@QZ_umT?jvi=5n*Sj+Hf;rH{?|1px%pf5*wLT?u{PM1m#@z=WMDfn@9d-x{QLwd z>YS9rWcHV8|HuMfpIpCvyt*sf^nKVpE5+r&%||QL@Y%w@j!Z+A{{DRX_VG5)=W+iT z^0OlvPtb_+*yX?JD=|*$W6a0I{TGN>n-`-%-X@?-G(dw$;`KxR=Piev=x;t}4vU4G zUE!nHkJtdLc=N-PeUbx%$bB<2BjDB1fw)5FVtiOT8X>D*HS{Rm9C{RjuP)RjA4}$p zkB4{eOS-oGpJDJhafWk6k@acL(8~)k2m7A*@ENpVzU| zG{&c=`DMsIHctMh3j$%%i0x9*4>TK*_MAVrQMq)6!oShYmJ&?w$PNt*g8e;+k3gU( zX0?y8u1L0IW?!Fp7r*=OJzjH#`BL$ZSUQ~>BCd1%V|srDS0>=${YLCH`8bJw24>W{ zw`(^W?ekw+i2qAse6gAxTdH*BePrGu|HiG-u zfbWtIN?i8lAPK15>}B8L^kkD#M_KT-snJOLbyS$70__M@{1@QC@MGSjC2>8(U{Kl~ zF0JIhBSJys4NVs=pnR!`{$_?1yneeVwVO`7d*T^j$)QCK0B3B;J@YRcpx=$&ZY5s% zOLq3y>23KwT-`iaV{+dtz9;?9Oh=Oqv3=Y98FbWWIfy(ya}1o+ z28<%ng{Bi=pTfi>_#MVGFlWtUvlJ8V?qLp*%=(GP^_@;h!f8zQVp;;88D*CtjT# zjCT2_cxlO6Kwj<_Dzq7y^=oqu4-ZqUW=fI?|14MPvSv#B_-;8OL_{*3b|_fP9rt+A zF$gp>GZT|YKV@;YHnB{-L6B~P;peST9cvI%&gT6qYf+AXYb$kQwKwcF=zG&T_u{NX zN4ph3^u-)Ba0cwa7I}UaT%+vX2M@h$L-EdlFfKOmI@Rt!DL5=3T&kU79H#13JP8DP zDMT5w_%~F?u$I4{9}oioXC}hBo=s9TDsVn$_Ak8~Y6yEOE-RaCb>5_-rIqnkEHVwJ zgr^iTtk9yb(5*_-sWH;s-@kt4e3I>o@tRK%zJrc*$;A6Oq}q40veRMzkofl{{oeLU zjj^XcF)AX~kKr0wIcgdj=@ai3r`0%zIJ^2(kvDtaN)6Di^@g~e+c$wHvsKi9kz3GB z*|__tRm^0xNklMVq{lPl>_IYo^l^Z8d+=bxog3#mM)=Q44L(bxyaEON+emw4dxp=< zh?L(%Jcs77DZ6?5(MOZreWBe4TJMrxeBcZ3P_6TP1WGmi>gYqPXlJP>tT0VPJfC_^ zB3QF`UaBJ4RiJ~|%E1VWAlk;7SFHrWUa@3_eJcHF(bQ%VNBjmlZ+wo&Eyr9H z?*QDVcK6;6kENdCjdy*ZFSlv$AH5VTtCI{kKDwo9D{w#x&%;s2v}vz7HV>!-+V|sh z%X#q&d0Q@zo%$89AS{mRcPVk*uC5VzVxCFFa2o-can3j=U*iA=AHBc9iMZdEzMssU z!S%?=T(yZ8dPzl@Ku>LKJ26nylT8kB{FUrvik{CvJ}+i;v7?7umE z**7&tq`W{D{YGfcw^HHJDAOniTCIjDP-3U zekN!B!Ut3IAv!%FG|(&#+J71p^OE)o8-6LoxY35sfAM|1%8m6+tgEhOGld_~wRnBF zT)ZP>(a}Wb*MFbNY2K^olXeeAqYaA+uiEpj)2^#U-l z;uEZ7x@bNLuz@EID9%mVzL{R*P_S|%?Z$b$#M?ke8B-SH(hznAyoskUl`lm+=>mSG zwwe>NIKjfBVUY<t7T*`x*B02|GK`*XsEV7PXvY=fW7{{1@#E@v=L@ej7?l$E?{ z(m~n4OP9%=m*=@#4r#yQ@CYE>7i`SIrxzLOmC_~RdA?tw+Zs3MS#EUz5X^@o3Gal( z2TOb0ma1jEBjE7L5nZY?H-EFoD2<=iHKpgB6Ld zM_i-_lu@Xe3Rw)x0O6)1sXwgWp8&$4&5IiRJ~vtEjVGU(&U4>%AD!nZPD;<=^p){xB^XFQQN|tK&Vg@V zPCWn7G1T^8K2_sBQsiT@V{bV;=)gJwjjH#~P9lfAse{W!A3MYzb8EoQbXM;Phd!xF1u z-B_(m5J_{o;R#X7y@Y9EjlKgYOmQE8HOk^?wUl`QybI-&_aq-&f6`F!2zLU%>yIur z@F{a69+L;y9RMy*uy4VPC@5#E%(7Qc1O9)*SgX%Wyt*_v^6htCcw{EQGPG$g`>-IS z*s3l2f_*fBUOKGPO5u$z3${fc6OK}Mz9eB@Y4U*s1e4vcKB249pm#iKFlsUnatvF( z_Om&xv!I)!H8&5Aa4Q^?qkbWU=y#+2%~h`ZBSL(=^VdXDIa_csKB!Aj#QXiu5Jap7 zi+*cz7Q9~BsQ7~qcxBqB8jIAi?$RXp?Wn;@Zwit4#LdSf3%_VA2qO|L7YY~tW07*WG#m>cFNql zhf)~5C^7iRP|9_tc(pjPPRk~yv)t{zgp+8XLqWAf-jkoIYvM1HoR>HH24zq* z!XshaH??V?xC>rL*#?D_COU;b#QdE|19fhN8_H4TPvTBrBXduG(s`IdBh)&5QX}yN zaQ$-*iZwzW$Eow=e*%Fe4gun*tdm8XBj;=nBn2$aRRw3nK0_pjBL8O?rHJOlDT>ztg4NA5%d~P6sUCPI>Ga=HFWfG zoP4LF@=%;OyQ@`2P3yF5?IT3{fWZkKl12|gQZ^frGWqXWt#6nnyKoRp;W6BrkIn|( zt}T2x8eOCwY3FJmZu)SMd_xlA8asKhq#D*)f8niz_h7w*v`(ELQ0qO2zi@gkw50p! zN%MnafAH>9@4Uh?p`|b|ZbZQDRQrJTT$!xJF&u|>1wZ06YS_MUl#EJgwLm(!_^*ti z=sagR)h7O_?NYz$IHB~pn^(X_ee@-FpW<$Gr6sPVXpY8ArUHT_eZK&N4&-hhK}`2u zqRr)Zjj{5Y-ft68@4+Oi?!M1HkJo-bCESf!W*G|Sr;T+F<&K-|QU)LNw?`)0q>xN) z#ruNJuR;^Q^zu7wmAj(i+wmP35P#Py1$SydHM_c(s%3SNBzvEKQ{4pp9DK##LdL!M z6dV;={xR%bwf4<>;=?mjw%w9I$wjU}Vl25? zK|!|ks-vYErJG^E(9u%DUhTrQj2Kbr5e@6k#~2_LbZ%8Yt0vlki zV5Xj>-BDlNxM__tEI{hY#z;?EQzmrVk>24-X~PNjM{p)iZLjnAPVkVzR>%$cUWrSb zCT2!)y}i%$*$hqn4D5Qu@`B?Ur(ke41zbB7Tdo0CmsCIT_v>1Po3%93un=I+VeOhb z{1RktCwIHQl3=tQkn}JpD;8vFQMZz)nwQy&95LM!Vov@d4gt_T0G8lFCvrhE_g(&w zUH&upOW;O9-z)7)*S8Z&##EM~J{ef)f%tXyHeZ{TZL!@r_9?Je3Xo284rD0m)9zk> zr7<%+g~c;L-K(`Swp^=&#%r;x$IyAm%}t%!8SBlsIA>s6Gaf$1sd!pv#iM{9zDm(7Ijz_*5pZ zt-JjPQ{s_=I0{kacuMhN)2;{A+HTO3%K?@BAFDV(yIM0>?s~U__Eez9+aR(nd%EZ{ zT~+okT&k{-Bp6nXIR`cotS4ME#}CscLwn%xokO9uIDdSO*wJkn z!4grVQn!lbuY4zw@jD8EHBo>QQ&T#$9acv^Y5Te8i7a~68EqsL#fIjt!-SxVrrGn3 zbx&7vcuo$J7tkc<(Pi6C+5-hOYy)1Fv!ed`l-U}~Qv3IC*9pTP$QRBWFSCuI9PPfr zgN0=Oy&FC^*WM_nm|GU2nyG;S$Qj9MG}ZX!<82x1oZ0~?cH2owFmFES7OxSP3+rIS zDu#9P*@sWA3m*aP`}+`Xcsu_?3&ctm9JNT1l*;S2ZFr?;e$x&9YNoPPr3540^5%kS zl4Rw~%!Bm`g+vNc_-7wusoq_Zg!3c!68sp~%6^%fwKF&2hId>v*p3cprD@^W#3Obi z%Wx7>xJ{~bbhn0*A_fW%Z(Yy#!jQiNAxVOW2|eVPY!$KTF(k2CGvm`ns}u5;oY)u! z!zHTASMt3M6%Z(U3`@ywNTO%6@cgUM!FQOLB1mTRCHcnX`11_otk4OT&GOMMP~>k4 z5fw5yLvHntVlVi`XjuBy>`tE;CQhjqZFC+qPA#^gG>G#(ktAK|5hsHsD9?>PvMAAh zF5WG*O+k7g{7stzn-B$)D9i3hU+p)@=8u@w$HAgHCXn+7HzmoOacCo9Ef0Y9Cn}Vk z>#t7{-N9SK(j39x^|pSc!Up94hVy{oLMmEsCDoV#(J|8;U&z%Vrkj4+J;3$U3z%0R z8`lrzq_j>9I^=-wo?Iq<=Xnf;?*0L;5ViGLi(15m#J&&%R$zqA;6e9Hw0%?ZnP0;@ zYy)W3f#2-G>7!kSBvn)FF9vevvO(t1n^~YO*sJ_7|9_;%5DURhJOSPc*8x1qp76Ny zLlDC?|3ebUysz4j798^f_Ty~5s7&ns0*5)AJ(?1xyOc0A0-F;_!PFI3f3Vtv>&j~?NUwYzuP@F0AXrWJB+{c?BJgCX9k(&IRrX#7sv_TRHc-E6Q-lg2C zDxo4{M*^#EGh8F%D&+drg&!PMivn=~vO!fSZ_0~mmj~A}cn3^AhaW|W>P6l*Af}9# zOW$D|@lXBQcfgPpO6?>gan++(e94HLSHDXTbR_9q}KPrRK4PKHvm2wdN9#HfUlS>Y7;9SNS7l29kG z8b=b|9ATTyDQ5Ss=H^q4lbnL0A+JOD8Yy};MitU|tb5*SxgxrrDyv^iZI{YFIzDwB zXE`0V?fNG}A+M7;!tTW?=^Sn_$m66EV{S@aeW6VF#6pQmiE-PP0p8#8apV507i}a({)uk5P zDXP$FJFEn$j9j=cM-;B1)ElNznNH0L`YcbXv!z2|VyPhcqiTSQ%p`$c^!pF(Fi}Rr zrOG_`CXyf*U%);j0q_U^An+#Q9Es=wmfQC_TE%Jw~qpK`qx{~;w;~g672U1 z%b#TA)1v6Xlo-O!rkR)i)R1;%Dalk@wdw`Bx+mnp!Jt`w#}z5)srQE!IZ22nkgIw* zb;6bZsHAyjq1;F9*?m8p#;ANq2|-6V293(rjHPO!b>h;wbkb}+N_v%YNG66y3YItp zz>;-bDkshKN)R;_FTRYHDk=$S1GF+h>k&NgVt2{Ap>==j&|$#7Ns}JI&T{qJZ?2*B zi>wwjwZXK1i(CKYB!x<_jKR-widWH8ey&T!IT*|de8Lk!Hh+i(HEB6NoW5V(i2Y@_ z0F4XxyJd0un#;gfXRY^X3un`DAS($;&RH3z?c)*&c+r^02PX*8uQ1eET za)j)BWUPCTJdoCq5ck1-gZq?rGy*KQ&06~u4Hg6BO=wD+=MNaPeZMsF0YV-va(y5%1=BNVb%aKRu620~7zECs+NE*udp5F)KQ@)=WCuCIV7xN$H z#e4k2ikI&G+f|5ff_{#x?Zq%grb^}d)c?KO)zAQ<^1B7CnS?T|KntCP4%&$UK0Mt~ ze2lM01_bYr@Y+c@#8CF$nurHLvl_F|Wk_RHJC9N`2gfq{xn^7wq=Qmq9up8GNr*q* zAY$~d$=(G8Z|b>!?In+rf6mxUkQn(LJA93e%=Z9}DN2@XUwa@`g8Z}~P(Y`_%$QPO zl%GmI`+af|csFOF$U0jYO-fr_6|QSz-1>Pu`+x?$Cj$M%uVZa_R5$=j#I@)qzQ8+- zUk|%aCy>)D0yVgJ=BB?uh)fLEyy#kv=tF&&rYEhr2&1k>l4+M$#dZ-%7&}phS3|D} z#pBH=)t^=!WIxaiquaV|y7Ugd4Q32Tw@PREN#E2nHRs!g1L&N!Zeo(NuR5&bY_aU* z=pG1w8Si)>U_O7E5KKzUEPNJ++%0yh#IRnr3zcNt(|_LyKVr@*3>w_N(>wL^nvH)9 z{^sDzW_d-&us}GzdwY9jCIZa#>dW5qm*ni-jt&T5kx*rD@F)%px05ahvpiO47MRd9 z`(-bPF-t>z+>l7UjdaiEs6T$Qa$WZN(|DMinhD~T(Dols*?mAPR=ad_+f*Vvq8t*h zG5cwqC5ZOn!OvG|q(RqdGAyVNq{FU6C2=sqHZ>F1?Q^VuJ^JkJNUZJEQ7h-9y6hr&D=RPAXTUPFngG<kLF8DN*UuSJUH+ zhvIyjKjmZv+v)#+gZ*j>dYYBSIbwYe{9RYK{C+Yn-H#U7sK=2!4S5;M+5yO_ zql80~&iVolC_JPoO{yzef2=P2Y=Ko*s}?h7LiPO<4L30HsLbM`=kFx-(ez_BcBQX` z#x=id0+Irr;_{O2y%I+x=}RQLVT=$X+n@c=UW|CaSo7Bx84TGYX}NL$4RpdnE9^lF z*E&hjO~FUUER<_Z12FD=VuMJ^>!Q!^Ol#}>H>-Hk=p1|nXk3leD1v5*e=Nl&dXM_! zR3n9FlIfGcfE|CZ_=g~SOWH@l4F`wkPIdTS)Wjb$tdG{Ljb%XS>K8rx3!0^c66 z14-MiEL%OaBRpmV{V9 z^U=BoXM%lHurR0Tmp*3fT#3lOTK}ZeanbBpup~pFyJ$OZu-hKXG*?+rE^+ZtsH77(J*!A$P!y`=oH&2%-ZsD z)D><~7k+j%*6iKI7=#BEKysh21HA}n4g358+g$jM9yIhSc?$I`NR5v*k~oiR^!qH1 z-<*9cDw|TmzCk+E3DgX3{}?i&U2@4%^^$Pch#^3zE2Fvcg)35>+B0RTT3GcPSB7mE zL6*b^CAl*5CK>;$=~(UVv7pX4pX*ZdLb01ELBc|dlFcGXlqf$-vRJF)L1yjauJ89` z4{tdnrx%Zovc!1lOr=dJPHNT;bHiIZ5dhMh=r%f3kSrR6dJo^}3{aAQOUuaFUHpc( zc4~S4;)_KpYHeHiRI09vPG_7G!tz{aRIqTC8pa!*fHr~|ENu7GrWrv z$@n0F`huj34)z(h2s;&|`d!t@zUT`-#f?QNcy%-I4ycR(6Nyc_`w9hSb3zUKl%@FD(5H7=^GwDf#af|IkA z2Q(vxdK6jq6{>JZftBG^wIAV%__9YF-ZmoL&5RyHPA@DzlbZAARr!iIna=C5?`8oV zA=6DrTOs-Cr0>fCR?X)lN2U1IoR$R9-|nwvRiODkTc}MY7f`T9=4uCN0pIP>TBImJ zWMw*0f9oN?0oAYS=I3YZae(WyIo>liTzK z*j%u<(+BK*TThRdMOzOyc2Wrqeq)K}$6ND1l~Z@i{38#29#hK;pU1?OFj*_of6zb* zu*(O1vB+tic;)rJ zv}~2Eu~E-=e&mid4!jkpA@X9w5esnc`1VHqRkY04Bbq=3YY|3&U>X6PdR{>2&h9}W zw9$@SgZ}DLZ#f)(7A;!PaLkYpfn^fhg?axe%Lki-u6B#h67q4vJ$RaQL3M}zJjTvd z93Q#b)$%BLWR05bneB4?!>WxUdr9wm&PKBDR(IeSpwT<9`H0L;d)#y6FCnKVKM1|c zK3m^lxNG=$9`gE(F8}u5>1c@3Khewu-B4K~{>*@w=7EE~1Pe4eyh%3rXeNsQO)=+@ zt-D^$7oXrHzAtjFemcAR10x;u{h&vg+Tss&$$#5XOB1jDLjNApbs}T;Ktg*Kh0e<+ z0qbe4@w7ei#&vHmY5{zhSPqX~sJF$ue>k<%TF$(lYaJ5H$n}3d4HuI;rohATw|ks9xNTr7KFVJ$<^OUL+l^|SDrfIrK-iq%->O|EcU^!p zv;*~GCu8PMRzQ1P;iAH;xdZ_Ho>A^_J?+%4^Nk12mns-p^=s19vIQo5PV)Xd?eA6b zOEbtFN{$jnFKDF_#lwni2`A<|G)N$3=2L7{F57}&j7uJ5M@GQGHGbM4i> zP$Mi|V zpE>mQ#{Bv8TpjNAa3nPXZj55Yvm!s@WlW1+p z-)^x^aDrCv>MF?cS))u>!5b9*3b)z9Mv9J`aXJ%yzkI6&=X7dfeuX!Hi^L_asxj-p z3zMI#98vBLky~dYz6hgID=ENsGe!ZU!Dvuwp%Y_cnj$UJ)Eu5cPEyLKl#1Bk8=CRI zA4sX|=?_i{QDvHB%XiIW#7xmOTZ88^7o~)BeVw!lt_fQi zSIpctg}m&1n!df9c0y6N!-~)j9%noLN;<~9DOEy59vM<__U&Iz(BAng%iu8ZJ@$=& zdXLGA>Q=&ZUZnr8mgUH>s#e+#pk$NHQKMW^E0fxa73m$fT9zUnau=;R>5)NA^&V$PdcoY`&lJ{?WTEE>P7RM6_U~2 zVzMmLxy+u%0%?x==8S|?e#$|0@yU)oP_{p#00tTJ7s=0I!37(J#6*J=KD1060j> z{rOy?e}^@!Oe7!^;mueD1@H{LLzTjJ&@9!aR9x+F6%%T zok`MFA^LTiRB9b=9XD)1|JIr?r{r)IFq{bZW=me>hny?SP9Hky7T}ZP7tVdM)@Qbd;}Y*Hi<;&oilWrvQ64vzq)sNu$L`#WMf z7$u}y5N1MI&I}zK?HjTiZ=55CcN>LbV}8)m`XJ(d&oWHZYn1;LqOhY|l?RB^>@o7( z-ieTIISyT^dWpTWaDzL*t5Lc_yE1zpSTd_*VTAp5Dtx}?oQke&!Xc^Wx5Ri@14sRx zk0m*9-@$onzucG4=UY~DV*D{%dTPcAn{lg78mBn}=badqTwSt4+!scTB?@NAx^23% zO@Z-l&hQC*{nq4PO|AVFElSWj1!AA>iD@3M^;tKUO{!wwXa$?p+PA->M5{#>KYTPd zYVYeZE@j(AkPM1&Lx{E=LO9?@HVhTaBiW}R_@LSyTus~NupcJ%85lw(n*_nq54|-J zRW1J8RYUv5>xf07?GLjKRbCegxiDzX?WV_joaY(5ID3@suxmw$)Z7pS6dl`pC9eZF zu8;yXQ5d9d*5c5!+FSJX*N{MWrK^DY5pW>V2D4jJq-^=D4sqUx%c#p}Qa4Je@N?lB z!h`mKyCccm;&;UIcBuu%oxsrO^`OV`*yw26*1FX|_|I?Q*)?)|Tb{{n=C0p~RBv1Ei zbahV+vWvOh!m!RUh;_9U?z8XL)b!q=cyy6*E^Lx!{G}cf5muZGQYzF%LZbI1@NeHM zcH}xgw3!Ssf0LA#${M>jTGDYpF*?~b$wNnpKTsSK>*jVTTPknlNBuh|?+lK~Ist%2;*cRK8RFp4WXk~)7 zkU(D_6>N||xuVU%F;3zJVJ6>lF3bcBuZAXaj3)AowkT#B&gLk| zSDWZs<4F11iYF*ox!PVqw_MAK`A2X_4;=%nc^ebc1KRNgvSRX(Y(wLk4M%RO|BnOJn>u0qaiCYgYb7y zy)HL&vnV%ZZ&@N>^^q*IVmq#L7ww~uU5A2bbi3kEz*E}a3P0$AL`1f6lX3E@WRk8y z&3OHG&lk@eW zm-x&41Ko-2QBex1Kue@?00ixb4&lf6IsT@y2r}uqq(7(V6&1Cxlb-U-Iboyw@0uij zJEB%EEA-P$yGa+W5#7OOCLb^gMRELPhR22SYy1}Mf`oL1)9|Lo=ZLqFVA6dJI=MQ8 z2#ka`a2{MnY&i_G)Gk0D_w{S#OrU`z7cy2z`c70Or_oFbRe$~==lG413BCQC!>i5j zK?=LW?MW4aO9gl}e}2|fI{T5HlSbEQwNS zhyH6SR}Zc!ui|`9!QK2e19}teykfKjP+Mkk+boE6Cm1sxzn0m@X-h zS^-fe?EjRiqnIXzn?V=@$u4tq#zIK;#m4WVt*odch1@1-B0N6rcYD3 zQ{Hv$CdVr8NKF*|2m0Bz{k&uUrx*1C11W>N;g5VQX@94gg~mUwpmFl?55ML0|Fb@L z%XzcJ;C6ZA%APXn$1S1$KU=_22Gr_xQ)R{j)?z)~MO`9}9vqoBwM@l1&e>lm_$2*9fG7SmB<)8guNqMK;3vjR0 zq?e9W2AwxZR-z5gdESjxp1!=L>{&iZ?(7U~pd)M5Fe z80YCf+7jv<(_E6!&oyk&P*x zu2oMuU-5VNt&u%6%*5@GFP`b=`oCITWY`x=^5{n>i9(x@vw?w1+s_bUIFOn4D|1n=?bj4|gb8vdBw_B0vN7kwx7Z>@eZVHsu; z0B_eKtPV$;s8_G9oOb$YlD;EkokyD|uKDCY0{v|NIl1H=xwl{cas1!v#5S(Kqt1ju zj{V(S_IDU(HfhoX`J-mcQyI^eg?i%8YyW)t?(wc1c2<;2q{#}g_|H{cD4ScDIq%~x zO7EOJWRvfr(Jig8qi z*Tdymxmo7Dbd@xzQAOe^RFam-*U9{khe^_2tmxmpM&4W4MkYV?H#z>OW98C&AXhR~ z*26%qTRkyY4nQyJ7S`&n1~0rln*=HC>!y7yAA~AKdT6p*I^|{QP_?=)V5s`1du7H( z8t)Qh;kysZkhflw8>&~qZkk&1#A8pumPi`n^+o>mf4@%dxZ_TFY4~s)0|Rp-;l`YI z#`iO2_K&k=?XPQP>-O#71NuR(ltVaw1s2~hgay&(ohV(;=_>QUvv0rqR#LwG7W0ld z`0;^rq)C&ey2_8W=D5VY1f~u~omp?pK@(sM;}76)ey+R@(M98S29AwTe#L=*EExId z2hUuM$+n>LdAbqAkG2i)h6ZC^dWW0rqD(LblJfzHgZfgJx}85HQPS(uOD~mgzWGKz z#8~|=z5jARc8&4N+D)1?(HDLUeD~dVb=8{}k%qQA?zlrXY}g=gzWJtlbE|5L7A@rA zhac8ea(;}wbTQsNsu`VbUf$h3<$w0aj}-3tmFhh-;)$APc!i@zL_k4tJ>p`C!!o>h z-o2o5BZh_CLbCt>KmbWZK~&Mg%&mRA_U_&5_F2}&J7jV*-|i_(Mi)$kSV3SLlIJXdo-&c<@W88jQ9#NGBs0r;`#1BRFct4_sQnm z%8~=)$0f}x;f+A3WMYdvSRQnZ{5tg&nb7(<>DKZj=`%Q42L9h9Odv#BTz-#?z6NP- ze^Z})}_n=BLYxO4Cx@MX*!)lDT=I@a7#s8H)gG8pR+$bBDd?R}X zULvp0+bz46{73o@3d%PtHp_;^Q)KVJi)A#7e%ZU$%eWC3oTAs-Jo9w zjJ!qOoVOh%?vurD4w5gVw`^FyNuC@$SofrR^lJ;GV$=GOHaI}5gNHPdaQHcI+!<#- z{kef`Iip=W>6F|_7A*J~p9Ru6xwD+nzP+xJ(sWdmE(<(5Ajt;J3rdn(byj1W4+j*w zI>#R$2{~9`1$cHq#VY0C##Bm;Z2Qnj?US#bTCILp-rZ9E`HDLmf_?!Q;b@3sTwWEc z;Jv($|81{+Q3kbsQ%=9Qi<~#OHQusbCrNReWoQSy@wk7MY~8k1W{z$lw|4(Pc6jt7 zpI$Gnlr^anrOM#GGG_iR$=xzjE=j&xD)*l#E7mNLkFMM#mv^{N($Mj4nK42-UprX( zPn<7nR?L-4HV>2zH;xhR^a_El?G@Q8=!z5QXaD@)=N^{F9(zn4eQcmS^UTvq|L$Gs z^6k{A2#u3{S^Kb>W}Mt{=k0RaZMVw8pBKvRJ$tniTmoYjmsQuTi|rU8%*hKs{an)D zu6;X6?v$*&`}yYulH55Ne(f=^;^3%Y{_|IhXnZ8^XskjKkc4z7hf}3c&xwvP#Q&>q zkWK03rOL%PBW_8mq`&o+#86$U^o1ZF58Z~w#9v(|2e+@(l! z$jIB2yCosHTd`3#VWr64fq$0Q7No-{`=RuGI8LUl*rf7E|Iv`g?A;q6cUx8dx6XQA zE+14;X08e4Nm>4B2TIM6C2u|~6N0_4wRoeRA#v$tm*(-pYySjmG2Z(BfGsZe<=v&bq)vyvGOE=`Ip^UqGHuL5a`lKd^4Lx7IUaLY zsQqtD8z;$sXo+7!i<1m)Ul@0-G^|x$nm0d2nznvSRtCzc{yVPoh4LbP^@_FTKdVfB z`Sl+Vz#rQ;+dcK7YyT=|X!n}VYyX-Pwwu5p*IwnWll%;QN!}%cckRyr?;w*ZcP=UN z%dh{)e;PE|&*jM-hw2*Op8+$sNT`N2R2eyT^LX|rZ> z!U@Mqd*~Ey15sWiBesDBVh%%fAT*7Lo@YbavOW*_Zk87z&x0%Xhdi%E zo48O0_U-_APRDTuv(T?zBbBsYT`C`6xmkL%U(H}0sA2aJCTYyT`efHQ=YcV2&o z{-rbIt{vr0S27gLe-cp(hN?WdL;n{|{>lH6@{Uw`^56EFp>C|wvx{`svC8$})@FI3 zeQyztRkm)GS)-fFE#1fA_=FIzkiPeeD`fRTj8&fMgRu%Q-8xGy?R2dhtKjU+NNM>kgK_a0VMq9&{iFJKU^|0wPsJ@+8SDv#qcP=-7`MCCAj&u*DI z^;^~d`*6g;*l{1o?Jx@5cH2L3JjO!V10x(?PNXefq-U_ztz8#6fvs z?K(&&@Qyn3=bt^^wL^c$V@22yLh>J?->?6OV_ts;LlpZz6y$)4Ape`tXY=9~yQ7b8 zta&4LMEWVeM`4o9xV)IwFaKDND$~YKmTxCdmPucJD3AZ6JM?CMIkrkrejL_A`poYj z^Ve;Zm9y@baeX_;C%nnS%o1&|F2L9_`(v?S{kPl(w|Gnrh!}(A8)6-$pBMZO>*4TJMa$tXL=4eH~WY=a>SSi=dyW@>JeMBmCv zpnr;bA;`lvQXFa({(5N~R-w@lg^kDZ{DTk6BZD4RW69n3jg-Ziak67Mc6nTPmK=-t zaWLF5Dw|ZZuGdMwt}P^3HvD6JZ&?SMWp2_H#Z4oEf9jX!EMMKW4Y*v zN7@mWIr7_uIX^Y-!k0RLXf~kvZS>mi5y=lHo556Xbvu zBq9~6wZMY*ankjoTjceLzsWylrOAyaSCxv@n@cPBpVRXu8U6Ko_@_$$w%Fd{>{42t zy3BK0FWE5dBN_I>i}D8YOhP!Tx*JoKyZ+vduNWlx%ubTN8?U5M4^@9qZp3E~jJ9vV zIP&F}U&$n#hoQ70u~Vxqt}Y2is{QmkMaXmGIH;m><%h~Xkd1Q;SvaG!e^eJ8R6Y2k zvZot&?!D(P?(kQrcpyC3;>utumxZSB9(ep|4vcU#wyD7_xL2OP4xMA@dgiM6n3!cC zj336q8yTd~^dbH``fJHeW5!^gQL0=$`Zej+pd9K`M{Zg8qx4PMApaRXOrC%34SzLg@$}Ae zUUv-O5XSb+i?DEjdoIpo;m^F&KM`*XiFq74@3w7ER-U9|b&_U?1pfB#=m+1(J7Av2 zJM_YQd!_{x!hgmoU%~N?t7$2Bc^7aF=YQO>&87Tx*Gl#CF9Or6NWBlo%f4CDq}sLp zC86cRc{~->(tPv@a3_7&u7 zW=QU;(SNLT?Rhigah?2qW~$r>xkF>nivvQ+^6c;aA{$bCd6Gq-e;4HL?i(O?kTDKK zIbbF3{`Su>UYDUWu2`{>Y}&jLQJ`7SNpod^@&VyYv!8zVM7iT&c0ccMd@zg!)Q5%X zKkB{;Sgk_2OT@2f=^&ORkcBFLe8?~VU@%AzO2bBt<><4z%IeGiChO}q(Cz)%Xg8Z0 zG?vU;?~__*bd;J&HI-M$Mf3E_KmAxnQ1@vMmTS8nC*>AqX%`tXw!ggbhnO2s|htH7#Z`>k( zzV!#hdqSFUYzfQ>pKJfSWj+iL=XT&$0Jaz0q?b&DA$IH5b@I`DX>!R8W3l3uN5=%U zA9Y%ea-xy3^>Lnzz)#V?^Y%M35kE`ML7=0Ld4;YB?OzEC@jnML#z{uyN+F#IKJwT5 zw4#bX%R;WMNZjaf?Vo`9YYO$n;ypO>DV)8D!{-^NKxY~PAi0_1gA`}g=ygB<0B+tjqbL)&Nnm+y+gf65&P5Sh3KCDA8z)tD^2|2z#d1l{>sL>cq^h;0%MGD^ zbqV-`+`NgIR!2+U&;MxpkK>a4I)|FdQ=SZKV_445x!{xcqScL}cEX?pZ zR_WTLhE!|VS~|26jD)f!{ny#x7{)4nPs3QHmYfAl2V$%;X~~ZLW0g~nma0ij<(lCf ztGtI5jGzU5k&acAC_IDz{3Dh8G(WYybm@4ej#avItOEMWV@#mYfoB$0#c-@ru@YW> zW2Fp#{DAtHXJnqz_7wCX*qMT{3i-BQ81liQ>VyRQzpq2^cOEo5V@ek zDN;KQ`fL&f?-v>W)(H6ktAvlm)3g7DABp0H+nOII!LdhXfBKI6d+awzEb`{H6J>i+ zdr6%$O^#YWOWqv*lDzgNhN{)kE-KWQ9^m(#U9XqNUYjV5|1nD@^lu9z-LJypg1^j` zF(clTZLtg~84QhD|vT3Jk~ zfDj7Ru?3z28F(SN1M>~6Osj(Pk8`&CEQ2qoDd#ezj&Of%It`gGY16U}eo(h6j)|#(nAUd}J7iG#^EZq$zoh*OC>W-JjFO&{{Z6*6c zx`FZCwg=P!e(RYegFz}%FMSfMAo-WCCIbda`hzX+Ea(Tg4htB^zNp1yxz)keMvlFx( zBc2;CBCRHO{9!fui=;ozUm#7JxHINZF$w{S#K+hEnQ+?lX?WAT5M_1J0mbx`8G5kl znaVrm0%9?5mp>py$tVOD`A;W#w|mzvsah>b$1?7GMAQSt>WeYP4bd;>beAm`c9aYZ zRJf!)7w3${V}P)0XNI&y`)o96jO2beT@oP6G&a&mTpI^N@5Vr#^s{B`T{%hqMY-$Y zcX<*eTS2+0U=tbdl1uhiL+^7TiMyFN1D zgZc8nS!c;tkh_%&XRAE^@zyKlcKF}cfVmSJtkC;rxSVn2*D`20w#W7g~;U0IO3 z-12w`c{!0|#o))AgV^aRG<5z|u3AOkF#X4^ z@R61>oLHeX?l8!}E4X``tV4*vJic(%206QagE0Ni956A(_>TkbeOar~kesD>;-i${PshxpCp`pT-}` z&2(%DUw~BtonWLTM%*G!-ksU0Bl2^ou%aIQ^r8Oq_|HM8>P-BSTT=BJp*pe_iV8x* z`Ogr_Y|(hfx@aBn9crph&p{99g$RtJyn{n|hv$lz2zd0DubhNTvb2t@MI5)h(Sc97 zig=>|BLTq+rfxu3is=gVV`={m;-$_GOMjlnqLm7ccT3?l|Z_>d(LS>7zWU z5;Ayl!l?S6bw*rWaT@CXsLC2OZlv33$TUv8Lq{q>I@nFuU_)!{@2S3csZ%RnMbl%0`Bbp@$Qq4dHPTL zC-uU_yCTnj&1NvJ3W!7(+do#D!4(YWKcvFRXhH3tc|p!*&d`-rTw%ouaGUsEvczY4zgACF&}#|052 zF&wL?43qwZ@^}f%?Q0mTG{acsXN*<+{HM?$f7orM3&$!aVi^#}KP(&p?%Yh))U_RY zd;C{qQMqjFtl(-J{yHgtsES517hkhLN|ztU3e!@iVfFvd(2dVV8 zl8x+}jUEa6^)aa1ZyKhYWVL#AmXl9tCK-s7*kZJtbPZ(g*Kef7>3!wuhlfkAu9wL5 z>tB#(5H~KNzWj6I8o6TSLY(b2Ngn8atE3JXE9?IWJ&Y^))K=2G0^}>$Ox_;V9;^DQ zN}GEp%HnHQ$fRjM%Qe?rqlTF8zyCqwD-Td3&Jp_G&>wvn6k{0v zxBLYePfNjC`lu*Hr%8XtM0O_YB!I=QU}1&H%X%+ltqZKU1o)ZlnOTvX$$CGR$G{ zC_Ce7$`!XiAXg3gK+gH&cvw;&krOd5Wj_`Vda~9{mE+s?mg^oHDStWla_P7JIm|Rs z9mRquA!o>*1a!Tf`ln+Rk@!d2WiGuM;=T3;uc?0@9oTu9fD~l;cM4U#sfMSF#%fN`nydVsA zPBLL|s$EA7Vx9pCNpyu7&seKdhl^iOH-N%E(p}7zBOOl%fCmWE`6H{$NCcfO{L`7I z1@syDAwJ{r7#6TK>~qir>)A9cP^#nATKCg8YRkQM`JaY`r#K~%4N%? z&B{YTq0?bPcGoCJjV;U+`Tg)tKau_)$OCuZC3ijWfZTJ-T{8IftL2MZ|0`<|mlLtH z4eMmbKD>F=JWxLJ+p=^bCV)@KO?}RnWD~dWHbiF zL+5UiwUh6W#!W^`l~XQ|zds0ntYjTJ7e5T4Y6g@d&uz<@=i_o?pFc`7Y_-G_Pme@- zbl}QIKRlsyb+S!Oh4ehMw0^z%Fy_{fns~FK$q>g4P@GZ=r=M}=VaYPj?r7hkgZu%@ zcKMdG1Kd1wWBKx>u6!29GEiUAuStfN!4qBhAd*hv>5sp? zySeq0Ki-gm?Z9}~8{CJ9^IqBYn|mwCRC~6h!;j(kQ4Yj$+f}nQZ8-n2K3fNqJVSw< zq-3s_uaU=~yKj{9+aE3K7JjGofca0WLp~~Q?D+H_XS&qKYe;!SUYi0VAkIKY`wVYM zFaYaxVv^Kr)m_pac}OO&-i|j|o8_~oE|k<(eWh8|INAEk4rv72Ii`qeB+ENH0h0~A za$tN2qhGOrA7E4**|7ExBH@XEEOr3k9nT}ww_9XXKK?siaH|K;i0ja?y>Q93<6V3B z{iui4l3yPGiGDc$`OI@6xbk)zMp{@48FwzW)Ka z>ozBM6K?xZekCv{FAdu;c4X#n|JzkY9&<7h+!&IP9QhUU)d=!c@#K))h2-m3$Rp*h z(kb+RPUY@}pEfxDEAt`C%beWx|LghELN?{)N&4O8qn~_3{leQn<(NiN;>RE8*aO36 zd8}IF!L!W8-~Q>QLFQ)|TPb%PA!}{_0N$N)if+f73*IeRwlt)(C~wFh0{_`Qc#(HI zc5G8VYWqi9Y>+V74~!I?pZ1?U-XnDU*AP4SF0y~MDb6L zm?GQJ&bOw1F5RC>l`Fe6M;V*tm5aMe>Y%S=-dEUKa#1g=0Ky=NW#+a2%F+reZ$6!~ zTKU+l{gqIrcgv(zm~>`smQS9)Q{->WgI9Xp2PZW-V8<6@5Zp!{(Dvx%b-Io@sO zmS|U~@``m)$X$A^KJhOm@BIANDxv5+{Ra=U2&Et13bWFGEcE9?qh$@wDUx)Lcby=^ zj(3AcOa|`)vUSmC@<;HlZ@y`pacJu7l^TI{lA+AN`%b|05k-rAWD>5jdU+!`eTK znYWPr-8|Kqj(6JG=h68Cqk zG(Tu}ymD|h?djLtB`J?wEBB{dEq&Va2f$oePX6Pi%Pr5!fBJWqe&hN{pEGJB6~p(p z|2+Pqp0J*_SC2; zvJ;b)EsH*v^PftSE6-{s73;ZvmFEfuax!J{XV1BQ^|%^g{Ac}q{71&@yI60p{nJRm z?TtL&kK>b5*xx~Cc4*%LvIw2IbcrJqyojd%w7)|GSKjT!SOt9a+P_0+zx}Y6N^^$N4<{~mT-?Da>G^z>XF!d-i)$tGH zU)v7q0{+m{;ORfF{cBuAS6Nklz12tk{{>HMO?%S zryuElnmb1x#Q5L4czlFMKi4Dj%Errnwn_FCwT|xwBj-Zdw5OsRjYTu#7Vnc2&h94N zI<}O#*d?$ii#>pA(_~=X7N;|k)HvyE>E5lQ$p5o<9e`a`*Za#N31Ngi!w^u0Y)}N* z4!|M~6qM0|EujCZSO>*Hky@yGw8esL9iSDZR1^V=Y{7wS83Hl|gs>qbA?yEr=l)*u zOUOb|6MYwcdGFnK=Q;PDd(ZdIy?6POc#7+aQ;uw5xRJR3u3ONqRs_CW%18Fal)ZCM zt!8a(DbpOc4u2T`oFqkJ0}@Kr08_%2)3h?}dKEfc6oLuE|B007eYn4B4g7s`6#DnS z8UOoWuF)o)07G{9pFztjerOZjJpKpj6d6S@h2hWUKMaJ^-i+#ZEjd?dP95P=E_+m8 z+(K()(chc@sJ=P*FF5BYbpx|1GHWbH$4~-U0{(QGs?9by5QMNjiqd&G>16pj1|Xzl zx*Joopa=FI#F4}CILtkK562(E@sp=fr{^6Qiiv1G`Yr4}$yGWjr?B~d&)~Y3f#9}T?V;Q@fw_cIE=OI`7ekhg!k~wj z;GctaD{j$GI-?5>pnOcFKn=1@O?q=gTog3Ud`)#y22DPw=lte zdEKASa{lDgQiJz4hLoAK4In0(HM~+pO9`Ri(HC?HY<(G&*y0Bc*Uc#;!g;^yU@FQ* zhT{5K8F*(emv2$R&)=JhD{9cxSShLFi(?W{>goJ5`8nW)CGDILP}=ma(RBc)HdkT6 zrn_-NmqBQJ*&sAnG9Ft$Xveow@G?-l^9VHNm#iv`kH$T56HT)oz3Sf>wEqD-HTY(< ziPJX^y}Jhs{@4sP%RYdo7W+Qb{RIOdx>6(mR`x?TWx?=DQ-AbDSyRxkD%{+3 z+E}#ccbR>y(&<@G&w3LrV_1u>_hH5#?!gUh>oYW6FUmn+Bsat<7}&d0O>aNd84Xg!S$RB41Vu)rL`W<-h80 z{ciE43?*_gFZOY--_76X^}B(nzhnZoeQ=3|)6$*V)<yZL`?jvBGm*zfwIt=I2};>>@n1u_nBV&0f1eX@+TI{_CJLDibd7xHF%)I4qD9+7^me7O^H|s*Zx)iG=9l!)ToIq z_t5E0QfS2g)~#D-^*dX7Mf&F>|3nz$9j|9N8H(n9aB4U#iq%c;z5Z|I)Qcb|3po9> zWHKo!neu_0*W`yhmMkG>9RF2MwP9-(E)mHeNoZ;%45N^N)xY!-Pt95b^KnV-N9`T@ zK8@7_8nQki_}yCWJ;blX4FckD@Kf($NV9U-@b3|LaN{Vf{%sr7L^DhqIUU#E_77}+ zX9Ow)$^T|ojKao=Tah%P1xhy^jQ>tpjqAPs+2kH9dB2wdVjDi1gAuegaqXN1Q!!aq z@m+tczuMTMJ175DSeuM8>{;!fep28sZrs?GdNjO<{f>a5`eo}@yPL?nTWP(>fA_7KhLJ7$p}xnvr{BYE zjq88?GI{qK@=p1<_TQ}A@3G;J98r=n%#Rf|8Ls@*debw?VZd86P_xC&JnZJ* zW-Pl0Yv0dkZZlwI&>zWvUOoBuUB^4gMmPTvby!a-Vj(p< z;!l?YbFSe>A$p(E3-VIqpNbIEq&NQ1_&&@Za5L($FWWfEvg%#-_OFO^VmRrSj&kV4 zgQmJ)e=*$D<|bO5e}qx5eUA6LF|x2V)?f0ESSVA}zZ$rI&0DyeysGE5iKk{^Xwz~8 zXS!p}TYo@{o7>}Y#!&)KzxNhemSH@bz&|EfQ;QoqxfE6eQ?R3_zu`@e7sG4Q+c&ZG(p zk~#ljDKuA!D4~@LEKI3-xN|V)Dov`Y2ASha3g zOPV$(O&z&O)A!#(>ljj_`~CRu*payY5?cMpX|6I&d((w*uJR)1D!tI-5c^$#K-Q9@ zVsL@N8vjKg(kxJawSUc3L`>1s!t+L)Qd<&-qWQs1@P~i`S!e5GR65(7*Zyt(Lz*{k z)QA>YQP6lN-f04_epiA0PJ6nsnwDl>{I~f(%OKuKMkJ@6K~xxJrj=Di%-;WR8NmI3 z-}pD@D_TmJfgZhj+Fq0I%zT$%U`wmh@{d2kklTg^KAxyj&J7+k*krNlA0AoJJe9s9 z3+o?M2DRBQHt$cwEf0T&vA?+ljjD{WaF>sK885dc>Y231o@JFbp59 zIR9Tfs|`w}MPN9(;o=JFZB5X#XJdZ&y$5TCEW`&-560CkYFZky%=`O-aqOLyaPNv~ z7~Zx!s`7iL+{k||L7P%_QG-Bt)83chubkuS6x_f5^{@6p?X32%dZ;4&WBd$^f6@VL z*&?YM%zw#O@vdZ4w8=~z&>^QoA}UlYPu|6mmr5|uKFG&l`6tGn;YZbQ>UJffBaoWJ zd+QI=KBw#|i<9f8y8{?*Xv2dZJl7Em56nU9DArJPv$4mO zwNxbM#q3Fg9`A&gU+ax4>qTJ-0Ds^j9d{*0Y zAIii>7slEPX{mXq;#nXOO@6v4cV0C=Ro?nZPbn(y(MKO830X?(Sm&iwtZk;#z1QG_ z@4W!I`FZcWYhl88VGFz}vAkSf?{fO<+4Bp&=Dhd9sV(Ka_x!A#@xAw~UZ+vL3cuhk z=GAwFq<|W+P9~9}Ys!h*ojNipua2!pCkn_6JvtPQsq+P&btw7;DvOB3!+5AwNt7<((y>GtN#epfyd}U}n>lC-uAG#ln{a3Vw$pwzfH91+Qvegh zwC+kuOhpuxD1OetNe(h)IM}E^rf_eDWSXOw;;B8BpvB}DAo?d!5SHYmMCp1JunC1F z&Bd6s!iypp6RI?mnFf~~6jXl|%aMX( z!@H*k+5p!l<_(-m+iQH4fD;gvo=z({ez~7>@IjZHGFO5s1D(6&L!kbtTr!pt5`~hK z*(piz~Dc=5Q*Bd*Z}6{e*SPtiLuD=SR{~F#^hL%9ySG)@E1_@n1zU zfFi&LuXHYZ4sax0?)+z51q!r(URW>36?x~@{=@iXPW!Ity|rG}KP*DvrUur+@n2Fb z@pQ6THi~x!#wfku`Ukat5(yb&{tuxYx*`4Q8xg|6*y_*9Tm3n)Iv@4Vz5nx6CG`;l zo>FltkvxggcJShJBA390X7)R;{?;D}_QsT!h|aD5r?BmElUSyyy)~>aGtIo}Ul{(o znTAa>EKhMqWfT)V{%em#?ZcAQ|H&^-IJDPls_hbPw zQ0~=t41{z0^|%fs)BQ92g^_nsU_#lh*7fOPWo|uZIoncB`Io)_=h^k5>P$ac`xT z7`I~wVrZ3VTz3WFy*jD&Qj43_|E&k{ZNc(Cl)^-P%nHnO6(@pk_8d-27&^RCUDWv)D`^|{ucYgZFEA&%h~my`dA zr)c97$^B3zR0H)lFifOnN%QRgX*)5ZDlNLUEk?&!6^L|E1iRytyn^a)U+38wTj$MfaK1a4I|m zK4_ty$az(yEzvXLK%WX_2)_hjf)!Z3N!!vHu6s@w#aQA zmYGZG*VvJ>{acto=>*8gs?;0*RBBncO5vCDk_+zt@(kub(Hd@lr+Fqph^kd=4ym}= z>K_>Ybh_bx-hLZ1X3W5*&0pfpX>a0*C!a(u0Z1&Uma1QW!}V<2{1_Q<0|>Hst~SOG+Adu%I7r;fULBv%zhv5i_I)^bhi zYM}(l(pg>&O8TpoY9IaSZ)2j6e$}7tN$o}R0_7o*qC5m{*~d3VRQ!Z9JVCVtbzP>P zbb^3#jJ6eGZ%XC7ooOn4r56@Nqtq1jExmC0Xd5D(Y}}$%Q$&Ok^kdnM9f{{hd(Qv( zRZW1F^eSCdbYg6zjrtkqqbv_AWHbt4AvNL^hDJ=u>aC@jvW}CLqvnZnY8N|q?lepP z%&j5F0&`XlJ+M*~M#dWYnQ@64sOY5Ed?(qVHm<(oWD>9ZXMIW0$s+caeL}tDNi~omtoe{87`irXb3w<$6EwIry6MUeEf;<-E`7XMqCYy!+s* zmrk&s$;NCR-@}8Nh3A6rbNcCB@cZCbmgr|) zlFfoLL_L+>?x!Vo3bXZC3J%dUTu%p+(zra82u$KJoGDQTE93Pghl*1mZMUpM9p80y z2?b3k^yN*-yFBH^{7n!mw!*kqDwYXeuGP1%1NI^urA>Kv?=-N+l;QB{5@bY`jKYKp zX$*z0l2-l}fUjK9^c+rb&sjxrCnYMdl%#x_SN$cFEDcMa_e@wqOzElAEPkK}mV!Ox zR)0GIFh~7$8fX6Xca<~RC_82vO)D+&QUGf@!Ni>P7lk#6(}4`>oaCqS;D(g+1U{WY zO8I!DVs%KVaFFKUJZ+Zm6h>j)Ar2}N^EHAgEtNq(`s*50|8RaOiVk3*;R53HUjJD( zitOw^64*g=KH+)&p?c$ z_Xguw6Um?d0&{ZK-)$scc>b#!3EVnyQoN&5!;Y3;`{$=H;F(vD(f5}KrGll|lYIdf zNU6fB8t0+@Mhwx*=*C)#o}5`l>8lw1Ii+xYB*6c0T6x8kmK;$Dvg)t45W@+rXq!9# zHHoIBoT4dBO{jD7UoZ7z^<4jVq4VOuHs)mslptO1{5Rh5mCCDH$_e1{_-`4WReuF` zKi7^4B64Y|@s9rbqN>-y_1C?^o`@)cWKNEif%YRw)W-pSWz^3*078IVvH^2v*#9z+ zL`y%bqteu`koC{xe>nS1luU0#1(rhfu{5{`2>V);CdjHzp#I9E!1{;P!9)LSgBzY& z!c;?3}soY^#=;2{>7IJTbS`rR^mCwf1UcQ>RCFx zDTx14GG(23(qyKqgvyvx{(tB3j)?}>zo7B&Z|OQpS#gF1f<+U)f3s=R5z+N?AE%0x{wZ zU8elECs+Rz>vyaVllJDn`tW4zwE8Ndu`$p3izm^XUu%zBZKN;0Ir_SY!TtZyv5%rf z%a$1Y%U{}Q$&)5cM$H;EnT6V62 zBO_&fo>hM}4ISWRs}Wd+DErtO;D2}|%O@aC<)t5gj{j~B6sCTu!YUD63G@kIaYe|Q z|L}!Uupou%{|cIe|2C&oR#tYV#=;1MQOa`kwtR!-pTbBNIK>Y)rAn4^KrF+{PZ81x zlxcZuDuEc;BU>FcKcNf>zjP`>YTZhLRI~K6{wVLPCjoFF)qa7{rcV)wo6mH4Pyzp0 z|9pL8aHdhSZEV}g#I~JG%!zH=wylY6+jjECHYUbI6Y~vjzH{r=xm6c`_m8J)KfQZ* z@73LF?d#IUy#+u0nj*O|-&%y@NB@z@gq=`TRN|#oCq;cNNUtT0qk}~xBN=8agaSe( zD@|9GJFTWy_n~#{g^yCWPMiqk|vYfT7kCE;(YAC{%%Q6GMg5t ztdicQHz*VpjpTbI57noJ-@qv;Lp5Yi06S^ugN_AvaEXwX&kQz}{S5W|!neTkrfG>N@tp0tdkHml8x?dE%T7UuL3 z;ziS?f%`s_`l+ETYQp+zzeY_i8jk6`(@c!qj1$B|uVIt0W3JMx4LxYrUT~ z@@TS$vV@F^`J^(5rYP&J52>LlQ^(t76@wqF^jT_iv?(B0SC?h(x+E#=x(} z6QQg)Lf&cgy$Lq_Yj%esgA?CG-%F)ezFD;cV$KB&{_jL81}_T3Bb}`G;W9XSL+Io4 z>(4n;wcQNcPmZ~iX@uBr39$vHv3HMcV&c)QrLqm@uCG3}CHixAOd+YxtzKCRvUj`w zlR~ThZZ7<<``oV%T1(2wm(O>q_SbwEx(|iRB#P7lF2qr=7T3-41IMZZ(=uNUr{4;c zRd7z|Or^v*?`S`O=483$DdDQucKnljJM)F9-6So>7U%BEi0cWE@n(Nz1Qd5GIG7e? zpsnJUeR1ZL&9m;DuBls6@dvrmyvg~dy+I+>zdM!Qb@8LR&I#Uy-ldb6J?&As-Nk`i4nigtM9B3m@p0#aBX<{tGo3(7 zHpHMu+jKX=Us7XQQF>G~%F;lP9Q|v`=teJ1q7cjk&b7$EWR$;lbjOM0H24B2_4$k;WZiT_v8QK0=P@)tD0QP^SbCGk?xTJX+nxE zc9QtKQ*(sfx$kt}sqVLXpWp|BR4el>oy5_40N4{mQfuRm*60KfKdu=nw~6vxZgeJ7 zK{$T}>Ymq6dqI(A>1xAkJlVvr>Rl`#W0cv4XQb- zz`nRYv0LA;Ek11)RqAwcv$C)ESrr+moDCfBZNI(=5qMMN^RDI`zJ$!b(t8&3NW0zt z6%8o?OmkmIS0hD)RKLEAw)!bUAP!WOU`>+YweFajY)1!_?~C*TCcdfOb4|@FSIDFX47PIQ1R`{V!M**+s&_}4=9$u<)7z7S~B&pr4&k~~T$*ZrG#z9~9x z|3!b!ER@L#Xoof-AxP;h&^iFinm+Orqz0?P4E96T)(n?UeZ&Y)?=rrQw7<|W=LH(|F2 zDnz*%#^6oPolwW834lKqZ<)ols;cH(U{vt;fas}0u9H`}0)Jvq$`9-~ z*EwTGOdJW1H;|>JydhDhmSq)_sUYp8CZ?XMT6VN{9_HjOX8`5Z$=BGC0N{X5W&>s zACC*{a#R)Pnc%@Px|(=rhl;8=c7fy)nqFE3R?;=aOdk+3$qhx_+ph(vsA_yOu4{~w z^5>pJIOR5RcpM16D`!<;dF)IAy9y-PS1K8@Lvfwu6$5phE~m~ynp(2h4CQtm-vqeB zDq(X_2f;Gu8L7vG772-i&ssm4{=s?YW8U#?AJZE;Dtq<9KRy3*>7Hcj&-bq1xyZWT zxnD}<6I{=8it&8Z1I73yi5bnn-iw6{*H9d`azrh+9I?@!dy^cBK2E+sK`!w%iWs({ z=EntUMxb>;>)hj0A_PklJVrMO6G5~-ycsnJ zGtxl^Dp+Z$CE4sXTE%1g0JbGHT>)l{sR~>2flC{i0)4E~jBl`Ea#206;pht0=n?Zr zth><1f1GE^_ic(HTPYQ&u>qJVV|csj=YIHtu_tQIq%u*fl-O~aD7(@-nCdtF@kQqO z5~~nWqg_fX98}c zl3Klign=aufh2>~YQR=r*qNtTr%4Jor%Q!(!JX~qAF$Q(J;>w7vV8Gn65LeWt zUKPapoiQfL`SesGS_*N8sN-tgq<{zw*}adw(gQtdKU$U=(tKq;ep6%%H@FrPQgqyz zYQ_m^`MlRiO&~c{PU# ztcq$(Q>ZiuEHSXu!3_LbXKDybsXPO7szGPEIu>WtJH3cbZ)v+uEgs9B-!Rpvx{k!N z1I=>UEpoENXY;dqPEY?_XwNGi{le+YSu+%ZM|l{7$3H5aY4In({!1#Pa3Zv#E5C8iY$vP;5@>SYD9>f~mbyU& z*+GL8fH7-a^;R9)(cDFo7&W3K}8RUS6g0p}rjf%4~AW+Hx5are?_0X)c5*VK?AxsTdkdE2SP|jct4j2j!!v1vCD52 zfiCLxTIj(36KJD6S{wi}-s&|Nc%IM~UDv(A6}CpLgq!d1En}Smp*uGiV^hk3?r8p( z?EYzwJa2R-vHSa){theu`qvETa-|AB%`z-GycsBc3@83di$hl0@4Ngn{uch`>gROB zEMdm23m(G_vlq;CbL-S(B#Vaqq&Ib_C00L1W_|0*&eAe=xyqyFK;B@(Gwqqdo|Njz z;uY?!y-8XH-pop$tWz3>PmNXD2>pteEXmLYB&b3stqOVASAE`EynKdaM6nj9KsQB` zeTZ?`8kH^brZHbVtVumzY9tf7jcTz=npnGtjq?0OFd?$oy4zODH$0` z5t;!CSc=Q_9_l(zy25hU+U&@S4O8;4^g8P>unuyV7KcCp5#T`R?Or6@@||0R=bUo% zX}Tc|aTo&rmmpMVEd*y6Wog4P1E{P>9mn;Z1|`6h!q{w;?^UZXvyHC*;9P%7MZT>% z7Qwl1br$>2+r4f>q!jqR`%+4$aw#0YSwpCu_UnB`!0kyt=MN0PI^ovt?odZNGkYkGHUknnI{nDkXX8V#y?q(XZr`9ly&n znb2#s(9{X@^dw+$;V#kPY^sE-x$VnIGKata7a*dPD#LRVWV#f%vvc4efRfYYTSvEdU@KnQBe$1L{ zEJ_v>#S20ej#asc?n>H<#0Cd-q$#kQ%Lmy5IM?gNaP~2$`^NNk{01(7y+`zNj`sf@ zk=pa$VotCBT%3PA%yw&hwV72lTlDw;S`Z@y+KeY;E613huV*UymiyZ&6d+&gjUm5y zVW(#lcl==^gi_}{agM?EJnr>)zndJTI>Fxd`j&5Yyv`G;@y(p`tv)!cI(?(Zocr|AWTz1U#_zZ`Td_cOkpWoYJR{ z{%O{Se97tW#}@i8w02O)P2^hZ`TLbX{GI~~pvd9vP4t^7{0P5n25&U6It(a0=k3#^ z*;oVdQ6EfAdDc(x9)zl4f=1)S(*Il~(<4S)Ux7MOQ73?EK2Z=c9OGfj3BF_6WzJw+ zwR*{ewKf7G(fAYp13Xx^qW?GI za>#8?DUQi)*up@0k|J3@;j5oK>u9=U-}KWMN5JLt2~-x;hU>3pm;nEyxgR{(Pp65W z{99|{(ce)E>sCyq-FMlvgN>#c6RY#QC6q`M9DfkAX31HJ3R7KYbHcZUpT{FNjj7VI zihhx=)H1hOVQOgHa#YZeMsR7#(v+9sw3?TB&{aFwmv@?7w%qKj!&O_>9kOSm$>`ee zrh`&95Ee@VFKiMmwS)uj)w|yY-r8kXw44DGeJNF*jtWQe9PftmW(<5U_`3JG>*T4} zqpaV9_#67Dx0s{pZ6?Te$YZSc82sGvyWu$P%?k-QciCzF*K2Vt_`-u8%jbXjBKmUz zcW||O3M0+DMs!r(eBJ;hje;H{_O~cVE^kS}uiB(%6n`0{Hx#>5A)Cwd#!Z+=IQUxz z@Us?wJ)E4= zk5NSYs5pkDR9m_`!|jAdi=6r5V1geIgD@iT#X-|Zk8@oRLELT#c>UJWzJ|4Yr;4#= zq9Oa2)Mol_)-i!xg`a0&a}br^a`n>^Fxnl${BLYl?UGsW4piQF-g7FJFmIWu_)|Y# z6g%k{z@NCiS_NisIOC#1(e;+RUmqSoytD*sSJvFKp|)8Nw@e~lJB#zJawc0ud2Sar z{j15Qu(25L4bsAHXPVN^;I$T#W+&&)i{jW)?e}sO$?_%q`R;&OObNc3R|z(s>(_G$ z@2^Qh5f7&ueT)YeHYFe{YSuB!n6327YgT^Wwa~ygh(f6@3SmPbP-*eWN<**Co*hV_ z&-36~&a*etCv4WD%YPZaH~$LPLoCe+BKN_dTMAB-?IyPHvV?fHLVXt&<_)HmJ+BbYH0-aX`3wf%$WN+ zey0(%`0~h}bFt5+OmpNJ-^4k%M_o=Hsv=XZkWfsP|TA!V$VpNP{ ziRV5^mMXC<00XSqqZw4{=ulDTSQTbiPZcAhzVlmX1GoHp$$B}VZ-@BL<&~$RZP8g| zjeClzN}ZxB#hoCZ7L^f5A7qIKw!P^tqFn+fjVl3KP@I{In>j$!d$FQ3Z3^mqI*Vxg+1B`Z4M|ZJdzQnr;g9lJ_@P3&29te5Zm?U95whFH*3O>;H2v zZZ9uXs93wt3Ib#pN1bXrbc?t6UYHC^j$OOmob2iHPsmXUhIwV%WRJKCIJ8#&0PC+} zxDRo%+U{cv`OsD-X4=xE@dItwHyz9j=*oKUtgynvkgf6LYl`hSi6DOQpIRKO0;ytV zs3df&gQyF?d$GIo+&%};ZM$h_>cbvgvqq3w) zp1mGti|}Wwqo?>AD^vUp^EUYZT&Qu*RC^C*oB#3Sw#H@RHCul7!(M!?kH+0Hs?YcF z{GZMvH>Vq_XgRUtIf}3Mmqna&@v*VOGg(d@9cQDqjqI_7`Whv!+Dn7~Iqs2hzaqV9 zyFDJu4#dy3mj^rKj7v+E(a?KX9JN3YKskrlpr&yYMyRw3a9d&9OifX$$ks(U)&n^K ztAw|lG@?k{%IheF24V&f0`HP|*T9iw$OPRAWxlS9UsTo1ayj@x( z`dLAoNS-E28TL2~M+EC7mQB=fd%V#zrZ2WaCk)kspw?i)4+?=~Ndn+$5Fm}dU{I|P z>cYy@Qzv%1xDqiv?BN=Ev)FMkEXEh9x4w-}mRf7z7ZeJR=r$U;Jd9DO;bIt+p6g#P9@V2Pct;A*Q0*<;c-XUCv ziv#SQR@MVLfbvKYCTj?#WvNO{t1%3ZSyEWeKeqBP(#&ae`8Dqrrfy+an4i=hiCJ|c zGd``oj3x1METd{v1CF*_So9c^TMz&u+MdLGco#;0PM=jJXQ-^kDa#Ayr4G0kD`w6+ za?X*YHSk;zuTbjcB_-|9U-9@qcKY87ff!Qz=amf&Ft)p&m~N`H720v?p|08n*I&3M zWTPb!aBr_aa#1QAjzuA3VPB1*v4trvSY%@>GWEiWXd(xgL;4~7VNniKNi<*v>6#^) zg^@7OoteNwl^rcJt4t#i7HqYuZx{ss`gNsMqD8_}z+^CzC}g5&sbp@~Ib%sl<-$|R za#E%#B+jXG(&_==_kSR@iLD0m^jUPFX}(c)F#L2g%tR1wk(uB!6e(v{bpUmzk9~4h z!9@szpFi+jq>e2xJIhcOM3IC8&i+5_DhSy`O%f8PTq>(XRi;2o*adUmLjN0g_{IBc z4jzBPy7bi7f_j=~>@5v7I>amoRSejO>qtSz4BiM632SRInv03=0Ao9GMk>r0Vq_P< z1~o4z&{Si>3ROUZ8)Raot3WHu#pfAxy<+s!)cGXHqbC(JJN6Xf-v*wV{&bf@0kH^O zZc3HF(Gksn0;8U+wV7IZONKq~VOcXm@Y-K1qp;Eq5e)i(N!^HPtdk$7{YtDfeLBZ+3~z|IdDX;f_j#Gg6d^@~AP_+Jb3C zdF>Q>1FrkPJy$I! zKHHao5j$T-A}e$czyJY%wIqN97$$0VObZ>7VGioA2r5ezSHdzwoTNm0clWDe%4)76 zJ+bEPJR7h|QyvR-8?m$@Qzd}vVuu8~s!wMULsO^<45*=Yuyr}lyySjMPy-mO?9?yq zX{n)6&Y2@VP>b_Es2g0IvOu|%*Y!eFTJ$CMo48|j-!Nn&ZEc0@x@5A9JOxp+e-OJk z>H2V1&|Ddigd(DO)7GobpozccbB?DjQ;N<{i<;;W&_#!+14^%g+~BD3HWsxB=?i^E zry?XM7QLLQ2f24&|97|lZ)X@NA5hE&)Ar*q0R%KU9ZHOhjvDO^fWja%5vUr{EyVJl z)-C19Nex7}oEjZhrE+`TfXwFbgrHH#6gVH#TK?&xsOvko9!a71(|`C3ct0fOcE8ME zTQ%}3MVIXs#4dl4IZa|g{vz@2N3!a9&IA6U<;BD2vXhXj#OZlDuO6Y9CB)}R_r}6d z2X0`i*@~IbG1fT>)W9rD6r_41G?IfCEjvL>TKRC^W4MzG$E({zwXyhSfpEN8%zMil zYD>ZF*D$j=HRn+cD5#tA)(j$v{ZfY7o+wfPSj8vZkwH`-=$?Sauz-)5P6EDW!4$pD zl!W#7sOUHW@+#aEgG|s(O-nR2XJ7zLM#62wN8_@paIF#43O0VZV=C_Nk5c*Ios4;( z9chjVHGF}r)*8h40iQ@&SYVYFlq!^pp}w2L)jVhxC%{Miz` zxN2sw6mh0g_@Y^zDk@q9zT4kz@3#|F`Fq(8eMX;Ak!1z*>A~(-n}s4FP_H8o2LEpp zCCCTqb-Np_RH@DZN!X(kNQ;j zgb9ZSw=lPeV&gn2(Q%OUur`>@+fm%nVGIt?+C_1Z(jqk7t65zKfw7JX!i88Cg&8SD zdw`=_T7=XLyU&dE2{-}182{nb-DxE2ay^%VD&;klHOy7U05R*8z=gR%GaO@oZB|jk zRiMh4RGczs?NO_hT+in%$=T!OAc9m;E}ZsxuKUC7eMwE5QXQD(v;vD%<cCo6i4{$d#3>_&ko%Xu+gF%RijXkIjtzA>(&5dMQ z4G2=puNNx@$UDw(2sGNhj=el2&&}6vVM4W-m7}Hus?4hG)hRWgiM)&+C$AGiA9}p* zGwiv*0@N<)!u!k#xE(=UPNqeyt!eQ%tWyloKKcGHvHE{H?F%YRgWVSAa-AN0Dy^F6 zAt0{NXc!0JfSp1de>G!<<`=G=8SDMcK0?=i_DlSjNyZ_-S@ZUdnPk2M`1`IDy zD^YZ>)8Ix0Z3Zk+fsMcdVMiaBRbZ5et!s zprjD+lC6i$g%XL7$5?_XiK0l0neLp&h%9pyd0R|UV($y8efrFA^*#j`-*L}Tlrx}N zkPq9IJW@itu*2~-LbKJI&}t+aMr=Xt0baLdaZdgGmM3;yGUADFp-hhsUJ}k?SYk1> za(=D=*Y3J>C2({ElbAUkf#R)>I68$DLeVM)I`JbHo zfgbf(e4l+U_z{K#Rb|z1l#>;!nhG*m@z0J9-3TTe(YmJsfJnIY9GBY+f(>;OsmYi* zbaTUIRQ&UKKW(vg@ML0&D;}mX-5z;@-%jg=&2pt0e5D*ytXDbeerjv}0X`}AY|mM} zSz|a#HVKIj3_>_82|1DlRW+;cWTt7)?Is2}d5#1o+%$^6^!!@r-wNuJ%+TK~6f_`< zjV7n=?}w!UBrH6zW|L_=F%m_%(x&Y47JcsCHIpN>mP|dt^oMB-I_AQ1(8b?fChu8|HNOmX&u@{PTrxz4oT zEBDq0%7s5M*1O#B8T&e-AgvcmqRyOHYp5+NtG=hiilsx?1v*f8uMSFMZYIX2l)7B4 z9s zs`2*m<7W^Zue@FY-#2RWb%~s^$rRd<=wmv^4NGa&D$S^iDX&F&lsHulb5dNfJ%wYB7WkDW?L`&f z1||f6klzzU2?E5x=Za(7@A(f7n>hlJ*Ac4Es-liEv|&G7t`nc%mROK{s`St zb@6M@bK+5$lvdb!)AJ5sVuftlXJbc4nVKi&?3FTAgd*BY-jUQ!>81L`hdRs<* z!hY{(E!XRN9b4&lLHH-X^4#ErPi_bRz;1PD-K*etS*f|*iMzG!{(!0kKr)mW@_GR{zAD&<~FBWoK0I152FS-h) z;>b&c#DT%ooPBqmZWTdSuKE;PqbD#*cM+J>gT}dkt2Af$6dhMFfUNT34O!OD47IdM z{JI0@YI)^4oh^u}(-biMv2#cF1WV;Gw7%sq=EDc4*dP$I3z%}~3)jmGalyhwYwM4o z0?dUgZ+-4~#s*l(o=pA3KQ-Q&Zg1$l(J})FT%72n0BhL&m5E?I9WJjrEEbK)vAgsq zH2M5E%jnnD{^EE+zjMBx=5D@vs$@L5TOQI+#>AZpH{UC<3L)l$iHCq~Ld)wAdC_H6 z-6Vp53TX$aB_{V#$8evug)LYqQspqyF@ZX9!A07v1mD7ppr&-T1_&X195XphF?`5h zr?+ZVW7RG^1Nxx0XM9fy@j7z^sdClRyz_R5C2R;C=qi8NnT+!PNq7_3J!6K`V~9=L zf%4z%lYZ9Mb#Ti*TawcUNnG~8iq!-~w2Ew4|1E8Oy(@8j?YL3;ccB>icXD#0AJE<2 zBh?%$rvGJ>>E>W03JHZ9+ID0K=yLb_g{trUd|s=6q$Fj!fJ%X4iS*j_q}juzZe2+$ zOLUf~{a9q(ScMC=f58&h2ZmWAJ)4ZoLz`V1k~e-pnyX1nH9lZWA1p2lbbB~m@qn_h zRt$zAF2u_zQb<{p_a(CYh(!i?P~)K=^VLeP!j>Kti)x;(>_cl$()>~Y!7D|~?=Z

g+1_KnIvq4d#T^#61VY^hKx4D8p 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⁣jW4@SpKXVD;bU_ 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

8ZJwp!V91JUx7VU2< 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

    (Zsqc|$D0M2T^i!ev?7z(E;M1Q^~Q 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 K=YQ4?#w&vZ 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 F{s;XMIza#c diff --git a/vendor/github.com/docker/machine/docs/img/coverage.png b/vendor/github.com/docker/machine/docs/img/coverage.png deleted file mode 100644 index aaf62f994804927408dbf117e35881b104b9ff1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 198121 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�uc>45Nug1y~}l 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 diff --git a/vendor/github.com/docker/machine/docs/img/docker-engine.png b/vendor/github.com/docker/machine/docs/img/docker-engine.png deleted file mode 100644 index 65c212411ebe0097822e062a8fbe5d9b1a93e0db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18422 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 m1hBBS2GfZd{|bn`7#>2(SNMdEKQ+ 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 m1hBBS2GfZd{|bn`7# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/github.com/docker/machine/docs/img/logo.png b/vendor/github.com/docker/machine/docs/img/logo.png deleted file mode 100644 index 00e57bffad7f2780a0e3a1554103f840a236c9c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118293 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

    e`E3|@Ahe}LZOLEdanriyHON2j%8?z^ z_%{eG|3yp}e<03{S~<|Xk~&5WdT;Pq*D*r>5Qst?3oFz;95S!X%!vbYz|$O5(<&ec z{e}ZUcFoJ;CG|a_kts#hypqj)R#s2fYP5{3i+daK12CgK<%yT-f2H0fg^we3Y!o9U zXknQiA*N8nVy{;wa@Qz6?@uDk7x6k)#G#R{*IzdVc+qTNjY}=S>29eoSbuYX7TR+8 zx^z-No%g0G|IKdzcQg>xf}DlNAFb(Zh`pupGr{8x)^Q`7wEd%Fd+b2R#ofEW{wiO- zx{rN1uE3eyjNh_m?H%a%`luRP_j34*0rhS==pk#Jz`iB4(uuYBTSgU{;eggTrwW-Z z%ZK07pE{2+r5?AX;^4-ozz}|t+)}4if%`VjULfVGx`hK^uc^CtEfnlVAz8q0QDJ*@ zQpcG|PdCV?UW6^khQH$+1v;lw<&}})KS<73N;+Cxz-LUF((z!k--&#mXIm3D5)pM6 zm@=h@vq(F67;#$d@CWK0c!4;%JUT`Gwvhu3BGCP_KR11uZGd3#=hF?5rwz2YSH;kcaD;xMu;*tCrw}6 zsfQY&zLEvBqU!zBcs^W6iT$)0>g|0kuRi{|@6#r@%o}3lGj7oV&>i z^I@`^1YRwSxl5|MJZ-?M=x-y_UKyRlobN z;}9m$Nv)S(H&&`NRW&p!5B+Y%o2K=(pd?SVQ60Al=$&|3`V)f?&;#KLxpTSUb^LtD zAhab#ZJSrP33WkgB1|UDX%>{0X!cT(;z|fx7k;?vW?!FogslrYpMN?i8p{$szd3Pk zV7a3SLYtHFbqq#fZ4(acZzl=bX-4P%YKjSlupu1`xgq;_UV4nkSR|FUWVv z>1=e2b|4&yep!ED;>ZA~RRGNVm^b7c`4|c5X=4u-k1|{BB$&IB*bu$AN?Wuq5q`3Fd?wY;ARsJu6bU+Rkd00S?uG*)%I1VbxlH)0C zHiW|%ZyvR0D?|RQO&e=+kwxdF)ST_7SN3UvsFSW0S2$a#*<8>y5S<%7m zMS$3Km-jKPZlAYv=vvZt)+P5(;JY!`Fy2Jg415fbP$u{0wA4Ql)WyXS*C>^Td2C@x zoobD#a`tZJ)igY6qoUpgePE#f%$eg$&XM%0If;CZzyY7qR7%ahsXel{UU>9jN$T_k z{l3=Nk1+%|3Crt}R56lNG2Y^yPw5zc+4SSJ)`?MH|5*B~ohdX)ExmP^>eW*oQg}d@V0nHdfsq*J z(|Mn59ow`obAi7a@w_Qmb?B zRC{n~>^L^O^@=Vr2_L&}{sHSzV0e1!yfZTX+98J|U-W%Rrpb3^q*+e!&weKqo9qp8 zAZh|?8R7W%7y5j?SK<*Yf1-gzzK+-0S`)MyFp~lXKp5U(s5Shtj#LgPre8EDdTeUq z4iY10aYn|S$uYz;PX73pvvvY4{^$05h=f1hftY~Trg_>H9B91~WFpeJ@AAsn0_K

    O9g5S^d0C#oJ@5L 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 diff --git a/vendor/github.com/docker/machine/docs/img/ocean_click_api.png b/vendor/github.com/docker/machine/docs/img/ocean_click_api.png deleted file mode 100644 index baa45a190ba1bef084a9d22939780d4a2137dd24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37125 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

    &7`*UiZSwwTu`lVL#$J>|xWCCi9BmsbDS@wlH7 z=Ddfxn#U6dF>0N8j0f#%TjqUz#*o6w&Pe)Uu}5<-q>JqJ#XKuWdadXn{f zuaw^=di{py<_KESAWlWrb9P^U)Tdo^@1p8{Mt;s?aY9GhHB9m)->e zIU4tdFoHdUt?c6{Ts8Ym@2>R((5!3A%2N%!uA8>BY+6E1ckh2u%B*EAXa-ABx{qg#k5y!e2_Q5|x zC8gEX_CE*UL7*7R{*|R-Uc0e6$L+_%Eq_m3=;QOBn4#~tA3EMwEkBB0&N9~0vNME+ zhMvobu6efNB^k4Q{KyO_fdO9`{)1cE)Z6!mP|)3zC~;lEM*{sTx#-4&2N%3jgX%OB zc8|p7#S?&Z;8<$|&?*20LA^kyoXB#WyJzWE8THy{huM1*Vj^&TDV})q-=~7RZDAY)L=RjsK3Ae z-1PhF9c2rLwa$Cv>0dxOy!!_SIN;ZT0OJWq1p#B&d?Nw@&alA18Sw4vU>#vzN9qWp zV7a+DK;|EfNa{g;+m8A`f%=c2YKBu%z{h&~<{^QHzg~!DhkExH3 z;D3@#ggvf*TWmFN#YUkrHLwVHzOH0+b+hVoX7cSWBGQ|o1gCww?1bO#{SZn|UAp)tT;&W~i2Gm{?lU(N=5Vku5G% ze$s}lHt!dIj~r~?N&V!sCAhIgSv|kvu@&wX34Pe*FsDfj#kJ3Zz|Huj+SZQf!VA-^-f-d6d5ORsDj3f?A)ubDcI1$20p1 zgLeLf4T$sg!-y{s16M7dbAyTwH(ch-cWIVu^#RG&&A9uAhl2JKY$;;7UP-^MB@$20 zgJ4{x!7*pM(Y`)m-mPek&Ac#Dlw1xhaC>_@n`wWvNx}Ne46e<5#ZcFxe_Z*pq@3#Em@dyaUezk80t%~d z_oww{c#`&g@fjHrsJLLA20d5lLeh~l^EYPamJND-u7M{zPP(zNvD-qe&CT(Zl^*~a z2|GVO!|yLz)(!8Hrb`%kA08eOsUr;emR44hGcpJXiHMS*P`-1}k4ISuNGrV5q?QgB z7x!m#vrG#ykv9)h+WNx6!sX*?UN5u<*(7X}U9qOzHpiN-jBj%Sk zL0D9g`rC+|f_(Q1p0mPc5=?g|M%x!&REp2wfm#=SlB=f{$fHtwd^Q-2`ENBOmIR7} z@TX*$J+zKs_jAuEnp!&F$mnRBu~(v?Wbc7@XR6%68F6O2%kDf&gVKc6vVK)k@}WEQ z%etrgpyayC?#Fv^H(&C)M)AEtN)otB<(%Y#2N-F}A<0D4mknCQZyH%b-frP%rk6@N zAN7w`pmp4ONIjSPGv&H<=9)Qv_xm+pf!Rkiw*qxOv;h*zbJs`9hwrtwb(3UxDxq#JDsH@dIiLhV_=%fo#DFwkyrG-}s!1gU|WjQ0JKKPZv#Xa@$UlnaM&-YgX0Jd#$L-VjDTJ>zBJ>A}WSQmoq!#A<0L@`w(@z zHqqwjf&1fZ^{NW@nYX$rY3{O!msKQQPV2Ko($CLN50|oG;pnSqRA5SmwNjFuZ`s~!ZPCsnpEs`MPl&~ErZby>?J4V2T-n=7H zu2ora=v?Uq)vZj$3CLR-WFSS3Fo~f8Nzl7ylxP^*>+{@kaE|O7-E>MFmB#oKuCPc;;|C_gl^|dNy*Wfcthr}V6XNv3|5)+=|qZ| z((|1voos~D{pek2I4PaYm#yd-ML{Ye$~=R3R8y@|o)h(c@A^DDMkixpR5huRgUDow z&!KkMR5!y9XjzER8p?n*ib43_SHFO$sXX_MEHeVJEOR0xebxVRN}90MI3a3hB&}&Q z18LxSG=pPM6f3E*+5NLdf_LnLc zl!GDHdDP5KnpFl*+Rv8}5|qG{R6n*}@>i-PbTLJc{z%hC>EBKJ$<9itO`R{+RhBuL zBH;qdwwa6`dg>SJ?Gq;Gk<+-@sNmGABnt=4wpU5!Y zcKtmeO3Q0zf*d><3*k(&TZK9g++e?tDC(n-pV$`byuD%B4VX!Xb!FgoMYs1hvJ!rq&aV6btSNNtg0> zW?RB{io^|l7wmg-b*7PgcP9#K+be`Y*e8!1ei++NC}x=$5_lnYTTSO3=G)!wc^A7s z>85bQ-`gxLAU;JFo-EGuBoH_NMnFs{$V@d_O_rHjtBDG1PR#q@CVc>Z&P^@LVM#>+ zHW%GiUWAsSLRramrObxFrlUp;?F72Wf0rgt3*BYm@xhQ(~J_0ghfCa@PVQn|7Ab|&KuW@ zXnnmmLcos*eo;uqv^WuP)KG#aq)psUUC+{M7RYZ)1QTQ)Er79$PoMQh;MxjAsa#4j zOYlnwX39^Y@}A%{jnza4Ly)qZuCqj^Vj$#{al+5dKhXF>AOZ&Fei8x%2Y!Q+(8}r` zk>`|5`J78ifN^}mq=wcI4|$l-ya<2gT^9dL4s?PTznw1-OD1g4e!Cf!Fggc@=Bl)^ z$sU;h;fF!Sa$T%3hNa@AbfTbtEG@}C7k7ORMqvNhel`C|^W|?2B$+jdI&wn+{Rj{* zkr)NME`qsj%ApXXfFq3_n3FUJIdbOS-NhaivVH*uCG|PZI~7bQg}Ao#%j4aJTPC~w zObR4^%!wsz0~!1hHYCXe>zupxcPW+|nDdE{{}IYg|8Lp8vl3v-*$+@*Jckd$FR}&o zOeAQPtaAT+xIUu#M69JP#Y|kkkN~IC8JXDz_{#`ocH5MGDy}U!;H%)8<#^OqnTCH! z!N*EiQ;r>Bkkqe$rmtog=z$uX564do?jbF4mJ4-r>)RemDhGIKJmz!K3e5FKH9{jP znVP@$?YaXt+oBz}`Za|gPsK-YTe3d410MLnWS)4ftG@FBx&W(eYGcC}YS|kJ=6Z43 zwWHCf^LSy~5x!dW+2hsL2F;J)yP9OiMqIQvX2MP_#XYI_6m>K0EQTGBCJvSV(d2)O z7VOh$4`!4MIi@%>a=#O3o1#LmVc4pKB+EdF(_$UJJZli19FNTB^y`jdqj{xr@AKb+ zxY1kh90;oH`dLS60;&>!*eZK|3=xmkN!vv%2gAzpLCWX{Dt4r=Jy-Kp`tswcPqzo< z)z*CY%n-VP-s}4C_#cXjde{Gcn+hzYo+rRMs!36Iv$F~W{Jr2=_bFIyiFtas(Khsd zYLF*vQL$ikKmEV--JGxdL~N80ylXauBb}9WRDp!yu8i`q6(>BqUnkkL@R5W!l-(321E?vTSRa7uPdx*A;zcAVSa9V_UWbMi&^wxcQ#D)Vc%!66ua27 z&3G1WY5zlMrxH%k)A63>W}QO1?`%(@(R@QzKB7wUl-nD2IHaIQaR`9#Vz)M5Ua{OO z#uj<~!ZATNg`Ea2z&IyB`Wqjn5f71#jicy%z##eGidL8|2b{NrVQCrH?B#|hWFLKQ zPZMf?Wngn|d3=gSEwldjVhMv3-7C5F>+cibzL0(Vxie;m&gpo@_==PPGz`E&}*Z;xo|Kvuc0@7cb|8Kef`=nQL z1=4Oi&%^>*ozJ^7nf|A$1o#~PH+g<+rekityy`}@WY;<^yt+6Yy_;CyRzi)* zNs8$+r+JliVcj(%V{mWg-SOu=EG!lC8mFVD_E_w^Ua0#&oK zUx;L{ERPn?i()k3$ZmpeIY&vwyesuI-SmD3b<+-_~EfiS^WDa{x7XqRJA$^J71kk6u%e$3PMb4#SAh77{}}$ z4Z-l3Pp`N}quuf0bO{)uj({2G8 zY;L0Cf@zg9CxxHSFyY_82>INqFltp`ede)W6BOkRkIm1g6#WRySLPHC5iR0@v&_=fC;_xG7XP{f&!P3!{>~UzlSNoVKF|tSZf-RG{8N++U8jo85PxF zHiG|3l?=x=;4mMZ1YnhX0{?=!fGl!VArKn)RT6=kW3N%F_C8AhAjL+RkA2%w3;xVr z3gG=x*(4e>8|1wM!2Xu07K8#2Dn^zvXC+xukd$_A5>ThXe*Gh0)0BEb(MOJeIu#<< ztO??RBKfpL6U&?9RY)4O1b`bp-b?}eO@qgoi8a-O(~ZTbd@7SDk}BD6DRwjq71#|d zeW;V9G8w{I@~o{goN?Zvs4{t00<+MW%jwUkW|iliLalb9goOB1v%Q-7AR+-AHl%?3yYX$j-0gESsE)vw)wob(f&Eqk)F4weMMp)v}nM zlaN4<8KS}&KllpdiF&Gj@TaY^^ClU4B6buNSZEN@YkjJv7Hn4nUQTy7>QX*={J~s# zxnZXtRuI5*j$!QYsrR}$t}IskPAL+8GFM|P-e5I@@KZI8REV5czr*LQ2p{}Guf7X; z79c}on}sUXy4f;KMr(U$L=Ujfxt^>E z0e>VgU0m46K8ivX!VPj)hYQk>nz%5(1EN4!DoLP|K5{i`9M$y>UqaXi)>tg2Q_z*d zNE(YaKBK;azr{##7APr;=eJrse!1&N~J02Ef*?`3M`9@TGcvtWD0&V3pCim+prP zY47`!1N{C*rT?ZiaaxH+GoT^>g6i;}Q(Xrg>ZPIyC_u6zUe6P7YJr)_eMiep*zc=@ zo6}j1#j0E*dSTc=qLef;WZ!t~V?lXi0ozhZG>SL@OpdrPg%KQxUuPOY#^N>9WP(T{ zZIB=h*y(<3PFB|2eAdlCM2{TzA5H0a45$Yfp$J^j{EGYmNVgOI&jsz?H;K&Z1+2Q5i%Qk_0x%ul!8CL1AJhk ziuwUcjr1+4RnDP4j=+?7AQ3Wa<*s9vAUDJPK8DU^_H&Y=0A9DqQDfNEfFuPv@82Ic ze$uNqya!FfVq$r!lB#n$rdIb;=|HH{k5k|WYMhWhy2t&%xpJ>0Z-VM7I(NR5?~|$5 zk@Kvpy95<#0RuF3x>H+c$$RasNX4a)j^8J|h`zf4t2sUU!^0%l`|)UHgY|EulW}`+ zTstz+Y(#BJ|CyLf7LYDF*+&Q{4Q=|upR^t&L1WT%BomFePFo2A^2&I*ED@$aB8O-t z2BJ}jt#AiR(>o^UTZKSrF`jd#)IiLY_2KjED^^dQFryX)zGbJ z=uxbg9_|$Ge??Wx3RotH1(18N>arFPP|@?yvs|6-cavwNYPI1mDDMW>-#-QGP#naj z%s;9-POV8eu}*{0VtAI$r*Ve*wy9#DJ4VlOgOX)9?1HDgu&xc2^!#_?7gc#vmeq9Q?1etsK+wIswsZWK&y!I7y>ooADVRQX zoRt2ec~DP6?SGk+z1VzQi8|q1@9GMV(k1{l{5fEY_7-KY&{C^4krYJ(Q3l3?3K3-; z+O~L2?8H(SG#x5=LkV7rz~J9nKbSlwDu&XCJprEzQ zi-hYq)#?8N;TJ6jRiYGvd42!&Y;XWx1D!I2)#}?^w&fVLW9~S+;f8v^o#;Wpub$8U z)T|J=BHt-JFeE{NKpVr7KL)CU5Hb;$M z;);<7ajYXr2+Rv?HWv7xNi6S;=NivP6`ovz2}>(muCCFU4aUjO+l-8V_RlNI7%-uP z5@hcExaOA+kBX*-6YYsBvKGcTQrt)9H>L<#fWR+(NX z!n_x!>8+NYiCy0(_jD?NdcAaTWLU5>U!%09Fmy#d{&ZFm@9(4YguI z6eM0p1P2SF+~-d|b{_1D(2T|RsBvsEVoZmlyX-KhrC<*S>43J;E<&bdlYkyXPs()A ziN(wF)1$&IKM$dRz=i;$+$|})bp0vECco}!Kv%GIDs;y$XCB80I07zCaIv}Qv@J@j zb3*_5pjvZrwSEzjE>tPULKqFn#aA71x`IGcvRUPt$y_6C)XG^Sn*B>368t9RiT}c`w;GOC;gTPB9_C3A zp8QYELegi?>}!b2)y7kD)$PD~;|oxuD>3vnM3s2mJ}iVFtDazno+)GgPbbtb1Q&ALf9PQE$nr{;{>B!J648?GXJF;hV!X~>YsRtwGlQBSSrs63uUT)Y3V0xj zfJN6DN_>y%^(d-Q;YdjtZmH7ej= zNp)0w`Tdhm9qWY@45nR=^H-9S8-C9EujB0jrwz*Z%*+Y^*Vzmw)AKw02|&OkWdbAa z0rfEp0I*2DqUN%hXY#$8({_S^`aU!QSfJSN>3(QkpS4&iivf%cjz`9&8N5jXT%8x8 zLwIYzt+ocz0jQ||J(EHEoqU~IlY_J%^HM$zE+#)4E?dkP#bHj|Di=Hof84 zOEtzpYHDf_>vQ@4^#zl>D! zRAj!2h-Aw#0ilYMj)y7;GlW#I^7JVhsIglMtF@RQ^&}erK+4X~pFs7O?Q)|cu!U*@ zxTZ~zp)(l(yr2N54Y5hUg}p=XEWyZD;{|G8QcAGV-*HX?zWUrxGkH&_dZk{&Hv8s| z`r$%#T2wy}{%!d3n?0n**!AzEXtvJ3*Sal&HPc%E7r(JAfrTVgmWcD<9&ZlFmuGIk zwVX+!RYsx+#u7uK{~HnOwDDfmpln-K5`bE-aKlq>V@ElgxLLu2eWUvi`$j&Hp(_O{ z$qqLAq7HzR5D*9X0br1!n;pevW~z?S8DwxQ-~_+AapzA=di63u?Cv5PRhjvjn^^$B z8qQPybwyFwwF_iSrc{|9>6NmTJo5ioeO_U@XbXeE1cujfP^Xc#g||T|0DORh<8|h;m<} z27nFte_W~tH~}RZ|1|`#LwKXphH`pj{r_55URMW2l#-FR=-wK5sQwj|n15OUv`vWw zG#7#LdS6%gJ)TJy6&EwGv7Hrd!e09H_nn}8ec2r`xPRW-+|+2W*0fz~)1Al>)`ojs zsdV7$?IGONR`-*lI8wt7AE@%lwW!C()#bB7(YFj5lR#!@t?O*p{#75qK5(Qm>zCc$ zdMGmzr?40r0MkJG>#HqNVfHgSVai?B>JZEXN{QD#2m$r2z){Suo(@I(%C0`V5}Lu+ z_+I{}!){Z7ciF{sz5Jbei$#ZXe?%CkpH|%7NY>$ve<&pZuyA?+Ry43u-9%o)e?Z6* z_y;B6F4wLuE>IE1Y(DH#7pwV1WHg^0pzDs~=8Y@Jg?7BitGz+|mxnhWf573CV6uR% z7ZU3X)3Z@;&<``W`FDnocO2$_$tr|oK6qHeO_A74f?r_yKYHPy-^7VsX?6x3*!W|{ zVCKY)E9Z#%pTiMI4|iSCjdPh`4DftMV-m75<-N2rVh-HN*jt!FZ|4AJnoE){8-E|LYT;$KN793M)5Os|*Gv z7o2Cxsi3yS^^#+iW-kj&-OCavZS)v$mQm!pm7lYk-l(cmkr;XZvHgDDUaqX%){MY^4|P*< zq~9oiUF(+nt#;_TT$(hRLdU;@t3%t=ugp|_T<4B?ZL4WjadvxEc~fp6|DYjM)lUtQ z;b2*$EB70TVkN!UEYE0~?NS21EP5b{oUZf;YSSG2Bte{GQe~<7HZm+aCFVlkp-IZ1 zjz8WiG%H@Zq=;2=^()H|dGzQAGW}`pE-P?ZkOO<;sndJRWjUs;2D1KDBb77woVGTir zde-t(*(k~5ysr_A{^dp0_Obxk%1_`r&e7a;BO|=@soLs9AJ;dwCEdW@o=gN!@twy+ zUobuo6OUeM01Lsdb@2t{RQ)zr2Ch2DdYXLTf9CX`q3CMt@!F493$NBzRW>se6rmyd zh^t%8&n$xrP)D0;rXm^hlSe|P_a(NXZy3x1N;%}>cj`W=_aq++dQ z6yQmgmC>@?m4O!WOfvLV-bJOAbY60*p|t^Bvpe8-7k=+@kA_&OegBjXQMlawk-I>| zR&n)e{3L!ODz#u}w;m^o&++o{a93j%sdTg6=R%mj)t!katN0AEKy_VQP&k2*_$B*a z5j89Vk@C?l8T_&o!t|5W3Jd|4_?UUmah35D=k^j3^R{ zOcuK-@%Ss?LC^<_(o(5%S&3>rn1>X>eCu7t;%%s_B6 z7k5O#GX~j8aCG?;8x&#v zoOHcBQF3l(fl3&_N+stkoKiEWJfHyF0xC>8C$W7JXfJk6?EX?Tl5al})_pYkl}kkf zkRl2ghBkL)FAGbzz!woNiDY*!uC(vlnR2MtLqJaC8TH>mip3MCMQYBX=iN5kVCRy0 z4}$;laqPMRMW)KWuJX$o_wbQPc8DHN-{I!{32#aBiJ-7Ht=1}JGx{1C9gttat$cCj zYpKr&Up9zN6F2GI$6nCS}N+|irZr#eK~w>R#IoCU1lpgK*ZFC#}oiqwY{Q#G|? z-M(3*aj@;NWY5XM=|y;oI6J6avJlm&QwFtoiE{8%&_Q6`4^5X`T4Jc3waO}Opq#ML zNY2d3Pg)E2v1~bP+WWn!?MVV>R`Gc zt7*3C@M6^zxfWfRojpKMOJ%(7$)wD&jh^`#VV@qGcU8@##EEY{SeYGVdTr~B5 zN>??mo5DTdR^hvio*1)bX!&t`q)6?S?s%4dm(tCx+G~>+L;|JpHr;jJr@SSrZ#|;b z_8aY?F1?%NGpOKD_gwp?R^c#u^G#Ji-$05=C^k!`A%qDzeUGQ*c}{Nc*d@UcPIU}?E83 z42rp%q{Sl4evk!W0)dBn-W1hNQ?~$hy#z}`vrR<33M@mE!A~XO)~cN#9r-0pnbk5O zzomuV-`}5>mNst-g+dLDkE`nIL%x3dR_gq#fi&`1di>r3xLCTev5}XbkDcvx^)V+W z#5fD>+-qSv-;asQp|X1{d3$aPHP{&ath4)W@0b<;Qggmxt4?_~<#f1IaOr_=JO7iR!-56MYM}|*8 zp!mYQi8fl{qBvBGjBre187L>mo=;mC^!y%ZAx?;+PO~s$@j~;9tCu|MW&$NaF zdi})hn4FqYs5I~afhlQklt}d5%uWf@EpLb`{sRZeOJ5Ir|68c!9o`t2dqj1%KQxXq z6k4>-T=IKkbuj<@;Cr4kcXaZsVPbSlRl#dF%!-yS`?Dq|@8>}9ls>M1viK1#8S~Z4 z+OsyZ&u)P|AbXKjMoTK{-&o>=Kah_=Ot>zi56-P|{L6c|dXVGsQ0p;*^*odqoR%Yv zQZ&g^!rsM7np(4fX#4TSFQWADMOs43z%x=ks!G73_?H0Vw;sD|s4Cd;iOzuxBc>xsj=rys=40$}i0A(uAyS9O}d8gvW| zVdDlBh6;Njf9vP9_4Nsc?-PFq=ZZQ|3}=C0Ee1i*dY3GAPmHvTVP}X8MvS9WW67Ww zjGG353Z31Nt7i7M!}hK(S&&%t1hlT-6Myg6@LZ8TZpyi9f}tdP$BARGg=6j;okUA- zY2x0+OP14Emlv}fY?~mY&Y4OW{efDTdN2z}H12faHhNz|FA-veWOlkrU!{yV9t7|| z$L+FUT#3!h8b}k>(@lFq9jBd*-V>i$_NA`)AQ{%Y{XIMWB=qW~xo(LTDylOfNiZi$ zne{R^btti5VPQJ@Zm+sC8ZEELLWAMaU9Kj4F6jf|G@}Kdyvg>$2!UBF);XZhf4Olx zt|jm6@1JdvvXa&nPfh7kBwVZnl4H1@pb1WWWoCO^DZDs)^$a0we0+TL$#+2qS+jWu zkv5FLjD@s{(8hq5U#dW@VE%n{IQv+pSo}t+S5j3~)pUW1c`%B4cyr=fX$YVqhRJ*@ zfrSP=V2W=JmejoPQsXl-Gk=HVUn?m;f-&{W2#cRU0D#-GLR%Rb8N+5zj^!s-y_?l< z=VoVS;QS^HDSU+1$}+KtjP$v}vfWS)UMdGl9flSfTv3f)%nxFzhG}}0;2hJ9RQ_Ik zv)Tvot^4ZD0^!l44GQYUNe3bZg&9m-{g)Y4TsRd>U)WKGALm|CTDx6-5o}6Or%Y?y zlW?NjS};QsN90`UThp?r$cB=k90+g0CKvG?n5fGBIp`iny$LZpq`7$vYxb-C9QK;^ zVBtD)B=Ah6F!V`u$r^R9R)Bf+@7u3r+J3Gz6uA9ME+0&=>nd{O&LMjI^a0iB%3oQW| zVepujj*dKvOI`S-YKRax6Bf2J%NV_BcaFFRD+@LY%K}KNn0ygrbrz0Z%Qj90%7@iu z;sYUwQ}s>+tbitAc>Nd_1MQRm+>CxR>rb!oeCl=^qr%7c~Q^pXbmpr=~20B{z75PFhY7g>?rk%&6 zx=4p8{HHKpHdYbr((6VFUlT!tsvVY^JUkg=xQM|#@OEshAgt9Q@}T5x8X+uaM+^iJ z2D-ydnZp4Fk<)TesBSnP{qA03yTHlD9qA%Th5S<~Li5kRCi$1KxIOX55Nmq9fV7C~ z*EGbE&ZiFO?!1NYwE3a7?WXo!F-P_Ac+=3&1pB8>uf4V7$D?L!zL-myxwBB>iu=tb zx~oe=w4YfS3*PoLC7PD}FDQ`9Tcjhe-5t#E$ONWBuEzG_NgNk{6 z>=@&cPvHtt++S1MB-@wO9o)~=Gk2)YI8Ts;`5E6TU`+qbw(|HLB^=C3B5bRl0X9PT zT;#sRNIeM@P+*X0#T)2|eR=&=f{^k?rAebEKnyEv)+9;F|D;IL_n-okStf?g7i%!| z6@vBaSwRE>AdeYE_gC={er01wu&^wg&RVfc#|zt!Ws&5}z3Mvj1;FgZX}9nIF%TF9 zz(92zrIJOjWh`Vn#Bfvpp?(Sq;U5X{l8@s5$lhb<-GDhQgARVu;FlwVAnK-W zyX~wHbQ$6F8EFbm37cvXm4i=J4X!I%`Xc}sipwU?*GWkvT(2H9hRBg_bWhdOF4dF@ zDzJUG%sKugop?>5zkcH?q zMbz0l^!I~MpNrgHbnZMAeCE&jL2bRtX*R15-j|e7WRDA(2|AfrW$@SPw_EAyzi>-% z!xNA!(Yk85j*PF+>%ZNlY&mWxFZa6$P(g2j54i%LnMYApb5+u~W5YzTXq=_4>z@oy zpOEvIiWo_}ZP{H+ULkj%=~DT=TJC{?05iq1$fD#``=DgtV}!qMEJ&^Hg{g}?UjCpX zUr*^lnV90FvLZsaCL-QXsR&x8{tKgrWaMwF(xlTQG;iIX&gzE8gEQ8Jy^iOJC=znj zj|ICtt-*L#%2Zz%Lpm92zh5SYMV*MZyg(dluOu^cSU^S%BA?`UdwV%%YqE?sZfh;nRvzQ zd$niEqHteu)hzAga*-M(vAfZv z4JyN%ob4QgJQibu$G1-AyjS5cJa+Y5KqXWu8jCuNFgW8eTsoDsE1$^}gpwE1HFYf@ zLWt>q0DsExU#*=IiNiG{z`7MGY@7du#wUP+XQ%l zb8~nUEJoP&#Wn}S%Nu8W0-!09@fgE=RZXIW%~Yr{)6mh=lI{s@8tH|ND9Lyr9d$tPi`c1WJfbLN zZC=5ssP}qb)KCkX)?RduLJKl!bv#wRCcMNdqLPx^uU5;^ZNxGvwn$cOqcYbW22@AJ zfjoX*{`dgd)Q7cJ1bf0&+q2$^^HP409h?x!#Xi&sowTLJAOWZ<#|WH6RaCLNfR1MkKhTL;1wq?1R^N>Hb>{haws>rTRDa&oeQ zmaPS$T;sxBK+;X{yM~p-9ZNJWHWq2TQNgAQ_720vU+e;IrM5&3Rn$+ZgZX)9O>tAd zHy5o5$?E4wz1bh4ef@W(F@{6(tg-W!^oZ?QA0w}T09jYBmSLq`(nq&H+UXeNm5`>W z0{S(PS;winO*mOu3JbWX)@((FZK1m_bT=RuM*0U5+La8tLQ_mq-QY}MNy7ryGEE7Y z*WC&TodIFw{R0D2G#$1LlVUX%RWVv?UTEr6`m27L%l#DAewp>tC6N%-A~+2HkeWp~ zj_RVz`PEATun@Pp=TqTBrb$wm1s@=DGqe#o(7FEu(?Bqfn zLF?q=$(i!_gLx6zPtP_(Yw$>l0F)n)mEki;1Uh;P02lNG@G9eZD03Rc5G5f%R-8x! zY2wBBWK}HaOGJtYo)(NmP}OQ_)BC6auU7AQhZuqQcwxSq*CW?Je$81afh9Jm$^rOf zR0`=|dwB5tAm3|f{9Xgc_a1z@@w17!>SD=HAAy_ORt|TEnO}agR}+YwV8`h_Rb%lh z{_%brwFCkWBz8?ekiP8_fzhM$Oa2cASh4}2b-${!-qW>!e8avZS(#sL{5hQ)kHL&r zkW4$KYaVShsnmzva>^4ec@WjT(Ko{vPBg^B>DiUWlx}!#QI6VfS3jx(jV;WGYa(`cO+x^;p;+f$I9}j|IE|)*&_e$oaD<22%o!0-6sjd(^3{Y{o{;TD9u`lQNJz3VALGE-was$~| z6>7e@@88?lv3oSQ)Ns!DrmKv1Io)_KB*|JLvQ8pj)^iz?dmvd=g?-&1LbdYrhz^`S z+vz%%{5n9XbRKZ?==0>U$LiQ+!nItj%+xtmrJ#Tx?JDzM&3$8+3d^Oj?8@p%dr^8j zCIo&DLLO@CH|h82M#ELq*fe|CFf+GY%q>Xahv^<8MQv>4`$li`y&#{37fjkQGCK$L zn_tZN4PRxH8)uhC{h)k4F!;)Ru>Cs9XQ?$u=GfV^1^!awfuN>sRdCfJx}SXZWNnw# z$n=OW)GEtJ%FronlS7~GrKX|EJDu0q^pyG-DXMHJ-R2vJ)+l|i)ey>&M4wu}<2e4S zp=nPCq~OL$b~f|efcO+M-SIvBC}swk9NwdvRGTlzV-CvN&p z>^zG!_ianoTZUWgBQ1wl8!K|BeO85&_TJpDLery`h81-BN3MnF6CpHq;5Qogg=8J8 ziE)GBO-Eo(RP}eQkd=)dpM4W^LzB>R)Z*p*>fBi8P1#)A;rsgY+v>8*LhK&DC9C|aleKuGf>awQwyYu;Gzev+ z?9BEIRitA71nsp_YxZtNpvL+6oaH;il^@w)rYjMVAYFO3&yjP zChN<`GdT!m9m=85I;ggb0U;M3N(VPG?KLv3MF3YsIHbF8=o6n7dO-YsGyJojupSyc z{A4fhm-*!LBmHON6twdXA8lA>7Zz6q-(}`(==kZZbXL3P#Qyfv+E;Ud11)LI-BTLsWm2Wx=hzym2L!a?luBP~XjKe6CO-z3!{*wgwP;cTUWN>T@3{yjM` zu}QzVxHogtT^k z4v!D3(k=e{r6Eo47NY;)qJd^+zf$nUJqO=`@ATq%Yp$hh`H9U-#bhg;t#ClN$|LX% z6h6o@w7vw?_h$bjZt>A}@~Jo2tFtwFHuItK*R>|iCr<7DHDi<#0}5$TQ!K-LXF~$z zGSG;oJ%iAs(g4eEr|1@9@ggK##^KmGG#- zajqT{SmKw;E8!{IgD8pISo7E;jFSW9Np?c{1Q1>MG^!>MeRsR6L+>Phkry$i8YoUO zQOH#hrR9yVS%#z>ajtQ$04@|~Qvs4p6i(CC5(DK{f|ev(L|STbZL|XzH}%gxYgV09 zG&KoDw;Ovt3)ZgYBJ*;-8vf7~A40`myOeZcpZDM9Lj~m|-k?tBz*Ue|%$)_YpR$Dj1_KKxY22`? zu^uHMD0vW7HQW#{jMO+qL{=sWz*kU7&Z>}GW>K@R%EdAa6UxU~q|`?=?}2xrDYo#S z1id%4uY_c+v{E*27QFJ)0K#d+kMQs*+{TG`^7VQph{7eI9{F-e*j#d(>P)lh9~Dyx zx8#>9Ivj8WEo(Cs7~k5%QsW@pXIo@`E6Vzu0FmJrrm5cdXC)v+llDJr1mmCgA7)7H zPAsCEFJ_R*O+F9&zQ@n+CyuFE%#0qd^<3;Qd@3hvndRUtSQDt<*~=|!woWRUO=zqC z&@Ti3s3OD4Qr{jmh-MPRQj~xT6>b1au#;Y2YqEoA_>N(GU*lQWDiq(~tPsq(AH99p zw*-2_&WQ9;-%j3R#Tn)1xJd)1P$XAe3?$lNTb?f)Dyy>4;O(ev$FRKGh*8eQn{#M~ z$2BjIZ+tw0K8A}CfuB7JvdFRq)D_ zJgWXD@D*)vR&F-^wcS4Ew1r3Wql4LrG~!zwPEG>H+a(`eSCl*~lc83zTf^;Q#es(s ztcwVq!O?NkI+y>fk6Pl1H7hYc;Xlv0e^$y}+gAGTdF>+XWb%>%4wUp|$NjY{{pX)M z{SxeaajMFs_dQT8(X$UCfl|l-pKX{OF|wS%@-vaJrg3pS7@Fb)=Dp3F zAP$t|y%vW`M_^^gzh6RCY=v!{yaEwP9Ma#it>S?SH1v)LKq~OCV?PVS`L{LdczCe7 zsUR2%gg}eW45I!N$#}ZSoCA=WAp{=EMbJZQkTKp{nT>XZgTL>^7Oii=I-ZOOILkFp za)14m>QXnVjUJAl57Rzg60as-{pRZB6S}U(VllAi)#B6NIoQBNLjTooI6poY5&u7n zH84DmiHHA7MPdIxk37KO_n%tjKd}J{#2J16bIk+)TCRo8dA_#q5sv*ywr4^|?!A)pKc6zp9KQOxY86W@Scx%%!A0&uiyIVWvqfgRguH z8vovzu&`}p5Ls;X=@fw17*^_hGeIg2CSXnt8N(db@g3#)?Lw=ccD&S6_#IXqhEAg0 z+*G!n@$v6bE%8f!NPSOKhn9X##(@&;ir{DKcF5szb9@2Ul`g}-t_fPkuQhc>fF|^x zw17dQ1=IpT=$`55FG-l=LnPrf8qDO}rfuq^|C(CZ4z_cQZ1D$u;W`XE5e6P2GLJAs z{NYbZ%RDZ8ZtB5@Jl{_o9RD>91NDSd8>4NtUu91S4@%{?*$e0Ema03BnV|`phwS(1 z>xU_0L!>KeJd6(o_LendR>i&%287&Hx3}uI@DSt)1qd7*=t4~g+8gucvD6>Wg3Ve0>V?gEzg4PqK&#v2qJ`0(P9m*VBOhE7P`l4g!) z4wfb}nj;y>JEdZ#4>>ISsCpF=g)g0+z$9XXL+&F`B+b*<)zVyQ1}>7K_H1Lw z$=t{f=hl#=7M6`~eNPxGCycpx-$CNtp*H9!xr%#a9D%jE`?v*vG<+?*{rDo?X~Az@ zpPRXk6f+vNieoXVm0A$j+*f3&2!t4cY_PDLpS~*Ucd+TNp%j2{Tj#WcghXjwlOMt2 zk#WY9iNnmT8Y6wiqO?j7n3?p@np> zC5H(&!hWP6^DZ)<31pB^10q!a`z=DJP(0#~7SY81$cq6h!z1#0QaS=!gqr;Jzu|m! l>9h-@02nu?}!m7+z&{{yBecHsa3 diff --git a/vendor/github.com/docker/machine/docs/img/ocean_gen_token.png b/vendor/github.com/docker/machine/docs/img/ocean_gen_token.png deleted file mode 100644 index 9ae1cef5701029cb3770cd4d423c4fb0d71df501..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42801 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%0DSo>$X~0#C)|Rv4ub;u`D^_=;0a`D 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

    " lines in HTML files). That may be -// because this is the only method of the 3 that has a *concept* of -// "junk" . -// -// Timing: Basic R-O is cubic time worst case and quadratic time expected -// case. SequenceMatcher is quadratic time for the worst case and has -// expected-case behavior dependent in a complicated way on how many -// elements the sequences have in common; best case time is linear. -type SequenceMatcher struct { - a []string - b []string - b2j map[string][]int - IsJunk func(string) bool - autoJunk bool - bJunk map[string]struct{} - matchingBlocks []Match - fullBCount map[string]int - bPopular map[string]struct{} - opCodes []OpCode -} - -func NewMatcher(a, b []string) *SequenceMatcher { - m := SequenceMatcher{autoJunk: true} - m.SetSeqs(a, b) - return &m -} - -func NewMatcherWithJunk(a, b []string, autoJunk bool, - isJunk func(string) bool) *SequenceMatcher { - - m := SequenceMatcher{IsJunk: isJunk, autoJunk: autoJunk} - m.SetSeqs(a, b) - return &m -} - -// Set two sequences to be compared. -func (m *SequenceMatcher) SetSeqs(a, b []string) { - m.SetSeq1(a) - m.SetSeq2(b) -} - -// Set the first sequence to be compared. The second sequence to be compared is -// not changed. -// -// SequenceMatcher computes and caches detailed information about the second -// sequence, so if you want to compare one sequence S against many sequences, -// use .SetSeq2(s) once and call .SetSeq1(x) repeatedly for each of the other -// sequences. -// -// See also SetSeqs() and SetSeq2(). -func (m *SequenceMatcher) SetSeq1(a []string) { - if &a == &m.a { - return - } - m.a = a - m.matchingBlocks = nil - m.opCodes = nil -} - -// Set the second sequence to be compared. The first sequence to be compared is -// not changed. -func (m *SequenceMatcher) SetSeq2(b []string) { - if &b == &m.b { - return - } - m.b = b - m.matchingBlocks = nil - m.opCodes = nil - m.fullBCount = nil - m.chainB() -} - -func (m *SequenceMatcher) chainB() { - // Populate line -> index mapping - b2j := map[string][]int{} - for i, s := range m.b { - indices := b2j[s] - indices = append(indices, i) - b2j[s] = indices - } - - // Purge junk elements - m.bJunk = map[string]struct{}{} - if m.IsJunk != nil { - junk := m.bJunk - for s, _ := range b2j { - if m.IsJunk(s) { - junk[s] = struct{}{} - } - } - for s, _ := range junk { - delete(b2j, s) - } - } - - // Purge remaining popular elements - popular := map[string]struct{}{} - n := len(m.b) - if m.autoJunk && n >= 200 { - ntest := n/100 + 1 - for s, indices := range b2j { - if len(indices) > ntest { - popular[s] = struct{}{} - } - } - for s, _ := range popular { - delete(b2j, s) - } - } - m.bPopular = popular - m.b2j = b2j -} - -func (m *SequenceMatcher) isBJunk(s string) bool { - _, ok := m.bJunk[s] - return ok -} - -// Find longest matching block in a[alo:ahi] and b[blo:bhi]. -// -// If IsJunk is not defined: -// -// Return (i,j,k) such that a[i:i+k] is equal to b[j:j+k], where -// alo <= i <= i+k <= ahi -// blo <= j <= j+k <= bhi -// and for all (i',j',k') meeting those conditions, -// k >= k' -// i <= i' -// and if i == i', j <= j' -// -// In other words, of all maximal matching blocks, return one that -// starts earliest in a, and of all those maximal matching blocks that -// start earliest in a, return the one that starts earliest in b. -// -// If IsJunk is defined, first the longest matching block is -// determined as above, but with the additional restriction that no -// junk element appears in the block. Then that block is extended as -// far as possible by matching (only) junk elements on both sides. So -// the resulting block never matches on junk except as identical junk -// happens to be adjacent to an "interesting" match. -// -// If no blocks match, return (alo, blo, 0). -func (m *SequenceMatcher) findLongestMatch(alo, ahi, blo, bhi int) Match { - // CAUTION: stripping common prefix or suffix would be incorrect. - // E.g., - // ab - // acab - // Longest matching block is "ab", but if common prefix is - // stripped, it's "a" (tied with "b"). UNIX(tm) diff does so - // strip, so ends up claiming that ab is changed to acab by - // inserting "ca" in the middle. That's minimal but unintuitive: - // "it's obvious" that someone inserted "ac" at the front. - // Windiff ends up at the same place as diff, but by pairing up - // the unique 'b's and then matching the first two 'a's. - besti, bestj, bestsize := alo, blo, 0 - - // find longest junk-free match - // during an iteration of the loop, j2len[j] = length of longest - // junk-free match ending with a[i-1] and b[j] - j2len := map[int]int{} - for i := alo; i != ahi; i++ { - // look at all instances of a[i] in b; note that because - // b2j has no junk keys, the loop is skipped if a[i] is junk - newj2len := map[int]int{} - for _, j := range m.b2j[m.a[i]] { - // a[i] matches b[j] - if j < blo { - continue - } - if j >= bhi { - break - } - k := j2len[j-1] + 1 - newj2len[j] = k - if k > bestsize { - besti, bestj, bestsize = i-k+1, j-k+1, k - } - } - j2len = newj2len - } - - // Extend the best by non-junk elements on each end. In particular, - // "popular" non-junk elements aren't in b2j, which greatly speeds - // the inner loop above, but also means "the best" match so far - // doesn't contain any junk *or* popular non-junk elements. - for besti > alo && bestj > blo && !m.isBJunk(m.b[bestj-1]) && - m.a[besti-1] == m.b[bestj-1] { - besti, bestj, bestsize = besti-1, bestj-1, bestsize+1 - } - for besti+bestsize < ahi && bestj+bestsize < bhi && - !m.isBJunk(m.b[bestj+bestsize]) && - m.a[besti+bestsize] == m.b[bestj+bestsize] { - bestsize += 1 - } - - // Now that we have a wholly interesting match (albeit possibly - // empty!), we may as well suck up the matching junk on each - // side of it too. Can't think of a good reason not to, and it - // saves post-processing the (possibly considerable) expense of - // figuring out what to do with it. In the case of an empty - // interesting match, this is clearly the right thing to do, - // because no other kind of match is possible in the regions. - for besti > alo && bestj > blo && m.isBJunk(m.b[bestj-1]) && - m.a[besti-1] == m.b[bestj-1] { - besti, bestj, bestsize = besti-1, bestj-1, bestsize+1 - } - for besti+bestsize < ahi && bestj+bestsize < bhi && - m.isBJunk(m.b[bestj+bestsize]) && - m.a[besti+bestsize] == m.b[bestj+bestsize] { - bestsize += 1 - } - - return Match{A: besti, B: bestj, Size: bestsize} -} - -// Return list of triples describing matching subsequences. -// -// Each triple is of the form (i, j, n), and means that -// a[i:i+n] == b[j:j+n]. The triples are monotonically increasing in -// i and in j. It's also guaranteed that if (i, j, n) and (i', j', n') are -// adjacent triples in the list, and the second is not the last triple in the -// list, then i+n != i' or j+n != j'. IOW, adjacent triples never describe -// adjacent equal blocks. -// -// The last triple is a dummy, (len(a), len(b), 0), and is the only -// triple with n==0. -func (m *SequenceMatcher) GetMatchingBlocks() []Match { - if m.matchingBlocks != nil { - return m.matchingBlocks - } - - var matchBlocks func(alo, ahi, blo, bhi int, matched []Match) []Match - matchBlocks = func(alo, ahi, blo, bhi int, matched []Match) []Match { - match := m.findLongestMatch(alo, ahi, blo, bhi) - i, j, k := match.A, match.B, match.Size - if match.Size > 0 { - if alo < i && blo < j { - matched = matchBlocks(alo, i, blo, j, matched) - } - matched = append(matched, match) - if i+k < ahi && j+k < bhi { - matched = matchBlocks(i+k, ahi, j+k, bhi, matched) - } - } - return matched - } - matched := matchBlocks(0, len(m.a), 0, len(m.b), nil) - - // It's possible that we have adjacent equal blocks in the - // matching_blocks list now. - nonAdjacent := []Match{} - i1, j1, k1 := 0, 0, 0 - for _, b := range matched { - // Is this block adjacent to i1, j1, k1? - i2, j2, k2 := b.A, b.B, b.Size - if i1+k1 == i2 && j1+k1 == j2 { - // Yes, so collapse them -- this just increases the length of - // the first block by the length of the second, and the first - // block so lengthened remains the block to compare against. - k1 += k2 - } else { - // Not adjacent. Remember the first block (k1==0 means it's - // the dummy we started with), and make the second block the - // new block to compare against. - if k1 > 0 { - nonAdjacent = append(nonAdjacent, Match{i1, j1, k1}) - } - i1, j1, k1 = i2, j2, k2 - } - } - if k1 > 0 { - nonAdjacent = append(nonAdjacent, Match{i1, j1, k1}) - } - - nonAdjacent = append(nonAdjacent, Match{len(m.a), len(m.b), 0}) - m.matchingBlocks = nonAdjacent - return m.matchingBlocks -} - -// Return list of 5-tuples describing how to turn a into b. -// -// Each tuple is of the form (tag, i1, i2, j1, j2). The first tuple -// has i1 == j1 == 0, and remaining tuples have i1 == the i2 from the -// tuple preceding it, and likewise for j1 == the previous j2. -// -// The tags are characters, with these meanings: -// -// 'r' (replace): a[i1:i2] should be replaced by b[j1:j2] -// -// 'd' (delete): a[i1:i2] should be deleted, j1==j2 in this case. -// -// 'i' (insert): b[j1:j2] should be inserted at a[i1:i1], i1==i2 in this case. -// -// 'e' (equal): a[i1:i2] == b[j1:j2] -func (m *SequenceMatcher) GetOpCodes() []OpCode { - if m.opCodes != nil { - return m.opCodes - } - i, j := 0, 0 - matching := m.GetMatchingBlocks() - opCodes := make([]OpCode, 0, len(matching)) - for _, m := range matching { - // invariant: we've pumped out correct diffs to change - // a[:i] into b[:j], and the next matching block is - // a[ai:ai+size] == b[bj:bj+size]. So we need to pump - // out a diff to change a[i:ai] into b[j:bj], pump out - // the matching block, and move (i,j) beyond the match - ai, bj, size := m.A, m.B, m.Size - tag := byte(0) - if i < ai && j < bj { - tag = 'r' - } else if i < ai { - tag = 'd' - } else if j < bj { - tag = 'i' - } - if tag > 0 { - opCodes = append(opCodes, OpCode{tag, i, ai, j, bj}) - } - i, j = ai+size, bj+size - // the list of matching blocks is terminated by a - // sentinel with size 0 - if size > 0 { - opCodes = append(opCodes, OpCode{'e', ai, i, bj, j}) - } - } - m.opCodes = opCodes - return m.opCodes -} - -// Isolate change clusters by eliminating ranges with no changes. -// -// Return a generator of groups with up to n lines of context. -// Each group is in the same format as returned by GetOpCodes(). -func (m *SequenceMatcher) GetGroupedOpCodes(n int) [][]OpCode { - if n < 0 { - n = 3 - } - codes := m.GetOpCodes() - if len(codes) == 0 { - codes = []OpCode{OpCode{'e', 0, 1, 0, 1}} - } - // Fixup leading and trailing groups if they show no changes. - if codes[0].Tag == 'e' { - c := codes[0] - i1, i2, j1, j2 := c.I1, c.I2, c.J1, c.J2 - codes[0] = OpCode{c.Tag, max(i1, i2-n), i2, max(j1, j2-n), j2} - } - if codes[len(codes)-1].Tag == 'e' { - c := codes[len(codes)-1] - i1, i2, j1, j2 := c.I1, c.I2, c.J1, c.J2 - codes[len(codes)-1] = OpCode{c.Tag, i1, min(i2, i1+n), j1, min(j2, j1+n)} - } - nn := n + n - groups := [][]OpCode{} - group := []OpCode{} - for _, c := range codes { - i1, i2, j1, j2 := c.I1, c.I2, c.J1, c.J2 - // End the current group and start a new one whenever - // there is a large range with no changes. - if c.Tag == 'e' && i2-i1 > nn { - group = append(group, OpCode{c.Tag, i1, min(i2, i1+n), - j1, min(j2, j1+n)}) - groups = append(groups, group) - group = []OpCode{} - i1, j1 = max(i1, i2-n), max(j1, j2-n) - } - group = append(group, OpCode{c.Tag, i1, i2, j1, j2}) - } - if len(group) > 0 && !(len(group) == 1 && group[0].Tag == 'e') { - groups = append(groups, group) - } - return groups -} - -// Return a measure of the sequences' similarity (float in [0,1]). -// -// Where T is the total number of elements in both sequences, and -// M is the number of matches, this is 2.0*M / T. -// Note that this is 1 if the sequences are identical, and 0 if -// they have nothing in common. -// -// .Ratio() is expensive to compute if you haven't already computed -// .GetMatchingBlocks() or .GetOpCodes(), in which case you may -// want to try .QuickRatio() or .RealQuickRation() first to get an -// upper bound. -func (m *SequenceMatcher) Ratio() float64 { - matches := 0 - for _, m := range m.GetMatchingBlocks() { - matches += m.Size - } - return calculateRatio(matches, len(m.a)+len(m.b)) -} - -// Return an upper bound on ratio() relatively quickly. -// -// This isn't defined beyond that it is an upper bound on .Ratio(), and -// is faster to compute. -func (m *SequenceMatcher) QuickRatio() float64 { - // viewing a and b as multisets, set matches to the cardinality - // of their intersection; this counts the number of matches - // without regard to order, so is clearly an upper bound - if m.fullBCount == nil { - m.fullBCount = map[string]int{} - for _, s := range m.b { - m.fullBCount[s] = m.fullBCount[s] + 1 - } - } - - // avail[x] is the number of times x appears in 'b' less the - // number of times we've seen it in 'a' so far ... kinda - avail := map[string]int{} - matches := 0 - for _, s := range m.a { - n, ok := avail[s] - if !ok { - n = m.fullBCount[s] - } - avail[s] = n - 1 - if n > 0 { - matches += 1 - } - } - return calculateRatio(matches, len(m.a)+len(m.b)) -} - -// Return an upper bound on ratio() very quickly. -// -// This isn't defined beyond that it is an upper bound on .Ratio(), and -// is faster to compute than either .Ratio() or .QuickRatio(). -func (m *SequenceMatcher) RealQuickRatio() float64 { - la, lb := len(m.a), len(m.b) - return calculateRatio(min(la, lb), la+lb) -} - -// Convert range to the "ed" format -func formatRangeUnified(start, stop int) string { - // Per the diff spec at http://www.unix.org/single_unix_specification/ - beginning := start + 1 // lines start numbering with one - length := stop - start - if length == 1 { - return fmt.Sprintf("%d", beginning) - } - if length == 0 { - beginning -= 1 // empty ranges begin at line just before the range - } - return fmt.Sprintf("%d,%d", beginning, length) -} - -// Unified diff parameters -type UnifiedDiff struct { - A []string // First sequence lines - FromFile string // First file name - FromDate string // First file time - B []string // Second sequence lines - ToFile string // Second file name - ToDate string // Second file time - Eol string // Headers end of line, defaults to LF - Context int // Number of context lines -} - -// Compare two sequences of lines; generate the delta as a unified diff. -// -// Unified diffs are a compact way of showing line changes and a few -// lines of context. The number of context lines is set by 'n' which -// defaults to three. -// -// By default, the diff control lines (those with ---, +++, or @@) are -// created with a trailing newline. This is helpful so that inputs -// created from file.readlines() result in diffs that are suitable for -// file.writelines() since both the inputs and outputs have trailing -// newlines. -// -// For inputs that do not have trailing newlines, set the lineterm -// argument to "" so that the output will be uniformly newline free. -// -// The unidiff format normally has a header for filenames and modification -// times. Any or all of these may be specified using strings for -// 'fromfile', 'tofile', 'fromfiledate', and 'tofiledate'. -// The modification times are normally expressed in the ISO 8601 format. -func WriteUnifiedDiff(writer io.Writer, diff UnifiedDiff) error { - buf := bufio.NewWriter(writer) - defer buf.Flush() - wf := func(format string, args ...interface{}) error { - _, err := buf.WriteString(fmt.Sprintf(format, args...)) - return err - } - ws := func(s string) error { - _, err := buf.WriteString(s) - return err - } - - if len(diff.Eol) == 0 { - diff.Eol = "\n" - } - - started := false - m := NewMatcher(diff.A, diff.B) - for _, g := range m.GetGroupedOpCodes(diff.Context) { - if !started { - started = true - fromDate := "" - if len(diff.FromDate) > 0 { - fromDate = "\t" + diff.FromDate - } - toDate := "" - if len(diff.ToDate) > 0 { - toDate = "\t" + diff.ToDate - } - if diff.FromFile != "" || diff.ToFile != "" { - err := wf("--- %s%s%s", diff.FromFile, fromDate, diff.Eol) - if err != nil { - return err - } - err = wf("+++ %s%s%s", diff.ToFile, toDate, diff.Eol) - if err != nil { - return err - } - } - } - first, last := g[0], g[len(g)-1] - range1 := formatRangeUnified(first.I1, last.I2) - range2 := formatRangeUnified(first.J1, last.J2) - if err := wf("@@ -%s +%s @@%s", range1, range2, diff.Eol); err != nil { - return err - } - for _, c := range g { - i1, i2, j1, j2 := c.I1, c.I2, c.J1, c.J2 - if c.Tag == 'e' { - for _, line := range diff.A[i1:i2] { - if err := ws(" " + line); err != nil { - return err - } - } - continue - } - if c.Tag == 'r' || c.Tag == 'd' { - for _, line := range diff.A[i1:i2] { - if err := ws("-" + line); err != nil { - return err - } - } - } - if c.Tag == 'r' || c.Tag == 'i' { - for _, line := range diff.B[j1:j2] { - if err := ws("+" + line); err != nil { - return err - } - } - } - } - } - return nil -} - -// Like WriteUnifiedDiff but returns the diff a string. -func GetUnifiedDiffString(diff UnifiedDiff) (string, error) { - w := &bytes.Buffer{} - err := WriteUnifiedDiff(w, diff) - return string(w.Bytes()), err -} - -// Convert range to the "ed" format. -func formatRangeContext(start, stop int) string { - // Per the diff spec at http://www.unix.org/single_unix_specification/ - beginning := start + 1 // lines start numbering with one - length := stop - start - if length == 0 { - beginning -= 1 // empty ranges begin at line just before the range - } - if length <= 1 { - return fmt.Sprintf("%d", beginning) - } - return fmt.Sprintf("%d,%d", beginning, beginning+length-1) -} - -type ContextDiff UnifiedDiff - -// Compare two sequences of lines; generate the delta as a context diff. -// -// Context diffs are a compact way of showing line changes and a few -// lines of context. The number of context lines is set by diff.Context -// which defaults to three. -// -// By default, the diff control lines (those with *** or ---) are -// created with a trailing newline. -// -// For inputs that do not have trailing newlines, set the diff.Eol -// argument to "" so that the output will be uniformly newline free. -// -// The context diff format normally has a header for filenames and -// modification times. Any or all of these may be specified using -// strings for diff.FromFile, diff.ToFile, diff.FromDate, diff.ToDate. -// The modification times are normally expressed in the ISO 8601 format. -// If not specified, the strings default to blanks. -func WriteContextDiff(writer io.Writer, diff ContextDiff) error { - buf := bufio.NewWriter(writer) - defer buf.Flush() - var diffErr error - wf := func(format string, args ...interface{}) { - _, err := buf.WriteString(fmt.Sprintf(format, args...)) - if diffErr == nil && err != nil { - diffErr = err - } - } - ws := func(s string) { - _, err := buf.WriteString(s) - if diffErr == nil && err != nil { - diffErr = err - } - } - - if len(diff.Eol) == 0 { - diff.Eol = "\n" - } - - prefix := map[byte]string{ - 'i': "+ ", - 'd': "- ", - 'r': "! ", - 'e': " ", - } - - started := false - m := NewMatcher(diff.A, diff.B) - for _, g := range m.GetGroupedOpCodes(diff.Context) { - if !started { - started = true - fromDate := "" - if len(diff.FromDate) > 0 { - fromDate = "\t" + diff.FromDate - } - toDate := "" - if len(diff.ToDate) > 0 { - toDate = "\t" + diff.ToDate - } - if diff.FromFile != "" || diff.ToFile != "" { - wf("*** %s%s%s", diff.FromFile, fromDate, diff.Eol) - wf("--- %s%s%s", diff.ToFile, toDate, diff.Eol) - } - } - - first, last := g[0], g[len(g)-1] - ws("***************" + diff.Eol) - - range1 := formatRangeContext(first.I1, last.I2) - wf("*** %s ****%s", range1, diff.Eol) - for _, c := range g { - if c.Tag == 'r' || c.Tag == 'd' { - for _, cc := range g { - if cc.Tag == 'i' { - continue - } - for _, line := range diff.A[cc.I1:cc.I2] { - ws(prefix[cc.Tag] + line) - } - } - break - } - } - - range2 := formatRangeContext(first.J1, last.J2) - wf("--- %s ----%s", range2, diff.Eol) - for _, c := range g { - if c.Tag == 'r' || c.Tag == 'i' { - for _, cc := range g { - if cc.Tag == 'd' { - continue - } - for _, line := range diff.B[cc.J1:cc.J2] { - ws(prefix[cc.Tag] + line) - } - } - break - } - } - } - return diffErr -} - -// Like WriteContextDiff but returns the diff a string. -func GetContextDiffString(diff ContextDiff) (string, error) { - w := &bytes.Buffer{} - err := WriteContextDiff(w, diff) - return string(w.Bytes()), err -} - -// Split a string on "\n" while preserving them. The output can be used -// as input for UnifiedDiff and ContextDiff structures. -func SplitLines(s string) []string { - lines := strings.SplitAfter(s, "\n") - lines[len(lines)-1] += "\n" - return lines -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/LICENSE b/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/LICENSE deleted file mode 100644 index 327ecb82..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ -Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2014 exoscale(tm) - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/async.go b/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/async.go deleted file mode 100644 index 84401e7a..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/async.go +++ /dev/null @@ -1,36 +0,0 @@ -package egoscale - -import ( - "encoding/json" - "net/url" -) - -func (exo *Client) PollAsyncJob(jobid string) (*QueryAsyncJobResultResponse, error) { - params := url.Values{} - - params.Set("jobid", jobid) - - resp, err := exo.Request("queryAsyncJobResult", params) - - if err != nil { - return nil, err - } - - var r QueryAsyncJobResultResponse - - if err := json.Unmarshal(resp, &r); err != nil { - return nil, err - } - - return &r, nil -} - -func (exo *Client) AsyncToVirtualMachine(resp QueryAsyncJobResultResponse) (*DeployVirtualMachineResponse, error) { - var r DeployVirtualMachineWrappedResponse - - if err := json.Unmarshal(resp.Jobresult, &r); err != nil { - return nil, err - } - - return &r.Wrapped, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/error.go b/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/error.go deleted file mode 100644 index 3e7d2c77..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/error.go +++ /dev/null @@ -1,9 +0,0 @@ -package egoscale - -import ( - "fmt" -) - -func (e *Error) Error() error { - return fmt.Errorf("exoscale API error %d (internal code: %d): %s", e.ErrorCode, e.CSErrorCode, e.ErrorText) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/groups.go b/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/groups.go deleted file mode 100644 index 5a2f6f9d..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/groups.go +++ /dev/null @@ -1,105 +0,0 @@ -package egoscale - -import ( - "encoding/json" - "fmt" - "net/url" -) - -func (exo *Client) CreateEgressRule(rule SecurityGroupRule) (*AuthorizeSecurityGroupEgressResponse, error) { - - params := url.Values{} - params.Set("securitygroupid", rule.SecurityGroupId) - params.Set("cidrlist", rule.Cidr) - params.Set("protocol", rule.Protocol) - - if rule.Protocol == "ICMP" { - params.Set("icmpcode", fmt.Sprintf("%d", rule.IcmpCode)) - params.Set("icmptype", fmt.Sprintf("%d", rule.IcmpType)) - } else if rule.Protocol == "TCP" || rule.Protocol == "UDP" { - params.Set("startport", fmt.Sprintf("%d", rule.Port)) - params.Set("endport", fmt.Sprintf("%d", rule.Port)) - } else { - return nil, fmt.Errorf("Invalid Egress rule Protocol: %s", rule.Protocol) - } - - resp, err := exo.Request("authorizeSecurityGroupEgress", params) - if err != nil { - return nil, err - } - - var r AuthorizeSecurityGroupEgressResponse - if err := json.Unmarshal(resp, &r); err != nil { - return nil, err - } - - return &r, nil -} - -func (exo *Client) CreateIngressRule(rule SecurityGroupRule) (*AuthorizeSecurityGroupIngressResponse, error) { - - params := url.Values{} - params.Set("securitygroupid", rule.SecurityGroupId) - params.Set("cidrlist", rule.Cidr) - params.Set("protocol", rule.Protocol) - - if rule.Protocol == "ICMP" { - params.Set("icmpcode", fmt.Sprintf("%d", rule.IcmpCode)) - params.Set("icmptype", fmt.Sprintf("%d", rule.IcmpType)) - } else if rule.Protocol == "TCP" || rule.Protocol == "UDP" { - params.Set("startport", fmt.Sprintf("%d", rule.Port)) - params.Set("endport", fmt.Sprintf("%d", rule.Port)) - } else { - return nil, fmt.Errorf("Invalid Egress rule Protocol: %s", rule.Protocol) - } - - resp, err := exo.Request("authorizeSecurityGroupIngress", params) - - if err != nil { - return nil, err - } - - var r AuthorizeSecurityGroupIngressResponse - if err := json.Unmarshal(resp, &r); err != nil { - return nil, err - } - - return &r, nil -} - -func (exo *Client) CreateSecurityGroupWithRules(name string, ingress []SecurityGroupRule, egress []SecurityGroupRule) (*CreateSecurityGroupResponse, error) { - - params := url.Values{} - params.Set("name", name) - - resp, err := exo.Request("createSecurityGroup", params) - - var r CreateSecurityGroupResponseWrapper - if err := json.Unmarshal(resp, &r); err != nil { - return nil, err - } - - if err != nil { - return nil, err - } - - sgid := r.Wrapped.Id - - for _, erule := range egress { - erule.SecurityGroupId = sgid - _, err = exo.CreateEgressRule(erule) - if err != nil { - return nil, err - } - } - - for _, inrule := range ingress { - inrule.SecurityGroupId = sgid - _, err = exo.CreateIngressRule(inrule) - if err != nil { - return nil, err - } - } - - return &r.Wrapped, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/init.go b/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/init.go deleted file mode 100644 index 77b46cf9..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/init.go +++ /dev/null @@ -1,21 +0,0 @@ -package egoscale - -import ( - "crypto/tls" - "net/http" -) - -func NewClient(endpoint string, apiKey string, apiSecret string) *Client { - cs := &Client{ - client: &http.Client{ - Transport: &http.Transport{ - Proxy: http.ProxyFromEnvironment, - TLSClientConfig: &tls.Config{InsecureSkipVerify: false}, - }, - }, - endpoint: endpoint, - apiKey: apiKey, - apiSecret: apiSecret, - } - return cs -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/keypair.go b/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/keypair.go deleted file mode 100644 index f955cd0c..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/keypair.go +++ /dev/null @@ -1,41 +0,0 @@ -package egoscale - -import ( - "encoding/json" - "net/url" -) - -func (exo *Client) CreateKeypair(name string) (*CreateSSHKeyPairResponse, error) { - params := url.Values{} - params.Set("name", name) - - resp, err := exo.Request("createSSHKeyPair", params) - if err != nil { - return nil, err - } - - var r CreateSSHKeyPairWrappedResponse - if err := json.Unmarshal(resp, &r); err != nil { - return nil, err - } - - return &r.Wrapped, nil -} - -func (exo *Client) DeleteKeypair(name string) (*StandardResponse, error) { - params := url.Values{} - params.Set("name", name) - - resp, err := exo.Request("deleteSSHKeyPair", params) - if err != nil { - return nil, err - } - - var r StandardResponse - if err := json.Unmarshal(resp, &r); err != nil { - return nil, err - } - - return &r, nil - -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/request.go b/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/request.go deleted file mode 100644 index 9fa235dd..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/request.go +++ /dev/null @@ -1,65 +0,0 @@ -package egoscale - -import ( - "crypto/hmac" - "crypto/sha1" - "encoding/base64" - "encoding/json" - "fmt" - "io/ioutil" - "net/url" - "strings" -) - -func rawValue(b json.RawMessage) (json.RawMessage, error) { - var m map[string]json.RawMessage - - if err := json.Unmarshal(b, &m); err != nil { - return nil, err - } - for _, v := range m { - return v, nil - } - return nil, fmt.Errorf("Unable to extract raw value from:\n\n%s\n\n", string(b)) -} - -func (exo *Client) Request(command string, params url.Values) (json.RawMessage, error) { - - mac := hmac.New(sha1.New, []byte(exo.apiSecret)) - - params.Set("apikey", exo.apiKey) - params.Set("command", command) - params.Set("response", "json") - - s := strings.Replace(strings.ToLower(params.Encode()), "+", "%20", -1) - mac.Write([]byte(s)) - signature := url.QueryEscape(base64.StdEncoding.EncodeToString(mac.Sum(nil))) - - s = params.Encode() - url := exo.endpoint + "?" + s + "&signature=" + signature - - resp, err := exo.client.Get(url) - if err != nil { - return nil, err - } - - b, err := ioutil.ReadAll(resp.Body) - resp.Body.Close() - if err != nil { - return nil, err - } - - b, err = rawValue(b) - if err != nil { - return nil, err - } - - if resp.StatusCode != 200 { - var e Error - if err := json.Unmarshal(b, &e); err != nil { - return nil, err - } - return nil, e.Error() - } - return b, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/topology.go b/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/topology.go deleted file mode 100644 index 5eb7b476..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/topology.go +++ /dev/null @@ -1,170 +0,0 @@ -package egoscale - -import ( - "encoding/json" - "fmt" - "net/url" - "regexp" - "strings" -) - -func (exo *Client) GetSecurityGroups() (map[string]string, error) { - var sgs map[string]string - params := url.Values{} - resp, err := exo.Request("listSecurityGroups", params) - - if err != nil { - return nil, err - } - - var r ListSecurityGroupsResponse - if err := json.Unmarshal(resp, &r); err != nil { - return nil, err - } - - sgs = make(map[string]string) - for _, sg := range r.SecurityGroups { - sgs[sg.Name] = sg.Id - } - return sgs, nil -} - -func (exo *Client) GetZones() (map[string]string, error) { - var zones map[string]string - params := url.Values{} - resp, err := exo.Request("listZones", params) - - if err != nil { - return nil, err - } - - var r ListZonesResponse - if err := json.Unmarshal(resp, &r); err != nil { - return nil, err - } - - zones = make(map[string]string) - for _, zone := range r.Zones { - zones[zone.Name] = zone.Id - } - return zones, nil -} - -func (exo *Client) GetProfiles() (map[string]string, error) { - - var profiles map[string]string - params := url.Values{} - resp, err := exo.Request("listServiceOfferings", params) - - if err != nil { - return nil, err - } - - var r ListServiceOfferingsResponse - if err := json.Unmarshal(resp, &r); err != nil { - return nil, err - } - - profiles = make(map[string]string) - for _, offering := range r.ServiceOfferings { - profiles[strings.ToLower(offering.Name)] = offering.Id - } - - return profiles, nil -} - -func (exo *Client) GetKeypairs() ([]string, error) { - - var keypairs []string - params := url.Values{} - - resp, err := exo.Request("listSSHKeyPairs", params) - - if err != nil { - return nil, err - } - - var r ListSSHKeyPairsResponse - if err := json.Unmarshal(resp, &r); err != nil { - return nil, err - } - - keypairs = make([]string, r.Count, r.Count) - for i, keypair := range r.SSHKeyPairs { - keypairs[i] = keypair.Name - } - return keypairs, nil -} - -func (exo *Client) GetImages() (map[string]map[int]string, error) { - var images map[string]map[int]string - images = make(map[string]map[int]string) - - params := url.Values{} - params.Set("templatefilter", "featured") - - resp, err := exo.Request("listTemplates", params) - - if err != nil { - return nil, err - } - - var r ListTemplatesResponse - if err := json.Unmarshal(resp, &r); err != nil { - return nil, err - } - - re := regexp.MustCompile(`^Linux (?P.+?) (?P[0-9.]+).*$`) - for _, template := range r.Templates { - size := int(template.Size / (1024 * 1024 * 1024)) - submatch := re.FindStringSubmatch(template.Name) - if len(submatch) > 0 { - name := strings.Replace(strings.ToLower(submatch[1]), " ", "-", -1) - version := submatch[2] - image := fmt.Sprintf("%s-%s", name, version) - - _, present := images[image] - if !present { - images[image] = make(map[int]string) - } - images[image][size] = template.Id - - images[fmt.Sprintf("%s-%s", name, version)][size] = template.Id - } - } - return images, nil -} - -func (exo *Client) GetTopology() (*Topology, error) { - - zones, err := exo.GetZones() - if err != nil { - return nil, err - } - images, err := exo.GetImages() - if err != nil { - return nil, err - } - groups, err := exo.GetSecurityGroups() - if err != nil { - return nil, err - } - keypairs, err := exo.GetKeypairs() - if err != nil { - return nil, err - } - profiles, err := exo.GetProfiles() - if err != nil { - return nil, err - } - - topo := &Topology{ - Zones: zones, - Profiles: profiles, - Images: images, - Keypairs: keypairs, - SecurityGroups: groups, - } - - return topo, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/types.go b/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/types.go deleted file mode 100644 index 45dba670..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/types.go +++ /dev/null @@ -1,407 +0,0 @@ -package egoscale - -import ( - "encoding/json" - "net/http" -) - -type Client struct { - client *http.Client - endpoint string - apiKey string - apiSecret string -} - -type Error struct { - ErrorCode int `json:"errorcode"` - CSErrorCode int `json:"cserrorcode"` - ErrorText string `json:"errortext"` -} - -type StandardResponse struct { - Success string `json:"success"` - DisplayText string `json:"displaytext"` -} - -type Topology struct { - Zones map[string]string - Images map[string]map[int]string - Profiles map[string]string - Keypairs []string - SecurityGroups map[string]string -} - -type SecurityGroupRule struct { - Cidr string - IcmpType int - IcmpCode int - Port int - Protocol string - SecurityGroupId string -} - -type MachineProfile struct { - Name string - SecurityGroups []string - Keypair string - Userdata string - ServiceOffering string - Template string - Zone string -} - -type ListZonesResponse struct { - Count int `json:"count"` - Zones []*Zone `json:"zone"` -} - -type Zone struct { - Allocationstate string `json:"allocationstate,omitempty"` - Description string `json:"description,omitempty"` - Displaytext string `json:"displaytext,omitempty"` - Domain string `json:"domain,omitempty"` - Domainid string `json:"domainid,omitempty"` - Domainname string `json:"domainname,omitempty"` - Id string `json:"id,omitempty"` - Internaldns1 string `json:"internaldns1,omitempty"` - Internaldns2 string `json:"internaldns2,omitempty"` - Ip6dns1 string `json:"ip6dns1,omitempty"` - Ip6dns2 string `json:"ip6dns2,omitempty"` - Localstorageenabled bool `json:"localstorageenabled,omitempty"` - Name string `json:"name,omitempty"` - Networktype string `json:"networktype,omitempty"` - Resourcedetails map[string]string `json:"resourcedetails,omitempty"` - Securitygroupsenabled bool `json:"securitygroupsenabled,omitempty"` - Vlan string `json:"vlan,omitempty"` - Zonetoken string `json:"zonetoken,omitempty"` -} - -type ListServiceOfferingsResponse struct { - Count int `json:"count"` - ServiceOfferings []*ServiceOffering `json:"serviceoffering"` -} - -type ServiceOffering struct { - Cpunumber int `json:"cpunumber,omitempty"` - Cpuspeed int `json:"cpuspeed,omitempty"` - Displaytext string `json:"displaytext,omitempty"` - Domain string `json:"domain,omitempty"` - Domainid string `json:"domainid,omitempty"` - Hosttags string `json:"hosttags,omitempty"` - Id string `json:"id,omitempty"` - Iscustomized bool `json:"iscustomized,omitempty"` - Issystem bool `json:"issystem,omitempty"` - Isvolatile bool `json:"isvolatile,omitempty"` - Memory int `json:"memory,omitempty"` - Name string `json:"name,omitempty"` - Networkrate int `json:"networkrate,omitempty"` - Serviceofferingdetails map[string]string `json:"serviceofferingdetails,omitempty"` -} - -type ListTemplatesResponse struct { - Count int `json:"count"` - Templates []*Template `json:"template"` -} - -type Template struct { - Account string `json:"account,omitempty"` - Accountid string `json:"accountid,omitempty"` - Bootable bool `json:"bootable,omitempty"` - Checksum string `json:"checksum,omitempty"` - Created string `json:"created,omitempty"` - CrossZones bool `json:"crossZones,omitempty"` - Details map[string]string `json:"details,omitempty"` - Displaytext string `json:"displaytext,omitempty"` - Domain string `json:"domain,omitempty"` - Domainid string `json:"domainid,omitempty"` - Format string `json:"format,omitempty"` - Hostid string `json:"hostid,omitempty"` - Hostname string `json:"hostname,omitempty"` - Hypervisor string `json:"hypervisor,omitempty"` - Id string `json:"id,omitempty"` - Isdynamicallyscalable bool `json:"isdynamicallyscalable,omitempty"` - Isextractable bool `json:"isextractable,omitempty"` - Isfeatured bool `json:"isfeatured,omitempty"` - Ispublic bool `json:"ispublic,omitempty"` - Isready bool `json:"isready,omitempty"` - Name string `json:"name,omitempty"` - Ostypeid string `json:"ostypeid,omitempty"` - Ostypename string `json:"ostypename,omitempty"` - Passwordenabled bool `json:"passwordenabled,omitempty"` - Project string `json:"project,omitempty"` - Projectid string `json:"projectid,omitempty"` - Removed string `json:"removed,omitempty"` - Size int64 `json:"size,omitempty"` - Sourcetemplateid string `json:"sourcetemplateid,omitempty"` - Sshkeyenabled bool `json:"sshkeyenabled,omitempty"` - Status string `json:"status,omitempty"` - Zoneid string `json:"zoneid,omitempty"` - Zonename string `json:"zonename,omitempty"` -} - -type ListSSHKeyPairsResponse struct { - Count int `json:"count"` - SSHKeyPairs []*SSHKeyPair `json:"sshkeypair"` -} - -type SSHKeyPair struct { - Fingerprint string `json:"fingerprint,omitempty"` - Name string `json:"name,omitempty"` -} - -type ListSecurityGroupsResponse struct { - Count int `json:"count"` - SecurityGroups []*SecurityGroup `json:"securitygroup"` -} - -type SecurityGroup struct { - Account string `json:"account,omitempty"` - Description string `json:"description,omitempty"` - Domain string `json:"domain,omitempty"` - Domainid string `json:"domainid,omitempty"` - Id string `json:"id,omitempty"` - Name string `json:"name,omitempty"` - Project string `json:"project,omitempty"` - Projectid string `json:"projectid,omitempty"` -} - -type CreateSecurityGroupResponseWrapper struct { - Wrapped CreateSecurityGroupResponse `json:"securitygroup"` -} -type CreateSecurityGroupResponse struct { - Account string `json:"account,omitempty"` - Description string `json:"description,omitempty"` - Domain string `json:"domain,omitempty"` - Domainid string `json:"domainid,omitempty"` - Id string `json:"id,omitempty"` - Name string `json:"name,omitempty"` - Project string `json:"project,omitempty"` - Projectid string `json:"projectid,omitempty"` -} - -type AuthorizeSecurityGroupIngressResponse struct { - JobID string `json:"jobid,omitempty"` - Account string `json:"account,omitempty"` - Cidr string `json:"cidr,omitempty"` - Endport int `json:"endport,omitempty"` - Icmpcode int `json:"icmpcode,omitempty"` - Icmptype int `json:"icmptype,omitempty"` - Protocol string `json:"protocol,omitempty"` - Ruleid string `json:"ruleid,omitempty"` - Securitygroupname string `json:"securitygroupname,omitempty"` - Startport int `json:"startport,omitempty"` -} - -type AuthorizeSecurityGroupEgressResponse struct { - JobID string `json:"jobid,omitempty"` - Account string `json:"account,omitempty"` - Cidr string `json:"cidr,omitempty"` - Endport int `json:"endport,omitempty"` - Icmpcode int `json:"icmpcode,omitempty"` - Icmptype int `json:"icmptype,omitempty"` - Protocol string `json:"protocol,omitempty"` - Ruleid string `json:"ruleid,omitempty"` - Securitygroupname string `json:"securitygroupname,omitempty"` - Startport int `json:"startport,omitempty"` -} - -type DeployVirtualMachineWrappedResponse struct { - Wrapped DeployVirtualMachineResponse `json:"virtualmachine"` -} - -type DeployVirtualMachineResponse struct { - JobID string `json:"jobid,omitempty"` - Account string `json:"account,omitempty"` - Affinitygroup []struct { - Account string `json:"account,omitempty"` - Description string `json:"description,omitempty"` - Domain string `json:"domain,omitempty"` - Domainid string `json:"domainid,omitempty"` - Id string `json:"id,omitempty"` - Name string `json:"name,omitempty"` - Type string `json:"type,omitempty"` - VirtualmachineIds []string `json:"virtualmachineIds,omitempty"` - } `json:"affinitygroup,omitempty"` - Cpunumber int `json:"cpunumber,omitempty"` - Cpuspeed int `json:"cpuspeed,omitempty"` - Cpuused string `json:"cpuused,omitempty"` - Created string `json:"created,omitempty"` - Details map[string]string `json:"details,omitempty"` - Diskioread int64 `json:"diskioread,omitempty"` - Diskiowrite int64 `json:"diskiowrite,omitempty"` - Diskkbsread int64 `json:"diskkbsread,omitempty"` - Diskkbswrite int64 `json:"diskkbswrite,omitempty"` - Displayname string `json:"displayname,omitempty"` - Displayvm bool `json:"displayvm,omitempty"` - Domain string `json:"domain,omitempty"` - Domainid string `json:"domainid,omitempty"` - Forvirtualnetwork bool `json:"forvirtualnetwork,omitempty"` - Group string `json:"group,omitempty"` - Groupid string `json:"groupid,omitempty"` - Guestosid string `json:"guestosid,omitempty"` - Haenable bool `json:"haenable,omitempty"` - Hostid string `json:"hostid,omitempty"` - Hostname string `json:"hostname,omitempty"` - Hypervisor string `json:"hypervisor,omitempty"` - Id string `json:"id,omitempty"` - Instancename string `json:"instancename,omitempty"` - Isdynamicallyscalable bool `json:"isdynamicallyscalable,omitempty"` - Isodisplaytext string `json:"isodisplaytext,omitempty"` - Isoid string `json:"isoid,omitempty"` - Isoname string `json:"isoname,omitempty"` - Keypair string `json:"keypair,omitempty"` - Memory int `json:"memory,omitempty"` - Name string `json:"name,omitempty"` - Networkkbsread int64 `json:"networkkbsread,omitempty"` - Networkkbswrite int64 `json:"networkkbswrite,omitempty"` - Nic []struct { - Broadcasturi string `json:"broadcasturi,omitempty"` - Gateway string `json:"gateway,omitempty"` - Id string `json:"id,omitempty"` - Ipaddress string `json:"ipaddress,omitempty"` - Isdefault bool `json:"isdefault,omitempty"` - Isolationuri string `json:"isolationuri,omitempty"` - Macaddress string `json:"macaddress,omitempty"` - Netmask string `json:"netmask,omitempty"` - Networkid string `json:"networkid,omitempty"` - Networkname string `json:"networkname,omitempty"` - Secondaryip []string `json:"secondaryip,omitempty"` - Traffictype string `json:"traffictype,omitempty"` - Type string `json:"type,omitempty"` - } `json:"nic,omitempty"` - Password string `json:"password,omitempty"` - Passwordenabled bool `json:"passwordenabled,omitempty"` - Project string `json:"project,omitempty"` - Projectid string `json:"projectid,omitempty"` - Publicip string `json:"publicip,omitempty"` - Publicipid string `json:"publicipid,omitempty"` - Rootdeviceid int64 `json:"rootdeviceid,omitempty"` - Rootdevicetype string `json:"rootdevicetype,omitempty"` - Serviceofferingid string `json:"serviceofferingid,omitempty"` - Serviceofferingname string `json:"serviceofferingname,omitempty"` - Servicestate string `json:"servicestate,omitempty"` - State string `json:"state,omitempty"` - Templatedisplaytext string `json:"templatedisplaytext,omitempty"` - Templateid string `json:"templateid,omitempty"` - Templatename string `json:"templatename,omitempty"` - Zoneid string `json:"zoneid,omitempty"` - Zonename string `json:"zonename,omitempty"` -} - -type QueryAsyncJobResultResponse struct { - Accountid string `json:"accountid,omitempty"` - Cmd string `json:"cmd,omitempty"` - Created string `json:"created,omitempty"` - Jobinstanceid string `json:"jobinstanceid,omitempty"` - Jobinstancetype string `json:"jobinstancetype,omitempty"` - Jobprocstatus int `json:"jobprocstatus,omitempty"` - Jobresult json.RawMessage `json:"jobresult,omitempty"` - Jobresultcode int `json:"jobresultcode,omitempty"` - Jobresulttype string `json:"jobresulttype,omitempty"` - Jobstatus int `json:"jobstatus,omitempty"` - Userid string `json:"userid,omitempty"` -} - -type ListVirtualMachinesResponse struct { - Count int `json:"count"` - VirtualMachines []*VirtualMachine `json:"virtualmachine"` -} - -type VirtualMachine struct { - Account string `json:"account,omitempty"` - Cpunumber int `json:"cpunumber,omitempty"` - Cpuspeed int `json:"cpuspeed,omitempty"` - Cpuused string `json:"cpuused,omitempty"` - Created string `json:"created,omitempty"` - Details map[string]string `json:"details,omitempty"` - Diskioread int64 `json:"diskioread,omitempty"` - Diskiowrite int64 `json:"diskiowrite,omitempty"` - Diskkbsread int64 `json:"diskkbsread,omitempty"` - Diskkbswrite int64 `json:"diskkbswrite,omitempty"` - Displayname string `json:"displayname,omitempty"` - Displayvm bool `json:"displayvm,omitempty"` - Domain string `json:"domain,omitempty"` - Domainid string `json:"domainid,omitempty"` - Forvirtualnetwork bool `json:"forvirtualnetwork,omitempty"` - Group string `json:"group,omitempty"` - Groupid string `json:"groupid,omitempty"` - Guestosid string `json:"guestosid,omitempty"` - Haenable bool `json:"haenable,omitempty"` - Hostid string `json:"hostid,omitempty"` - Hostname string `json:"hostname,omitempty"` - Hypervisor string `json:"hypervisor,omitempty"` - Id string `json:"id,omitempty"` - Instancename string `json:"instancename,omitempty"` - Isdynamicallyscalable bool `json:"isdynamicallyscalable,omitempty"` - Isodisplaytext string `json:"isodisplaytext,omitempty"` - Isoid string `json:"isoid,omitempty"` - Isoname string `json:"isoname,omitempty"` - Keypair string `json:"keypair,omitempty"` - Memory int `json:"memory,omitempty"` - Name string `json:"name,omitempty"` - Networkkbsread int64 `json:"networkkbsread,omitempty"` - Networkkbswrite int64 `json:"networkkbswrite,omitempty"` - Nic []struct { - Broadcasturi string `json:"broadcasturi,omitempty"` - Gateway string `json:"gateway,omitempty"` - Id string `json:"id,omitempty"` - Ip6address string `json:"ip6address,omitempty"` - Ip6cidr string `json:"ip6cidr,omitempty"` - Ip6gateway string `json:"ip6gateway,omitempty"` - Ipaddress string `json:"ipaddress,omitempty"` - Isdefault bool `json:"isdefault,omitempty"` - Isolationuri string `json:"isolationuri,omitempty"` - Macaddress string `json:"macaddress,omitempty"` - Netmask string `json:"netmask,omitempty"` - Networkid string `json:"networkid,omitempty"` - Networkname string `json:"networkname,omitempty"` - Secondaryip []string `json:"secondaryip,omitempty"` - Traffictype string `json:"traffictype,omitempty"` - Type string `json:"type,omitempty"` - } `json:"nic,omitempty"` - Password string `json:"password,omitempty"` - Passwordenabled bool `json:"passwordenabled,omitempty"` - Project string `json:"project,omitempty"` - Projectid string `json:"projectid,omitempty"` - Publicip string `json:"publicip,omitempty"` - Publicipid string `json:"publicipid,omitempty"` - Rootdeviceid int64 `json:"rootdeviceid,omitempty"` - Rootdevicetype string `json:"rootdevicetype,omitempty"` - Serviceofferingid string `json:"serviceofferingid,omitempty"` - Serviceofferingname string `json:"serviceofferingname,omitempty"` - Servicestate string `json:"servicestate,omitempty"` - State string `json:"state,omitempty"` - Templatedisplaytext string `json:"templatedisplaytext,omitempty"` - Templateid string `json:"templateid,omitempty"` - Templatename string `json:"templatename,omitempty"` - Zoneid string `json:"zoneid,omitempty"` - Zonename string `json:"zonename,omitempty"` -} - -type StartVirtualMachineResponse struct { - JobID string `json:"jobid,omitempty"` -} - -type StopVirtualMachineResponse struct { - JobID string `json:"jobid,omitempty"` -} - -type DestroyVirtualMachineResponse struct { - JobID string `json:"jobid,omitempty"` -} - -type RebootVirtualMachineResponse struct { - JobID string `json:"jobid,omitempty"` -} - -type CreateSSHKeyPairWrappedResponse struct { - Wrapped CreateSSHKeyPairResponse `json:"keypair,omitempty"` -} - -type CreateSSHKeyPairResponse struct { - Privatekey string `json:"privatekey,omitempty"` -} - -type DeleteSSHKeyPairResponse struct { - Privatekey string `json:"privatekey,omitempty"` -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/vm.go b/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/vm.go deleted file mode 100644 index 8c8ea985..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/pyr/egoscale/src/egoscale/vm.go +++ /dev/null @@ -1,162 +0,0 @@ -package egoscale - -import ( - "encoding/base64" - "encoding/json" - "fmt" - "net/url" - "strings" -) - -func (exo *Client) CreateVirtualMachine(p MachineProfile) (string, error) { - - params := url.Values{} - params.Set("serviceofferingid", p.ServiceOffering) - params.Set("templateid", p.Template) - params.Set("zoneid", p.Zone) - - params.Set("displayname", p.Name) - if len(p.Userdata) > 0 { - params.Set("userdata", base64.StdEncoding.EncodeToString([]byte(p.Userdata))) - } - if len(p.Keypair) > 0 { - params.Set("keypair", p.Keypair) - } - - params.Set("securitygroupids", strings.Join(p.SecurityGroups, ",")) - - resp, err := exo.Request("deployVirtualMachine", params) - - if err != nil { - return "", err - } - - var r DeployVirtualMachineResponse - - if err := json.Unmarshal(resp, &r); err != nil { - return "", err - } - - return r.JobID, nil -} - -func (exo *Client) StartVirtualMachine(id string) (string, error) { - params := url.Values{} - params.Set("id", id) - - resp, err := exo.Request("startVirtualMachine", params) - - if err != nil { - return "", err - } - - var r StartVirtualMachineResponse - - if err := json.Unmarshal(resp, &r); err != nil { - return "", err - } - - return r.JobID, nil -} - -func (exo *Client) StopVirtualMachine(id string) (string, error) { - params := url.Values{} - params.Set("id", id) - - resp, err := exo.Request("stopVirtualMachine", params) - - if err != nil { - return "", err - } - - var r StopVirtualMachineResponse - - if err := json.Unmarshal(resp, &r); err != nil { - return "", err - } - - return r.JobID, nil -} - -func (exo *Client) RebootVirtualMachine(id string) (string, error) { - params := url.Values{} - params.Set("id", id) - - resp, err := exo.Request("rebootVirtualMachine", params) - - if err != nil { - return "", err - } - - var r RebootVirtualMachineResponse - - if err := json.Unmarshal(resp, &r); err != nil { - return "", err - } - - return r.JobID, nil -} - -func (exo *Client) DestroyVirtualMachine(id string) (string, error) { - params := url.Values{} - params.Set("id", id) - - resp, err := exo.Request("destroyVirtualMachine", params) - - if err != nil { - return "", err - } - - var r DestroyVirtualMachineResponse - - if err := json.Unmarshal(resp, &r); err != nil { - return "", err - } - - return r.JobID, nil -} - -func (exo *Client) GetVirtualMachine(id string) (*VirtualMachine, error) { - - params := url.Values{} - params.Set("id", id) - - resp, err := exo.Request("listVirtualMachines", params) - - if err != nil { - return nil, err - } - - var r ListVirtualMachinesResponse - - if err := json.Unmarshal(resp, &r); err != nil { - return nil, err - } - - if len(r.VirtualMachines) == 1 { - machine := r.VirtualMachines[0] - return machine, nil - } else { - return nil, fmt.Errorf("cannot retrieve virtualmachine with id %s", id) - } -} - -func (exo *Client) ListVirtualMachines(id string) ([]*VirtualMachine, error) { - - params := url.Values{} - params.Set("id", id) - - resp, err := exo.Request("listVirtualMachines", params) - - if err != nil { - return nil, err - } - - var r ListVirtualMachinesResponse - - if err := json.Unmarshal(resp, &r); err != nil { - return nil, err - } - - return r.VirtualMachines, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/.travis.yml b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/.travis.yml deleted file mode 100644 index 946f98cb..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/.travis.yml +++ /dev/null @@ -1,17 +0,0 @@ -language: go -install: - - go get -v -tags 'fixtures acceptance' ./... -go: - - 1.1 - - 1.2 - - 1.3 - - 1.4 - - tip -script: script/cibuild -after_success: - - go get code.google.com/p/go.tools/cmd/cover - - go get github.com/axw/gocov/gocov - - go get github.com/mattn/goveralls - - export PATH=$PATH:$HOME/gopath/bin/ - - goveralls 2k7PTU3xa474Hymwgdj6XjqenNfGTNkO8 -sudo: false diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/CONTRIBUTING.md b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/CONTRIBUTING.md deleted file mode 100644 index 9748c1ad..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/CONTRIBUTING.md +++ /dev/null @@ -1,275 +0,0 @@ -# Contributing to gophercloud - -- [Getting started](#getting-started) -- [Tests](#tests) -- [Style guide](#basic-style-guide) -- [5 ways to get involved](#5-ways-to-get-involved) - -## Setting up your git workspace - -As a contributor you will need to setup your workspace in a slightly different -way than just downloading it. Here are the basic installation instructions: - -1. Configure your `$GOPATH` and run `go get` as described in the main -[README](/README.md#how-to-install). - -2. Move into the directory that houses your local repository: - - ```bash - cd ${GOPATH}/src/github.com/rackspace/gophercloud - ``` - -3. Fork the `rackspace/gophercloud` repository and update your remote refs. You -will need to rename the `origin` remote branch to `upstream`, and add your -fork as `origin` instead: - - ```bash - git remote rename origin upstream - git remote add origin git@github.com//gophercloud - ``` - -4. Checkout the latest development branch ([click here](/branches) to see all -the branches): - - ```bash - git checkout release/v1.0.1 - ``` - -5. If you're working on something (discussed more in detail below), you will -need to checkout a new feature branch: - - ```bash - git checkout -b my-new-feature - ``` - -Another thing to bear in mind is that you will need to add a few extra -environment variables for acceptance tests - this is documented in our -[acceptance tests readme](/acceptance). - -## Tests - -When working on a new or existing feature, testing will be the backbone of your -work since it helps uncover and prevent regressions in the codebase. There are -two types of test we use in gophercloud: unit tests and acceptance tests, which -are both described below. - -### Unit tests - -Unit tests are the fine-grained tests that establish and ensure the behaviour -of individual units of functionality. We usually test on an -operation-by-operation basis (an operation typically being an API action) with -the use of mocking to set up explicit expectations. Each operation will set up -its HTTP response expectation, and then test how the system responds when fed -this controlled, pre-determined input. - -To make life easier, we've introduced a bunch of test helpers to simplify the -process of testing expectations with assertions: - -```go -import ( - "testing" - - "github.com/rackspace/gophercloud/testhelper" -) - -func TestSomething(t *testing.T) { - result, err := Operation() - - testhelper.AssertEquals(t, "foo", result.Bar) - testhelper.AssertNoErr(t, err) -} - -func TestSomethingElse(t *testing.T) { - testhelper.CheckEquals(t, "expected", "actual") -} -``` - -`AssertEquals` and `AssertNoErr` will throw a fatal error if a value does not -match an expected value or if an error has been declared, respectively. You can -also use `CheckEquals` and `CheckNoErr` for the same purpose; the only difference -being that `t.Errorf` is raised rather than `t.Fatalf`. - -Here is a truncated example of mocked HTTP responses: - -```go -import ( - "testing" - - th "github.com/rackspace/gophercloud/testhelper" - fake "github.com/rackspace/gophercloud/testhelper/client" -) - -func TestGet(t *testing.T) { - // Setup the HTTP request multiplexer and server - th.SetupHTTP() - defer th.TeardownHTTP() - - th.Mux.HandleFunc("/networks/d32019d3-bc6e-4319-9c1d-6722fc136a22", func(w http.ResponseWriter, r *http.Request) { - // Test we're using the correct HTTP method - th.TestMethod(t, r, "GET") - - // Test we're setting the auth token - th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) - - // Set the appropriate headers for our mocked response - w.Header().Add("Content-Type", "application/json") - w.WriteHeader(http.StatusOK) - - // Set the HTTP body - fmt.Fprintf(w, ` -{ - "network": { - "status": "ACTIVE", - "name": "private-network", - "admin_state_up": true, - "tenant_id": "4fd44f30292945e481c7b8a0c8908869", - "shared": true, - "id": "d32019d3-bc6e-4319-9c1d-6722fc136a22" - } -} - `) - }) - - // Call our API operation - network, err := Get(fake.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").Extract() - - // Assert no errors and equality - th.AssertNoErr(t, err) - th.AssertEquals(t, n.Status, "ACTIVE") -} -``` - -### Acceptance tests - -As we've already mentioned, unit tests have a very narrow and confined focus - -they test small units of behaviour. Acceptance tests on the other hand have a -far larger scope: they are fully functional tests that test the entire API of a -service in one fell swoop. They don't care about unit isolation or mocking -expectations, they instead do a full run-through and consequently test how the -entire system _integrates_ together. When an API satisfies expectations, it -proves by default that the requirements for a contract have been met. - -Please be aware that acceptance tests will hit a live API - and may incur -service charges from your provider. Although most tests handle their own -teardown procedures, it is always worth manually checking that resources are -deleted after the test suite finishes. - -### Running tests - -To run all tests: - -```bash -go test ./... -``` - -To run all tests with verbose output: - -```bash -go test -v ./... -``` - -To run tests that match certain [build tags](): - -```bash -go test -tags "foo bar" ./... -``` - -To run tests for a particular sub-package: - -```bash -cd ./path/to/package && go test . -``` - -## Basic style guide - -We follow the standard formatting recommendations and language idioms set out -in the [Effective Go](https://golang.org/doc/effective_go.html) guide. It's -definitely worth reading - but the relevant sections are -[formatting](https://golang.org/doc/effective_go.html#formatting) -and [names](https://golang.org/doc/effective_go.html#names). - -## 5 ways to get involved - -There are five main ways you can get involved in our open-source project, and -each is described briefly below. Once you've made up your mind and decided on -your fix, you will need to follow the same basic steps that all submissions are -required to adhere to: - -1. [fork](https://help.github.com/articles/fork-a-repo/) the `rackspace/gophercloud` repository -2. checkout a [new branch](https://github.com/Kunena/Kunena-Forum/wiki/Create-a-new-branch-with-git-and-manage-branches) -3. submit your branch as a [pull request](https://help.github.com/articles/creating-a-pull-request/) - -### 1. Providing feedback - -On of the easiest ways to get readily involved in our project is to let us know -about your experiences using our SDK. Feedback like this is incredibly useful -to us, because it allows us to refine and change features based on what our -users want and expect of us. There are a bunch of ways to get in contact! You -can [ping us](https://developer.rackspace.com/support/) via e-mail, talk to us on irc -(#rackspace-dev on freenode), [tweet us](https://twitter.com/rackspace), or -submit an issue on our [bug tracker](/issues). Things you might like to tell us -are: - -* how easy was it to start using our SDK? -* did it meet your expectations? If not, why not? -* did our documentation help or hinder you? -* what could we improve in general? - -### 2. Fixing bugs - -If you want to start fixing open bugs, we'd really appreciate that! Bug fixing -is central to any project. The best way to get started is by heading to our -[bug tracker](https://github.com/rackspace/gophercloud/issues) and finding open -bugs that you think nobody is working on. It might be useful to comment on the -thread to see the current state of the issue and if anybody has made any -breakthroughs on it so far. - -### 3. Improving documentation - -We have three forms of documentation: - -* short README documents that briefly introduce a topic -* reference documentation on [godoc.org](http://godoc.org) that is automatically -generated from source code comments -* user documentation on our [homepage](http://gophercloud.io) that includes -getting started guides, installation guides and code samples - -If you feel that a certain section could be improved - whether it's to clarify -ambiguity, correct a technical mistake, or to fix a grammatical error - please -feel entitled to do so! We welcome doc pull requests with the same childlike -enthusiasm as any other contribution! - -### 4. Optimizing existing features - -If you would like to improve or optimize an existing feature, please be aware -that we adhere to [semantic versioning](http://semver.org) - which means that -we cannot introduce breaking changes to the API without a major version change -(v1.x -> v2.x). Making that leap is a big step, so we encourage contributors to -refactor rather than rewrite. Running tests will prevent regression and avoid -the possibility of breaking somebody's current implementation. - -Another tip is to keep the focus of your work as small as possible - try not to -introduce a change that affects lots and lots of files because it introduces -added risk and increases the cognitive load on the reviewers checking your -work. Change-sets which are easily understood and will not negatively impact -users are more likely to be integrated quickly. - -Lastly, if you're seeking to optimize a particular operation, you should try to -demonstrate a negative performance impact - perhaps using go's inbuilt -[benchmark capabilities](http://dave.cheney.net/2013/06/30/how-to-write-benchmarks-in-go). - -### 5. Working on a new feature - -If you've found something we've left out, definitely feel free to start work on -introducing that feature. It's always useful to open an issue or submit a pull -request early on to indicate your intent to a core contributor - this enables -quick/early feedback and can help steer you in the right direction by avoiding -known issues. It might also help you avoid losing time implementing something -that might not ever work. One tip is to prefix your Pull Request issue title -with [wip] - then people know it's a work in progress. - -You must ensure that all of your work is well tested - both in terms of unit -and acceptance tests. Untested code will not be merged because it introduces -too much of a risk to end-users. - -Happy hacking! diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/CONTRIBUTORS.md b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/CONTRIBUTORS.md deleted file mode 100644 index 63beb30b..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/CONTRIBUTORS.md +++ /dev/null @@ -1,13 +0,0 @@ -Contributors -============ - -| Name | Email | -| ---- | ----- | -| Samuel A. Falvo II | -| Glen Campbell | -| Jesse Noller | -| Jon Perritt | -| Ash Wilson | -| Jamie Hannaford | -| Don Schenck | don.schenck@rackspace.com> -| Joe Topjian | diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/LICENSE b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/LICENSE deleted file mode 100644 index fbbbc9e4..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/LICENSE +++ /dev/null @@ -1,191 +0,0 @@ -Copyright 2012-2013 Rackspace, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); you may not use -this file except in compliance with the License. You may obtain a copy of the -License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software distributed -under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -CONDITIONS OF ANY KIND, either express or implied. See the License for the -specific language governing permissions and limitations under the License. - ------- - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/README.md b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/README.md deleted file mode 100644 index 05453bfe..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/README.md +++ /dev/null @@ -1,160 +0,0 @@ -# Gophercloud: the OpenStack SDK for Go -[![Build Status](https://travis-ci.org/rackspace/gophercloud.svg?branch=master)](https://travis-ci.org/rackspace/gophercloud) - -Gophercloud is a flexible SDK that allows you to consume and work with OpenStack -clouds in a simple and idiomatic way using golang. Many services are supported, -including Compute, Block Storage, Object Storage, Networking, and Identity. -Each service API is backed with getting started guides, code samples, reference -documentation, unit tests and acceptance tests. - -## Useful links - -* [Gophercloud homepage](http://gophercloud.io) -* [Reference documentation](http://godoc.org/github.com/rackspace/gophercloud) -* [Getting started guides](http://gophercloud.io/docs) -* [Effective Go](https://golang.org/doc/effective_go.html) - -## How to install - -Before installing, you need to ensure that your [GOPATH environment variable](https://golang.org/doc/code.html#GOPATH) -is pointing to an appropriate directory where you want to install Gophercloud: - -```bash -mkdir $HOME/go -export GOPATH=$HOME/go -``` - -To protect yourself against changes in your dependencies, we highly recommend choosing a -[dependency management solution](https://code.google.com/p/go-wiki/wiki/PackageManagementTools) for -your projects, such as [godep](https://github.com/tools/godep). Once this is set up, you can install -Gophercloud as a dependency like so: - -```bash -go get github.com/rackspace/gophercloud - -# Edit your code to import relevant packages from "github.com/rackspace/gophercloud" - -godep save ./... -``` - -This will install all the source files you need into a `Godeps/_workspace` directory, which is -referenceable from your own source files when you use the `godep go` command. - -## Getting started - -### Credentials - -Because you'll be hitting an API, you will need to retrieve your OpenStack -credentials and either store them as environment variables or in your local Go -files. The first method is recommended because it decouples credential -information from source code, allowing you to push the latter to your version -control system without any security risk. - -You will need to retrieve the following: - -* username -* password -* tenant name or tenant ID -* a valid Keystone identity URL - -For users that have the OpenStack dashboard installed, there's a shortcut. If -you visit the `project/access_and_security` path in Horizon and click on the -"Download OpenStack RC File" button at the top right hand corner, you will -download a bash file that exports all of your access details to environment -variables. To execute the file, run `source admin-openrc.sh` and you will be -prompted for your password. - -### Authentication - -Once you have access to your credentials, you can begin plugging them into -Gophercloud. The next step is authentication, and this is handled by a base -"Provider" struct. To get one, you can either pass in your credentials -explicitly, or tell Gophercloud to use environment variables: - -```go -import ( - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/openstack" - "github.com/rackspace/gophercloud/openstack/utils" -) - -// Option 1: Pass in the values yourself -opts := gophercloud.AuthOptions{ - IdentityEndpoint: "https://my-openstack.com:5000/v2.0", - Username: "{username}", - Password: "{password}", - TenantID: "{tenant_id}", -} - -// Option 2: Use a utility function to retrieve all your environment variables -opts, err := openstack.AuthOptionsFromEnv() -``` - -Once you have the `opts` variable, you can pass it in and get back a -`ProviderClient` struct: - -```go -provider, err := openstack.AuthenticatedClient(opts) -``` - -The `ProviderClient` is the top-level client that all of your OpenStack services -derive from. The provider contains all of the authentication details that allow -your Go code to access the API - such as the base URL and token ID. - -### Provision a server - -Once we have a base Provider, we inject it as a dependency into each OpenStack -service. In order to work with the Compute API, we need a Compute service -client; which can be created like so: - -```go -client, err := openstack.NewComputeV2(provider, gophercloud.EndpointOpts{ - Region: os.Getenv("OS_REGION_NAME"), -}) -``` - -We then use this `client` for any Compute API operation we want. In our case, -we want to provision a new server - so we invoke the `Create` method and pass -in the flavor ID (hardware specification) and image ID (operating system) we're -interested in: - -```go -import "github.com/rackspace/gophercloud/openstack/compute/v2/servers" - -server, err := servers.Create(client, servers.CreateOpts{ - Name: "My new server!", - FlavorRef: "flavor_id", - ImageRef: "image_id", -}).Extract() -``` - -If you are unsure about what images and flavors are, you can read our [Compute -Getting Started guide](http://gophercloud.io/docs/compute). The above code -sample creates a new server with the parameters, and embodies the new resource -in the `server` variable (a -[`servers.Server`](http://godoc.org/github.com/rackspace/gophercloud) struct). - -### Next steps - -Cool! You've handled authentication, got your `ProviderClient` and provisioned -a new server. You're now ready to use more OpenStack services. - -* [Getting started with Compute](http://gophercloud.io/docs/compute) -* [Getting started with Object Storage](http://gophercloud.io/docs/object-storage) -* [Getting started with Networking](http://gophercloud.io/docs/networking) -* [Getting started with Block Storage](http://gophercloud.io/docs/block-storage) -* [Getting started with Identity](http://gophercloud.io/docs/identity) - -## Contributing - -Engaging the community and lowering barriers for contributors is something we -care a lot about. For this reason, we've taken the time to write a [contributing -guide](./CONTRIBUTING.md) for folks interested in getting involved in our project. -If you're not sure how you can get involved, feel free to submit an issue or -[contact us](https://developer.rackspace.com/support/). You don't need to be a -Go expert - all members of the community are welcome! - -## Help and feedback - -If you're struggling with something or have spotted a potential bug, feel free -to submit an issue to our [bug tracker](/issues) or [contact us directly](https://developer.rackspace.com/support/). diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/UPGRADING.md b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/UPGRADING.md deleted file mode 100644 index 76a94d57..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/UPGRADING.md +++ /dev/null @@ -1,338 +0,0 @@ -# Upgrading to v1.0.0 - -With the arrival of this new major version increment, the unfortunate news is -that breaking changes have been introduced to existing services. The API -has been completely rewritten from the ground up to make the library more -extensible, maintainable and easy-to-use. - -Below we've compiled upgrade instructions for the various services that -existed before. If you have a specific issue that is not addressed below, -please [submit an issue](/issues/new) or -[e-mail our support team](https://developer.rackspace.com/support/). - -* [Authentication](#authentication) -* [Servers](#servers) - * [List servers](#list-servers) - * [Get server details](#get-server-details) - * [Create server](#create-server) - * [Resize server](#resize-server) - * [Reboot server](#reboot-server) - * [Update server](#update-server) - * [Rebuild server](#rebuild-server) - * [Change admin password](#change-admin-password) - * [Delete server](#delete-server) - * [Rescue server](#rescue-server) -* [Images and flavors](#images-and-flavors) - * [List images](#list-images) - * [List flavors](#list-flavors) - * [Create/delete image](#createdelete-image) -* [Other](#other) - * [List keypairs](#list-keypairs) - * [Create/delete keypair](#createdelete-keypair) - * [List IP addresses](#list-ip-addresses) - -# Authentication - -One of the major differences that this release introduces is the level of -sub-packaging to differentiate between services and providers. You now have -the option of authenticating with OpenStack and other providers (like Rackspace). - -To authenticate with a vanilla OpenStack installation, you can either specify -your credentials like this: - -```go -import ( - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/openstack" -) - -opts := gophercloud.AuthOptions{ - IdentityEndpoint: "https://my-openstack.com:5000/v2.0", - Username: "{username}", - Password: "{password}", - TenantID: "{tenant_id}", -} -``` - -Or have them pulled in through environment variables, like this: - -```go -opts, err := openstack.AuthOptionsFromEnv() -``` - -Once you have your `AuthOptions` struct, you pass it in to get back a `Provider`, -like so: - -```go -provider, err := openstack.AuthenticatedClient(opts) -``` - -This provider is the top-level structure that all services are created from. - -# Servers - -Before you can interact with the Compute API, you need to retrieve a -`gophercloud.ServiceClient`. To do this: - -```go -// Define your region, etc. -opts := gophercloud.EndpointOpts{Region: "RegionOne"} - -client, err := openstack.NewComputeV2(provider, opts) -``` - -## List servers - -All operations that involve API collections (servers, flavors, images) now use -the `pagination.Pager` interface. This interface represents paginated entities -that can be iterated over. - -Once you have a Pager, you can then pass a callback function into its `EachPage` -method, and this will allow you to traverse over the collection and execute -arbitrary functionality. So, an example with list servers: - -```go -import ( - "fmt" - "github.com/rackspace/gophercloud/pagination" - "github.com/rackspace/gophercloud/openstack/compute/v2/servers" -) - -// We have the option of filtering the server list. If we want the full -// collection, leave it as an empty struct or nil -opts := servers.ListOpts{Name: "server_1"} - -// Retrieve a pager (i.e. a paginated collection) -pager := servers.List(client, opts) - -// Define an anonymous function to be executed on each page's iteration -err := pager.EachPage(func(page pagination.Page) (bool, error) { - serverList, err := servers.ExtractServers(page) - - // `s' will be a servers.Server struct - for _, s := range serverList { - fmt.Printf("We have a server. ID=%s, Name=%s", s.ID, s.Name) - } -}) -``` - -## Get server details - -```go -import "github.com/rackspace/gophercloud/openstack/compute/v2/servers" - -// Get the HTTP result -response := servers.Get(client, "server_id") - -// Extract a Server struct from the response -server, err := response.Extract() -``` - -## Create server - -```go -import "github.com/rackspace/gophercloud/openstack/compute/v2/servers" - -// Define our options -opts := servers.CreateOpts{ - Name: "new_server", - FlavorRef: "flavorID", - ImageRef: "imageID", -} - -// Get our response -response := servers.Create(client, opts) - -// Extract -server, err := response.Extract() -``` - -## Change admin password - -```go -import "github.com/rackspace/gophercloud/openstack/compute/v2/servers" - -result := servers.ChangeAdminPassword(client, "server_id", "newPassword_&123") -``` - -## Resize server - -```go -import "github.com/rackspace/gophercloud/openstack/compute/v2/servers" - -result := servers.Resize(client, "server_id", "new_flavor_id") -``` - -## Reboot server - -```go -import "github.com/rackspace/gophercloud/openstack/compute/v2/servers" - -// You have a choice of two reboot methods: servers.SoftReboot or servers.HardReboot -result := servers.Reboot(client, "server_id", servers.SoftReboot) -``` - -## Update server - -```go -import "github.com/rackspace/gophercloud/openstack/compute/v2/servers" - -opts := servers.UpdateOpts{Name: "new_name"} - -server, err := servers.Update(client, "server_id", opts).Extract() -``` - -## Rebuild server - -```go -import "github.com/rackspace/gophercloud/openstack/compute/v2/servers" - -// You have the option of specifying additional options -opts := RebuildOpts{ - Name: "new_name", - AdminPass: "admin_password", - ImageID: "image_id", - Metadata: map[string]string{"owner": "me"}, -} - -result := servers.Rebuild(client, "server_id", opts) - -// You can extract a servers.Server struct from the HTTP response -server, err := result.Extract() -``` - -## Delete server - -```go -import "github.com/rackspace/gophercloud/openstack/compute/v2/servers" - -response := servers.Delete(client, "server_id") -``` - -## Rescue server - -The server rescue extension for Compute is not currently supported. - -# Images and flavors - -## List images - -As with listing servers (see above), you first retrieve a Pager, and then pass -in a callback over each page: - -```go -import ( - "github.com/rackspace/gophercloud/pagination" - "github.com/rackspace/gophercloud/openstack/compute/v2/images" -) - -// We have the option of filtering the image list. If we want the full -// collection, leave it as an empty struct -opts := images.ListOpts{ChangesSince: "2014-01-01T01:02:03Z", Name: "Ubuntu 12.04"} - -// Retrieve a pager (i.e. a paginated collection) -pager := images.List(client, opts) - -// Define an anonymous function to be executed on each page's iteration -err := pager.EachPage(func(page pagination.Page) (bool, error) { - imageList, err := images.ExtractImages(page) - - for _, i := range imageList { - // "i" will be an images.Image - } -}) -``` - -## List flavors - -```go -import ( - "github.com/rackspace/gophercloud/pagination" - "github.com/rackspace/gophercloud/openstack/compute/v2/flavors" -) - -// We have the option of filtering the flavor list. If we want the full -// collection, leave it as an empty struct -opts := flavors.ListOpts{ChangesSince: "2014-01-01T01:02:03Z", MinRAM: 4} - -// Retrieve a pager (i.e. a paginated collection) -pager := flavors.List(client, opts) - -// Define an anonymous function to be executed on each page's iteration -err := pager.EachPage(func(page pagination.Page) (bool, error) { - flavorList, err := networks.ExtractFlavors(page) - - for _, f := range flavorList { - // "f" will be a flavors.Flavor - } -}) -``` - -## Create/delete image - -Image management has been shifted to Glance, but unfortunately this service is -not supported as of yet. You can, however, list Compute images like so: - -```go -import "github.com/rackspace/gophercloud/openstack/compute/v2/images" - -// Retrieve a pager (i.e. a paginated collection) -pager := images.List(client, opts) - -// Define an anonymous function to be executed on each page's iteration -err := pager.EachPage(func(page pagination.Page) (bool, error) { - imageList, err := images.ExtractImages(page) - - for _, i := range imageList { - // "i" will be an images.Image - } -}) -``` - -# Other - -## List keypairs - -```go -import "github.com/rackspace/gophercloud/openstack/compute/v2/extensions/keypairs" - -// Retrieve a pager (i.e. a paginated collection) -pager := keypairs.List(client, opts) - -// Define an anonymous function to be executed on each page's iteration -err := pager.EachPage(func(page pagination.Page) (bool, error) { - keyList, err := keypairs.ExtractKeyPairs(page) - - for _, k := range keyList { - // "k" will be a keypairs.KeyPair - } -}) -``` - -## Create/delete keypairs - -To create a new keypair, you need to specify its name and, optionally, a -pregenerated OpenSSH-formatted public key. - -```go -import "github.com/rackspace/gophercloud/openstack/compute/v2/extensions/keypairs" - -opts := keypairs.CreateOpts{ - Name: "new_key", - PublicKey: "...", -} - -response := keypairs.Create(client, opts) - -key, err := response.Extract() -``` - -To delete an existing keypair: - -```go -response := keypairs.Delete(client, "keypair_id") -``` - -## List IP addresses - -This operation is not currently supported. diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/auth_options.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/auth_options.go deleted file mode 100644 index 9819e45f..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/auth_options.go +++ /dev/null @@ -1,46 +0,0 @@ -package gophercloud - -/* -AuthOptions stores information needed to authenticate to an OpenStack cluster. -You can populate one manually, or use a provider's AuthOptionsFromEnv() function -to read relevant information from the standard environment variables. Pass one -to a provider's AuthenticatedClient function to authenticate and obtain a -ProviderClient representing an active session on that provider. - -Its fields are the union of those recognized by each identity implementation and -provider. -*/ -type AuthOptions struct { - // IdentityEndpoint specifies the HTTP endpoint that is required to work with - // the Identity API of the appropriate version. While it's ultimately needed by - // all of the identity services, it will often be populated by a provider-level - // function. - IdentityEndpoint string - - // Username is required if using Identity V2 API. Consult with your provider's - // control panel to discover your account's username. In Identity V3, either - // UserID or a combination of Username and DomainID or DomainName are needed. - Username, UserID string - - // Exactly one of Password or APIKey is required for the Identity V2 and V3 - // APIs. Consult with your provider's control panel to discover your account's - // preferred method of authentication. - Password, APIKey string - - // At most one of DomainID and DomainName must be provided if using Username - // with Identity V3. Otherwise, either are optional. - DomainID, DomainName string - - // The TenantID and TenantName fields are optional for the Identity V2 API. - // Some providers allow you to specify a TenantName instead of the TenantId. - // Some require both. Your provider's authentication policies will determine - // how these fields influence authentication. - TenantID, TenantName string - - // AllowReauth should be set to true if you grant permission for Gophercloud to - // cache your credentials in memory, and to allow Gophercloud to attempt to - // re-authenticate automatically if/when your token expires. If you set it to - // false, it will not cache these settings, but re-authentication will not be - // possible. This setting defaults to false. - AllowReauth bool -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/auth_results.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/auth_results.go deleted file mode 100644 index 856a2338..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/auth_results.go +++ /dev/null @@ -1,14 +0,0 @@ -package gophercloud - -import "time" - -// AuthResults [deprecated] is a leftover type from the v0.x days. It was -// intended to describe common functionality among identity service results, but -// is not actually used anywhere. -type AuthResults interface { - // TokenID returns the token's ID value from the authentication response. - TokenID() (string, error) - - // ExpiresAt retrieves the token's expiration time. - ExpiresAt() (time.Time, error) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/doc.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/doc.go deleted file mode 100644 index fb81a9d8..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/doc.go +++ /dev/null @@ -1,67 +0,0 @@ -/* -Package gophercloud provides a multi-vendor interface to OpenStack-compatible -clouds. The library has a three-level hierarchy: providers, services, and -resources. - -Provider structs represent the service providers that offer and manage a -collection of services. Examples of providers include: OpenStack, Rackspace, -HP. These are defined like so: - - opts := gophercloud.AuthOptions{ - IdentityEndpoint: "https://my-openstack.com:5000/v2.0", - Username: "{username}", - Password: "{password}", - TenantID: "{tenant_id}", - } - - provider, err := openstack.AuthenticatedClient(opts) - -Service structs are specific to a provider and handle all of the logic and -operations for a particular OpenStack service. Examples of services include: -Compute, Object Storage, Block Storage. In order to define one, you need to -pass in the parent provider, like so: - - opts := gophercloud.EndpointOpts{Region: "RegionOne"} - - client := openstack.NewComputeV2(provider, opts) - -Resource structs are the domain models that services make use of in order -to work with and represent the state of API resources: - - server, err := servers.Get(client, "{serverId}").Extract() - -Intermediate Result structs are returned for API operations, which allow -generic access to the HTTP headers, response body, and any errors associated -with the network transaction. To turn a result into a usable resource struct, -you must call the Extract method which is chained to the response, or an -Extract function from an applicable extension: - - result := servers.Get(client, "{serverId}") - - // Attempt to extract the disk configuration from the OS-DCF disk config - // extension: - config, err := diskconfig.ExtractGet(result) - -All requests that enumerate a collection return a Pager struct that is used to -iterate through the results one page at a time. Use the EachPage method on that -Pager to handle each successive Page in a closure, then use the appropriate -extraction method from that request's package to interpret that Page as a slice -of results: - - err := servers.List(client, nil).EachPage(func (page pagination.Page) (bool, error) { - s, err := servers.ExtractServers(page) - if err != nil { - return false, err - } - - // Handle the []servers.Server slice. - - // Return "false" or an error to prematurely stop fetching new pages. - return true, nil - }) - -This top-level package contains utility functions and data types that are used -throughout the provider and service packages. Of particular note for end users -are the AuthOptions and EndpointOpts structs. -*/ -package gophercloud diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/endpoint_search.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/endpoint_search.go deleted file mode 100644 index 51894312..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/endpoint_search.go +++ /dev/null @@ -1,92 +0,0 @@ -package gophercloud - -import "errors" - -var ( - // ErrServiceNotFound is returned when no service in a service catalog matches - // the provided EndpointOpts. This is generally returned by provider service - // factory methods like "NewComputeV2()" and can mean that a service is not - // enabled for your account. - ErrServiceNotFound = errors.New("No suitable service could be found in the service catalog.") - - // ErrEndpointNotFound is returned when no available endpoints match the - // provided EndpointOpts. This is also generally returned by provider service - // factory methods, and usually indicates that a region was specified - // incorrectly. - ErrEndpointNotFound = errors.New("No suitable endpoint could be found in the service catalog.") -) - -// Availability indicates to whom a specific service endpoint is accessible: -// the internet at large, internal networks only, or only to administrators. -// Different identity services use different terminology for these. Identity v2 -// lists them as different kinds of URLs within the service catalog ("adminURL", -// "internalURL", and "publicURL"), while v3 lists them as "Interfaces" in an -// endpoint's response. -type Availability string - -const ( - // AvailabilityAdmin indicates that an endpoint is only available to - // administrators. - AvailabilityAdmin Availability = "admin" - - // AvailabilityPublic indicates that an endpoint is available to everyone on - // the internet. - AvailabilityPublic Availability = "public" - - // AvailabilityInternal indicates that an endpoint is only available within - // the cluster's internal network. - AvailabilityInternal Availability = "internal" -) - -// EndpointOpts specifies search criteria used by queries against an -// OpenStack service catalog. The options must contain enough information to -// unambiguously identify one, and only one, endpoint within the catalog. -// -// Usually, these are passed to service client factory functions in a provider -// package, like "rackspace.NewComputeV2()". -type EndpointOpts struct { - // Type [required] is the service type for the client (e.g., "compute", - // "object-store"). Generally, this will be supplied by the service client - // function, but a user-given value will be honored if provided. - Type string - - // Name [optional] is the service name for the client (e.g., "nova") as it - // appears in the service catalog. Services can have the same Type but a - // different Name, which is why both Type and Name are sometimes needed. - Name string - - // Region [required] is the geographic region in which the endpoint resides, - // generally specifying which datacenter should house your resources. - // Required only for services that span multiple regions. - Region string - - // Availability [optional] is the visibility of the endpoint to be returned. - // Valid types include the constants AvailabilityPublic, AvailabilityInternal, - // or AvailabilityAdmin from this package. - // - // Availability is not required, and defaults to AvailabilityPublic. Not all - // providers or services offer all Availability options. - Availability Availability -} - -/* -EndpointLocator is an internal function to be used by provider implementations. - -It provides an implementation that locates a single endpoint from a service -catalog for a specific ProviderClient based on user-provided EndpointOpts. The -provider then uses it to discover related ServiceClients. -*/ -type EndpointLocator func(EndpointOpts) (string, error) - -// ApplyDefaults is an internal method to be used by provider implementations. -// -// It sets EndpointOpts fields if not already set, including a default type. -// Currently, EndpointOpts.Availability defaults to the public endpoint. -func (eo *EndpointOpts) ApplyDefaults(t string) { - if eo.Type == "" { - eo.Type = t - } - if eo.Availability == "" { - eo.Availability = AvailabilityPublic - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/auth_env.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/auth_env.go deleted file mode 100644 index a4402b6f..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/auth_env.go +++ /dev/null @@ -1,58 +0,0 @@ -package openstack - -import ( - "fmt" - "os" - - "github.com/rackspace/gophercloud" -) - -var nilOptions = gophercloud.AuthOptions{} - -// ErrNoAuthUrl, ErrNoUsername, and ErrNoPassword errors indicate of the required OS_AUTH_URL, OS_USERNAME, or OS_PASSWORD -// environment variables, respectively, remain undefined. See the AuthOptions() function for more details. -var ( - ErrNoAuthURL = fmt.Errorf("Environment variable OS_AUTH_URL needs to be set.") - ErrNoUsername = fmt.Errorf("Environment variable OS_USERNAME needs to be set.") - ErrNoPassword = fmt.Errorf("Environment variable OS_PASSWORD needs to be set.") -) - -// AuthOptions fills out an identity.AuthOptions structure with the settings found on the various OpenStack -// OS_* environment variables. The following variables provide sources of truth: OS_AUTH_URL, OS_USERNAME, -// OS_PASSWORD, OS_TENANT_ID, and OS_TENANT_NAME. Of these, OS_USERNAME, OS_PASSWORD, and OS_AUTH_URL must -// have settings, or an error will result. OS_TENANT_ID and OS_TENANT_NAME are optional. -func AuthOptionsFromEnv() (gophercloud.AuthOptions, error) { - authURL := os.Getenv("OS_AUTH_URL") - username := os.Getenv("OS_USERNAME") - userID := os.Getenv("OS_USERID") - password := os.Getenv("OS_PASSWORD") - tenantID := os.Getenv("OS_TENANT_ID") - tenantName := os.Getenv("OS_TENANT_NAME") - domainID := os.Getenv("OS_DOMAIN_ID") - domainName := os.Getenv("OS_DOMAIN_NAME") - - if authURL == "" { - return nilOptions, ErrNoAuthURL - } - - if username == "" && userID == "" { - return nilOptions, ErrNoUsername - } - - if password == "" { - return nilOptions, ErrNoPassword - } - - ao := gophercloud.AuthOptions{ - IdentityEndpoint: authURL, - UserID: userID, - Username: username, - Password: password, - TenantID: tenantID, - TenantName: tenantName, - DomainID: domainID, - DomainName: domainName, - } - - return ao, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/client.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/client.go deleted file mode 100644 index 1193b19a..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/client.go +++ /dev/null @@ -1,263 +0,0 @@ -package openstack - -import ( - "fmt" - "net/url" - - "github.com/rackspace/gophercloud" - tokens2 "github.com/rackspace/gophercloud/openstack/identity/v2/tokens" - tokens3 "github.com/rackspace/gophercloud/openstack/identity/v3/tokens" - "github.com/rackspace/gophercloud/openstack/utils" -) - -const ( - v20 = "v2.0" - v30 = "v3.0" -) - -// NewClient prepares an unauthenticated ProviderClient instance. -// Most users will probably prefer using the AuthenticatedClient function instead. -// This is useful if you wish to explicitly control the version of the identity service that's used for authentication explicitly, -// for example. -func NewClient(endpoint string) (*gophercloud.ProviderClient, error) { - u, err := url.Parse(endpoint) - if err != nil { - return nil, err - } - hadPath := u.Path != "" - u.Path, u.RawQuery, u.Fragment = "", "", "" - base := u.String() - - endpoint = gophercloud.NormalizeURL(endpoint) - base = gophercloud.NormalizeURL(base) - - if hadPath { - return &gophercloud.ProviderClient{ - IdentityBase: base, - IdentityEndpoint: endpoint, - }, nil - } - - return &gophercloud.ProviderClient{ - IdentityBase: base, - IdentityEndpoint: "", - }, nil -} - -// AuthenticatedClient logs in to an OpenStack cloud found at the identity endpoint specified by options, acquires a token, and -// returns a Client instance that's ready to operate. -// It first queries the root identity endpoint to determine which versions of the identity service are supported, then chooses -// the most recent identity service available to proceed. -func AuthenticatedClient(options gophercloud.AuthOptions) (*gophercloud.ProviderClient, error) { - client, err := NewClient(options.IdentityEndpoint) - if err != nil { - return nil, err - } - - err = Authenticate(client, options) - if err != nil { - return nil, err - } - return client, nil -} - -// Authenticate or re-authenticate against the most recent identity service supported at the provided endpoint. -func Authenticate(client *gophercloud.ProviderClient, options gophercloud.AuthOptions) error { - versions := []*utils.Version{ - &utils.Version{ID: v20, Priority: 20, Suffix: "/v2.0/"}, - &utils.Version{ID: v30, Priority: 30, Suffix: "/v3/"}, - } - - chosen, endpoint, err := utils.ChooseVersion(client, versions) - if err != nil { - return err - } - - switch chosen.ID { - case v20: - return v2auth(client, endpoint, options) - case v30: - return v3auth(client, endpoint, options) - default: - // The switch statement must be out of date from the versions list. - return fmt.Errorf("Unrecognized identity version: %s", chosen.ID) - } -} - -// AuthenticateV2 explicitly authenticates against the identity v2 endpoint. -func AuthenticateV2(client *gophercloud.ProviderClient, options gophercloud.AuthOptions) error { - return v2auth(client, "", options) -} - -func v2auth(client *gophercloud.ProviderClient, endpoint string, options gophercloud.AuthOptions) error { - v2Client := NewIdentityV2(client) - if endpoint != "" { - v2Client.Endpoint = endpoint - } - - result := tokens2.Create(v2Client, tokens2.AuthOptions{AuthOptions: options}) - - token, err := result.ExtractToken() - if err != nil { - return err - } - - catalog, err := result.ExtractServiceCatalog() - if err != nil { - return err - } - - if options.AllowReauth { - client.ReauthFunc = func() error { - client.TokenID = "" - return AuthenticateV2(client, options) - } - } - client.TokenID = token.ID - client.EndpointLocator = func(opts gophercloud.EndpointOpts) (string, error) { - return V2EndpointURL(catalog, opts) - } - - return nil -} - -// AuthenticateV3 explicitly authenticates against the identity v3 service. -func AuthenticateV3(client *gophercloud.ProviderClient, options gophercloud.AuthOptions) error { - return v3auth(client, "", options) -} - -func v3auth(client *gophercloud.ProviderClient, endpoint string, options gophercloud.AuthOptions) error { - // Override the generated service endpoint with the one returned by the version endpoint. - v3Client := NewIdentityV3(client) - if endpoint != "" { - v3Client.Endpoint = endpoint - } - - var scope *tokens3.Scope - if options.TenantID != "" { - scope = &tokens3.Scope{ - ProjectID: options.TenantID, - } - options.TenantID = "" - options.TenantName = "" - } else { - if options.TenantName != "" { - scope = &tokens3.Scope{ - ProjectName: options.TenantName, - DomainID: options.DomainID, - DomainName: options.DomainName, - } - options.TenantName = "" - } - } - - result := tokens3.Create(v3Client, options, scope) - - token, err := result.ExtractToken() - if err != nil { - return err - } - - catalog, err := result.ExtractServiceCatalog() - if err != nil { - return err - } - - client.TokenID = token.ID - - if options.AllowReauth { - client.ReauthFunc = func() error { - return AuthenticateV3(client, options) - } - } - client.EndpointLocator = func(opts gophercloud.EndpointOpts) (string, error) { - return V3EndpointURL(catalog, opts) - } - - return nil -} - -// NewIdentityV2 creates a ServiceClient that may be used to interact with the v2 identity service. -func NewIdentityV2(client *gophercloud.ProviderClient) *gophercloud.ServiceClient { - v2Endpoint := client.IdentityBase + "v2.0/" - - return &gophercloud.ServiceClient{ - ProviderClient: client, - Endpoint: v2Endpoint, - } -} - -// NewIdentityV3 creates a ServiceClient that may be used to access the v3 identity service. -func NewIdentityV3(client *gophercloud.ProviderClient) *gophercloud.ServiceClient { - v3Endpoint := client.IdentityBase + "v3/" - - return &gophercloud.ServiceClient{ - ProviderClient: client, - Endpoint: v3Endpoint, - } -} - -// NewObjectStorageV1 creates a ServiceClient that may be used with the v1 object storage package. -func NewObjectStorageV1(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { - eo.ApplyDefaults("object-store") - url, err := client.EndpointLocator(eo) - if err != nil { - return nil, err - } - return &gophercloud.ServiceClient{ProviderClient: client, Endpoint: url}, nil -} - -// NewComputeV2 creates a ServiceClient that may be used with the v2 compute package. -func NewComputeV2(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { - eo.ApplyDefaults("compute") - url, err := client.EndpointLocator(eo) - if err != nil { - return nil, err - } - return &gophercloud.ServiceClient{ProviderClient: client, Endpoint: url}, nil -} - -// NewNetworkV2 creates a ServiceClient that may be used with the v2 network package. -func NewNetworkV2(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { - eo.ApplyDefaults("network") - url, err := client.EndpointLocator(eo) - if err != nil { - return nil, err - } - return &gophercloud.ServiceClient{ - ProviderClient: client, - Endpoint: url, - ResourceBase: url + "v2.0/", - }, nil -} - -// NewBlockStorageV1 creates a ServiceClient that may be used to access the v1 block storage service. -func NewBlockStorageV1(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { - eo.ApplyDefaults("volume") - url, err := client.EndpointLocator(eo) - if err != nil { - return nil, err - } - return &gophercloud.ServiceClient{ProviderClient: client, Endpoint: url}, nil -} - -// NewCDNV1 creates a ServiceClient that may be used to access the OpenStack v1 -// CDN service. -func NewCDNV1(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { - eo.ApplyDefaults("cdn") - url, err := client.EndpointLocator(eo) - if err != nil { - return nil, err - } - return &gophercloud.ServiceClient{ProviderClient: client, Endpoint: url}, nil -} - -// NewOrchestrationV1 creates a ServiceClient that may be used to access the v1 orchestration service. -func NewOrchestrationV1(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { - eo.ApplyDefaults("orchestration") - url, err := client.EndpointLocator(eo) - if err != nil { - return nil, err - } - return &gophercloud.ServiceClient{ProviderClient: client, Endpoint: url}, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/floatingip/doc.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/floatingip/doc.go deleted file mode 100644 index f74f58ce..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/floatingip/doc.go +++ /dev/null @@ -1,3 +0,0 @@ -// Package floatingip provides the ability to manage floating ips through -// nova-network -package floatingip diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/floatingip/fixtures.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/floatingip/fixtures.go deleted file mode 100644 index 26f32995..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/floatingip/fixtures.go +++ /dev/null @@ -1,174 +0,0 @@ -// +build fixtures - -package floatingip - -import ( - "fmt" - "net/http" - "testing" - - th "github.com/rackspace/gophercloud/testhelper" - "github.com/rackspace/gophercloud/testhelper/client" -) - -// ListOutput is a sample response to a List call. -const ListOutput = ` -{ - "floating_ips": [ - { - "fixed_ip": null, - "id": 1, - "instance_id": null, - "ip": "10.10.10.1", - "pool": "nova" - }, - { - "fixed_ip": "166.78.185.201", - "id": 2, - "instance_id": "4d8c3732-a248-40ed-bebc-539a6ffd25c0", - "ip": "10.10.10.2", - "pool": "nova" - } - ] -} -` - -// GetOutput is a sample response to a Get call. -const GetOutput = ` -{ - "floating_ip": { - "fixed_ip": "166.78.185.201", - "id": 2, - "instance_id": "4d8c3732-a248-40ed-bebc-539a6ffd25c0", - "ip": "10.10.10.2", - "pool": "nova" - } -} -` - -// CreateOutput is a sample response to a Post call -const CreateOutput = ` -{ - "floating_ip": { - "fixed_ip": null, - "id": 1, - "instance_id": null, - "ip": "10.10.10.1", - "pool": "nova" - } -} -` - -// FirstFloatingIP is the first result in ListOutput. -var FirstFloatingIP = FloatingIP{ - ID: "1", - IP: "10.10.10.1", - Pool: "nova", -} - -// SecondFloatingIP is the first result in ListOutput. -var SecondFloatingIP = FloatingIP{ - FixedIP: "166.78.185.201", - ID: "2", - InstanceID: "4d8c3732-a248-40ed-bebc-539a6ffd25c0", - IP: "10.10.10.2", - Pool: "nova", -} - -// ExpectedFloatingIPsSlice is the slice of results that should be parsed -// from ListOutput, in the expected order. -var ExpectedFloatingIPsSlice = []FloatingIP{FirstFloatingIP, SecondFloatingIP} - -// CreatedFloatingIP is the parsed result from CreateOutput. -var CreatedFloatingIP = FloatingIP{ - ID: "1", - IP: "10.10.10.1", - Pool: "nova", -} - -// HandleListSuccessfully configures the test server to respond to a List request. -func HandleListSuccessfully(t *testing.T) { - th.Mux.HandleFunc("/os-floating-ips", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "GET") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - - w.Header().Add("Content-Type", "application/json") - fmt.Fprintf(w, ListOutput) - }) -} - -// HandleGetSuccessfully configures the test server to respond to a Get request -// for an existing floating ip -func HandleGetSuccessfully(t *testing.T) { - th.Mux.HandleFunc("/os-floating-ips/2", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "GET") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - - w.Header().Add("Content-Type", "application/json") - fmt.Fprintf(w, GetOutput) - }) -} - -// HandleCreateSuccessfully configures the test server to respond to a Create request -// for a new floating ip -func HandleCreateSuccessfully(t *testing.T) { - th.Mux.HandleFunc("/os-floating-ips", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "POST") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - th.TestJSONRequest(t, r, ` -{ - "pool": "nova" -} -`) - - w.Header().Add("Content-Type", "application/json") - fmt.Fprintf(w, CreateOutput) - }) -} - -// HandleDeleteSuccessfully configures the test server to respond to a Delete request for a -// an existing floating ip -func HandleDeleteSuccessfully(t *testing.T) { - th.Mux.HandleFunc("/os-floating-ips/1", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "DELETE") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - - w.WriteHeader(http.StatusAccepted) - }) -} - -// HandleAssociateSuccessfully configures the test server to respond to a Post request -// to associate an allocated floating IP -func HandleAssociateSuccessfully(t *testing.T) { - th.Mux.HandleFunc("/servers/4d8c3732-a248-40ed-bebc-539a6ffd25c0/action", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "POST") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - th.TestJSONRequest(t, r, ` -{ - "addFloatingIp": { - "address": "10.10.10.2" - } -} -`) - - w.WriteHeader(http.StatusAccepted) - }) -} - -// HandleDisassociateSuccessfully configures the test server to respond to a Post request -// to disassociate an allocated floating IP -func HandleDisassociateSuccessfully(t *testing.T) { - th.Mux.HandleFunc("/servers/4d8c3732-a248-40ed-bebc-539a6ffd25c0/action", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "POST") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - th.TestJSONRequest(t, r, ` -{ - "removeFloatingIp": { - "address": "10.10.10.2" - } -} -`) - - w.WriteHeader(http.StatusAccepted) - }) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/floatingip/requests.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/floatingip/requests.go deleted file mode 100644 index 8abb72dc..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/floatingip/requests.go +++ /dev/null @@ -1,92 +0,0 @@ -package floatingip - -import ( - "errors" - - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/pagination" -) - -// List returns a Pager that allows you to iterate over a collection of FloatingIPs. -func List(client *gophercloud.ServiceClient) pagination.Pager { - return pagination.NewPager(client, listURL(client), func(r pagination.PageResult) pagination.Page { - return FloatingIPsPage{pagination.SinglePageBase(r)} - }) -} - -// CreateOptsBuilder describes struct types that can be accepted by the Create call. Notable, the -// CreateOpts struct in this package does. -type CreateOptsBuilder interface { - ToFloatingIPCreateMap() (map[string]interface{}, error) -} - -// CreateOpts specifies a Floating IP allocation request -type CreateOpts struct { - // Pool is the pool of floating IPs to allocate one from - Pool string -} - -// ToFloatingIPCreateMap constructs a request body from CreateOpts. -func (opts CreateOpts) ToFloatingIPCreateMap() (map[string]interface{}, error) { - if opts.Pool == "" { - return nil, errors.New("Missing field required for floating IP creation: Pool") - } - - return map[string]interface{}{"pool": opts.Pool}, nil -} - -// Create requests the creation of a new floating IP -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) CreateResult { - var res CreateResult - - reqBody, err := opts.ToFloatingIPCreateMap() - if err != nil { - res.Err = err - return res - } - - _, res.Err = client.Post(createURL(client), reqBody, &res.Body, &gophercloud.RequestOpts{ - OkCodes: []int{200}, - }) - return res -} - -// Get returns data about a previously created FloatingIP. -func Get(client *gophercloud.ServiceClient, id string) GetResult { - var res GetResult - _, res.Err = client.Get(getURL(client, id), &res.Body, nil) - return res -} - -// Delete requests the deletion of a previous allocated FloatingIP. -func Delete(client *gophercloud.ServiceClient, id string) DeleteResult { - var res DeleteResult - _, res.Err = client.Delete(deleteURL(client, id), nil) - return res -} - -// association / disassociation - -// Associate pairs an allocated floating IP with an instance -func Associate(client *gophercloud.ServiceClient, serverId, fip string) AssociateResult { - var res AssociateResult - - addFloatingIp := make(map[string]interface{}) - addFloatingIp["address"] = fip - reqBody := map[string]interface{}{"addFloatingIp": addFloatingIp} - - _, res.Err = client.Post(associateURL(client, serverId), reqBody, nil, nil) - return res -} - -// Disassociate decouples an allocated floating IP from an instance -func Disassociate(client *gophercloud.ServiceClient, serverId, fip string) DisassociateResult { - var res DisassociateResult - - removeFloatingIp := make(map[string]interface{}) - removeFloatingIp["address"] = fip - reqBody := map[string]interface{}{"removeFloatingIp": removeFloatingIp} - - _, res.Err = client.Post(disassociateURL(client, serverId), reqBody, nil, nil) - return res -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/floatingip/results.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/floatingip/results.go deleted file mode 100644 index be77fa17..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/floatingip/results.go +++ /dev/null @@ -1,99 +0,0 @@ -package floatingip - -import ( - "github.com/mitchellh/mapstructure" - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/pagination" -) - -// A FloatingIP is an IP that can be associated with an instance -type FloatingIP struct { - // ID is a unique ID of the Floating IP - ID string `mapstructure:"id"` - - // FixedIP is the IP of the instance related to the Floating IP - FixedIP string `mapstructure:"fixed_ip,omitempty"` - - // InstanceID is the ID of the instance that is using the Floating IP - InstanceID string `mapstructure:"instance_id"` - - // IP is the actual Floating IP - IP string `mapstructure:"ip"` - - // Pool is the pool of floating IPs that this floating IP belongs to - Pool string `mapstructure:"pool"` -} - -// FloatingIPsPage stores a single, only page of FloatingIPs -// results from a List call. -type FloatingIPsPage struct { - pagination.SinglePageBase -} - -// IsEmpty determines whether or not a FloatingIPsPage is empty. -func (page FloatingIPsPage) IsEmpty() (bool, error) { - va, err := ExtractFloatingIPs(page) - return len(va) == 0, err -} - -// ExtractFloatingIPs interprets a page of results as a slice of -// FloatingIPs. -func ExtractFloatingIPs(page pagination.Page) ([]FloatingIP, error) { - casted := page.(FloatingIPsPage).Body - var response struct { - FloatingIPs []FloatingIP `mapstructure:"floating_ips"` - } - - err := mapstructure.WeakDecode(casted, &response) - - return response.FloatingIPs, err -} - -type FloatingIPResult struct { - gophercloud.Result -} - -// Extract is a method that attempts to interpret any FloatingIP resource -// response as a FloatingIP struct. -func (r FloatingIPResult) Extract() (*FloatingIP, error) { - if r.Err != nil { - return nil, r.Err - } - - var res struct { - FloatingIP *FloatingIP `json:"floating_ip" mapstructure:"floating_ip"` - } - - err := mapstructure.WeakDecode(r.Body, &res) - return res.FloatingIP, err -} - -// CreateResult is the response from a Create operation. Call its Extract method to interpret it -// as a FloatingIP. -type CreateResult struct { - FloatingIPResult -} - -// GetResult is the response from a Get operation. Call its Extract method to interpret it -// as a FloatingIP. -type GetResult struct { - FloatingIPResult -} - -// DeleteResult is the response from a Delete operation. Call its Extract method to determine if -// the call succeeded or failed. -type DeleteResult struct { - gophercloud.ErrResult -} - -// AssociateResult is the response from a Delete operation. Call its Extract method to determine if -// the call succeeded or failed. -type AssociateResult struct { - gophercloud.ErrResult -} - -// DisassociateResult is the response from a Delete operation. Call its Extract method to determine if -// the call succeeded or failed. -type DisassociateResult struct { - gophercloud.ErrResult -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/floatingip/urls.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/floatingip/urls.go deleted file mode 100644 index 54198f85..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/floatingip/urls.go +++ /dev/null @@ -1,37 +0,0 @@ -package floatingip - -import "github.com/rackspace/gophercloud" - -const resourcePath = "os-floating-ips" - -func resourceURL(c *gophercloud.ServiceClient) string { - return c.ServiceURL(resourcePath) -} - -func listURL(c *gophercloud.ServiceClient) string { - return resourceURL(c) -} - -func createURL(c *gophercloud.ServiceClient) string { - return resourceURL(c) -} - -func getURL(c *gophercloud.ServiceClient, id string) string { - return c.ServiceURL(resourcePath, id) -} - -func deleteURL(c *gophercloud.ServiceClient, id string) string { - return getURL(c, id) -} - -func serverURL(c *gophercloud.ServiceClient, serverId string) string { - return c.ServiceURL("servers/" + serverId + "/action") -} - -func associateURL(c *gophercloud.ServiceClient, serverId string) string { - return serverURL(c, serverId) -} - -func disassociateURL(c *gophercloud.ServiceClient, serverId string) string { - return serverURL(c, serverId) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/keypairs/doc.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/keypairs/doc.go deleted file mode 100644 index 856f41ba..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/keypairs/doc.go +++ /dev/null @@ -1,3 +0,0 @@ -// Package keypairs provides information and interaction with the Keypairs -// extension for the OpenStack Compute service. -package keypairs diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/keypairs/fixtures.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/keypairs/fixtures.go deleted file mode 100644 index d10af99d..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/keypairs/fixtures.go +++ /dev/null @@ -1,171 +0,0 @@ -// +build fixtures - -package keypairs - -import ( - "fmt" - "net/http" - "testing" - - th "github.com/rackspace/gophercloud/testhelper" - "github.com/rackspace/gophercloud/testhelper/client" -) - -// ListOutput is a sample response to a List call. -const ListOutput = ` -{ - "keypairs": [ - { - "keypair": { - "fingerprint": "15:b0:f8:b3:f9:48:63:71:cf:7b:5b:38:6d:44:2d:4a", - "name": "firstkey", - "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC+Eo/RZRngaGTkFs7I62ZjsIlO79KklKbMXi8F+KITD4bVQHHn+kV+4gRgkgCRbdoDqoGfpaDFs877DYX9n4z6FrAIZ4PES8TNKhatifpn9NdQYWA+IkU8CuvlEKGuFpKRi/k7JLos/gHi2hy7QUwgtRvcefvD/vgQZOVw/mGR9Q== Generated by Nova\n" - } - }, - { - "keypair": { - "fingerprint": "35:9d:d0:c3:4a:80:d3:d8:86:f1:ca:f7:df:c4:f9:d8", - "name": "secondkey", - "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC9mC3WZN9UGLxgPBpP7H5jZMc6pKwOoSgre8yun6REFktn/Kz7DUt9jaR1UJyRzHxITfCfAIgSxPdGqB/oF1suMyWgu5i0625vavLB5z5kC8Hq3qZJ9zJO1poE1kyD+htiTtPWJ88e12xuH2XB/CZN9OpEiF98hAagiOE0EnOS5Q== Generated by Nova\n" - } - } - ] -} -` - -// GetOutput is a sample response to a Get call. -const GetOutput = ` -{ - "keypair": { - "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC+Eo/RZRngaGTkFs7I62ZjsIlO79KklKbMXi8F+KITD4bVQHHn+kV+4gRgkgCRbdoDqoGfpaDFs877DYX9n4z6FrAIZ4PES8TNKhatifpn9NdQYWA+IkU8CuvlEKGuFpKRi/k7JLos/gHi2hy7QUwgtRvcefvD/vgQZOVw/mGR9Q== Generated by Nova\n", - "name": "firstkey", - "fingerprint": "15:b0:f8:b3:f9:48:63:71:cf:7b:5b:38:6d:44:2d:4a" - } -} -` - -// CreateOutput is a sample response to a Create call. -const CreateOutput = ` -{ - "keypair": { - "fingerprint": "35:9d:d0:c3:4a:80:d3:d8:86:f1:ca:f7:df:c4:f9:d8", - "name": "createdkey", - "private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIICXAIBAAKBgQC9mC3WZN9UGLxgPBpP7H5jZMc6pKwOoSgre8yun6REFktn/Kz7\nDUt9jaR1UJyRzHxITfCfAIgSxPdGqB/oF1suMyWgu5i0625vavLB5z5kC8Hq3qZJ\n9zJO1poE1kyD+htiTtPWJ88e12xuH2XB/CZN9OpEiF98hAagiOE0EnOS5QIDAQAB\nAoGAE5XO1mDhORy9COvsg+kYPUhB1GsCYxh+v88wG7HeFDKBY6KUc/Kxo6yoGn5T\nTjRjekyi2KoDZHz4VlIzyZPwFS4I1bf3oCunVoAKzgLdmnTtvRNMC5jFOGc2vUgP\n9bSyRj3S1R4ClVk2g0IDeagko/jc8zzLEYuIK+fbkds79YECQQDt3vcevgegnkga\ntF4NsDmmBPRkcSHCqrANP/7vFcBQN3czxeYYWX3DK07alu6GhH1Y4sHbdm616uU0\nll7xbDzxAkEAzAtN2IyftNygV2EGiaGgqLyo/tD9+Vui2qCQplqe4jvWh/5Sparl\nOjmKo+uAW+hLrLVMnHzRWxbWU8hirH5FNQJATO+ZxCK4etXXAnQmG41NCAqANWB2\nB+2HJbH2NcQ2QHvAHUm741JGn/KI/aBlo7KEjFRDWUVUB5ji64BbUwCsMQJBAIku\nLGcjnBf/oLk+XSPZC2eGd2Ph5G5qYmH0Q2vkTx+wtTn3DV+eNsDfgMtWAJVJ5t61\ngU1QSXyhLPVlKpnnxuUCQC+xvvWjWtsLaFtAsZywJiqLxQzHts8XLGZptYJ5tLWV\nrtmYtBcJCN48RrgQHry/xWYeA4K/AFQpXfNPgprQ96Q=\n-----END RSA PRIVATE KEY-----\n", - "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC9mC3WZN9UGLxgPBpP7H5jZMc6pKwOoSgre8yun6REFktn/Kz7DUt9jaR1UJyRzHxITfCfAIgSxPdGqB/oF1suMyWgu5i0625vavLB5z5kC8Hq3qZJ9zJO1poE1kyD+htiTtPWJ88e12xuH2XB/CZN9OpEiF98hAagiOE0EnOS5Q== Generated by Nova\n", - "user_id": "fake" - } -} -` - -// ImportOutput is a sample response to a Create call that provides its own public key. -const ImportOutput = ` -{ - "keypair": { - "fingerprint": "1e:2c:9b:56:79:4b:45:77:f9:ca:7a:98:2c:b0:d5:3c", - "name": "importedkey", - "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw== Generated by Nova", - "user_id": "fake" - } -} -` - -// FirstKeyPair is the first result in ListOutput. -var FirstKeyPair = KeyPair{ - Name: "firstkey", - Fingerprint: "15:b0:f8:b3:f9:48:63:71:cf:7b:5b:38:6d:44:2d:4a", - PublicKey: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC+Eo/RZRngaGTkFs7I62ZjsIlO79KklKbMXi8F+KITD4bVQHHn+kV+4gRgkgCRbdoDqoGfpaDFs877DYX9n4z6FrAIZ4PES8TNKhatifpn9NdQYWA+IkU8CuvlEKGuFpKRi/k7JLos/gHi2hy7QUwgtRvcefvD/vgQZOVw/mGR9Q== Generated by Nova\n", -} - -// SecondKeyPair is the second result in ListOutput. -var SecondKeyPair = KeyPair{ - Name: "secondkey", - Fingerprint: "35:9d:d0:c3:4a:80:d3:d8:86:f1:ca:f7:df:c4:f9:d8", - PublicKey: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC9mC3WZN9UGLxgPBpP7H5jZMc6pKwOoSgre8yun6REFktn/Kz7DUt9jaR1UJyRzHxITfCfAIgSxPdGqB/oF1suMyWgu5i0625vavLB5z5kC8Hq3qZJ9zJO1poE1kyD+htiTtPWJ88e12xuH2XB/CZN9OpEiF98hAagiOE0EnOS5Q== Generated by Nova\n", -} - -// ExpectedKeyPairSlice is the slice of results that should be parsed from ListOutput, in the expected -// order. -var ExpectedKeyPairSlice = []KeyPair{FirstKeyPair, SecondKeyPair} - -// CreatedKeyPair is the parsed result from CreatedOutput. -var CreatedKeyPair = KeyPair{ - Name: "createdkey", - Fingerprint: "35:9d:d0:c3:4a:80:d3:d8:86:f1:ca:f7:df:c4:f9:d8", - PublicKey: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC9mC3WZN9UGLxgPBpP7H5jZMc6pKwOoSgre8yun6REFktn/Kz7DUt9jaR1UJyRzHxITfCfAIgSxPdGqB/oF1suMyWgu5i0625vavLB5z5kC8Hq3qZJ9zJO1poE1kyD+htiTtPWJ88e12xuH2XB/CZN9OpEiF98hAagiOE0EnOS5Q== Generated by Nova\n", - PrivateKey: "-----BEGIN RSA PRIVATE KEY-----\nMIICXAIBAAKBgQC9mC3WZN9UGLxgPBpP7H5jZMc6pKwOoSgre8yun6REFktn/Kz7\nDUt9jaR1UJyRzHxITfCfAIgSxPdGqB/oF1suMyWgu5i0625vavLB5z5kC8Hq3qZJ\n9zJO1poE1kyD+htiTtPWJ88e12xuH2XB/CZN9OpEiF98hAagiOE0EnOS5QIDAQAB\nAoGAE5XO1mDhORy9COvsg+kYPUhB1GsCYxh+v88wG7HeFDKBY6KUc/Kxo6yoGn5T\nTjRjekyi2KoDZHz4VlIzyZPwFS4I1bf3oCunVoAKzgLdmnTtvRNMC5jFOGc2vUgP\n9bSyRj3S1R4ClVk2g0IDeagko/jc8zzLEYuIK+fbkds79YECQQDt3vcevgegnkga\ntF4NsDmmBPRkcSHCqrANP/7vFcBQN3czxeYYWX3DK07alu6GhH1Y4sHbdm616uU0\nll7xbDzxAkEAzAtN2IyftNygV2EGiaGgqLyo/tD9+Vui2qCQplqe4jvWh/5Sparl\nOjmKo+uAW+hLrLVMnHzRWxbWU8hirH5FNQJATO+ZxCK4etXXAnQmG41NCAqANWB2\nB+2HJbH2NcQ2QHvAHUm741JGn/KI/aBlo7KEjFRDWUVUB5ji64BbUwCsMQJBAIku\nLGcjnBf/oLk+XSPZC2eGd2Ph5G5qYmH0Q2vkTx+wtTn3DV+eNsDfgMtWAJVJ5t61\ngU1QSXyhLPVlKpnnxuUCQC+xvvWjWtsLaFtAsZywJiqLxQzHts8XLGZptYJ5tLWV\nrtmYtBcJCN48RrgQHry/xWYeA4K/AFQpXfNPgprQ96Q=\n-----END RSA PRIVATE KEY-----\n", - UserID: "fake", -} - -// ImportedKeyPair is the parsed result from ImportOutput. -var ImportedKeyPair = KeyPair{ - Name: "importedkey", - Fingerprint: "1e:2c:9b:56:79:4b:45:77:f9:ca:7a:98:2c:b0:d5:3c", - PublicKey: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw== Generated by Nova", - UserID: "fake", -} - -// HandleListSuccessfully configures the test server to respond to a List request. -func HandleListSuccessfully(t *testing.T) { - th.Mux.HandleFunc("/os-keypairs", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "GET") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - - w.Header().Add("Content-Type", "application/json") - fmt.Fprintf(w, ListOutput) - }) -} - -// HandleGetSuccessfully configures the test server to respond to a Get request for "firstkey". -func HandleGetSuccessfully(t *testing.T) { - th.Mux.HandleFunc("/os-keypairs/firstkey", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "GET") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - - w.Header().Add("Content-Type", "application/json") - fmt.Fprintf(w, GetOutput) - }) -} - -// HandleCreateSuccessfully configures the test server to respond to a Create request for a new -// keypair called "createdkey". -func HandleCreateSuccessfully(t *testing.T) { - th.Mux.HandleFunc("/os-keypairs", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "POST") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - th.TestJSONRequest(t, r, `{ "keypair": { "name": "createdkey" } }`) - - w.Header().Add("Content-Type", "application/json") - fmt.Fprintf(w, CreateOutput) - }) -} - -// HandleImportSuccessfully configures the test server to respond to an Import request for an -// existing keypair called "importedkey". -func HandleImportSuccessfully(t *testing.T) { - th.Mux.HandleFunc("/os-keypairs", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "POST") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - th.TestJSONRequest(t, r, ` - { - "keypair": { - "name": "importedkey", - "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw== Generated by Nova" - } - } - `) - - w.Header().Add("Content-Type", "application/json") - fmt.Fprintf(w, ImportOutput) - }) -} - -// HandleDeleteSuccessfully configures the test server to respond to a Delete request for a -// keypair called "deletedkey". -func HandleDeleteSuccessfully(t *testing.T) { - th.Mux.HandleFunc("/os-keypairs/deletedkey", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "DELETE") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - - w.WriteHeader(http.StatusAccepted) - }) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/keypairs/requests.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/keypairs/requests.go deleted file mode 100644 index c56ee67e..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/keypairs/requests.go +++ /dev/null @@ -1,102 +0,0 @@ -package keypairs - -import ( - "errors" - - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/openstack/compute/v2/servers" - "github.com/rackspace/gophercloud/pagination" -) - -// CreateOptsExt adds a KeyPair option to the base CreateOpts. -type CreateOptsExt struct { - servers.CreateOptsBuilder - KeyName string `json:"key_name,omitempty"` -} - -// ToServerCreateMap adds the key_name and, optionally, key_data options to -// the base server creation options. -func (opts CreateOptsExt) ToServerCreateMap() (map[string]interface{}, error) { - base, err := opts.CreateOptsBuilder.ToServerCreateMap() - if err != nil { - return nil, err - } - - if opts.KeyName == "" { - return base, nil - } - - serverMap := base["server"].(map[string]interface{}) - serverMap["key_name"] = opts.KeyName - - return base, nil -} - -// List returns a Pager that allows you to iterate over a collection of KeyPairs. -func List(client *gophercloud.ServiceClient) pagination.Pager { - return pagination.NewPager(client, listURL(client), func(r pagination.PageResult) pagination.Page { - return KeyPairPage{pagination.SinglePageBase(r)} - }) -} - -// CreateOptsBuilder describes struct types that can be accepted by the Create call. Notable, the -// CreateOpts struct in this package does. -type CreateOptsBuilder interface { - ToKeyPairCreateMap() (map[string]interface{}, error) -} - -// CreateOpts specifies keypair creation or import parameters. -type CreateOpts struct { - // Name [required] is a friendly name to refer to this KeyPair in other services. - Name string - - // PublicKey [optional] is a pregenerated OpenSSH-formatted public key. If provided, this key - // will be imported and no new key will be created. - PublicKey string -} - -// ToKeyPairCreateMap constructs a request body from CreateOpts. -func (opts CreateOpts) ToKeyPairCreateMap() (map[string]interface{}, error) { - if opts.Name == "" { - return nil, errors.New("Missing field required for keypair creation: Name") - } - - keypair := make(map[string]interface{}) - keypair["name"] = opts.Name - if opts.PublicKey != "" { - keypair["public_key"] = opts.PublicKey - } - - return map[string]interface{}{"keypair": keypair}, nil -} - -// Create requests the creation of a new keypair on the server, or to import a pre-existing -// keypair. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) CreateResult { - var res CreateResult - - reqBody, err := opts.ToKeyPairCreateMap() - if err != nil { - res.Err = err - return res - } - - _, res.Err = client.Post(createURL(client), reqBody, &res.Body, &gophercloud.RequestOpts{ - OkCodes: []int{200}, - }) - return res -} - -// Get returns public data about a previously uploaded KeyPair. -func Get(client *gophercloud.ServiceClient, name string) GetResult { - var res GetResult - _, res.Err = client.Get(getURL(client, name), &res.Body, nil) - return res -} - -// Delete requests the deletion of a previous stored KeyPair from the server. -func Delete(client *gophercloud.ServiceClient, name string) DeleteResult { - var res DeleteResult - _, res.Err = client.Delete(deleteURL(client, name), nil) - return res -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/keypairs/results.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/keypairs/results.go deleted file mode 100644 index f1a0d8e1..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/keypairs/results.go +++ /dev/null @@ -1,94 +0,0 @@ -package keypairs - -import ( - "github.com/mitchellh/mapstructure" - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/pagination" -) - -// KeyPair is an SSH key known to the OpenStack cluster that is available to be injected into -// servers. -type KeyPair struct { - // Name is used to refer to this keypair from other services within this region. - Name string `mapstructure:"name"` - - // Fingerprint is a short sequence of bytes that can be used to authenticate or validate a longer - // public key. - Fingerprint string `mapstructure:"fingerprint"` - - // PublicKey is the public key from this pair, in OpenSSH format. "ssh-rsa AAAAB3Nz..." - PublicKey string `mapstructure:"public_key"` - - // PrivateKey is the private key from this pair, in PEM format. - // "-----BEGIN RSA PRIVATE KEY-----\nMIICXA..." It is only present if this keypair was just - // returned from a Create call - PrivateKey string `mapstructure:"private_key"` - - // UserID is the user who owns this keypair. - UserID string `mapstructure:"user_id"` -} - -// KeyPairPage stores a single, only page of KeyPair results from a List call. -type KeyPairPage struct { - pagination.SinglePageBase -} - -// IsEmpty determines whether or not a KeyPairPage is empty. -func (page KeyPairPage) IsEmpty() (bool, error) { - ks, err := ExtractKeyPairs(page) - return len(ks) == 0, err -} - -// ExtractKeyPairs interprets a page of results as a slice of KeyPairs. -func ExtractKeyPairs(page pagination.Page) ([]KeyPair, error) { - type pair struct { - KeyPair KeyPair `mapstructure:"keypair"` - } - - var resp struct { - KeyPairs []pair `mapstructure:"keypairs"` - } - - err := mapstructure.Decode(page.(KeyPairPage).Body, &resp) - results := make([]KeyPair, len(resp.KeyPairs)) - for i, pair := range resp.KeyPairs { - results[i] = pair.KeyPair - } - return results, err -} - -type keyPairResult struct { - gophercloud.Result -} - -// Extract is a method that attempts to interpret any KeyPair resource response as a KeyPair struct. -func (r keyPairResult) Extract() (*KeyPair, error) { - if r.Err != nil { - return nil, r.Err - } - - var res struct { - KeyPair *KeyPair `json:"keypair" mapstructure:"keypair"` - } - - err := mapstructure.Decode(r.Body, &res) - return res.KeyPair, err -} - -// CreateResult is the response from a Create operation. Call its Extract method to interpret it -// as a KeyPair. -type CreateResult struct { - keyPairResult -} - -// GetResult is the response from a Get operation. Call its Extract method to interpret it -// as a KeyPair. -type GetResult struct { - keyPairResult -} - -// DeleteResult is the response from a Delete operation. Call its Extract method to determine if -// the call succeeded or failed. -type DeleteResult struct { - gophercloud.ErrResult -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/keypairs/urls.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/keypairs/urls.go deleted file mode 100644 index 702f5329..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/keypairs/urls.go +++ /dev/null @@ -1,25 +0,0 @@ -package keypairs - -import "github.com/rackspace/gophercloud" - -const resourcePath = "os-keypairs" - -func resourceURL(c *gophercloud.ServiceClient) string { - return c.ServiceURL(resourcePath) -} - -func listURL(c *gophercloud.ServiceClient) string { - return resourceURL(c) -} - -func createURL(c *gophercloud.ServiceClient) string { - return resourceURL(c) -} - -func getURL(c *gophercloud.ServiceClient, name string) string { - return c.ServiceURL(resourcePath, name) -} - -func deleteURL(c *gophercloud.ServiceClient, name string) string { - return getURL(c, name) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/startstop/doc.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/startstop/doc.go deleted file mode 100644 index d2729f87..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/startstop/doc.go +++ /dev/null @@ -1,5 +0,0 @@ -/* -Package startstop provides functionality to start and stop servers that have -been provisioned by the OpenStack Compute service. -*/ -package startstop diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/startstop/fixtures.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/startstop/fixtures.go deleted file mode 100644 index 670828a9..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/startstop/fixtures.go +++ /dev/null @@ -1,27 +0,0 @@ -package startstop - -import ( - "net/http" - "testing" - - th "github.com/rackspace/gophercloud/testhelper" - "github.com/rackspace/gophercloud/testhelper/client" -) - -func mockStartServerResponse(t *testing.T, id string) { - th.Mux.HandleFunc("/servers/"+id+"/action", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "POST") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - th.TestJSONRequest(t, r, `{"os-start": null}`) - w.WriteHeader(http.StatusAccepted) - }) -} - -func mockStopServerResponse(t *testing.T, id string) { - th.Mux.HandleFunc("/servers/"+id+"/action", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "POST") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - th.TestJSONRequest(t, r, `{"os-stop": null}`) - w.WriteHeader(http.StatusAccepted) - }) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/startstop/requests.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/startstop/requests.go deleted file mode 100644 index 0e090e69..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/startstop/requests.go +++ /dev/null @@ -1,23 +0,0 @@ -package startstop - -import "github.com/rackspace/gophercloud" - -func actionURL(client *gophercloud.ServiceClient, id string) string { - return client.ServiceURL("servers", id, "action") -} - -// Start is the operation responsible for starting a Compute server. -func Start(client *gophercloud.ServiceClient, id string) gophercloud.ErrResult { - var res gophercloud.ErrResult - reqBody := map[string]interface{}{"os-start": nil} - _, res.Err = client.Post(actionURL(client, id), reqBody, nil, nil) - return res -} - -// Stop is the operation responsible for stopping a Compute server. -func Stop(client *gophercloud.ServiceClient, id string) gophercloud.ErrResult { - var res gophercloud.ErrResult - reqBody := map[string]interface{}{"os-stop": nil} - _, res.Err = client.Post(actionURL(client, id), reqBody, nil, nil) - return res -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/flavors/doc.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/flavors/doc.go deleted file mode 100644 index 5822e1bc..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/flavors/doc.go +++ /dev/null @@ -1,7 +0,0 @@ -// Package flavors provides information and interaction with the flavor API -// resource in the OpenStack Compute service. -// -// A flavor is an available hardware configuration for a server. Each flavor -// has a unique combination of disk space, memory capacity and priority for CPU -// time. -package flavors diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/flavors/requests.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/flavors/requests.go deleted file mode 100644 index 586be67a..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/flavors/requests.go +++ /dev/null @@ -1,68 +0,0 @@ -package flavors - -import ( - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/pagination" -) - -// ListOptsBuilder allows extensions to add additional parameters to the -// List request. -type ListOptsBuilder interface { - ToFlavorListQuery() (string, error) -} - -// ListOpts helps control the results returned by the List() function. -// For example, a flavor with a minDisk field of 10 will not be returned if you specify MinDisk set to 20. -// Typically, software will use the last ID of the previous call to List to set the Marker for the current call. -type ListOpts struct { - - // ChangesSince, if provided, instructs List to return only those things which have changed since the timestamp provided. - ChangesSince string `q:"changes-since"` - - // MinDisk and MinRAM, if provided, elides flavors which do not meet your criteria. - MinDisk int `q:"minDisk"` - MinRAM int `q:"minRam"` - - // Marker and Limit control paging. - // Marker instructs List where to start listing from. - Marker string `q:"marker"` - - // Limit instructs List to refrain from sending excessively large lists of flavors. - Limit int `q:"limit"` -} - -// ToFlavorListQuery formats a ListOpts into a query string. -func (opts ListOpts) ToFlavorListQuery() (string, error) { - q, err := gophercloud.BuildQueryString(opts) - if err != nil { - return "", err - } - return q.String(), nil -} - -// ListDetail instructs OpenStack to provide a list of flavors. -// You may provide criteria by which List curtails its results for easier processing. -// See ListOpts for more details. -func ListDetail(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { - url := listURL(client) - if opts != nil { - query, err := opts.ToFlavorListQuery() - if err != nil { - return pagination.Pager{Err: err} - } - url += query - } - createPage := func(r pagination.PageResult) pagination.Page { - return FlavorPage{pagination.LinkedPageBase{PageResult: r}} - } - - return pagination.NewPager(client, url, createPage) -} - -// Get instructs OpenStack to provide details on a single flavor, identified by its ID. -// Use ExtractFlavor to convert its result into a Flavor. -func Get(client *gophercloud.ServiceClient, id string) GetResult { - var res GetResult - _, res.Err = client.Get(getURL(client, id), &res.Body, nil) - return res -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/flavors/results.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/flavors/results.go deleted file mode 100644 index 8dddd705..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/flavors/results.go +++ /dev/null @@ -1,122 +0,0 @@ -package flavors - -import ( - "errors" - "reflect" - - "github.com/mitchellh/mapstructure" - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/pagination" -) - -// ErrCannotInterpret is returned by an Extract call if the response body doesn't have the expected structure. -var ErrCannotInterpet = errors.New("Unable to interpret a response body.") - -// GetResult temporarily holds the response from a Get call. -type GetResult struct { - gophercloud.Result -} - -// Extract provides access to the individual Flavor returned by the Get function. -func (gr GetResult) Extract() (*Flavor, error) { - if gr.Err != nil { - return nil, gr.Err - } - - var result struct { - Flavor Flavor `mapstructure:"flavor"` - } - - cfg := &mapstructure.DecoderConfig{ - DecodeHook: defaulter, - Result: &result, - } - decoder, err := mapstructure.NewDecoder(cfg) - if err != nil { - return nil, err - } - err = decoder.Decode(gr.Body) - return &result.Flavor, err -} - -// Flavor records represent (virtual) hardware configurations for server resources in a region. -type Flavor struct { - // The Id field contains the flavor's unique identifier. - // For example, this identifier will be useful when specifying which hardware configuration to use for a new server instance. - ID string `mapstructure:"id"` - - // The Disk and RA< fields provide a measure of storage space offered by the flavor, in GB and MB, respectively. - Disk int `mapstructure:"disk"` - RAM int `mapstructure:"ram"` - - // The Name field provides a human-readable moniker for the flavor. - Name string `mapstructure:"name"` - - RxTxFactor float64 `mapstructure:"rxtx_factor"` - - // Swap indicates how much space is reserved for swap. - // If not provided, this field will be set to 0. - Swap int `mapstructure:"swap"` - - // VCPUs indicates how many (virtual) CPUs are available for this flavor. - VCPUs int `mapstructure:"vcpus"` -} - -// FlavorPage contains a single page of the response from a List call. -type FlavorPage struct { - pagination.LinkedPageBase -} - -// IsEmpty determines if a page contains any results. -func (p FlavorPage) IsEmpty() (bool, error) { - flavors, err := ExtractFlavors(p) - if err != nil { - return true, err - } - return len(flavors) == 0, nil -} - -// NextPageURL uses the response's embedded link reference to navigate to the next page of results. -func (p FlavorPage) NextPageURL() (string, error) { - type resp struct { - Links []gophercloud.Link `mapstructure:"flavors_links"` - } - - var r resp - err := mapstructure.Decode(p.Body, &r) - if err != nil { - return "", err - } - - return gophercloud.ExtractNextURL(r.Links) -} - -func defaulter(from, to reflect.Kind, v interface{}) (interface{}, error) { - if (from == reflect.String) && (to == reflect.Int) { - return 0, nil - } - return v, nil -} - -// ExtractFlavors provides access to the list of flavors in a page acquired from the List operation. -func ExtractFlavors(page pagination.Page) ([]Flavor, error) { - casted := page.(FlavorPage).Body - var container struct { - Flavors []Flavor `mapstructure:"flavors"` - } - - cfg := &mapstructure.DecoderConfig{ - DecodeHook: defaulter, - Result: &container, - } - decoder, err := mapstructure.NewDecoder(cfg) - if err != nil { - return container.Flavors, err - } - err = decoder.Decode(casted) - if err != nil { - return container.Flavors, err - } - - return container.Flavors, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/flavors/urls.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/flavors/urls.go deleted file mode 100644 index 683c107d..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/flavors/urls.go +++ /dev/null @@ -1,13 +0,0 @@ -package flavors - -import ( - "github.com/rackspace/gophercloud" -) - -func getURL(client *gophercloud.ServiceClient, id string) string { - return client.ServiceURL("flavors", id) -} - -func listURL(client *gophercloud.ServiceClient) string { - return client.ServiceURL("flavors", "detail") -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/images/doc.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/images/doc.go deleted file mode 100644 index 0edaa3f0..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/images/doc.go +++ /dev/null @@ -1,7 +0,0 @@ -// Package images provides information and interaction with the image API -// resource in the OpenStack Compute service. -// -// An image is a collection of files used to create or rebuild a server. -// Operators provide a number of pre-built OS images by default. You may also -// create custom images from cloud servers you have launched. -package images diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/images/requests.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/images/requests.go deleted file mode 100644 index 5eb19b5a..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/images/requests.go +++ /dev/null @@ -1,65 +0,0 @@ -package images - -import ( - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/pagination" -) - -// ListOptsBuilder allows extensions to add additional parameters to the -// List request. -type ListOptsBuilder interface { - ToImageListQuery() (string, error) -} - -// ListOpts contain options for limiting the number of Images returned from a call to ListDetail. -type ListOpts struct { - // When the image last changed status (in date-time format). - ChangesSince string `q:"changes-since"` - // The number of Images to return. - Limit int `q:"limit"` - // UUID of the Image at which to set a marker. - Marker string `q:"marker"` - // The name of the Image. - Name string `q:"name"` - // The name of the Server (in URL format). - Server string `q:"server"` - // The current status of the Image. - Status string `q:"status"` - // The value of the type of image (e.g. BASE, SERVER, ALL) - Type string `q:"type"` -} - -// ToImageListQuery formats a ListOpts into a query string. -func (opts ListOpts) ToImageListQuery() (string, error) { - q, err := gophercloud.BuildQueryString(opts) - if err != nil { - return "", err - } - return q.String(), nil -} - -// ListDetail enumerates the available images. -func ListDetail(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { - url := listDetailURL(client) - if opts != nil { - query, err := opts.ToImageListQuery() - if err != nil { - return pagination.Pager{Err: err} - } - url += query - } - - createPage := func(r pagination.PageResult) pagination.Page { - return ImagePage{pagination.LinkedPageBase{PageResult: r}} - } - - return pagination.NewPager(client, url, createPage) -} - -// Get acquires additional detail about a specific image by ID. -// Use ExtractImage() to interpret the result as an openstack Image. -func Get(client *gophercloud.ServiceClient, id string) GetResult { - var result GetResult - _, result.Err = client.Get(getURL(client, id), &result.Body, nil) - return result -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/images/results.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/images/results.go deleted file mode 100644 index 493d5119..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/images/results.go +++ /dev/null @@ -1,90 +0,0 @@ -package images - -import ( - "github.com/mitchellh/mapstructure" - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/pagination" -) - -// GetResult temporarily stores a Get response. -type GetResult struct { - gophercloud.Result -} - -// Extract interprets a GetResult as an Image. -func (gr GetResult) Extract() (*Image, error) { - if gr.Err != nil { - return nil, gr.Err - } - - var decoded struct { - Image Image `mapstructure:"image"` - } - - err := mapstructure.Decode(gr.Body, &decoded) - return &decoded.Image, err -} - -// Image is used for JSON (un)marshalling. -// It provides a description of an OS image. -type Image struct { - // ID contains the image's unique identifier. - ID string - - Created string - - // MinDisk and MinRAM specify the minimum resources a server must provide to be able to install the image. - MinDisk int - MinRAM int - - // Name provides a human-readable moniker for the OS image. - Name string - - // The Progress and Status fields indicate image-creation status. - // Any usable image will have 100% progress. - Progress int - Status string - - Updated string -} - -// ImagePage contains a single page of results from a List operation. -// Use ExtractImages to convert it into a slice of usable structs. -type ImagePage struct { - pagination.LinkedPageBase -} - -// IsEmpty returns true if a page contains no Image results. -func (page ImagePage) IsEmpty() (bool, error) { - images, err := ExtractImages(page) - if err != nil { - return true, err - } - return len(images) == 0, nil -} - -// NextPageURL uses the response's embedded link reference to navigate to the next page of results. -func (page ImagePage) NextPageURL() (string, error) { - type resp struct { - Links []gophercloud.Link `mapstructure:"images_links"` - } - - var r resp - err := mapstructure.Decode(page.Body, &r) - if err != nil { - return "", err - } - - return gophercloud.ExtractNextURL(r.Links) -} - -// ExtractImages converts a page of List results into a slice of usable Image structs. -func ExtractImages(page pagination.Page) ([]Image, error) { - casted := page.(ImagePage).Body - var results struct { - Images []Image `mapstructure:"images"` - } - - err := mapstructure.Decode(casted, &results) - return results.Images, err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/images/urls.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/images/urls.go deleted file mode 100644 index 9b3c86d4..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/images/urls.go +++ /dev/null @@ -1,11 +0,0 @@ -package images - -import "github.com/rackspace/gophercloud" - -func listDetailURL(client *gophercloud.ServiceClient) string { - return client.ServiceURL("images", "detail") -} - -func getURL(client *gophercloud.ServiceClient, id string) string { - return client.ServiceURL("images", id) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/servers/doc.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/servers/doc.go deleted file mode 100644 index fe456712..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/servers/doc.go +++ /dev/null @@ -1,6 +0,0 @@ -// Package servers provides information and interaction with the server API -// resource in the OpenStack Compute service. -// -// A server is a virtual machine instance in the compute system. In order for -// one to be provisioned, a valid flavor and image are required. -package servers diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/servers/fixtures.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/servers/fixtures.go deleted file mode 100644 index e47bc0e8..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/servers/fixtures.go +++ /dev/null @@ -1,653 +0,0 @@ -// +build fixtures - -package servers - -import ( - "fmt" - "net/http" - "testing" - - th "github.com/rackspace/gophercloud/testhelper" - "github.com/rackspace/gophercloud/testhelper/client" -) - -// ServerListBody contains the canned body of a servers.List response. -const ServerListBody = ` -{ - "servers": [ - { - "status": "ACTIVE", - "updated": "2014-09-25T13:10:10Z", - "hostId": "29d3c8c896a45aa4c34e52247875d7fefc3d94bbcc9f622b5d204362", - "OS-EXT-SRV-ATTR:host": "devstack", - "addresses": { - "private": [ - { - "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:7c:1b:2b", - "version": 4, - "addr": "10.0.0.32", - "OS-EXT-IPS:type": "fixed" - } - ] - }, - "links": [ - { - "href": "http://104.130.131.164:8774/v2/fcad67a6189847c4aecfa3c81a05783b/servers/ef079b0c-e610-4dfb-b1aa-b49f07ac48e5", - "rel": "self" - }, - { - "href": "http://104.130.131.164:8774/fcad67a6189847c4aecfa3c81a05783b/servers/ef079b0c-e610-4dfb-b1aa-b49f07ac48e5", - "rel": "bookmark" - } - ], - "key_name": null, - "image": { - "id": "f90f6034-2570-4974-8351-6b49732ef2eb", - "links": [ - { - "href": "http://104.130.131.164:8774/fcad67a6189847c4aecfa3c81a05783b/images/f90f6034-2570-4974-8351-6b49732ef2eb", - "rel": "bookmark" - } - ] - }, - "OS-EXT-STS:task_state": null, - "OS-EXT-STS:vm_state": "active", - "OS-EXT-SRV-ATTR:instance_name": "instance-0000001e", - "OS-SRV-USG:launched_at": "2014-09-25T13:10:10.000000", - "OS-EXT-SRV-ATTR:hypervisor_hostname": "devstack", - "flavor": { - "id": "1", - "links": [ - { - "href": "http://104.130.131.164:8774/fcad67a6189847c4aecfa3c81a05783b/flavors/1", - "rel": "bookmark" - } - ] - }, - "id": "ef079b0c-e610-4dfb-b1aa-b49f07ac48e5", - "security_groups": [ - { - "name": "default" - } - ], - "OS-SRV-USG:terminated_at": null, - "OS-EXT-AZ:availability_zone": "nova", - "user_id": "9349aff8be7545ac9d2f1d00999a23cd", - "name": "herp", - "created": "2014-09-25T13:10:02Z", - "tenant_id": "fcad67a6189847c4aecfa3c81a05783b", - "OS-DCF:diskConfig": "MANUAL", - "os-extended-volumes:volumes_attached": [], - "accessIPv4": "", - "accessIPv6": "", - "progress": 0, - "OS-EXT-STS:power_state": 1, - "config_drive": "", - "metadata": {} - }, - { - "status": "ACTIVE", - "updated": "2014-09-25T13:04:49Z", - "hostId": "29d3c8c896a45aa4c34e52247875d7fefc3d94bbcc9f622b5d204362", - "OS-EXT-SRV-ATTR:host": "devstack", - "addresses": { - "private": [ - { - "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:9e:89:be", - "version": 4, - "addr": "10.0.0.31", - "OS-EXT-IPS:type": "fixed" - } - ] - }, - "links": [ - { - "href": "http://104.130.131.164:8774/v2/fcad67a6189847c4aecfa3c81a05783b/servers/9e5476bd-a4ec-4653-93d6-72c93aa682ba", - "rel": "self" - }, - { - "href": "http://104.130.131.164:8774/fcad67a6189847c4aecfa3c81a05783b/servers/9e5476bd-a4ec-4653-93d6-72c93aa682ba", - "rel": "bookmark" - } - ], - "key_name": null, - "image": { - "id": "f90f6034-2570-4974-8351-6b49732ef2eb", - "links": [ - { - "href": "http://104.130.131.164:8774/fcad67a6189847c4aecfa3c81a05783b/images/f90f6034-2570-4974-8351-6b49732ef2eb", - "rel": "bookmark" - } - ] - }, - "OS-EXT-STS:task_state": null, - "OS-EXT-STS:vm_state": "active", - "OS-EXT-SRV-ATTR:instance_name": "instance-0000001d", - "OS-SRV-USG:launched_at": "2014-09-25T13:04:49.000000", - "OS-EXT-SRV-ATTR:hypervisor_hostname": "devstack", - "flavor": { - "id": "1", - "links": [ - { - "href": "http://104.130.131.164:8774/fcad67a6189847c4aecfa3c81a05783b/flavors/1", - "rel": "bookmark" - } - ] - }, - "id": "9e5476bd-a4ec-4653-93d6-72c93aa682ba", - "security_groups": [ - { - "name": "default" - } - ], - "OS-SRV-USG:terminated_at": null, - "OS-EXT-AZ:availability_zone": "nova", - "user_id": "9349aff8be7545ac9d2f1d00999a23cd", - "name": "derp", - "created": "2014-09-25T13:04:41Z", - "tenant_id": "fcad67a6189847c4aecfa3c81a05783b", - "OS-DCF:diskConfig": "MANUAL", - "os-extended-volumes:volumes_attached": [], - "accessIPv4": "", - "accessIPv6": "", - "progress": 0, - "OS-EXT-STS:power_state": 1, - "config_drive": "", - "metadata": {} - } - ] -} -` - -// SingleServerBody is the canned body of a Get request on an existing server. -const SingleServerBody = ` -{ - "server": { - "status": "ACTIVE", - "updated": "2014-09-25T13:04:49Z", - "hostId": "29d3c8c896a45aa4c34e52247875d7fefc3d94bbcc9f622b5d204362", - "OS-EXT-SRV-ATTR:host": "devstack", - "addresses": { - "private": [ - { - "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:9e:89:be", - "version": 4, - "addr": "10.0.0.31", - "OS-EXT-IPS:type": "fixed" - } - ] - }, - "links": [ - { - "href": "http://104.130.131.164:8774/v2/fcad67a6189847c4aecfa3c81a05783b/servers/9e5476bd-a4ec-4653-93d6-72c93aa682ba", - "rel": "self" - }, - { - "href": "http://104.130.131.164:8774/fcad67a6189847c4aecfa3c81a05783b/servers/9e5476bd-a4ec-4653-93d6-72c93aa682ba", - "rel": "bookmark" - } - ], - "key_name": null, - "image": { - "id": "f90f6034-2570-4974-8351-6b49732ef2eb", - "links": [ - { - "href": "http://104.130.131.164:8774/fcad67a6189847c4aecfa3c81a05783b/images/f90f6034-2570-4974-8351-6b49732ef2eb", - "rel": "bookmark" - } - ] - }, - "OS-EXT-STS:task_state": null, - "OS-EXT-STS:vm_state": "active", - "OS-EXT-SRV-ATTR:instance_name": "instance-0000001d", - "OS-SRV-USG:launched_at": "2014-09-25T13:04:49.000000", - "OS-EXT-SRV-ATTR:hypervisor_hostname": "devstack", - "flavor": { - "id": "1", - "links": [ - { - "href": "http://104.130.131.164:8774/fcad67a6189847c4aecfa3c81a05783b/flavors/1", - "rel": "bookmark" - } - ] - }, - "id": "9e5476bd-a4ec-4653-93d6-72c93aa682ba", - "security_groups": [ - { - "name": "default" - } - ], - "OS-SRV-USG:terminated_at": null, - "OS-EXT-AZ:availability_zone": "nova", - "user_id": "9349aff8be7545ac9d2f1d00999a23cd", - "name": "derp", - "created": "2014-09-25T13:04:41Z", - "tenant_id": "fcad67a6189847c4aecfa3c81a05783b", - "OS-DCF:diskConfig": "MANUAL", - "os-extended-volumes:volumes_attached": [], - "accessIPv4": "", - "accessIPv6": "", - "progress": 0, - "OS-EXT-STS:power_state": 1, - "config_drive": "", - "metadata": {} - } -} -` - -var ( - // ServerHerp is a Server struct that should correspond to the first result in ServerListBody. - ServerHerp = Server{ - Status: "ACTIVE", - Updated: "2014-09-25T13:10:10Z", - HostID: "29d3c8c896a45aa4c34e52247875d7fefc3d94bbcc9f622b5d204362", - Addresses: map[string]interface{}{ - "private": []interface{}{ - map[string]interface{}{ - "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:7c:1b:2b", - "version": float64(4), - "addr": "10.0.0.32", - "OS-EXT-IPS:type": "fixed", - }, - }, - }, - Links: []interface{}{ - map[string]interface{}{ - "href": "http://104.130.131.164:8774/v2/fcad67a6189847c4aecfa3c81a05783b/servers/ef079b0c-e610-4dfb-b1aa-b49f07ac48e5", - "rel": "self", - }, - map[string]interface{}{ - "href": "http://104.130.131.164:8774/fcad67a6189847c4aecfa3c81a05783b/servers/ef079b0c-e610-4dfb-b1aa-b49f07ac48e5", - "rel": "bookmark", - }, - }, - Image: map[string]interface{}{ - "id": "f90f6034-2570-4974-8351-6b49732ef2eb", - "links": []interface{}{ - map[string]interface{}{ - "href": "http://104.130.131.164:8774/fcad67a6189847c4aecfa3c81a05783b/images/f90f6034-2570-4974-8351-6b49732ef2eb", - "rel": "bookmark", - }, - }, - }, - Flavor: map[string]interface{}{ - "id": "1", - "links": []interface{}{ - map[string]interface{}{ - "href": "http://104.130.131.164:8774/fcad67a6189847c4aecfa3c81a05783b/flavors/1", - "rel": "bookmark", - }, - }, - }, - ID: "ef079b0c-e610-4dfb-b1aa-b49f07ac48e5", - UserID: "9349aff8be7545ac9d2f1d00999a23cd", - Name: "herp", - Created: "2014-09-25T13:10:02Z", - TenantID: "fcad67a6189847c4aecfa3c81a05783b", - Metadata: map[string]interface{}{}, - SecurityGroups: []map[string]interface{}{ - map[string]interface{}{ - "name": "default", - }, - }, - } - - // ServerDerp is a Server struct that should correspond to the second server in ServerListBody. - ServerDerp = Server{ - Status: "ACTIVE", - Updated: "2014-09-25T13:04:49Z", - HostID: "29d3c8c896a45aa4c34e52247875d7fefc3d94bbcc9f622b5d204362", - Addresses: map[string]interface{}{ - "private": []interface{}{ - map[string]interface{}{ - "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:9e:89:be", - "version": float64(4), - "addr": "10.0.0.31", - "OS-EXT-IPS:type": "fixed", - }, - }, - }, - Links: []interface{}{ - map[string]interface{}{ - "href": "http://104.130.131.164:8774/v2/fcad67a6189847c4aecfa3c81a05783b/servers/9e5476bd-a4ec-4653-93d6-72c93aa682ba", - "rel": "self", - }, - map[string]interface{}{ - "href": "http://104.130.131.164:8774/fcad67a6189847c4aecfa3c81a05783b/servers/9e5476bd-a4ec-4653-93d6-72c93aa682ba", - "rel": "bookmark", - }, - }, - Image: map[string]interface{}{ - "id": "f90f6034-2570-4974-8351-6b49732ef2eb", - "links": []interface{}{ - map[string]interface{}{ - "href": "http://104.130.131.164:8774/fcad67a6189847c4aecfa3c81a05783b/images/f90f6034-2570-4974-8351-6b49732ef2eb", - "rel": "bookmark", - }, - }, - }, - Flavor: map[string]interface{}{ - "id": "1", - "links": []interface{}{ - map[string]interface{}{ - "href": "http://104.130.131.164:8774/fcad67a6189847c4aecfa3c81a05783b/flavors/1", - "rel": "bookmark", - }, - }, - }, - ID: "9e5476bd-a4ec-4653-93d6-72c93aa682ba", - UserID: "9349aff8be7545ac9d2f1d00999a23cd", - Name: "derp", - Created: "2014-09-25T13:04:41Z", - TenantID: "fcad67a6189847c4aecfa3c81a05783b", - Metadata: map[string]interface{}{}, - SecurityGroups: []map[string]interface{}{ - map[string]interface{}{ - "name": "default", - }, - }, - } -) - -// HandleServerCreationSuccessfully sets up the test server to respond to a server creation request -// with a given response. -func HandleServerCreationSuccessfully(t *testing.T, response string) { - th.Mux.HandleFunc("/servers", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "POST") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - th.TestJSONRequest(t, r, `{ - "server": { - "name": "derp", - "imageRef": "f90f6034-2570-4974-8351-6b49732ef2eb", - "flavorRef": "1" - } - }`) - - w.WriteHeader(http.StatusAccepted) - w.Header().Add("Content-Type", "application/json") - fmt.Fprintf(w, response) - }) -} - -// HandleServerListSuccessfully sets up the test server to respond to a server List request. -func HandleServerListSuccessfully(t *testing.T) { - th.Mux.HandleFunc("/servers/detail", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "GET") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - - w.Header().Add("Content-Type", "application/json") - r.ParseForm() - marker := r.Form.Get("marker") - switch marker { - case "": - fmt.Fprintf(w, ServerListBody) - case "9e5476bd-a4ec-4653-93d6-72c93aa682ba": - fmt.Fprintf(w, `{ "servers": [] }`) - default: - t.Fatalf("/servers/detail invoked with unexpected marker=[%s]", marker) - } - }) -} - -// HandleServerDeletionSuccessfully sets up the test server to respond to a server deletion request. -func HandleServerDeletionSuccessfully(t *testing.T) { - th.Mux.HandleFunc("/servers/asdfasdfasdf", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "DELETE") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - - w.WriteHeader(http.StatusNoContent) - }) -} - -// HandleServerGetSuccessfully sets up the test server to respond to a server Get request. -func HandleServerGetSuccessfully(t *testing.T) { - th.Mux.HandleFunc("/servers/1234asdf", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "GET") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - th.TestHeader(t, r, "Accept", "application/json") - - fmt.Fprintf(w, SingleServerBody) - }) -} - -// HandleServerUpdateSuccessfully sets up the test server to respond to a server Update request. -func HandleServerUpdateSuccessfully(t *testing.T) { - th.Mux.HandleFunc("/servers/1234asdf", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "PUT") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - th.TestHeader(t, r, "Accept", "application/json") - th.TestHeader(t, r, "Content-Type", "application/json") - th.TestJSONRequest(t, r, `{ "server": { "name": "new-name" } }`) - - fmt.Fprintf(w, SingleServerBody) - }) -} - -// HandleAdminPasswordChangeSuccessfully sets up the test server to respond to a server password -// change request. -func HandleAdminPasswordChangeSuccessfully(t *testing.T) { - th.Mux.HandleFunc("/servers/1234asdf/action", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "POST") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - th.TestJSONRequest(t, r, `{ "changePassword": { "adminPass": "new-password" } }`) - - w.WriteHeader(http.StatusAccepted) - }) -} - -// HandleRebootSuccessfully sets up the test server to respond to a reboot request with success. -func HandleRebootSuccessfully(t *testing.T) { - th.Mux.HandleFunc("/servers/1234asdf/action", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "POST") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - th.TestJSONRequest(t, r, `{ "reboot": { "type": "SOFT" } }`) - - w.WriteHeader(http.StatusAccepted) - }) -} - -// HandleRebuildSuccessfully sets up the test server to respond to a rebuild request with success. -func HandleRebuildSuccessfully(t *testing.T, response string) { - th.Mux.HandleFunc("/servers/1234asdf/action", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "POST") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - th.TestJSONRequest(t, r, ` - { - "rebuild": { - "name": "new-name", - "adminPass": "swordfish", - "imageRef": "http://104.130.131.164:8774/fcad67a6189847c4aecfa3c81a05783b/images/f90f6034-2570-4974-8351-6b49732ef2eb", - "accessIPv4": "1.2.3.4" - } - } - `) - - w.WriteHeader(http.StatusAccepted) - w.Header().Add("Content-Type", "application/json") - fmt.Fprintf(w, response) - }) -} - -// HandleServerRescueSuccessfully sets up the test server to respond to a server Rescue request. -func HandleServerRescueSuccessfully(t *testing.T) { - th.Mux.HandleFunc("/servers/1234asdf/action", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "POST") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - th.TestJSONRequest(t, r, `{ "rescue": { "adminPass": "1234567890" } }`) - - w.WriteHeader(http.StatusOK) - w.Write([]byte(`{ "adminPass": "1234567890" }`)) - }) -} - -// HandleMetadatumGetSuccessfully sets up the test server to respond to a metadatum Get request. -func HandleMetadatumGetSuccessfully(t *testing.T) { - th.Mux.HandleFunc("/servers/1234asdf/metadata/foo", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "GET") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - th.TestHeader(t, r, "Accept", "application/json") - - w.WriteHeader(http.StatusOK) - w.Header().Add("Content-Type", "application/json") - w.Write([]byte(`{ "meta": {"foo":"bar"}}`)) - }) -} - -// HandleMetadatumCreateSuccessfully sets up the test server to respond to a metadatum Create request. -func HandleMetadatumCreateSuccessfully(t *testing.T) { - th.Mux.HandleFunc("/servers/1234asdf/metadata/foo", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "PUT") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - th.TestJSONRequest(t, r, `{ - "meta": { - "foo": "bar" - } - }`) - - w.WriteHeader(http.StatusOK) - w.Header().Add("Content-Type", "application/json") - w.Write([]byte(`{ "meta": {"foo":"bar"}}`)) - }) -} - -// HandleMetadatumDeleteSuccessfully sets up the test server to respond to a metadatum Delete request. -func HandleMetadatumDeleteSuccessfully(t *testing.T) { - th.Mux.HandleFunc("/servers/1234asdf/metadata/foo", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "DELETE") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - - w.WriteHeader(http.StatusNoContent) - }) -} - -// HandleMetadataGetSuccessfully sets up the test server to respond to a metadata Get request. -func HandleMetadataGetSuccessfully(t *testing.T) { - th.Mux.HandleFunc("/servers/1234asdf/metadata", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "GET") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - th.TestHeader(t, r, "Accept", "application/json") - - w.WriteHeader(http.StatusOK) - w.Write([]byte(`{ "metadata": {"foo":"bar", "this":"that"}}`)) - }) -} - -// HandleMetadataResetSuccessfully sets up the test server to respond to a metadata Create request. -func HandleMetadataResetSuccessfully(t *testing.T) { - th.Mux.HandleFunc("/servers/1234asdf/metadata", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "PUT") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - th.TestJSONRequest(t, r, `{ - "metadata": { - "foo": "bar", - "this": "that" - } - }`) - - w.WriteHeader(http.StatusOK) - w.Header().Add("Content-Type", "application/json") - w.Write([]byte(`{ "metadata": {"foo":"bar", "this":"that"}}`)) - }) -} - -// HandleMetadataUpdateSuccessfully sets up the test server to respond to a metadata Update request. -func HandleMetadataUpdateSuccessfully(t *testing.T) { - th.Mux.HandleFunc("/servers/1234asdf/metadata", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "POST") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - th.TestJSONRequest(t, r, `{ - "metadata": { - "foo": "baz", - "this": "those" - } - }`) - - w.WriteHeader(http.StatusOK) - w.Header().Add("Content-Type", "application/json") - w.Write([]byte(`{ "metadata": {"foo":"baz", "this":"those"}}`)) - }) -} - -// ListAddressesExpected represents an expected repsonse from a ListAddresses request. -var ListAddressesExpected = map[string][]Address{ - "public": []Address{ - Address{ - Version: 4, - Address: "80.56.136.39", - }, - Address{ - Version: 6, - Address: "2001:4800:790e:510:be76:4eff:fe04:82a8", - }, - }, - "private": []Address{ - Address{ - Version: 4, - Address: "10.880.3.154", - }, - }, -} - -// HandleAddressListSuccessfully sets up the test server to respond to a ListAddresses request. -func HandleAddressListSuccessfully(t *testing.T) { - th.Mux.HandleFunc("/servers/asdfasdfasdf/ips", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "GET") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - - w.Header().Add("Content-Type", "application/json") - fmt.Fprintf(w, `{ - "addresses": { - "public": [ - { - "version": 4, - "addr": "50.56.176.35" - }, - { - "version": 6, - "addr": "2001:4800:780e:510:be76:4eff:fe04:84a8" - } - ], - "private": [ - { - "version": 4, - "addr": "10.180.3.155" - } - ] - } - }`) - }) -} - -// ListNetworkAddressesExpected represents an expected repsonse from a ListAddressesByNetwork request. -var ListNetworkAddressesExpected = []Address{ - Address{ - Version: 4, - Address: "50.56.176.35", - }, - Address{ - Version: 6, - Address: "2001:4800:780e:510:be76:4eff:fe04:84a8", - }, -} - -// HandleNetworkAddressListSuccessfully sets up the test server to respond to a ListAddressesByNetwork request. -func HandleNetworkAddressListSuccessfully(t *testing.T) { - th.Mux.HandleFunc("/servers/asdfasdfasdf/ips/public", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "GET") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - - w.Header().Add("Content-Type", "application/json") - fmt.Fprintf(w, `{ - "public": [ - { - "version": 4, - "addr": "50.56.176.35" - }, - { - "version": 6, - "addr": "2001:4800:780e:510:be76:4eff:fe04:84a8" - } - ] - }`) - }) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/servers/requests.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/servers/requests.go deleted file mode 100644 index e0950e4e..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/servers/requests.go +++ /dev/null @@ -1,703 +0,0 @@ -package servers - -import ( - "encoding/base64" - "errors" - "fmt" - - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/pagination" -) - -// ListOptsBuilder allows extensions to add additional parameters to the -// List request. -type ListOptsBuilder interface { - ToServerListQuery() (string, error) -} - -// ListOpts allows the filtering and sorting of paginated collections through -// the API. Filtering is achieved by passing in struct field values that map to -// the server attributes you want to see returned. Marker and Limit are used -// for pagination. -type ListOpts struct { - // A time/date stamp for when the server last changed status. - ChangesSince string `q:"changes-since"` - - // Name of the image in URL format. - Image string `q:"image"` - - // Name of the flavor in URL format. - Flavor string `q:"flavor"` - - // Name of the server as a string; can be queried with regular expressions. - // Realize that ?name=bob returns both bob and bobb. If you need to match bob - // only, you can use a regular expression matching the syntax of the - // underlying database server implemented for Compute. - Name string `q:"name"` - - // Value of the status of the server so that you can filter on "ACTIVE" for example. - Status string `q:"status"` - - // Name of the host as a string. - Host string `q:"host"` - - // UUID of the server at which you want to set a marker. - Marker string `q:"marker"` - - // Integer value for the limit of values to return. - Limit int `q:"limit"` -} - -// ToServerListQuery formats a ListOpts into a query string. -func (opts ListOpts) ToServerListQuery() (string, error) { - q, err := gophercloud.BuildQueryString(opts) - if err != nil { - return "", err - } - return q.String(), nil -} - -// List makes a request against the API to list servers accessible to you. -func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { - url := listDetailURL(client) - - if opts != nil { - query, err := opts.ToServerListQuery() - if err != nil { - return pagination.Pager{Err: err} - } - url += query - } - - createPageFn := func(r pagination.PageResult) pagination.Page { - return ServerPage{pagination.LinkedPageBase{PageResult: r}} - } - - return pagination.NewPager(client, url, createPageFn) -} - -// CreateOptsBuilder describes struct types that can be accepted by the Create call. -// The CreateOpts struct in this package does. -type CreateOptsBuilder interface { - ToServerCreateMap() (map[string]interface{}, error) -} - -// Network is used within CreateOpts to control a new server's network attachments. -type Network struct { - // UUID of a nova-network to attach to the newly provisioned server. - // Required unless Port is provided. - UUID string - - // Port of a neutron network to attach to the newly provisioned server. - // Required unless UUID is provided. - Port string - - // FixedIP [optional] specifies a fixed IPv4 address to be used on this network. - FixedIP string -} - -// CreateOpts specifies server creation parameters. -type CreateOpts struct { - // Name [required] is the name to assign to the newly launched server. - Name string - - // ImageRef [required] is the ID or full URL to the image that contains the server's OS and initial state. - // Optional if using the boot-from-volume extension. - ImageRef string - - // FlavorRef [required] is the ID or full URL to the flavor that describes the server's specs. - FlavorRef string - - // SecurityGroups [optional] lists the names of the security groups to which this server should belong. - SecurityGroups []string - - // UserData [optional] contains configuration information or scripts to use upon launch. - // Create will base64-encode it for you. - UserData []byte - - // AvailabilityZone [optional] in which to launch the server. - AvailabilityZone string - - // Networks [optional] dictates how this server will be attached to available networks. - // By default, the server will be attached to all isolated networks for the tenant. - Networks []Network - - // Metadata [optional] contains key-value pairs (up to 255 bytes each) to attach to the server. - Metadata map[string]string - - // Personality [optional] includes the path and contents of a file to inject into the server at launch. - // The maximum size of the file is 255 bytes (decoded). - Personality []byte - - // ConfigDrive [optional] enables metadata injection through a configuration drive. - ConfigDrive bool - - // AdminPass [optional] sets the root user password. If not set, a randomly-generated - // password will be created and returned in the response. - AdminPass string - - // AccessIPv4 [optional] specifies an IPv4 address for the instance. - AccessIPv4 string - - // AccessIPv6 [optional] specifies an IPv6 address for the instance. - AccessIPv6 string -} - -// ToServerCreateMap assembles a request body based on the contents of a CreateOpts. -func (opts CreateOpts) ToServerCreateMap() (map[string]interface{}, error) { - server := make(map[string]interface{}) - - server["name"] = opts.Name - server["imageRef"] = opts.ImageRef - server["flavorRef"] = opts.FlavorRef - - if opts.UserData != nil { - encoded := base64.StdEncoding.EncodeToString(opts.UserData) - server["user_data"] = &encoded - } - if opts.Personality != nil { - encoded := base64.StdEncoding.EncodeToString(opts.Personality) - server["personality"] = &encoded - } - if opts.ConfigDrive { - server["config_drive"] = "true" - } - if opts.AvailabilityZone != "" { - server["availability_zone"] = opts.AvailabilityZone - } - if opts.Metadata != nil { - server["metadata"] = opts.Metadata - } - if opts.AdminPass != "" { - server["adminPass"] = opts.AdminPass - } - if opts.AccessIPv4 != "" { - server["accessIPv4"] = opts.AccessIPv4 - } - if opts.AccessIPv6 != "" { - server["accessIPv6"] = opts.AccessIPv6 - } - - if len(opts.SecurityGroups) > 0 { - securityGroups := make([]map[string]interface{}, len(opts.SecurityGroups)) - for i, groupName := range opts.SecurityGroups { - securityGroups[i] = map[string]interface{}{"name": groupName} - } - server["security_groups"] = securityGroups - } - - if len(opts.Networks) > 0 { - networks := make([]map[string]interface{}, len(opts.Networks)) - for i, net := range opts.Networks { - networks[i] = make(map[string]interface{}) - if net.UUID != "" { - networks[i]["uuid"] = net.UUID - } - if net.Port != "" { - networks[i]["port"] = net.Port - } - if net.FixedIP != "" { - networks[i]["fixed_ip"] = net.FixedIP - } - } - server["networks"] = networks - } - - return map[string]interface{}{"server": server}, nil -} - -// Create requests a server to be provisioned to the user in the current tenant. -func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) CreateResult { - var res CreateResult - - reqBody, err := opts.ToServerCreateMap() - if err != nil { - res.Err = err - return res - } - - _, res.Err = client.Post(listURL(client), reqBody, &res.Body, nil) - return res -} - -// Delete requests that a server previously provisioned be removed from your account. -func Delete(client *gophercloud.ServiceClient, id string) DeleteResult { - var res DeleteResult - _, res.Err = client.Delete(deleteURL(client, id), nil) - return res -} - -// Get requests details on a single server, by ID. -func Get(client *gophercloud.ServiceClient, id string) GetResult { - var result GetResult - _, result.Err = client.Get(getURL(client, id), &result.Body, &gophercloud.RequestOpts{ - OkCodes: []int{200, 203}, - }) - return result -} - -// UpdateOptsBuilder allows extensions to add additional attributes to the Update request. -type UpdateOptsBuilder interface { - ToServerUpdateMap() map[string]interface{} -} - -// UpdateOpts specifies the base attributes that may be updated on an existing server. -type UpdateOpts struct { - // Name [optional] changes the displayed name of the server. - // The server host name will *not* change. - // Server names are not constrained to be unique, even within the same tenant. - Name string - - // AccessIPv4 [optional] provides a new IPv4 address for the instance. - AccessIPv4 string - - // AccessIPv6 [optional] provides a new IPv6 address for the instance. - AccessIPv6 string -} - -// ToServerUpdateMap formats an UpdateOpts structure into a request body. -func (opts UpdateOpts) ToServerUpdateMap() map[string]interface{} { - server := make(map[string]string) - if opts.Name != "" { - server["name"] = opts.Name - } - if opts.AccessIPv4 != "" { - server["accessIPv4"] = opts.AccessIPv4 - } - if opts.AccessIPv6 != "" { - server["accessIPv6"] = opts.AccessIPv6 - } - return map[string]interface{}{"server": server} -} - -// Update requests that various attributes of the indicated server be changed. -func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) UpdateResult { - var result UpdateResult - reqBody := opts.ToServerUpdateMap() - _, result.Err = client.Put(updateURL(client, id), reqBody, &result.Body, &gophercloud.RequestOpts{ - OkCodes: []int{200}, - }) - return result -} - -// ChangeAdminPassword alters the administrator or root password for a specified server. -func ChangeAdminPassword(client *gophercloud.ServiceClient, id, newPassword string) ActionResult { - var req struct { - ChangePassword struct { - AdminPass string `json:"adminPass"` - } `json:"changePassword"` - } - - req.ChangePassword.AdminPass = newPassword - - var res ActionResult - _, res.Err = client.Post(actionURL(client, id), req, nil, nil) - return res -} - -// ErrArgument errors occur when an argument supplied to a package function -// fails to fall within acceptable values. For example, the Reboot() function -// expects the "how" parameter to be one of HardReboot or SoftReboot. These -// constants are (currently) strings, leading someone to wonder if they can pass -// other string values instead, perhaps in an effort to break the API of their -// provider. Reboot() returns this error in this situation. -// -// Function identifies which function was called/which function is generating -// the error. -// Argument identifies which formal argument was responsible for producing the -// error. -// Value provides the value as it was passed into the function. -type ErrArgument struct { - Function, Argument string - Value interface{} -} - -// Error yields a useful diagnostic for debugging purposes. -func (e *ErrArgument) Error() string { - return fmt.Sprintf("Bad argument in call to %s, formal parameter %s, value %#v", e.Function, e.Argument, e.Value) -} - -func (e *ErrArgument) String() string { - return e.Error() -} - -// RebootMethod describes the mechanisms by which a server reboot can be requested. -type RebootMethod string - -// These constants determine how a server should be rebooted. -// See the Reboot() function for further details. -const ( - SoftReboot RebootMethod = "SOFT" - HardReboot RebootMethod = "HARD" - OSReboot = SoftReboot - PowerCycle = HardReboot -) - -// Reboot requests that a given server reboot. -// Two methods exist for rebooting a server: -// -// HardReboot (aka PowerCycle) restarts the server instance by physically cutting power to the machine, or if a VM, -// terminating it at the hypervisor level. -// It's done. Caput. Full stop. -// Then, after a brief while, power is restored or the VM instance restarted. -// -// SoftReboot (aka OSReboot) simply tells the OS to restart under its own procedures. -// E.g., in Linux, asking it to enter runlevel 6, or executing "sudo shutdown -r now", or by asking Windows to restart the machine. -func Reboot(client *gophercloud.ServiceClient, id string, how RebootMethod) ActionResult { - var res ActionResult - - if (how != SoftReboot) && (how != HardReboot) { - res.Err = &ErrArgument{ - Function: "Reboot", - Argument: "how", - Value: how, - } - return res - } - - reqBody := struct { - C map[string]string `json:"reboot"` - }{ - map[string]string{"type": string(how)}, - } - - _, res.Err = client.Post(actionURL(client, id), reqBody, nil, nil) - return res -} - -// RebuildOptsBuilder is an interface that allows extensions to override the -// default behaviour of rebuild options -type RebuildOptsBuilder interface { - ToServerRebuildMap() (map[string]interface{}, error) -} - -// RebuildOpts represents the configuration options used in a server rebuild -// operation -type RebuildOpts struct { - // Required. The ID of the image you want your server to be provisioned on - ImageID string - - // Name to set the server to - Name string - - // Required. The server's admin password - AdminPass string - - // AccessIPv4 [optional] provides a new IPv4 address for the instance. - AccessIPv4 string - - // AccessIPv6 [optional] provides a new IPv6 address for the instance. - AccessIPv6 string - - // Metadata [optional] contains key-value pairs (up to 255 bytes each) to attach to the server. - Metadata map[string]string - - // Personality [optional] includes the path and contents of a file to inject into the server at launch. - // The maximum size of the file is 255 bytes (decoded). - Personality []byte -} - -// ToServerRebuildMap formats a RebuildOpts struct into a map for use in JSON -func (opts RebuildOpts) ToServerRebuildMap() (map[string]interface{}, error) { - var err error - server := make(map[string]interface{}) - - if opts.AdminPass == "" { - err = fmt.Errorf("AdminPass is required") - } - - if opts.ImageID == "" { - err = fmt.Errorf("ImageID is required") - } - - if err != nil { - return server, err - } - - server["name"] = opts.Name - server["adminPass"] = opts.AdminPass - server["imageRef"] = opts.ImageID - - if opts.AccessIPv4 != "" { - server["accessIPv4"] = opts.AccessIPv4 - } - - if opts.AccessIPv6 != "" { - server["accessIPv6"] = opts.AccessIPv6 - } - - if opts.Metadata != nil { - server["metadata"] = opts.Metadata - } - - if opts.Personality != nil { - encoded := base64.StdEncoding.EncodeToString(opts.Personality) - server["personality"] = &encoded - } - - return map[string]interface{}{"rebuild": server}, nil -} - -// Rebuild will reprovision the server according to the configuration options -// provided in the RebuildOpts struct. -func Rebuild(client *gophercloud.ServiceClient, id string, opts RebuildOptsBuilder) RebuildResult { - var result RebuildResult - - if id == "" { - result.Err = fmt.Errorf("ID is required") - return result - } - - reqBody, err := opts.ToServerRebuildMap() - if err != nil { - result.Err = err - return result - } - - _, result.Err = client.Post(actionURL(client, id), reqBody, &result.Body, nil) - return result -} - -// ResizeOptsBuilder is an interface that allows extensions to override the default structure of -// a Resize request. -type ResizeOptsBuilder interface { - ToServerResizeMap() (map[string]interface{}, error) -} - -// ResizeOpts represents the configuration options used to control a Resize operation. -type ResizeOpts struct { - // FlavorRef is the ID of the flavor you wish your server to become. - FlavorRef string -} - -// ToServerResizeMap formats a ResizeOpts as a map that can be used as a JSON request body for the -// Resize request. -func (opts ResizeOpts) ToServerResizeMap() (map[string]interface{}, error) { - resize := map[string]interface{}{ - "flavorRef": opts.FlavorRef, - } - - return map[string]interface{}{"resize": resize}, nil -} - -// Resize instructs the provider to change the flavor of the server. -// Note that this implies rebuilding it. -// Unfortunately, one cannot pass rebuild parameters to the resize function. -// When the resize completes, the server will be in RESIZE_VERIFY state. -// While in this state, you can explore the use of the new server's configuration. -// If you like it, call ConfirmResize() to commit the resize permanently. -// Otherwise, call RevertResize() to restore the old configuration. -func Resize(client *gophercloud.ServiceClient, id string, opts ResizeOptsBuilder) ActionResult { - var res ActionResult - reqBody, err := opts.ToServerResizeMap() - if err != nil { - res.Err = err - return res - } - - _, res.Err = client.Post(actionURL(client, id), reqBody, nil, nil) - return res -} - -// ConfirmResize confirms a previous resize operation on a server. -// See Resize() for more details. -func ConfirmResize(client *gophercloud.ServiceClient, id string) ActionResult { - var res ActionResult - - reqBody := map[string]interface{}{"confirmResize": nil} - _, res.Err = client.Post(actionURL(client, id), reqBody, nil, &gophercloud.RequestOpts{ - OkCodes: []int{201, 202, 204}, - }) - return res -} - -// RevertResize cancels a previous resize operation on a server. -// See Resize() for more details. -func RevertResize(client *gophercloud.ServiceClient, id string) ActionResult { - var res ActionResult - reqBody := map[string]interface{}{"revertResize": nil} - _, res.Err = client.Post(actionURL(client, id), reqBody, nil, nil) - return res -} - -// RescueOptsBuilder is an interface that allows extensions to override the -// default structure of a Rescue request. -type RescueOptsBuilder interface { - ToServerRescueMap() (map[string]interface{}, error) -} - -// RescueOpts represents the configuration options used to control a Rescue -// option. -type RescueOpts struct { - // AdminPass is the desired administrative password for the instance in - // RESCUE mode. If it's left blank, the server will generate a password. - AdminPass string -} - -// ToServerRescueMap formats a RescueOpts as a map that can be used as a JSON -// request body for the Rescue request. -func (opts RescueOpts) ToServerRescueMap() (map[string]interface{}, error) { - server := make(map[string]interface{}) - if opts.AdminPass != "" { - server["adminPass"] = opts.AdminPass - } - return map[string]interface{}{"rescue": server}, nil -} - -// Rescue instructs the provider to place the server into RESCUE mode. -func Rescue(client *gophercloud.ServiceClient, id string, opts RescueOptsBuilder) RescueResult { - var result RescueResult - - if id == "" { - result.Err = fmt.Errorf("ID is required") - return result - } - reqBody, err := opts.ToServerRescueMap() - if err != nil { - result.Err = err - return result - } - - _, result.Err = client.Post(actionURL(client, id), reqBody, &result.Body, &gophercloud.RequestOpts{ - OkCodes: []int{200}, - }) - - return result -} - -// ResetMetadataOptsBuilder allows extensions to add additional parameters to the -// Reset request. -type ResetMetadataOptsBuilder interface { - ToMetadataResetMap() (map[string]interface{}, error) -} - -// MetadataOpts is a map that contains key-value pairs. -type MetadataOpts map[string]string - -// ToMetadataResetMap assembles a body for a Reset request based on the contents of a MetadataOpts. -func (opts MetadataOpts) ToMetadataResetMap() (map[string]interface{}, error) { - return map[string]interface{}{"metadata": opts}, nil -} - -// ToMetadataUpdateMap assembles a body for an Update request based on the contents of a MetadataOpts. -func (opts MetadataOpts) ToMetadataUpdateMap() (map[string]interface{}, error) { - return map[string]interface{}{"metadata": opts}, nil -} - -// ResetMetadata will create multiple new key-value pairs for the given server ID. -// Note: Using this operation will erase any already-existing metadata and create -// the new metadata provided. To keep any already-existing metadata, use the -// UpdateMetadatas or UpdateMetadata function. -func ResetMetadata(client *gophercloud.ServiceClient, id string, opts ResetMetadataOptsBuilder) ResetMetadataResult { - var res ResetMetadataResult - metadata, err := opts.ToMetadataResetMap() - if err != nil { - res.Err = err - return res - } - _, res.Err = client.Put(metadataURL(client, id), metadata, &res.Body, &gophercloud.RequestOpts{ - OkCodes: []int{200}, - }) - return res -} - -// Metadata requests all the metadata for the given server ID. -func Metadata(client *gophercloud.ServiceClient, id string) GetMetadataResult { - var res GetMetadataResult - _, res.Err = client.Get(metadataURL(client, id), &res.Body, nil) - return res -} - -// UpdateMetadataOptsBuilder allows extensions to add additional parameters to the -// Create request. -type UpdateMetadataOptsBuilder interface { - ToMetadataUpdateMap() (map[string]interface{}, error) -} - -// UpdateMetadata updates (or creates) all the metadata specified by opts for the given server ID. -// This operation does not affect already-existing metadata that is not specified -// by opts. -func UpdateMetadata(client *gophercloud.ServiceClient, id string, opts UpdateMetadataOptsBuilder) UpdateMetadataResult { - var res UpdateMetadataResult - metadata, err := opts.ToMetadataUpdateMap() - if err != nil { - res.Err = err - return res - } - _, res.Err = client.Post(metadataURL(client, id), metadata, &res.Body, &gophercloud.RequestOpts{ - OkCodes: []int{200}, - }) - return res -} - -// MetadatumOptsBuilder allows extensions to add additional parameters to the -// Create request. -type MetadatumOptsBuilder interface { - ToMetadatumCreateMap() (map[string]interface{}, string, error) -} - -// MetadatumOpts is a map of length one that contains a key-value pair. -type MetadatumOpts map[string]string - -// ToMetadatumCreateMap assembles a body for a Create request based on the contents of a MetadataumOpts. -func (opts MetadatumOpts) ToMetadatumCreateMap() (map[string]interface{}, string, error) { - if len(opts) != 1 { - return nil, "", errors.New("CreateMetadatum operation must have 1 and only 1 key-value pair.") - } - metadatum := map[string]interface{}{"meta": opts} - var key string - for k := range metadatum["meta"].(MetadatumOpts) { - key = k - } - return metadatum, key, nil -} - -// CreateMetadatum will create or update the key-value pair with the given key for the given server ID. -func CreateMetadatum(client *gophercloud.ServiceClient, id string, opts MetadatumOptsBuilder) CreateMetadatumResult { - var res CreateMetadatumResult - metadatum, key, err := opts.ToMetadatumCreateMap() - if err != nil { - res.Err = err - return res - } - - _, res.Err = client.Put(metadatumURL(client, id, key), metadatum, &res.Body, &gophercloud.RequestOpts{ - OkCodes: []int{200}, - }) - return res -} - -// Metadatum requests the key-value pair with the given key for the given server ID. -func Metadatum(client *gophercloud.ServiceClient, id, key string) GetMetadatumResult { - var res GetMetadatumResult - _, res.Err = client.Request("GET", metadatumURL(client, id, key), gophercloud.RequestOpts{ - JSONResponse: &res.Body, - }) - return res -} - -// DeleteMetadatum will delete the key-value pair with the given key for the given server ID. -func DeleteMetadatum(client *gophercloud.ServiceClient, id, key string) DeleteMetadatumResult { - var res DeleteMetadatumResult - _, res.Err = client.Delete(metadatumURL(client, id, key), &gophercloud.RequestOpts{ - JSONResponse: &res.Body, - }) - return res -} - -// ListAddresses makes a request against the API to list the servers IP addresses. -func ListAddresses(client *gophercloud.ServiceClient, id string) pagination.Pager { - createPageFn := func(r pagination.PageResult) pagination.Page { - return AddressPage{pagination.SinglePageBase(r)} - } - return pagination.NewPager(client, listAddressesURL(client, id), createPageFn) -} - -// ListAddressesByNetwork makes a request against the API to list the servers IP addresses -// for the given network. -func ListAddressesByNetwork(client *gophercloud.ServiceClient, id, network string) pagination.Pager { - createPageFn := func(r pagination.PageResult) pagination.Page { - return NetworkAddressPage{pagination.SinglePageBase(r)} - } - return pagination.NewPager(client, listAddressesByNetworkURL(client, id, network), createPageFn) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/servers/results.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/servers/results.go deleted file mode 100644 index e2be6baa..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/servers/results.go +++ /dev/null @@ -1,347 +0,0 @@ -package servers - -import ( - "reflect" - - "github.com/mitchellh/mapstructure" - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/pagination" -) - -type serverResult struct { - gophercloud.Result -} - -// Extract interprets any serverResult as a Server, if possible. -func (r serverResult) Extract() (*Server, error) { - if r.Err != nil { - return nil, r.Err - } - - var response struct { - Server Server `mapstructure:"server"` - } - - config := &mapstructure.DecoderConfig{ - DecodeHook: toMapFromString, - Result: &response, - } - decoder, err := mapstructure.NewDecoder(config) - if err != nil { - return nil, err - } - - err = decoder.Decode(r.Body) - if err != nil { - return nil, err - } - - return &response.Server, nil -} - -// CreateResult temporarily contains the response from a Create call. -type CreateResult struct { - serverResult -} - -// GetResult temporarily contains the response from a Get call. -type GetResult struct { - serverResult -} - -// UpdateResult temporarily contains the response from an Update call. -type UpdateResult struct { - serverResult -} - -// DeleteResult temporarily contains the response from a Delete call. -type DeleteResult struct { - gophercloud.ErrResult -} - -// RebuildResult temporarily contains the response from a Rebuild call. -type RebuildResult struct { - serverResult -} - -// ActionResult represents the result of server action operations, like reboot -type ActionResult struct { - gophercloud.ErrResult -} - -// RescueResult represents the result of a server rescue operation -type RescueResult struct { - ActionResult -} - -// Extract interprets any RescueResult as an AdminPass, if possible. -func (r RescueResult) Extract() (string, error) { - if r.Err != nil { - return "", r.Err - } - - var response struct { - AdminPass string `mapstructure:"adminPass"` - } - - err := mapstructure.Decode(r.Body, &response) - return response.AdminPass, err -} - -// Server exposes only the standard OpenStack fields corresponding to a given server on the user's account. -type Server struct { - // ID uniquely identifies this server amongst all other servers, including those not accessible to the current tenant. - ID string - - // TenantID identifies the tenant owning this server resource. - TenantID string `mapstructure:"tenant_id"` - - // UserID uniquely identifies the user account owning the tenant. - UserID string `mapstructure:"user_id"` - - // Name contains the human-readable name for the server. - Name string - - // Updated and Created contain ISO-8601 timestamps of when the state of the server last changed, and when it was created. - Updated string - Created string - - HostID string - - // Status contains the current operational status of the server, such as IN_PROGRESS or ACTIVE. - Status string - - // Progress ranges from 0..100. - // A request made against the server completes only once Progress reaches 100. - Progress int - - // AccessIPv4 and AccessIPv6 contain the IP addresses of the server, suitable for remote access for administration. - AccessIPv4, AccessIPv6 string - - // Image refers to a JSON object, which itself indicates the OS image used to deploy the server. - Image map[string]interface{} - - // Flavor refers to a JSON object, which itself indicates the hardware configuration of the deployed server. - Flavor map[string]interface{} - - // Addresses includes a list of all IP addresses assigned to the server, keyed by pool. - Addresses map[string]interface{} - - // Metadata includes a list of all user-specified key-value pairs attached to the server. - Metadata map[string]interface{} - - // Links includes HTTP references to the itself, useful for passing along to other APIs that might want a server reference. - Links []interface{} - - // KeyName indicates which public key was injected into the server on launch. - KeyName string `json:"key_name" mapstructure:"key_name"` - - // AdminPass will generally be empty (""). However, it will contain the administrative password chosen when provisioning a new server without a set AdminPass setting in the first place. - // Note that this is the ONLY time this field will be valid. - AdminPass string `json:"adminPass" mapstructure:"adminPass"` - - // SecurityGroups includes the security groups that this instance has applied to it - SecurityGroups []map[string]interface{} `json:"security_groups" mapstructure:"security_groups"` -} - -// ServerPage abstracts the raw results of making a List() request against the API. -// As OpenStack extensions may freely alter the response bodies of structures returned to the client, you may only safely access the -// data provided through the ExtractServers call. -type ServerPage struct { - pagination.LinkedPageBase -} - -// IsEmpty returns true if a page contains no Server results. -func (page ServerPage) IsEmpty() (bool, error) { - servers, err := ExtractServers(page) - if err != nil { - return true, err - } - return len(servers) == 0, nil -} - -// NextPageURL uses the response's embedded link reference to navigate to the next page of results. -func (page ServerPage) NextPageURL() (string, error) { - type resp struct { - Links []gophercloud.Link `mapstructure:"servers_links"` - } - - var r resp - err := mapstructure.Decode(page.Body, &r) - if err != nil { - return "", err - } - - return gophercloud.ExtractNextURL(r.Links) -} - -// ExtractServers interprets the results of a single page from a List() call, producing a slice of Server entities. -func ExtractServers(page pagination.Page) ([]Server, error) { - casted := page.(ServerPage).Body - - var response struct { - Servers []Server `mapstructure:"servers"` - } - - config := &mapstructure.DecoderConfig{ - DecodeHook: toMapFromString, - Result: &response, - } - decoder, err := mapstructure.NewDecoder(config) - if err != nil { - return nil, err - } - - err = decoder.Decode(casted) - - return response.Servers, err -} - -// MetadataResult contains the result of a call for (potentially) multiple key-value pairs. -type MetadataResult struct { - gophercloud.Result -} - -// GetMetadataResult temporarily contains the response from a metadata Get call. -type GetMetadataResult struct { - MetadataResult -} - -// ResetMetadataResult temporarily contains the response from a metadata Reset call. -type ResetMetadataResult struct { - MetadataResult -} - -// UpdateMetadataResult temporarily contains the response from a metadata Update call. -type UpdateMetadataResult struct { - MetadataResult -} - -// MetadatumResult contains the result of a call for individual a single key-value pair. -type MetadatumResult struct { - gophercloud.Result -} - -// GetMetadatumResult temporarily contains the response from a metadatum Get call. -type GetMetadatumResult struct { - MetadatumResult -} - -// CreateMetadatumResult temporarily contains the response from a metadatum Create call. -type CreateMetadatumResult struct { - MetadatumResult -} - -// DeleteMetadatumResult temporarily contains the response from a metadatum Delete call. -type DeleteMetadatumResult struct { - gophercloud.ErrResult -} - -// Extract interprets any MetadataResult as a Metadata, if possible. -func (r MetadataResult) Extract() (map[string]string, error) { - if r.Err != nil { - return nil, r.Err - } - - var response struct { - Metadata map[string]string `mapstructure:"metadata"` - } - - err := mapstructure.Decode(r.Body, &response) - return response.Metadata, err -} - -// Extract interprets any MetadatumResult as a Metadatum, if possible. -func (r MetadatumResult) Extract() (map[string]string, error) { - if r.Err != nil { - return nil, r.Err - } - - var response struct { - Metadatum map[string]string `mapstructure:"meta"` - } - - err := mapstructure.Decode(r.Body, &response) - return response.Metadatum, err -} - -func toMapFromString(from reflect.Kind, to reflect.Kind, data interface{}) (interface{}, error) { - if (from == reflect.String) && (to == reflect.Map) { - return map[string]interface{}{}, nil - } - return data, nil -} - -// Address represents an IP address. -type Address struct { - Version int `mapstructure:"version"` - Address string `mapstructure:"addr"` -} - -// AddressPage abstracts the raw results of making a ListAddresses() request against the API. -// As OpenStack extensions may freely alter the response bodies of structures returned -// to the client, you may only safely access the data provided through the ExtractAddresses call. -type AddressPage struct { - pagination.SinglePageBase -} - -// IsEmpty returns true if an AddressPage contains no networks. -func (r AddressPage) IsEmpty() (bool, error) { - addresses, err := ExtractAddresses(r) - if err != nil { - return true, err - } - return len(addresses) == 0, nil -} - -// ExtractAddresses interprets the results of a single page from a ListAddresses() call, -// producing a map of addresses. -func ExtractAddresses(page pagination.Page) (map[string][]Address, error) { - casted := page.(AddressPage).Body - - var response struct { - Addresses map[string][]Address `mapstructure:"addresses"` - } - - err := mapstructure.Decode(casted, &response) - if err != nil { - return nil, err - } - - return response.Addresses, err -} - -// NetworkAddressPage abstracts the raw results of making a ListAddressesByNetwork() request against the API. -// As OpenStack extensions may freely alter the response bodies of structures returned -// to the client, you may only safely access the data provided through the ExtractAddresses call. -type NetworkAddressPage struct { - pagination.SinglePageBase -} - -// IsEmpty returns true if a NetworkAddressPage contains no addresses. -func (r NetworkAddressPage) IsEmpty() (bool, error) { - addresses, err := ExtractNetworkAddresses(r) - if err != nil { - return true, err - } - return len(addresses) == 0, nil -} - -// ExtractNetworkAddresses interprets the results of a single page from a ListAddressesByNetwork() call, -// producing a slice of addresses. -func ExtractNetworkAddresses(page pagination.Page) ([]Address, error) { - casted := page.(NetworkAddressPage).Body - - var response map[string][]Address - err := mapstructure.Decode(casted, &response) - if err != nil { - return nil, err - } - - var key string - for k := range response { - key = k - } - - return response[key], err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/servers/urls.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/servers/urls.go deleted file mode 100644 index 89983549..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/servers/urls.go +++ /dev/null @@ -1,47 +0,0 @@ -package servers - -import "github.com/rackspace/gophercloud" - -func createURL(client *gophercloud.ServiceClient) string { - return client.ServiceURL("servers") -} - -func listURL(client *gophercloud.ServiceClient) string { - return createURL(client) -} - -func listDetailURL(client *gophercloud.ServiceClient) string { - return client.ServiceURL("servers", "detail") -} - -func deleteURL(client *gophercloud.ServiceClient, id string) string { - return client.ServiceURL("servers", id) -} - -func getURL(client *gophercloud.ServiceClient, id string) string { - return deleteURL(client, id) -} - -func updateURL(client *gophercloud.ServiceClient, id string) string { - return deleteURL(client, id) -} - -func actionURL(client *gophercloud.ServiceClient, id string) string { - return client.ServiceURL("servers", id, "action") -} - -func metadatumURL(client *gophercloud.ServiceClient, id, key string) string { - return client.ServiceURL("servers", id, "metadata", key) -} - -func metadataURL(client *gophercloud.ServiceClient, id string) string { - return client.ServiceURL("servers", id, "metadata") -} - -func listAddressesURL(client *gophercloud.ServiceClient, id string) string { - return client.ServiceURL("servers", id, "ips") -} - -func listAddressesByNetworkURL(client *gophercloud.ServiceClient, id, network string) string { - return client.ServiceURL("servers", id, "ips", network) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/servers/util.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/servers/util.go deleted file mode 100644 index e6baf741..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/compute/v2/servers/util.go +++ /dev/null @@ -1,20 +0,0 @@ -package servers - -import "github.com/rackspace/gophercloud" - -// WaitForStatus will continually poll a server until it successfully transitions to a specified -// status. It will do this for at most the number of seconds specified. -func WaitForStatus(c *gophercloud.ServiceClient, id, status string, secs int) error { - return gophercloud.WaitFor(secs, func() (bool, error) { - current, err := Get(c, id).Extract() - if err != nil { - return false, err - } - - if current.Status == status { - return true, nil - } - - return false, nil - }) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/endpoint_location.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/endpoint_location.go deleted file mode 100644 index 29d02c43..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/endpoint_location.go +++ /dev/null @@ -1,91 +0,0 @@ -package openstack - -import ( - "fmt" - - "github.com/rackspace/gophercloud" - tokens2 "github.com/rackspace/gophercloud/openstack/identity/v2/tokens" - tokens3 "github.com/rackspace/gophercloud/openstack/identity/v3/tokens" -) - -// V2EndpointURL discovers the endpoint URL for a specific service from a ServiceCatalog acquired -// during the v2 identity service. The specified EndpointOpts are used to identify a unique, -// unambiguous endpoint to return. It's an error both when multiple endpoints match the provided -// criteria and when none do. The minimum that can be specified is a Type, but you will also often -// need to specify a Name and/or a Region depending on what's available on your OpenStack -// deployment. -func V2EndpointURL(catalog *tokens2.ServiceCatalog, opts gophercloud.EndpointOpts) (string, error) { - // Extract Endpoints from the catalog entries that match the requested Type, Name if provided, and Region if provided. - var endpoints = make([]tokens2.Endpoint, 0, 1) - for _, entry := range catalog.Entries { - if (entry.Type == opts.Type) && (opts.Name == "" || entry.Name == opts.Name) { - for _, endpoint := range entry.Endpoints { - if opts.Region == "" || endpoint.Region == opts.Region { - endpoints = append(endpoints, endpoint) - } - } - } - } - - // Report an error if the options were ambiguous. - if len(endpoints) > 1 { - return "", fmt.Errorf("Discovered %d matching endpoints: %#v", len(endpoints), endpoints) - } - - // Extract the appropriate URL from the matching Endpoint. - for _, endpoint := range endpoints { - switch opts.Availability { - case gophercloud.AvailabilityPublic: - return gophercloud.NormalizeURL(endpoint.PublicURL), nil - case gophercloud.AvailabilityInternal: - return gophercloud.NormalizeURL(endpoint.InternalURL), nil - case gophercloud.AvailabilityAdmin: - return gophercloud.NormalizeURL(endpoint.AdminURL), nil - default: - return "", fmt.Errorf("Unexpected availability in endpoint query: %s", opts.Availability) - } - } - - // Report an error if there were no matching endpoints. - return "", gophercloud.ErrEndpointNotFound -} - -// V3EndpointURL discovers the endpoint URL for a specific service from a Catalog acquired -// during the v3 identity service. The specified EndpointOpts are used to identify a unique, -// unambiguous endpoint to return. It's an error both when multiple endpoints match the provided -// criteria and when none do. The minimum that can be specified is a Type, but you will also often -// need to specify a Name and/or a Region depending on what's available on your OpenStack -// deployment. -func V3EndpointURL(catalog *tokens3.ServiceCatalog, opts gophercloud.EndpointOpts) (string, error) { - // Extract Endpoints from the catalog entries that match the requested Type, Interface, - // Name if provided, and Region if provided. - var endpoints = make([]tokens3.Endpoint, 0, 1) - for _, entry := range catalog.Entries { - if (entry.Type == opts.Type) && (opts.Name == "" || entry.Name == opts.Name) { - for _, endpoint := range entry.Endpoints { - if opts.Availability != gophercloud.AvailabilityAdmin && - opts.Availability != gophercloud.AvailabilityPublic && - opts.Availability != gophercloud.AvailabilityInternal { - return "", fmt.Errorf("Unexpected availability in endpoint query: %s", opts.Availability) - } - if (opts.Availability == gophercloud.Availability(endpoint.Interface)) && - (opts.Region == "" || endpoint.Region == opts.Region) { - endpoints = append(endpoints, endpoint) - } - } - } - } - - // Report an error if the options were ambiguous. - if len(endpoints) > 1 { - return "", fmt.Errorf("Discovered %d matching endpoints: %#v", len(endpoints), endpoints) - } - - // Extract the URL from the matching Endpoint. - for _, endpoint := range endpoints { - return gophercloud.NormalizeURL(endpoint.URL), nil - } - - // Report an error if there were no matching endpoints. - return "", gophercloud.ErrEndpointNotFound -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tenants/doc.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tenants/doc.go deleted file mode 100644 index 0c2d49d5..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tenants/doc.go +++ /dev/null @@ -1,7 +0,0 @@ -// Package tenants provides information and interaction with the -// tenants API resource for the OpenStack Identity service. -// -// See http://developer.openstack.org/api-ref-identity-v2.html#identity-auth-v2 -// and http://developer.openstack.org/api-ref-identity-v2.html#admin-tenants -// for more information. -package tenants diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tenants/fixtures.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tenants/fixtures.go deleted file mode 100644 index 7f044ac3..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tenants/fixtures.go +++ /dev/null @@ -1,65 +0,0 @@ -// +build fixtures - -package tenants - -import ( - "fmt" - "net/http" - "testing" - - th "github.com/rackspace/gophercloud/testhelper" - "github.com/rackspace/gophercloud/testhelper/client" -) - -// ListOutput provides a single page of Tenant results. -const ListOutput = ` -{ - "tenants": [ - { - "id": "1234", - "name": "Red Team", - "description": "The team that is red", - "enabled": true - }, - { - "id": "9876", - "name": "Blue Team", - "description": "The team that is blue", - "enabled": false - } - ] -} -` - -// RedTeam is a Tenant fixture. -var RedTeam = Tenant{ - ID: "1234", - Name: "Red Team", - Description: "The team that is red", - Enabled: true, -} - -// BlueTeam is a Tenant fixture. -var BlueTeam = Tenant{ - ID: "9876", - Name: "Blue Team", - Description: "The team that is blue", - Enabled: false, -} - -// ExpectedTenantSlice is the slice of tenants expected to be returned from ListOutput. -var ExpectedTenantSlice = []Tenant{RedTeam, BlueTeam} - -// HandleListTenantsSuccessfully creates an HTTP handler at `/tenants` on the test handler mux that -// responds with a list of two tenants. -func HandleListTenantsSuccessfully(t *testing.T) { - th.Mux.HandleFunc("/tenants", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "GET") - th.TestHeader(t, r, "Accept", "application/json") - th.TestHeader(t, r, "X-Auth-Token", client.TokenID) - - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(http.StatusOK) - fmt.Fprintf(w, ListOutput) - }) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tenants/requests.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tenants/requests.go deleted file mode 100644 index 5a359f5c..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tenants/requests.go +++ /dev/null @@ -1,33 +0,0 @@ -package tenants - -import ( - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/pagination" -) - -// ListOpts filters the Tenants that are returned by the List call. -type ListOpts struct { - // Marker is the ID of the last Tenant on the previous page. - Marker string `q:"marker"` - - // Limit specifies the page size. - Limit int `q:"limit"` -} - -// List enumerates the Tenants to which the current token has access. -func List(client *gophercloud.ServiceClient, opts *ListOpts) pagination.Pager { - createPage := func(r pagination.PageResult) pagination.Page { - return TenantPage{pagination.LinkedPageBase{PageResult: r}} - } - - url := listURL(client) - if opts != nil { - q, err := gophercloud.BuildQueryString(opts) - if err != nil { - return pagination.Pager{Err: err} - } - url += q.String() - } - - return pagination.NewPager(client, url, createPage) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tenants/results.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tenants/results.go deleted file mode 100644 index c1220c38..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tenants/results.go +++ /dev/null @@ -1,62 +0,0 @@ -package tenants - -import ( - "github.com/mitchellh/mapstructure" - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/pagination" -) - -// Tenant is a grouping of users in the identity service. -type Tenant struct { - // ID is a unique identifier for this tenant. - ID string `mapstructure:"id"` - - // Name is a friendlier user-facing name for this tenant. - Name string `mapstructure:"name"` - - // Description is a human-readable explanation of this Tenant's purpose. - Description string `mapstructure:"description"` - - // Enabled indicates whether or not a tenant is active. - Enabled bool `mapstructure:"enabled"` -} - -// TenantPage is a single page of Tenant results. -type TenantPage struct { - pagination.LinkedPageBase -} - -// IsEmpty determines whether or not a page of Tenants contains any results. -func (page TenantPage) IsEmpty() (bool, error) { - tenants, err := ExtractTenants(page) - if err != nil { - return false, err - } - return len(tenants) == 0, nil -} - -// NextPageURL extracts the "next" link from the tenants_links section of the result. -func (page TenantPage) NextPageURL() (string, error) { - type resp struct { - Links []gophercloud.Link `mapstructure:"tenants_links"` - } - - var r resp - err := mapstructure.Decode(page.Body, &r) - if err != nil { - return "", err - } - - return gophercloud.ExtractNextURL(r.Links) -} - -// ExtractTenants returns a slice of Tenants contained in a single page of results. -func ExtractTenants(page pagination.Page) ([]Tenant, error) { - casted := page.(TenantPage).Body - var response struct { - Tenants []Tenant `mapstructure:"tenants"` - } - - err := mapstructure.Decode(casted, &response) - return response.Tenants, err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tenants/urls.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tenants/urls.go deleted file mode 100644 index 1dd6ce02..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tenants/urls.go +++ /dev/null @@ -1,7 +0,0 @@ -package tenants - -import "github.com/rackspace/gophercloud" - -func listURL(client *gophercloud.ServiceClient) string { - return client.ServiceURL("tenants") -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tokens/doc.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tokens/doc.go deleted file mode 100644 index 31cacc5e..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tokens/doc.go +++ /dev/null @@ -1,5 +0,0 @@ -// Package tokens provides information and interaction with the token API -// resource for the OpenStack Identity service. -// For more information, see: -// http://developer.openstack.org/api-ref-identity-v2.html#identity-auth-v2 -package tokens diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tokens/errors.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tokens/errors.go deleted file mode 100644 index 3a9172e0..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tokens/errors.go +++ /dev/null @@ -1,30 +0,0 @@ -package tokens - -import ( - "errors" - "fmt" -) - -var ( - // ErrUserIDProvided is returned if you attempt to authenticate with a UserID. - ErrUserIDProvided = unacceptedAttributeErr("UserID") - - // ErrAPIKeyProvided is returned if you attempt to authenticate with an APIKey. - ErrAPIKeyProvided = unacceptedAttributeErr("APIKey") - - // ErrDomainIDProvided is returned if you attempt to authenticate with a DomainID. - ErrDomainIDProvided = unacceptedAttributeErr("DomainID") - - // ErrDomainNameProvided is returned if you attempt to authenticate with a DomainName. - ErrDomainNameProvided = unacceptedAttributeErr("DomainName") - - // ErrUsernameRequired is returned if you attempt ot authenticate without a Username. - ErrUsernameRequired = errors.New("You must supply a Username in your AuthOptions.") - - // ErrPasswordRequired is returned if you don't provide a password. - ErrPasswordRequired = errors.New("Please supply a Password in your AuthOptions.") -) - -func unacceptedAttributeErr(attribute string) error { - return fmt.Errorf("The base Identity V2 API does not accept authentication by %s", attribute) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tokens/fixtures.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tokens/fixtures.go deleted file mode 100644 index 1cb0d052..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tokens/fixtures.go +++ /dev/null @@ -1,128 +0,0 @@ -// +build fixtures - -package tokens - -import ( - "fmt" - "net/http" - "testing" - "time" - - "github.com/rackspace/gophercloud/openstack/identity/v2/tenants" - th "github.com/rackspace/gophercloud/testhelper" -) - -// ExpectedToken is the token that should be parsed from TokenCreationResponse. -var ExpectedToken = &Token{ - ID: "aaaabbbbccccdddd", - ExpiresAt: time.Date(2014, time.January, 31, 15, 30, 58, 0, time.UTC), - Tenant: tenants.Tenant{ - ID: "fc394f2ab2df4114bde39905f800dc57", - Name: "test", - Description: "There are many tenants. This one is yours.", - Enabled: true, - }, -} - -// ExpectedServiceCatalog is the service catalog that should be parsed from TokenCreationResponse. -var ExpectedServiceCatalog = &ServiceCatalog{ - Entries: []CatalogEntry{ - CatalogEntry{ - Name: "inscrutablewalrus", - Type: "something", - Endpoints: []Endpoint{ - Endpoint{ - PublicURL: "http://something0:1234/v2/", - Region: "region0", - }, - Endpoint{ - PublicURL: "http://something1:1234/v2/", - Region: "region1", - }, - }, - }, - CatalogEntry{ - Name: "arbitrarypenguin", - Type: "else", - Endpoints: []Endpoint{ - Endpoint{ - PublicURL: "http://else0:4321/v3/", - Region: "region0", - }, - }, - }, - }, -} - -// TokenCreationResponse is a JSON response that contains ExpectedToken and ExpectedServiceCatalog. -const TokenCreationResponse = ` -{ - "access": { - "token": { - "issued_at": "2014-01-30T15:30:58.000000Z", - "expires": "2014-01-31T15:30:58Z", - "id": "aaaabbbbccccdddd", - "tenant": { - "description": "There are many tenants. This one is yours.", - "enabled": true, - "id": "fc394f2ab2df4114bde39905f800dc57", - "name": "test" - } - }, - "serviceCatalog": [ - { - "endpoints": [ - { - "publicURL": "http://something0:1234/v2/", - "region": "region0" - }, - { - "publicURL": "http://something1:1234/v2/", - "region": "region1" - } - ], - "type": "something", - "name": "inscrutablewalrus" - }, - { - "endpoints": [ - { - "publicURL": "http://else0:4321/v3/", - "region": "region0" - } - ], - "type": "else", - "name": "arbitrarypenguin" - } - ] - } -} -` - -// HandleTokenPost expects a POST against a /tokens handler, ensures that the request body has been -// constructed properly given certain auth options, and returns the result. -func HandleTokenPost(t *testing.T, requestJSON string) { - th.Mux.HandleFunc("/tokens", func(w http.ResponseWriter, r *http.Request) { - th.TestMethod(t, r, "POST") - th.TestHeader(t, r, "Content-Type", "application/json") - th.TestHeader(t, r, "Accept", "application/json") - if requestJSON != "" { - th.TestJSONRequest(t, r, requestJSON) - } - - w.WriteHeader(http.StatusOK) - fmt.Fprintf(w, TokenCreationResponse) - }) -} - -// IsSuccessful ensures that a CreateResult was successful and contains the correct token and -// service catalog. -func IsSuccessful(t *testing.T, result CreateResult) { - token, err := result.ExtractToken() - th.AssertNoErr(t, err) - th.CheckDeepEquals(t, ExpectedToken, token) - - serviceCatalog, err := result.ExtractServiceCatalog() - th.AssertNoErr(t, err) - th.CheckDeepEquals(t, ExpectedServiceCatalog, serviceCatalog) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tokens/requests.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tokens/requests.go deleted file mode 100644 index efa054fb..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tokens/requests.go +++ /dev/null @@ -1,82 +0,0 @@ -package tokens - -import "github.com/rackspace/gophercloud" - -// AuthOptionsBuilder describes any argument that may be passed to the Create call. -type AuthOptionsBuilder interface { - - // ToTokenCreateMap assembles the Create request body, returning an error if parameters are - // missing or inconsistent. - ToTokenCreateMap() (map[string]interface{}, error) -} - -// AuthOptions wraps a gophercloud AuthOptions in order to adhere to the AuthOptionsBuilder -// interface. -type AuthOptions struct { - gophercloud.AuthOptions -} - -// WrapOptions embeds a root AuthOptions struct in a package-specific one. -func WrapOptions(original gophercloud.AuthOptions) AuthOptions { - return AuthOptions{AuthOptions: original} -} - -// ToTokenCreateMap converts AuthOptions into nested maps that can be serialized into a JSON -// request. -func (auth AuthOptions) ToTokenCreateMap() (map[string]interface{}, error) { - // Error out if an unsupported auth option is present. - if auth.UserID != "" { - return nil, ErrUserIDProvided - } - if auth.APIKey != "" { - return nil, ErrAPIKeyProvided - } - if auth.DomainID != "" { - return nil, ErrDomainIDProvided - } - if auth.DomainName != "" { - return nil, ErrDomainNameProvided - } - - // Username and Password are always required. - if auth.Username == "" { - return nil, ErrUsernameRequired - } - if auth.Password == "" { - return nil, ErrPasswordRequired - } - - // Populate the request map. - authMap := make(map[string]interface{}) - - authMap["passwordCredentials"] = map[string]interface{}{ - "username": auth.Username, - "password": auth.Password, - } - - if auth.TenantID != "" { - authMap["tenantId"] = auth.TenantID - } - if auth.TenantName != "" { - authMap["tenantName"] = auth.TenantName - } - - return map[string]interface{}{"auth": authMap}, nil -} - -// Create authenticates to the identity service and attempts to acquire a Token. -// If successful, the CreateResult -// Generally, rather than interact with this call directly, end users should call openstack.AuthenticatedClient(), -// which abstracts all of the gory details about navigating service catalogs and such. -func Create(client *gophercloud.ServiceClient, auth AuthOptionsBuilder) CreateResult { - request, err := auth.ToTokenCreateMap() - if err != nil { - return CreateResult{gophercloud.Result{Err: err}} - } - - var result CreateResult - _, result.Err = client.Post(CreateURL(client), request, &result.Body, &gophercloud.RequestOpts{ - OkCodes: []int{200, 203}, - }) - return result -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tokens/results.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tokens/results.go deleted file mode 100644 index 1eddb9d5..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tokens/results.go +++ /dev/null @@ -1,133 +0,0 @@ -package tokens - -import ( - "time" - - "github.com/mitchellh/mapstructure" - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/openstack/identity/v2/tenants" -) - -// Token provides only the most basic information related to an authentication token. -type Token struct { - // ID provides the primary means of identifying a user to the OpenStack API. - // OpenStack defines this field as an opaque value, so do not depend on its content. - // It is safe, however, to compare for equality. - ID string - - // ExpiresAt provides a timestamp in ISO 8601 format, indicating when the authentication token becomes invalid. - // After this point in time, future API requests made using this authentication token will respond with errors. - // Either the caller will need to reauthenticate manually, or more preferably, the caller should exploit automatic re-authentication. - // See the AuthOptions structure for more details. - ExpiresAt time.Time - - // Tenant provides information about the tenant to which this token grants access. - Tenant tenants.Tenant -} - -// Endpoint represents a single API endpoint offered by a service. -// It provides the public and internal URLs, if supported, along with a region specifier, again if provided. -// The significance of the Region field will depend upon your provider. -// -// In addition, the interface offered by the service will have version information associated with it -// through the VersionId, VersionInfo, and VersionList fields, if provided or supported. -// -// In all cases, fields which aren't supported by the provider and service combined will assume a zero-value (""). -type Endpoint struct { - TenantID string `mapstructure:"tenantId"` - PublicURL string `mapstructure:"publicURL"` - InternalURL string `mapstructure:"internalURL"` - AdminURL string `mapstructure:"adminURL"` - Region string `mapstructure:"region"` - VersionID string `mapstructure:"versionId"` - VersionInfo string `mapstructure:"versionInfo"` - VersionList string `mapstructure:"versionList"` -} - -// CatalogEntry provides a type-safe interface to an Identity API V2 service catalog listing. -// Each class of service, such as cloud DNS or block storage services, will have a single -// CatalogEntry representing it. -// -// Note: when looking for the desired service, try, whenever possible, to key off the type field. -// Otherwise, you'll tie the representation of the service to a specific provider. -type CatalogEntry struct { - // Name will contain the provider-specified name for the service. - Name string `mapstructure:"name"` - - // Type will contain a type string if OpenStack defines a type for the service. - // Otherwise, for provider-specific services, the provider may assign their own type strings. - Type string `mapstructure:"type"` - - // Endpoints will let the caller iterate over all the different endpoints that may exist for - // the service. - Endpoints []Endpoint `mapstructure:"endpoints"` -} - -// ServiceCatalog provides a view into the service catalog from a previous, successful authentication. -type ServiceCatalog struct { - Entries []CatalogEntry -} - -// CreateResult defers the interpretation of a created token. -// Use ExtractToken() to interpret it as a Token, or ExtractServiceCatalog() to interpret it as a service catalog. -type CreateResult struct { - gophercloud.Result -} - -// ExtractToken returns the just-created Token from a CreateResult. -func (result CreateResult) ExtractToken() (*Token, error) { - if result.Err != nil { - return nil, result.Err - } - - var response struct { - Access struct { - Token struct { - Expires string `mapstructure:"expires"` - ID string `mapstructure:"id"` - Tenant tenants.Tenant `mapstructure:"tenant"` - } `mapstructure:"token"` - } `mapstructure:"access"` - } - - err := mapstructure.Decode(result.Body, &response) - if err != nil { - return nil, err - } - - expiresTs, err := time.Parse(gophercloud.RFC3339Milli, response.Access.Token.Expires) - if err != nil { - return nil, err - } - - return &Token{ - ID: response.Access.Token.ID, - ExpiresAt: expiresTs, - Tenant: response.Access.Token.Tenant, - }, nil -} - -// ExtractServiceCatalog returns the ServiceCatalog that was generated along with the user's Token. -func (result CreateResult) ExtractServiceCatalog() (*ServiceCatalog, error) { - if result.Err != nil { - return nil, result.Err - } - - var response struct { - Access struct { - Entries []CatalogEntry `mapstructure:"serviceCatalog"` - } `mapstructure:"access"` - } - - err := mapstructure.Decode(result.Body, &response) - if err != nil { - return nil, err - } - - return &ServiceCatalog{Entries: response.Access.Entries}, nil -} - -// createErr quickly packs an error in a CreateResult. -func createErr(err error) CreateResult { - return CreateResult{gophercloud.Result{Err: err}} -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tokens/urls.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tokens/urls.go deleted file mode 100644 index cd4c696c..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v2/tokens/urls.go +++ /dev/null @@ -1,8 +0,0 @@ -package tokens - -import "github.com/rackspace/gophercloud" - -// CreateURL generates the URL used to create new Tokens. -func CreateURL(client *gophercloud.ServiceClient) string { - return client.ServiceURL("tokens") -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v3/tokens/doc.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v3/tokens/doc.go deleted file mode 100644 index 76ff5f47..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v3/tokens/doc.go +++ /dev/null @@ -1,6 +0,0 @@ -// Package tokens provides information and interaction with the token API -// resource for the OpenStack Identity service. -// -// For more information, see: -// http://developer.openstack.org/api-ref-identity-v3.html#tokens-v3 -package tokens diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v3/tokens/errors.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v3/tokens/errors.go deleted file mode 100644 index 44761092..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v3/tokens/errors.go +++ /dev/null @@ -1,72 +0,0 @@ -package tokens - -import ( - "errors" - "fmt" -) - -func unacceptedAttributeErr(attribute string) error { - return fmt.Errorf("The base Identity V3 API does not accept authentication by %s", attribute) -} - -func redundantWithTokenErr(attribute string) error { - return fmt.Errorf("%s may not be provided when authenticating with a TokenID", attribute) -} - -func redundantWithUserID(attribute string) error { - return fmt.Errorf("%s may not be provided when authenticating with a UserID", attribute) -} - -var ( - // ErrAPIKeyProvided indicates that an APIKey was provided but can't be used. - ErrAPIKeyProvided = unacceptedAttributeErr("APIKey") - - // ErrTenantIDProvided indicates that a TenantID was provided but can't be used. - ErrTenantIDProvided = unacceptedAttributeErr("TenantID") - - // ErrTenantNameProvided indicates that a TenantName was provided but can't be used. - ErrTenantNameProvided = unacceptedAttributeErr("TenantName") - - // ErrUsernameWithToken indicates that a Username was provided, but token authentication is being used instead. - ErrUsernameWithToken = redundantWithTokenErr("Username") - - // ErrUserIDWithToken indicates that a UserID was provided, but token authentication is being used instead. - ErrUserIDWithToken = redundantWithTokenErr("UserID") - - // ErrDomainIDWithToken indicates that a DomainID was provided, but token authentication is being used instead. - ErrDomainIDWithToken = redundantWithTokenErr("DomainID") - - // ErrDomainNameWithToken indicates that a DomainName was provided, but token authentication is being used instead.s - ErrDomainNameWithToken = redundantWithTokenErr("DomainName") - - // ErrUsernameOrUserID indicates that neither username nor userID are specified, or both are at once. - ErrUsernameOrUserID = errors.New("Exactly one of Username and UserID must be provided for password authentication") - - // ErrDomainIDWithUserID indicates that a DomainID was provided, but unnecessary because a UserID is being used. - ErrDomainIDWithUserID = redundantWithUserID("DomainID") - - // ErrDomainNameWithUserID indicates that a DomainName was provided, but unnecessary because a UserID is being used. - ErrDomainNameWithUserID = redundantWithUserID("DomainName") - - // ErrDomainIDOrDomainName indicates that a username was provided, but no domain to scope it. - // It may also indicate that both a DomainID and a DomainName were provided at once. - ErrDomainIDOrDomainName = errors.New("You must provide exactly one of DomainID or DomainName to authenticate by Username") - - // ErrMissingPassword indicates that no password was provided and no token is available. - ErrMissingPassword = errors.New("You must provide a password to authenticate") - - // ErrScopeDomainIDOrDomainName indicates that a domain ID or Name was required in a Scope, but not present. - ErrScopeDomainIDOrDomainName = errors.New("You must provide exactly one of DomainID or DomainName in a Scope with ProjectName") - - // ErrScopeProjectIDOrProjectName indicates that both a ProjectID and a ProjectName were provided in a Scope. - ErrScopeProjectIDOrProjectName = errors.New("You must provide at most one of ProjectID or ProjectName in a Scope") - - // ErrScopeProjectIDAlone indicates that a ProjectID was provided with other constraints in a Scope. - ErrScopeProjectIDAlone = errors.New("ProjectID must be supplied alone in a Scope") - - // ErrScopeDomainName indicates that a DomainName was provided alone in a Scope. - ErrScopeDomainName = errors.New("DomainName must be supplied with a ProjectName or ProjectID in a Scope.") - - // ErrScopeEmpty indicates that no credentials were provided in a Scope. - ErrScopeEmpty = errors.New("You must provide either a Project or Domain in a Scope") -) diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v3/tokens/requests.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v3/tokens/requests.go deleted file mode 100644 index d449ca36..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v3/tokens/requests.go +++ /dev/null @@ -1,281 +0,0 @@ -package tokens - -import ( - "net/http" - - "github.com/rackspace/gophercloud" -) - -// Scope allows a created token to be limited to a specific domain or project. -type Scope struct { - ProjectID string - ProjectName string - DomainID string - DomainName string -} - -func subjectTokenHeaders(c *gophercloud.ServiceClient, subjectToken string) map[string]string { - h := c.AuthenticatedHeaders() - h["X-Subject-Token"] = subjectToken - return h -} - -// Create authenticates and either generates a new token, or changes the Scope of an existing token. -func Create(c *gophercloud.ServiceClient, options gophercloud.AuthOptions, scope *Scope) CreateResult { - type domainReq struct { - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - } - - type projectReq struct { - Domain *domainReq `json:"domain,omitempty"` - Name *string `json:"name,omitempty"` - ID *string `json:"id,omitempty"` - } - - type userReq struct { - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Password string `json:"password"` - Domain *domainReq `json:"domain,omitempty"` - } - - type passwordReq struct { - User userReq `json:"user"` - } - - type tokenReq struct { - ID string `json:"id"` - } - - type identityReq struct { - Methods []string `json:"methods"` - Password *passwordReq `json:"password,omitempty"` - Token *tokenReq `json:"token,omitempty"` - } - - type scopeReq struct { - Domain *domainReq `json:"domain,omitempty"` - Project *projectReq `json:"project,omitempty"` - } - - type authReq struct { - Identity identityReq `json:"identity"` - Scope *scopeReq `json:"scope,omitempty"` - } - - type request struct { - Auth authReq `json:"auth"` - } - - // Populate the request structure based on the provided arguments. Create and return an error - // if insufficient or incompatible information is present. - var req request - - // Test first for unrecognized arguments. - if options.APIKey != "" { - return createErr(ErrAPIKeyProvided) - } - if options.TenantID != "" { - return createErr(ErrTenantIDProvided) - } - if options.TenantName != "" { - return createErr(ErrTenantNameProvided) - } - - if options.Password == "" { - if c.TokenID != "" { - // Because we aren't using password authentication, it's an error to also provide any of the user-based authentication - // parameters. - if options.Username != "" { - return createErr(ErrUsernameWithToken) - } - if options.UserID != "" { - return createErr(ErrUserIDWithToken) - } - if options.DomainID != "" { - return createErr(ErrDomainIDWithToken) - } - if options.DomainName != "" { - return createErr(ErrDomainNameWithToken) - } - - // Configure the request for Token authentication. - req.Auth.Identity.Methods = []string{"token"} - req.Auth.Identity.Token = &tokenReq{ - ID: c.TokenID, - } - } else { - // If no password or token ID are available, authentication can't continue. - return createErr(ErrMissingPassword) - } - } else { - // Password authentication. - req.Auth.Identity.Methods = []string{"password"} - - // At least one of Username and UserID must be specified. - if options.Username == "" && options.UserID == "" { - return createErr(ErrUsernameOrUserID) - } - - if options.Username != "" { - // If Username is provided, UserID may not be provided. - if options.UserID != "" { - return createErr(ErrUsernameOrUserID) - } - - // Either DomainID or DomainName must also be specified. - if options.DomainID == "" && options.DomainName == "" { - return createErr(ErrDomainIDOrDomainName) - } - - if options.DomainID != "" { - if options.DomainName != "" { - return createErr(ErrDomainIDOrDomainName) - } - - // Configure the request for Username and Password authentication with a DomainID. - req.Auth.Identity.Password = &passwordReq{ - User: userReq{ - Name: &options.Username, - Password: options.Password, - Domain: &domainReq{ID: &options.DomainID}, - }, - } - } - - if options.DomainName != "" { - // Configure the request for Username and Password authentication with a DomainName. - req.Auth.Identity.Password = &passwordReq{ - User: userReq{ - Name: &options.Username, - Password: options.Password, - Domain: &domainReq{Name: &options.DomainName}, - }, - } - } - } - - if options.UserID != "" { - // If UserID is specified, neither DomainID nor DomainName may be. - if options.DomainID != "" { - return createErr(ErrDomainIDWithUserID) - } - if options.DomainName != "" { - return createErr(ErrDomainNameWithUserID) - } - - // Configure the request for UserID and Password authentication. - req.Auth.Identity.Password = &passwordReq{ - User: userReq{ID: &options.UserID, Password: options.Password}, - } - } - } - - // Add a "scope" element if a Scope has been provided. - if scope != nil { - if scope.ProjectName != "" { - // ProjectName provided: either DomainID or DomainName must also be supplied. - // ProjectID may not be supplied. - if scope.DomainID == "" && scope.DomainName == "" { - return createErr(ErrScopeDomainIDOrDomainName) - } - if scope.ProjectID != "" { - return createErr(ErrScopeProjectIDOrProjectName) - } - - if scope.DomainID != "" { - // ProjectName + DomainID - req.Auth.Scope = &scopeReq{ - Project: &projectReq{ - Name: &scope.ProjectName, - Domain: &domainReq{ID: &scope.DomainID}, - }, - } - } - - if scope.DomainName != "" { - // ProjectName + DomainName - req.Auth.Scope = &scopeReq{ - Project: &projectReq{ - Name: &scope.ProjectName, - Domain: &domainReq{Name: &scope.DomainName}, - }, - } - } - } else if scope.ProjectID != "" { - // ProjectID provided. ProjectName, DomainID, and DomainName may not be provided. - if scope.DomainID != "" { - return createErr(ErrScopeProjectIDAlone) - } - if scope.DomainName != "" { - return createErr(ErrScopeProjectIDAlone) - } - - // ProjectID - req.Auth.Scope = &scopeReq{ - Project: &projectReq{ID: &scope.ProjectID}, - } - } else if scope.DomainID != "" { - // DomainID provided. ProjectID, ProjectName, and DomainName may not be provided. - if scope.DomainName != "" { - return createErr(ErrScopeDomainIDOrDomainName) - } - - // DomainID - req.Auth.Scope = &scopeReq{ - Domain: &domainReq{ID: &scope.DomainID}, - } - } else if scope.DomainName != "" { - return createErr(ErrScopeDomainName) - } else { - return createErr(ErrScopeEmpty) - } - } - - var result CreateResult - var response *http.Response - response, result.Err = c.Post(tokenURL(c), req, &result.Body, nil) - if result.Err != nil { - return result - } - result.Header = response.Header - return result -} - -// Get validates and retrieves information about another token. -func Get(c *gophercloud.ServiceClient, token string) GetResult { - var result GetResult - var response *http.Response - response, result.Err = c.Get(tokenURL(c), &result.Body, &gophercloud.RequestOpts{ - MoreHeaders: subjectTokenHeaders(c, token), - OkCodes: []int{200, 203}, - }) - if result.Err != nil { - return result - } - result.Header = response.Header - return result -} - -// Validate determines if a specified token is valid or not. -func Validate(c *gophercloud.ServiceClient, token string) (bool, error) { - response, err := c.Request("HEAD", tokenURL(c), gophercloud.RequestOpts{ - MoreHeaders: subjectTokenHeaders(c, token), - OkCodes: []int{204, 404}, - }) - if err != nil { - return false, err - } - - return response.StatusCode == 204, nil -} - -// Revoke immediately makes specified token invalid. -func Revoke(c *gophercloud.ServiceClient, token string) RevokeResult { - var res RevokeResult - _, res.Err = c.Delete(tokenURL(c), &gophercloud.RequestOpts{ - MoreHeaders: subjectTokenHeaders(c, token), - }) - return res -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v3/tokens/results.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v3/tokens/results.go deleted file mode 100644 index d134f7d4..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v3/tokens/results.go +++ /dev/null @@ -1,139 +0,0 @@ -package tokens - -import ( - "time" - - "github.com/mitchellh/mapstructure" - "github.com/rackspace/gophercloud" -) - -// Endpoint represents a single API endpoint offered by a service. -// It matches either a public, internal or admin URL. -// If supported, it contains a region specifier, again if provided. -// The significance of the Region field will depend upon your provider. -type Endpoint struct { - ID string `mapstructure:"id"` - Region string `mapstructure:"region"` - Interface string `mapstructure:"interface"` - URL string `mapstructure:"url"` -} - -// CatalogEntry provides a type-safe interface to an Identity API V3 service catalog listing. -// Each class of service, such as cloud DNS or block storage services, could have multiple -// CatalogEntry representing it (one by interface type, e.g public, admin or internal). -// -// Note: when looking for the desired service, try, whenever possible, to key off the type field. -// Otherwise, you'll tie the representation of the service to a specific provider. -type CatalogEntry struct { - - // Service ID - ID string `mapstructure:"id"` - - // Name will contain the provider-specified name for the service. - Name string `mapstructure:"name"` - - // Type will contain a type string if OpenStack defines a type for the service. - // Otherwise, for provider-specific services, the provider may assign their own type strings. - Type string `mapstructure:"type"` - - // Endpoints will let the caller iterate over all the different endpoints that may exist for - // the service. - Endpoints []Endpoint `mapstructure:"endpoints"` -} - -// ServiceCatalog provides a view into the service catalog from a previous, successful authentication. -type ServiceCatalog struct { - Entries []CatalogEntry -} - -// commonResult is the deferred result of a Create or a Get call. -type commonResult struct { - gophercloud.Result -} - -// Extract is a shortcut for ExtractToken. -// This function is deprecated and still present for backward compatibility. -func (r commonResult) Extract() (*Token, error) { - return r.ExtractToken() -} - -// ExtractToken interprets a commonResult as a Token. -func (r commonResult) ExtractToken() (*Token, error) { - if r.Err != nil { - return nil, r.Err - } - - var response struct { - Token struct { - ExpiresAt string `mapstructure:"expires_at"` - } `mapstructure:"token"` - } - - var token Token - - // Parse the token itself from the stored headers. - token.ID = r.Header.Get("X-Subject-Token") - - err := mapstructure.Decode(r.Body, &response) - if err != nil { - return nil, err - } - - // Attempt to parse the timestamp. - token.ExpiresAt, err = time.Parse(gophercloud.RFC3339Milli, response.Token.ExpiresAt) - - return &token, err -} - -// ExtractServiceCatalog returns the ServiceCatalog that was generated along with the user's Token. -func (result CreateResult) ExtractServiceCatalog() (*ServiceCatalog, error) { - if result.Err != nil { - return nil, result.Err - } - - var response struct { - Token struct { - Entries []CatalogEntry `mapstructure:"catalog"` - } `mapstructure:"token"` - } - - err := mapstructure.Decode(result.Body, &response) - if err != nil { - return nil, err - } - - return &ServiceCatalog{Entries: response.Token.Entries}, nil -} - -// CreateResult defers the interpretation of a created token. -// Use ExtractToken() to interpret it as a Token, or ExtractServiceCatalog() to interpret it as a service catalog. -type CreateResult struct { - commonResult -} - -// createErr quickly creates a CreateResult that reports an error. -func createErr(err error) CreateResult { - return CreateResult{ - commonResult: commonResult{Result: gophercloud.Result{Err: err}}, - } -} - -// GetResult is the deferred response from a Get call. -type GetResult struct { - commonResult -} - -// RevokeResult is the deferred response from a Revoke call. -type RevokeResult struct { - commonResult -} - -// Token is a string that grants a user access to a controlled set of services in an OpenStack provider. -// Each Token is valid for a set length of time. -type Token struct { - // ID is the issued token. - ID string - - // ExpiresAt is the timestamp at which this token will no longer be accepted. - ExpiresAt time.Time -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v3/tokens/urls.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v3/tokens/urls.go deleted file mode 100644 index 360b60a8..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/identity/v3/tokens/urls.go +++ /dev/null @@ -1,7 +0,0 @@ -package tokens - -import "github.com/rackspace/gophercloud" - -func tokenURL(c *gophercloud.ServiceClient) string { - return c.ServiceURL("auth", "tokens") -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/extensions/layer3/floatingips/requests.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/extensions/layer3/floatingips/requests.go deleted file mode 100644 index 49d6f0b7..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/extensions/layer3/floatingips/requests.go +++ /dev/null @@ -1,167 +0,0 @@ -package floatingips - -import ( - "fmt" - - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/pagination" -) - -// ListOpts allows the filtering and sorting of paginated collections through -// the API. Filtering is achieved by passing in struct field values that map to -// the floating IP attributes you want to see returned. SortKey allows you to -// sort by a particular network attribute. SortDir sets the direction, and is -// either `asc' or `desc'. Marker and Limit are used for pagination. -type ListOpts struct { - ID string `q:"id"` - FloatingNetworkID string `q:"floating_network_id"` - PortID string `q:"port_id"` - FixedIP string `q:"fixed_ip_address"` - FloatingIP string `q:"floating_ip_address"` - TenantID string `q:"tenant_id"` - Limit int `q:"limit"` - Marker string `q:"marker"` - SortKey string `q:"sort_key"` - SortDir string `q:"sort_dir"` -} - -// List returns a Pager which allows you to iterate over a collection of -// floating IP resources. It accepts a ListOpts struct, which allows you to -// filter and sort the returned collection for greater efficiency. -func List(c *gophercloud.ServiceClient, opts ListOpts) pagination.Pager { - q, err := gophercloud.BuildQueryString(&opts) - if err != nil { - return pagination.Pager{Err: err} - } - u := rootURL(c) + q.String() - return pagination.NewPager(c, u, func(r pagination.PageResult) pagination.Page { - return FloatingIPPage{pagination.LinkedPageBase{PageResult: r}} - }) -} - -// CreateOpts contains all the values needed to create a new floating IP -// resource. The only required fields are FloatingNetworkID and PortID which -// refer to the external network and internal port respectively. -type CreateOpts struct { - FloatingNetworkID string - FloatingIP string - PortID string - FixedIP string - TenantID string -} - -var ( - errFloatingNetworkIDRequired = fmt.Errorf("A NetworkID is required") -) - -// Create accepts a CreateOpts struct and uses the values provided to create a -// new floating IP resource. You can create floating IPs on external networks -// only. If you provide a FloatingNetworkID which refers to a network that is -// not external (i.e. its `router:external' attribute is False), the operation -// will fail and return a 400 error. -// -// If you do not specify a FloatingIP address value, the operation will -// automatically allocate an available address for the new resource. If you do -// choose to specify one, it must fall within the subnet range for the external -// network - otherwise the operation returns a 400 error. If the FloatingIP -// address is already in use, the operation returns a 409 error code. -// -// You can associate the new resource with an internal port by using the PortID -// field. If you specify a PortID that is not valid, the operation will fail and -// return 404 error code. -// -// You must also configure an IP address for the port associated with the PortID -// you have provided - this is what the FixedIP refers to: an IP fixed to a port. -// Because a port might be associated with multiple IP addresses, you can use -// the FixedIP field to associate a particular IP address rather than have the -// API assume for you. If you specify an IP address that is not valid, the -// operation will fail and return a 400 error code. If the PortID and FixedIP -// are already associated with another resource, the operation will fail and -// returns a 409 error code. -func Create(c *gophercloud.ServiceClient, opts CreateOpts) CreateResult { - var res CreateResult - - // Validate - if opts.FloatingNetworkID == "" { - res.Err = errFloatingNetworkIDRequired - return res - } - - // Define structures - type floatingIP struct { - FloatingNetworkID string `json:"floating_network_id"` - FloatingIP string `json:"floating_ip_address,omitempty"` - PortID string `json:"port_id,omitempty"` - FixedIP string `json:"fixed_ip_address,omitempty"` - TenantID string `json:"tenant_id,omitempty"` - } - type request struct { - FloatingIP floatingIP `json:"floatingip"` - } - - // Populate request body - reqBody := request{FloatingIP: floatingIP{ - FloatingNetworkID: opts.FloatingNetworkID, - PortID: opts.PortID, - FixedIP: opts.FixedIP, - TenantID: opts.TenantID, - }} - - _, res.Err = c.Post(rootURL(c), reqBody, &res.Body, nil) - return res -} - -// Get retrieves a particular floating IP resource based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) GetResult { - var res GetResult - _, res.Err = c.Get(resourceURL(c, id), &res.Body, nil) - return res -} - -// UpdateOpts contains the values used when updating a floating IP resource. The -// only value that can be updated is which internal port the floating IP is -// linked to. To associate the floating IP with a new internal port, provide its -// ID. To disassociate the floating IP from all ports, provide an empty string. -type UpdateOpts struct { - PortID string -} - -// Update allows floating IP resources to be updated. Currently, the only way to -// "update" a floating IP is to associate it with a new internal port, or -// disassociated it from all ports. See UpdateOpts for instructions of how to -// do this. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOpts) UpdateResult { - type floatingIP struct { - PortID *string `json:"port_id"` - } - - type request struct { - FloatingIP floatingIP `json:"floatingip"` - } - - var portID *string - if opts.PortID == "" { - portID = nil - } else { - portID = &opts.PortID - } - - reqBody := request{FloatingIP: floatingIP{PortID: portID}} - - // Send request to API - var res UpdateResult - _, res.Err = c.Put(resourceURL(c, id), reqBody, &res.Body, &gophercloud.RequestOpts{ - OkCodes: []int{200}, - }) - - return res -} - -// Delete will permanently delete a particular floating IP resource. Please -// ensure this is what you want - you can also disassociate the IP from existing -// internal ports. -func Delete(c *gophercloud.ServiceClient, id string) DeleteResult { - var res DeleteResult - _, res.Err = c.Delete(resourceURL(c, id), nil) - return res -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/extensions/layer3/floatingips/results.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/extensions/layer3/floatingips/results.go deleted file mode 100644 index a1c7afe2..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/extensions/layer3/floatingips/results.go +++ /dev/null @@ -1,127 +0,0 @@ -package floatingips - -import ( - "fmt" - - "github.com/mitchellh/mapstructure" - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/pagination" -) - -// FloatingIP represents a floating IP resource. A floating IP is an external -// IP address that is mapped to an internal port and, optionally, a specific -// IP address on a private network. In other words, it enables access to an -// instance on a private network from an external network. For this reason, -// floating IPs can only be defined on networks where the `router:external' -// attribute (provided by the external network extension) is set to True. -type FloatingIP struct { - // Unique identifier for the floating IP instance. - ID string `json:"id" mapstructure:"id"` - - // UUID of the external network where the floating IP is to be created. - FloatingNetworkID string `json:"floating_network_id" mapstructure:"floating_network_id"` - - // Address of the floating IP on the external network. - FloatingIP string `json:"floating_ip_address" mapstructure:"floating_ip_address"` - - // UUID of the port on an internal network that is associated with the floating IP. - PortID string `json:"port_id" mapstructure:"port_id"` - - // The specific IP address of the internal port which should be associated - // with the floating IP. - FixedIP string `json:"fixed_ip_address" mapstructure:"fixed_ip_address"` - - // Owner of the floating IP. Only admin users can specify a tenant identifier - // other than its own. - TenantID string `json:"tenant_id" mapstructure:"tenant_id"` - - // The condition of the API resource. - Status string `json:"status" mapstructure:"status"` -} - -type commonResult struct { - gophercloud.Result -} - -// Extract a result and extracts a FloatingIP resource. -func (r commonResult) Extract() (*FloatingIP, error) { - if r.Err != nil { - return nil, r.Err - } - - var res struct { - FloatingIP *FloatingIP `json:"floatingip"` - } - - err := mapstructure.Decode(r.Body, &res) - if err != nil { - return nil, fmt.Errorf("Error decoding Neutron floating IP: %v", err) - } - - return res.FloatingIP, nil -} - -// CreateResult represents the result of a create operation. -type CreateResult struct { - commonResult -} - -// GetResult represents the result of a get operation. -type GetResult struct { - commonResult -} - -// UpdateResult represents the result of an update operation. -type UpdateResult struct { - commonResult -} - -// DeleteResult represents the result of an update operation. -type DeleteResult struct { - gophercloud.ErrResult -} - -// FloatingIPPage is the page returned by a pager when traversing over a -// collection of floating IPs. -type FloatingIPPage struct { - pagination.LinkedPageBase -} - -// NextPageURL is invoked when a paginated collection of floating IPs has reached -// the end of a page and the pager seeks to traverse over a new one. In order -// to do this, it needs to construct the next page's URL. -func (p FloatingIPPage) NextPageURL() (string, error) { - type resp struct { - Links []gophercloud.Link `mapstructure:"floatingips_links"` - } - - var r resp - err := mapstructure.Decode(p.Body, &r) - if err != nil { - return "", err - } - - return gophercloud.ExtractNextURL(r.Links) -} - -// IsEmpty checks whether a NetworkPage struct is empty. -func (p FloatingIPPage) IsEmpty() (bool, error) { - is, err := ExtractFloatingIPs(p) - if err != nil { - return true, nil - } - return len(is) == 0, nil -} - -// ExtractFloatingIPs accepts a Page struct, specifically a FloatingIPPage struct, -// and extracts the elements into a slice of FloatingIP structs. In other words, -// a generic collection is mapped into a relevant slice. -func ExtractFloatingIPs(page pagination.Page) ([]FloatingIP, error) { - var resp struct { - FloatingIPs []FloatingIP `mapstructure:"floatingips" json:"floatingips"` - } - - err := mapstructure.Decode(page.(FloatingIPPage).Body, &resp) - - return resp.FloatingIPs, err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/extensions/layer3/floatingips/urls.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/extensions/layer3/floatingips/urls.go deleted file mode 100644 index 355f20dc..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/extensions/layer3/floatingips/urls.go +++ /dev/null @@ -1,13 +0,0 @@ -package floatingips - -import "github.com/rackspace/gophercloud" - -const resourcePath = "floatingips" - -func rootURL(c *gophercloud.ServiceClient) string { - return c.ServiceURL(resourcePath) -} - -func resourceURL(c *gophercloud.ServiceClient, id string) string { - return c.ServiceURL(resourcePath, id) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/networks/doc.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/networks/doc.go deleted file mode 100644 index c87a7ce2..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/networks/doc.go +++ /dev/null @@ -1,9 +0,0 @@ -// Package networks contains functionality for working with Neutron network -// resources. A network is an isolated virtual layer-2 broadcast domain that is -// typically reserved for the tenant who created it (unless you configure the -// network to be shared). Tenants can create multiple networks until the -// thresholds per-tenant quota is reached. -// -// In the v2.0 Networking API, the network is the main entity. Ports and subnets -// are always associated with a network. -package networks diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/networks/errors.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/networks/errors.go deleted file mode 100644 index 83c4a6a8..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/networks/errors.go +++ /dev/null @@ -1 +0,0 @@ -package networks diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/networks/requests.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/networks/requests.go deleted file mode 100644 index 7be32274..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/networks/requests.go +++ /dev/null @@ -1,191 +0,0 @@ -package networks - -import ( - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/pagination" -) - -// AdminState gives users a solid type to work with for create and update -// operations. It is recommended that users use the `Up` and `Down` enums. -type AdminState *bool - -// Convenience vars for AdminStateUp values. -var ( - iTrue = true - iFalse = false - - Up AdminState = &iTrue - Down AdminState = &iFalse -) - -type networkOpts struct { - AdminStateUp *bool - Name string - Shared *bool - TenantID string -} - -// ListOptsBuilder allows extensions to add additional parameters to the -// List request. -type ListOptsBuilder interface { - ToNetworkListQuery() (string, error) -} - -// ListOpts allows the filtering and sorting of paginated collections through -// the API. Filtering is achieved by passing in struct field values that map to -// the network attributes you want to see returned. SortKey allows you to sort -// by a particular network attribute. SortDir sets the direction, and is either -// `asc' or `desc'. Marker and Limit are used for pagination. -type ListOpts struct { - Status string `q:"status"` - Name string `q:"name"` - AdminStateUp *bool `q:"admin_state_up"` - TenantID string `q:"tenant_id"` - Shared *bool `q:"shared"` - ID string `q:"id"` - Marker string `q:"marker"` - Limit int `q:"limit"` - SortKey string `q:"sort_key"` - SortDir string `q:"sort_dir"` -} - -// ToNetworkListQuery formats a ListOpts into a query string. -func (opts ListOpts) ToNetworkListQuery() (string, error) { - q, err := gophercloud.BuildQueryString(opts) - if err != nil { - return "", err - } - return q.String(), nil -} - -// List returns a Pager which allows you to iterate over a collection of -// networks. It accepts a ListOpts struct, which allows you to filter and sort -// the returned collection for greater efficiency. -func List(c *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { - url := listURL(c) - if opts != nil { - query, err := opts.ToNetworkListQuery() - if err != nil { - return pagination.Pager{Err: err} - } - url += query - } - - return pagination.NewPager(c, url, func(r pagination.PageResult) pagination.Page { - return NetworkPage{pagination.LinkedPageBase{PageResult: r}} - }) -} - -// Get retrieves a specific network based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) GetResult { - var res GetResult - _, res.Err = c.Get(getURL(c, id), &res.Body, nil) - return res -} - -// CreateOptsBuilder is the interface options structs have to satisfy in order -// to be used in the main Create operation in this package. Since many -// extensions decorate or modify the common logic, it is useful for them to -// satisfy a basic interface in order for them to be used. -type CreateOptsBuilder interface { - ToNetworkCreateMap() (map[string]interface{}, error) -} - -// CreateOpts is the common options struct used in this package's Create -// operation. -type CreateOpts networkOpts - -// ToNetworkCreateMap casts a CreateOpts struct to a map. -func (opts CreateOpts) ToNetworkCreateMap() (map[string]interface{}, error) { - n := make(map[string]interface{}) - - if opts.AdminStateUp != nil { - n["admin_state_up"] = &opts.AdminStateUp - } - if opts.Name != "" { - n["name"] = opts.Name - } - if opts.Shared != nil { - n["shared"] = &opts.Shared - } - if opts.TenantID != "" { - n["tenant_id"] = opts.TenantID - } - - return map[string]interface{}{"network": n}, nil -} - -// Create accepts a CreateOpts struct and creates a new network using the values -// provided. This operation does not actually require a request body, i.e. the -// CreateOpts struct argument can be empty. -// -// The tenant ID that is contained in the URI is the tenant that creates the -// network. An admin user, however, has the option of specifying another tenant -// ID in the CreateOpts struct. -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) CreateResult { - var res CreateResult - - reqBody, err := opts.ToNetworkCreateMap() - if err != nil { - res.Err = err - return res - } - - _, res.Err = c.Post(createURL(c), reqBody, &res.Body, nil) - return res -} - -// UpdateOptsBuilder is the interface options structs have to satisfy in order -// to be used in the main Update operation in this package. Since many -// extensions decorate or modify the common logic, it is useful for them to -// satisfy a basic interface in order for them to be used. -type UpdateOptsBuilder interface { - ToNetworkUpdateMap() (map[string]interface{}, error) -} - -// UpdateOpts is the common options struct used in this package's Update -// operation. -type UpdateOpts networkOpts - -// ToNetworkUpdateMap casts a UpdateOpts struct to a map. -func (opts UpdateOpts) ToNetworkUpdateMap() (map[string]interface{}, error) { - n := make(map[string]interface{}) - - if opts.AdminStateUp != nil { - n["admin_state_up"] = &opts.AdminStateUp - } - if opts.Name != "" { - n["name"] = opts.Name - } - if opts.Shared != nil { - n["shared"] = &opts.Shared - } - - return map[string]interface{}{"network": n}, nil -} - -// Update accepts a UpdateOpts struct and updates an existing network using the -// values provided. For more information, see the Create function. -func Update(c *gophercloud.ServiceClient, networkID string, opts UpdateOptsBuilder) UpdateResult { - var res UpdateResult - - reqBody, err := opts.ToNetworkUpdateMap() - if err != nil { - res.Err = err - return res - } - - // Send request to API - _, res.Err = c.Put(updateURL(c, networkID), reqBody, &res.Body, &gophercloud.RequestOpts{ - OkCodes: []int{200, 201}, - }) - - return res -} - -// Delete accepts a unique ID and deletes the network associated with it. -func Delete(c *gophercloud.ServiceClient, networkID string) DeleteResult { - var res DeleteResult - _, res.Err = c.Delete(deleteURL(c, networkID), nil) - return res -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/networks/results.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/networks/results.go deleted file mode 100644 index 3ecedde9..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/networks/results.go +++ /dev/null @@ -1,116 +0,0 @@ -package networks - -import ( - "github.com/mitchellh/mapstructure" - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/pagination" -) - -type commonResult struct { - gophercloud.Result -} - -// Extract is a function that accepts a result and extracts a network resource. -func (r commonResult) Extract() (*Network, error) { - if r.Err != nil { - return nil, r.Err - } - - var res struct { - Network *Network `json:"network"` - } - - err := mapstructure.Decode(r.Body, &res) - - return res.Network, err -} - -// CreateResult represents the result of a create operation. -type CreateResult struct { - commonResult -} - -// GetResult represents the result of a get operation. -type GetResult struct { - commonResult -} - -// UpdateResult represents the result of an update operation. -type UpdateResult struct { - commonResult -} - -// DeleteResult represents the result of a delete operation. -type DeleteResult struct { - gophercloud.ErrResult -} - -// Network represents, well, a network. -type Network struct { - // UUID for the network - ID string `mapstructure:"id" json:"id"` - - // Human-readable name for the network. Might not be unique. - Name string `mapstructure:"name" json:"name"` - - // The administrative state of network. If false (down), the network does not forward packets. - AdminStateUp bool `mapstructure:"admin_state_up" json:"admin_state_up"` - - // Indicates whether network is currently operational. Possible values include - // `ACTIVE', `DOWN', `BUILD', or `ERROR'. Plug-ins might define additional values. - Status string `mapstructure:"status" json:"status"` - - // Subnets associated with this network. - Subnets []string `mapstructure:"subnets" json:"subnets"` - - // Owner of network. Only admin users can specify a tenant_id other than its own. - TenantID string `mapstructure:"tenant_id" json:"tenant_id"` - - // Specifies whether the network resource can be accessed by any tenant or not. - Shared bool `mapstructure:"shared" json:"shared"` -} - -// NetworkPage is the page returned by a pager when traversing over a -// collection of networks. -type NetworkPage struct { - pagination.LinkedPageBase -} - -// NextPageURL is invoked when a paginated collection of networks has reached -// the end of a page and the pager seeks to traverse over a new one. In order -// to do this, it needs to construct the next page's URL. -func (p NetworkPage) NextPageURL() (string, error) { - type resp struct { - Links []gophercloud.Link `mapstructure:"networks_links"` - } - - var r resp - err := mapstructure.Decode(p.Body, &r) - if err != nil { - return "", err - } - - return gophercloud.ExtractNextURL(r.Links) -} - -// IsEmpty checks whether a NetworkPage struct is empty. -func (p NetworkPage) IsEmpty() (bool, error) { - is, err := ExtractNetworks(p) - if err != nil { - return true, nil - } - return len(is) == 0, nil -} - -// ExtractNetworks accepts a Page struct, specifically a NetworkPage struct, -// and extracts the elements into a slice of Network structs. In other words, -// a generic collection is mapped into a relevant slice. -func ExtractNetworks(page pagination.Page) ([]Network, error) { - var resp struct { - Networks []Network `mapstructure:"networks" json:"networks"` - } - - err := mapstructure.Decode(page.(NetworkPage).Body, &resp) - - return resp.Networks, err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/networks/urls.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/networks/urls.go deleted file mode 100644 index a9eecc52..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/networks/urls.go +++ /dev/null @@ -1,31 +0,0 @@ -package networks - -import "github.com/rackspace/gophercloud" - -func resourceURL(c *gophercloud.ServiceClient, id string) string { - return c.ServiceURL("networks", id) -} - -func rootURL(c *gophercloud.ServiceClient) string { - return c.ServiceURL("networks") -} - -func getURL(c *gophercloud.ServiceClient, id string) string { - return resourceURL(c, id) -} - -func listURL(c *gophercloud.ServiceClient) string { - return rootURL(c) -} - -func createURL(c *gophercloud.ServiceClient) string { - return rootURL(c) -} - -func updateURL(c *gophercloud.ServiceClient, id string) string { - return resourceURL(c, id) -} - -func deleteURL(c *gophercloud.ServiceClient, id string) string { - return resourceURL(c, id) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/ports/doc.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/ports/doc.go deleted file mode 100644 index f16a4bb0..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/ports/doc.go +++ /dev/null @@ -1,8 +0,0 @@ -// Package ports contains functionality for working with Neutron port resources. -// A port represents a virtual switch port on a logical network switch. Virtual -// instances attach their interfaces into ports. The logical port also defines -// the MAC address and the IP address(es) to be assigned to the interfaces -// plugged into them. When IP addresses are associated to a port, this also -// implies the port is associated with a subnet, as the IP address was taken -// from the allocation pool for a specific subnet. -package ports diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/ports/errors.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/ports/errors.go deleted file mode 100644 index 111d977e..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/ports/errors.go +++ /dev/null @@ -1,11 +0,0 @@ -package ports - -import "fmt" - -func err(str string) error { - return fmt.Errorf("%s", str) -} - -var ( - errNetworkIDRequired = err("A Network ID is required") -) diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/ports/requests.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/ports/requests.go deleted file mode 100644 index 781a3c3e..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/ports/requests.go +++ /dev/null @@ -1,225 +0,0 @@ -package ports - -import ( - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/pagination" -) - -// AdminState gives users a solid type to work with for create and update -// operations. It is recommended that users use the `Up` and `Down` enums. -type AdminState *bool - -// Convenience vars for AdminStateUp values. -var ( - iTrue = true - iFalse = false - - Up AdminState = &iTrue - Down AdminState = &iFalse -) - -// ListOptsBuilder allows extensions to add additional parameters to the -// List request. -type ListOptsBuilder interface { - ToPortListQuery() (string, error) -} - -// ListOpts allows the filtering and sorting of paginated collections through -// the API. Filtering is achieved by passing in struct field values that map to -// the port attributes you want to see returned. SortKey allows you to sort -// by a particular port attribute. SortDir sets the direction, and is either -// `asc' or `desc'. Marker and Limit are used for pagination. -type ListOpts struct { - Status string `q:"status"` - Name string `q:"name"` - AdminStateUp *bool `q:"admin_state_up"` - NetworkID string `q:"network_id"` - TenantID string `q:"tenant_id"` - DeviceOwner string `q:"device_owner"` - MACAddress string `q:"mac_address"` - ID string `q:"id"` - DeviceID string `q:"device_id"` - Limit int `q:"limit"` - Marker string `q:"marker"` - SortKey string `q:"sort_key"` - SortDir string `q:"sort_dir"` -} - -// ToPortListQuery formats a ListOpts into a query string. -func (opts ListOpts) ToPortListQuery() (string, error) { - q, err := gophercloud.BuildQueryString(opts) - if err != nil { - return "", err - } - return q.String(), nil -} - -// List returns a Pager which allows you to iterate over a collection of -// ports. It accepts a ListOpts struct, which allows you to filter and sort -// the returned collection for greater efficiency. -// -// Default policy settings return only those ports that are owned by the tenant -// who submits the request, unless the request is submitted by a user with -// administrative rights. -func List(c *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { - url := listURL(c) - if opts != nil { - query, err := opts.ToPortListQuery() - if err != nil { - return pagination.Pager{Err: err} - } - url += query - } - - return pagination.NewPager(c, url, func(r pagination.PageResult) pagination.Page { - return PortPage{pagination.LinkedPageBase{PageResult: r}} - }) -} - -// Get retrieves a specific port based on its unique ID. -func Get(c *gophercloud.ServiceClient, id string) GetResult { - var res GetResult - _, res.Err = c.Get(getURL(c, id), &res.Body, nil) - return res -} - -// CreateOptsBuilder is the interface options structs have to satisfy in order -// to be used in the main Create operation in this package. Since many -// extensions decorate or modify the common logic, it is useful for them to -// satisfy a basic interface in order for them to be used. -type CreateOptsBuilder interface { - ToPortCreateMap() (map[string]interface{}, error) -} - -// CreateOpts represents the attributes used when creating a new port. -type CreateOpts struct { - NetworkID string - Name string - AdminStateUp *bool - MACAddress string - FixedIPs interface{} - DeviceID string - DeviceOwner string - TenantID string - SecurityGroups []string -} - -// ToPortCreateMap casts a CreateOpts struct to a map. -func (opts CreateOpts) ToPortCreateMap() (map[string]interface{}, error) { - p := make(map[string]interface{}) - - if opts.NetworkID == "" { - return nil, errNetworkIDRequired - } - p["network_id"] = opts.NetworkID - - if opts.DeviceID != "" { - p["device_id"] = opts.DeviceID - } - if opts.DeviceOwner != "" { - p["device_owner"] = opts.DeviceOwner - } - if opts.FixedIPs != nil { - p["fixed_ips"] = opts.FixedIPs - } - if opts.SecurityGroups != nil { - p["security_groups"] = opts.SecurityGroups - } - if opts.TenantID != "" { - p["tenant_id"] = opts.TenantID - } - if opts.AdminStateUp != nil { - p["admin_state_up"] = &opts.AdminStateUp - } - if opts.Name != "" { - p["name"] = opts.Name - } - if opts.MACAddress != "" { - p["mac_address"] = opts.MACAddress - } - - return map[string]interface{}{"port": p}, nil -} - -// Create accepts a CreateOpts struct and creates a new network using the values -// provided. You must remember to provide a NetworkID value. -func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) CreateResult { - var res CreateResult - - reqBody, err := opts.ToPortCreateMap() - if err != nil { - res.Err = err - return res - } - - _, res.Err = c.Post(createURL(c), reqBody, &res.Body, nil) - return res -} - -// UpdateOptsBuilder is the interface options structs have to satisfy in order -// to be used in the main Update operation in this package. Since many -// extensions decorate or modify the common logic, it is useful for them to -// satisfy a basic interface in order for them to be used. -type UpdateOptsBuilder interface { - ToPortUpdateMap() (map[string]interface{}, error) -} - -// UpdateOpts represents the attributes used when updating an existing port. -type UpdateOpts struct { - Name string - AdminStateUp *bool - FixedIPs interface{} - DeviceID string - DeviceOwner string - SecurityGroups []string -} - -// ToPortUpdateMap casts an UpdateOpts struct to a map. -func (opts UpdateOpts) ToPortUpdateMap() (map[string]interface{}, error) { - p := make(map[string]interface{}) - - if opts.DeviceID != "" { - p["device_id"] = opts.DeviceID - } - if opts.DeviceOwner != "" { - p["device_owner"] = opts.DeviceOwner - } - if opts.FixedIPs != nil { - p["fixed_ips"] = opts.FixedIPs - } - if opts.SecurityGroups != nil { - p["security_groups"] = opts.SecurityGroups - } - if opts.AdminStateUp != nil { - p["admin_state_up"] = &opts.AdminStateUp - } - if opts.Name != "" { - p["name"] = opts.Name - } - - return map[string]interface{}{"port": p}, nil -} - -// Update accepts a UpdateOpts struct and updates an existing port using the -// values provided. -func Update(c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) UpdateResult { - var res UpdateResult - - reqBody, err := opts.ToPortUpdateMap() - if err != nil { - res.Err = err - return res - } - - _, res.Err = c.Put(updateURL(c, id), reqBody, &res.Body, &gophercloud.RequestOpts{ - OkCodes: []int{200, 201}, - }) - return res -} - -// Delete accepts a unique ID and deletes the port associated with it. -func Delete(c *gophercloud.ServiceClient, id string) DeleteResult { - var res DeleteResult - _, res.Err = c.Delete(deleteURL(c, id), nil) - return res -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/ports/results.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/ports/results.go deleted file mode 100644 index 2511ff53..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/ports/results.go +++ /dev/null @@ -1,126 +0,0 @@ -package ports - -import ( - "github.com/mitchellh/mapstructure" - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/pagination" -) - -type commonResult struct { - gophercloud.Result -} - -// Extract is a function that accepts a result and extracts a port resource. -func (r commonResult) Extract() (*Port, error) { - if r.Err != nil { - return nil, r.Err - } - - var res struct { - Port *Port `json:"port"` - } - - err := mapstructure.Decode(r.Body, &res) - - return res.Port, err -} - -// CreateResult represents the result of a create operation. -type CreateResult struct { - commonResult -} - -// GetResult represents the result of a get operation. -type GetResult struct { - commonResult -} - -// UpdateResult represents the result of an update operation. -type UpdateResult struct { - commonResult -} - -// DeleteResult represents the result of a delete operation. -type DeleteResult struct { - gophercloud.ErrResult -} - -// IP is a sub-struct that represents an individual IP. -type IP struct { - SubnetID string `mapstructure:"subnet_id" json:"subnet_id"` - IPAddress string `mapstructure:"ip_address" json:"ip_address,omitempty"` -} - -// Port represents a Neutron port. See package documentation for a top-level -// description of what this is. -type Port struct { - // UUID for the port. - ID string `mapstructure:"id" json:"id"` - // Network that this port is associated with. - NetworkID string `mapstructure:"network_id" json:"network_id"` - // Human-readable name for the port. Might not be unique. - Name string `mapstructure:"name" json:"name"` - // Administrative state of port. If false (down), port does not forward packets. - AdminStateUp bool `mapstructure:"admin_state_up" json:"admin_state_up"` - // Indicates whether network is currently operational. Possible values include - // `ACTIVE', `DOWN', `BUILD', or `ERROR'. Plug-ins might define additional values. - Status string `mapstructure:"status" json:"status"` - // Mac address to use on this port. - MACAddress string `mapstructure:"mac_address" json:"mac_address"` - // Specifies IP addresses for the port thus associating the port itself with - // the subnets where the IP addresses are picked from - FixedIPs []IP `mapstructure:"fixed_ips" json:"fixed_ips"` - // Owner of network. Only admin users can specify a tenant_id other than its own. - TenantID string `mapstructure:"tenant_id" json:"tenant_id"` - // Identifies the entity (e.g.: dhcp agent) using this port. - DeviceOwner string `mapstructure:"device_owner" json:"device_owner"` - // Specifies the IDs of any security groups associated with a port. - SecurityGroups []string `mapstructure:"security_groups" json:"security_groups"` - // Identifies the device (e.g., virtual server) using this port. - DeviceID string `mapstructure:"device_id" json:"device_id"` -} - -// PortPage is the page returned by a pager when traversing over a collection -// of network ports. -type PortPage struct { - pagination.LinkedPageBase -} - -// NextPageURL is invoked when a paginated collection of ports has reached -// the end of a page and the pager seeks to traverse over a new one. In order -// to do this, it needs to construct the next page's URL. -func (p PortPage) NextPageURL() (string, error) { - type resp struct { - Links []gophercloud.Link `mapstructure:"ports_links"` - } - - var r resp - err := mapstructure.Decode(p.Body, &r) - if err != nil { - return "", err - } - - return gophercloud.ExtractNextURL(r.Links) -} - -// IsEmpty checks whether a PortPage struct is empty. -func (p PortPage) IsEmpty() (bool, error) { - is, err := ExtractPorts(p) - if err != nil { - return true, nil - } - return len(is) == 0, nil -} - -// ExtractPorts accepts a Page struct, specifically a PortPage struct, -// and extracts the elements into a slice of Port structs. In other words, -// a generic collection is mapped into a relevant slice. -func ExtractPorts(page pagination.Page) ([]Port, error) { - var resp struct { - Ports []Port `mapstructure:"ports" json:"ports"` - } - - err := mapstructure.Decode(page.(PortPage).Body, &resp) - - return resp.Ports, err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/ports/urls.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/ports/urls.go deleted file mode 100644 index 6d0572f1..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/networking/v2/ports/urls.go +++ /dev/null @@ -1,31 +0,0 @@ -package ports - -import "github.com/rackspace/gophercloud" - -func resourceURL(c *gophercloud.ServiceClient, id string) string { - return c.ServiceURL("ports", id) -} - -func rootURL(c *gophercloud.ServiceClient) string { - return c.ServiceURL("ports") -} - -func listURL(c *gophercloud.ServiceClient) string { - return rootURL(c) -} - -func getURL(c *gophercloud.ServiceClient, id string) string { - return resourceURL(c, id) -} - -func createURL(c *gophercloud.ServiceClient) string { - return rootURL(c) -} - -func updateURL(c *gophercloud.ServiceClient, id string) string { - return resourceURL(c, id) -} - -func deleteURL(c *gophercloud.ServiceClient, id string) string { - return resourceURL(c, id) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/utils/choose_version.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/utils/choose_version.go deleted file mode 100644 index b697ba81..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/openstack/utils/choose_version.go +++ /dev/null @@ -1,114 +0,0 @@ -package utils - -import ( - "fmt" - "strings" - - "github.com/rackspace/gophercloud" -) - -// Version is a supported API version, corresponding to a vN package within the appropriate service. -type Version struct { - ID string - Suffix string - Priority int -} - -var goodStatus = map[string]bool{ - "current": true, - "supported": true, - "stable": true, -} - -// ChooseVersion queries the base endpoint of an API to choose the most recent non-experimental alternative from a service's -// published versions. -// It returns the highest-Priority Version among the alternatives that are provided, as well as its corresponding endpoint. -func ChooseVersion(client *gophercloud.ProviderClient, recognized []*Version) (*Version, string, error) { - type linkResp struct { - Href string `json:"href"` - Rel string `json:"rel"` - } - - type valueResp struct { - ID string `json:"id"` - Status string `json:"status"` - Links []linkResp `json:"links"` - } - - type versionsResp struct { - Values []valueResp `json:"values"` - } - - type response struct { - Versions versionsResp `json:"versions"` - } - - normalize := func(endpoint string) string { - if !strings.HasSuffix(endpoint, "/") { - return endpoint + "/" - } - return endpoint - } - identityEndpoint := normalize(client.IdentityEndpoint) - - // If a full endpoint is specified, check version suffixes for a match first. - for _, v := range recognized { - if strings.HasSuffix(identityEndpoint, v.Suffix) { - return v, identityEndpoint, nil - } - } - - var resp response - _, err := client.Request("GET", client.IdentityBase, gophercloud.RequestOpts{ - JSONResponse: &resp, - OkCodes: []int{200, 300}, - }) - - if err != nil { - return nil, "", err - } - - byID := make(map[string]*Version) - for _, version := range recognized { - byID[version.ID] = version - } - - var highest *Version - var endpoint string - - for _, value := range resp.Versions.Values { - href := "" - for _, link := range value.Links { - if link.Rel == "self" { - href = normalize(link.Href) - } - } - - if matching, ok := byID[value.ID]; ok { - // Prefer a version that exactly matches the provided endpoint. - if href == identityEndpoint { - if href == "" { - return nil, "", fmt.Errorf("Endpoint missing in version %s response from %s", value.ID, client.IdentityBase) - } - return matching, href, nil - } - - // Otherwise, find the highest-priority version with a whitelisted status. - if goodStatus[strings.ToLower(value.Status)] { - if highest == nil || matching.Priority > highest.Priority { - highest = matching - endpoint = href - } - } - } - } - - if highest == nil { - return nil, "", fmt.Errorf("No supported version available from endpoint %s", client.IdentityBase) - } - if endpoint == "" { - return nil, "", fmt.Errorf("Endpoint missing in version %s response from %s", highest.ID, client.IdentityBase) - } - - return highest, endpoint, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/pagination/http.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/pagination/http.go deleted file mode 100644 index cabcccd7..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/pagination/http.go +++ /dev/null @@ -1,54 +0,0 @@ -package pagination - -import ( - "encoding/json" - "io/ioutil" - "net/http" - "net/url" - "strings" - - "github.com/rackspace/gophercloud" -) - -// PageResult stores the HTTP response that returned the current page of results. -type PageResult struct { - gophercloud.Result - url.URL -} - -// PageResultFrom parses an HTTP response as JSON and returns a PageResult containing the -// results, interpreting it as JSON if the content type indicates. -func PageResultFrom(resp *http.Response) (PageResult, error) { - var parsedBody interface{} - - defer resp.Body.Close() - rawBody, err := ioutil.ReadAll(resp.Body) - if err != nil { - return PageResult{}, err - } - - if strings.HasPrefix(resp.Header.Get("Content-Type"), "application/json") { - err = json.Unmarshal(rawBody, &parsedBody) - if err != nil { - return PageResult{}, err - } - } else { - parsedBody = rawBody - } - - return PageResult{ - Result: gophercloud.Result{ - Body: parsedBody, - Header: resp.Header, - }, - URL: *resp.Request.URL, - }, err -} - -// Request performs an HTTP request and extracts the http.Response from the result. -func Request(client *gophercloud.ServiceClient, headers map[string]string, url string) (*http.Response, error) { - return client.Request("GET", url, gophercloud.RequestOpts{ - MoreHeaders: headers, - OkCodes: []int{200, 204}, - }) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/pagination/linked.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/pagination/linked.go deleted file mode 100644 index e9bd8dec..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/pagination/linked.go +++ /dev/null @@ -1,67 +0,0 @@ -package pagination - -import "fmt" - -// LinkedPageBase may be embedded to implement a page that provides navigational "Next" and "Previous" links within its result. -type LinkedPageBase struct { - PageResult - - // LinkPath lists the keys that should be traversed within a response to arrive at the "next" pointer. - // If any link along the path is missing, an empty URL will be returned. - // If any link results in an unexpected value type, an error will be returned. - // When left as "nil", []string{"links", "next"} will be used as a default. - LinkPath []string -} - -// NextPageURL extracts the pagination structure from a JSON response and returns the "next" link, if one is present. -// It assumes that the links are available in a "links" element of the top-level response object. -// If this is not the case, override NextPageURL on your result type. -func (current LinkedPageBase) NextPageURL() (string, error) { - var path []string - var key string - - if current.LinkPath == nil { - path = []string{"links", "next"} - } else { - path = current.LinkPath - } - - submap, ok := current.Body.(map[string]interface{}) - if !ok { - return "", fmt.Errorf("Expected an object, but was %#v", current.Body) - } - - for { - key, path = path[0], path[1:len(path)] - - value, ok := submap[key] - if !ok { - return "", nil - } - - if len(path) > 0 { - submap, ok = value.(map[string]interface{}) - if !ok { - return "", fmt.Errorf("Expected an object, but was %#v", value) - } - } else { - if value == nil { - // Actual null element. - return "", nil - } - - url, ok := value.(string) - if !ok { - return "", fmt.Errorf("Expected a string, but was %#v", value) - } - - return url, nil - } - } -} - -// GetBody returns the linked page's body. This method is needed to satisfy the -// Page interface. -func (current LinkedPageBase) GetBody() interface{} { - return current.Body -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/pagination/marker.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/pagination/marker.go deleted file mode 100644 index f355afc5..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/pagination/marker.go +++ /dev/null @@ -1,40 +0,0 @@ -package pagination - -// MarkerPage is a stricter Page interface that describes additional functionality required for use with NewMarkerPager. -// For convenience, embed the MarkedPageBase struct. -type MarkerPage interface { - Page - - // LastMarker returns the last "marker" value on this page. - LastMarker() (string, error) -} - -// MarkerPageBase is a page in a collection that's paginated by "limit" and "marker" query parameters. -type MarkerPageBase struct { - PageResult - - // Owner is a reference to the embedding struct. - Owner MarkerPage -} - -// NextPageURL generates the URL for the page of results after this one. -func (current MarkerPageBase) NextPageURL() (string, error) { - currentURL := current.URL - - mark, err := current.Owner.LastMarker() - if err != nil { - return "", err - } - - q := currentURL.Query() - q.Set("marker", mark) - currentURL.RawQuery = q.Encode() - - return currentURL.String(), nil -} - -// GetBody returns the linked page's body. This method is needed to satisfy the -// Page interface. -func (current MarkerPageBase) GetBody() interface{} { - return current.Body -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/pagination/null.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/pagination/null.go deleted file mode 100644 index ae57e188..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/pagination/null.go +++ /dev/null @@ -1,20 +0,0 @@ -package pagination - -// nullPage is an always-empty page that trivially satisfies all Page interfacts. -// It's useful to be returned along with an error. -type nullPage struct{} - -// NextPageURL always returns "" to indicate that there are no more pages to return. -func (p nullPage) NextPageURL() (string, error) { - return "", nil -} - -// IsEmpty always returns true to prevent iteration over nullPages. -func (p nullPage) IsEmpty() (bool, error) { - return true, nil -} - -// LastMark always returns "" because the nullPage contains no items to have a mark. -func (p nullPage) LastMark() (string, error) { - return "", nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/pagination/pager.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/pagination/pager.go deleted file mode 100644 index ea47c695..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/pagination/pager.go +++ /dev/null @@ -1,224 +0,0 @@ -package pagination - -import ( - "errors" - "fmt" - "net/http" - "reflect" - "strings" - - "github.com/rackspace/gophercloud" -) - -var ( - // ErrPageNotAvailable is returned from a Pager when a next or previous page is requested, but does not exist. - ErrPageNotAvailable = errors.New("The requested page does not exist.") -) - -// Page must be satisfied by the result type of any resource collection. -// It allows clients to interact with the resource uniformly, regardless of whether or not or how it's paginated. -// Generally, rather than implementing this interface directly, implementors should embed one of the concrete PageBase structs, -// instead. -// Depending on the pagination strategy of a particular resource, there may be an additional subinterface that the result type -// will need to implement. -type Page interface { - - // NextPageURL generates the URL for the page of data that follows this collection. - // Return "" if no such page exists. - NextPageURL() (string, error) - - // IsEmpty returns true if this Page has no items in it. - IsEmpty() (bool, error) - - // GetBody returns the Page Body. This is used in the `AllPages` method. - GetBody() interface{} -} - -// Pager knows how to advance through a specific resource collection, one page at a time. -type Pager struct { - client *gophercloud.ServiceClient - - initialURL string - - createPage func(r PageResult) Page - - Err error - - // Headers supplies additional HTTP headers to populate on each paged request. - Headers map[string]string -} - -// NewPager constructs a manually-configured pager. -// Supply the URL for the first page, a function that requests a specific page given a URL, and a function that counts a page. -func NewPager(client *gophercloud.ServiceClient, initialURL string, createPage func(r PageResult) Page) Pager { - return Pager{ - client: client, - initialURL: initialURL, - createPage: createPage, - } -} - -// WithPageCreator returns a new Pager that substitutes a different page creation function. This is -// useful for overriding List functions in delegation. -func (p Pager) WithPageCreator(createPage func(r PageResult) Page) Pager { - return Pager{ - client: p.client, - initialURL: p.initialURL, - createPage: createPage, - } -} - -func (p Pager) fetchNextPage(url string) (Page, error) { - resp, err := Request(p.client, p.Headers, url) - if err != nil { - return nil, err - } - - remembered, err := PageResultFrom(resp) - if err != nil { - return nil, err - } - - return p.createPage(remembered), nil -} - -// EachPage iterates over each page returned by a Pager, yielding one at a time to a handler function. -// Return "false" from the handler to prematurely stop iterating. -func (p Pager) EachPage(handler func(Page) (bool, error)) error { - if p.Err != nil { - return p.Err - } - currentURL := p.initialURL - for { - currentPage, err := p.fetchNextPage(currentURL) - if err != nil { - return err - } - - empty, err := currentPage.IsEmpty() - if err != nil { - return err - } - if empty { - return nil - } - - ok, err := handler(currentPage) - if err != nil { - return err - } - if !ok { - return nil - } - - currentURL, err = currentPage.NextPageURL() - if err != nil { - return err - } - if currentURL == "" { - return nil - } - } -} - -// AllPages returns all the pages from a `List` operation in a single page, -// allowing the user to retrieve all the pages at once. -func (p Pager) AllPages() (Page, error) { - // pagesSlice holds all the pages until they get converted into as Page Body. - var pagesSlice []interface{} - // body will contain the final concatenated Page body. - var body reflect.Value - - // Grab a test page to ascertain the page body type. - testPage, err := p.fetchNextPage(p.initialURL) - if err != nil { - return nil, err - } - // Store the page type so we can use reflection to create a new mega-page of - // that type. - pageType := reflect.TypeOf(testPage) - - // Switch on the page body type. Recognized types are `map[string]interface{}`, - // `[]byte`, and `[]interface{}`. - switch testPage.GetBody().(type) { - case map[string]interface{}: - // key is the map key for the page body if the body type is `map[string]interface{}`. - var key string - // Iterate over the pages to concatenate the bodies. - err := p.EachPage(func(page Page) (bool, error) { - b := page.GetBody().(map[string]interface{}) - for k := range b { - // If it's a linked page, we don't want the `links`, we want the other one. - if !strings.HasSuffix(k, "links") { - key = k - } - } - pagesSlice = append(pagesSlice, b[key].([]interface{})...) - return true, nil - }) - if err != nil { - return nil, err - } - // Set body to value of type `map[string]interface{}` - body = reflect.MakeMap(reflect.MapOf(reflect.TypeOf(key), reflect.TypeOf(pagesSlice))) - body.SetMapIndex(reflect.ValueOf(key), reflect.ValueOf(pagesSlice)) - case []byte: - // Iterate over the pages to concatenate the bodies. - err := p.EachPage(func(page Page) (bool, error) { - b := page.GetBody().([]byte) - pagesSlice = append(pagesSlice, b) - // seperate pages with a comma - pagesSlice = append(pagesSlice, []byte{10}) - return true, nil - }) - if err != nil { - return nil, err - } - // Remove the trailing comma. - pagesSlice = pagesSlice[:len(pagesSlice)-1] - var b []byte - // Combine the slice of slices in to a single slice. - for _, slice := range pagesSlice { - b = append(b, slice.([]byte)...) - } - // Set body to value of type `bytes`. - body = reflect.New(reflect.TypeOf(b)).Elem() - body.SetBytes(b) - case []interface{}: - // Iterate over the pages to concatenate the bodies. - err := p.EachPage(func(page Page) (bool, error) { - b := page.GetBody().([]interface{}) - pagesSlice = append(pagesSlice, b...) - return true, nil - }) - if err != nil { - return nil, err - } - // Set body to value of type `[]interface{}` - body = reflect.MakeSlice(reflect.TypeOf(pagesSlice), len(pagesSlice), len(pagesSlice)) - for i, s := range pagesSlice { - body.Index(i).Set(reflect.ValueOf(s)) - } - default: - return nil, fmt.Errorf("Page body has unrecognized type.") - } - - // Each `Extract*` function is expecting a specific type of page coming back, - // otherwise the type assertion in those functions will fail. pageType is needed - // to create a type in this method that has the same type that the `Extract*` - // function is expecting and set the Body of that object to the concatenated - // pages. - page := reflect.New(pageType) - // Set the page body to be the concatenated pages. - page.Elem().FieldByName("Body").Set(body) - // Set any additional headers that were pass along. The `objectstorage` pacakge, - // for example, passes a Content-Type header. - h := make(http.Header) - for k, v := range p.Headers { - h.Add(k, v) - } - page.Elem().FieldByName("Header").Set(reflect.ValueOf(h)) - // Type assert the page to a Page interface so that the type assertion in the - // `Extract*` methods will work. - return page.Elem().Interface().(Page), err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/pagination/pkg.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/pagination/pkg.go deleted file mode 100644 index 912daea3..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/pagination/pkg.go +++ /dev/null @@ -1,4 +0,0 @@ -/* -Package pagination contains utilities and convenience structs that implement common pagination idioms within OpenStack APIs. -*/ -package pagination diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/pagination/single.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/pagination/single.go deleted file mode 100644 index f78d4ab5..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/pagination/single.go +++ /dev/null @@ -1,15 +0,0 @@ -package pagination - -// SinglePageBase may be embedded in a Page that contains all of the results from an operation at once. -type SinglePageBase PageResult - -// NextPageURL always returns "" to indicate that there are no more pages to return. -func (current SinglePageBase) NextPageURL() (string, error) { - return "", nil -} - -// GetBody returns the single page's body. This method is needed to satisfy the -// Page interface. -func (current SinglePageBase) GetBody() interface{} { - return current.Body -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/params.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/params.go deleted file mode 100644 index 4d0f1e6e..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/params.go +++ /dev/null @@ -1,271 +0,0 @@ -package gophercloud - -import ( - "fmt" - "net/url" - "reflect" - "strconv" - "strings" - "time" -) - -// EnabledState is a convenience type, mostly used in Create and Update -// operations. Because the zero value of a bool is FALSE, we need to use a -// pointer instead to indicate zero-ness. -type EnabledState *bool - -// Convenience vars for EnabledState values. -var ( - iTrue = true - iFalse = false - - Enabled EnabledState = &iTrue - Disabled EnabledState = &iFalse -) - -// IntToPointer is a function for converting integers into integer pointers. -// This is useful when passing in options to operations. -func IntToPointer(i int) *int { - return &i -} - -/* -MaybeString is an internal function to be used by request methods in individual -resource packages. - -It takes a string that might be a zero value and returns either a pointer to its -address or nil. This is useful for allowing users to conveniently omit values -from an options struct by leaving them zeroed, but still pass nil to the JSON -serializer so they'll be omitted from the request body. -*/ -func MaybeString(original string) *string { - if original != "" { - return &original - } - return nil -} - -/* -MaybeInt is an internal function to be used by request methods in individual -resource packages. - -Like MaybeString, it accepts an int that may or may not be a zero value, and -returns either a pointer to its address or nil. It's intended to hint that the -JSON serializer should omit its field. -*/ -func MaybeInt(original int) *int { - if original != 0 { - return &original - } - return nil -} - -var t time.Time - -func isZero(v reflect.Value) bool { - switch v.Kind() { - case reflect.Func, reflect.Map, reflect.Slice: - return v.IsNil() - case reflect.Array: - z := true - for i := 0; i < v.Len(); i++ { - z = z && isZero(v.Index(i)) - } - return z - case reflect.Struct: - if v.Type() == reflect.TypeOf(t) { - if v.Interface().(time.Time).IsZero() { - return true - } - return false - } - z := true - for i := 0; i < v.NumField(); i++ { - z = z && isZero(v.Field(i)) - } - return z - } - // Compare other types directly: - z := reflect.Zero(v.Type()) - return v.Interface() == z.Interface() -} - -/* -BuildQueryString is an internal function to be used by request methods in -individual resource packages. - -It accepts a tagged structure and expands it into a URL struct. Field names are -converted into query parameters based on a "q" tag. For example: - - type struct Something { - Bar string `q:"x_bar"` - Baz int `q:"lorem_ipsum"` - } - - instance := Something{ - Bar: "AAA", - Baz: "BBB", - } - -will be converted into "?x_bar=AAA&lorem_ipsum=BBB". - -The struct's fields may be strings, integers, or boolean values. Fields left at -their type's zero value will be omitted from the query. -*/ -func BuildQueryString(opts interface{}) (*url.URL, error) { - optsValue := reflect.ValueOf(opts) - if optsValue.Kind() == reflect.Ptr { - optsValue = optsValue.Elem() - } - - optsType := reflect.TypeOf(opts) - if optsType.Kind() == reflect.Ptr { - optsType = optsType.Elem() - } - - params := url.Values{} - - if optsValue.Kind() == reflect.Struct { - for i := 0; i < optsValue.NumField(); i++ { - v := optsValue.Field(i) - f := optsType.Field(i) - qTag := f.Tag.Get("q") - - // if the field has a 'q' tag, it goes in the query string - if qTag != "" { - tags := strings.Split(qTag, ",") - - // if the field is set, add it to the slice of query pieces - if !isZero(v) { - switch v.Kind() { - case reflect.String: - params.Add(tags[0], v.String()) - case reflect.Int: - params.Add(tags[0], strconv.FormatInt(v.Int(), 10)) - case reflect.Bool: - params.Add(tags[0], strconv.FormatBool(v.Bool())) - case reflect.Slice: - switch v.Type().Elem() { - case reflect.TypeOf(0): - for i := 0; i < v.Len(); i++ { - params.Add(tags[0], strconv.FormatInt(v.Index(i).Int(), 10)) - } - default: - for i := 0; i < v.Len(); i++ { - params.Add(tags[0], v.Index(i).String()) - } - } - } - } else { - // Otherwise, the field is not set. - if len(tags) == 2 && tags[1] == "required" { - // And the field is required. Return an error. - return nil, fmt.Errorf("Required query parameter [%s] not set.", f.Name) - } - } - } - } - - return &url.URL{RawQuery: params.Encode()}, nil - } - // Return an error if the underlying type of 'opts' isn't a struct. - return nil, fmt.Errorf("Options type is not a struct.") -} - -/* -BuildHeaders is an internal function to be used by request methods in -individual resource packages. - -It accepts an arbitrary tagged structure and produces a string map that's -suitable for use as the HTTP headers of an outgoing request. Field names are -mapped to header names based in "h" tags. - - type struct Something { - Bar string `h:"x_bar"` - Baz int `h:"lorem_ipsum"` - } - - instance := Something{ - Bar: "AAA", - Baz: "BBB", - } - -will be converted into: - - map[string]string{ - "x_bar": "AAA", - "lorem_ipsum": "BBB", - } - -Untagged fields and fields left at their zero values are skipped. Integers, -booleans and string values are supported. -*/ -func BuildHeaders(opts interface{}) (map[string]string, error) { - optsValue := reflect.ValueOf(opts) - if optsValue.Kind() == reflect.Ptr { - optsValue = optsValue.Elem() - } - - optsType := reflect.TypeOf(opts) - if optsType.Kind() == reflect.Ptr { - optsType = optsType.Elem() - } - - optsMap := make(map[string]string) - if optsValue.Kind() == reflect.Struct { - for i := 0; i < optsValue.NumField(); i++ { - v := optsValue.Field(i) - f := optsType.Field(i) - hTag := f.Tag.Get("h") - - // if the field has a 'h' tag, it goes in the header - if hTag != "" { - tags := strings.Split(hTag, ",") - - // if the field is set, add it to the slice of query pieces - if !isZero(v) { - switch v.Kind() { - case reflect.String: - optsMap[tags[0]] = v.String() - case reflect.Int: - optsMap[tags[0]] = strconv.FormatInt(v.Int(), 10) - case reflect.Bool: - optsMap[tags[0]] = strconv.FormatBool(v.Bool()) - } - } else { - // Otherwise, the field is not set. - if len(tags) == 2 && tags[1] == "required" { - // And the field is required. Return an error. - return optsMap, fmt.Errorf("Required header not set.") - } - } - } - - } - return optsMap, nil - } - // Return an error if the underlying type of 'opts' isn't a struct. - return optsMap, fmt.Errorf("Options type is not a struct.") -} - -// IDSliceToQueryString takes a slice of elements and converts them into a query -// string. For example, if name=foo and slice=[]int{20, 40, 60}, then the -// result would be `?name=20&name=40&name=60' -func IDSliceToQueryString(name string, ids []int) string { - str := "" - for k, v := range ids { - if k == 0 { - str += "?" - } else { - str += "&" - } - str += fmt.Sprintf("%s=%s", name, strconv.Itoa(v)) - } - return str -} - -// IntWithinRange returns TRUE if an integer falls within a defined range, and -// FALSE if not. -func IntWithinRange(val, min, max int) bool { - return val > min && val < max -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/provider_client.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/provider_client.go deleted file mode 100644 index 0dff2cfc..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/provider_client.go +++ /dev/null @@ -1,300 +0,0 @@ -package gophercloud - -import ( - "bytes" - "encoding/json" - "fmt" - "io" - "io/ioutil" - "net/http" - "strings" -) - -// DefaultUserAgent is the default User-Agent string set in the request header. -const DefaultUserAgent = "gophercloud/1.0.0" - -// UserAgent represents a User-Agent header. -type UserAgent struct { - // prepend is the slice of User-Agent strings to prepend to DefaultUserAgent. - // All the strings to prepend are accumulated and prepended in the Join method. - prepend []string -} - -// Prepend prepends a user-defined string to the default User-Agent string. Users -// may pass in one or more strings to prepend. -func (ua *UserAgent) Prepend(s ...string) { - ua.prepend = append(s, ua.prepend...) -} - -// Join concatenates all the user-defined User-Agend strings with the default -// Gophercloud User-Agent string. -func (ua *UserAgent) Join() string { - uaSlice := append(ua.prepend, DefaultUserAgent) - return strings.Join(uaSlice, " ") -} - -// ProviderClient stores details that are required to interact with any -// services within a specific provider's API. -// -// Generally, you acquire a ProviderClient by calling the NewClient method in -// the appropriate provider's child package, providing whatever authentication -// credentials are required. -type ProviderClient struct { - // IdentityBase is the base URL used for a particular provider's identity - // service - it will be used when issuing authenticatation requests. It - // should point to the root resource of the identity service, not a specific - // identity version. - IdentityBase string - - // IdentityEndpoint is the identity endpoint. This may be a specific version - // of the identity service. If this is the case, this endpoint is used rather - // than querying versions first. - IdentityEndpoint string - - // TokenID is the ID of the most recently issued valid token. - TokenID string - - // EndpointLocator describes how this provider discovers the endpoints for - // its constituent services. - EndpointLocator EndpointLocator - - // HTTPClient allows users to interject arbitrary http, https, or other transit behaviors. - HTTPClient http.Client - - // UserAgent represents the User-Agent header in the HTTP request. - UserAgent UserAgent - - // ReauthFunc is the function used to re-authenticate the user if the request - // fails with a 401 HTTP response code. This a needed because there may be multiple - // authentication functions for different Identity service versions. - ReauthFunc func() error -} - -// AuthenticatedHeaders returns a map of HTTP headers that are common for all -// authenticated service requests. -func (client *ProviderClient) AuthenticatedHeaders() map[string]string { - if client.TokenID == "" { - return map[string]string{} - } - return map[string]string{"X-Auth-Token": client.TokenID} -} - -// RequestOpts customizes the behavior of the provider.Request() method. -type RequestOpts struct { - // JSONBody, if provided, will be encoded as JSON and used as the body of the HTTP request. The - // content type of the request will default to "application/json" unless overridden by MoreHeaders. - // It's an error to specify both a JSONBody and a RawBody. - JSONBody interface{} - // RawBody contains an io.Reader that will be consumed by the request directly. No content-type - // will be set unless one is provided explicitly by MoreHeaders. - RawBody io.Reader - - // JSONResponse, if provided, will be populated with the contents of the response body parsed as - // JSON. - JSONResponse interface{} - // OkCodes contains a list of numeric HTTP status codes that should be interpreted as success. If - // the response has a different code, an error will be returned. - OkCodes []int - - // MoreHeaders specifies additional HTTP headers to be provide on the request. If a header is - // provided with a blank value (""), that header will be *omitted* instead: use this to suppress - // the default Accept header or an inferred Content-Type, for example. - MoreHeaders map[string]string -} - -// UnexpectedResponseCodeError is returned by the Request method when a response code other than -// those listed in OkCodes is encountered. -type UnexpectedResponseCodeError struct { - URL string - Method string - Expected []int - Actual int - Body []byte -} - -func (err *UnexpectedResponseCodeError) Error() string { - return fmt.Sprintf( - "Expected HTTP response code %v when accessing [%s %s], but got %d instead\n%s", - err.Expected, err.Method, err.URL, err.Actual, err.Body, - ) -} - -var applicationJSON = "application/json" - -// Request performs an HTTP request using the ProviderClient's current HTTPClient. An authentication -// header will automatically be provided. -func (client *ProviderClient) Request(method, url string, options RequestOpts) (*http.Response, error) { - var body io.Reader - var contentType *string - - // Derive the content body by either encoding an arbitrary object as JSON, or by taking a provided - // io.Reader as-is. Default the content-type to application/json. - if options.JSONBody != nil { - if options.RawBody != nil { - panic("Please provide only one of JSONBody or RawBody to gophercloud.Request().") - } - - rendered, err := json.Marshal(options.JSONBody) - if err != nil { - return nil, err - } - - body = bytes.NewReader(rendered) - contentType = &applicationJSON - } - - if options.RawBody != nil { - body = options.RawBody - } - - // Construct the http.Request. - req, err := http.NewRequest(method, url, body) - if err != nil { - return nil, err - } - - // Populate the request headers. Apply options.MoreHeaders last, to give the caller the chance to - // modify or omit any header. - if contentType != nil { - req.Header.Set("Content-Type", *contentType) - } - req.Header.Set("Accept", applicationJSON) - - for k, v := range client.AuthenticatedHeaders() { - req.Header.Add(k, v) - } - - // Set the User-Agent header - req.Header.Set("User-Agent", client.UserAgent.Join()) - - if options.MoreHeaders != nil { - for k, v := range options.MoreHeaders { - if v != "" { - req.Header.Set(k, v) - } else { - req.Header.Del(k) - } - } - } - - // Issue the request. - resp, err := client.HTTPClient.Do(req) - if err != nil { - return nil, err - } - - if resp.StatusCode == http.StatusUnauthorized { - if client.ReauthFunc != nil { - err = client.ReauthFunc() - if err != nil { - return nil, fmt.Errorf("Error trying to re-authenticate: %s", err) - } - resp, err = client.Request(method, url, options) - if err != nil { - return nil, fmt.Errorf("Successfully re-authenticated, but got error executing request: %s", err) - } - } - } - - // Allow default OkCodes if none explicitly set - if options.OkCodes == nil { - options.OkCodes = defaultOkCodes(method) - } - - // Validate the HTTP response status. - var ok bool - for _, code := range options.OkCodes { - if resp.StatusCode == code { - ok = true - break - } - } - if !ok { - body, _ := ioutil.ReadAll(resp.Body) - resp.Body.Close() - return resp, &UnexpectedResponseCodeError{ - URL: url, - Method: method, - Expected: options.OkCodes, - Actual: resp.StatusCode, - Body: body, - } - } - - // Parse the response body as JSON, if requested to do so. - if options.JSONResponse != nil { - defer resp.Body.Close() - json.NewDecoder(resp.Body).Decode(options.JSONResponse) - } - - return resp, nil -} - -func defaultOkCodes(method string) []int { - switch { - case method == "GET": - return []int{200} - case method == "POST": - return []int{201, 202} - case method == "PUT": - return []int{201, 202} - case method == "DELETE": - return []int{202, 204} - } - - return []int{} -} - -func (client *ProviderClient) Get(url string, JSONResponse *interface{}, opts *RequestOpts) (*http.Response, error) { - if opts == nil { - opts = &RequestOpts{} - } - if JSONResponse != nil { - opts.JSONResponse = JSONResponse - } - return client.Request("GET", url, *opts) -} - -func (client *ProviderClient) Post(url string, JSONBody interface{}, JSONResponse *interface{}, opts *RequestOpts) (*http.Response, error) { - if opts == nil { - opts = &RequestOpts{} - } - - if v, ok := (JSONBody).(io.Reader); ok { - opts.RawBody = v - } else if JSONBody != nil { - opts.JSONBody = JSONBody - } - - if JSONResponse != nil { - opts.JSONResponse = JSONResponse - } - - return client.Request("POST", url, *opts) -} - -func (client *ProviderClient) Put(url string, JSONBody interface{}, JSONResponse *interface{}, opts *RequestOpts) (*http.Response, error) { - if opts == nil { - opts = &RequestOpts{} - } - - if v, ok := (JSONBody).(io.Reader); ok { - opts.RawBody = v - } else if JSONBody != nil { - opts.JSONBody = JSONBody - } - - if JSONResponse != nil { - opts.JSONResponse = JSONResponse - } - - return client.Request("PUT", url, *opts) -} - -func (client *ProviderClient) Delete(url string, opts *RequestOpts) (*http.Response, error) { - if opts == nil { - opts = &RequestOpts{} - } - - return client.Request("DELETE", url, *opts) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/rackspace/auth_env.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/rackspace/auth_env.go deleted file mode 100644 index 5852c3ce..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/rackspace/auth_env.go +++ /dev/null @@ -1,57 +0,0 @@ -package rackspace - -import ( - "fmt" - "os" - - "github.com/rackspace/gophercloud" -) - -var nilOptions = gophercloud.AuthOptions{} - -// ErrNoAuthUrl, ErrNoUsername, and ErrNoPassword errors indicate of the -// required RS_AUTH_URL, RS_USERNAME, or RS_PASSWORD environment variables, -// respectively, remain undefined. See the AuthOptions() function for more details. -var ( - ErrNoAuthURL = fmt.Errorf("Environment variable RS_AUTH_URL or OS_AUTH_URL need to be set.") - ErrNoUsername = fmt.Errorf("Environment variable RS_USERNAME or OS_USERNAME need to be set.") - ErrNoPassword = fmt.Errorf("Environment variable RS_API_KEY or RS_PASSWORD needs to be set.") -) - -func prefixedEnv(base string) string { - value := os.Getenv("RS_" + base) - if value == "" { - value = os.Getenv("OS_" + base) - } - return value -} - -// AuthOptionsFromEnv fills out an identity.AuthOptions structure with the -// settings found on the various Rackspace RS_* environment variables. -func AuthOptionsFromEnv() (gophercloud.AuthOptions, error) { - authURL := prefixedEnv("AUTH_URL") - username := prefixedEnv("USERNAME") - password := prefixedEnv("PASSWORD") - apiKey := prefixedEnv("API_KEY") - - if authURL == "" { - return nilOptions, ErrNoAuthURL - } - - if username == "" { - return nilOptions, ErrNoUsername - } - - if password == "" && apiKey == "" { - return nilOptions, ErrNoPassword - } - - ao := gophercloud.AuthOptions{ - IdentityEndpoint: authURL, - Username: username, - Password: password, - APIKey: apiKey, - } - - return ao, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/rackspace/client.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/rackspace/client.go deleted file mode 100644 index db3f305b..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/rackspace/client.go +++ /dev/null @@ -1,214 +0,0 @@ -package rackspace - -import ( - "fmt" - - "github.com/rackspace/gophercloud" - os "github.com/rackspace/gophercloud/openstack" - "github.com/rackspace/gophercloud/openstack/utils" - tokens2 "github.com/rackspace/gophercloud/rackspace/identity/v2/tokens" -) - -const ( - // RackspaceUSIdentity is an identity endpoint located in the United States. - RackspaceUSIdentity = "https://identity.api.rackspacecloud.com/v2.0/" - - // RackspaceUKIdentity is an identity endpoint located in the UK. - RackspaceUKIdentity = "https://lon.identity.api.rackspacecloud.com/v2.0/" -) - -const ( - v20 = "v2.0" -) - -// NewClient creates a client that's prepared to communicate with the Rackspace API, but is not -// yet authenticated. Most users will probably prefer using the AuthenticatedClient function -// instead. -// -// Provide the base URL of the identity endpoint you wish to authenticate against as "endpoint". -// Often, this will be either RackspaceUSIdentity or RackspaceUKIdentity. -func NewClient(endpoint string) (*gophercloud.ProviderClient, error) { - if endpoint == "" { - return os.NewClient(RackspaceUSIdentity) - } - return os.NewClient(endpoint) -} - -// AuthenticatedClient logs in to Rackspace with the provided credentials and constructs a -// ProviderClient that's ready to operate. -// -// If the provided AuthOptions does not specify an explicit IdentityEndpoint, it will default to -// the canonical, production Rackspace US identity endpoint. -func AuthenticatedClient(options gophercloud.AuthOptions) (*gophercloud.ProviderClient, error) { - client, err := NewClient(options.IdentityEndpoint) - if err != nil { - return nil, err - } - - err = Authenticate(client, options) - if err != nil { - return nil, err - } - return client, nil -} - -// Authenticate or re-authenticate against the most recent identity service supported at the -// provided endpoint. -func Authenticate(client *gophercloud.ProviderClient, options gophercloud.AuthOptions) error { - versions := []*utils.Version{ - &utils.Version{ID: v20, Priority: 20, Suffix: "/v2.0/"}, - } - - chosen, endpoint, err := utils.ChooseVersion(client, versions) - if err != nil { - return err - } - - switch chosen.ID { - case v20: - return v2auth(client, endpoint, options) - default: - // The switch statement must be out of date from the versions list. - return fmt.Errorf("Unrecognized identity version: %s", chosen.ID) - } -} - -// AuthenticateV2 explicitly authenticates with v2 of the identity service. -func AuthenticateV2(client *gophercloud.ProviderClient, options gophercloud.AuthOptions) error { - return v2auth(client, "", options) -} - -func v2auth(client *gophercloud.ProviderClient, endpoint string, options gophercloud.AuthOptions) error { - v2Client := NewIdentityV2(client) - if endpoint != "" { - v2Client.Endpoint = endpoint - } - - result := tokens2.Create(v2Client, tokens2.WrapOptions(options)) - - token, err := result.ExtractToken() - if err != nil { - return err - } - - catalog, err := result.ExtractServiceCatalog() - if err != nil { - return err - } - - if options.AllowReauth { - client.ReauthFunc = func() error { - return AuthenticateV2(client, options) - } - } - client.TokenID = token.ID - client.EndpointLocator = func(opts gophercloud.EndpointOpts) (string, error) { - return os.V2EndpointURL(catalog, opts) - } - - return nil -} - -// NewIdentityV2 creates a ServiceClient that may be used to access the v2 identity service. -func NewIdentityV2(client *gophercloud.ProviderClient) *gophercloud.ServiceClient { - v2Endpoint := client.IdentityBase + "v2.0/" - - return &gophercloud.ServiceClient{ - ProviderClient: client, - Endpoint: v2Endpoint, - } -} - -// NewComputeV2 creates a ServiceClient that may be used to access the v2 compute service. -func NewComputeV2(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { - eo.ApplyDefaults("compute") - url, err := client.EndpointLocator(eo) - if err != nil { - return nil, err - } - - return &gophercloud.ServiceClient{ - ProviderClient: client, - Endpoint: url, - }, nil -} - -// NewObjectCDNV1 creates a ServiceClient that may be used with the Rackspace v1 CDN. -func NewObjectCDNV1(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { - eo.ApplyDefaults("rax:object-cdn") - url, err := client.EndpointLocator(eo) - if err != nil { - return nil, err - } - return &gophercloud.ServiceClient{ProviderClient: client, Endpoint: url}, nil -} - -// NewObjectStorageV1 creates a ServiceClient that may be used with the Rackspace v1 object storage package. -func NewObjectStorageV1(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { - return os.NewObjectStorageV1(client, eo) -} - -// NewBlockStorageV1 creates a ServiceClient that can be used to access the -// Rackspace Cloud Block Storage v1 API. -func NewBlockStorageV1(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { - eo.ApplyDefaults("volume") - url, err := client.EndpointLocator(eo) - if err != nil { - return nil, err - } - - return &gophercloud.ServiceClient{ProviderClient: client, Endpoint: url}, nil -} - -// NewLBV1 creates a ServiceClient that can be used to access the Rackspace -// Cloud Load Balancer v1 API. -func NewLBV1(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { - eo.ApplyDefaults("rax:load-balancer") - url, err := client.EndpointLocator(eo) - if err != nil { - return nil, err - } - return &gophercloud.ServiceClient{ProviderClient: client, Endpoint: url}, nil -} - -// NewNetworkV2 creates a ServiceClient that can be used to access the Rackspace -// Networking v2 API. -func NewNetworkV2(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { - eo.ApplyDefaults("network") - url, err := client.EndpointLocator(eo) - if err != nil { - return nil, err - } - return &gophercloud.ServiceClient{ProviderClient: client, Endpoint: url}, nil -} - -// NewCDNV1 creates a ServiceClient that may be used to access the Rackspace v1 -// CDN service. -func NewCDNV1(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { - eo.ApplyDefaults("rax:cdn") - url, err := client.EndpointLocator(eo) - if err != nil { - return nil, err - } - return &gophercloud.ServiceClient{ProviderClient: client, Endpoint: url}, nil -} - -// NewOrchestrationV1 creates a ServiceClient that may be used to access the v1 orchestration service. -func NewOrchestrationV1(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { - eo.ApplyDefaults("orchestration") - url, err := client.EndpointLocator(eo) - if err != nil { - return nil, err - } - return &gophercloud.ServiceClient{ProviderClient: client, Endpoint: url}, nil -} - -// NewRackConnectV3 creates a ServiceClient that may be used to access the v3 RackConnect service. -func NewRackConnectV3(client *gophercloud.ProviderClient, eo gophercloud.EndpointOpts) (*gophercloud.ServiceClient, error) { - eo.ApplyDefaults("rax:rackconnect") - url, err := client.EndpointLocator(eo) - if err != nil { - return nil, err - } - return &gophercloud.ServiceClient{ProviderClient: client, Endpoint: url}, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/rackspace/identity/v2/tokens/delegate.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/rackspace/identity/v2/tokens/delegate.go deleted file mode 100644 index 4f9885af..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/rackspace/identity/v2/tokens/delegate.go +++ /dev/null @@ -1,60 +0,0 @@ -package tokens - -import ( - "errors" - - "github.com/rackspace/gophercloud" - os "github.com/rackspace/gophercloud/openstack/identity/v2/tokens" -) - -var ( - // ErrPasswordProvided is returned if both a password and an API key are provided to Create. - ErrPasswordProvided = errors.New("Please provide either a password or an API key.") -) - -// AuthOptions wraps the OpenStack AuthOptions struct to be able to customize the request body -// when API key authentication is used. -type AuthOptions struct { - os.AuthOptions -} - -// WrapOptions embeds a root AuthOptions struct in a package-specific one. -func WrapOptions(original gophercloud.AuthOptions) AuthOptions { - return AuthOptions{AuthOptions: os.WrapOptions(original)} -} - -// ToTokenCreateMap serializes an AuthOptions into a request body. If an API key is provided, it -// will be used, otherwise -func (auth AuthOptions) ToTokenCreateMap() (map[string]interface{}, error) { - if auth.APIKey == "" { - return auth.AuthOptions.ToTokenCreateMap() - } - - // Verify that other required attributes are present. - if auth.Username == "" { - return nil, os.ErrUsernameRequired - } - - authMap := make(map[string]interface{}) - - authMap["RAX-KSKEY:apiKeyCredentials"] = map[string]interface{}{ - "username": auth.Username, - "apiKey": auth.APIKey, - } - - if auth.TenantID != "" { - authMap["tenantId"] = auth.TenantID - } - if auth.TenantName != "" { - authMap["tenantName"] = auth.TenantName - } - - return map[string]interface{}{"auth": authMap}, nil -} - -// Create authenticates to Rackspace's identity service and attempts to acquire a Token. Rather -// than interact with this service directly, users should generally call -// rackspace.AuthenticatedClient(). -func Create(client *gophercloud.ServiceClient, auth AuthOptions) os.CreateResult { - return os.Create(client, auth) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/rackspace/identity/v2/tokens/doc.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/rackspace/identity/v2/tokens/doc.go deleted file mode 100644 index 44043e5e..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/rackspace/identity/v2/tokens/doc.go +++ /dev/null @@ -1,3 +0,0 @@ -// Package tokens provides information and interaction with the token -// API resource for the Rackspace Identity service. -package tokens diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/results.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/results.go deleted file mode 100644 index 7c86ce46..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/results.go +++ /dev/null @@ -1,150 +0,0 @@ -package gophercloud - -import ( - "encoding/json" - "net/http" - "reflect" - - "github.com/mitchellh/mapstructure" -) - -/* -Result is an internal type to be used by individual resource packages, but its -methods will be available on a wide variety of user-facing embedding types. - -It acts as a base struct that other Result types, returned from request -functions, can embed for convenience. All Results capture basic information -from the HTTP transaction that was performed, including the response body, -HTTP headers, and any errors that happened. - -Generally, each Result type will have an Extract method that can be used to -further interpret the result's payload in a specific context. Extensions or -providers can then provide additional extraction functions to pull out -provider- or extension-specific information as well. -*/ -type Result struct { - // Body is the payload of the HTTP response from the server. In most cases, - // this will be the deserialized JSON structure. - Body interface{} - - // Header contains the HTTP header structure from the original response. - Header http.Header - - // Err is an error that occurred during the operation. It's deferred until - // extraction to make it easier to chain the Extract call. - Err error -} - -// PrettyPrintJSON creates a string containing the full response body as -// pretty-printed JSON. It's useful for capturing test fixtures and for -// debugging extraction bugs. If you include its output in an issue related to -// a buggy extraction function, we will all love you forever. -func (r Result) PrettyPrintJSON() string { - pretty, err := json.MarshalIndent(r.Body, "", " ") - if err != nil { - panic(err.Error()) - } - return string(pretty) -} - -// ErrResult is an internal type to be used by individual resource packages, but -// its methods will be available on a wide variety of user-facing embedding -// types. -// -// It represents results that only contain a potential error and -// nothing else. Usually, if the operation executed successfully, the Err field -// will be nil; otherwise it will be stocked with a relevant error. Use the -// ExtractErr method -// to cleanly pull it out. -type ErrResult struct { - Result -} - -// ExtractErr is a function that extracts error information, or nil, from a result. -func (r ErrResult) ExtractErr() error { - return r.Err -} - -/* -HeaderResult is an internal type to be used by individual resource packages, but -its methods will be available on a wide variety of user-facing embedding types. - -It represents a result that only contains an error (possibly nil) and an -http.Header. This is used, for example, by the objectstorage packages in -openstack, because most of the operations don't return response bodies, but do -have relevant information in headers. -*/ -type HeaderResult struct { - Result -} - -// ExtractHeader will return the http.Header and error from the HeaderResult. -// -// header, err := objects.Create(client, "my_container", objects.CreateOpts{}).ExtractHeader() -func (hr HeaderResult) ExtractHeader() (http.Header, error) { - return hr.Header, hr.Err -} - -// DecodeHeader is a function that decodes a header (usually of type map[string]interface{}) to -// another type (usually a struct). This function is used by the objectstorage package to give -// users access to response headers without having to query a map. A DecodeHookFunction is used, -// because OpenStack-based clients return header values as arrays (Go slices). -func DecodeHeader(from, to interface{}) error { - config := &mapstructure.DecoderConfig{ - DecodeHook: func(from, to reflect.Kind, data interface{}) (interface{}, error) { - if from == reflect.Slice { - return data.([]string)[0], nil - } - return data, nil - }, - Result: to, - WeaklyTypedInput: true, - } - decoder, err := mapstructure.NewDecoder(config) - if err != nil { - return err - } - if err := decoder.Decode(from); err != nil { - return err - } - return nil -} - -// RFC3339Milli describes a common time format used by some API responses. -const RFC3339Milli = "2006-01-02T15:04:05.999999Z" - -/* -Link is an internal type to be used in packages of collection resources that are -paginated in a certain way. - -It's a response substructure common to many paginated collection results that is -used to point to related pages. Usually, the one we care about is the one with -Rel field set to "next". -*/ -type Link struct { - Href string `mapstructure:"href"` - Rel string `mapstructure:"rel"` -} - -/* -ExtractNextURL is an internal function useful for packages of collection -resources that are paginated in a certain way. - -It attempts attempts to extract the "next" URL from slice of Link structs, or -"" if no such URL is present. -*/ -func ExtractNextURL(links []Link) (string, error) { - var url string - - for _, l := range links { - if l.Rel == "next" { - url = l.Href - } - } - - if url == "" { - return "", nil - } - - return url, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/service_client.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/service_client.go deleted file mode 100644 index 3490da05..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/service_client.go +++ /dev/null @@ -1,32 +0,0 @@ -package gophercloud - -import "strings" - -// ServiceClient stores details required to interact with a specific service API implemented by a provider. -// Generally, you'll acquire these by calling the appropriate `New` method on a ProviderClient. -type ServiceClient struct { - // ProviderClient is a reference to the provider that implements this service. - *ProviderClient - - // Endpoint is the base URL of the service's API, acquired from a service catalog. - // It MUST end with a /. - Endpoint string - - // ResourceBase is the base URL shared by the resources within a service's API. It should include - // the API version and, like Endpoint, MUST end with a / if set. If not set, the Endpoint is used - // as-is, instead. - ResourceBase string -} - -// ResourceBaseURL returns the base URL of any resources used by this service. It MUST end with a /. -func (client *ServiceClient) ResourceBaseURL() string { - if client.ResourceBase != "" { - return client.ResourceBase - } - return client.Endpoint -} - -// ServiceURL constructs a URL for a resource belonging to this provider. -func (client *ServiceClient) ServiceURL(parts ...string) string { - return client.ResourceBaseURL() + strings.Join(parts, "/") -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/testhelper/client/fake.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/testhelper/client/fake.go deleted file mode 100644 index 5b69b058..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/testhelper/client/fake.go +++ /dev/null @@ -1,17 +0,0 @@ -package client - -import ( - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/testhelper" -) - -// Fake token to use. -const TokenID = "cbc36478b0bd8e67e89469c7749d4127" - -// ServiceClient returns a generic service client for use in tests. -func ServiceClient() *gophercloud.ServiceClient { - return &gophercloud.ServiceClient{ - ProviderClient: &gophercloud.ProviderClient{TokenID: TokenID}, - Endpoint: testhelper.Endpoint(), - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/testhelper/convenience.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/testhelper/convenience.go deleted file mode 100644 index cf33e1ad..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/testhelper/convenience.go +++ /dev/null @@ -1,329 +0,0 @@ -package testhelper - -import ( - "encoding/json" - "fmt" - "path/filepath" - "reflect" - "runtime" - "strings" - "testing" -) - -const ( - logBodyFmt = "\033[1;31m%s %s\033[0m" - greenCode = "\033[0m\033[1;32m" - yellowCode = "\033[0m\033[1;33m" - resetCode = "\033[0m\033[1;31m" -) - -func prefix(depth int) string { - _, file, line, _ := runtime.Caller(depth) - return fmt.Sprintf("Failure in %s, line %d:", filepath.Base(file), line) -} - -func green(str interface{}) string { - return fmt.Sprintf("%s%#v%s", greenCode, str, resetCode) -} - -func yellow(str interface{}) string { - return fmt.Sprintf("%s%#v%s", yellowCode, str, resetCode) -} - -func logFatal(t *testing.T, str string) { - t.Fatalf(logBodyFmt, prefix(3), str) -} - -func logError(t *testing.T, str string) { - t.Errorf(logBodyFmt, prefix(3), str) -} - -type diffLogger func([]string, interface{}, interface{}) - -type visit struct { - a1 uintptr - a2 uintptr - typ reflect.Type -} - -// Recursively visits the structures of "expected" and "actual". The diffLogger function will be -// invoked with each different value encountered, including the reference path that was followed -// to get there. -func deepDiffEqual(expected, actual reflect.Value, visited map[visit]bool, path []string, logDifference diffLogger) { - defer func() { - // Fall back to the regular reflect.DeepEquals function. - if r := recover(); r != nil { - var e, a interface{} - if expected.IsValid() { - e = expected.Interface() - } - if actual.IsValid() { - a = actual.Interface() - } - - if !reflect.DeepEqual(e, a) { - logDifference(path, e, a) - } - } - }() - - if !expected.IsValid() && actual.IsValid() { - logDifference(path, nil, actual.Interface()) - return - } - if expected.IsValid() && !actual.IsValid() { - logDifference(path, expected.Interface(), nil) - return - } - if !expected.IsValid() && !actual.IsValid() { - return - } - - hard := func(k reflect.Kind) bool { - switch k { - case reflect.Array, reflect.Map, reflect.Slice, reflect.Struct: - return true - } - return false - } - - if expected.CanAddr() && actual.CanAddr() && hard(expected.Kind()) { - addr1 := expected.UnsafeAddr() - addr2 := actual.UnsafeAddr() - - if addr1 > addr2 { - addr1, addr2 = addr2, addr1 - } - - if addr1 == addr2 { - // References are identical. We can short-circuit - return - } - - typ := expected.Type() - v := visit{addr1, addr2, typ} - if visited[v] { - // Already visited. - return - } - - // Remember this visit for later. - visited[v] = true - } - - switch expected.Kind() { - case reflect.Array: - for i := 0; i < expected.Len(); i++ { - hop := append(path, fmt.Sprintf("[%d]", i)) - deepDiffEqual(expected.Index(i), actual.Index(i), visited, hop, logDifference) - } - return - case reflect.Slice: - if expected.IsNil() != actual.IsNil() { - logDifference(path, expected.Interface(), actual.Interface()) - return - } - if expected.Len() == actual.Len() && expected.Pointer() == actual.Pointer() { - return - } - for i := 0; i < expected.Len(); i++ { - hop := append(path, fmt.Sprintf("[%d]", i)) - deepDiffEqual(expected.Index(i), actual.Index(i), visited, hop, logDifference) - } - return - case reflect.Interface: - if expected.IsNil() != actual.IsNil() { - logDifference(path, expected.Interface(), actual.Interface()) - return - } - deepDiffEqual(expected.Elem(), actual.Elem(), visited, path, logDifference) - return - case reflect.Ptr: - deepDiffEqual(expected.Elem(), actual.Elem(), visited, path, logDifference) - return - case reflect.Struct: - for i, n := 0, expected.NumField(); i < n; i++ { - field := expected.Type().Field(i) - hop := append(path, "."+field.Name) - deepDiffEqual(expected.Field(i), actual.Field(i), visited, hop, logDifference) - } - return - case reflect.Map: - if expected.IsNil() != actual.IsNil() { - logDifference(path, expected.Interface(), actual.Interface()) - return - } - if expected.Len() == actual.Len() && expected.Pointer() == actual.Pointer() { - return - } - - var keys []reflect.Value - if expected.Len() >= actual.Len() { - keys = expected.MapKeys() - } else { - keys = actual.MapKeys() - } - - for _, k := range keys { - expectedValue := expected.MapIndex(k) - actualValue := expected.MapIndex(k) - - if !expectedValue.IsValid() { - logDifference(path, nil, actual.Interface()) - return - } - if !actualValue.IsValid() { - logDifference(path, expected.Interface(), nil) - return - } - - hop := append(path, fmt.Sprintf("[%v]", k)) - deepDiffEqual(expectedValue, actualValue, visited, hop, logDifference) - } - return - case reflect.Func: - if expected.IsNil() != actual.IsNil() { - logDifference(path, expected.Interface(), actual.Interface()) - } - return - default: - if expected.Interface() != actual.Interface() { - logDifference(path, expected.Interface(), actual.Interface()) - } - } -} - -func deepDiff(expected, actual interface{}, logDifference diffLogger) { - if expected == nil || actual == nil { - logDifference([]string{}, expected, actual) - return - } - - expectedValue := reflect.ValueOf(expected) - actualValue := reflect.ValueOf(actual) - - if expectedValue.Type() != actualValue.Type() { - logDifference([]string{}, expected, actual) - return - } - deepDiffEqual(expectedValue, actualValue, map[visit]bool{}, []string{}, logDifference) -} - -// AssertEquals compares two arbitrary values and performs a comparison. If the -// comparison fails, a fatal error is raised that will fail the test -func AssertEquals(t *testing.T, expected, actual interface{}) { - if expected != actual { - logFatal(t, fmt.Sprintf("expected %s but got %s", green(expected), yellow(actual))) - } -} - -// CheckEquals is similar to AssertEquals, except with a non-fatal error -func CheckEquals(t *testing.T, expected, actual interface{}) { - if expected != actual { - logError(t, fmt.Sprintf("expected %s but got %s", green(expected), yellow(actual))) - } -} - -// AssertDeepEquals - like Equals - performs a comparison - but on more complex -// structures that requires deeper inspection -func AssertDeepEquals(t *testing.T, expected, actual interface{}) { - pre := prefix(2) - - differed := false - deepDiff(expected, actual, func(path []string, expected, actual interface{}) { - differed = true - t.Errorf("\033[1;31m%sat %s expected %s, but got %s\033[0m", - pre, - strings.Join(path, ""), - green(expected), - yellow(actual)) - }) - if differed { - logFatal(t, "The structures were different.") - } -} - -// CheckDeepEquals is similar to AssertDeepEquals, except with a non-fatal error -func CheckDeepEquals(t *testing.T, expected, actual interface{}) { - pre := prefix(2) - - deepDiff(expected, actual, func(path []string, expected, actual interface{}) { - t.Errorf("\033[1;31m%s at %s expected %s, but got %s\033[0m", - pre, - strings.Join(path, ""), - green(expected), - yellow(actual)) - }) -} - -// isJSONEquals is a utility function that implements JSON comparison for AssertJSONEquals and -// CheckJSONEquals. -func isJSONEquals(t *testing.T, expectedJSON string, actual interface{}) bool { - var parsedExpected, parsedActual interface{} - err := json.Unmarshal([]byte(expectedJSON), &parsedExpected) - if err != nil { - t.Errorf("Unable to parse expected value as JSON: %v", err) - return false - } - - jsonActual, err := json.Marshal(actual) - AssertNoErr(t, err) - err = json.Unmarshal(jsonActual, &parsedActual) - AssertNoErr(t, err) - - if !reflect.DeepEqual(parsedExpected, parsedActual) { - prettyExpected, err := json.MarshalIndent(parsedExpected, "", " ") - if err != nil { - t.Logf("Unable to pretty-print expected JSON: %v\n%s", err, expectedJSON) - } else { - // We can't use green() here because %#v prints prettyExpected as a byte array literal, which - // is... unhelpful. Converting it to a string first leaves "\n" uninterpreted for some reason. - t.Logf("Expected JSON:\n%s%s%s", greenCode, prettyExpected, resetCode) - } - - prettyActual, err := json.MarshalIndent(actual, "", " ") - if err != nil { - t.Logf("Unable to pretty-print actual JSON: %v\n%#v", err, actual) - } else { - // We can't use yellow() for the same reason. - t.Logf("Actual JSON:\n%s%s%s", yellowCode, prettyActual, resetCode) - } - - return false - } - return true -} - -// AssertJSONEquals serializes a value as JSON, parses an expected string as JSON, and ensures that -// both are consistent. If they aren't, the expected and actual structures are pretty-printed and -// shown for comparison. -// -// This is useful for comparing structures that are built as nested map[string]interface{} values, -// which are a pain to construct as literals. -func AssertJSONEquals(t *testing.T, expectedJSON string, actual interface{}) { - if !isJSONEquals(t, expectedJSON, actual) { - logFatal(t, "The generated JSON structure differed.") - } -} - -// CheckJSONEquals is similar to AssertJSONEquals, but nonfatal. -func CheckJSONEquals(t *testing.T, expectedJSON string, actual interface{}) { - if !isJSONEquals(t, expectedJSON, actual) { - logError(t, "The generated JSON structure differed.") - } -} - -// AssertNoErr is a convenience function for checking whether an error value is -// an actual error -func AssertNoErr(t *testing.T, e error) { - if e != nil { - logFatal(t, fmt.Sprintf("unexpected error %s", yellow(e.Error()))) - } -} - -// CheckNoErr is similar to AssertNoErr, except with a non-fatal error -func CheckNoErr(t *testing.T, e error) { - if e != nil { - logError(t, fmt.Sprintf("unexpected error %s", yellow(e.Error()))) - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/testhelper/doc.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/testhelper/doc.go deleted file mode 100644 index 25b4dfeb..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/testhelper/doc.go +++ /dev/null @@ -1,4 +0,0 @@ -/* -Package testhelper container methods that are useful for writing unit tests. -*/ -package testhelper diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/testhelper/http_responses.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/testhelper/http_responses.go deleted file mode 100644 index e1f1f9ac..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/testhelper/http_responses.go +++ /dev/null @@ -1,91 +0,0 @@ -package testhelper - -import ( - "encoding/json" - "io/ioutil" - "net/http" - "net/http/httptest" - "net/url" - "reflect" - "testing" -) - -var ( - // Mux is a multiplexer that can be used to register handlers. - Mux *http.ServeMux - - // Server is an in-memory HTTP server for testing. - Server *httptest.Server -) - -// SetupHTTP prepares the Mux and Server. -func SetupHTTP() { - Mux = http.NewServeMux() - Server = httptest.NewServer(Mux) -} - -// TeardownHTTP releases HTTP-related resources. -func TeardownHTTP() { - Server.Close() -} - -// Endpoint returns a fake endpoint that will actually target the Mux. -func Endpoint() string { - return Server.URL + "/" -} - -// TestFormValues ensures that all the URL parameters given to the http.Request are the same as values. -func TestFormValues(t *testing.T, r *http.Request, values map[string]string) { - want := url.Values{} - for k, v := range values { - want.Add(k, v) - } - - r.ParseForm() - if !reflect.DeepEqual(want, r.Form) { - t.Errorf("Request parameters = %v, want %v", r.Form, want) - } -} - -// TestMethod checks that the Request has the expected method (e.g. GET, POST). -func TestMethod(t *testing.T, r *http.Request, expected string) { - if expected != r.Method { - t.Errorf("Request method = %v, expected %v", r.Method, expected) - } -} - -// TestHeader checks that the header on the http.Request matches the expected value. -func TestHeader(t *testing.T, r *http.Request, header string, expected string) { - if actual := r.Header.Get(header); expected != actual { - t.Errorf("Header %s = %s, expected %s", header, actual, expected) - } -} - -// TestBody verifies that the request body matches an expected body. -func TestBody(t *testing.T, r *http.Request, expected string) { - b, err := ioutil.ReadAll(r.Body) - if err != nil { - t.Errorf("Unable to read body: %v", err) - } - str := string(b) - if expected != str { - t.Errorf("Body = %s, expected %s", str, expected) - } -} - -// TestJSONRequest verifies that the JSON payload of a request matches an expected structure, without asserting things about -// whitespace or ordering. -func TestJSONRequest(t *testing.T, r *http.Request, expected string) { - b, err := ioutil.ReadAll(r.Body) - if err != nil { - t.Errorf("Unable to read request body: %v", err) - } - - var actualJSON interface{} - err = json.Unmarshal(b, &actualJSON) - if err != nil { - t.Errorf("Unable to parse request body as JSON: %v", err) - } - - CheckJSONEquals(t, expected, actualJSON) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/util.go b/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/util.go deleted file mode 100644 index fbd9fe9f..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/rackspace/gophercloud/util.go +++ /dev/null @@ -1,44 +0,0 @@ -package gophercloud - -import ( - "errors" - "strings" - "time" -) - -// WaitFor polls a predicate function, once per second, up to a timeout limit. -// It usually does this to wait for a resource to transition to a certain state. -// Resource packages will wrap this in a more convenient function that's -// specific to a certain resource, but it can also be useful on its own. -func WaitFor(timeout int, predicate func() (bool, error)) error { - start := time.Now().Second() - for { - // Force a 1s sleep - time.Sleep(1 * time.Second) - - // If a timeout is set, and that's been exceeded, shut it down - if timeout >= 0 && time.Now().Second()-start >= timeout { - return errors.New("A timeout occurred") - } - - // Execute the function - satisfied, err := predicate() - if err != nil { - return err - } - if satisfied { - return nil - } - } -} - -// NormalizeURL is an internal function to be used by provider clients. -// -// It ensures that each endpoint URL has a closing `/`, as expected by -// ServiceClient's methods. -func NormalizeURL(url string) string { - if !strings.HasSuffix(url, "/") { - return url + "/" - } - return url -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/.gitignore b/vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/.gitignore deleted file mode 100644 index 00268614..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/.gitignore +++ /dev/null @@ -1,22 +0,0 @@ -# Compiled Object files, Static and Dynamic libs (Shared Objects) -*.o -*.a -*.so - -# Folders -_obj -_test - -# Architecture specific extensions/prefixes -*.[568vq] -[568vq].out - -*.cgo1.go -*.cgo2.c -_cgo_defun.c -_cgo_gotypes.go -_cgo_export.* - -_testmain.go - -*.exe diff --git a/vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/LICENSE b/vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/LICENSE deleted file mode 100644 index 00e1edb9..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ -Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2014 Sam Alba - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - diff --git a/vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/README.md b/vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/README.md deleted file mode 100644 index 6cad9bd3..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/README.md +++ /dev/null @@ -1,98 +0,0 @@ -Docker client library in Go -=========================== -[![GoDoc](http://godoc.org/github.com/samalba/dockerclient?status.png)](http://godoc.org/github.com/samalba/dockerclient) - -Well maintained docker client library. - -# How to use it? - -Here is an example showing how to use it: - -```go -package main - -import ( - "github.com/samalba/dockerclient" - "log" - "time" - "os" -) - -// Callback used to listen to Docker's events -func eventCallback(event *dockerclient.Event, ec chan error, args ...interface{}) { - log.Printf("Received event: %#v\n", *event) -} - -func main() { - // Init the client - docker, _ := dockerclient.NewDockerClient("unix:///var/run/docker.sock", nil) - - // Get only running containers - containers, err := docker.ListContainers(false, false, "") - if err != nil { - log.Fatal(err) - } - for _, c := range containers { - log.Println(c.Id, c.Names) - } - - // Inspect the first container returned - if len(containers) > 0 { - id := containers[0].Id - info, _ := docker.InspectContainer(id) - log.Println(info) - } - - // Build a docker image - // some.tar contains the build context (Dockerfile any any files it needs to add/copy) - dockerBuildContext, err := os.Open("some.tar") - defer dockerBuildContext.Close() - buildImageConfig := &dockerclient.BuildImage{ - Context: dockerBuildContext, - RepoName: "your_image_name", - SuppressOutput: false, - } - reader, err := docker.BuildImage(buildImageConfig) - if err != nil { - log.Fatal(err) - } - - // Create a container - containerConfig := &dockerclient.ContainerConfig{ - Image: "ubuntu:14.04", - Cmd: []string{"bash"}, - AttachStdin: true, - Tty: true} - containerId, err := docker.CreateContainer(containerConfig, "foobar", nil) - if err != nil { - log.Fatal(err) - } - - // Start the container - hostConfig := &dockerclient.HostConfig{} - err = docker.StartContainer(containerId, hostConfig) - if err != nil { - log.Fatal(err) - } - - // Stop the container (with 5 seconds timeout) - docker.StopContainer(containerId, 5) - - // Listen to events - docker.StartMonitorEvents(eventCallback, nil) - - // Hold the execution to look at the events coming - time.Sleep(3600 * time.Second) -} -``` - -# Maintainers - -List of people you can ping for feedback on Pull Requests or any questions. - -- [Sam Alba](https://github.com/samalba) -- [Michael Crosby](https://github.com/crosbymichael) -- [Andrea Luzzardi](https://github.com/aluzzardi) -- [Victor Vieux](https://github.com/vieux) -- [Evan Hazlett](https://github.com/ehazlett) -- [Donald Huang](https://github.com/donhcd) diff --git a/vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/auth.go b/vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/auth.go deleted file mode 100644 index 7c0a67f7..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/auth.go +++ /dev/null @@ -1,39 +0,0 @@ -package dockerclient - -import ( - "bytes" - "encoding/base64" - "encoding/json" -) - -// AuthConfig hold parameters for authenticating with the docker registry -type AuthConfig struct { - Username string `json:"username,omitempty"` - Password string `json:"password,omitempty"` - Email string `json:"email,omitempty"` - RegistryToken string `json:"registrytoken,omitempty"` -} - -// encode the auth configuration struct into base64 for the X-Registry-Auth header -func (c *AuthConfig) encode() (string, error) { - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(c); err != nil { - return "", err - } - return base64.URLEncoding.EncodeToString(buf.Bytes()), nil -} - -// ConfigFile holds parameters for authenticating during a BuildImage request -type ConfigFile struct { - Configs map[string]AuthConfig `json:"configs,omitempty"` - rootPath string -} - -// encode the configuration struct into base64 for the X-Registry-Config header -func (c *ConfigFile) encode() (string, error) { - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(c); err != nil { - return "", err - } - return base64.URLEncoding.EncodeToString(buf.Bytes()), nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/dockerclient.go b/vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/dockerclient.go deleted file mode 100644 index b52d52bf..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/dockerclient.go +++ /dev/null @@ -1,937 +0,0 @@ -package dockerclient - -import ( - "bytes" - "crypto/tls" - "encoding/json" - "errors" - "fmt" - "io" - "io/ioutil" - "net/http" - "net/url" - "strconv" - "strings" - "sync/atomic" - "time" -) - -const ( - APIVersion = "v1.15" -) - -var ( - ErrImageNotFound = errors.New("Image not found") - ErrNotFound = errors.New("Not found") - ErrConnectionRefused = errors.New("Cannot connect to the docker engine endpoint") - - defaultTimeout = 30 * time.Second -) - -type DockerClient struct { - URL *url.URL - HTTPClient *http.Client - TLSConfig *tls.Config - monitorStats int32 - eventStopChan chan (struct{}) -} - -type Error struct { - StatusCode int - Status string - msg string -} - -func (e Error) Error() string { - return fmt.Sprintf("%s: %s", e.Status, e.msg) -} - -func NewDockerClient(daemonUrl string, tlsConfig *tls.Config) (*DockerClient, error) { - return NewDockerClientTimeout(daemonUrl, tlsConfig, time.Duration(defaultTimeout)) -} - -func NewDockerClientTimeout(daemonUrl string, tlsConfig *tls.Config, timeout time.Duration) (*DockerClient, error) { - u, err := url.Parse(daemonUrl) - if err != nil { - return nil, err - } - if u.Scheme == "" || u.Scheme == "tcp" { - if tlsConfig == nil { - u.Scheme = "http" - } else { - u.Scheme = "https" - } - } - httpClient := newHTTPClient(u, tlsConfig, timeout) - return &DockerClient{u, httpClient, tlsConfig, 0, nil}, nil -} - -func (client *DockerClient) doRequest(method string, path string, body []byte, headers map[string]string) ([]byte, error) { - b := bytes.NewBuffer(body) - - reader, err := client.doStreamRequest(method, path, b, headers) - if err != nil { - return nil, err - } - - defer reader.Close() - data, err := ioutil.ReadAll(reader) - if err != nil { - return nil, err - } - return data, nil -} - -func (client *DockerClient) doStreamRequest(method string, path string, in io.Reader, headers map[string]string) (io.ReadCloser, error) { - if (method == "POST" || method == "PUT") && in == nil { - in = bytes.NewReader(nil) - } - req, err := http.NewRequest(method, client.URL.String()+path, in) - if err != nil { - return nil, err - } - req.Header.Add("Content-Type", "application/json") - if headers != nil { - for header, value := range headers { - req.Header.Add(header, value) - } - } - resp, err := client.HTTPClient.Do(req) - if err != nil { - if !strings.Contains(err.Error(), "connection refused") && client.TLSConfig == nil { - return nil, fmt.Errorf("%v. Are you trying to connect to a TLS-enabled daemon without TLS?", err) - } - if strings.Contains(err.Error(), "connection refused") { - return nil, ErrConnectionRefused - } - return nil, err - } - if resp.StatusCode == 404 { - defer resp.Body.Close() - data, err := ioutil.ReadAll(resp.Body) - if err != nil { - return nil, ErrNotFound - } - if len(data) > 0 { - // check if is image not found error - if strings.Index(string(data), "No such image") != -1 { - return nil, ErrImageNotFound - } - return nil, errors.New(string(data)) - } - return nil, ErrNotFound - } - if resp.StatusCode >= 400 { - defer resp.Body.Close() - data, err := ioutil.ReadAll(resp.Body) - if err != nil { - return nil, err - } - return nil, Error{StatusCode: resp.StatusCode, Status: resp.Status, msg: string(data)} - } - - return resp.Body, nil -} - -func (client *DockerClient) Info() (*Info, error) { - uri := fmt.Sprintf("/%s/info", APIVersion) - data, err := client.doRequest("GET", uri, nil, nil) - if err != nil { - return nil, err - } - ret := &Info{} - err = json.Unmarshal(data, &ret) - if err != nil { - return nil, err - } - return ret, nil -} - -func (client *DockerClient) ListContainers(all bool, size bool, filters string) ([]Container, error) { - argAll := 0 - if all == true { - argAll = 1 - } - showSize := 0 - if size == true { - showSize = 1 - } - uri := fmt.Sprintf("/%s/containers/json?all=%d&size=%d", APIVersion, argAll, showSize) - - if filters != "" { - uri += "&filters=" + filters - } - - data, err := client.doRequest("GET", uri, nil, nil) - if err != nil { - return nil, err - } - ret := []Container{} - err = json.Unmarshal(data, &ret) - if err != nil { - return nil, err - } - return ret, nil -} - -func (client *DockerClient) InspectContainer(id string) (*ContainerInfo, error) { - uri := fmt.Sprintf("/%s/containers/%s/json", APIVersion, id) - data, err := client.doRequest("GET", uri, nil, nil) - if err != nil { - return nil, err - } - info := &ContainerInfo{} - err = json.Unmarshal(data, info) - if err != nil { - return nil, err - } - return info, nil -} - -func (client *DockerClient) CreateContainer(config *ContainerConfig, name string, auth *AuthConfig) (string, error) { - data, err := json.Marshal(config) - if err != nil { - return "", err - } - uri := fmt.Sprintf("/%s/containers/create", APIVersion) - if name != "" { - v := url.Values{} - v.Set("name", name) - uri = fmt.Sprintf("%s?%s", uri, v.Encode()) - } - headers := map[string]string{} - if auth != nil { - encoded_auth, err := auth.encode() - if err != nil { - return "", err - } - headers["X-Registry-Auth"] = encoded_auth - } - data, err = client.doRequest("POST", uri, data, headers) - if err != nil { - return "", err - } - result := &RespContainersCreate{} - err = json.Unmarshal(data, result) - if err != nil { - return "", fmt.Errorf(string(data)) - } - return result.Id, nil -} - -func (client *DockerClient) ContainerLogs(id string, options *LogOptions) (io.ReadCloser, error) { - v := url.Values{} - v.Add("follow", strconv.FormatBool(options.Follow)) - v.Add("stdout", strconv.FormatBool(options.Stdout)) - v.Add("stderr", strconv.FormatBool(options.Stderr)) - v.Add("timestamps", strconv.FormatBool(options.Timestamps)) - if options.Tail > 0 { - v.Add("tail", strconv.FormatInt(options.Tail, 10)) - } - - uri := fmt.Sprintf("/%s/containers/%s/logs?%s", APIVersion, id, v.Encode()) - req, err := http.NewRequest("GET", client.URL.String()+uri, nil) - if err != nil { - return nil, err - } - req.Header.Add("Content-Type", "application/json") - resp, err := client.HTTPClient.Do(req) - if err != nil { - return nil, err - } - return resp.Body, nil -} - -func (client *DockerClient) ContainerChanges(id string) ([]*ContainerChanges, error) { - uri := fmt.Sprintf("/%s/containers/%s/changes", APIVersion, id) - data, err := client.doRequest("GET", uri, nil, nil) - if err != nil { - return nil, err - } - changes := []*ContainerChanges{} - err = json.Unmarshal(data, &changes) - if err != nil { - return nil, err - } - return changes, nil -} - -func (client *DockerClient) readJSONStream(stream io.ReadCloser, decode func(*json.Decoder) decodingResult, stopChan <-chan struct{}) <-chan decodingResult { - resultChan := make(chan decodingResult) - - go func() { - decodeChan := make(chan decodingResult) - - go func() { - decoder := json.NewDecoder(stream) - for { - decodeResult := decode(decoder) - decodeChan <- decodeResult - if decodeResult.err != nil { - close(decodeChan) - return - } - } - }() - - defer close(resultChan) - - for { - select { - case <-stopChan: - stream.Close() - for range decodeChan { - } - return - case decodeResult := <-decodeChan: - resultChan <- decodeResult - if decodeResult.err != nil { - stream.Close() - return - } - } - } - - }() - - return resultChan -} - -func (client *DockerClient) ExecCreate(config *ExecConfig) (string, error) { - data, err := json.Marshal(config) - if err != nil { - return "", err - } - uri := fmt.Sprintf("/%s/containers/%s/exec", APIVersion, config.Container) - resp, err := client.doRequest("POST", uri, data, nil) - if err != nil { - return "", err - } - var createExecResp struct { - Id string - } - if err = json.Unmarshal(resp, &createExecResp); err != nil { - return "", err - } - return createExecResp.Id, nil -} - -func (client *DockerClient) ExecStart(id string, config *ExecConfig) error { - data, err := json.Marshal(config) - if err != nil { - return err - } - - uri := fmt.Sprintf("/%s/exec/%s/start", APIVersion, id) - if _, err := client.doRequest("POST", uri, data, nil); err != nil { - return err - } - - return nil -} - -func (client *DockerClient) ExecResize(id string, width, height int) error { - v := url.Values{} - - w := strconv.Itoa(width) - h := strconv.Itoa(height) - - v.Set("w", w) - v.Set("h", h) - - uri := fmt.Sprintf("/%s/exec/%s/resize?%s", APIVersion, id, v.Encode()) - if _, err := client.doRequest("POST", client.URL.String()+uri, nil, nil); err != nil { - return err - } - - return nil -} - -func (client *DockerClient) AttachContainer(id string, options *AttachOptions) (io.ReadCloser, error) { - v := url.Values{} - if options != nil { - if options.Logs { - v.Set("logs", "1") - } - if options.Stream { - v.Set("stream", "1") - } - if options.Stdin { - v.Set("stdin", "1") - } - if options.Stdout { - v.Set("stdout", "1") - } - if options.Stderr { - v.Set("stderr", "1") - } - } - uri := fmt.Sprintf("/%s/containers/%s/attach?%s", APIVersion, id, v.Encode()) - return client.doStreamRequest("POST", uri, nil, nil) -} - -func (client *DockerClient) StartContainer(id string, config *HostConfig) error { - data, err := json.Marshal(config) - if err != nil { - return err - } - uri := fmt.Sprintf("/%s/containers/%s/start", APIVersion, id) - _, err = client.doRequest("POST", uri, data, nil) - if err != nil { - return err - } - return nil -} - -func (client *DockerClient) StopContainer(id string, timeout int) error { - uri := fmt.Sprintf("/%s/containers/%s/stop?t=%d", APIVersion, id, timeout) - _, err := client.doRequest("POST", uri, nil, nil) - if err != nil { - return err - } - return nil -} - -func (client *DockerClient) RestartContainer(id string, timeout int) error { - uri := fmt.Sprintf("/%s/containers/%s/restart?t=%d", APIVersion, id, timeout) - _, err := client.doRequest("POST", uri, nil, nil) - if err != nil { - return err - } - return nil -} - -func (client *DockerClient) KillContainer(id, signal string) error { - uri := fmt.Sprintf("/%s/containers/%s/kill?signal=%s", APIVersion, id, signal) - _, err := client.doRequest("POST", uri, nil, nil) - if err != nil { - return err - } - return nil -} - -func (client *DockerClient) Wait(id string) <-chan WaitResult { - ch := make(chan WaitResult) - uri := fmt.Sprintf("/%s/containers/%s/wait", APIVersion, id) - - go func() { - data, err := client.doRequest("POST", uri, nil, nil) - if err != nil { - ch <- WaitResult{ExitCode: -1, Error: err} - return - } - - var result struct { - StatusCode int `json:"StatusCode"` - } - err = json.Unmarshal(data, &result) - ch <- WaitResult{ExitCode: result.StatusCode, Error: err} - }() - return ch -} - -func (client *DockerClient) MonitorEvents(options *MonitorEventsOptions, stopChan <-chan struct{}) (<-chan EventOrError, error) { - v := url.Values{} - if options != nil { - if options.Since != 0 { - v.Add("since", strconv.Itoa(options.Since)) - } - if options.Until != 0 { - v.Add("until", strconv.Itoa(options.Until)) - } - if options.Filters != nil { - filterMap := make(map[string][]string) - if len(options.Filters.Event) > 0 { - filterMap["event"] = []string{options.Filters.Event} - } - if len(options.Filters.Image) > 0 { - filterMap["image"] = []string{options.Filters.Image} - } - if len(options.Filters.Container) > 0 { - filterMap["container"] = []string{options.Filters.Container} - } - if len(filterMap) > 0 { - filterJSONBytes, err := json.Marshal(filterMap) - if err != nil { - return nil, err - } - v.Add("filters", string(filterJSONBytes)) - } - } - } - uri := fmt.Sprintf("%s/%s/events?%s", client.URL.String(), APIVersion, v.Encode()) - resp, err := client.HTTPClient.Get(uri) - if err != nil { - return nil, err - } - - decode := func(decoder *json.Decoder) decodingResult { - var event Event - if err := decoder.Decode(&event); err != nil { - return decodingResult{err: err} - } else { - return decodingResult{result: event} - } - } - decodingResultChan := client.readJSONStream(resp.Body, decode, stopChan) - eventOrErrorChan := make(chan EventOrError) - go func() { - for decodingResult := range decodingResultChan { - event, _ := decodingResult.result.(Event) - eventOrErrorChan <- EventOrError{ - Event: event, - Error: decodingResult.err, - } - } - close(eventOrErrorChan) - }() - return eventOrErrorChan, nil -} - -func (client *DockerClient) StartMonitorEvents(cb Callback, ec chan error, args ...interface{}) { - client.eventStopChan = make(chan struct{}) - - go func() { - eventErrChan, err := client.MonitorEvents(nil, client.eventStopChan) - if err != nil { - if ec != nil { - ec <- err - } - return - } - - for e := range eventErrChan { - if e.Error != nil { - if ec != nil { - ec <- err - } - return - } - cb(&e.Event, ec, args...) - } - }() -} - -func (client *DockerClient) StopAllMonitorEvents() { - if client.eventStopChan == nil { - return - } - close(client.eventStopChan) -} - -func (client *DockerClient) StartMonitorStats(id string, cb StatCallback, ec chan error, args ...interface{}) { - atomic.StoreInt32(&client.monitorStats, 1) - go client.getStats(id, cb, ec, args...) -} - -func (client *DockerClient) getStats(id string, cb StatCallback, ec chan error, args ...interface{}) { - uri := fmt.Sprintf("%s/%s/containers/%s/stats", client.URL.String(), APIVersion, id) - resp, err := client.HTTPClient.Get(uri) - if err != nil { - ec <- err - return - } - defer resp.Body.Close() - - dec := json.NewDecoder(resp.Body) - for atomic.LoadInt32(&client.monitorStats) > 0 { - var stats *Stats - if err := dec.Decode(&stats); err != nil { - ec <- err - return - } - cb(id, stats, ec, args...) - } -} - -func (client *DockerClient) StopAllMonitorStats() { - atomic.StoreInt32(&client.monitorStats, 0) -} - -func (client *DockerClient) TagImage(nameOrID string, repo string, tag string, force bool) error { - v := url.Values{} - v.Set("repo", repo) - v.Set("tag", tag) - if force { - v.Set("force", "1") - } - uri := fmt.Sprintf("/%s/images/%s/tag?%s", APIVersion, nameOrID, v.Encode()) - if _, err := client.doRequest("POST", uri, nil, nil); err != nil { - return err - } - return nil -} - -func (client *DockerClient) Version() (*Version, error) { - uri := fmt.Sprintf("/%s/version", APIVersion) - data, err := client.doRequest("GET", uri, nil, nil) - if err != nil { - return nil, err - } - version := &Version{} - err = json.Unmarshal(data, version) - if err != nil { - return nil, err - } - return version, nil -} - -func (client *DockerClient) PushImage(name string, tag string, auth *AuthConfig) error { - v := url.Values{} - if tag != "" { - v.Set("tag", tag) - } - uri := fmt.Sprintf("/%s/images/%s/push?%s", APIVersion, url.QueryEscape(name), v.Encode()) - req, err := http.NewRequest("POST", client.URL.String()+uri, nil) - if auth != nil { - if encodedAuth, err := auth.encode(); err != nil { - return err - } else { - req.Header.Add("X-Registry-Auth", encodedAuth) - } - } - resp, err := client.HTTPClient.Do(req) - if err != nil { - return err - } - defer resp.Body.Close() - var finalObj map[string]interface{} - for decoder := json.NewDecoder(resp.Body); err == nil; err = decoder.Decode(&finalObj) { - } - if err != io.EOF { - return err - } - if err, ok := finalObj["error"]; ok { - return fmt.Errorf("%v", err) - } - return nil -} - -func (client *DockerClient) PullImage(name string, auth *AuthConfig) error { - v := url.Values{} - v.Set("fromImage", name) - uri := fmt.Sprintf("/%s/images/create?%s", APIVersion, v.Encode()) - req, err := http.NewRequest("POST", client.URL.String()+uri, nil) - if auth != nil { - encoded_auth, err := auth.encode() - if err != nil { - return err - } - req.Header.Add("X-Registry-Auth", encoded_auth) - } - resp, err := client.HTTPClient.Do(req) - if err != nil { - return err - } - - defer resp.Body.Close() - if resp.StatusCode == 404 { - return ErrNotFound - } - if resp.StatusCode >= 400 { - data, err := ioutil.ReadAll(resp.Body) - if err != nil { - return err - } - return fmt.Errorf("%s", string(data)) - } - - var finalObj map[string]interface{} - for decoder := json.NewDecoder(resp.Body); err == nil; err = decoder.Decode(&finalObj) { - } - if err != io.EOF { - return err - } - if err, ok := finalObj["error"]; ok { - return fmt.Errorf("%v", err) - } - return nil -} - -func (client *DockerClient) InspectImage(id string) (*ImageInfo, error) { - uri := fmt.Sprintf("/%s/images/%s/json", APIVersion, id) - data, err := client.doRequest("GET", uri, nil, nil) - if err != nil { - return nil, err - } - info := &ImageInfo{} - err = json.Unmarshal(data, info) - if err != nil { - return nil, err - } - return info, nil -} - -func (client *DockerClient) LoadImage(reader io.Reader) error { - uri := fmt.Sprintf("/%s/images/load", APIVersion) - _, err := client.doStreamRequest("POST", uri, reader, nil) - return err -} - -func (client *DockerClient) RemoveContainer(id string, force, volumes bool) error { - argForce := 0 - argVolumes := 0 - if force == true { - argForce = 1 - } - if volumes == true { - argVolumes = 1 - } - args := fmt.Sprintf("force=%d&v=%d", argForce, argVolumes) - uri := fmt.Sprintf("/%s/containers/%s?%s", APIVersion, id, args) - _, err := client.doRequest("DELETE", uri, nil, nil) - return err -} - -func (client *DockerClient) ListImages(all bool) ([]*Image, error) { - argAll := 0 - if all { - argAll = 1 - } - uri := fmt.Sprintf("/%s/images/json?all=%d", APIVersion, argAll) - data, err := client.doRequest("GET", uri, nil, nil) - if err != nil { - return nil, err - } - var images []*Image - if err := json.Unmarshal(data, &images); err != nil { - return nil, err - } - return images, nil -} - -func (client *DockerClient) RemoveImage(name string, force bool) ([]*ImageDelete, error) { - argForce := 0 - if force { - argForce = 1 - } - - args := fmt.Sprintf("force=%d", argForce) - uri := fmt.Sprintf("/%s/images/%s?%s", APIVersion, name, args) - data, err := client.doRequest("DELETE", uri, nil, nil) - if err != nil { - return nil, err - } - var imageDelete []*ImageDelete - if err := json.Unmarshal(data, &imageDelete); err != nil { - return nil, err - } - return imageDelete, nil -} - -func (client *DockerClient) PauseContainer(id string) error { - uri := fmt.Sprintf("/%s/containers/%s/pause", APIVersion, id) - _, err := client.doRequest("POST", uri, nil, nil) - if err != nil { - return err - } - return nil -} -func (client *DockerClient) UnpauseContainer(id string) error { - uri := fmt.Sprintf("/%s/containers/%s/unpause", APIVersion, id) - _, err := client.doRequest("POST", uri, nil, nil) - if err != nil { - return err - } - return nil -} - -func (client *DockerClient) RenameContainer(oldName string, newName string) error { - uri := fmt.Sprintf("/containers/%s/rename?name=%s", oldName, newName) - _, err := client.doRequest("POST", uri, nil, nil) - return err -} - -func (client *DockerClient) ImportImage(source string, repository string, tag string, tar io.Reader) (io.ReadCloser, error) { - var fromSrc string - v := &url.Values{} - if source == "" { - fromSrc = "-" - } else { - fromSrc = source - } - - v.Set("fromSrc", fromSrc) - v.Set("repo", repository) - if tag != "" { - v.Set("tag", tag) - } - - var in io.Reader - if fromSrc == "-" { - in = tar - } - return client.doStreamRequest("POST", "/images/create?"+v.Encode(), in, nil) -} - -func (client *DockerClient) BuildImage(image *BuildImage) (io.ReadCloser, error) { - v := url.Values{} - - if image.DockerfileName != "" { - v.Set("dockerfile", image.DockerfileName) - } - if image.RepoName != "" { - v.Set("t", image.RepoName) - } - if image.RemoteURL != "" { - v.Set("remote", image.RemoteURL) - } - if image.NoCache { - v.Set("nocache", "1") - } - if image.Pull { - v.Set("pull", "1") - } - if image.Remove { - v.Set("rm", "1") - } else { - v.Set("rm", "0") - } - if image.ForceRemove { - v.Set("forcerm", "1") - } - if image.SuppressOutput { - v.Set("q", "1") - } - - v.Set("memory", strconv.FormatInt(image.Memory, 10)) - v.Set("memswap", strconv.FormatInt(image.MemorySwap, 10)) - v.Set("cpushares", strconv.FormatInt(image.CpuShares, 10)) - v.Set("cpuperiod", strconv.FormatInt(image.CpuPeriod, 10)) - v.Set("cpuquota", strconv.FormatInt(image.CpuQuota, 10)) - v.Set("cpusetcpus", image.CpuSetCpus) - v.Set("cpusetmems", image.CpuSetMems) - v.Set("cgroupparent", image.CgroupParent) - if image.BuildArgs != nil { - buildArgsJSON, err := json.Marshal(image.BuildArgs) - if err != nil { - return nil, err - } - v.Set("buildargs", string(buildArgsJSON)) - } - - headers := make(map[string]string) - if image.Config != nil { - encoded_config, err := image.Config.encode() - if err != nil { - return nil, err - } - headers["X-Registry-Config"] = encoded_config - } - if image.Context != nil { - headers["Content-Type"] = "application/tar" - } - - uri := fmt.Sprintf("/%s/build?%s", APIVersion, v.Encode()) - return client.doStreamRequest("POST", uri, image.Context, headers) -} - -func (client *DockerClient) ListVolumes() ([]*Volume, error) { - uri := fmt.Sprintf("/%s/volumes", APIVersion) - data, err := client.doRequest("GET", uri, nil, nil) - if err != nil { - return nil, err - } - var volumesList VolumesListResponse - if err := json.Unmarshal(data, &volumesList); err != nil { - return nil, err - } - return volumesList.Volumes, nil -} - -func (client *DockerClient) RemoveVolume(name string) error { - uri := fmt.Sprintf("/%s/volumes/%s", APIVersion, name) - _, err := client.doRequest("DELETE", uri, nil, nil) - return err -} - -func (client *DockerClient) CreateVolume(request *VolumeCreateRequest) (*Volume, error) { - data, err := json.Marshal(request) - if err != nil { - return nil, err - } - uri := fmt.Sprintf("/%s/volumes/create", APIVersion) - data, err = client.doRequest("POST", uri, data, nil) - if err != nil { - return nil, err - } - volume := &Volume{} - err = json.Unmarshal(data, volume) - return volume, err -} - -func (client *DockerClient) ListNetworks(filters string) ([]*NetworkResource, error) { - uri := fmt.Sprintf("/%s/networks", APIVersion) - - if filters != "" { - uri += "&filters=" + filters - } - - data, err := client.doRequest("GET", uri, nil, nil) - if err != nil { - return nil, err - } - ret := []*NetworkResource{} - err = json.Unmarshal(data, &ret) - if err != nil { - return nil, err - } - return ret, nil -} - -func (client *DockerClient) InspectNetwork(id string) (*NetworkResource, error) { - uri := fmt.Sprintf("/%s/networks/%s", APIVersion, id) - - data, err := client.doRequest("GET", uri, nil, nil) - if err != nil { - return nil, err - } - ret := &NetworkResource{} - err = json.Unmarshal(data, ret) - if err != nil { - return nil, err - } - - return ret, nil -} - -func (client *DockerClient) CreateNetwork(config *NetworkCreate) (*NetworkCreateResponse, error) { - data, err := json.Marshal(config) - if err != nil { - return nil, err - } - uri := fmt.Sprintf("/%s/networks/create", APIVersion) - data, err = client.doRequest("POST", uri, data, nil) - if err != nil { - return nil, err - } - ret := &NetworkCreateResponse{} - err = json.Unmarshal(data, ret) - return ret, nil -} - -func (client *DockerClient) ConnectNetwork(id, container string) error { - data, err := json.Marshal(NetworkConnect{Container: container}) - if err != nil { - return err - } - uri := fmt.Sprintf("/%s/networks/%s/connect", APIVersion, id) - _, err = client.doRequest("POST", uri, data, nil) - return err -} - -func (client *DockerClient) DisconnectNetwork(id, container string) error { - data, err := json.Marshal(NetworkDisconnect{Container: container}) - if err != nil { - return err - } - uri := fmt.Sprintf("/%s/networks/%s/disconnect", APIVersion, id) - _, err = client.doRequest("POST", uri, data, nil) - return err -} - -func (client *DockerClient) RemoveNetwork(id string) error { - uri := fmt.Sprintf("/%s/networks/%s", APIVersion, id) - _, err := client.doRequest("DELETE", uri, nil, nil) - return err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/example_responses.go b/vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/example_responses.go deleted file mode 100644 index 670508c0..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/example_responses.go +++ /dev/null @@ -1,13 +0,0 @@ -package dockerclient - -var haproxyPullOutput = `{"status":"The image you are pulling has been verified","id":"haproxy:1"} -{"status":"Already exists","progressDetail":{},"id":"511136ea3c5a"}{"status":"Already exists","progressDetail":{},"id":"1aeada447715"}{"status":"Already exists","progressDetail":{},"id":"479215127fa7"}{"status":"Already exists","progressDetail":{},"id":"66301eb54a7d"}{"status":"Already exists","progressDetail":{},"id":"e3990b07573f"}{"status":"Already exists","progressDetail":{},"id":"ecb4b23ca7ce"}{"status":"Already exists","progressDetail":{},"id":"f453e940c177"}{"status":"Already exists","progressDetail":{},"id":"fc5ea1bc05ab"}{"status":"Already exists","progressDetail":{},"id":"380557f8f7b3"}{"status":"The image you are pulling has been verified","id":"haproxy:1.4"} -{"status":"Already exists","progressDetail":{},"id":"511136ea3c5a"}{"status":"Already exists","progressDetail":{},"id":"1aeada447715"}{"status":"Already exists","progressDetail":{},"id":"479215127fa7"}{"status":"Already exists","progressDetail":{},"id":"63a1b9929e14"}{"status":"Already exists","progressDetail":{},"id":"af43bf7d176e"}{"status":"Already exists","progressDetail":{},"id":"851aac2d69aa"}{"status":"Already exists","progressDetail":{},"id":"345053a92c95"}{"status":"Already exists","progressDetail":{},"id":"b41231d429c9"}{"status":"The image you are pulling has been verified","id":"haproxy:1.4.25"} -{"status":"Already exists","progressDetail":{},"id":"511136ea3c5a"}{"status":"Already exists","progressDetail":{},"id":"1aeada447715"}{"status":"Already exists","progressDetail":{},"id":"479215127fa7"}{"status":"Already exists","progressDetail":{},"id":"63a1b9929e14"}{"status":"Already exists","progressDetail":{},"id":"af43bf7d176e"}{"status":"Already exists","progressDetail":{},"id":"851aac2d69aa"}{"status":"Already exists","progressDetail":{},"id":"345053a92c95"}{"status":"Already exists","progressDetail":{},"id":"b41231d429c9"}{"status":"The image you are pulling has been verified","id":"haproxy:1.5"} -{"status":"Already exists","progressDetail":{},"id":"511136ea3c5a"}{"status":"Already exists","progressDetail":{},"id":"1aeada447715"}{"status":"Already exists","progressDetail":{},"id":"479215127fa7"}{"status":"Already exists","progressDetail":{},"id":"66301eb54a7d"}{"status":"Already exists","progressDetail":{},"id":"e3990b07573f"}{"status":"Already exists","progressDetail":{},"id":"ecb4b23ca7ce"}{"status":"Already exists","progressDetail":{},"id":"f453e940c177"}{"status":"Already exists","progressDetail":{},"id":"fc5ea1bc05ab"}{"status":"Already exists","progressDetail":{},"id":"380557f8f7b3"}{"status":"The image you are pulling has been verified","id":"haproxy:1.5.10"} -{"status":"Already exists","progressDetail":{},"id":"511136ea3c5a"}{"status":"Already exists","progressDetail":{},"id":"1aeada447715"}{"status":"Already exists","progressDetail":{},"id":"479215127fa7"}{"status":"Already exists","progressDetail":{},"id":"66301eb54a7d"}{"status":"Already exists","progressDetail":{},"id":"e3990b07573f"}{"status":"Already exists","progressDetail":{},"id":"ecb4b23ca7ce"}{"status":"Already exists","progressDetail":{},"id":"f453e940c177"}{"status":"Already exists","progressDetail":{},"id":"fc5ea1bc05ab"}{"status":"Already exists","progressDetail":{},"id":"380557f8f7b3"}{"status":"The image you are pulling has been verified","id":"haproxy:1.5.9"} -{"status":"Already exists","progressDetail":{},"id":"511136ea3c5a"}{"status":"Already exists","progressDetail":{},"id":"1aeada447715"}{"status":"Already exists","progressDetail":{},"id":"479215127fa7"}{"status":"Already exists","progressDetail":{},"id":"66301eb54a7d"}{"status":"Already exists","progressDetail":{},"id":"e3990b07573f"}{"status":"Already exists","progressDetail":{},"id":"3d894e6f7e63"}{"status":"Already exists","progressDetail":{},"id":"4d949c40bc77"}{"status":"Already exists","progressDetail":{},"id":"55e031889365"}{"status":"Already exists","progressDetail":{},"id":"c7aa675e1876"}{"status":"The image you are pulling has been verified","id":"haproxy:latest"} -{"status":"Already exists","progressDetail":{},"id":"511136ea3c5a"}{"status":"Already exists","progressDetail":{},"id":"1aeada447715"}{"status":"Already exists","progressDetail":{},"id":"479215127fa7"}{"status":"Already exists","progressDetail":{},"id":"66301eb54a7d"}{"status":"Already exists","progressDetail":{},"id":"e3990b07573f"}{"status":"Already exists","progressDetail":{},"id":"ecb4b23ca7ce"}{"status":"Already exists","progressDetail":{},"id":"f453e940c177"}{"status":"Already exists","progressDetail":{},"id":"fc5ea1bc05ab"}{"status":"Already exists","progressDetail":{},"id":"380557f8f7b3"}{"status":"Status: Image is up to date for haproxy"} -` - -var eventsResp = `{"status":"pull","id":"nginx:latest","time":1428620433}{"status":"create","id":"9b818c3b8291708fdcecd7c4086b75c222cb503be10a93d9c11040886032a48b","from":"nginx:latest","time":1428620433}{"status":"start","id":"9b818c3b8291708fdcecd7c4086b75c222cb503be10a93d9c11040886032a48b","from":"nginx:latest","time":1428620433}{"status":"die","id":"9b818c3b8291708fdcecd7c4086b75c222cb503be10a93d9c11040886032a48b","from":"nginx:latest","time":1428620442}{"status":"create","id":"352d0b412aae5a5d2b14ae9d88be59dc276602d9edb9dcc33e138e475b3e4720","from":"52.11.96.81/foobar/ubuntu:latest","time":1428620444}{"status":"start","id":"352d0b412aae5a5d2b14ae9d88be59dc276602d9edb9dcc33e138e475b3e4720","from":"52.11.96.81/foobar/ubuntu:latest","time":1428620444}{"status":"die","id":"352d0b412aae5a5d2b14ae9d88be59dc276602d9edb9dcc33e138e475b3e4720","from":"52.11.96.81/foobar/ubuntu:latest","time":1428620444}{"status":"pull","id":"debian:latest","time":1428620453}{"status":"create","id":"668887b5729946546b3072655dc6da08f0e3210111b68b704eb842adfce53f6c","from":"debian:latest","time":1428620453}{"status":"start","id":"668887b5729946546b3072655dc6da08f0e3210111b68b704eb842adfce53f6c","from":"debian:latest","time":1428620453}{"status":"die","id":"668887b5729946546b3072655dc6da08f0e3210111b68b704eb842adfce53f6c","from":"debian:latest","time":1428620453}{"status":"create","id":"eb4a19ec21ab29bbbffbf3ee2e2df9d99cb749780e1eff06a591cee5ba505180","from":"nginx:latest","time":1428620458}{"status":"start","id":"eb4a19ec21ab29bbbffbf3ee2e2df9d99cb749780e1eff06a591cee5ba505180","from":"nginx:latest","time":1428620458}{"status":"pause","id":"eb4a19ec21ab29bbbffbf3ee2e2df9d99cb749780e1eff06a591cee5ba505180","from":"nginx:latest","time":1428620462}{"status":"unpause","id":"eb4a19ec21ab29bbbffbf3ee2e2df9d99cb749780e1eff06a591cee5ba505180","from":"nginx:latest","time":1428620466}{"status":"die","id":"eb4a19ec21ab29bbbffbf3ee2e2df9d99cb749780e1eff06a591cee5ba505180","from":"nginx:latest","time":1428620469}` diff --git a/vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/interface.go b/vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/interface.go deleted file mode 100644 index 0638e4b9..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/interface.go +++ /dev/null @@ -1,59 +0,0 @@ -package dockerclient - -import ( - "io" -) - -type Callback func(*Event, chan error, ...interface{}) - -type StatCallback func(string, *Stats, chan error, ...interface{}) - -type Client interface { - Info() (*Info, error) - ListContainers(all, size bool, filters string) ([]Container, error) - InspectContainer(id string) (*ContainerInfo, error) - InspectImage(id string) (*ImageInfo, error) - CreateContainer(config *ContainerConfig, name string, authConfig *AuthConfig) (string, error) - ContainerLogs(id string, options *LogOptions) (io.ReadCloser, error) - ContainerChanges(id string) ([]*ContainerChanges, error) - ExecCreate(config *ExecConfig) (string, error) - ExecStart(id string, config *ExecConfig) error - ExecResize(id string, width, height int) error - StartContainer(id string, config *HostConfig) error - AttachContainer(id string, options *AttachOptions) (io.ReadCloser, error) - StopContainer(id string, timeout int) error - RestartContainer(id string, timeout int) error - KillContainer(id, signal string) error - Wait(id string) <-chan WaitResult - // MonitorEvents takes options and an optional stop channel, and returns - // an EventOrError channel. If an error is ever sent, then no more - // events will be sent. If a stop channel is provided, events will stop - // being monitored after the stop channel is closed. - MonitorEvents(options *MonitorEventsOptions, stopChan <-chan struct{}) (<-chan EventOrError, error) - StartMonitorEvents(cb Callback, ec chan error, args ...interface{}) - StopAllMonitorEvents() - StartMonitorStats(id string, cb StatCallback, ec chan error, args ...interface{}) - StopAllMonitorStats() - TagImage(nameOrID string, repo string, tag string, force bool) error - Version() (*Version, error) - PullImage(name string, auth *AuthConfig) error - PushImage(name string, tag string, auth *AuthConfig) error - LoadImage(reader io.Reader) error - RemoveContainer(id string, force, volumes bool) error - ListImages(all bool) ([]*Image, error) - RemoveImage(name string, force bool) ([]*ImageDelete, error) - PauseContainer(name string) error - UnpauseContainer(name string) error - RenameContainer(oldName string, newName string) error - ImportImage(source string, repository string, tag string, tar io.Reader) (io.ReadCloser, error) - BuildImage(image *BuildImage) (io.ReadCloser, error) - ListVolumes() ([]*Volume, error) - RemoveVolume(name string) error - CreateVolume(request *VolumeCreateRequest) (*Volume, error) - ListNetworks(filters string) ([]*NetworkResource, error) - InspectNetwork(id string) (*NetworkResource, error) - CreateNetwork(config *NetworkCreate) (*NetworkCreateResponse, error) - ConnectNetwork(id, container string) error - DisconnectNetwork(id, container string) error - RemoveNetwork(id string) error -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/types.go b/vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/types.go deleted file mode 100644 index 65cf93e2..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/types.go +++ /dev/null @@ -1,554 +0,0 @@ -package dockerclient - -import ( - "fmt" - "io" - "time" - - "github.com/docker/go-units" -) - -type ContainerConfig struct { - Hostname string - Domainname string - User string - AttachStdin bool - AttachStdout bool - AttachStderr bool - ExposedPorts map[string]struct{} - Tty bool - OpenStdin bool - StdinOnce bool - Env []string - Cmd []string - Image string - Volumes map[string]struct{} - WorkingDir string - Entrypoint []string - NetworkDisabled bool - MacAddress string - OnBuild []string - Labels map[string]string - StopSignal string - - // FIXME: VolumeDriver have been removed since docker 1.9 - VolumeDriver string - - // FIXME: The following fields have been removed since API v1.18 - Memory int64 - MemorySwap int64 - CpuShares int64 - Cpuset string - PortSpecs []string - - // This is used only by the create command - HostConfig HostConfig -} - -type HostConfig struct { - Binds []string - ContainerIDFile string - LxcConf []map[string]string - Memory int64 - MemoryReservation int64 - MemorySwap int64 - KernelMemory int64 - CpuShares int64 - CpuPeriod int64 - CpusetCpus string - CpusetMems string - CpuQuota int64 - BlkioWeight int64 - OomKillDisable bool - MemorySwappiness int64 - Privileged bool - PortBindings map[string][]PortBinding - Links []string - PublishAllPorts bool - Dns []string - DNSOptions []string - DnsSearch []string - ExtraHosts []string - VolumesFrom []string - Devices []DeviceMapping - NetworkMode string - IpcMode string - PidMode string - UTSMode string - CapAdd []string - CapDrop []string - GroupAdd []string - RestartPolicy RestartPolicy - SecurityOpt []string - ReadonlyRootfs bool - Ulimits []Ulimit - LogConfig LogConfig - CgroupParent string - ConsoleSize [2]int - VolumeDriver string -} - -type DeviceMapping struct { - PathOnHost string `json:"PathOnHost"` - PathInContainer string `json:"PathInContainer"` - CgroupPermissions string `json:"CgroupPermissions"` -} - -type ExecConfig struct { - AttachStdin bool - AttachStdout bool - AttachStderr bool - Tty bool - Cmd []string - Container string - Detach bool -} - -type LogOptions struct { - Follow bool - Stdout bool - Stderr bool - Timestamps bool - Tail int64 -} - -type AttachOptions struct { - Logs bool - Stream bool - Stdin bool - Stdout bool - Stderr bool -} - -type MonitorEventsFilters struct { - Event string `json:",omitempty"` - Image string `json:",omitempty"` - Container string `json:",omitempty"` -} - -type MonitorEventsOptions struct { - Since int - Until int - Filters *MonitorEventsFilters `json:",omitempty"` -} - -type RestartPolicy struct { - Name string - MaximumRetryCount int64 -} - -type PortBinding struct { - HostIp string - HostPort string -} - -type State struct { - Running bool - Paused bool - Restarting bool - OOMKilled bool - Dead bool - Pid int - ExitCode int - Error string // contains last known error when starting the container - StartedAt time.Time - FinishedAt time.Time - Ghost bool -} - -// String returns a human-readable description of the state -// Stoken from docker/docker/daemon/state.go -func (s *State) String() string { - if s.Running { - if s.Paused { - return fmt.Sprintf("Up %s (Paused)", units.HumanDuration(time.Now().UTC().Sub(s.StartedAt))) - } - if s.Restarting { - return fmt.Sprintf("Restarting (%d) %s ago", s.ExitCode, units.HumanDuration(time.Now().UTC().Sub(s.FinishedAt))) - } - - return fmt.Sprintf("Up %s", units.HumanDuration(time.Now().UTC().Sub(s.StartedAt))) - } - - if s.Dead { - return "Dead" - } - - if s.FinishedAt.IsZero() { - return "" - } - - return fmt.Sprintf("Exited (%d) %s ago", s.ExitCode, units.HumanDuration(time.Now().UTC().Sub(s.FinishedAt))) -} - -// StateString returns a single string to describe state -// Stoken from docker/docker/daemon/state.go -func (s *State) StateString() string { - if s.Running { - if s.Paused { - return "paused" - } - if s.Restarting { - return "restarting" - } - return "running" - } - - if s.Dead { - return "dead" - } - - return "exited" -} - -type ImageInfo struct { - Architecture string - Author string - Comment string - Config *ContainerConfig - Container string - ContainerConfig *ContainerConfig - Created time.Time - DockerVersion string - Id string - Os string - Parent string - Size int64 - VirtualSize int64 -} - -type ContainerInfo struct { - Id string - Created string - Path string - Name string - Args []string - ExecIDs []string - Config *ContainerConfig - State *State - Image string - NetworkSettings struct { - IPAddress string `json:"IpAddress"` - IPPrefixLen int `json:"IpPrefixLen"` - Gateway string - Bridge string - Ports map[string][]PortBinding - } - SysInitPath string - ResolvConfPath string - Volumes map[string]string - HostConfig *HostConfig -} - -type ContainerChanges struct { - Path string - Kind int -} - -type Port struct { - IP string - PrivatePort int - PublicPort int - Type string -} - -type EndpointSettings struct { - EndpointID string - Gateway string - IPAddress string - IPPrefixLen int - IPv6Gateway string - GlobalIPv6Address string - GlobalIPv6PrefixLen int - MacAddress string -} - -type Container struct { - Id string - Names []string - Image string - Command string - Created int64 - Status string - Ports []Port - SizeRw int64 - SizeRootFs int64 - Labels map[string]string - NetworkSettings struct { - Networks map[string]EndpointSettings - } -} - -type Event struct { - Id string - Status string - From string - Time int64 -} - -type Version struct { - ApiVersion string - Arch string - GitCommit string - GoVersion string - KernelVersion string - Os string - Version string -} - -type RespContainersCreate struct { - Id string - Warnings []string -} - -type Image struct { - Created int64 - Id string - Labels map[string]string - ParentId string - RepoDigests []string - RepoTags []string - Size int64 - VirtualSize int64 -} - -// Info is the struct returned by /info -// The API is currently in flux, so Debug, MemoryLimit, SwapLimit, and -// IPv4Forwarding are interfaces because in docker 1.6.1 they are 0 or 1 but in -// master they are bools. -type Info struct { - ID string - Containers int64 - Driver string - DriverStatus [][]string - ExecutionDriver string - Images int64 - KernelVersion string - OperatingSystem string - NCPU int64 - MemTotal int64 - Name string - Labels []string - Debug interface{} - NFd int64 - NGoroutines int64 - SystemTime string - NEventsListener int64 - InitPath string - InitSha1 string - IndexServerAddress string - MemoryLimit interface{} - SwapLimit interface{} - IPv4Forwarding interface{} - BridgeNfIptables bool - BridgeNfIp6tables bool - DockerRootDir string - HttpProxy string - HttpsProxy string - NoProxy string -} - -type ImageDelete struct { - Deleted string - Untagged string -} - -type EventOrError struct { - Event - Error error -} - -type WaitResult struct { - ExitCode int - Error error -} - -type decodingResult struct { - result interface{} - err error -} - -// The following are types for the API stats endpoint -type ThrottlingData struct { - // Number of periods with throttling active - Periods uint64 `json:"periods"` - // Number of periods when the container hit its throttling limit. - ThrottledPeriods uint64 `json:"throttled_periods"` - // Aggregate time the container was throttled for in nanoseconds. - ThrottledTime uint64 `json:"throttled_time"` -} - -type CpuUsage struct { - // Total CPU time consumed. - // Units: nanoseconds. - TotalUsage uint64 `json:"total_usage"` - // Total CPU time consumed per core. - // Units: nanoseconds. - PercpuUsage []uint64 `json:"percpu_usage"` - // Time spent by tasks of the cgroup in kernel mode. - // Units: nanoseconds. - UsageInKernelmode uint64 `json:"usage_in_kernelmode"` - // Time spent by tasks of the cgroup in user mode. - // Units: nanoseconds. - UsageInUsermode uint64 `json:"usage_in_usermode"` -} - -type CpuStats struct { - CpuUsage CpuUsage `json:"cpu_usage"` - SystemUsage uint64 `json:"system_cpu_usage"` - ThrottlingData ThrottlingData `json:"throttling_data,omitempty"` -} - -type NetworkStats struct { - RxBytes uint64 `json:"rx_bytes"` - RxPackets uint64 `json:"rx_packets"` - RxErrors uint64 `json:"rx_errors"` - RxDropped uint64 `json:"rx_dropped"` - TxBytes uint64 `json:"tx_bytes"` - TxPackets uint64 `json:"tx_packets"` - TxErrors uint64 `json:"tx_errors"` - TxDropped uint64 `json:"tx_dropped"` -} - -type MemoryStats struct { - Usage uint64 `json:"usage"` - MaxUsage uint64 `json:"max_usage"` - Stats map[string]uint64 `json:"stats"` - Failcnt uint64 `json:"failcnt"` - Limit uint64 `json:"limit"` -} - -type BlkioStatEntry struct { - Major uint64 `json:"major"` - Minor uint64 `json:"minor"` - Op string `json:"op"` - Value uint64 `json:"value"` -} - -type BlkioStats struct { - // number of bytes tranferred to and from the block device - IoServiceBytesRecursive []BlkioStatEntry `json:"io_service_bytes_recursive"` - IoServicedRecursive []BlkioStatEntry `json:"io_serviced_recursive"` - IoQueuedRecursive []BlkioStatEntry `json:"io_queue_recursive"` - IoServiceTimeRecursive []BlkioStatEntry `json:"io_service_time_recursive"` - IoWaitTimeRecursive []BlkioStatEntry `json:"io_wait_time_recursive"` - IoMergedRecursive []BlkioStatEntry `json:"io_merged_recursive"` - IoTimeRecursive []BlkioStatEntry `json:"io_time_recursive"` - SectorsRecursive []BlkioStatEntry `json:"sectors_recursive"` -} - -type Stats struct { - Read time.Time `json:"read"` - NetworkStats NetworkStats `json:"network,omitempty"` - CpuStats CpuStats `json:"cpu_stats,omitempty"` - MemoryStats MemoryStats `json:"memory_stats,omitempty"` - BlkioStats BlkioStats `json:"blkio_stats,omitempty"` -} - -type Ulimit struct { - Name string `json:"name"` - Soft uint64 `json:"soft"` - Hard uint64 `json:"hard"` -} - -type LogConfig struct { - Type string `json:"type"` - Config map[string]string `json:"config"` -} - -type BuildImage struct { - Config *ConfigFile - DockerfileName string - Context io.Reader - RemoteURL string - RepoName string - SuppressOutput bool - NoCache bool - Remove bool - ForceRemove bool - Pull bool - Memory int64 - MemorySwap int64 - CpuShares int64 - CpuPeriod int64 - CpuQuota int64 - CpuSetCpus string - CpuSetMems string - CgroupParent string - BuildArgs map[string]string -} - -type Volume struct { - Name string // Name is the name of the volume - Driver string // Driver is the Driver name used to create the volume - Mountpoint string // Mountpoint is the location on disk of the volume -} - -type VolumesListResponse struct { - Volumes []*Volume // Volumes is the list of volumes being returned -} - -type VolumeCreateRequest struct { - Name string // Name is the requested name of the volume - Driver string // Driver is the name of the driver that should be used to create the volume - DriverOpts map[string]string // DriverOpts holds the driver specific options to use for when creating the volume. -} - -// IPAM represents IP Address Management -type IPAM struct { - Driver string - Config []IPAMConfig -} - -// IPAMConfig represents IPAM configurations -type IPAMConfig struct { - Subnet string `json:",omitempty"` - IPRange string `json:",omitempty"` - Gateway string `json:",omitempty"` - AuxAddress map[string]string `json:"AuxiliaryAddresses,omitempty"` -} - -// NetworkResource is the body of the "get network" http response message -type NetworkResource struct { - Name string - ID string `json:"Id"` - Scope string - Driver string - IPAM IPAM - Containers map[string]EndpointResource - Options map[string]string -} - -// EndpointResource contains network resources allocated and used for a container in a network -type EndpointResource struct { - Name string - EndpointID string - MacAddress string - IPv4Address string - IPv6Address string -} - -// NetworkCreate is the expected body of the "create network" http request message -type NetworkCreate struct { - Name string - CheckDuplicate bool - Driver string - IPAM IPAM - Options map[string]string -} - -// NetworkCreateResponse is the response message sent by the server for network create call -type NetworkCreateResponse struct { - ID string `json:"Id"` - Warning string -} - -// NetworkConnect represents the data to be used to connect a container to the network -type NetworkConnect struct { - Container string -} - -// NetworkDisconnect represents the data to be used to disconnect a container from the network -type NetworkDisconnect struct { - Container string -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/utils.go b/vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/utils.go deleted file mode 100644 index 806f1b3e..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/samalba/dockerclient/utils.go +++ /dev/null @@ -1,33 +0,0 @@ -package dockerclient - -import ( - "crypto/tls" - "net" - "net/http" - "net/url" - "time" -) - -func newHTTPClient(u *url.URL, tlsConfig *tls.Config, timeout time.Duration) *http.Client { - httpTransport := &http.Transport{ - TLSClientConfig: tlsConfig, - } - - switch u.Scheme { - default: - httpTransport.Dial = func(proto, addr string) (net.Conn, error) { - return net.DialTimeout(proto, addr, timeout) - } - case "unix": - socketPath := u.Path - unixDial := func(proto, addr string) (net.Conn, error) { - return net.DialTimeout("unix", socketPath, timeout) - } - httpTransport.Dial = unixDial - // Override the main URL object so the HTTP lib won't complain - u.Scheme = "http" - u.Host = "unix.sock" - u.Path = "" - } - return &http.Client{Transport: httpTransport} -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/skarademir/naturalsort/LICENSE.md b/vendor/github.com/docker/machine/vendor/github.com/skarademir/naturalsort/LICENSE.md deleted file mode 100644 index af513860..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/skarademir/naturalsort/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 skarademir - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/github.com/docker/machine/vendor/github.com/skarademir/naturalsort/README.md b/vendor/github.com/docker/machine/vendor/github.com/skarademir/naturalsort/README.md deleted file mode 100644 index 60307fc0..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/skarademir/naturalsort/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# naturalsort -A simple natural string sorter for Go. - -##Usage -Implements the `sort.Interface` - -called by `sort.Sort(NaturalSort([]string))` -###Example - -```go -SampleStringArray := []string{ - "z24", "z2", "z15", "z1", - "z3", "z20", "z5", "z11", - "z 21", "z22"} -sort.Sort(NaturalSort(SampleStringArray)) -``` - -##Needless Description -Inspired by [Jeff Atwood's seminal blog post](http://blog.codinghorror.com/sorting-for-humans-natural-sort-order/) and -structured similarly to [Ian Griffiths' C# implementation](http://www.interact-sw.co.uk/iangblog/2007/12/13/natural-sorting). -This uses a regex to split the numeric and non-numeric portions of the string into a chunky array. Next, the left and right sides' -chunks are compared either by string comparrison (if either chunk is a non-numeric), or by ~~integer (if both chunks are numeric)~~ a character-by-character iterative function that compares numerical strings diff --git a/vendor/github.com/docker/machine/vendor/github.com/skarademir/naturalsort/naturalsort.go b/vendor/github.com/docker/machine/vendor/github.com/skarademir/naturalsort/naturalsort.go deleted file mode 100644 index 23dd16d1..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/skarademir/naturalsort/naturalsort.go +++ /dev/null @@ -1,60 +0,0 @@ -package naturalsort - -import ( - "regexp" - "strings" -) - -type NaturalSort []string - -var r = regexp.MustCompile(`[^0-9]+|[0-9]+`) - -func (s NaturalSort) Len() int { - return len(s) -} -func (s NaturalSort) Swap(i, j int) { - s[i], s[j] = s[j], s[i] -} -func (s NaturalSort) Less(i, j int) bool { - - spliti := r.FindAllString(strings.Replace(s[i], " ", "", -1), -1) - splitj := r.FindAllString(strings.Replace(s[j], " ", "", -1), -1) - - for index := 0; index < len(spliti) && index < len(splitj); index++ { - if spliti[index] != splitj[index] { - // Both slices are numbers - if isNumber(spliti[index][0]) && isNumber(splitj[index][0]) { - // Remove Leading Zeroes - stringi := strings.TrimLeft(spliti[index], "0") - stringj := strings.TrimLeft(splitj[index], "0") - if len(stringi) == len(stringj) { - for indexchar := 0; indexchar < len(stringi); indexchar++ { - if stringi[indexchar] != stringj[indexchar] { - return stringi[indexchar] < stringj[indexchar] - } - } - return len(spliti[index]) < len(splitj[index]) - } - return len(stringi) < len(stringj) - } - // One of the slices is a number (we give precedence to numbers regardless of ASCII table position) - if isNumber(spliti[index][0]) || isNumber(splitj[index][0]) { - return isNumber(spliti[index][0]) - } - // Both slices are not numbers - return spliti[index] < splitj[index] - } - - } - // Fall back for cases where space characters have been annihliated by the replacment call - // Here we iterate over the unmolsested string and prioritize numbers over - for index := 0; index < len(s[i]) && index < len(s[j]); index++ { - if isNumber(s[i][index]) || isNumber(s[j][index]) { - return isNumber(s[i][index]) - } - } - return s[i] < s[j] -} -func isNumber(input uint8) bool { - return input >= '0' && input <= '9' -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/.gitignore b/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/.gitignore deleted file mode 100644 index 00268614..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/.gitignore +++ /dev/null @@ -1,22 +0,0 @@ -# Compiled Object files, Static and Dynamic libs (Shared Objects) -*.o -*.a -*.so - -# Folders -_obj -_test - -# Architecture specific extensions/prefixes -*.[568vq] -[568vq].out - -*.cgo1.go -*.cgo2.c -_cgo_defun.c -_cgo_gotypes.go -_cgo_export.* - -_testmain.go - -*.exe diff --git a/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/LICENSE.md b/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/LICENSE.md deleted file mode 100644 index 21999458..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/LICENSE.md +++ /dev/null @@ -1,23 +0,0 @@ -objx - by Mat Ryer and Tyler Bunnell - -The MIT License (MIT) - -Copyright (c) 2014 Stretchr, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/README.md b/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/README.md deleted file mode 100644 index 4aa18068..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# objx - - * Jump into the [API Documentation](http://godoc.org/github.com/stretchr/objx) diff --git a/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/accessors.go b/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/accessors.go deleted file mode 100644 index 721bcac7..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/accessors.go +++ /dev/null @@ -1,179 +0,0 @@ -package objx - -import ( - "fmt" - "regexp" - "strconv" - "strings" -) - -// arrayAccesRegexString is the regex used to extract the array number -// from the access path -const arrayAccesRegexString = `^(.+)\[([0-9]+)\]$` - -// arrayAccesRegex is the compiled arrayAccesRegexString -var arrayAccesRegex = regexp.MustCompile(arrayAccesRegexString) - -// Get gets the value using the specified selector and -// returns it inside a new Obj object. -// -// If it cannot find the value, Get will return a nil -// value inside an instance of Obj. -// -// Get can only operate directly on map[string]interface{} and []interface. -// -// Example -// -// To access the title of the third chapter of the second book, do: -// -// o.Get("books[1].chapters[2].title") -func (m Map) Get(selector string) *Value { - rawObj := access(m, selector, nil, false, false) - return &Value{data: rawObj} -} - -// Set sets the value using the specified selector and -// returns the object on which Set was called. -// -// Set can only operate directly on map[string]interface{} and []interface -// -// Example -// -// To set the title of the third chapter of the second book, do: -// -// o.Set("books[1].chapters[2].title","Time to Go") -func (m Map) Set(selector string, value interface{}) Map { - access(m, selector, value, true, false) - return m -} - -// access accesses the object using the selector and performs the -// appropriate action. -func access(current, selector, value interface{}, isSet, panics bool) interface{} { - - switch selector.(type) { - case int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64: - - if array, ok := current.([]interface{}); ok { - index := intFromInterface(selector) - - if index >= len(array) { - if panics { - panic(fmt.Sprintf("objx: Index %d is out of range. Slice only contains %d items.", index, len(array))) - } - return nil - } - - return array[index] - } - - return nil - - case string: - - selStr := selector.(string) - selSegs := strings.SplitN(selStr, PathSeparator, 2) - thisSel := selSegs[0] - index := -1 - var err error - - // https://github.com/stretchr/objx/issues/12 - if strings.Contains(thisSel, "[") { - - arrayMatches := arrayAccesRegex.FindStringSubmatch(thisSel) - - if len(arrayMatches) > 0 { - - // Get the key into the map - thisSel = arrayMatches[1] - - // Get the index into the array at the key - index, err = strconv.Atoi(arrayMatches[2]) - - if err != nil { - // This should never happen. If it does, something has gone - // seriously wrong. Panic. - panic("objx: Array index is not an integer. Must use array[int].") - } - - } - } - - if curMap, ok := current.(Map); ok { - current = map[string]interface{}(curMap) - } - - // get the object in question - switch current.(type) { - case map[string]interface{}: - curMSI := current.(map[string]interface{}) - if len(selSegs) <= 1 && isSet { - curMSI[thisSel] = value - return nil - } else { - current = curMSI[thisSel] - } - default: - current = nil - } - - if current == nil && panics { - panic(fmt.Sprintf("objx: '%v' invalid on object.", selector)) - } - - // do we need to access the item of an array? - if index > -1 { - if array, ok := current.([]interface{}); ok { - if index < len(array) { - current = array[index] - } else { - if panics { - panic(fmt.Sprintf("objx: Index %d is out of range. Slice only contains %d items.", index, len(array))) - } - current = nil - } - } - } - - if len(selSegs) > 1 { - current = access(current, selSegs[1], value, isSet, panics) - } - - } - - return current - -} - -// intFromInterface converts an interface object to the largest -// representation of an unsigned integer using a type switch and -// assertions -func intFromInterface(selector interface{}) int { - var value int - switch selector.(type) { - case int: - value = selector.(int) - case int8: - value = int(selector.(int8)) - case int16: - value = int(selector.(int16)) - case int32: - value = int(selector.(int32)) - case int64: - value = int(selector.(int64)) - case uint: - value = int(selector.(uint)) - case uint8: - value = int(selector.(uint8)) - case uint16: - value = int(selector.(uint16)) - case uint32: - value = int(selector.(uint32)) - case uint64: - value = int(selector.(uint64)) - default: - panic("objx: array access argument is not an integer type (this should never happen)") - } - - return value -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/constants.go b/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/constants.go deleted file mode 100644 index f9eb42a2..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/constants.go +++ /dev/null @@ -1,13 +0,0 @@ -package objx - -const ( - // PathSeparator is the character used to separate the elements - // of the keypath. - // - // For example, `location.address.city` - PathSeparator string = "." - - // SignatureSeparator is the character that is used to - // separate the Base64 string from the security signature. - SignatureSeparator = "_" -) diff --git a/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/conversions.go b/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/conversions.go deleted file mode 100644 index 9cdfa9f9..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/conversions.go +++ /dev/null @@ -1,117 +0,0 @@ -package objx - -import ( - "bytes" - "encoding/base64" - "encoding/json" - "errors" - "fmt" - "net/url" -) - -// JSON converts the contained object to a JSON string -// representation -func (m Map) JSON() (string, error) { - - result, err := json.Marshal(m) - - if err != nil { - err = errors.New("objx: JSON encode failed with: " + err.Error()) - } - - return string(result), err - -} - -// MustJSON converts the contained object to a JSON string -// representation and panics if there is an error -func (m Map) MustJSON() string { - result, err := m.JSON() - if err != nil { - panic(err.Error()) - } - return result -} - -// Base64 converts the contained object to a Base64 string -// representation of the JSON string representation -func (m Map) Base64() (string, error) { - - var buf bytes.Buffer - - jsonData, err := m.JSON() - if err != nil { - return "", err - } - - encoder := base64.NewEncoder(base64.StdEncoding, &buf) - encoder.Write([]byte(jsonData)) - encoder.Close() - - return buf.String(), nil - -} - -// MustBase64 converts the contained object to a Base64 string -// representation of the JSON string representation and panics -// if there is an error -func (m Map) MustBase64() string { - result, err := m.Base64() - if err != nil { - panic(err.Error()) - } - return result -} - -// SignedBase64 converts the contained object to a Base64 string -// representation of the JSON string representation and signs it -// using the provided key. -func (m Map) SignedBase64(key string) (string, error) { - - base64, err := m.Base64() - if err != nil { - return "", err - } - - sig := HashWithKey(base64, key) - - return base64 + SignatureSeparator + sig, nil - -} - -// MustSignedBase64 converts the contained object to a Base64 string -// representation of the JSON string representation and signs it -// using the provided key and panics if there is an error -func (m Map) MustSignedBase64(key string) string { - result, err := m.SignedBase64(key) - if err != nil { - panic(err.Error()) - } - return result -} - -/* - URL Query - ------------------------------------------------ -*/ - -// URLValues creates a url.Values object from an Obj. This -// function requires that the wrapped object be a map[string]interface{} -func (m Map) URLValues() url.Values { - - vals := make(url.Values) - - for k, v := range m { - //TODO: can this be done without sprintf? - vals.Set(k, fmt.Sprintf("%v", v)) - } - - return vals -} - -// URLQuery gets an encoded URL query representing the given -// Obj. This function requires that the wrapped object be a -// map[string]interface{} -func (m Map) URLQuery() (string, error) { - return m.URLValues().Encode(), nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/doc.go b/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/doc.go deleted file mode 100644 index 47bf85e4..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/doc.go +++ /dev/null @@ -1,72 +0,0 @@ -// objx - Go package for dealing with maps, slices, JSON and other data. -// -// Overview -// -// Objx provides the `objx.Map` type, which is a `map[string]interface{}` that exposes -// a powerful `Get` method (among others) that allows you to easily and quickly get -// access to data within the map, without having to worry too much about type assertions, -// missing data, default values etc. -// -// Pattern -// -// Objx uses a preditable pattern to make access data from within `map[string]interface{}'s -// easy. -// -// Call one of the `objx.` functions to create your `objx.Map` to get going: -// -// m, err := objx.FromJSON(json) -// -// NOTE: Any methods or functions with the `Must` prefix will panic if something goes wrong, -// the rest will be optimistic and try to figure things out without panicking. -// -// Use `Get` to access the value you're interested in. You can use dot and array -// notation too: -// -// m.Get("places[0].latlng") -// -// Once you have saught the `Value` you're interested in, you can use the `Is*` methods -// to determine its type. -// -// if m.Get("code").IsStr() { /* ... */ } -// -// Or you can just assume the type, and use one of the strong type methods to -// extract the real value: -// -// m.Get("code").Int() -// -// If there's no value there (or if it's the wrong type) then a default value -// will be returned, or you can be explicit about the default value. -// -// Get("code").Int(-1) -// -// If you're dealing with a slice of data as a value, Objx provides many useful -// methods for iterating, manipulating and selecting that data. You can find out more -// by exploring the index below. -// -// Reading data -// -// A simple example of how to use Objx: -// -// // use MustFromJSON to make an objx.Map from some JSON -// m := objx.MustFromJSON(`{"name": "Mat", "age": 30}`) -// -// // get the details -// name := m.Get("name").Str() -// age := m.Get("age").Int() -// -// // get their nickname (or use their name if they -// // don't have one) -// nickname := m.Get("nickname").Str(name) -// -// Ranging -// -// Since `objx.Map` is a `map[string]interface{}` you can treat it as such. For -// example, to `range` the data, do what you would expect: -// -// m := objx.MustFromJSON(json) -// for key, value := range m { -// -// /* ... do your magic ... */ -// -// } -package objx diff --git a/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/map.go b/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/map.go deleted file mode 100644 index eb6ed8e2..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/map.go +++ /dev/null @@ -1,222 +0,0 @@ -package objx - -import ( - "encoding/base64" - "encoding/json" - "errors" - "io/ioutil" - "net/url" - "strings" -) - -// MSIConvertable is an interface that defines methods for converting your -// custom types to a map[string]interface{} representation. -type MSIConvertable interface { - // MSI gets a map[string]interface{} (msi) representing the - // object. - MSI() map[string]interface{} -} - -// Map provides extended functionality for working with -// untyped data, in particular map[string]interface (msi). -type Map map[string]interface{} - -// Value returns the internal value instance -func (m Map) Value() *Value { - return &Value{data: m} -} - -// Nil represents a nil Map. -var Nil Map = New(nil) - -// New creates a new Map containing the map[string]interface{} in the data argument. -// If the data argument is not a map[string]interface, New attempts to call the -// MSI() method on the MSIConvertable interface to create one. -func New(data interface{}) Map { - if _, ok := data.(map[string]interface{}); !ok { - if converter, ok := data.(MSIConvertable); ok { - data = converter.MSI() - } else { - return nil - } - } - return Map(data.(map[string]interface{})) -} - -// MSI creates a map[string]interface{} and puts it inside a new Map. -// -// The arguments follow a key, value pattern. -// -// Panics -// -// Panics if any key arugment is non-string or if there are an odd number of arguments. -// -// Example -// -// To easily create Maps: -// -// m := objx.MSI("name", "Mat", "age", 29, "subobj", objx.MSI("active", true)) -// -// // creates an Map equivalent to -// m := objx.New(map[string]interface{}{"name": "Mat", "age": 29, "subobj": map[string]interface{}{"active": true}}) -func MSI(keyAndValuePairs ...interface{}) Map { - - newMap := make(map[string]interface{}) - keyAndValuePairsLen := len(keyAndValuePairs) - - if keyAndValuePairsLen%2 != 0 { - panic("objx: MSI must have an even number of arguments following the 'key, value' pattern.") - } - - for i := 0; i < keyAndValuePairsLen; i = i + 2 { - - key := keyAndValuePairs[i] - value := keyAndValuePairs[i+1] - - // make sure the key is a string - keyString, keyStringOK := key.(string) - if !keyStringOK { - panic("objx: MSI must follow 'string, interface{}' pattern. " + keyString + " is not a valid key.") - } - - newMap[keyString] = value - - } - - return New(newMap) -} - -// ****** Conversion Constructors - -// MustFromJSON creates a new Map containing the data specified in the -// jsonString. -// -// Panics if the JSON is invalid. -func MustFromJSON(jsonString string) Map { - o, err := FromJSON(jsonString) - - if err != nil { - panic("objx: MustFromJSON failed with error: " + err.Error()) - } - - return o -} - -// FromJSON creates a new Map containing the data specified in the -// jsonString. -// -// Returns an error if the JSON is invalid. -func FromJSON(jsonString string) (Map, error) { - - var data interface{} - err := json.Unmarshal([]byte(jsonString), &data) - - if err != nil { - return Nil, err - } - - return New(data), nil - -} - -// FromBase64 creates a new Obj containing the data specified -// in the Base64 string. -// -// The string is an encoded JSON string returned by Base64 -func FromBase64(base64String string) (Map, error) { - - decoder := base64.NewDecoder(base64.StdEncoding, strings.NewReader(base64String)) - - decoded, err := ioutil.ReadAll(decoder) - if err != nil { - return nil, err - } - - return FromJSON(string(decoded)) -} - -// MustFromBase64 creates a new Obj containing the data specified -// in the Base64 string and panics if there is an error. -// -// The string is an encoded JSON string returned by Base64 -func MustFromBase64(base64String string) Map { - - result, err := FromBase64(base64String) - - if err != nil { - panic("objx: MustFromBase64 failed with error: " + err.Error()) - } - - return result -} - -// FromSignedBase64 creates a new Obj containing the data specified -// in the Base64 string. -// -// The string is an encoded JSON string returned by SignedBase64 -func FromSignedBase64(base64String, key string) (Map, error) { - parts := strings.Split(base64String, SignatureSeparator) - if len(parts) != 2 { - return nil, errors.New("objx: Signed base64 string is malformed.") - } - - sig := HashWithKey(parts[0], key) - if parts[1] != sig { - return nil, errors.New("objx: Signature for base64 data does not match.") - } - - return FromBase64(parts[0]) -} - -// MustFromSignedBase64 creates a new Obj containing the data specified -// in the Base64 string and panics if there is an error. -// -// The string is an encoded JSON string returned by Base64 -func MustFromSignedBase64(base64String, key string) Map { - - result, err := FromSignedBase64(base64String, key) - - if err != nil { - panic("objx: MustFromSignedBase64 failed with error: " + err.Error()) - } - - return result -} - -// FromURLQuery generates a new Obj by parsing the specified -// query. -// -// For queries with multiple values, the first value is selected. -func FromURLQuery(query string) (Map, error) { - - vals, err := url.ParseQuery(query) - - if err != nil { - return nil, err - } - - m := make(map[string]interface{}) - for k, vals := range vals { - m[k] = vals[0] - } - - return New(m), nil -} - -// MustFromURLQuery generates a new Obj by parsing the specified -// query. -// -// For queries with multiple values, the first value is selected. -// -// Panics if it encounters an error -func MustFromURLQuery(query string) Map { - - o, err := FromURLQuery(query) - - if err != nil { - panic("objx: MustFromURLQuery failed with error: " + err.Error()) - } - - return o - -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/mutations.go b/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/mutations.go deleted file mode 100644 index b35c8639..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/mutations.go +++ /dev/null @@ -1,81 +0,0 @@ -package objx - -// Exclude returns a new Map with the keys in the specified []string -// excluded. -func (d Map) Exclude(exclude []string) Map { - - excluded := make(Map) - for k, v := range d { - var shouldInclude bool = true - for _, toExclude := range exclude { - if k == toExclude { - shouldInclude = false - break - } - } - if shouldInclude { - excluded[k] = v - } - } - - return excluded -} - -// Copy creates a shallow copy of the Obj. -func (m Map) Copy() Map { - copied := make(map[string]interface{}) - for k, v := range m { - copied[k] = v - } - return New(copied) -} - -// Merge blends the specified map with a copy of this map and returns the result. -// -// Keys that appear in both will be selected from the specified map. -// This method requires that the wrapped object be a map[string]interface{} -func (m Map) Merge(merge Map) Map { - return m.Copy().MergeHere(merge) -} - -// Merge blends the specified map with this map and returns the current map. -// -// Keys that appear in both will be selected from the specified map. The original map -// will be modified. This method requires that -// the wrapped object be a map[string]interface{} -func (m Map) MergeHere(merge Map) Map { - - for k, v := range merge { - m[k] = v - } - - return m - -} - -// Transform builds a new Obj giving the transformer a chance -// to change the keys and values as it goes. This method requires that -// the wrapped object be a map[string]interface{} -func (m Map) Transform(transformer func(key string, value interface{}) (string, interface{})) Map { - newMap := make(map[string]interface{}) - for k, v := range m { - modifiedKey, modifiedVal := transformer(k, v) - newMap[modifiedKey] = modifiedVal - } - return New(newMap) -} - -// TransformKeys builds a new map using the specified key mapping. -// -// Unspecified keys will be unaltered. -// This method requires that the wrapped object be a map[string]interface{} -func (m Map) TransformKeys(mapping map[string]string) Map { - return m.Transform(func(key string, value interface{}) (string, interface{}) { - - if newKey, ok := mapping[key]; ok { - return newKey, value - } - - return key, value - }) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/security.go b/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/security.go deleted file mode 100644 index fdd6be9c..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/security.go +++ /dev/null @@ -1,14 +0,0 @@ -package objx - -import ( - "crypto/sha1" - "encoding/hex" -) - -// HashWithKey hashes the specified string using the security -// key. -func HashWithKey(data, key string) string { - hash := sha1.New() - hash.Write([]byte(data + ":" + key)) - return hex.EncodeToString(hash.Sum(nil)) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/tests.go b/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/tests.go deleted file mode 100644 index d9e0b479..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/tests.go +++ /dev/null @@ -1,17 +0,0 @@ -package objx - -// Has gets whether there is something at the specified selector -// or not. -// -// If m is nil, Has will always return false. -func (m Map) Has(selector string) bool { - if m == nil { - return false - } - return !m.Get(selector).IsNil() -} - -// IsNil gets whether the data is nil or not. -func (v *Value) IsNil() bool { - return v == nil || v.data == nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/type_specific_codegen.go b/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/type_specific_codegen.go deleted file mode 100644 index f3ecb29b..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/type_specific_codegen.go +++ /dev/null @@ -1,2881 +0,0 @@ -package objx - -/* - Inter (interface{} and []interface{}) - -------------------------------------------------- -*/ - -// Inter gets the value as a interface{}, returns the optionalDefault -// value or a system default object if the value is the wrong type. -func (v *Value) Inter(optionalDefault ...interface{}) interface{} { - if s, ok := v.data.(interface{}); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return nil -} - -// MustInter gets the value as a interface{}. -// -// Panics if the object is not a interface{}. -func (v *Value) MustInter() interface{} { - return v.data.(interface{}) -} - -// InterSlice gets the value as a []interface{}, returns the optionalDefault -// value or nil if the value is not a []interface{}. -func (v *Value) InterSlice(optionalDefault ...[]interface{}) []interface{} { - if s, ok := v.data.([]interface{}); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return nil -} - -// MustInterSlice gets the value as a []interface{}. -// -// Panics if the object is not a []interface{}. -func (v *Value) MustInterSlice() []interface{} { - return v.data.([]interface{}) -} - -// IsInter gets whether the object contained is a interface{} or not. -func (v *Value) IsInter() bool { - _, ok := v.data.(interface{}) - return ok -} - -// IsInterSlice gets whether the object contained is a []interface{} or not. -func (v *Value) IsInterSlice() bool { - _, ok := v.data.([]interface{}) - return ok -} - -// EachInter calls the specified callback for each object -// in the []interface{}. -// -// Panics if the object is the wrong type. -func (v *Value) EachInter(callback func(int, interface{}) bool) *Value { - - for index, val := range v.MustInterSlice() { - carryon := callback(index, val) - if carryon == false { - break - } - } - - return v - -} - -// WhereInter uses the specified decider function to select items -// from the []interface{}. The object contained in the result will contain -// only the selected items. -func (v *Value) WhereInter(decider func(int, interface{}) bool) *Value { - - var selected []interface{} - - v.EachInter(func(index int, val interface{}) bool { - shouldSelect := decider(index, val) - if shouldSelect == false { - selected = append(selected, val) - } - return true - }) - - return &Value{data: selected} - -} - -// GroupInter uses the specified grouper function to group the items -// keyed by the return of the grouper. The object contained in the -// result will contain a map[string][]interface{}. -func (v *Value) GroupInter(grouper func(int, interface{}) string) *Value { - - groups := make(map[string][]interface{}) - - v.EachInter(func(index int, val interface{}) bool { - group := grouper(index, val) - if _, ok := groups[group]; !ok { - groups[group] = make([]interface{}, 0) - } - groups[group] = append(groups[group], val) - return true - }) - - return &Value{data: groups} - -} - -// ReplaceInter uses the specified function to replace each interface{}s -// by iterating each item. The data in the returned result will be a -// []interface{} containing the replaced items. -func (v *Value) ReplaceInter(replacer func(int, interface{}) interface{}) *Value { - - arr := v.MustInterSlice() - replaced := make([]interface{}, len(arr)) - - v.EachInter(func(index int, val interface{}) bool { - replaced[index] = replacer(index, val) - return true - }) - - return &Value{data: replaced} - -} - -// CollectInter uses the specified collector function to collect a value -// for each of the interface{}s in the slice. The data returned will be a -// []interface{}. -func (v *Value) CollectInter(collector func(int, interface{}) interface{}) *Value { - - arr := v.MustInterSlice() - collected := make([]interface{}, len(arr)) - - v.EachInter(func(index int, val interface{}) bool { - collected[index] = collector(index, val) - return true - }) - - return &Value{data: collected} -} - -/* - MSI (map[string]interface{} and []map[string]interface{}) - -------------------------------------------------- -*/ - -// MSI gets the value as a map[string]interface{}, returns the optionalDefault -// value or a system default object if the value is the wrong type. -func (v *Value) MSI(optionalDefault ...map[string]interface{}) map[string]interface{} { - if s, ok := v.data.(map[string]interface{}); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return nil -} - -// MustMSI gets the value as a map[string]interface{}. -// -// Panics if the object is not a map[string]interface{}. -func (v *Value) MustMSI() map[string]interface{} { - return v.data.(map[string]interface{}) -} - -// MSISlice gets the value as a []map[string]interface{}, returns the optionalDefault -// value or nil if the value is not a []map[string]interface{}. -func (v *Value) MSISlice(optionalDefault ...[]map[string]interface{}) []map[string]interface{} { - if s, ok := v.data.([]map[string]interface{}); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return nil -} - -// MustMSISlice gets the value as a []map[string]interface{}. -// -// Panics if the object is not a []map[string]interface{}. -func (v *Value) MustMSISlice() []map[string]interface{} { - return v.data.([]map[string]interface{}) -} - -// IsMSI gets whether the object contained is a map[string]interface{} or not. -func (v *Value) IsMSI() bool { - _, ok := v.data.(map[string]interface{}) - return ok -} - -// IsMSISlice gets whether the object contained is a []map[string]interface{} or not. -func (v *Value) IsMSISlice() bool { - _, ok := v.data.([]map[string]interface{}) - return ok -} - -// EachMSI calls the specified callback for each object -// in the []map[string]interface{}. -// -// Panics if the object is the wrong type. -func (v *Value) EachMSI(callback func(int, map[string]interface{}) bool) *Value { - - for index, val := range v.MustMSISlice() { - carryon := callback(index, val) - if carryon == false { - break - } - } - - return v - -} - -// WhereMSI uses the specified decider function to select items -// from the []map[string]interface{}. The object contained in the result will contain -// only the selected items. -func (v *Value) WhereMSI(decider func(int, map[string]interface{}) bool) *Value { - - var selected []map[string]interface{} - - v.EachMSI(func(index int, val map[string]interface{}) bool { - shouldSelect := decider(index, val) - if shouldSelect == false { - selected = append(selected, val) - } - return true - }) - - return &Value{data: selected} - -} - -// GroupMSI uses the specified grouper function to group the items -// keyed by the return of the grouper. The object contained in the -// result will contain a map[string][]map[string]interface{}. -func (v *Value) GroupMSI(grouper func(int, map[string]interface{}) string) *Value { - - groups := make(map[string][]map[string]interface{}) - - v.EachMSI(func(index int, val map[string]interface{}) bool { - group := grouper(index, val) - if _, ok := groups[group]; !ok { - groups[group] = make([]map[string]interface{}, 0) - } - groups[group] = append(groups[group], val) - return true - }) - - return &Value{data: groups} - -} - -// ReplaceMSI uses the specified function to replace each map[string]interface{}s -// by iterating each item. The data in the returned result will be a -// []map[string]interface{} containing the replaced items. -func (v *Value) ReplaceMSI(replacer func(int, map[string]interface{}) map[string]interface{}) *Value { - - arr := v.MustMSISlice() - replaced := make([]map[string]interface{}, len(arr)) - - v.EachMSI(func(index int, val map[string]interface{}) bool { - replaced[index] = replacer(index, val) - return true - }) - - return &Value{data: replaced} - -} - -// CollectMSI uses the specified collector function to collect a value -// for each of the map[string]interface{}s in the slice. The data returned will be a -// []interface{}. -func (v *Value) CollectMSI(collector func(int, map[string]interface{}) interface{}) *Value { - - arr := v.MustMSISlice() - collected := make([]interface{}, len(arr)) - - v.EachMSI(func(index int, val map[string]interface{}) bool { - collected[index] = collector(index, val) - return true - }) - - return &Value{data: collected} -} - -/* - ObjxMap ((Map) and [](Map)) - -------------------------------------------------- -*/ - -// ObjxMap gets the value as a (Map), returns the optionalDefault -// value or a system default object if the value is the wrong type. -func (v *Value) ObjxMap(optionalDefault ...(Map)) Map { - if s, ok := v.data.((Map)); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return New(nil) -} - -// MustObjxMap gets the value as a (Map). -// -// Panics if the object is not a (Map). -func (v *Value) MustObjxMap() Map { - return v.data.((Map)) -} - -// ObjxMapSlice gets the value as a [](Map), returns the optionalDefault -// value or nil if the value is not a [](Map). -func (v *Value) ObjxMapSlice(optionalDefault ...[](Map)) [](Map) { - if s, ok := v.data.([](Map)); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return nil -} - -// MustObjxMapSlice gets the value as a [](Map). -// -// Panics if the object is not a [](Map). -func (v *Value) MustObjxMapSlice() [](Map) { - return v.data.([](Map)) -} - -// IsObjxMap gets whether the object contained is a (Map) or not. -func (v *Value) IsObjxMap() bool { - _, ok := v.data.((Map)) - return ok -} - -// IsObjxMapSlice gets whether the object contained is a [](Map) or not. -func (v *Value) IsObjxMapSlice() bool { - _, ok := v.data.([](Map)) - return ok -} - -// EachObjxMap calls the specified callback for each object -// in the [](Map). -// -// Panics if the object is the wrong type. -func (v *Value) EachObjxMap(callback func(int, Map) bool) *Value { - - for index, val := range v.MustObjxMapSlice() { - carryon := callback(index, val) - if carryon == false { - break - } - } - - return v - -} - -// WhereObjxMap uses the specified decider function to select items -// from the [](Map). The object contained in the result will contain -// only the selected items. -func (v *Value) WhereObjxMap(decider func(int, Map) bool) *Value { - - var selected [](Map) - - v.EachObjxMap(func(index int, val Map) bool { - shouldSelect := decider(index, val) - if shouldSelect == false { - selected = append(selected, val) - } - return true - }) - - return &Value{data: selected} - -} - -// GroupObjxMap uses the specified grouper function to group the items -// keyed by the return of the grouper. The object contained in the -// result will contain a map[string][](Map). -func (v *Value) GroupObjxMap(grouper func(int, Map) string) *Value { - - groups := make(map[string][](Map)) - - v.EachObjxMap(func(index int, val Map) bool { - group := grouper(index, val) - if _, ok := groups[group]; !ok { - groups[group] = make([](Map), 0) - } - groups[group] = append(groups[group], val) - return true - }) - - return &Value{data: groups} - -} - -// ReplaceObjxMap uses the specified function to replace each (Map)s -// by iterating each item. The data in the returned result will be a -// [](Map) containing the replaced items. -func (v *Value) ReplaceObjxMap(replacer func(int, Map) Map) *Value { - - arr := v.MustObjxMapSlice() - replaced := make([](Map), len(arr)) - - v.EachObjxMap(func(index int, val Map) bool { - replaced[index] = replacer(index, val) - return true - }) - - return &Value{data: replaced} - -} - -// CollectObjxMap uses the specified collector function to collect a value -// for each of the (Map)s in the slice. The data returned will be a -// []interface{}. -func (v *Value) CollectObjxMap(collector func(int, Map) interface{}) *Value { - - arr := v.MustObjxMapSlice() - collected := make([]interface{}, len(arr)) - - v.EachObjxMap(func(index int, val Map) bool { - collected[index] = collector(index, val) - return true - }) - - return &Value{data: collected} -} - -/* - Bool (bool and []bool) - -------------------------------------------------- -*/ - -// Bool gets the value as a bool, returns the optionalDefault -// value or a system default object if the value is the wrong type. -func (v *Value) Bool(optionalDefault ...bool) bool { - if s, ok := v.data.(bool); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return false -} - -// MustBool gets the value as a bool. -// -// Panics if the object is not a bool. -func (v *Value) MustBool() bool { - return v.data.(bool) -} - -// BoolSlice gets the value as a []bool, returns the optionalDefault -// value or nil if the value is not a []bool. -func (v *Value) BoolSlice(optionalDefault ...[]bool) []bool { - if s, ok := v.data.([]bool); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return nil -} - -// MustBoolSlice gets the value as a []bool. -// -// Panics if the object is not a []bool. -func (v *Value) MustBoolSlice() []bool { - return v.data.([]bool) -} - -// IsBool gets whether the object contained is a bool or not. -func (v *Value) IsBool() bool { - _, ok := v.data.(bool) - return ok -} - -// IsBoolSlice gets whether the object contained is a []bool or not. -func (v *Value) IsBoolSlice() bool { - _, ok := v.data.([]bool) - return ok -} - -// EachBool calls the specified callback for each object -// in the []bool. -// -// Panics if the object is the wrong type. -func (v *Value) EachBool(callback func(int, bool) bool) *Value { - - for index, val := range v.MustBoolSlice() { - carryon := callback(index, val) - if carryon == false { - break - } - } - - return v - -} - -// WhereBool uses the specified decider function to select items -// from the []bool. The object contained in the result will contain -// only the selected items. -func (v *Value) WhereBool(decider func(int, bool) bool) *Value { - - var selected []bool - - v.EachBool(func(index int, val bool) bool { - shouldSelect := decider(index, val) - if shouldSelect == false { - selected = append(selected, val) - } - return true - }) - - return &Value{data: selected} - -} - -// GroupBool uses the specified grouper function to group the items -// keyed by the return of the grouper. The object contained in the -// result will contain a map[string][]bool. -func (v *Value) GroupBool(grouper func(int, bool) string) *Value { - - groups := make(map[string][]bool) - - v.EachBool(func(index int, val bool) bool { - group := grouper(index, val) - if _, ok := groups[group]; !ok { - groups[group] = make([]bool, 0) - } - groups[group] = append(groups[group], val) - return true - }) - - return &Value{data: groups} - -} - -// ReplaceBool uses the specified function to replace each bools -// by iterating each item. The data in the returned result will be a -// []bool containing the replaced items. -func (v *Value) ReplaceBool(replacer func(int, bool) bool) *Value { - - arr := v.MustBoolSlice() - replaced := make([]bool, len(arr)) - - v.EachBool(func(index int, val bool) bool { - replaced[index] = replacer(index, val) - return true - }) - - return &Value{data: replaced} - -} - -// CollectBool uses the specified collector function to collect a value -// for each of the bools in the slice. The data returned will be a -// []interface{}. -func (v *Value) CollectBool(collector func(int, bool) interface{}) *Value { - - arr := v.MustBoolSlice() - collected := make([]interface{}, len(arr)) - - v.EachBool(func(index int, val bool) bool { - collected[index] = collector(index, val) - return true - }) - - return &Value{data: collected} -} - -/* - Str (string and []string) - -------------------------------------------------- -*/ - -// Str gets the value as a string, returns the optionalDefault -// value or a system default object if the value is the wrong type. -func (v *Value) Str(optionalDefault ...string) string { - if s, ok := v.data.(string); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return "" -} - -// MustStr gets the value as a string. -// -// Panics if the object is not a string. -func (v *Value) MustStr() string { - return v.data.(string) -} - -// StrSlice gets the value as a []string, returns the optionalDefault -// value or nil if the value is not a []string. -func (v *Value) StrSlice(optionalDefault ...[]string) []string { - if s, ok := v.data.([]string); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return nil -} - -// MustStrSlice gets the value as a []string. -// -// Panics if the object is not a []string. -func (v *Value) MustStrSlice() []string { - return v.data.([]string) -} - -// IsStr gets whether the object contained is a string or not. -func (v *Value) IsStr() bool { - _, ok := v.data.(string) - return ok -} - -// IsStrSlice gets whether the object contained is a []string or not. -func (v *Value) IsStrSlice() bool { - _, ok := v.data.([]string) - return ok -} - -// EachStr calls the specified callback for each object -// in the []string. -// -// Panics if the object is the wrong type. -func (v *Value) EachStr(callback func(int, string) bool) *Value { - - for index, val := range v.MustStrSlice() { - carryon := callback(index, val) - if carryon == false { - break - } - } - - return v - -} - -// WhereStr uses the specified decider function to select items -// from the []string. The object contained in the result will contain -// only the selected items. -func (v *Value) WhereStr(decider func(int, string) bool) *Value { - - var selected []string - - v.EachStr(func(index int, val string) bool { - shouldSelect := decider(index, val) - if shouldSelect == false { - selected = append(selected, val) - } - return true - }) - - return &Value{data: selected} - -} - -// GroupStr uses the specified grouper function to group the items -// keyed by the return of the grouper. The object contained in the -// result will contain a map[string][]string. -func (v *Value) GroupStr(grouper func(int, string) string) *Value { - - groups := make(map[string][]string) - - v.EachStr(func(index int, val string) bool { - group := grouper(index, val) - if _, ok := groups[group]; !ok { - groups[group] = make([]string, 0) - } - groups[group] = append(groups[group], val) - return true - }) - - return &Value{data: groups} - -} - -// ReplaceStr uses the specified function to replace each strings -// by iterating each item. The data in the returned result will be a -// []string containing the replaced items. -func (v *Value) ReplaceStr(replacer func(int, string) string) *Value { - - arr := v.MustStrSlice() - replaced := make([]string, len(arr)) - - v.EachStr(func(index int, val string) bool { - replaced[index] = replacer(index, val) - return true - }) - - return &Value{data: replaced} - -} - -// CollectStr uses the specified collector function to collect a value -// for each of the strings in the slice. The data returned will be a -// []interface{}. -func (v *Value) CollectStr(collector func(int, string) interface{}) *Value { - - arr := v.MustStrSlice() - collected := make([]interface{}, len(arr)) - - v.EachStr(func(index int, val string) bool { - collected[index] = collector(index, val) - return true - }) - - return &Value{data: collected} -} - -/* - Int (int and []int) - -------------------------------------------------- -*/ - -// Int gets the value as a int, returns the optionalDefault -// value or a system default object if the value is the wrong type. -func (v *Value) Int(optionalDefault ...int) int { - if s, ok := v.data.(int); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return 0 -} - -// MustInt gets the value as a int. -// -// Panics if the object is not a int. -func (v *Value) MustInt() int { - return v.data.(int) -} - -// IntSlice gets the value as a []int, returns the optionalDefault -// value or nil if the value is not a []int. -func (v *Value) IntSlice(optionalDefault ...[]int) []int { - if s, ok := v.data.([]int); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return nil -} - -// MustIntSlice gets the value as a []int. -// -// Panics if the object is not a []int. -func (v *Value) MustIntSlice() []int { - return v.data.([]int) -} - -// IsInt gets whether the object contained is a int or not. -func (v *Value) IsInt() bool { - _, ok := v.data.(int) - return ok -} - -// IsIntSlice gets whether the object contained is a []int or not. -func (v *Value) IsIntSlice() bool { - _, ok := v.data.([]int) - return ok -} - -// EachInt calls the specified callback for each object -// in the []int. -// -// Panics if the object is the wrong type. -func (v *Value) EachInt(callback func(int, int) bool) *Value { - - for index, val := range v.MustIntSlice() { - carryon := callback(index, val) - if carryon == false { - break - } - } - - return v - -} - -// WhereInt uses the specified decider function to select items -// from the []int. The object contained in the result will contain -// only the selected items. -func (v *Value) WhereInt(decider func(int, int) bool) *Value { - - var selected []int - - v.EachInt(func(index int, val int) bool { - shouldSelect := decider(index, val) - if shouldSelect == false { - selected = append(selected, val) - } - return true - }) - - return &Value{data: selected} - -} - -// GroupInt uses the specified grouper function to group the items -// keyed by the return of the grouper. The object contained in the -// result will contain a map[string][]int. -func (v *Value) GroupInt(grouper func(int, int) string) *Value { - - groups := make(map[string][]int) - - v.EachInt(func(index int, val int) bool { - group := grouper(index, val) - if _, ok := groups[group]; !ok { - groups[group] = make([]int, 0) - } - groups[group] = append(groups[group], val) - return true - }) - - return &Value{data: groups} - -} - -// ReplaceInt uses the specified function to replace each ints -// by iterating each item. The data in the returned result will be a -// []int containing the replaced items. -func (v *Value) ReplaceInt(replacer func(int, int) int) *Value { - - arr := v.MustIntSlice() - replaced := make([]int, len(arr)) - - v.EachInt(func(index int, val int) bool { - replaced[index] = replacer(index, val) - return true - }) - - return &Value{data: replaced} - -} - -// CollectInt uses the specified collector function to collect a value -// for each of the ints in the slice. The data returned will be a -// []interface{}. -func (v *Value) CollectInt(collector func(int, int) interface{}) *Value { - - arr := v.MustIntSlice() - collected := make([]interface{}, len(arr)) - - v.EachInt(func(index int, val int) bool { - collected[index] = collector(index, val) - return true - }) - - return &Value{data: collected} -} - -/* - Int8 (int8 and []int8) - -------------------------------------------------- -*/ - -// Int8 gets the value as a int8, returns the optionalDefault -// value or a system default object if the value is the wrong type. -func (v *Value) Int8(optionalDefault ...int8) int8 { - if s, ok := v.data.(int8); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return 0 -} - -// MustInt8 gets the value as a int8. -// -// Panics if the object is not a int8. -func (v *Value) MustInt8() int8 { - return v.data.(int8) -} - -// Int8Slice gets the value as a []int8, returns the optionalDefault -// value or nil if the value is not a []int8. -func (v *Value) Int8Slice(optionalDefault ...[]int8) []int8 { - if s, ok := v.data.([]int8); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return nil -} - -// MustInt8Slice gets the value as a []int8. -// -// Panics if the object is not a []int8. -func (v *Value) MustInt8Slice() []int8 { - return v.data.([]int8) -} - -// IsInt8 gets whether the object contained is a int8 or not. -func (v *Value) IsInt8() bool { - _, ok := v.data.(int8) - return ok -} - -// IsInt8Slice gets whether the object contained is a []int8 or not. -func (v *Value) IsInt8Slice() bool { - _, ok := v.data.([]int8) - return ok -} - -// EachInt8 calls the specified callback for each object -// in the []int8. -// -// Panics if the object is the wrong type. -func (v *Value) EachInt8(callback func(int, int8) bool) *Value { - - for index, val := range v.MustInt8Slice() { - carryon := callback(index, val) - if carryon == false { - break - } - } - - return v - -} - -// WhereInt8 uses the specified decider function to select items -// from the []int8. The object contained in the result will contain -// only the selected items. -func (v *Value) WhereInt8(decider func(int, int8) bool) *Value { - - var selected []int8 - - v.EachInt8(func(index int, val int8) bool { - shouldSelect := decider(index, val) - if shouldSelect == false { - selected = append(selected, val) - } - return true - }) - - return &Value{data: selected} - -} - -// GroupInt8 uses the specified grouper function to group the items -// keyed by the return of the grouper. The object contained in the -// result will contain a map[string][]int8. -func (v *Value) GroupInt8(grouper func(int, int8) string) *Value { - - groups := make(map[string][]int8) - - v.EachInt8(func(index int, val int8) bool { - group := grouper(index, val) - if _, ok := groups[group]; !ok { - groups[group] = make([]int8, 0) - } - groups[group] = append(groups[group], val) - return true - }) - - return &Value{data: groups} - -} - -// ReplaceInt8 uses the specified function to replace each int8s -// by iterating each item. The data in the returned result will be a -// []int8 containing the replaced items. -func (v *Value) ReplaceInt8(replacer func(int, int8) int8) *Value { - - arr := v.MustInt8Slice() - replaced := make([]int8, len(arr)) - - v.EachInt8(func(index int, val int8) bool { - replaced[index] = replacer(index, val) - return true - }) - - return &Value{data: replaced} - -} - -// CollectInt8 uses the specified collector function to collect a value -// for each of the int8s in the slice. The data returned will be a -// []interface{}. -func (v *Value) CollectInt8(collector func(int, int8) interface{}) *Value { - - arr := v.MustInt8Slice() - collected := make([]interface{}, len(arr)) - - v.EachInt8(func(index int, val int8) bool { - collected[index] = collector(index, val) - return true - }) - - return &Value{data: collected} -} - -/* - Int16 (int16 and []int16) - -------------------------------------------------- -*/ - -// Int16 gets the value as a int16, returns the optionalDefault -// value or a system default object if the value is the wrong type. -func (v *Value) Int16(optionalDefault ...int16) int16 { - if s, ok := v.data.(int16); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return 0 -} - -// MustInt16 gets the value as a int16. -// -// Panics if the object is not a int16. -func (v *Value) MustInt16() int16 { - return v.data.(int16) -} - -// Int16Slice gets the value as a []int16, returns the optionalDefault -// value or nil if the value is not a []int16. -func (v *Value) Int16Slice(optionalDefault ...[]int16) []int16 { - if s, ok := v.data.([]int16); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return nil -} - -// MustInt16Slice gets the value as a []int16. -// -// Panics if the object is not a []int16. -func (v *Value) MustInt16Slice() []int16 { - return v.data.([]int16) -} - -// IsInt16 gets whether the object contained is a int16 or not. -func (v *Value) IsInt16() bool { - _, ok := v.data.(int16) - return ok -} - -// IsInt16Slice gets whether the object contained is a []int16 or not. -func (v *Value) IsInt16Slice() bool { - _, ok := v.data.([]int16) - return ok -} - -// EachInt16 calls the specified callback for each object -// in the []int16. -// -// Panics if the object is the wrong type. -func (v *Value) EachInt16(callback func(int, int16) bool) *Value { - - for index, val := range v.MustInt16Slice() { - carryon := callback(index, val) - if carryon == false { - break - } - } - - return v - -} - -// WhereInt16 uses the specified decider function to select items -// from the []int16. The object contained in the result will contain -// only the selected items. -func (v *Value) WhereInt16(decider func(int, int16) bool) *Value { - - var selected []int16 - - v.EachInt16(func(index int, val int16) bool { - shouldSelect := decider(index, val) - if shouldSelect == false { - selected = append(selected, val) - } - return true - }) - - return &Value{data: selected} - -} - -// GroupInt16 uses the specified grouper function to group the items -// keyed by the return of the grouper. The object contained in the -// result will contain a map[string][]int16. -func (v *Value) GroupInt16(grouper func(int, int16) string) *Value { - - groups := make(map[string][]int16) - - v.EachInt16(func(index int, val int16) bool { - group := grouper(index, val) - if _, ok := groups[group]; !ok { - groups[group] = make([]int16, 0) - } - groups[group] = append(groups[group], val) - return true - }) - - return &Value{data: groups} - -} - -// ReplaceInt16 uses the specified function to replace each int16s -// by iterating each item. The data in the returned result will be a -// []int16 containing the replaced items. -func (v *Value) ReplaceInt16(replacer func(int, int16) int16) *Value { - - arr := v.MustInt16Slice() - replaced := make([]int16, len(arr)) - - v.EachInt16(func(index int, val int16) bool { - replaced[index] = replacer(index, val) - return true - }) - - return &Value{data: replaced} - -} - -// CollectInt16 uses the specified collector function to collect a value -// for each of the int16s in the slice. The data returned will be a -// []interface{}. -func (v *Value) CollectInt16(collector func(int, int16) interface{}) *Value { - - arr := v.MustInt16Slice() - collected := make([]interface{}, len(arr)) - - v.EachInt16(func(index int, val int16) bool { - collected[index] = collector(index, val) - return true - }) - - return &Value{data: collected} -} - -/* - Int32 (int32 and []int32) - -------------------------------------------------- -*/ - -// Int32 gets the value as a int32, returns the optionalDefault -// value or a system default object if the value is the wrong type. -func (v *Value) Int32(optionalDefault ...int32) int32 { - if s, ok := v.data.(int32); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return 0 -} - -// MustInt32 gets the value as a int32. -// -// Panics if the object is not a int32. -func (v *Value) MustInt32() int32 { - return v.data.(int32) -} - -// Int32Slice gets the value as a []int32, returns the optionalDefault -// value or nil if the value is not a []int32. -func (v *Value) Int32Slice(optionalDefault ...[]int32) []int32 { - if s, ok := v.data.([]int32); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return nil -} - -// MustInt32Slice gets the value as a []int32. -// -// Panics if the object is not a []int32. -func (v *Value) MustInt32Slice() []int32 { - return v.data.([]int32) -} - -// IsInt32 gets whether the object contained is a int32 or not. -func (v *Value) IsInt32() bool { - _, ok := v.data.(int32) - return ok -} - -// IsInt32Slice gets whether the object contained is a []int32 or not. -func (v *Value) IsInt32Slice() bool { - _, ok := v.data.([]int32) - return ok -} - -// EachInt32 calls the specified callback for each object -// in the []int32. -// -// Panics if the object is the wrong type. -func (v *Value) EachInt32(callback func(int, int32) bool) *Value { - - for index, val := range v.MustInt32Slice() { - carryon := callback(index, val) - if carryon == false { - break - } - } - - return v - -} - -// WhereInt32 uses the specified decider function to select items -// from the []int32. The object contained in the result will contain -// only the selected items. -func (v *Value) WhereInt32(decider func(int, int32) bool) *Value { - - var selected []int32 - - v.EachInt32(func(index int, val int32) bool { - shouldSelect := decider(index, val) - if shouldSelect == false { - selected = append(selected, val) - } - return true - }) - - return &Value{data: selected} - -} - -// GroupInt32 uses the specified grouper function to group the items -// keyed by the return of the grouper. The object contained in the -// result will contain a map[string][]int32. -func (v *Value) GroupInt32(grouper func(int, int32) string) *Value { - - groups := make(map[string][]int32) - - v.EachInt32(func(index int, val int32) bool { - group := grouper(index, val) - if _, ok := groups[group]; !ok { - groups[group] = make([]int32, 0) - } - groups[group] = append(groups[group], val) - return true - }) - - return &Value{data: groups} - -} - -// ReplaceInt32 uses the specified function to replace each int32s -// by iterating each item. The data in the returned result will be a -// []int32 containing the replaced items. -func (v *Value) ReplaceInt32(replacer func(int, int32) int32) *Value { - - arr := v.MustInt32Slice() - replaced := make([]int32, len(arr)) - - v.EachInt32(func(index int, val int32) bool { - replaced[index] = replacer(index, val) - return true - }) - - return &Value{data: replaced} - -} - -// CollectInt32 uses the specified collector function to collect a value -// for each of the int32s in the slice. The data returned will be a -// []interface{}. -func (v *Value) CollectInt32(collector func(int, int32) interface{}) *Value { - - arr := v.MustInt32Slice() - collected := make([]interface{}, len(arr)) - - v.EachInt32(func(index int, val int32) bool { - collected[index] = collector(index, val) - return true - }) - - return &Value{data: collected} -} - -/* - Int64 (int64 and []int64) - -------------------------------------------------- -*/ - -// Int64 gets the value as a int64, returns the optionalDefault -// value or a system default object if the value is the wrong type. -func (v *Value) Int64(optionalDefault ...int64) int64 { - if s, ok := v.data.(int64); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return 0 -} - -// MustInt64 gets the value as a int64. -// -// Panics if the object is not a int64. -func (v *Value) MustInt64() int64 { - return v.data.(int64) -} - -// Int64Slice gets the value as a []int64, returns the optionalDefault -// value or nil if the value is not a []int64. -func (v *Value) Int64Slice(optionalDefault ...[]int64) []int64 { - if s, ok := v.data.([]int64); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return nil -} - -// MustInt64Slice gets the value as a []int64. -// -// Panics if the object is not a []int64. -func (v *Value) MustInt64Slice() []int64 { - return v.data.([]int64) -} - -// IsInt64 gets whether the object contained is a int64 or not. -func (v *Value) IsInt64() bool { - _, ok := v.data.(int64) - return ok -} - -// IsInt64Slice gets whether the object contained is a []int64 or not. -func (v *Value) IsInt64Slice() bool { - _, ok := v.data.([]int64) - return ok -} - -// EachInt64 calls the specified callback for each object -// in the []int64. -// -// Panics if the object is the wrong type. -func (v *Value) EachInt64(callback func(int, int64) bool) *Value { - - for index, val := range v.MustInt64Slice() { - carryon := callback(index, val) - if carryon == false { - break - } - } - - return v - -} - -// WhereInt64 uses the specified decider function to select items -// from the []int64. The object contained in the result will contain -// only the selected items. -func (v *Value) WhereInt64(decider func(int, int64) bool) *Value { - - var selected []int64 - - v.EachInt64(func(index int, val int64) bool { - shouldSelect := decider(index, val) - if shouldSelect == false { - selected = append(selected, val) - } - return true - }) - - return &Value{data: selected} - -} - -// GroupInt64 uses the specified grouper function to group the items -// keyed by the return of the grouper. The object contained in the -// result will contain a map[string][]int64. -func (v *Value) GroupInt64(grouper func(int, int64) string) *Value { - - groups := make(map[string][]int64) - - v.EachInt64(func(index int, val int64) bool { - group := grouper(index, val) - if _, ok := groups[group]; !ok { - groups[group] = make([]int64, 0) - } - groups[group] = append(groups[group], val) - return true - }) - - return &Value{data: groups} - -} - -// ReplaceInt64 uses the specified function to replace each int64s -// by iterating each item. The data in the returned result will be a -// []int64 containing the replaced items. -func (v *Value) ReplaceInt64(replacer func(int, int64) int64) *Value { - - arr := v.MustInt64Slice() - replaced := make([]int64, len(arr)) - - v.EachInt64(func(index int, val int64) bool { - replaced[index] = replacer(index, val) - return true - }) - - return &Value{data: replaced} - -} - -// CollectInt64 uses the specified collector function to collect a value -// for each of the int64s in the slice. The data returned will be a -// []interface{}. -func (v *Value) CollectInt64(collector func(int, int64) interface{}) *Value { - - arr := v.MustInt64Slice() - collected := make([]interface{}, len(arr)) - - v.EachInt64(func(index int, val int64) bool { - collected[index] = collector(index, val) - return true - }) - - return &Value{data: collected} -} - -/* - Uint (uint and []uint) - -------------------------------------------------- -*/ - -// Uint gets the value as a uint, returns the optionalDefault -// value or a system default object if the value is the wrong type. -func (v *Value) Uint(optionalDefault ...uint) uint { - if s, ok := v.data.(uint); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return 0 -} - -// MustUint gets the value as a uint. -// -// Panics if the object is not a uint. -func (v *Value) MustUint() uint { - return v.data.(uint) -} - -// UintSlice gets the value as a []uint, returns the optionalDefault -// value or nil if the value is not a []uint. -func (v *Value) UintSlice(optionalDefault ...[]uint) []uint { - if s, ok := v.data.([]uint); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return nil -} - -// MustUintSlice gets the value as a []uint. -// -// Panics if the object is not a []uint. -func (v *Value) MustUintSlice() []uint { - return v.data.([]uint) -} - -// IsUint gets whether the object contained is a uint or not. -func (v *Value) IsUint() bool { - _, ok := v.data.(uint) - return ok -} - -// IsUintSlice gets whether the object contained is a []uint or not. -func (v *Value) IsUintSlice() bool { - _, ok := v.data.([]uint) - return ok -} - -// EachUint calls the specified callback for each object -// in the []uint. -// -// Panics if the object is the wrong type. -func (v *Value) EachUint(callback func(int, uint) bool) *Value { - - for index, val := range v.MustUintSlice() { - carryon := callback(index, val) - if carryon == false { - break - } - } - - return v - -} - -// WhereUint uses the specified decider function to select items -// from the []uint. The object contained in the result will contain -// only the selected items. -func (v *Value) WhereUint(decider func(int, uint) bool) *Value { - - var selected []uint - - v.EachUint(func(index int, val uint) bool { - shouldSelect := decider(index, val) - if shouldSelect == false { - selected = append(selected, val) - } - return true - }) - - return &Value{data: selected} - -} - -// GroupUint uses the specified grouper function to group the items -// keyed by the return of the grouper. The object contained in the -// result will contain a map[string][]uint. -func (v *Value) GroupUint(grouper func(int, uint) string) *Value { - - groups := make(map[string][]uint) - - v.EachUint(func(index int, val uint) bool { - group := grouper(index, val) - if _, ok := groups[group]; !ok { - groups[group] = make([]uint, 0) - } - groups[group] = append(groups[group], val) - return true - }) - - return &Value{data: groups} - -} - -// ReplaceUint uses the specified function to replace each uints -// by iterating each item. The data in the returned result will be a -// []uint containing the replaced items. -func (v *Value) ReplaceUint(replacer func(int, uint) uint) *Value { - - arr := v.MustUintSlice() - replaced := make([]uint, len(arr)) - - v.EachUint(func(index int, val uint) bool { - replaced[index] = replacer(index, val) - return true - }) - - return &Value{data: replaced} - -} - -// CollectUint uses the specified collector function to collect a value -// for each of the uints in the slice. The data returned will be a -// []interface{}. -func (v *Value) CollectUint(collector func(int, uint) interface{}) *Value { - - arr := v.MustUintSlice() - collected := make([]interface{}, len(arr)) - - v.EachUint(func(index int, val uint) bool { - collected[index] = collector(index, val) - return true - }) - - return &Value{data: collected} -} - -/* - Uint8 (uint8 and []uint8) - -------------------------------------------------- -*/ - -// Uint8 gets the value as a uint8, returns the optionalDefault -// value or a system default object if the value is the wrong type. -func (v *Value) Uint8(optionalDefault ...uint8) uint8 { - if s, ok := v.data.(uint8); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return 0 -} - -// MustUint8 gets the value as a uint8. -// -// Panics if the object is not a uint8. -func (v *Value) MustUint8() uint8 { - return v.data.(uint8) -} - -// Uint8Slice gets the value as a []uint8, returns the optionalDefault -// value or nil if the value is not a []uint8. -func (v *Value) Uint8Slice(optionalDefault ...[]uint8) []uint8 { - if s, ok := v.data.([]uint8); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return nil -} - -// MustUint8Slice gets the value as a []uint8. -// -// Panics if the object is not a []uint8. -func (v *Value) MustUint8Slice() []uint8 { - return v.data.([]uint8) -} - -// IsUint8 gets whether the object contained is a uint8 or not. -func (v *Value) IsUint8() bool { - _, ok := v.data.(uint8) - return ok -} - -// IsUint8Slice gets whether the object contained is a []uint8 or not. -func (v *Value) IsUint8Slice() bool { - _, ok := v.data.([]uint8) - return ok -} - -// EachUint8 calls the specified callback for each object -// in the []uint8. -// -// Panics if the object is the wrong type. -func (v *Value) EachUint8(callback func(int, uint8) bool) *Value { - - for index, val := range v.MustUint8Slice() { - carryon := callback(index, val) - if carryon == false { - break - } - } - - return v - -} - -// WhereUint8 uses the specified decider function to select items -// from the []uint8. The object contained in the result will contain -// only the selected items. -func (v *Value) WhereUint8(decider func(int, uint8) bool) *Value { - - var selected []uint8 - - v.EachUint8(func(index int, val uint8) bool { - shouldSelect := decider(index, val) - if shouldSelect == false { - selected = append(selected, val) - } - return true - }) - - return &Value{data: selected} - -} - -// GroupUint8 uses the specified grouper function to group the items -// keyed by the return of the grouper. The object contained in the -// result will contain a map[string][]uint8. -func (v *Value) GroupUint8(grouper func(int, uint8) string) *Value { - - groups := make(map[string][]uint8) - - v.EachUint8(func(index int, val uint8) bool { - group := grouper(index, val) - if _, ok := groups[group]; !ok { - groups[group] = make([]uint8, 0) - } - groups[group] = append(groups[group], val) - return true - }) - - return &Value{data: groups} - -} - -// ReplaceUint8 uses the specified function to replace each uint8s -// by iterating each item. The data in the returned result will be a -// []uint8 containing the replaced items. -func (v *Value) ReplaceUint8(replacer func(int, uint8) uint8) *Value { - - arr := v.MustUint8Slice() - replaced := make([]uint8, len(arr)) - - v.EachUint8(func(index int, val uint8) bool { - replaced[index] = replacer(index, val) - return true - }) - - return &Value{data: replaced} - -} - -// CollectUint8 uses the specified collector function to collect a value -// for each of the uint8s in the slice. The data returned will be a -// []interface{}. -func (v *Value) CollectUint8(collector func(int, uint8) interface{}) *Value { - - arr := v.MustUint8Slice() - collected := make([]interface{}, len(arr)) - - v.EachUint8(func(index int, val uint8) bool { - collected[index] = collector(index, val) - return true - }) - - return &Value{data: collected} -} - -/* - Uint16 (uint16 and []uint16) - -------------------------------------------------- -*/ - -// Uint16 gets the value as a uint16, returns the optionalDefault -// value or a system default object if the value is the wrong type. -func (v *Value) Uint16(optionalDefault ...uint16) uint16 { - if s, ok := v.data.(uint16); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return 0 -} - -// MustUint16 gets the value as a uint16. -// -// Panics if the object is not a uint16. -func (v *Value) MustUint16() uint16 { - return v.data.(uint16) -} - -// Uint16Slice gets the value as a []uint16, returns the optionalDefault -// value or nil if the value is not a []uint16. -func (v *Value) Uint16Slice(optionalDefault ...[]uint16) []uint16 { - if s, ok := v.data.([]uint16); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return nil -} - -// MustUint16Slice gets the value as a []uint16. -// -// Panics if the object is not a []uint16. -func (v *Value) MustUint16Slice() []uint16 { - return v.data.([]uint16) -} - -// IsUint16 gets whether the object contained is a uint16 or not. -func (v *Value) IsUint16() bool { - _, ok := v.data.(uint16) - return ok -} - -// IsUint16Slice gets whether the object contained is a []uint16 or not. -func (v *Value) IsUint16Slice() bool { - _, ok := v.data.([]uint16) - return ok -} - -// EachUint16 calls the specified callback for each object -// in the []uint16. -// -// Panics if the object is the wrong type. -func (v *Value) EachUint16(callback func(int, uint16) bool) *Value { - - for index, val := range v.MustUint16Slice() { - carryon := callback(index, val) - if carryon == false { - break - } - } - - return v - -} - -// WhereUint16 uses the specified decider function to select items -// from the []uint16. The object contained in the result will contain -// only the selected items. -func (v *Value) WhereUint16(decider func(int, uint16) bool) *Value { - - var selected []uint16 - - v.EachUint16(func(index int, val uint16) bool { - shouldSelect := decider(index, val) - if shouldSelect == false { - selected = append(selected, val) - } - return true - }) - - return &Value{data: selected} - -} - -// GroupUint16 uses the specified grouper function to group the items -// keyed by the return of the grouper. The object contained in the -// result will contain a map[string][]uint16. -func (v *Value) GroupUint16(grouper func(int, uint16) string) *Value { - - groups := make(map[string][]uint16) - - v.EachUint16(func(index int, val uint16) bool { - group := grouper(index, val) - if _, ok := groups[group]; !ok { - groups[group] = make([]uint16, 0) - } - groups[group] = append(groups[group], val) - return true - }) - - return &Value{data: groups} - -} - -// ReplaceUint16 uses the specified function to replace each uint16s -// by iterating each item. The data in the returned result will be a -// []uint16 containing the replaced items. -func (v *Value) ReplaceUint16(replacer func(int, uint16) uint16) *Value { - - arr := v.MustUint16Slice() - replaced := make([]uint16, len(arr)) - - v.EachUint16(func(index int, val uint16) bool { - replaced[index] = replacer(index, val) - return true - }) - - return &Value{data: replaced} - -} - -// CollectUint16 uses the specified collector function to collect a value -// for each of the uint16s in the slice. The data returned will be a -// []interface{}. -func (v *Value) CollectUint16(collector func(int, uint16) interface{}) *Value { - - arr := v.MustUint16Slice() - collected := make([]interface{}, len(arr)) - - v.EachUint16(func(index int, val uint16) bool { - collected[index] = collector(index, val) - return true - }) - - return &Value{data: collected} -} - -/* - Uint32 (uint32 and []uint32) - -------------------------------------------------- -*/ - -// Uint32 gets the value as a uint32, returns the optionalDefault -// value or a system default object if the value is the wrong type. -func (v *Value) Uint32(optionalDefault ...uint32) uint32 { - if s, ok := v.data.(uint32); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return 0 -} - -// MustUint32 gets the value as a uint32. -// -// Panics if the object is not a uint32. -func (v *Value) MustUint32() uint32 { - return v.data.(uint32) -} - -// Uint32Slice gets the value as a []uint32, returns the optionalDefault -// value or nil if the value is not a []uint32. -func (v *Value) Uint32Slice(optionalDefault ...[]uint32) []uint32 { - if s, ok := v.data.([]uint32); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return nil -} - -// MustUint32Slice gets the value as a []uint32. -// -// Panics if the object is not a []uint32. -func (v *Value) MustUint32Slice() []uint32 { - return v.data.([]uint32) -} - -// IsUint32 gets whether the object contained is a uint32 or not. -func (v *Value) IsUint32() bool { - _, ok := v.data.(uint32) - return ok -} - -// IsUint32Slice gets whether the object contained is a []uint32 or not. -func (v *Value) IsUint32Slice() bool { - _, ok := v.data.([]uint32) - return ok -} - -// EachUint32 calls the specified callback for each object -// in the []uint32. -// -// Panics if the object is the wrong type. -func (v *Value) EachUint32(callback func(int, uint32) bool) *Value { - - for index, val := range v.MustUint32Slice() { - carryon := callback(index, val) - if carryon == false { - break - } - } - - return v - -} - -// WhereUint32 uses the specified decider function to select items -// from the []uint32. The object contained in the result will contain -// only the selected items. -func (v *Value) WhereUint32(decider func(int, uint32) bool) *Value { - - var selected []uint32 - - v.EachUint32(func(index int, val uint32) bool { - shouldSelect := decider(index, val) - if shouldSelect == false { - selected = append(selected, val) - } - return true - }) - - return &Value{data: selected} - -} - -// GroupUint32 uses the specified grouper function to group the items -// keyed by the return of the grouper. The object contained in the -// result will contain a map[string][]uint32. -func (v *Value) GroupUint32(grouper func(int, uint32) string) *Value { - - groups := make(map[string][]uint32) - - v.EachUint32(func(index int, val uint32) bool { - group := grouper(index, val) - if _, ok := groups[group]; !ok { - groups[group] = make([]uint32, 0) - } - groups[group] = append(groups[group], val) - return true - }) - - return &Value{data: groups} - -} - -// ReplaceUint32 uses the specified function to replace each uint32s -// by iterating each item. The data in the returned result will be a -// []uint32 containing the replaced items. -func (v *Value) ReplaceUint32(replacer func(int, uint32) uint32) *Value { - - arr := v.MustUint32Slice() - replaced := make([]uint32, len(arr)) - - v.EachUint32(func(index int, val uint32) bool { - replaced[index] = replacer(index, val) - return true - }) - - return &Value{data: replaced} - -} - -// CollectUint32 uses the specified collector function to collect a value -// for each of the uint32s in the slice. The data returned will be a -// []interface{}. -func (v *Value) CollectUint32(collector func(int, uint32) interface{}) *Value { - - arr := v.MustUint32Slice() - collected := make([]interface{}, len(arr)) - - v.EachUint32(func(index int, val uint32) bool { - collected[index] = collector(index, val) - return true - }) - - return &Value{data: collected} -} - -/* - Uint64 (uint64 and []uint64) - -------------------------------------------------- -*/ - -// Uint64 gets the value as a uint64, returns the optionalDefault -// value or a system default object if the value is the wrong type. -func (v *Value) Uint64(optionalDefault ...uint64) uint64 { - if s, ok := v.data.(uint64); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return 0 -} - -// MustUint64 gets the value as a uint64. -// -// Panics if the object is not a uint64. -func (v *Value) MustUint64() uint64 { - return v.data.(uint64) -} - -// Uint64Slice gets the value as a []uint64, returns the optionalDefault -// value or nil if the value is not a []uint64. -func (v *Value) Uint64Slice(optionalDefault ...[]uint64) []uint64 { - if s, ok := v.data.([]uint64); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return nil -} - -// MustUint64Slice gets the value as a []uint64. -// -// Panics if the object is not a []uint64. -func (v *Value) MustUint64Slice() []uint64 { - return v.data.([]uint64) -} - -// IsUint64 gets whether the object contained is a uint64 or not. -func (v *Value) IsUint64() bool { - _, ok := v.data.(uint64) - return ok -} - -// IsUint64Slice gets whether the object contained is a []uint64 or not. -func (v *Value) IsUint64Slice() bool { - _, ok := v.data.([]uint64) - return ok -} - -// EachUint64 calls the specified callback for each object -// in the []uint64. -// -// Panics if the object is the wrong type. -func (v *Value) EachUint64(callback func(int, uint64) bool) *Value { - - for index, val := range v.MustUint64Slice() { - carryon := callback(index, val) - if carryon == false { - break - } - } - - return v - -} - -// WhereUint64 uses the specified decider function to select items -// from the []uint64. The object contained in the result will contain -// only the selected items. -func (v *Value) WhereUint64(decider func(int, uint64) bool) *Value { - - var selected []uint64 - - v.EachUint64(func(index int, val uint64) bool { - shouldSelect := decider(index, val) - if shouldSelect == false { - selected = append(selected, val) - } - return true - }) - - return &Value{data: selected} - -} - -// GroupUint64 uses the specified grouper function to group the items -// keyed by the return of the grouper. The object contained in the -// result will contain a map[string][]uint64. -func (v *Value) GroupUint64(grouper func(int, uint64) string) *Value { - - groups := make(map[string][]uint64) - - v.EachUint64(func(index int, val uint64) bool { - group := grouper(index, val) - if _, ok := groups[group]; !ok { - groups[group] = make([]uint64, 0) - } - groups[group] = append(groups[group], val) - return true - }) - - return &Value{data: groups} - -} - -// ReplaceUint64 uses the specified function to replace each uint64s -// by iterating each item. The data in the returned result will be a -// []uint64 containing the replaced items. -func (v *Value) ReplaceUint64(replacer func(int, uint64) uint64) *Value { - - arr := v.MustUint64Slice() - replaced := make([]uint64, len(arr)) - - v.EachUint64(func(index int, val uint64) bool { - replaced[index] = replacer(index, val) - return true - }) - - return &Value{data: replaced} - -} - -// CollectUint64 uses the specified collector function to collect a value -// for each of the uint64s in the slice. The data returned will be a -// []interface{}. -func (v *Value) CollectUint64(collector func(int, uint64) interface{}) *Value { - - arr := v.MustUint64Slice() - collected := make([]interface{}, len(arr)) - - v.EachUint64(func(index int, val uint64) bool { - collected[index] = collector(index, val) - return true - }) - - return &Value{data: collected} -} - -/* - Uintptr (uintptr and []uintptr) - -------------------------------------------------- -*/ - -// Uintptr gets the value as a uintptr, returns the optionalDefault -// value or a system default object if the value is the wrong type. -func (v *Value) Uintptr(optionalDefault ...uintptr) uintptr { - if s, ok := v.data.(uintptr); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return 0 -} - -// MustUintptr gets the value as a uintptr. -// -// Panics if the object is not a uintptr. -func (v *Value) MustUintptr() uintptr { - return v.data.(uintptr) -} - -// UintptrSlice gets the value as a []uintptr, returns the optionalDefault -// value or nil if the value is not a []uintptr. -func (v *Value) UintptrSlice(optionalDefault ...[]uintptr) []uintptr { - if s, ok := v.data.([]uintptr); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return nil -} - -// MustUintptrSlice gets the value as a []uintptr. -// -// Panics if the object is not a []uintptr. -func (v *Value) MustUintptrSlice() []uintptr { - return v.data.([]uintptr) -} - -// IsUintptr gets whether the object contained is a uintptr or not. -func (v *Value) IsUintptr() bool { - _, ok := v.data.(uintptr) - return ok -} - -// IsUintptrSlice gets whether the object contained is a []uintptr or not. -func (v *Value) IsUintptrSlice() bool { - _, ok := v.data.([]uintptr) - return ok -} - -// EachUintptr calls the specified callback for each object -// in the []uintptr. -// -// Panics if the object is the wrong type. -func (v *Value) EachUintptr(callback func(int, uintptr) bool) *Value { - - for index, val := range v.MustUintptrSlice() { - carryon := callback(index, val) - if carryon == false { - break - } - } - - return v - -} - -// WhereUintptr uses the specified decider function to select items -// from the []uintptr. The object contained in the result will contain -// only the selected items. -func (v *Value) WhereUintptr(decider func(int, uintptr) bool) *Value { - - var selected []uintptr - - v.EachUintptr(func(index int, val uintptr) bool { - shouldSelect := decider(index, val) - if shouldSelect == false { - selected = append(selected, val) - } - return true - }) - - return &Value{data: selected} - -} - -// GroupUintptr uses the specified grouper function to group the items -// keyed by the return of the grouper. The object contained in the -// result will contain a map[string][]uintptr. -func (v *Value) GroupUintptr(grouper func(int, uintptr) string) *Value { - - groups := make(map[string][]uintptr) - - v.EachUintptr(func(index int, val uintptr) bool { - group := grouper(index, val) - if _, ok := groups[group]; !ok { - groups[group] = make([]uintptr, 0) - } - groups[group] = append(groups[group], val) - return true - }) - - return &Value{data: groups} - -} - -// ReplaceUintptr uses the specified function to replace each uintptrs -// by iterating each item. The data in the returned result will be a -// []uintptr containing the replaced items. -func (v *Value) ReplaceUintptr(replacer func(int, uintptr) uintptr) *Value { - - arr := v.MustUintptrSlice() - replaced := make([]uintptr, len(arr)) - - v.EachUintptr(func(index int, val uintptr) bool { - replaced[index] = replacer(index, val) - return true - }) - - return &Value{data: replaced} - -} - -// CollectUintptr uses the specified collector function to collect a value -// for each of the uintptrs in the slice. The data returned will be a -// []interface{}. -func (v *Value) CollectUintptr(collector func(int, uintptr) interface{}) *Value { - - arr := v.MustUintptrSlice() - collected := make([]interface{}, len(arr)) - - v.EachUintptr(func(index int, val uintptr) bool { - collected[index] = collector(index, val) - return true - }) - - return &Value{data: collected} -} - -/* - Float32 (float32 and []float32) - -------------------------------------------------- -*/ - -// Float32 gets the value as a float32, returns the optionalDefault -// value or a system default object if the value is the wrong type. -func (v *Value) Float32(optionalDefault ...float32) float32 { - if s, ok := v.data.(float32); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return 0 -} - -// MustFloat32 gets the value as a float32. -// -// Panics if the object is not a float32. -func (v *Value) MustFloat32() float32 { - return v.data.(float32) -} - -// Float32Slice gets the value as a []float32, returns the optionalDefault -// value or nil if the value is not a []float32. -func (v *Value) Float32Slice(optionalDefault ...[]float32) []float32 { - if s, ok := v.data.([]float32); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return nil -} - -// MustFloat32Slice gets the value as a []float32. -// -// Panics if the object is not a []float32. -func (v *Value) MustFloat32Slice() []float32 { - return v.data.([]float32) -} - -// IsFloat32 gets whether the object contained is a float32 or not. -func (v *Value) IsFloat32() bool { - _, ok := v.data.(float32) - return ok -} - -// IsFloat32Slice gets whether the object contained is a []float32 or not. -func (v *Value) IsFloat32Slice() bool { - _, ok := v.data.([]float32) - return ok -} - -// EachFloat32 calls the specified callback for each object -// in the []float32. -// -// Panics if the object is the wrong type. -func (v *Value) EachFloat32(callback func(int, float32) bool) *Value { - - for index, val := range v.MustFloat32Slice() { - carryon := callback(index, val) - if carryon == false { - break - } - } - - return v - -} - -// WhereFloat32 uses the specified decider function to select items -// from the []float32. The object contained in the result will contain -// only the selected items. -func (v *Value) WhereFloat32(decider func(int, float32) bool) *Value { - - var selected []float32 - - v.EachFloat32(func(index int, val float32) bool { - shouldSelect := decider(index, val) - if shouldSelect == false { - selected = append(selected, val) - } - return true - }) - - return &Value{data: selected} - -} - -// GroupFloat32 uses the specified grouper function to group the items -// keyed by the return of the grouper. The object contained in the -// result will contain a map[string][]float32. -func (v *Value) GroupFloat32(grouper func(int, float32) string) *Value { - - groups := make(map[string][]float32) - - v.EachFloat32(func(index int, val float32) bool { - group := grouper(index, val) - if _, ok := groups[group]; !ok { - groups[group] = make([]float32, 0) - } - groups[group] = append(groups[group], val) - return true - }) - - return &Value{data: groups} - -} - -// ReplaceFloat32 uses the specified function to replace each float32s -// by iterating each item. The data in the returned result will be a -// []float32 containing the replaced items. -func (v *Value) ReplaceFloat32(replacer func(int, float32) float32) *Value { - - arr := v.MustFloat32Slice() - replaced := make([]float32, len(arr)) - - v.EachFloat32(func(index int, val float32) bool { - replaced[index] = replacer(index, val) - return true - }) - - return &Value{data: replaced} - -} - -// CollectFloat32 uses the specified collector function to collect a value -// for each of the float32s in the slice. The data returned will be a -// []interface{}. -func (v *Value) CollectFloat32(collector func(int, float32) interface{}) *Value { - - arr := v.MustFloat32Slice() - collected := make([]interface{}, len(arr)) - - v.EachFloat32(func(index int, val float32) bool { - collected[index] = collector(index, val) - return true - }) - - return &Value{data: collected} -} - -/* - Float64 (float64 and []float64) - -------------------------------------------------- -*/ - -// Float64 gets the value as a float64, returns the optionalDefault -// value or a system default object if the value is the wrong type. -func (v *Value) Float64(optionalDefault ...float64) float64 { - if s, ok := v.data.(float64); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return 0 -} - -// MustFloat64 gets the value as a float64. -// -// Panics if the object is not a float64. -func (v *Value) MustFloat64() float64 { - return v.data.(float64) -} - -// Float64Slice gets the value as a []float64, returns the optionalDefault -// value or nil if the value is not a []float64. -func (v *Value) Float64Slice(optionalDefault ...[]float64) []float64 { - if s, ok := v.data.([]float64); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return nil -} - -// MustFloat64Slice gets the value as a []float64. -// -// Panics if the object is not a []float64. -func (v *Value) MustFloat64Slice() []float64 { - return v.data.([]float64) -} - -// IsFloat64 gets whether the object contained is a float64 or not. -func (v *Value) IsFloat64() bool { - _, ok := v.data.(float64) - return ok -} - -// IsFloat64Slice gets whether the object contained is a []float64 or not. -func (v *Value) IsFloat64Slice() bool { - _, ok := v.data.([]float64) - return ok -} - -// EachFloat64 calls the specified callback for each object -// in the []float64. -// -// Panics if the object is the wrong type. -func (v *Value) EachFloat64(callback func(int, float64) bool) *Value { - - for index, val := range v.MustFloat64Slice() { - carryon := callback(index, val) - if carryon == false { - break - } - } - - return v - -} - -// WhereFloat64 uses the specified decider function to select items -// from the []float64. The object contained in the result will contain -// only the selected items. -func (v *Value) WhereFloat64(decider func(int, float64) bool) *Value { - - var selected []float64 - - v.EachFloat64(func(index int, val float64) bool { - shouldSelect := decider(index, val) - if shouldSelect == false { - selected = append(selected, val) - } - return true - }) - - return &Value{data: selected} - -} - -// GroupFloat64 uses the specified grouper function to group the items -// keyed by the return of the grouper. The object contained in the -// result will contain a map[string][]float64. -func (v *Value) GroupFloat64(grouper func(int, float64) string) *Value { - - groups := make(map[string][]float64) - - v.EachFloat64(func(index int, val float64) bool { - group := grouper(index, val) - if _, ok := groups[group]; !ok { - groups[group] = make([]float64, 0) - } - groups[group] = append(groups[group], val) - return true - }) - - return &Value{data: groups} - -} - -// ReplaceFloat64 uses the specified function to replace each float64s -// by iterating each item. The data in the returned result will be a -// []float64 containing the replaced items. -func (v *Value) ReplaceFloat64(replacer func(int, float64) float64) *Value { - - arr := v.MustFloat64Slice() - replaced := make([]float64, len(arr)) - - v.EachFloat64(func(index int, val float64) bool { - replaced[index] = replacer(index, val) - return true - }) - - return &Value{data: replaced} - -} - -// CollectFloat64 uses the specified collector function to collect a value -// for each of the float64s in the slice. The data returned will be a -// []interface{}. -func (v *Value) CollectFloat64(collector func(int, float64) interface{}) *Value { - - arr := v.MustFloat64Slice() - collected := make([]interface{}, len(arr)) - - v.EachFloat64(func(index int, val float64) bool { - collected[index] = collector(index, val) - return true - }) - - return &Value{data: collected} -} - -/* - Complex64 (complex64 and []complex64) - -------------------------------------------------- -*/ - -// Complex64 gets the value as a complex64, returns the optionalDefault -// value or a system default object if the value is the wrong type. -func (v *Value) Complex64(optionalDefault ...complex64) complex64 { - if s, ok := v.data.(complex64); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return 0 -} - -// MustComplex64 gets the value as a complex64. -// -// Panics if the object is not a complex64. -func (v *Value) MustComplex64() complex64 { - return v.data.(complex64) -} - -// Complex64Slice gets the value as a []complex64, returns the optionalDefault -// value or nil if the value is not a []complex64. -func (v *Value) Complex64Slice(optionalDefault ...[]complex64) []complex64 { - if s, ok := v.data.([]complex64); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return nil -} - -// MustComplex64Slice gets the value as a []complex64. -// -// Panics if the object is not a []complex64. -func (v *Value) MustComplex64Slice() []complex64 { - return v.data.([]complex64) -} - -// IsComplex64 gets whether the object contained is a complex64 or not. -func (v *Value) IsComplex64() bool { - _, ok := v.data.(complex64) - return ok -} - -// IsComplex64Slice gets whether the object contained is a []complex64 or not. -func (v *Value) IsComplex64Slice() bool { - _, ok := v.data.([]complex64) - return ok -} - -// EachComplex64 calls the specified callback for each object -// in the []complex64. -// -// Panics if the object is the wrong type. -func (v *Value) EachComplex64(callback func(int, complex64) bool) *Value { - - for index, val := range v.MustComplex64Slice() { - carryon := callback(index, val) - if carryon == false { - break - } - } - - return v - -} - -// WhereComplex64 uses the specified decider function to select items -// from the []complex64. The object contained in the result will contain -// only the selected items. -func (v *Value) WhereComplex64(decider func(int, complex64) bool) *Value { - - var selected []complex64 - - v.EachComplex64(func(index int, val complex64) bool { - shouldSelect := decider(index, val) - if shouldSelect == false { - selected = append(selected, val) - } - return true - }) - - return &Value{data: selected} - -} - -// GroupComplex64 uses the specified grouper function to group the items -// keyed by the return of the grouper. The object contained in the -// result will contain a map[string][]complex64. -func (v *Value) GroupComplex64(grouper func(int, complex64) string) *Value { - - groups := make(map[string][]complex64) - - v.EachComplex64(func(index int, val complex64) bool { - group := grouper(index, val) - if _, ok := groups[group]; !ok { - groups[group] = make([]complex64, 0) - } - groups[group] = append(groups[group], val) - return true - }) - - return &Value{data: groups} - -} - -// ReplaceComplex64 uses the specified function to replace each complex64s -// by iterating each item. The data in the returned result will be a -// []complex64 containing the replaced items. -func (v *Value) ReplaceComplex64(replacer func(int, complex64) complex64) *Value { - - arr := v.MustComplex64Slice() - replaced := make([]complex64, len(arr)) - - v.EachComplex64(func(index int, val complex64) bool { - replaced[index] = replacer(index, val) - return true - }) - - return &Value{data: replaced} - -} - -// CollectComplex64 uses the specified collector function to collect a value -// for each of the complex64s in the slice. The data returned will be a -// []interface{}. -func (v *Value) CollectComplex64(collector func(int, complex64) interface{}) *Value { - - arr := v.MustComplex64Slice() - collected := make([]interface{}, len(arr)) - - v.EachComplex64(func(index int, val complex64) bool { - collected[index] = collector(index, val) - return true - }) - - return &Value{data: collected} -} - -/* - Complex128 (complex128 and []complex128) - -------------------------------------------------- -*/ - -// Complex128 gets the value as a complex128, returns the optionalDefault -// value or a system default object if the value is the wrong type. -func (v *Value) Complex128(optionalDefault ...complex128) complex128 { - if s, ok := v.data.(complex128); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return 0 -} - -// MustComplex128 gets the value as a complex128. -// -// Panics if the object is not a complex128. -func (v *Value) MustComplex128() complex128 { - return v.data.(complex128) -} - -// Complex128Slice gets the value as a []complex128, returns the optionalDefault -// value or nil if the value is not a []complex128. -func (v *Value) Complex128Slice(optionalDefault ...[]complex128) []complex128 { - if s, ok := v.data.([]complex128); ok { - return s - } - if len(optionalDefault) == 1 { - return optionalDefault[0] - } - return nil -} - -// MustComplex128Slice gets the value as a []complex128. -// -// Panics if the object is not a []complex128. -func (v *Value) MustComplex128Slice() []complex128 { - return v.data.([]complex128) -} - -// IsComplex128 gets whether the object contained is a complex128 or not. -func (v *Value) IsComplex128() bool { - _, ok := v.data.(complex128) - return ok -} - -// IsComplex128Slice gets whether the object contained is a []complex128 or not. -func (v *Value) IsComplex128Slice() bool { - _, ok := v.data.([]complex128) - return ok -} - -// EachComplex128 calls the specified callback for each object -// in the []complex128. -// -// Panics if the object is the wrong type. -func (v *Value) EachComplex128(callback func(int, complex128) bool) *Value { - - for index, val := range v.MustComplex128Slice() { - carryon := callback(index, val) - if carryon == false { - break - } - } - - return v - -} - -// WhereComplex128 uses the specified decider function to select items -// from the []complex128. The object contained in the result will contain -// only the selected items. -func (v *Value) WhereComplex128(decider func(int, complex128) bool) *Value { - - var selected []complex128 - - v.EachComplex128(func(index int, val complex128) bool { - shouldSelect := decider(index, val) - if shouldSelect == false { - selected = append(selected, val) - } - return true - }) - - return &Value{data: selected} - -} - -// GroupComplex128 uses the specified grouper function to group the items -// keyed by the return of the grouper. The object contained in the -// result will contain a map[string][]complex128. -func (v *Value) GroupComplex128(grouper func(int, complex128) string) *Value { - - groups := make(map[string][]complex128) - - v.EachComplex128(func(index int, val complex128) bool { - group := grouper(index, val) - if _, ok := groups[group]; !ok { - groups[group] = make([]complex128, 0) - } - groups[group] = append(groups[group], val) - return true - }) - - return &Value{data: groups} - -} - -// ReplaceComplex128 uses the specified function to replace each complex128s -// by iterating each item. The data in the returned result will be a -// []complex128 containing the replaced items. -func (v *Value) ReplaceComplex128(replacer func(int, complex128) complex128) *Value { - - arr := v.MustComplex128Slice() - replaced := make([]complex128, len(arr)) - - v.EachComplex128(func(index int, val complex128) bool { - replaced[index] = replacer(index, val) - return true - }) - - return &Value{data: replaced} - -} - -// CollectComplex128 uses the specified collector function to collect a value -// for each of the complex128s in the slice. The data returned will be a -// []interface{}. -func (v *Value) CollectComplex128(collector func(int, complex128) interface{}) *Value { - - arr := v.MustComplex128Slice() - collected := make([]interface{}, len(arr)) - - v.EachComplex128(func(index int, val complex128) bool { - collected[index] = collector(index, val) - return true - }) - - return &Value{data: collected} -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/value.go b/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/value.go deleted file mode 100644 index 956a2211..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/stretchr/objx/value.go +++ /dev/null @@ -1,56 +0,0 @@ -package objx - -import ( - "fmt" - "strconv" -) - -// Value provides methods for extracting interface{} data in various -// types. -type Value struct { - // data contains the raw data being managed by this Value - data interface{} -} - -// Data returns the raw data contained by this Value -func (v *Value) Data() interface{} { - return v.data -} - -// String returns the value always as a string -func (v *Value) String() string { - switch { - case v.IsStr(): - return v.Str() - case v.IsBool(): - return strconv.FormatBool(v.Bool()) - case v.IsFloat32(): - return strconv.FormatFloat(float64(v.Float32()), 'f', -1, 32) - case v.IsFloat64(): - return strconv.FormatFloat(v.Float64(), 'f', -1, 64) - case v.IsInt(): - return strconv.FormatInt(int64(v.Int()), 10) - case v.IsInt(): - return strconv.FormatInt(int64(v.Int()), 10) - case v.IsInt8(): - return strconv.FormatInt(int64(v.Int8()), 10) - case v.IsInt16(): - return strconv.FormatInt(int64(v.Int16()), 10) - case v.IsInt32(): - return strconv.FormatInt(int64(v.Int32()), 10) - case v.IsInt64(): - return strconv.FormatInt(v.Int64(), 10) - case v.IsUint(): - return strconv.FormatUint(uint64(v.Uint()), 10) - case v.IsUint8(): - return strconv.FormatUint(uint64(v.Uint8()), 10) - case v.IsUint16(): - return strconv.FormatUint(uint64(v.Uint16()), 10) - case v.IsUint32(): - return strconv.FormatUint(uint64(v.Uint32()), 10) - case v.IsUint64(): - return strconv.FormatUint(v.Uint64(), 10) - } - - return fmt.Sprintf("%#v", v.Data()) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/LICENCE.txt b/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/LICENCE.txt deleted file mode 100644 index 473b670a..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/LICENCE.txt +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2012 - 2013 Mat Ryer and Tyler Bunnell - -Please consider promoting this project if you find it useful. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without restriction, -including without limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of the Software, -and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT -OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE -OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/LICENSE b/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/LICENSE deleted file mode 100644 index 473b670a..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2012 - 2013 Mat Ryer and Tyler Bunnell - -Please consider promoting this project if you find it useful. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without restriction, -including without limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of the Software, -and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT -OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE -OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/assert/assertion_forward.go b/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/assert/assertion_forward.go deleted file mode 100644 index e6a79604..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/assert/assertion_forward.go +++ /dev/null @@ -1,387 +0,0 @@ -/* -* CODE GENERATED AUTOMATICALLY WITH github.com/stretchr/testify/_codegen -* THIS FILE MUST NOT BE EDITED BY HAND -*/ - -package assert - -import ( - - http "net/http" - url "net/url" - time "time" -) - - -// Condition uses a Comparison to assert a complex condition. -func (a *Assertions) Condition(comp Comparison, msgAndArgs ...interface{}) bool { - return Condition(a.t, comp, msgAndArgs...) -} - - -// Contains asserts that the specified string, list(array, slice...) or map contains the -// specified substring or element. -// -// a.Contains("Hello World", "World", "But 'Hello World' does contain 'World'") -// a.Contains(["Hello", "World"], "World", "But ["Hello", "World"] does contain 'World'") -// a.Contains({"Hello": "World"}, "Hello", "But {'Hello': 'World'} does contain 'Hello'") -// -// Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) Contains(s interface{}, contains interface{}, msgAndArgs ...interface{}) bool { - return Contains(a.t, s, contains, msgAndArgs...) -} - - -// Empty asserts that the specified object is empty. I.e. nil, "", false, 0 or either -// a slice or a channel with len == 0. -// -// a.Empty(obj) -// -// Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) Empty(object interface{}, msgAndArgs ...interface{}) bool { - return Empty(a.t, object, msgAndArgs...) -} - - -// Equal asserts that two objects are equal. -// -// a.Equal(123, 123, "123 and 123 should be equal") -// -// Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) Equal(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool { - return Equal(a.t, expected, actual, msgAndArgs...) -} - - -// EqualError asserts that a function returned an error (i.e. not `nil`) -// and that it is equal to the provided error. -// -// actualObj, err := SomeFunction() -// if assert.Error(t, err, "An error was expected") { -// assert.Equal(t, err, expectedError) -// } -// -// Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) EqualError(theError error, errString string, msgAndArgs ...interface{}) bool { - return EqualError(a.t, theError, errString, msgAndArgs...) -} - - -// EqualValues asserts that two objects are equal or convertable to the same types -// and equal. -// -// a.EqualValues(uint32(123), int32(123), "123 and 123 should be equal") -// -// Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) EqualValues(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool { - return EqualValues(a.t, expected, actual, msgAndArgs...) -} - - -// Error asserts that a function returned an error (i.e. not `nil`). -// -// actualObj, err := SomeFunction() -// if a.Error(err, "An error was expected") { -// assert.Equal(t, err, expectedError) -// } -// -// Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) Error(err error, msgAndArgs ...interface{}) bool { - return Error(a.t, err, msgAndArgs...) -} - - -// Exactly asserts that two objects are equal is value and type. -// -// a.Exactly(int32(123), int64(123), "123 and 123 should NOT be equal") -// -// Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) Exactly(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool { - return Exactly(a.t, expected, actual, msgAndArgs...) -} - - -// Fail reports a failure through -func (a *Assertions) Fail(failureMessage string, msgAndArgs ...interface{}) bool { - return Fail(a.t, failureMessage, msgAndArgs...) -} - - -// FailNow fails test -func (a *Assertions) FailNow(failureMessage string, msgAndArgs ...interface{}) bool { - return FailNow(a.t, failureMessage, msgAndArgs...) -} - - -// False asserts that the specified value is false. -// -// a.False(myBool, "myBool should be false") -// -// Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) False(value bool, msgAndArgs ...interface{}) bool { - return False(a.t, value, msgAndArgs...) -} - - -// HTTPBodyContains asserts that a specified handler returns a -// body that contains a string. -// -// a.HTTPBodyContains(myHandler, "www.google.com", nil, "I'm Feeling Lucky") -// -// Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) HTTPBodyContains(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}) bool { - return HTTPBodyContains(a.t, handler, method, url, values, str) -} - - -// HTTPBodyNotContains asserts that a specified handler returns a -// body that does not contain a string. -// -// a.HTTPBodyNotContains(myHandler, "www.google.com", nil, "I'm Feeling Lucky") -// -// Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) HTTPBodyNotContains(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}) bool { - return HTTPBodyNotContains(a.t, handler, method, url, values, str) -} - - -// HTTPError asserts that a specified handler returns an error status code. -// -// a.HTTPError(myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} -// -// Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) HTTPError(handler http.HandlerFunc, method string, url string, values url.Values) bool { - return HTTPError(a.t, handler, method, url, values) -} - - -// HTTPRedirect asserts that a specified handler returns a redirect status code. -// -// a.HTTPRedirect(myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} -// -// Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) HTTPRedirect(handler http.HandlerFunc, method string, url string, values url.Values) bool { - return HTTPRedirect(a.t, handler, method, url, values) -} - - -// HTTPSuccess asserts that a specified handler returns a success status code. -// -// a.HTTPSuccess(myHandler, "POST", "http://www.google.com", nil) -// -// Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) HTTPSuccess(handler http.HandlerFunc, method string, url string, values url.Values) bool { - return HTTPSuccess(a.t, handler, method, url, values) -} - - -// Implements asserts that an object is implemented by the specified interface. -// -// a.Implements((*MyInterface)(nil), new(MyObject), "MyObject") -func (a *Assertions) Implements(interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) bool { - return Implements(a.t, interfaceObject, object, msgAndArgs...) -} - - -// InDelta asserts that the two numerals are within delta of each other. -// -// a.InDelta(math.Pi, (22 / 7.0), 0.01) -// -// Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) InDelta(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) bool { - return InDelta(a.t, expected, actual, delta, msgAndArgs...) -} - - -// InDeltaSlice is the same as InDelta, except it compares two slices. -func (a *Assertions) InDeltaSlice(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) bool { - return InDeltaSlice(a.t, expected, actual, delta, msgAndArgs...) -} - - -// InEpsilon asserts that expected and actual have a relative error less than epsilon -// -// Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) InEpsilon(expected interface{}, actual interface{}, epsilon float64, msgAndArgs ...interface{}) bool { - return InEpsilon(a.t, expected, actual, epsilon, msgAndArgs...) -} - - -// InEpsilonSlice is the same as InEpsilon, except it compares two slices. -func (a *Assertions) InEpsilonSlice(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) bool { - return InEpsilonSlice(a.t, expected, actual, delta, msgAndArgs...) -} - - -// IsType asserts that the specified objects are of the same type. -func (a *Assertions) IsType(expectedType interface{}, object interface{}, msgAndArgs ...interface{}) bool { - return IsType(a.t, expectedType, object, msgAndArgs...) -} - - -// JSONEq asserts that two JSON strings are equivalent. -// -// a.JSONEq(`{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`) -// -// Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) JSONEq(expected string, actual string, msgAndArgs ...interface{}) bool { - return JSONEq(a.t, expected, actual, msgAndArgs...) -} - - -// Len asserts that the specified object has specific length. -// Len also fails if the object has a type that len() not accept. -// -// a.Len(mySlice, 3, "The size of slice is not 3") -// -// Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) Len(object interface{}, length int, msgAndArgs ...interface{}) bool { - return Len(a.t, object, length, msgAndArgs...) -} - - -// Nil asserts that the specified object is nil. -// -// a.Nil(err, "err should be nothing") -// -// Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) Nil(object interface{}, msgAndArgs ...interface{}) bool { - return Nil(a.t, object, msgAndArgs...) -} - - -// NoError asserts that a function returned no error (i.e. `nil`). -// -// actualObj, err := SomeFunction() -// if a.NoError(err) { -// assert.Equal(t, actualObj, expectedObj) -// } -// -// Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) NoError(err error, msgAndArgs ...interface{}) bool { - return NoError(a.t, err, msgAndArgs...) -} - - -// NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the -// specified substring or element. -// -// a.NotContains("Hello World", "Earth", "But 'Hello World' does NOT contain 'Earth'") -// a.NotContains(["Hello", "World"], "Earth", "But ['Hello', 'World'] does NOT contain 'Earth'") -// a.NotContains({"Hello": "World"}, "Earth", "But {'Hello': 'World'} does NOT contain 'Earth'") -// -// Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) NotContains(s interface{}, contains interface{}, msgAndArgs ...interface{}) bool { - return NotContains(a.t, s, contains, msgAndArgs...) -} - - -// NotEmpty asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either -// a slice or a channel with len == 0. -// -// if a.NotEmpty(obj) { -// assert.Equal(t, "two", obj[1]) -// } -// -// Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) NotEmpty(object interface{}, msgAndArgs ...interface{}) bool { - return NotEmpty(a.t, object, msgAndArgs...) -} - - -// NotEqual asserts that the specified values are NOT equal. -// -// a.NotEqual(obj1, obj2, "two objects shouldn't be equal") -// -// Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) NotEqual(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool { - return NotEqual(a.t, expected, actual, msgAndArgs...) -} - - -// NotNil asserts that the specified object is not nil. -// -// a.NotNil(err, "err should be something") -// -// Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) NotNil(object interface{}, msgAndArgs ...interface{}) bool { - return NotNil(a.t, object, msgAndArgs...) -} - - -// NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic. -// -// a.NotPanics(func(){ -// RemainCalm() -// }, "Calling RemainCalm() should NOT panic") -// -// Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) NotPanics(f PanicTestFunc, msgAndArgs ...interface{}) bool { - return NotPanics(a.t, f, msgAndArgs...) -} - - -// NotRegexp asserts that a specified regexp does not match a string. -// -// a.NotRegexp(regexp.MustCompile("starts"), "it's starting") -// a.NotRegexp("^start", "it's not starting") -// -// Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) NotRegexp(rx interface{}, str interface{}, msgAndArgs ...interface{}) bool { - return NotRegexp(a.t, rx, str, msgAndArgs...) -} - - -// NotZero asserts that i is not the zero value for its type and returns the truth. -func (a *Assertions) NotZero(i interface{}, msgAndArgs ...interface{}) bool { - return NotZero(a.t, i, msgAndArgs...) -} - - -// Panics asserts that the code inside the specified PanicTestFunc panics. -// -// a.Panics(func(){ -// GoCrazy() -// }, "Calling GoCrazy() should panic") -// -// Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) Panics(f PanicTestFunc, msgAndArgs ...interface{}) bool { - return Panics(a.t, f, msgAndArgs...) -} - - -// Regexp asserts that a specified regexp matches a string. -// -// a.Regexp(regexp.MustCompile("start"), "it's starting") -// a.Regexp("start...$", "it's not starting") -// -// Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) Regexp(rx interface{}, str interface{}, msgAndArgs ...interface{}) bool { - return Regexp(a.t, rx, str, msgAndArgs...) -} - - -// True asserts that the specified value is true. -// -// a.True(myBool, "myBool should be true") -// -// Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) True(value bool, msgAndArgs ...interface{}) bool { - return True(a.t, value, msgAndArgs...) -} - - -// WithinDuration asserts that the two times are within duration delta of each other. -// -// a.WithinDuration(time.Now(), time.Now(), 10*time.Second, "The difference should not be more than 10s") -// -// Returns whether the assertion was successful (true) or not (false). -func (a *Assertions) WithinDuration(expected time.Time, actual time.Time, delta time.Duration, msgAndArgs ...interface{}) bool { - return WithinDuration(a.t, expected, actual, delta, msgAndArgs...) -} - - -// Zero asserts that i is the zero value for its type and returns the truth. -func (a *Assertions) Zero(i interface{}, msgAndArgs ...interface{}) bool { - return Zero(a.t, i, msgAndArgs...) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/assert/assertion_forward.go.tmpl b/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/assert/assertion_forward.go.tmpl deleted file mode 100644 index 99f9acfb..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/assert/assertion_forward.go.tmpl +++ /dev/null @@ -1,4 +0,0 @@ -{{.CommentWithoutT "a"}} -func (a *Assertions) {{.DocInfo.Name}}({{.Params}}) bool { - return {{.DocInfo.Name}}(a.t, {{.ForwardedParams}}) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/assert/assertions.go b/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/assert/assertions.go deleted file mode 100644 index d7c16c59..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/assert/assertions.go +++ /dev/null @@ -1,1004 +0,0 @@ -package assert - -import ( - "bufio" - "bytes" - "encoding/json" - "fmt" - "math" - "reflect" - "regexp" - "runtime" - "strings" - "time" - "unicode" - "unicode/utf8" - - "github.com/davecgh/go-spew/spew" - "github.com/pmezard/go-difflib/difflib" -) - -// TestingT is an interface wrapper around *testing.T -type TestingT interface { - Errorf(format string, args ...interface{}) -} - -// Comparison a custom function that returns true on success and false on failure -type Comparison func() (success bool) - -/* - Helper functions -*/ - -// ObjectsAreEqual determines if two objects are considered equal. -// -// This function does no assertion of any kind. -func ObjectsAreEqual(expected, actual interface{}) bool { - - if expected == nil || actual == nil { - return expected == actual - } - - return reflect.DeepEqual(expected, actual) - -} - -// ObjectsAreEqualValues gets whether two objects are equal, or if their -// values are equal. -func ObjectsAreEqualValues(expected, actual interface{}) bool { - if ObjectsAreEqual(expected, actual) { - return true - } - - actualType := reflect.TypeOf(actual) - if actualType == nil { - return false - } - expectedValue := reflect.ValueOf(expected) - if expectedValue.IsValid() && expectedValue.Type().ConvertibleTo(actualType) { - // Attempt comparison after type conversion - return reflect.DeepEqual(expectedValue.Convert(actualType).Interface(), actual) - } - - return false -} - -/* CallerInfo is necessary because the assert functions use the testing object -internally, causing it to print the file:line of the assert method, rather than where -the problem actually occured in calling code.*/ - -// CallerInfo returns an array of strings containing the file and line number -// of each stack frame leading from the current test to the assert call that -// failed. -func CallerInfo() []string { - - pc := uintptr(0) - file := "" - line := 0 - ok := false - name := "" - - callers := []string{} - for i := 0; ; i++ { - pc, file, line, ok = runtime.Caller(i) - if !ok { - return nil - } - - // This is a huge edge case, but it will panic if this is the case, see #180 - if file == "" { - break - } - - parts := strings.Split(file, "/") - dir := parts[len(parts)-2] - file = parts[len(parts)-1] - if (dir != "assert" && dir != "mock" && dir != "require") || file == "mock_test.go" { - callers = append(callers, fmt.Sprintf("%s:%d", file, line)) - } - - f := runtime.FuncForPC(pc) - if f == nil { - break - } - name = f.Name() - // Drop the package - segments := strings.Split(name, ".") - name = segments[len(segments)-1] - if isTest(name, "Test") || - isTest(name, "Benchmark") || - isTest(name, "Example") { - break - } - } - - return callers -} - -// Stolen from the `go test` tool. -// isTest tells whether name looks like a test (or benchmark, according to prefix). -// It is a Test (say) if there is a character after Test that is not a lower-case letter. -// We don't want TesticularCancer. -func isTest(name, prefix string) bool { - if !strings.HasPrefix(name, prefix) { - return false - } - if len(name) == len(prefix) { // "Test" is ok - return true - } - rune, _ := utf8.DecodeRuneInString(name[len(prefix):]) - return !unicode.IsLower(rune) -} - -// getWhitespaceString returns a string that is long enough to overwrite the default -// output from the go testing framework. -func getWhitespaceString() string { - - _, file, line, ok := runtime.Caller(1) - if !ok { - return "" - } - parts := strings.Split(file, "/") - file = parts[len(parts)-1] - - return strings.Repeat(" ", len(fmt.Sprintf("%s:%d: ", file, line))) - -} - -func messageFromMsgAndArgs(msgAndArgs ...interface{}) string { - if len(msgAndArgs) == 0 || msgAndArgs == nil { - return "" - } - if len(msgAndArgs) == 1 { - return msgAndArgs[0].(string) - } - if len(msgAndArgs) > 1 { - return fmt.Sprintf(msgAndArgs[0].(string), msgAndArgs[1:]...) - } - return "" -} - -// Indents all lines of the message by appending a number of tabs to each line, in an output format compatible with Go's -// test printing (see inner comment for specifics) -func indentMessageLines(message string, tabs int) string { - outBuf := new(bytes.Buffer) - - for i, scanner := 0, bufio.NewScanner(strings.NewReader(message)); scanner.Scan(); i++ { - if i != 0 { - outBuf.WriteRune('\n') - } - for ii := 0; ii < tabs; ii++ { - outBuf.WriteRune('\t') - // Bizarrely, all lines except the first need one fewer tabs prepended, so deliberately advance the counter - // by 1 prematurely. - if ii == 0 && i > 0 { - ii++ - } - } - outBuf.WriteString(scanner.Text()) - } - - return outBuf.String() -} - -type failNower interface { - FailNow() -} - -// FailNow fails test -func FailNow(t TestingT, failureMessage string, msgAndArgs ...interface{}) bool { - Fail(t, failureMessage, msgAndArgs...) - - // We cannot extend TestingT with FailNow() and - // maintain backwards compatibility, so we fallback - // to panicking when FailNow is not available in - // TestingT. - // See issue #263 - - if t, ok := t.(failNower); ok { - t.FailNow() - } else { - panic("test failed and t is missing `FailNow()`") - } - return false -} - -// Fail reports a failure through -func Fail(t TestingT, failureMessage string, msgAndArgs ...interface{}) bool { - - message := messageFromMsgAndArgs(msgAndArgs...) - - errorTrace := strings.Join(CallerInfo(), "\n\r\t\t\t") - if len(message) > 0 { - t.Errorf("\r%s\r\tError Trace:\t%s\n"+ - "\r\tError:%s\n"+ - "\r\tMessages:\t%s\n\r", - getWhitespaceString(), - errorTrace, - indentMessageLines(failureMessage, 2), - message) - } else { - t.Errorf("\r%s\r\tError Trace:\t%s\n"+ - "\r\tError:%s\n\r", - getWhitespaceString(), - errorTrace, - indentMessageLines(failureMessage, 2)) - } - - return false -} - -// Implements asserts that an object is implemented by the specified interface. -// -// assert.Implements(t, (*MyInterface)(nil), new(MyObject), "MyObject") -func Implements(t TestingT, interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) bool { - - interfaceType := reflect.TypeOf(interfaceObject).Elem() - - if !reflect.TypeOf(object).Implements(interfaceType) { - return Fail(t, fmt.Sprintf("%T must implement %v", object, interfaceType), msgAndArgs...) - } - - return true - -} - -// IsType asserts that the specified objects are of the same type. -func IsType(t TestingT, expectedType interface{}, object interface{}, msgAndArgs ...interface{}) bool { - - if !ObjectsAreEqual(reflect.TypeOf(object), reflect.TypeOf(expectedType)) { - return Fail(t, fmt.Sprintf("Object expected to be of type %v, but was %v", reflect.TypeOf(expectedType), reflect.TypeOf(object)), msgAndArgs...) - } - - return true -} - -// Equal asserts that two objects are equal. -// -// assert.Equal(t, 123, 123, "123 and 123 should be equal") -// -// Returns whether the assertion was successful (true) or not (false). -func Equal(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool { - - if !ObjectsAreEqual(expected, actual) { - diff := diff(expected, actual) - return Fail(t, fmt.Sprintf("Not equal: %#v (expected)\n"+ - " != %#v (actual)%s", expected, actual, diff), msgAndArgs...) - } - - return true - -} - -// EqualValues asserts that two objects are equal or convertable to the same types -// and equal. -// -// assert.EqualValues(t, uint32(123), int32(123), "123 and 123 should be equal") -// -// Returns whether the assertion was successful (true) or not (false). -func EqualValues(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool { - - if !ObjectsAreEqualValues(expected, actual) { - return Fail(t, fmt.Sprintf("Not equal: %#v (expected)\n"+ - " != %#v (actual)", expected, actual), msgAndArgs...) - } - - return true - -} - -// Exactly asserts that two objects are equal is value and type. -// -// assert.Exactly(t, int32(123), int64(123), "123 and 123 should NOT be equal") -// -// Returns whether the assertion was successful (true) or not (false). -func Exactly(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool { - - aType := reflect.TypeOf(expected) - bType := reflect.TypeOf(actual) - - if aType != bType { - return Fail(t, fmt.Sprintf("Types expected to match exactly\n\r\t%v != %v", aType, bType), msgAndArgs...) - } - - return Equal(t, expected, actual, msgAndArgs...) - -} - -// NotNil asserts that the specified object is not nil. -// -// assert.NotNil(t, err, "err should be something") -// -// Returns whether the assertion was successful (true) or not (false). -func NotNil(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { - if !isNil(object) { - return true - } - return Fail(t, "Expected value not to be nil.", msgAndArgs...) -} - -// isNil checks if a specified object is nil or not, without Failing. -func isNil(object interface{}) bool { - if object == nil { - return true - } - - value := reflect.ValueOf(object) - kind := value.Kind() - if kind >= reflect.Chan && kind <= reflect.Slice && value.IsNil() { - return true - } - - return false -} - -// Nil asserts that the specified object is nil. -// -// assert.Nil(t, err, "err should be nothing") -// -// Returns whether the assertion was successful (true) or not (false). -func Nil(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { - if isNil(object) { - return true - } - return Fail(t, fmt.Sprintf("Expected nil, but got: %#v", object), msgAndArgs...) -} - -var numericZeros = []interface{}{ - int(0), - int8(0), - int16(0), - int32(0), - int64(0), - uint(0), - uint8(0), - uint16(0), - uint32(0), - uint64(0), - float32(0), - float64(0), -} - -// isEmpty gets whether the specified object is considered empty or not. -func isEmpty(object interface{}) bool { - - if object == nil { - return true - } else if object == "" { - return true - } else if object == false { - return true - } - - for _, v := range numericZeros { - if object == v { - return true - } - } - - objValue := reflect.ValueOf(object) - - switch objValue.Kind() { - case reflect.Map: - fallthrough - case reflect.Slice, reflect.Chan: - { - return (objValue.Len() == 0) - } - case reflect.Struct: - switch object.(type) { - case time.Time: - return object.(time.Time).IsZero() - } - case reflect.Ptr: - { - if objValue.IsNil() { - return true - } - switch object.(type) { - case *time.Time: - return object.(*time.Time).IsZero() - default: - return false - } - } - } - return false -} - -// Empty asserts that the specified object is empty. I.e. nil, "", false, 0 or either -// a slice or a channel with len == 0. -// -// assert.Empty(t, obj) -// -// Returns whether the assertion was successful (true) or not (false). -func Empty(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { - - pass := isEmpty(object) - if !pass { - Fail(t, fmt.Sprintf("Should be empty, but was %v", object), msgAndArgs...) - } - - return pass - -} - -// NotEmpty asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either -// a slice or a channel with len == 0. -// -// if assert.NotEmpty(t, obj) { -// assert.Equal(t, "two", obj[1]) -// } -// -// Returns whether the assertion was successful (true) or not (false). -func NotEmpty(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { - - pass := !isEmpty(object) - if !pass { - Fail(t, fmt.Sprintf("Should NOT be empty, but was %v", object), msgAndArgs...) - } - - return pass - -} - -// getLen try to get length of object. -// return (false, 0) if impossible. -func getLen(x interface{}) (ok bool, length int) { - v := reflect.ValueOf(x) - defer func() { - if e := recover(); e != nil { - ok = false - } - }() - return true, v.Len() -} - -// Len asserts that the specified object has specific length. -// Len also fails if the object has a type that len() not accept. -// -// assert.Len(t, mySlice, 3, "The size of slice is not 3") -// -// Returns whether the assertion was successful (true) or not (false). -func Len(t TestingT, object interface{}, length int, msgAndArgs ...interface{}) bool { - ok, l := getLen(object) - if !ok { - return Fail(t, fmt.Sprintf("\"%s\" could not be applied builtin len()", object), msgAndArgs...) - } - - if l != length { - return Fail(t, fmt.Sprintf("\"%s\" should have %d item(s), but has %d", object, length, l), msgAndArgs...) - } - return true -} - -// True asserts that the specified value is true. -// -// assert.True(t, myBool, "myBool should be true") -// -// Returns whether the assertion was successful (true) or not (false). -func True(t TestingT, value bool, msgAndArgs ...interface{}) bool { - - if value != true { - return Fail(t, "Should be true", msgAndArgs...) - } - - return true - -} - -// False asserts that the specified value is false. -// -// assert.False(t, myBool, "myBool should be false") -// -// Returns whether the assertion was successful (true) or not (false). -func False(t TestingT, value bool, msgAndArgs ...interface{}) bool { - - if value != false { - return Fail(t, "Should be false", msgAndArgs...) - } - - return true - -} - -// NotEqual asserts that the specified values are NOT equal. -// -// assert.NotEqual(t, obj1, obj2, "two objects shouldn't be equal") -// -// Returns whether the assertion was successful (true) or not (false). -func NotEqual(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool { - - if ObjectsAreEqual(expected, actual) { - return Fail(t, fmt.Sprintf("Should not be: %#v\n", actual), msgAndArgs...) - } - - return true - -} - -// containsElement try loop over the list check if the list includes the element. -// return (false, false) if impossible. -// return (true, false) if element was not found. -// return (true, true) if element was found. -func includeElement(list interface{}, element interface{}) (ok, found bool) { - - listValue := reflect.ValueOf(list) - elementValue := reflect.ValueOf(element) - defer func() { - if e := recover(); e != nil { - ok = false - found = false - } - }() - - if reflect.TypeOf(list).Kind() == reflect.String { - return true, strings.Contains(listValue.String(), elementValue.String()) - } - - if reflect.TypeOf(list).Kind() == reflect.Map { - mapKeys := listValue.MapKeys() - for i := 0; i < len(mapKeys); i++ { - if ObjectsAreEqual(mapKeys[i].Interface(), element) { - return true, true - } - } - return true, false - } - - for i := 0; i < listValue.Len(); i++ { - if ObjectsAreEqual(listValue.Index(i).Interface(), element) { - return true, true - } - } - return true, false - -} - -// Contains asserts that the specified string, list(array, slice...) or map contains the -// specified substring or element. -// -// assert.Contains(t, "Hello World", "World", "But 'Hello World' does contain 'World'") -// assert.Contains(t, ["Hello", "World"], "World", "But ["Hello", "World"] does contain 'World'") -// assert.Contains(t, {"Hello": "World"}, "Hello", "But {'Hello': 'World'} does contain 'Hello'") -// -// Returns whether the assertion was successful (true) or not (false). -func Contains(t TestingT, s, contains interface{}, msgAndArgs ...interface{}) bool { - - ok, found := includeElement(s, contains) - if !ok { - return Fail(t, fmt.Sprintf("\"%s\" could not be applied builtin len()", s), msgAndArgs...) - } - if !found { - return Fail(t, fmt.Sprintf("\"%s\" does not contain \"%s\"", s, contains), msgAndArgs...) - } - - return true - -} - -// NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the -// specified substring or element. -// -// assert.NotContains(t, "Hello World", "Earth", "But 'Hello World' does NOT contain 'Earth'") -// assert.NotContains(t, ["Hello", "World"], "Earth", "But ['Hello', 'World'] does NOT contain 'Earth'") -// assert.NotContains(t, {"Hello": "World"}, "Earth", "But {'Hello': 'World'} does NOT contain 'Earth'") -// -// Returns whether the assertion was successful (true) or not (false). -func NotContains(t TestingT, s, contains interface{}, msgAndArgs ...interface{}) bool { - - ok, found := includeElement(s, contains) - if !ok { - return Fail(t, fmt.Sprintf("\"%s\" could not be applied builtin len()", s), msgAndArgs...) - } - if found { - return Fail(t, fmt.Sprintf("\"%s\" should not contain \"%s\"", s, contains), msgAndArgs...) - } - - return true - -} - -// Condition uses a Comparison to assert a complex condition. -func Condition(t TestingT, comp Comparison, msgAndArgs ...interface{}) bool { - result := comp() - if !result { - Fail(t, "Condition failed!", msgAndArgs...) - } - return result -} - -// PanicTestFunc defines a func that should be passed to the assert.Panics and assert.NotPanics -// methods, and represents a simple func that takes no arguments, and returns nothing. -type PanicTestFunc func() - -// didPanic returns true if the function passed to it panics. Otherwise, it returns false. -func didPanic(f PanicTestFunc) (bool, interface{}) { - - didPanic := false - var message interface{} - func() { - - defer func() { - if message = recover(); message != nil { - didPanic = true - } - }() - - // call the target function - f() - - }() - - return didPanic, message - -} - -// Panics asserts that the code inside the specified PanicTestFunc panics. -// -// assert.Panics(t, func(){ -// GoCrazy() -// }, "Calling GoCrazy() should panic") -// -// Returns whether the assertion was successful (true) or not (false). -func Panics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool { - - if funcDidPanic, panicValue := didPanic(f); !funcDidPanic { - return Fail(t, fmt.Sprintf("func %#v should panic\n\r\tPanic value:\t%v", f, panicValue), msgAndArgs...) - } - - return true -} - -// NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic. -// -// assert.NotPanics(t, func(){ -// RemainCalm() -// }, "Calling RemainCalm() should NOT panic") -// -// Returns whether the assertion was successful (true) or not (false). -func NotPanics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool { - - if funcDidPanic, panicValue := didPanic(f); funcDidPanic { - return Fail(t, fmt.Sprintf("func %#v should not panic\n\r\tPanic value:\t%v", f, panicValue), msgAndArgs...) - } - - return true -} - -// WithinDuration asserts that the two times are within duration delta of each other. -// -// assert.WithinDuration(t, time.Now(), time.Now(), 10*time.Second, "The difference should not be more than 10s") -// -// Returns whether the assertion was successful (true) or not (false). -func WithinDuration(t TestingT, expected, actual time.Time, delta time.Duration, msgAndArgs ...interface{}) bool { - - dt := expected.Sub(actual) - if dt < -delta || dt > delta { - return Fail(t, fmt.Sprintf("Max difference between %v and %v allowed is %v, but difference was %v", expected, actual, delta, dt), msgAndArgs...) - } - - return true -} - -func toFloat(x interface{}) (float64, bool) { - var xf float64 - xok := true - - switch xn := x.(type) { - case uint8: - xf = float64(xn) - case uint16: - xf = float64(xn) - case uint32: - xf = float64(xn) - case uint64: - xf = float64(xn) - case int: - xf = float64(xn) - case int8: - xf = float64(xn) - case int16: - xf = float64(xn) - case int32: - xf = float64(xn) - case int64: - xf = float64(xn) - case float32: - xf = float64(xn) - case float64: - xf = float64(xn) - default: - xok = false - } - - return xf, xok -} - -// InDelta asserts that the two numerals are within delta of each other. -// -// assert.InDelta(t, math.Pi, (22 / 7.0), 0.01) -// -// Returns whether the assertion was successful (true) or not (false). -func InDelta(t TestingT, expected, actual interface{}, delta float64, msgAndArgs ...interface{}) bool { - - af, aok := toFloat(expected) - bf, bok := toFloat(actual) - - if !aok || !bok { - return Fail(t, fmt.Sprintf("Parameters must be numerical"), msgAndArgs...) - } - - if math.IsNaN(af) { - return Fail(t, fmt.Sprintf("Actual must not be NaN"), msgAndArgs...) - } - - if math.IsNaN(bf) { - return Fail(t, fmt.Sprintf("Expected %v with delta %v, but was NaN", expected, delta), msgAndArgs...) - } - - dt := af - bf - if dt < -delta || dt > delta { - return Fail(t, fmt.Sprintf("Max difference between %v and %v allowed is %v, but difference was %v", expected, actual, delta, dt), msgAndArgs...) - } - - return true -} - -// InDeltaSlice is the same as InDelta, except it compares two slices. -func InDeltaSlice(t TestingT, expected, actual interface{}, delta float64, msgAndArgs ...interface{}) bool { - if expected == nil || actual == nil || - reflect.TypeOf(actual).Kind() != reflect.Slice || - reflect.TypeOf(expected).Kind() != reflect.Slice { - return Fail(t, fmt.Sprintf("Parameters must be slice"), msgAndArgs...) - } - - actualSlice := reflect.ValueOf(actual) - expectedSlice := reflect.ValueOf(expected) - - for i := 0; i < actualSlice.Len(); i++ { - result := InDelta(t, actualSlice.Index(i).Interface(), expectedSlice.Index(i).Interface(), delta) - if !result { - return result - } - } - - return true -} - -func calcRelativeError(expected, actual interface{}) (float64, error) { - af, aok := toFloat(expected) - if !aok { - return 0, fmt.Errorf("expected value %q cannot be converted to float", expected) - } - if af == 0 { - return 0, fmt.Errorf("expected value must have a value other than zero to calculate the relative error") - } - bf, bok := toFloat(actual) - if !bok { - return 0, fmt.Errorf("expected value %q cannot be converted to float", actual) - } - - return math.Abs(af-bf) / math.Abs(af), nil -} - -// InEpsilon asserts that expected and actual have a relative error less than epsilon -// -// Returns whether the assertion was successful (true) or not (false). -func InEpsilon(t TestingT, expected, actual interface{}, epsilon float64, msgAndArgs ...interface{}) bool { - actualEpsilon, err := calcRelativeError(expected, actual) - if err != nil { - return Fail(t, err.Error(), msgAndArgs...) - } - if actualEpsilon > epsilon { - return Fail(t, fmt.Sprintf("Relative error is too high: %#v (expected)\n"+ - " < %#v (actual)", actualEpsilon, epsilon), msgAndArgs...) - } - - return true -} - -// InEpsilonSlice is the same as InEpsilon, except it compares each value from two slices. -func InEpsilonSlice(t TestingT, expected, actual interface{}, epsilon float64, msgAndArgs ...interface{}) bool { - if expected == nil || actual == nil || - reflect.TypeOf(actual).Kind() != reflect.Slice || - reflect.TypeOf(expected).Kind() != reflect.Slice { - return Fail(t, fmt.Sprintf("Parameters must be slice"), msgAndArgs...) - } - - actualSlice := reflect.ValueOf(actual) - expectedSlice := reflect.ValueOf(expected) - - for i := 0; i < actualSlice.Len(); i++ { - result := InEpsilon(t, actualSlice.Index(i).Interface(), expectedSlice.Index(i).Interface(), epsilon) - if !result { - return result - } - } - - return true -} - -/* - Errors -*/ - -// NoError asserts that a function returned no error (i.e. `nil`). -// -// actualObj, err := SomeFunction() -// if assert.NoError(t, err) { -// assert.Equal(t, actualObj, expectedObj) -// } -// -// Returns whether the assertion was successful (true) or not (false). -func NoError(t TestingT, err error, msgAndArgs ...interface{}) bool { - if isNil(err) { - return true - } - - return Fail(t, fmt.Sprintf("Received unexpected error %q", err), msgAndArgs...) -} - -// Error asserts that a function returned an error (i.e. not `nil`). -// -// actualObj, err := SomeFunction() -// if assert.Error(t, err, "An error was expected") { -// assert.Equal(t, err, expectedError) -// } -// -// Returns whether the assertion was successful (true) or not (false). -func Error(t TestingT, err error, msgAndArgs ...interface{}) bool { - - message := messageFromMsgAndArgs(msgAndArgs...) - return NotNil(t, err, "An error is expected but got nil. %s", message) - -} - -// EqualError asserts that a function returned an error (i.e. not `nil`) -// and that it is equal to the provided error. -// -// actualObj, err := SomeFunction() -// if assert.Error(t, err, "An error was expected") { -// assert.Equal(t, err, expectedError) -// } -// -// Returns whether the assertion was successful (true) or not (false). -func EqualError(t TestingT, theError error, errString string, msgAndArgs ...interface{}) bool { - - message := messageFromMsgAndArgs(msgAndArgs...) - if !NotNil(t, theError, "An error is expected but got nil. %s", message) { - return false - } - s := "An error with value \"%s\" is expected but got \"%s\". %s" - return Equal(t, errString, theError.Error(), - s, errString, theError.Error(), message) -} - -// matchRegexp return true if a specified regexp matches a string. -func matchRegexp(rx interface{}, str interface{}) bool { - - var r *regexp.Regexp - if rr, ok := rx.(*regexp.Regexp); ok { - r = rr - } else { - r = regexp.MustCompile(fmt.Sprint(rx)) - } - - return (r.FindStringIndex(fmt.Sprint(str)) != nil) - -} - -// Regexp asserts that a specified regexp matches a string. -// -// assert.Regexp(t, regexp.MustCompile("start"), "it's starting") -// assert.Regexp(t, "start...$", "it's not starting") -// -// Returns whether the assertion was successful (true) or not (false). -func Regexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) bool { - - match := matchRegexp(rx, str) - - if !match { - Fail(t, fmt.Sprintf("Expect \"%v\" to match \"%v\"", str, rx), msgAndArgs...) - } - - return match -} - -// NotRegexp asserts that a specified regexp does not match a string. -// -// assert.NotRegexp(t, regexp.MustCompile("starts"), "it's starting") -// assert.NotRegexp(t, "^start", "it's not starting") -// -// Returns whether the assertion was successful (true) or not (false). -func NotRegexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) bool { - match := matchRegexp(rx, str) - - if match { - Fail(t, fmt.Sprintf("Expect \"%v\" to NOT match \"%v\"", str, rx), msgAndArgs...) - } - - return !match - -} - -// Zero asserts that i is the zero value for its type and returns the truth. -func Zero(t TestingT, i interface{}, msgAndArgs ...interface{}) bool { - if i != nil && !reflect.DeepEqual(i, reflect.Zero(reflect.TypeOf(i)).Interface()) { - return Fail(t, fmt.Sprintf("Should be zero, but was %v", i), msgAndArgs...) - } - return true -} - -// NotZero asserts that i is not the zero value for its type and returns the truth. -func NotZero(t TestingT, i interface{}, msgAndArgs ...interface{}) bool { - if i == nil || reflect.DeepEqual(i, reflect.Zero(reflect.TypeOf(i)).Interface()) { - return Fail(t, fmt.Sprintf("Should not be zero, but was %v", i), msgAndArgs...) - } - return true -} - -// JSONEq asserts that two JSON strings are equivalent. -// -// assert.JSONEq(t, `{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`) -// -// Returns whether the assertion was successful (true) or not (false). -func JSONEq(t TestingT, expected string, actual string, msgAndArgs ...interface{}) bool { - var expectedJSONAsInterface, actualJSONAsInterface interface{} - - if err := json.Unmarshal([]byte(expected), &expectedJSONAsInterface); err != nil { - return Fail(t, fmt.Sprintf("Expected value ('%s') is not valid json.\nJSON parsing error: '%s'", expected, err.Error()), msgAndArgs...) - } - - if err := json.Unmarshal([]byte(actual), &actualJSONAsInterface); err != nil { - return Fail(t, fmt.Sprintf("Input ('%s') needs to be valid json.\nJSON parsing error: '%s'", actual, err.Error()), msgAndArgs...) - } - - return Equal(t, expectedJSONAsInterface, actualJSONAsInterface, msgAndArgs...) -} - -func typeAndKind(v interface{}) (reflect.Type, reflect.Kind) { - t := reflect.TypeOf(v) - k := t.Kind() - - if k == reflect.Ptr { - t = t.Elem() - k = t.Kind() - } - return t, k -} - -// diff returns a diff of both values as long as both are of the same type and -// are a struct, map, slice or array. Otherwise it returns an empty string. -func diff(expected interface{}, actual interface{}) string { - if expected == nil || actual == nil { - return "" - } - - et, ek := typeAndKind(expected) - at, _ := typeAndKind(actual) - - if et != at { - return "" - } - - if ek != reflect.Struct && ek != reflect.Map && ek != reflect.Slice && ek != reflect.Array { - return "" - } - - spew.Config.SortKeys = true - e := spew.Sdump(expected) - a := spew.Sdump(actual) - - diff, _ := difflib.GetUnifiedDiffString(difflib.UnifiedDiff{ - A: difflib.SplitLines(e), - B: difflib.SplitLines(a), - FromFile: "Expected", - FromDate: "", - ToFile: "Actual", - ToDate: "", - Context: 1, - }) - - return "\n\nDiff:\n" + diff -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/assert/doc.go b/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/assert/doc.go deleted file mode 100644 index c9dccc4d..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/assert/doc.go +++ /dev/null @@ -1,45 +0,0 @@ -// Package assert provides a set of comprehensive testing tools for use with the normal Go testing system. -// -// Example Usage -// -// The following is a complete example using assert in a standard test function: -// import ( -// "testing" -// "github.com/stretchr/testify/assert" -// ) -// -// func TestSomething(t *testing.T) { -// -// var a string = "Hello" -// var b string = "Hello" -// -// assert.Equal(t, a, b, "The two words should be the same.") -// -// } -// -// if you assert many times, use the format below: -// -// import ( -// "testing" -// "github.com/stretchr/testify/assert" -// ) -// -// func TestSomething(t *testing.T) { -// assert := assert.New(t) -// -// var a string = "Hello" -// var b string = "Hello" -// -// assert.Equal(a, b, "The two words should be the same.") -// } -// -// Assertions -// -// Assertions allow you to easily write test code, and are global funcs in the `assert` package. -// All assertion functions take, as the first argument, the `*testing.T` object provided by the -// testing framework. This allows the assertion funcs to write the failings and other details to -// the correct place. -// -// Every assertion function also takes an optional string message as the final argument, -// allowing custom error messages to be appended to the message the assertion method outputs. -package assert diff --git a/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/assert/errors.go b/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/assert/errors.go deleted file mode 100644 index ac9dc9d1..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/assert/errors.go +++ /dev/null @@ -1,10 +0,0 @@ -package assert - -import ( - "errors" -) - -// AnError is an error instance useful for testing. If the code does not care -// about error specifics, and only needs to return the error for example, this -// error should be used to make the test code more readable. -var AnError = errors.New("assert.AnError general error for testing") diff --git a/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/assert/forward_assertions.go b/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/assert/forward_assertions.go deleted file mode 100644 index b867e95e..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/assert/forward_assertions.go +++ /dev/null @@ -1,16 +0,0 @@ -package assert - -// Assertions provides assertion methods around the -// TestingT interface. -type Assertions struct { - t TestingT -} - -// New makes a new Assertions object for the specified TestingT. -func New(t TestingT) *Assertions { - return &Assertions{ - t: t, - } -} - -//go:generate go run ../_codegen/main.go -output-package=assert -template=assertion_forward.go.tmpl diff --git a/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/assert/http_assertions.go b/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/assert/http_assertions.go deleted file mode 100644 index e1b9442b..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/assert/http_assertions.go +++ /dev/null @@ -1,106 +0,0 @@ -package assert - -import ( - "fmt" - "net/http" - "net/http/httptest" - "net/url" - "strings" -) - -// httpCode is a helper that returns HTTP code of the response. It returns -1 -// if building a new request fails. -func httpCode(handler http.HandlerFunc, method, url string, values url.Values) int { - w := httptest.NewRecorder() - req, err := http.NewRequest(method, url+"?"+values.Encode(), nil) - if err != nil { - return -1 - } - handler(w, req) - return w.Code -} - -// HTTPSuccess asserts that a specified handler returns a success status code. -// -// assert.HTTPSuccess(t, myHandler, "POST", "http://www.google.com", nil) -// -// Returns whether the assertion was successful (true) or not (false). -func HTTPSuccess(t TestingT, handler http.HandlerFunc, method, url string, values url.Values) bool { - code := httpCode(handler, method, url, values) - if code == -1 { - return false - } - return code >= http.StatusOK && code <= http.StatusPartialContent -} - -// HTTPRedirect asserts that a specified handler returns a redirect status code. -// -// assert.HTTPRedirect(t, myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} -// -// Returns whether the assertion was successful (true) or not (false). -func HTTPRedirect(t TestingT, handler http.HandlerFunc, method, url string, values url.Values) bool { - code := httpCode(handler, method, url, values) - if code == -1 { - return false - } - return code >= http.StatusMultipleChoices && code <= http.StatusTemporaryRedirect -} - -// HTTPError asserts that a specified handler returns an error status code. -// -// assert.HTTPError(t, myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} -// -// Returns whether the assertion was successful (true) or not (false). -func HTTPError(t TestingT, handler http.HandlerFunc, method, url string, values url.Values) bool { - code := httpCode(handler, method, url, values) - if code == -1 { - return false - } - return code >= http.StatusBadRequest -} - -// HTTPBody is a helper that returns HTTP body of the response. It returns -// empty string if building a new request fails. -func HTTPBody(handler http.HandlerFunc, method, url string, values url.Values) string { - w := httptest.NewRecorder() - req, err := http.NewRequest(method, url+"?"+values.Encode(), nil) - if err != nil { - return "" - } - handler(w, req) - return w.Body.String() -} - -// HTTPBodyContains asserts that a specified handler returns a -// body that contains a string. -// -// assert.HTTPBodyContains(t, myHandler, "www.google.com", nil, "I'm Feeling Lucky") -// -// Returns whether the assertion was successful (true) or not (false). -func HTTPBodyContains(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, str interface{}) bool { - body := HTTPBody(handler, method, url, values) - - contains := strings.Contains(body, fmt.Sprint(str)) - if !contains { - Fail(t, fmt.Sprintf("Expected response body for \"%s\" to contain \"%s\" but found \"%s\"", url+"?"+values.Encode(), str, body)) - } - - return contains -} - -// HTTPBodyNotContains asserts that a specified handler returns a -// body that does not contain a string. -// -// assert.HTTPBodyNotContains(t, myHandler, "www.google.com", nil, "I'm Feeling Lucky") -// -// Returns whether the assertion was successful (true) or not (false). -func HTTPBodyNotContains(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, str interface{}) bool { - body := HTTPBody(handler, method, url, values) - - contains := strings.Contains(body, fmt.Sprint(str)) - if contains { - Fail(t, "Expected response body for %s to NOT contain \"%s\" but found \"%s\"", url+"?"+values.Encode(), str, body) - } - - return !contains -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/mock/doc.go b/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/mock/doc.go deleted file mode 100644 index 7324128e..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/mock/doc.go +++ /dev/null @@ -1,44 +0,0 @@ -// Package mock provides a system by which it is possible to mock your objects -// and verify calls are happening as expected. -// -// Example Usage -// -// The mock package provides an object, Mock, that tracks activity on another object. It is usually -// embedded into a test object as shown below: -// -// type MyTestObject struct { -// // add a Mock object instance -// mock.Mock -// -// // other fields go here as normal -// } -// -// When implementing the methods of an interface, you wire your functions up -// to call the Mock.Called(args...) method, and return the appropriate values. -// -// For example, to mock a method that saves the name and age of a person and returns -// the year of their birth or an error, you might write this: -// -// func (o *MyTestObject) SavePersonDetails(firstname, lastname string, age int) (int, error) { -// args := o.Called(firstname, lastname, age) -// return args.Int(0), args.Error(1) -// } -// -// The Int, Error and Bool methods are examples of strongly typed getters that take the argument -// index position. Given this argument list: -// -// (12, true, "Something") -// -// You could read them out strongly typed like this: -// -// args.Int(0) -// args.Bool(1) -// args.String(2) -// -// For objects of your own type, use the generic Arguments.Get(index) method and make a type assertion: -// -// return args.Get(0).(*MyObject), args.Get(1).(*AnotherObjectOfMine) -// -// This may cause a panic if the object you are getting is nil (the type assertion will fail), in those -// cases you should check for nil first. -package mock diff --git a/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/mock/mock.go b/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/mock/mock.go deleted file mode 100644 index 03cc0f6b..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/stretchr/testify/mock/mock.go +++ /dev/null @@ -1,683 +0,0 @@ -package mock - -import ( - "fmt" - "reflect" - "regexp" - "runtime" - "strings" - "sync" - "time" - - "github.com/stretchr/objx" - "github.com/stretchr/testify/assert" -) - -// TestingT is an interface wrapper around *testing.T -type TestingT interface { - Logf(format string, args ...interface{}) - Errorf(format string, args ...interface{}) - FailNow() -} - -/* - Call -*/ - -// Call represents a method call and is used for setting expectations, -// as well as recording activity. -type Call struct { - Parent *Mock - - // The name of the method that was or will be called. - Method string - - // Holds the arguments of the method. - Arguments Arguments - - // Holds the arguments that should be returned when - // this method is called. - ReturnArguments Arguments - - // The number of times to return the return arguments when setting - // expectations. 0 means to always return the value. - Repeatability int - - // Holds a channel that will be used to block the Return until it either - // recieves a message or is closed. nil means it returns immediately. - WaitFor <-chan time.Time - - // Holds a handler used to manipulate arguments content that are passed by - // reference. It's useful when mocking methods such as unmarshalers or - // decoders. - RunFn func(Arguments) -} - -func newCall(parent *Mock, methodName string, methodArguments ...interface{}) *Call { - return &Call{ - Parent: parent, - Method: methodName, - Arguments: methodArguments, - ReturnArguments: make([]interface{}, 0), - Repeatability: 0, - WaitFor: nil, - RunFn: nil, - } -} - -func (c *Call) lock() { - c.Parent.mutex.Lock() -} - -func (c *Call) unlock() { - c.Parent.mutex.Unlock() -} - -// Return specifies the return arguments for the expectation. -// -// Mock.On("DoSomething").Return(errors.New("failed")) -func (c *Call) Return(returnArguments ...interface{}) *Call { - c.lock() - defer c.unlock() - - c.ReturnArguments = returnArguments - - return c -} - -// Once indicates that that the mock should only return the value once. -// -// Mock.On("MyMethod", arg1, arg2).Return(returnArg1, returnArg2).Once() -func (c *Call) Once() *Call { - return c.Times(1) -} - -// Twice indicates that that the mock should only return the value twice. -// -// Mock.On("MyMethod", arg1, arg2).Return(returnArg1, returnArg2).Twice() -func (c *Call) Twice() *Call { - return c.Times(2) -} - -// Times indicates that that the mock should only return the indicated number -// of times. -// -// Mock.On("MyMethod", arg1, arg2).Return(returnArg1, returnArg2).Times(5) -func (c *Call) Times(i int) *Call { - c.lock() - defer c.unlock() - c.Repeatability = i - return c -} - -// WaitUntil sets the channel that will block the mock's return until its closed -// or a message is received. -// -// Mock.On("MyMethod", arg1, arg2).WaitUntil(time.After(time.Second)) -func (c *Call) WaitUntil(w <-chan time.Time) *Call { - c.lock() - defer c.unlock() - c.WaitFor = w - return c -} - -// After sets how long to block until the call returns -// -// Mock.On("MyMethod", arg1, arg2).After(time.Second) -func (c *Call) After(d time.Duration) *Call { - return c.WaitUntil(time.After(d)) -} - -// Run sets a handler to be called before returning. It can be used when -// mocking a method such as unmarshalers that takes a pointer to a struct and -// sets properties in such struct -// -// Mock.On("Unmarshal", AnythingOfType("*map[string]interface{}").Return().Run(func(args Arguments) { -// arg := args.Get(0).(*map[string]interface{}) -// arg["foo"] = "bar" -// }) -func (c *Call) Run(fn func(Arguments)) *Call { - c.lock() - defer c.unlock() - c.RunFn = fn - return c -} - -// On chains a new expectation description onto the mocked interface. This -// allows syntax like. -// -// Mock. -// On("MyMethod", 1).Return(nil). -// On("MyOtherMethod", 'a', 'b', 'c').Return(errors.New("Some Error")) -func (c *Call) On(methodName string, arguments ...interface{}) *Call { - return c.Parent.On(methodName, arguments...) -} - -// Mock is the workhorse used to track activity on another object. -// For an example of its usage, refer to the "Example Usage" section at the top -// of this document. -type Mock struct { - // Represents the calls that are expected of - // an object. - ExpectedCalls []*Call - - // Holds the calls that were made to this mocked object. - Calls []Call - - // TestData holds any data that might be useful for testing. Testify ignores - // this data completely allowing you to do whatever you like with it. - testData objx.Map - - mutex sync.Mutex -} - -// TestData holds any data that might be useful for testing. Testify ignores -// this data completely allowing you to do whatever you like with it. -func (m *Mock) TestData() objx.Map { - - if m.testData == nil { - m.testData = make(objx.Map) - } - - return m.testData -} - -/* - Setting expectations -*/ - -// On starts a description of an expectation of the specified method -// being called. -// -// Mock.On("MyMethod", arg1, arg2) -func (m *Mock) On(methodName string, arguments ...interface{}) *Call { - for _, arg := range arguments { - if v := reflect.ValueOf(arg); v.Kind() == reflect.Func { - panic(fmt.Sprintf("cannot use Func in expectations. Use mock.AnythingOfType(\"%T\")", arg)) - } - } - - m.mutex.Lock() - defer m.mutex.Unlock() - c := newCall(m, methodName, arguments...) - m.ExpectedCalls = append(m.ExpectedCalls, c) - return c -} - -// /* -// Recording and responding to activity -// */ - -func (m *Mock) findExpectedCall(method string, arguments ...interface{}) (int, *Call) { - m.mutex.Lock() - defer m.mutex.Unlock() - for i, call := range m.ExpectedCalls { - if call.Method == method && call.Repeatability > -1 { - - _, diffCount := call.Arguments.Diff(arguments) - if diffCount == 0 { - return i, call - } - - } - } - return -1, nil -} - -func (m *Mock) findClosestCall(method string, arguments ...interface{}) (bool, *Call) { - diffCount := 0 - var closestCall *Call - - for _, call := range m.expectedCalls() { - if call.Method == method { - - _, tempDiffCount := call.Arguments.Diff(arguments) - if tempDiffCount < diffCount || diffCount == 0 { - diffCount = tempDiffCount - closestCall = call - } - - } - } - - if closestCall == nil { - return false, nil - } - - return true, closestCall -} - -func callString(method string, arguments Arguments, includeArgumentValues bool) string { - - var argValsString string - if includeArgumentValues { - var argVals []string - for argIndex, arg := range arguments { - argVals = append(argVals, fmt.Sprintf("%d: %#v", argIndex, arg)) - } - argValsString = fmt.Sprintf("\n\t\t%s", strings.Join(argVals, "\n\t\t")) - } - - return fmt.Sprintf("%s(%s)%s", method, arguments.String(), argValsString) -} - -// Called tells the mock object that a method has been called, and gets an array -// of arguments to return. Panics if the call is unexpected (i.e. not preceeded by -// appropriate .On .Return() calls) -// If Call.WaitFor is set, blocks until the channel is closed or receives a message. -func (m *Mock) Called(arguments ...interface{}) Arguments { - // get the calling function's name - pc, _, _, ok := runtime.Caller(1) - if !ok { - panic("Couldn't get the caller information") - } - functionPath := runtime.FuncForPC(pc).Name() - //Next four lines are required to use GCCGO function naming conventions. - //For Ex: github_com_docker_libkv_store_mock.WatchTree.pN39_github_com_docker_libkv_store_mock.Mock - //uses inteface information unlike golang github.com/docker/libkv/store/mock.(*Mock).WatchTree - //With GCCGO we need to remove interface information starting from pN

    @dsB#yNY9f+OPVC#R7i!SOyG)`_?JHl0^h+R@- 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 X;0NxJi{4dD5`gry?`u_P*rEOf01)?8 diff --git a/vendor/github.com/docker/machine/docs/img/provision-use-case.png b/vendor/github.com/docker/machine/docs/img/provision-use-case.png deleted file mode 100644 index d302094a6dd2797b6c896dce068d5029a3b3739e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24477 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 -+++ -title = "Docker Machine" -description = "Introduction and Overview of Machine" -keywords = ["docker, machine, amazonec2, azure, digitalocean, google, openstack, rackspace, softlayer, virtualbox, vmwarefusion, vmwarevcloudair, vmwarevsphere, exoscale"] -[menu.main] -identifier="workw_machine" -+++ - - - -# Docker Machine - -- [Docker Machine overview](overview.md) -- [Install Docker Machine](install-machine.md) -- Install a machine on your [local system using VirtualBox](get-started.md) -- Install multiple machines [on your cloud provider](get-started-cloud.md) -- [Digital Ocean Example](examples/ocean.md) -- [AWS Example](examples/aws.md) -- [Machine concepts and help](concepts.md) -- [Migrate from Boot2Docker to Docker Machine](migrate-to-machine.md) -- [Docker Machine driver reference](drivers/index.md) -- [Docker Machine subcommand reference](reference/index.md) diff --git a/vendor/github.com/docker/machine/docs/install-machine.md b/vendor/github.com/docker/machine/docs/install-machine.md deleted file mode 100644 index 5f92e32b..00000000 --- a/vendor/github.com/docker/machine/docs/install-machine.md +++ /dev/null @@ -1,72 +0,0 @@ - - -# Install Docker Machine - -On OS X and Windows, Machine is installed along with other Docker products when -you install the Docker Toolbox. For details on installing Docker Toolbox, see -the Mac OS X -installation instructions or Windows -installation instructions. - -If you want only Docker Machine, you can install the Machine binaries directly by following the instructions in the next section. You can find the latest versions of the binaries are on the docker/machine release page on GitHub. - -## Installing Machine Directly - -1. Install the Docker binary. - -2. Download the Docker Machine binary and extract it to your PATH. - - If you are running OS X or Linux: - - $ curl -L https://github.com/docker/machine/releases/download/v0.7.0/docker-machine-`uname -s`-`uname -m` > /usr/local/bin/docker-machine && \ - chmod +x /usr/local/bin/docker-machine - - If you are running Windows with git bash - - $ if [[ ! -d "$HOME/bin" ]]; then mkdir -p "$HOME/bin"; fi && \ - curl -L https://github.com/docker/machine/releases/download/v0.7.0/docker-machine-Windows-x86_64.exe > "$HOME/bin/docker-machine.exe" && \ - chmod +x "$HOME/bin/docker-machine.exe" - - Otherwise, download one of the releases from the docker/machine release page directly. - -3. Check the installation by displaying the Machine version: - - $ docker-machine version - docker-machine version 0.7.0, build 61388e9 - -## Installing bash completion scripts - -The Machine repository supplies several `bash` scripts that add features such -as: - -- command completion -- a function that displays the active machine in your shell prompt -- a function wrapper that adds a `docker-machine use` subcommand to switch the - active machine - -To install the scripts, copy or link them into your `/etc/bash_completion.d` or -`/usr/local/etc/bash_completion.d` directory. To enable the `docker-machine` shell -prompt, add `$(__docker_machine_ps1)` to your `PS1` setting in `~/.bashrc`. - - PS1='[\u@\h \W$(__docker_machine_ps1)]\$ ' - -You can find additional documentation in the comments at the top of each script. - -## Where to go next - -- [Docker Machine overview](overview.md) -- Create and run a Docker host on your [local system using VirtualBox](get-started.md) -- Provision multiple Docker hosts [on your cloud provider](get-started-cloud.md) -- Docker Machine driver reference -- Docker Machine subcommand reference diff --git a/vendor/github.com/docker/machine/docs/migrate-to-machine.md b/vendor/github.com/docker/machine/docs/migrate-to-machine.md deleted file mode 100644 index 731291af..00000000 --- a/vendor/github.com/docker/machine/docs/migrate-to-machine.md +++ /dev/null @@ -1,48 +0,0 @@ - - -# Migrate from Boot2Docker to Docker Machine - -If you were using Boot2Docker previously, you have a pre-existing Docker -`boot2docker-vm` VM on your local system. To allow Docker Machine to manage -this older VM, you must migrate it. - -1. Open a terminal or the Docker CLI on your system. - -2. Type the following command. - - $ docker-machine create -d virtualbox --virtualbox-import-boot2docker-vm boot2docker-vm docker-vm - -3. Use the `docker-machine` command to interact with the migrated VM. - -## Subcommand comparison - -The `docker-machine` subcommands are slightly different than the `boot2docker` -subcommands. The table below lists the equivalent `docker-machine` subcommand -and what it does: - -| `boot2docker` | `docker-machine` | `docker-machine` description | -| ------------- | ---------------- | --------------------------------------------------------------------------------- | -| init | create | Creates a new docker host. | -| up | start | Starts a stopped machine. | -| ssh | ssh | Runs a command or interactive ssh session on the machine. | -| save | - | Not applicable. | -| down | stop | Stops a running machine. | -| poweroff | stop | Stops a running machine. | -| reset | restart | Restarts a running machine. | -| config | inspect | Prints machine configuration details. | -| status | ls | Lists all machines and their status. | -| info | inspect | Displays a machine's details. | -| ip | ip | Displays the machine's ip address. | -| shellinit | env | Displays shell commands needed to configure your shell to interact with a machine | -| delete | rm | Removes a machine. | -| download | - | Not applicable. | -| upgrade | upgrade | Upgrades a machine's Docker client to the latest stable release. | diff --git a/vendor/github.com/docker/machine/docs/overview.md b/vendor/github.com/docker/machine/docs/overview.md deleted file mode 100644 index 470394f9..00000000 --- a/vendor/github.com/docker/machine/docs/overview.md +++ /dev/null @@ -1,67 +0,0 @@ - - - -# Docker Machine Overview - -You can use Docker Machine to: - -* Install and run Docker on Mac or Windows -* Provision and manage multiple remote Docker hosts -* Provision Swarm clusters - -## What is Docker Machine? -Docker Machine is a tool that lets you install Docker Engine on virtual hosts, and manage the hosts with `docker-machine` commands. You can use Machine to create Docker hosts on your local Mac or Windows box, on your company network, in your data center, or on cloud providers like AWS or Digital Ocean. - -Using `docker-machine` commands, you can start, inspect, stop, and restart a managed host, upgrade the Docker client and daemon, and configure a Docker client to talk to your host. - -Point the Machine CLI at a running, managed host, and you can run `docker` commands directly on that host. For example, run `docker-machine env default` to point to a host called `default`, follow on-screen instructions to complete `env` setup, and run `docker ps`, `docker run hello-world`, and so forth. - -## Why should I use it? - -Machine is currently the only way to run Docker on Mac or Windows, and the best way to provision multiple remote Docker hosts on various flavors of Linux. - -Docker Machine has these two broad use cases. - -* **I want to run Docker on Mac or Windows** - - ![Docker Machine on Mac and Windows](img/machine-mac-win.png) - - If you work primarily on a Mac or Windows laptop or desktop, you need Docker Machine in order to "run Docker" (that is, Docker Engine) locally. Installing Docker Machine on a Mac or Windows box provisions a local virtual machine with Docker Engine, gives you the ability to connect it, and run `docker` commands. - -* **I want to provision Docker hosts on remote systems** - - ![Docker Machine for provisioning multiple systems](img/provision-use-case.png) - - Docker Engine runs natively on Linux systems. If you have a Linux box as your primary system, and want to run `docker` commands, all you need to do is download and install Docker Engine. However, if you want an efficient way to provision multiple Docker hosts on a network, in the cloud or even locally, you need Docker Machine. - - Whether your primary system is Mac, Windows, or Linux, you can install Docker Machine on it and use `docker-machine` commands to provision and manage large numbers of Docker hosts. It automatically creates hosts, installs Docker Engine on them, then configures the `docker` clients. Each managed host ("**_machine_**") is the combination of a Docker host and a configured client. - -## What's the difference between Docker Engine and Docker Machine? - -When people say "Docker" they typically mean **Docker Engine**, the client-server application made up of the Docker daemon, a REST API that specifies interfaces for interacting with the daemon, and a command line interface (CLI) client that talks to the daemon (through the REST API wrapper). Docker Engine accepts `docker` commands from the CLI, such as `docker run `, `docker ps` to list running containers, `docker images` to list images, and so on. - -![Docker Engine](img/engine.png) - -**Docker Machine** is a tool for provisioning and managing your Dockerized hosts (hosts with Docker Engine on them). Typically, you install Docker Machine on your local system. Docker Machine has its own command line client `docker-machine` and the Docker Engine client, `docker`. You can use Machine to install Docker Engine on one or more virtual systems. These virtual systems can be local (as when you use Machine to install and run Docker Engine in VirtualBox on Mac or Windows) or remote (as when you use Machine to provision Dockerized hosts on cloud providers). The Dockerized hosts themselves can be thought of, and are sometimes referred to as, managed "**_machines_**". - -![Docker Machine](img/machine.png) - -## Where to go next - -- [Install Docker Machine](install-machine.md) -- Create and run a Docker host on your [local system using VirtualBox](get-started.md) -- Provision multiple Docker hosts [on your cloud provider](get-started-cloud.md) -- [Provision a Docker Swarm cluster with Docker Machine](/swarm/provision-with-machine.md) -- [Understand Machine concepts](concepts.md) -- [Docker Machine driver reference](drivers/index.md) -- [Docker Machine subcommand reference](reference/index.md) -- [Migrate from Boot2Docker to Docker Machine](migrate-to-machine.md) diff --git a/vendor/github.com/docker/machine/docs/reference/active.md b/vendor/github.com/docker/machine/docs/reference/active.md deleted file mode 100644 index d479017f..00000000 --- a/vendor/github.com/docker/machine/docs/reference/active.md +++ /dev/null @@ -1,23 +0,0 @@ - - -# active - -See which machine is "active" (a machine is considered active if the -`DOCKER_HOST` environment variable points to it). - - $ docker-machine ls - NAME ACTIVE DRIVER STATE URL - dev - virtualbox Running tcp://192.168.99.103:2376 - staging * digitalocean Running tcp://203.0.113.81:2376 - $ echo $DOCKER_HOST - tcp://203.0.113.81:2376 - $ docker-machine active - staging diff --git a/vendor/github.com/docker/machine/docs/reference/config.md b/vendor/github.com/docker/machine/docs/reference/config.md deleted file mode 100644 index 5c96aef8..00000000 --- a/vendor/github.com/docker/machine/docs/reference/config.md +++ /dev/null @@ -1,32 +0,0 @@ - - -# config - - Usage: docker-machine config [OPTIONS] [arg...] - - Print the connection config for machine - - Description: - Argument is a machine name. - - Options: - - --swarm Display the Swarm config instead of the Docker daemon - - -For example: - - $ docker-machine config dev - --tlsverify - --tlscacert="/Users/ehazlett/.docker/machines/dev/ca.pem" - --tlscert="/Users/ehazlett/.docker/machines/dev/cert.pem" - --tlskey="/Users/ehazlett/.docker/machines/dev/key.pem" - -H tcp://192.168.99.103:2376 diff --git a/vendor/github.com/docker/machine/docs/reference/create.md b/vendor/github.com/docker/machine/docs/reference/create.md deleted file mode 100644 index a9db9ed9..00000000 --- a/vendor/github.com/docker/machine/docs/reference/create.md +++ /dev/null @@ -1,242 +0,0 @@ - - -# create - -Create a machine. Requires the `--driver` flag to indicate which provider -(VirtualBox, DigitalOcean, AWS, etc.) the machine should be created on, and an -argument to indicate the name of the created machine. - - $ docker-machine create --driver virtualbox dev - Creating CA: /home/username/.docker/machine/certs/ca.pem - Creating client certificate: /home/username/.docker/machine/certs/cert.pem - Image cache does not exist, creating it at /home/username/.docker/machine/cache... - No default boot2docker iso found locally, downloading the latest release... - Downloading https://github.com/boot2docker/boot2docker/releases/download/v1.6.2/boot2docker.iso to /home/username/.docker/machine/cache/boot2docker.iso... - Creating VirtualBox VM... - Creating SSH key... - Starting VirtualBox VM... - Starting VM... - To see how to connect Docker to this machine, run: docker-machine env dev - -## Accessing driver-specific flags in the help text - -The `docker-machine create` command has some flags which are applicable to all -drivers. These largely control aspects of Machine's provisoning process -(including the creation of Docker Swarm containers) that the user may wish to -customize. - - $ docker-machine create - Docker Machine Version: 0.5.0 (45e3688) - Usage: docker-machine create [OPTIONS] [arg...] - - Create a machine. - - Run 'docker-machine create --driver name' to include the create flags for that driver in the help text. - - Options: - - --driver, -d "none" Driver to create machine with. - --engine-install-url "https://get.docker.com" Custom URL to use for engine installation [$MACHINE_DOCKER_INSTALL_URL] - --engine-opt [--engine-opt option --engine-opt option] Specify arbitrary flags to include with the created engine in the form flag=value - --engine-insecure-registry [--engine-insecure-registry option --engine-insecure-registry option] Specify insecure registries to allow with the created engine - --engine-registry-mirror [--engine-registry-mirror option --engine-registry-mirror option] Specify registry mirrors to use [$ENGINE_REGISTRY_MIRROR] - --engine-label [--engine-label option --engine-label option] Specify labels for the created engine - --engine-storage-driver Specify a storage driver to use with the engine - --engine-env [--engine-env option --engine-env option] Specify environment variables to set in the engine - --swarm Configure Machine with Swarm - --swarm-image "swarm:latest" Specify Docker image to use for Swarm [$MACHINE_SWARM_IMAGE] - --swarm-master Configure Machine to be a Swarm master - --swarm-discovery Discovery service to use with Swarm - --swarm-strategy "spread" Define a default scheduling strategy for Swarm - --swarm-opt [--swarm-opt option --swarm-opt option] Define arbitrary flags for swarm - --swarm-host "tcp://0.0.0.0:3376" ip/socket to listen on for Swarm master - --swarm-addr addr to advertise for Swarm (default: detect and use the machine IP) - --swarm-experimental Enable Swarm experimental features - -Additionally, drivers can specify flags that Machine can accept as part of their -plugin code. These allow users to customize the provider-specific parameters of -the created machine, such as size (`--amazonec2-instance-type m1.medium`), -geographical region (`--amazonec2-region us-west-1`), and so on. - -To see the provider-specific flags, simply pass a value for `--driver` when -invoking the `create` help text. - - $ docker-machine create --driver virtualbox --help - Usage: docker-machine create [OPTIONS] [arg...] - - Create a machine. - - Run 'docker-machine create --driver name' to include the create flags for that driver in the help text. - - Options: - - --driver, -d "none" Driver to create machine with. - --engine-env [--engine-env option --engine-env option] Specify environment variables to set in the engine - --engine-insecure-registry [--engine-insecure-registry option --engine-insecure-registry option] Specify insecure registries to allow with the created engine - --engine-install-url "https://get.docker.com" Custom URL to use for engine installation [$MACHINE_DOCKER_INSTALL_URL] - --engine-label [--engine-label option --engine-label option] Specify labels for the created engine - --engine-opt [--engine-opt option --engine-opt option] Specify arbitrary flags to include with the created engine in the form flag=value - --engine-registry-mirror [--engine-registry-mirror option --engine-registry-mirror option] Specify registry mirrors to use [$ENGINE_REGISTRY_MIRROR] - --engine-storage-driver Specify a storage driver to use with the engine - --swarm Configure Machine with Swarm - --swarm-addr addr to advertise for Swarm (default: detect and use the machine IP) - --swarm-discovery Discovery service to use with Swarm - --swarm-experimental Enable Swarm experimental features - --swarm-host "tcp://0.0.0.0:3376" ip/socket to listen on for Swarm master - --swarm-image "swarm:latest" Specify Docker image to use for Swarm [$MACHINE_SWARM_IMAGE] - --swarm-master Configure Machine to be a Swarm master - --swarm-opt [--swarm-opt option --swarm-opt option] Define arbitrary flags for swarm - --swarm-strategy "spread" Define a default scheduling strategy for Swarm - --virtualbox-boot2docker-url The URL of the boot2docker image. Defaults to the latest available version [$VIRTUALBOX_BOOT2DOCKER_URL] - --virtualbox-cpu-count "1" number of CPUs for the machine (-1 to use the number of CPUs available) [$VIRTUALBOX_CPU_COUNT] - --virtualbox-disk-size "20000" Size of disk for host in MB [$VIRTUALBOX_DISK_SIZE] - --virtualbox-host-dns-resolver Use the host DNS resolver [$VIRTUALBOX_HOST_DNS_RESOLVER] - --virtualbox-dns-proxy Proxy all DNS requests to the host [$VIRTUALBOX_DNS_PROXY] - --virtualbox-hostonly-cidr "192.168.99.1/24" Specify the Host Only CIDR [$VIRTUALBOX_HOSTONLY_CIDR] - --virtualbox-hostonly-nicpromisc "deny" Specify the Host Only Network Adapter Promiscuous Mode [$VIRTUALBOX_HOSTONLY_NIC_PROMISC] - --virtualbox-hostonly-nictype "82540EM" Specify the Host Only Network Adapter Type [$VIRTUALBOX_HOSTONLY_NIC_TYPE] - --virtualbox-import-boot2docker-vm The name of a Boot2Docker VM to import - --virtualbox-memory "1024" Size of memory for host in MB [$VIRTUALBOX_MEMORY_SIZE] - --virtualbox-no-share Disable the mount of your home directory - -You may notice that some flags specify environment variables that they are -associated with as well (located to the far left hand side of the row). If -these environment variables are set when `docker-machine create` is invoked, -Docker Machine will use them for the default value of the flag. - -## Specifying configuration options for the created Docker engine - -As part of the process of creation, Docker Machine installs Docker and -configures it with some sensible defaults. For instance, it allows connection -from the outside world over TCP with TLS-based encryption and defaults to AUFS -as the [storage -driver](/engine/reference/commandline/dockerd.md#daemon-storage-driver-option) -when available. - -There are several cases where the user might want to set options for the created -Docker engine (also known as the Docker _daemon_) themselves. For example, they -may want to allow connection to a [registry](/registry/index.md) -that they are running themselves using the `--insecure-registry` flag for the -daemon. Docker Machine supports the configuration of such options for the -created engines via the `create` command flags which begin with `--engine`. - -Note that Docker Machine simply sets the configured parameters on the daemon -and does not set up any of the "dependencies" for you. For instance, if you -specify that the created daemon should use `btrfs` as a storage driver, you -still must ensure that the proper dependencies are installed, the BTRFS -filesystem has been created, and so on. - -The following is an example usage: - - $ docker-machine create -d virtualbox \ - --engine-label foo=bar \ - --engine-label spam=eggs \ - --engine-storage-driver overlay \ - --engine-insecure-registry registry.myco.com \ - foobarmachine - -This will create a virtual machine running locally in Virtualbox which uses the -`overlay` storage backend, has the key-value pairs `foo=bar` and `spam=eggs` as -labels on the engine, and allows pushing / pulling from the insecure registry -located at `registry.myco.com`. You can verify much of this by inspecting the -output of `docker info`: - - $ eval $(docker-machine env foobarmachine) - $ docker info - Containers: 0 - Images: 0 - Storage Driver: overlay - ... - Name: foobarmachine - ... - Labels: - foo=bar - spam=eggs - provider=virtualbox - -The supported flags are as follows: - -- `--engine-insecure-registry`: Specify [insecure registries](/engine/reference/commandline/cli.md#insecure-registries) to allow with the created engine -- `--engine-registry-mirror`: Specify [registry mirrors](/registry/recipes/mirror.md) to use -- `--engine-label`: Specify [labels](/engine/userguide/labels-custom-metadata.md#daemon-labels) for the created engine -- `--engine-storage-driver`: Specify a [storage driver](/engine/reference/commandline/cli.md#daemon-storage-driver-option) to use with the engine - -If the engine supports specifying the flag multiple times (such as with -`--label`), then so does Docker Machine. - -In addition to this subset of daemon flags which are directly supported, Docker -Machine also supports an additional flag, `--engine-opt`, which can be used to -specify arbitrary daemon options with the syntax `--engine-opt flagname=value`. -For example, to specify that the daemon should use `8.8.8.8` as the DNS server -for all containers, and always use the `syslog` [log -driver](/engine/reference/run.md#logging-drivers-log-driver) you -could run the following create command: - - $ docker-machine create -d virtualbox \ - --engine-opt dns=8.8.8.8 \ - --engine-opt log-driver=syslog \ - gdns - -Additionally, Docker Machine supports a flag, `--engine-env`, which can be used to -specify arbitrary environment variables to be set within the engine with the syntax `--engine-env name=value`. For example, to specify that the engine should use `example.com` as the proxy server, you could run the following create command: - - $ docker-machine create -d virtualbox \ - --engine-env HTTP_PROXY=http://example.com:8080 \ - --engine-env HTTPS_PROXY=https://example.com:8080 \ - --engine-env NO_PROXY=example2.com \ - proxbox - -## Specifying Docker Swarm options for the created machine - -In addition to being able to configure Docker Engine options as listed above, -you can use Machine to specify how the created Swarm master should be -configured. There is a `--swarm-strategy` flag, which you can use to specify -the [scheduling strategy](/swarm/scheduler/strategy.md) -which Docker Swarm should use (Machine defaults to the `spread` strategy). -There is also a general purpose `--swarm-opt` option which works similar to how -the aforementioned `--engine-opt` option does, except that it specifies options -for the `swarm manage` command (used to boot a master node) instead of the base -command. You can use this to configure features that power users might be -interested in, such as configuring the heartbeat interval or Swarm's willingness -to over-commit resources. There is also the `--swarm-experimental` flag, that -allows you to access [experimental features](https://github.com/docker/swarm/tree/master/experimental) -in Docker Swarm. - -If you're not sure how to configure these options, it is best to not specify -configuration at all. Docker Machine will choose sensible defaults for you and -you won't have to worry about it. - -Example create: - - $ docker-machine create -d virtualbox \ - --swarm \ - --swarm-master \ - --swarm-discovery token:// \ - --swarm-strategy binpack \ - --swarm-opt heartbeat=5 \ - upbeat - -This will set the swarm scheduling strategy to "binpack" (pack in containers as -tightly as possible per host instead of spreading them out), and the "heartbeat" -interval to 5 seconds. - -## Pre-create check - -Since many drivers require a certain set of conditions to be in place before -they can successfully perform a create (e.g. VirtualBox should be installed, or -the provided API credentials should be valid), Docker Machine has a "pre-create -check" which is specified at the driver level. - -If this pre-create check succeeds, Docker Machine will proceed with the creation -as normal. If the pre-create check fails, the Docker Machine process will exit -with status code 3 to indicate that the source of the non-zero exit was the -pre-create check failing. diff --git a/vendor/github.com/docker/machine/docs/reference/env.md b/vendor/github.com/docker/machine/docs/reference/env.md deleted file mode 100644 index 5f793d64..00000000 --- a/vendor/github.com/docker/machine/docs/reference/env.md +++ /dev/null @@ -1,109 +0,0 @@ - - -# env - -Set environment variables to dictate that `docker` should run a command against -a particular machine. - - $ docker-machine env --help - - Usage: docker-machine env [OPTIONS] [arg...] - - Display the commands to set up the environment for the Docker client - - Description: - Argument is a machine name. - - Options: - - --swarm Display the Swarm config instead of the Docker daemon - --shell Force environment to be configured for a specified shell: [fish, cmd, powershell, tcsh], default is sh/bash - --unset, -u Unset variables instead of setting them - --no-proxy Add machine IP to NO_PROXY environment variable - -`docker-machine env machinename` will print out `export` commands which can be -run in a subshell. Running `docker-machine env -u` will print `unset` commands -which reverse this effect. - - $ env | grep DOCKER - $ eval "$(docker-machine env dev)" - $ env | grep DOCKER - DOCKER_HOST=tcp://192.168.99.101:2376 - DOCKER_CERT_PATH=/Users/nathanleclaire/.docker/machines/.client - DOCKER_TLS_VERIFY=1 - DOCKER_MACHINE_NAME=dev - $ # If you run a docker command, now it will run against that host. - $ eval "$(docker-machine env -u)" - $ env | grep DOCKER - $ # The environment variables have been unset. - -The output described above is intended for the shells `bash` and `zsh` (if -you're not sure which shell you're using, there's a very good possibility that -it's `bash`). However, these are not the only shells which Docker Machine -supports. Depending of the environment you're running your command into we will print them for the proper system. - We support `bash`, `cmd`, `powershell` and `emacs`. - -If you are using `fish` and the `SHELL` environment variable is correctly set to -the path where `fish` is located, `docker-machine env name` will print out the -values in the format which `fish` expects: - - set -x DOCKER_TLS_VERIFY 1; - set -x DOCKER_CERT_PATH "/Users/nathanleclaire/.docker/machine/machines/overlay"; - set -x DOCKER_HOST tcp://192.168.99.102:2376; - set -x DOCKER_MACHINE_NAME overlay - # Run this command to configure your shell: - # eval "$(docker-machine env overlay)" - -If you are on Windows and using either Powershell or `cmd.exe`, `docker-machine env` - Docker Machine should now detect your shell automatically. If the automagic detection does not work you - can still override it using the `--shell` flag for `docker-machine env`. - -For Powershell: - - $ docker-machine.exe env --shell powershell dev - $Env:DOCKER_TLS_VERIFY = "1" - $Env:DOCKER_HOST = "tcp://192.168.99.101:2376" - $Env:DOCKER_CERT_PATH = "C:\Users\captain\.docker\machine\machines\dev" - $Env:DOCKER_MACHINE_NAME = "dev" - # Run this command to configure your shell: - # docker-machine.exe env --shell=powershell dev | Invoke-Expression - -For `cmd.exe`: - - $ docker-machine.exe env --shell cmd dev - set DOCKER_TLS_VERIFY=1 - set DOCKER_HOST=tcp://192.168.99.101:2376 - set DOCKER_CERT_PATH=C:\Users\captain\.docker\machine\machines\dev - set DOCKER_MACHINE_NAME=dev - # Run this command to configure your shell: copy and paste the above values into your command prompt - -## Excluding the created machine from proxies - -The env command supports a `--no-proxy` flag which will ensure that the created -machine's IP address is added to the [`NO_PROXY`/`no_proxy` environment -variable](https://wiki.archlinux.org/index.php/Proxy_settings). - -This is useful when using `docker-machine` with a local VM provider (e.g. -`virtualbox` or `vmwarefusion`) in network environments where a HTTP proxy is -required for internet access. - - $ docker-machine env --no-proxy default - export DOCKER_TLS_VERIFY="1" - export DOCKER_HOST="tcp://192.168.99.104:2376" - export DOCKER_CERT_PATH="/Users/databus23/.docker/machine/certs" - export DOCKER_MACHINE_NAME="default" - export NO_PROXY="192.168.99.104" - # Run this command to configure your shell: - # eval "$(docker-machine env default)" - -You may also want to visit the [documentation on setting `HTTP_PROXY` for the -created daemon using the `--engine-env` flag for `docker-machine -create`](/machine/reference/create.md#specifying-configuration-options-for-the-created-docker-engine). diff --git a/vendor/github.com/docker/machine/docs/reference/help.md b/vendor/github.com/docker/machine/docs/reference/help.md deleted file mode 100644 index ce87bffa..00000000 --- a/vendor/github.com/docker/machine/docs/reference/help.md +++ /dev/null @@ -1,31 +0,0 @@ - - -# help - - Usage: docker-machine help [arg...] - - Shows a list of commands or help for one command - -Usage: docker-machine help _subcommand_ - -For example: - - $ docker-machine help config - Usage: docker-machine config [OPTIONS] [arg...] - - Print the connection config for machine - - Description: - Argument is a machine name. - - Options: - - --swarm Display the Swarm config instead of the Docker daemon diff --git a/vendor/github.com/docker/machine/docs/reference/index.md b/vendor/github.com/docker/machine/docs/reference/index.md deleted file mode 100644 index bb9def51..00000000 --- a/vendor/github.com/docker/machine/docs/reference/index.md +++ /dev/null @@ -1,33 +0,0 @@ - - -# Docker Machine command line reference - -- [active](active.md) -- [config](config.md) -- [create](create.md) -- [env](env.md) -- [help](help.md) -- [inspect](inspect.md) -- [ip](ip.md) -- [kill](kill.md) -- [ls](ls.md) -- [regenerate-certs](regenerate-certs.md) -- [restart](restart.md) -- [rm](rm.md) -- [scp](scp.md) -- [ssh](ssh.md) -- [start](start.md) -- [status](status.md) -- [stop](stop.md) -- [upgrade](upgrade.md) -- [url](url.md) diff --git a/vendor/github.com/docker/machine/docs/reference/inspect.md b/vendor/github.com/docker/machine/docs/reference/inspect.md deleted file mode 100644 index 35f13897..00000000 --- a/vendor/github.com/docker/machine/docs/reference/inspect.md +++ /dev/null @@ -1,89 +0,0 @@ - - -# inspect - - Usage: docker-machine inspect [OPTIONS] [arg...] - - Inspect information about a machine - - Description: - Argument is a machine name. - - Options: - --format, -f Format the output using the given go template. - -By default, this will render information about a machine as JSON. If a format is -specified, the given template will be executed for each result. - -Go's [text/template](http://golang.org/pkg/text/template/) package -describes all the details of the format. - -In addition to the `text/template` syntax, there are some additional functions, -`json` and `prettyjson`, which can be used to format the output as JSON (documented below). - -## Examples - -**List all the details of a machine:** - -This is the default usage of `inspect`. - - $ docker-machine inspect dev - { - "DriverName": "virtualbox", - "Driver": { - "MachineName": "docker-host-128be8d287b2028316c0ad5714b90bcfc11f998056f2f790f7c1f43f3d1e6eda", - "SSHPort": 55834, - "Memory": 1024, - "DiskSize": 20000, - "Boot2DockerURL": "", - "IPAddress": "192.168.5.99" - }, - ... - } - -**Get a machine's IP address:** - -For the most part, you can pick out any field from the JSON in a fairly -straightforward manner. - - $ docker-machine inspect --format='{{.Driver.IPAddress}}' dev - 192.168.5.99 - -**Formatting details:** - -If you want a subset of information formatted as JSON, you can use the `json` -function in the template. - - $ docker-machine inspect --format='{{json .Driver}}' dev-fusion - {"Boot2DockerURL":"","CPUS":8,"CPUs":8,"CaCertPath":"/Users/hairyhenderson/.docker/machine/certs/ca.pem","DiskSize":20000,"IPAddress":"172.16.62.129","ISO":"/Users/hairyhenderson/.docker/machine/machines/dev-fusion/boot2docker-1.5.0-GH747.iso","MachineName":"dev-fusion","Memory":1024,"PrivateKeyPath":"/Users/hairyhenderson/.docker/machine/certs/ca-key.pem","SSHPort":22,"SSHUser":"docker","SwarmDiscovery":"","SwarmHost":"tcp://0.0.0.0:3376","SwarmMaster":false} - -While this is usable, it's not very human-readable. For this reason, there is -`prettyjson`: - - $ docker-machine inspect --format='{{prettyjson .Driver}}' dev-fusion - { - "Boot2DockerURL": "", - "CPUS": 8, - "CPUs": 8, - "CaCertPath": "/Users/hairyhenderson/.docker/machine/certs/ca.pem", - "DiskSize": 20000, - "IPAddress": "172.16.62.129", - "ISO": "/Users/hairyhenderson/.docker/machine/machines/dev-fusion/boot2docker-1.5.0-GH747.iso", - "MachineName": "dev-fusion", - "Memory": 1024, - "PrivateKeyPath": "/Users/hairyhenderson/.docker/machine/certs/ca-key.pem", - "SSHPort": 22, - "SSHUser": "docker", - "SwarmDiscovery": "", - "SwarmHost": "tcp://0.0.0.0:3376", - "SwarmMaster": false - } diff --git a/vendor/github.com/docker/machine/docs/reference/ip.md b/vendor/github.com/docker/machine/docs/reference/ip.md deleted file mode 100644 index 92d299da..00000000 --- a/vendor/github.com/docker/machine/docs/reference/ip.md +++ /dev/null @@ -1,19 +0,0 @@ - - -# ip - -Get the IP address of one or more machines. - - $ docker-machine ip dev - 192.168.99.104 - $ docker-machine ip dev dev2 - 192.168.99.104 - 192.168.99.105 diff --git a/vendor/github.com/docker/machine/docs/reference/kill.md b/vendor/github.com/docker/machine/docs/reference/kill.md deleted file mode 100644 index a4b71234..00000000 --- a/vendor/github.com/docker/machine/docs/reference/kill.md +++ /dev/null @@ -1,29 +0,0 @@ - - -# kill - - Usage: docker-machine kill [arg...] - - Kill (abruptly force stop) a machine - - Description: - Argument(s) are one or more machine names. - -For example: - - $ docker-machine ls - NAME ACTIVE DRIVER STATE URL - dev * virtualbox Running tcp://192.168.99.104:2376 - $ docker-machine kill dev - $ docker-machine ls - NAME ACTIVE DRIVER STATE URL - dev * virtualbox Stopped diff --git a/vendor/github.com/docker/machine/docs/reference/ls.md b/vendor/github.com/docker/machine/docs/reference/ls.md deleted file mode 100644 index 70c8a593..00000000 --- a/vendor/github.com/docker/machine/docs/reference/ls.md +++ /dev/null @@ -1,108 +0,0 @@ - - -# ls - - Usage: docker-machine ls [OPTIONS] [arg...] - - List machines - - Options: - - --quiet, -q Enable quiet mode - --filter [--filter option --filter option] Filter output based on conditions provided - --timeout, -t "10" Timeout in seconds, default to 10s - --format, -f Pretty-print machines using a Go template - -## Timeout - -The `ls` command tries to reach each host in parallel. If a given host does not -answer in less than 10 seconds, the `ls` command will state that this host is in -`Timeout` state. In some circumstances (poor connection, high load, or while -troubleshooting), you may want to increase or decrease this value. You can use -the -t flag for this purpose with a numerical value in seconds. - -### Example - - $ docker-machine ls -t 12 - NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS - default - virtualbox Running tcp://192.168.99.100:2376 v1.9.1 - -## Filtering - -The filtering flag (`--filter`) format is a `key=value` pair. If there is more -than one filter, then pass multiple flags (e.g. `--filter "foo=bar" --filter "bif=baz"`) - -The currently supported filters are: - -- driver (driver name) -- swarm (swarm master's name) -- state (`Running|Paused|Saved|Stopped|Stopping|Starting|Error`) -- name (Machine name returned by driver, supports [golang style](https://github.com/google/re2/wiki/Syntax) regular expressions) -- label (Machine created with `--engine-label` option, can be filtered with `label=[=]`) - -### Examples - - $ docker-machine ls - NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS - dev - virtualbox Stopped - foo0 - virtualbox Running tcp://192.168.99.105:2376 v1.9.1 - foo1 - virtualbox Running tcp://192.168.99.106:2376 v1.9.1 - foo2 * virtualbox Running tcp://192.168.99.107:2376 v1.9.1 - - $ docker-machine ls --filter name=foo0 - NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS - foo0 - virtualbox Running tcp://192.168.99.105:2376 v1.9.1 - - $ docker-machine ls --filter driver=virtualbox --filter state=Stopped - NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS - dev - virtualbox Stopped v1.9.1 - - $ docker-machine ls --filter label=com.class.app=foo1 --filter label=com.class.app=foo2 - NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS - foo1 - virtualbox Running tcp://192.168.99.105:2376 v1.9.1 - foo2 * virtualbox Running tcp://192.168.99.107:2376 v1.9.1 - -## Formatting - -The formatting option (`--format`) will pretty-print machines using a Go template. - -Valid placeholders for the Go template are listed below: - -| Placeholder | Description | -| -------------- | ---------------------------------------- | -| .Name | Machine name | -| .Active | Is the machine active? | -| .ActiveHost | Is the machine an active non-swarm host? | -| .ActiveSwarm | Is the machine an active swarm master? | -| .DriverName | Driver name | -| .State | Machine state (running, stopped...) | -| .URL | Machine URL | -| .Swarm | Machine swarm name | -| .Error | Machine errors | -| .DockerVersion | Docker Daemon version | -| .ResponseTime | Time taken by the host to respond | - -When using the `--format` option, the `ls` command will either output the data exactly as the template declares or, -when using the table directive, will include column headers as well. - -The following example uses a template without headers and outputs the `Name` and `Driver` entries separated by a colon -for all running machines: - - $ docker-machine ls --format "{{.Name}}: {{.DriverName}}" - default: virtualbox - ec2: amazonec2 - -To list all machine names with their driver in a table format you can use: - - $ docker-machine ls --format "table {{.Name}} {{.DriverName}}" - NAME DRIVER - default virtualbox - ec2 amazonec2 diff --git a/vendor/github.com/docker/machine/docs/reference/provision.md b/vendor/github.com/docker/machine/docs/reference/provision.md deleted file mode 100644 index 82035b44..00000000 --- a/vendor/github.com/docker/machine/docs/reference/provision.md +++ /dev/null @@ -1,37 +0,0 @@ - - -# provision - -Re-run provisioning on a created machine. - -Sometimes it may be helpful to re-run Machine's provisioning process on a -created machine. Reasons for doing so may include a failure during the original -provisioning process, or a drift from the desired system state (including the -originally specified Swarm or Engine configuration). - -Usage is `docker-machine provision [name]`. Multiple names may be specified. - - $ docker-machine provision foo bar - Copying certs to the local machine directory... - Copying certs to the remote machine... - Setting Docker configuration on the remote daemon... - -The Machine provisioning process will: - -1. Set the hostname on the instance to the name Machine addresses it by (e.g. - `default`). -2. Install Docker if it is not present already. -3. Generate a set of certificates (usually with the default, self-signed CA) and - configure the daemon to accept connections over TLS. -4. Copy the generated certificates to the server and local config directory. -5. Configure the Docker Engine according to the options specified at create - time. -6. Configure and activate Swarm if applicable. diff --git a/vendor/github.com/docker/machine/docs/reference/regenerate-certs.md b/vendor/github.com/docker/machine/docs/reference/regenerate-certs.md deleted file mode 100644 index 52ba9284..00000000 --- a/vendor/github.com/docker/machine/docs/reference/regenerate-certs.md +++ /dev/null @@ -1,30 +0,0 @@ - - -# regenerate-certs - - Usage: docker-machine regenerate-certs [OPTIONS] [arg...] - - Regenerate TLS Certificates for a machine - - Description: - Argument(s) are one or more machine names. - - Options: - - --force, -f Force rebuild and do not prompt - -Regenerate TLS certificates and update the machine with new certs. - -For example: - - $ docker-machine regenerate-certs dev - Regenerate TLS machine certs? Warning: this is irreversible. (y/n): y - Regenerating TLS certificates diff --git a/vendor/github.com/docker/machine/docs/reference/restart.md b/vendor/github.com/docker/machine/docs/reference/restart.md deleted file mode 100644 index 013a04b7..00000000 --- a/vendor/github.com/docker/machine/docs/reference/restart.md +++ /dev/null @@ -1,26 +0,0 @@ - - -# restart - - Usage: docker-machine restart [arg...] - - Restart a machine - - Description: - Argument(s) are one or more machine names. - -Restart a machine. Oftentimes this is equivalent to -`docker-machine stop; docker-machine start`. But some cloud driver try to implement a clever restart which keeps the same -ip address. - - $ docker-machine restart dev - Waiting for VM to start... diff --git a/vendor/github.com/docker/machine/docs/reference/rm.md b/vendor/github.com/docker/machine/docs/reference/rm.md deleted file mode 100644 index 879ae6a1..00000000 --- a/vendor/github.com/docker/machine/docs/reference/rm.md +++ /dev/null @@ -1,67 +0,0 @@ - - -# rm - -Remove a machine. This will remove the local reference as well as delete it -on the cloud provider or virtualization management platform. - - $ docker-machine rm --help - - Usage: docker-machine rm [OPTIONS] [arg...] - - Remove a machine - - Description: - Argument(s) are one or more machine names. - - Options: - - --force, -f Remove local configuration even if machine cannot be removed, also implies an automatic yes (`-y`) - -y Assumes automatic yes to proceed with remove, without prompting further user confirmation - -## Examples - - $ docker-machine ls - NAME ACTIVE URL STATE URL SWARM DOCKER ERRORS - bar - virtualbox Running tcp://192.168.99.101:2376 v1.9.1 - baz - virtualbox Running tcp://192.168.99.103:2376 v1.9.1 - foo - virtualbox Running tcp://192.168.99.100:2376 v1.9.1 - qix - virtualbox Running tcp://192.168.99.102:2376 v1.9.1 - - - $ docker-machine rm baz - About to remove baz - Are you sure? (y/n): y - Successfully removed baz - - - $ docker-machine ls - NAME ACTIVE URL STATE URL SWARM DOCKER ERRORS - bar - virtualbox Running tcp://192.168.99.101:2376 v1.9.1 - foo - virtualbox Running tcp://192.168.99.100:2376 v1.9.1 - qix - virtualbox Running tcp://192.168.99.102:2376 v1.9.1 - - - $ docker-machine rm bar qix - About to remove bar, qix - Are you sure? (y/n): y - Successfully removed bar - Successfully removed qix - - - $ docker-machine ls - NAME ACTIVE URL STATE URL SWARM DOCKER ERRORS - foo - virtualbox Running tcp://192.168.99.100:2376 v1.9.1 - - $ docker-machine rm -y foo - About to remove foo - Successfully removed foo diff --git a/vendor/github.com/docker/machine/docs/reference/scp.md b/vendor/github.com/docker/machine/docs/reference/scp.md deleted file mode 100644 index d40c0f08..00000000 --- a/vendor/github.com/docker/machine/docs/reference/scp.md +++ /dev/null @@ -1,35 +0,0 @@ - - -# scp - -Copy files from your local host to a machine, from machine to machine, or from a -machine to your local host using `scp`. - -The notation is `machinename:/path/to/files` for the arguments; in the host -machine's case, you don't have to specify the name, just the path. - -Consider the following example: - - $ cat foo.txt - cat: foo.txt: No such file or directory - $ docker-machine ssh dev pwd - /home/docker - $ docker-machine ssh dev 'echo A file created remotely! >foo.txt' - $ docker-machine scp dev:/home/docker/foo.txt . - foo.txt 100% 28 0.0KB/s 00:00 - $ cat foo.txt - A file created remotely! - -Just like how `scp` has a `-r` flag for copying files recursively, -`docker-machine` has a `-r` flag for this feature. - -In the case of transferring files from machine to machine, they go through the -local host's filesystem first (using `scp`'s `-3` flag). diff --git a/vendor/github.com/docker/machine/docs/reference/ssh.md b/vendor/github.com/docker/machine/docs/reference/ssh.md deleted file mode 100644 index c95e2af4..00000000 --- a/vendor/github.com/docker/machine/docs/reference/ssh.md +++ /dev/null @@ -1,86 +0,0 @@ - - -# ssh - -Log into or run a command on a machine using SSH. - -To login, just run `docker-machine ssh machinename`: - - $ docker-machine ssh dev - ## . - ## ## ## == - ## ## ## ## === - /""""""""""""""""\___/ === - ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~ - \______ o __/ - \ \ __/ - \____\______/ - _ _ ____ _ _ - | |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __ - | '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__| - | |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ | - |_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_| - Boot2Docker version 1.4.0, build master : 69cf398 - Fri Dec 12 01:39:42 UTC 2014 - docker@boot2docker:~$ ls / - Users/ dev/ home/ lib/ mnt/ proc/ run/ sys/ usr/ - bin/ etc/ init linuxrc opt/ root/ sbin/ tmp var/ - -You can also specify commands to run remotely by appending them directly to the -`docker-machine ssh` command, much like the regular `ssh` program works: - - $ docker-machine ssh dev free - total used free shared buffers - Mem: 1023556 183136 840420 0 30920 - -/+ buffers: 152216 871340 - Swap: 1212036 0 1212036 - -Commands with flags will work as well: - - $ docker-machine ssh dev df -h - Filesystem Size Used Available Use% Mounted on - rootfs 899.6M 85.9M 813.7M 10% / - tmpfs 899.6M 85.9M 813.7M 10% / - tmpfs 499.8M 0 499.8M 0% /dev/shm - /dev/sda1 18.2G 58.2M 17.2G 0% /mnt/sda1 - cgroup 499.8M 0 499.8M 0% /sys/fs/cgroup - /dev/sda1 18.2G 58.2M 17.2G 0% - /mnt/sda1/var/lib/docker/aufs - -If you are using the "external" SSH type as detailed in the next section, you -can include additional arguments to pass through to the `ssh` binary in the -generated command (unless they conflict with any of the default arguments for -the command generated by Docker Machine). For instance, the following command -will forward port 8080 from the `default` machine to `localhost` on your host -computer: - - $ docker-machine ssh default -L 8080:localhost:8080 - -## Different types of SSH - -When Docker Machine is invoked, it will check to see if you have the venerable -`ssh` binary around locally and will attempt to use that for the SSH commands it -needs to run, whether they are a part of an operation such as creation or have -been requested by the user directly. If it does not find an external `ssh` -binary locally, it will default to using a native Go implementation from -[crypto/ssh](https://godoc.org/golang.org/x/crypto/ssh). This is useful in -situations where you may not have access to traditional UNIX tools, such as if -you are using Docker Machine on Windows without having msysgit installed -alongside of it. - -In most situations, you will not have to worry about this implementation detail -and Docker Machine will act sensibly out of the box. However, if you -deliberately want to use the Go native version, you can do so with a global -command line flag / environment variable like so: - - $ docker-machine --native-ssh ssh dev - -There are some variations in behavior between the two methods, so please report -any issues or inconsistencies if you come across them. diff --git a/vendor/github.com/docker/machine/docs/reference/start.md b/vendor/github.com/docker/machine/docs/reference/start.md deleted file mode 100644 index 9c8e2213..00000000 --- a/vendor/github.com/docker/machine/docs/reference/start.md +++ /dev/null @@ -1,24 +0,0 @@ - - -# start - - Usage: docker-machine start [arg...] - - Start a machine - - Description: - Argument(s) are one or more machine names. - -For example: - - $ docker-machine start dev - Starting VM... diff --git a/vendor/github.com/docker/machine/docs/reference/status.md b/vendor/github.com/docker/machine/docs/reference/status.md deleted file mode 100644 index 4e44e619..00000000 --- a/vendor/github.com/docker/machine/docs/reference/status.md +++ /dev/null @@ -1,23 +0,0 @@ - - -# status - - Usage: docker-machine status [arg...] - - Get the status of a machine - - Description: - Argument is a machine name. - -For example: - - $ docker-machine status dev - Running diff --git a/vendor/github.com/docker/machine/docs/reference/stop.md b/vendor/github.com/docker/machine/docs/reference/stop.md deleted file mode 100644 index 1d4fb25e..00000000 --- a/vendor/github.com/docker/machine/docs/reference/stop.md +++ /dev/null @@ -1,29 +0,0 @@ - - -# stop - - Usage: docker-machine stop [arg...] - - Gracefully Stop a machine - - Description: - Argument(s) are one or more machine names. - -For example: - - $ docker-machine ls - NAME ACTIVE DRIVER STATE URL - dev * virtualbox Running tcp://192.168.99.104:2376 - $ docker-machine stop dev - $ docker-machine ls - NAME ACTIVE DRIVER STATE URL - dev * virtualbox Stopped diff --git a/vendor/github.com/docker/machine/docs/reference/upgrade.md b/vendor/github.com/docker/machine/docs/reference/upgrade.md deleted file mode 100644 index c847535c..00000000 --- a/vendor/github.com/docker/machine/docs/reference/upgrade.md +++ /dev/null @@ -1,33 +0,0 @@ - - -# upgrade - -Upgrade a machine to the latest version of Docker. How this upgrade happens -depends on the underlying distribution used on the created instance. - -For example, if the machine uses Ubuntu as the underlying operating system, it -will run a command similar to `sudo apt-get upgrade docker-engine`, because -Machine expects Ubuntu machines it manages to use this package. As another -example, if the machine uses boot2docker for its OS, this command will download -the latest boot2docker ISO and replace the machine's existing ISO with the -latest. - - $ docker-machine upgrade default - Stopping machine to do the upgrade... - Upgrading machine default... - Downloading latest boot2docker release to /home/username/.docker/machine/cache/boot2docker.iso... - Starting machine back up... - Waiting for VM to start... - -> **Note**: If you are using a custom boot2docker ISO specified using -> `--virtualbox-boot2docker-url` or an equivalent flag, running an upgrade on -> that machine will completely replace the specified ISO with the latest -> "vanilla" boot2docker ISO available. diff --git a/vendor/github.com/docker/machine/docs/reference/url.md b/vendor/github.com/docker/machine/docs/reference/url.md deleted file mode 100644 index d9fc2e2a..00000000 --- a/vendor/github.com/docker/machine/docs/reference/url.md +++ /dev/null @@ -1,16 +0,0 @@ - - -# url - -Get the URL of a host - - $ docker-machine url dev - tcp://192.168.99.109:2376 diff --git a/vendor/github.com/docker/machine/drivers/amazonec2/amazonec2.go b/vendor/github.com/docker/machine/drivers/amazonec2/amazonec2.go deleted file mode 100644 index 7be314a8..00000000 --- a/vendor/github.com/docker/machine/drivers/amazonec2/amazonec2.go +++ /dev/null @@ -1,1074 +0,0 @@ -package amazonec2 - -import ( - "crypto/md5" - "crypto/rand" - "errors" - "fmt" - "io" - "io/ioutil" - "net" - "net/url" - "strconv" - "strings" - "time" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/awserr" - "github.com/aws/aws-sdk-go/aws/session" - "github.com/aws/aws-sdk-go/service/ec2" - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnflag" - "github.com/docker/machine/libmachine/mcnutils" - "github.com/docker/machine/libmachine/ssh" - "github.com/docker/machine/libmachine/state" -) - -const ( - driverName = "amazonec2" - ipRange = "0.0.0.0/0" - machineSecurityGroupName = "docker-machine" - defaultAmiId = "ami-615cb725" - defaultRegion = "us-east-1" - defaultInstanceType = "t2.micro" - defaultDeviceName = "/dev/sda1" - defaultRootSize = 16 - defaultVolumeType = "gp2" - defaultZone = "a" - defaultSecurityGroup = machineSecurityGroupName - defaultSSHUser = "ubuntu" - defaultSpotPrice = "0.50" -) - -const ( - keypairNotFoundCode = "InvalidKeyPair.NotFound" -) - -var ( - dockerPort = 2376 - swarmPort = 3376 - errorMissingAccessKeyOption = errors.New("amazonec2 driver requires the --amazonec2-access-key option or proper credentials in ~/.aws/credentials") - errorMissingSecretKeyOption = errors.New("amazonec2 driver requires the --amazonec2-secret-key option or proper credentials in ~/.aws/credentials") - errorNoVPCIdFound = errors.New("amazonec2 driver requires either the --amazonec2-subnet-id or --amazonec2-vpc-id option or an AWS Account with a default vpc-id") -) - -type Driver struct { - *drivers.BaseDriver - clientFactory func() Ec2Client - awsCredentials awsCredentials - Id string - AccessKey string - SecretKey string - SessionToken string - Region string - AMI string - SSHKeyID int - KeyName string - InstanceId string - InstanceType string - PrivateIPAddress string - - // NB: SecurityGroupId expanded from single value to slice on 26 Feb 2016 - we maintain both for host storage backwards compatibility. - SecurityGroupId string - SecurityGroupIds []string - - // NB: SecurityGroupName expanded from single value to slice on 26 Feb 2016 - we maintain both for host storage backwards compatibility. - SecurityGroupName string - SecurityGroupNames []string - - Tags string - ReservationId string - DeviceName string - RootSize int64 - VolumeType string - IamInstanceProfile string - VpcId string - SubnetId string - Zone string - keyPath string - RequestSpotInstance bool - SpotPrice string - PrivateIPOnly bool - UsePrivateIP bool - UseEbsOptimizedInstance bool - Monitoring bool - SSHPrivateKeyPath string - RetryCount int -} - -type clientFactory interface { - build(d *Driver) Ec2Client -} - -func (d *Driver) GetCreateFlags() []mcnflag.Flag { - return []mcnflag.Flag{ - mcnflag.StringFlag{ - Name: "amazonec2-access-key", - Usage: "AWS Access Key", - EnvVar: "AWS_ACCESS_KEY_ID", - }, - mcnflag.StringFlag{ - Name: "amazonec2-secret-key", - Usage: "AWS Secret Key", - EnvVar: "AWS_SECRET_ACCESS_KEY", - }, - mcnflag.StringFlag{ - Name: "amazonec2-session-token", - Usage: "AWS Session Token", - EnvVar: "AWS_SESSION_TOKEN", - }, - mcnflag.StringFlag{ - Name: "amazonec2-ami", - Usage: "AWS machine image", - EnvVar: "AWS_AMI", - }, - mcnflag.StringFlag{ - Name: "amazonec2-region", - Usage: "AWS region", - Value: defaultRegion, - EnvVar: "AWS_DEFAULT_REGION", - }, - mcnflag.StringFlag{ - Name: "amazonec2-vpc-id", - Usage: "AWS VPC id", - EnvVar: "AWS_VPC_ID", - }, - mcnflag.StringFlag{ - Name: "amazonec2-zone", - Usage: "AWS zone for instance (i.e. a,b,c,d,e)", - Value: defaultZone, - EnvVar: "AWS_ZONE", - }, - mcnflag.StringFlag{ - Name: "amazonec2-subnet-id", - Usage: "AWS VPC subnet id", - EnvVar: "AWS_SUBNET_ID", - }, - mcnflag.StringSliceFlag{ - Name: "amazonec2-security-group", - Usage: "AWS VPC security group", - Value: []string{defaultSecurityGroup}, - EnvVar: "AWS_SECURITY_GROUP", - }, - mcnflag.StringFlag{ - Name: "amazonec2-tags", - Usage: "AWS Tags (e.g. key1,value1,key2,value2)", - EnvVar: "AWS_TAGS", - }, - mcnflag.StringFlag{ - Name: "amazonec2-instance-type", - Usage: "AWS instance type", - Value: defaultInstanceType, - EnvVar: "AWS_INSTANCE_TYPE", - }, - mcnflag.StringFlag{ - Name: "amazonec2-device-name", - Usage: "AWS root device name", - Value: defaultDeviceName, - EnvVar: "AWS_DEVICE_NAME", - }, - mcnflag.IntFlag{ - Name: "amazonec2-root-size", - Usage: "AWS root disk size (in GB)", - Value: defaultRootSize, - EnvVar: "AWS_ROOT_SIZE", - }, - mcnflag.StringFlag{ - Name: "amazonec2-volume-type", - Usage: "Amazon EBS volume type", - Value: defaultVolumeType, - EnvVar: "AWS_VOLUME_TYPE", - }, - mcnflag.StringFlag{ - Name: "amazonec2-iam-instance-profile", - Usage: "AWS IAM Instance Profile", - EnvVar: "AWS_INSTANCE_PROFILE", - }, - mcnflag.StringFlag{ - Name: "amazonec2-ssh-user", - Usage: "Set the name of the ssh user", - Value: defaultSSHUser, - EnvVar: "AWS_SSH_USER", - }, - mcnflag.BoolFlag{ - Name: "amazonec2-request-spot-instance", - Usage: "Set this flag to request spot instance", - }, - mcnflag.StringFlag{ - Name: "amazonec2-spot-price", - Usage: "AWS spot instance bid price (in dollar)", - Value: defaultSpotPrice, - }, - mcnflag.BoolFlag{ - Name: "amazonec2-private-address-only", - Usage: "Only use a private IP address", - }, - mcnflag.BoolFlag{ - Name: "amazonec2-use-private-address", - Usage: "Force the usage of private IP address", - }, - mcnflag.BoolFlag{ - Name: "amazonec2-monitoring", - Usage: "Set this flag to enable CloudWatch monitoring", - }, - mcnflag.BoolFlag{ - Name: "amazonec2-use-ebs-optimized-instance", - Usage: "Create an EBS optimized instance", - }, - mcnflag.StringFlag{ - Name: "amazonec2-ssh-keypath", - Usage: "SSH Key for Instance", - EnvVar: "AWS_SSH_KEYPATH", - }, - mcnflag.IntFlag{ - Name: "amazonec2-retries", - Usage: "Set retry count for recoverable failures (use -1 to disable)", - Value: 5, - }, - } -} - -func NewDriver(hostName, storePath string) *Driver { - id := generateId() - driver := &Driver{ - Id: id, - AMI: defaultAmiId, - Region: defaultRegion, - InstanceType: defaultInstanceType, - RootSize: defaultRootSize, - Zone: defaultZone, - SecurityGroupNames: []string{defaultSecurityGroup}, - SpotPrice: defaultSpotPrice, - BaseDriver: &drivers.BaseDriver{ - SSHUser: defaultSSHUser, - MachineName: hostName, - StorePath: storePath, - }, - awsCredentials: &defaultAWSCredentials{}, - } - - driver.clientFactory = driver.buildClient - - return driver -} - -func (d *Driver) buildClient() Ec2Client { - config := aws.NewConfig() - alogger := AwsLogger() - config = config.WithRegion(d.Region) - config = config.WithCredentials(d.awsCredentials.NewStaticCredentials(d.AccessKey, d.SecretKey, d.SessionToken)) - config = config.WithLogger(alogger) - config = config.WithLogLevel(aws.LogDebugWithHTTPBody) - config = config.WithMaxRetries(d.RetryCount) - return ec2.New(session.New(config)) -} - -func (d *Driver) getClient() Ec2Client { - return d.clientFactory() -} - -func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error { - region, err := validateAwsRegion(flags.String("amazonec2-region")) - if err != nil { - return err - } - - image := flags.String("amazonec2-ami") - if len(image) == 0 { - image = regionDetails[region].AmiId - } - - d.AccessKey = flags.String("amazonec2-access-key") - d.SecretKey = flags.String("amazonec2-secret-key") - d.SessionToken = flags.String("amazonec2-session-token") - d.Region = region - d.AMI = image - d.RequestSpotInstance = flags.Bool("amazonec2-request-spot-instance") - d.SpotPrice = flags.String("amazonec2-spot-price") - d.InstanceType = flags.String("amazonec2-instance-type") - d.VpcId = flags.String("amazonec2-vpc-id") - d.SubnetId = flags.String("amazonec2-subnet-id") - d.SecurityGroupNames = flags.StringSlice("amazonec2-security-group") - d.Tags = flags.String("amazonec2-tags") - zone := flags.String("amazonec2-zone") - d.Zone = zone[:] - d.DeviceName = flags.String("amazonec2-device-name") - d.RootSize = int64(flags.Int("amazonec2-root-size")) - d.VolumeType = flags.String("amazonec2-volume-type") - d.IamInstanceProfile = flags.String("amazonec2-iam-instance-profile") - d.SSHUser = flags.String("amazonec2-ssh-user") - d.SSHPort = 22 - d.PrivateIPOnly = flags.Bool("amazonec2-private-address-only") - d.UsePrivateIP = flags.Bool("amazonec2-use-private-address") - d.Monitoring = flags.Bool("amazonec2-monitoring") - d.UseEbsOptimizedInstance = flags.Bool("amazonec2-use-ebs-optimized-instance") - d.SSHPrivateKeyPath = flags.String("amazonec2-ssh-keypath") - d.SetSwarmConfigFromFlags(flags) - d.RetryCount = flags.Int("amazonec2-retries") - - if d.AccessKey == "" && d.SecretKey == "" { - credentials, err := d.awsCredentials.NewSharedCredentials("", "").Get() - if err != nil { - log.Debug("Could not load credentials from ~/.aws/credentials") - } else { - log.Debug("Successfully loaded credentials from ~/.aws/credentials") - d.AccessKey = credentials.AccessKeyID - d.SecretKey = credentials.SecretAccessKey - d.SessionToken = credentials.SessionToken - } - } - - if d.AccessKey == "" { - return errorMissingAccessKeyOption - } - - if d.SecretKey == "" { - return errorMissingSecretKeyOption - } - - if d.VpcId == "" { - d.VpcId, err = d.getDefaultVPCId() - if err != nil { - log.Warnf("Couldn't determine your account Default VPC ID : %q", err) - } - } - - if d.SubnetId == "" && d.VpcId == "" { - return errorNoVPCIdFound - } - - if d.SubnetId != "" && d.VpcId != "" { - subnetFilter := []*ec2.Filter{ - { - Name: aws.String("subnet-id"), - Values: []*string{&d.SubnetId}, - }, - } - - subnets, err := d.getClient().DescribeSubnets(&ec2.DescribeSubnetsInput{ - Filters: subnetFilter, - }) - if err != nil { - return err - } - - if *subnets.Subnets[0].VpcId != d.VpcId { - return fmt.Errorf("SubnetId: %s does not belong to VpcId: %s", d.SubnetId, d.VpcId) - } - } - - if d.isSwarmMaster() { - u, err := url.Parse(d.SwarmHost) - if err != nil { - return fmt.Errorf("error parsing swarm host: %s", err) - } - - parts := strings.Split(u.Host, ":") - port, err := strconv.Atoi(parts[1]) - if err != nil { - return err - } - - swarmPort = port - } - - return nil -} - -// DriverName returns the name of the driver -func (d *Driver) DriverName() string { - return driverName -} - -func (d *Driver) checkPrereqs() error { - // check for existing keypair - key, err := d.getClient().DescribeKeyPairs(&ec2.DescribeKeyPairsInput{ - KeyNames: []*string{&d.MachineName}, - }) - if err != nil { - if awsErr, ok := err.(awserr.Error); ok && awsErr.Code() == keypairNotFoundCode { - // Not a real error for 'NotFound' since we're checking existance anyways - } else { - return err - } - } - - if err == nil && len(key.KeyPairs) != 0 { - return fmt.Errorf("There is already a keypair with the name %s. Please either remove that keypair or use a different machine name.", d.MachineName) - } - - regionZone := d.Region + d.Zone - if d.SubnetId == "" { - filters := []*ec2.Filter{ - { - Name: aws.String("availability-zone"), - Values: []*string{®ionZone}, - }, - { - Name: aws.String("vpc-id"), - Values: []*string{&d.VpcId}, - }, - } - - subnets, err := d.getClient().DescribeSubnets(&ec2.DescribeSubnetsInput{ - Filters: filters, - }) - if err != nil { - return err - } - - if len(subnets.Subnets) == 0 { - return fmt.Errorf("unable to find a subnet in the zone: %s", regionZone) - } - - d.SubnetId = *subnets.Subnets[0].SubnetId - - // try to find default - if len(subnets.Subnets) > 1 { - for _, subnet := range subnets.Subnets { - if *subnet.DefaultForAz { - d.SubnetId = *subnet.SubnetId - break - } - } - } - } - - return nil -} - -func (d *Driver) PreCreateCheck() error { - return d.checkPrereqs() -} - -func (d *Driver) instanceIpAvailable() bool { - ip, err := d.GetIP() - if err != nil { - log.Debug(err) - } - if ip != "" { - d.IPAddress = ip - log.Debugf("Got the IP Address, it's %q", d.IPAddress) - return true - } - return false -} - -func makePointerSlice(stackSlice []string) []*string { - pointerSlice := []*string{} - for i := range stackSlice { - pointerSlice = append(pointerSlice, &stackSlice[i]) - } - return pointerSlice -} - -// Support migrating single string Driver fields to slices. -func migrateStringToSlice(value string, values []string) (result []string) { - if value != "" { - result = append(result, value) - } - result = append(result, values...) - return -} - -func (d *Driver) securityGroupNames() (ids []string) { - return migrateStringToSlice(d.SecurityGroupName, d.SecurityGroupNames) -} - -func (d *Driver) securityGroupIds() (ids []string) { - return migrateStringToSlice(d.SecurityGroupId, d.SecurityGroupIds) -} - -func (d *Driver) Create() error { - if err := d.checkPrereqs(); err != nil { - return err - } - - log.Infof("Launching instance...") - - if err := d.createKeyPair(); err != nil { - return fmt.Errorf("unable to create key pair: %s", err) - } - - if err := d.configureSecurityGroups(d.securityGroupNames()); err != nil { - return err - } - - bdm := &ec2.BlockDeviceMapping{ - DeviceName: aws.String(d.DeviceName), - Ebs: &ec2.EbsBlockDevice{ - VolumeSize: aws.Int64(d.RootSize), - VolumeType: aws.String(d.VolumeType), - DeleteOnTermination: aws.Bool(true), - }, - } - netSpecs := []*ec2.InstanceNetworkInterfaceSpecification{{ - DeviceIndex: aws.Int64(0), // eth0 - Groups: makePointerSlice(d.securityGroupIds()), - SubnetId: &d.SubnetId, - AssociatePublicIpAddress: aws.Bool(!d.PrivateIPOnly), - }} - - regionZone := d.Region + d.Zone - log.Debugf("launching instance in subnet %s", d.SubnetId) - - var instance *ec2.Instance - - if d.RequestSpotInstance { - spotInstanceRequest, err := d.getClient().RequestSpotInstances(&ec2.RequestSpotInstancesInput{ - LaunchSpecification: &ec2.RequestSpotLaunchSpecification{ - ImageId: &d.AMI, - Placement: &ec2.SpotPlacement{ - AvailabilityZone: ®ionZone, - }, - KeyName: &d.KeyName, - InstanceType: &d.InstanceType, - NetworkInterfaces: netSpecs, - Monitoring: &ec2.RunInstancesMonitoringEnabled{Enabled: aws.Bool(d.Monitoring)}, - IamInstanceProfile: &ec2.IamInstanceProfileSpecification{ - Name: &d.IamInstanceProfile, - }, - EbsOptimized: &d.UseEbsOptimizedInstance, - BlockDeviceMappings: []*ec2.BlockDeviceMapping{bdm}, - }, - InstanceCount: aws.Int64(1), - SpotPrice: &d.SpotPrice, - }) - if err != nil { - return fmt.Errorf("Error request spot instance: %s", err) - } - - log.Info("Waiting for spot instance...") - err = d.getClient().WaitUntilSpotInstanceRequestFulfilled(&ec2.DescribeSpotInstanceRequestsInput{ - SpotInstanceRequestIds: []*string{spotInstanceRequest.SpotInstanceRequests[0].SpotInstanceRequestId}, - }) - if err != nil { - return fmt.Errorf("Error fulfilling spot request: %v", err) - } - log.Info("Created spot instance request %v", *spotInstanceRequest.SpotInstanceRequests[0].SpotInstanceRequestId) - // resolve instance id - for i := 0; i < 3; i++ { - // Even though the waiter succeeded, eventual consistency means we could - // get a describe output that does not include this information. Try a - // few times just in case - var resolvedSpotInstance *ec2.DescribeSpotInstanceRequestsOutput - resolvedSpotInstance, err = d.getClient().DescribeSpotInstanceRequests(&ec2.DescribeSpotInstanceRequestsInput{ - SpotInstanceRequestIds: []*string{spotInstanceRequest.SpotInstanceRequests[0].SpotInstanceRequestId}, - }) - if err != nil { - // Unexpected; no need to retry - return fmt.Errorf("Error describing previously made spot instance request: %v", err) - } - maybeInstanceId := resolvedSpotInstance.SpotInstanceRequests[0].InstanceId - if maybeInstanceId != nil { - var instances *ec2.DescribeInstancesOutput - instances, err = d.getClient().DescribeInstances(&ec2.DescribeInstancesInput{ - InstanceIds: []*string{maybeInstanceId}, - }) - if err != nil { - // Retry if we get an id from spot instance but EC2 doesn't recognize it yet; see above, eventual consistency possible - continue - } - instance = instances.Reservations[0].Instances[0] - err = nil - break - } - time.Sleep(5 * time.Second) - } - - if err != nil { - return fmt.Errorf("Error resolving spot instance to real instance: %v", err) - } - } else { - inst, err := d.getClient().RunInstances(&ec2.RunInstancesInput{ - ImageId: &d.AMI, - MinCount: aws.Int64(1), - MaxCount: aws.Int64(1), - Placement: &ec2.Placement{ - AvailabilityZone: ®ionZone, - }, - KeyName: &d.KeyName, - InstanceType: &d.InstanceType, - NetworkInterfaces: netSpecs, - Monitoring: &ec2.RunInstancesMonitoringEnabled{Enabled: aws.Bool(d.Monitoring)}, - IamInstanceProfile: &ec2.IamInstanceProfileSpecification{ - Name: &d.IamInstanceProfile, - }, - EbsOptimized: &d.UseEbsOptimizedInstance, - BlockDeviceMappings: []*ec2.BlockDeviceMapping{bdm}, - }) - - if err != nil { - return fmt.Errorf("Error launching instance: %s", err) - } - instance = inst.Instances[0] - } - - d.InstanceId = *instance.InstanceId - - log.Debug("waiting for ip address to become available") - if err := mcnutils.WaitFor(d.instanceIpAvailable); err != nil { - return err - } - - if instance.PrivateIpAddress != nil { - d.PrivateIPAddress = *instance.PrivateIpAddress - } - - d.waitForInstance() - - log.Debugf("created instance ID %s, IP address %s, Private IP address %s", - d.InstanceId, - d.IPAddress, - d.PrivateIPAddress, - ) - - log.Debug("Settings tags for instance") - err := d.configureTags(d.Tags) - - if err != nil { - return fmt.Errorf("Unable to tag instance %s: %s", d.InstanceId, err) - } - - return nil -} - -func (d *Driver) GetURL() (string, error) { - if err := drivers.MustBeRunning(d); err != nil { - return "", err - } - - ip, err := d.GetIP() - if err != nil { - return "", err - } - if ip == "" { - return "", nil - } - - return fmt.Sprintf("tcp://%s", net.JoinHostPort(ip, strconv.Itoa(dockerPort))), nil -} - -func (d *Driver) GetIP() (string, error) { - inst, err := d.getInstance() - if err != nil { - return "", err - } - - if d.PrivateIPOnly { - if inst.PrivateIpAddress == nil { - return "", fmt.Errorf("No private IP for instance %v", *inst.InstanceId) - } - return *inst.PrivateIpAddress, nil - } - - if d.UsePrivateIP { - if inst.PrivateIpAddress == nil { - return "", fmt.Errorf("No private IP for instance %v", *inst.InstanceId) - } - return *inst.PrivateIpAddress, nil - } - - if inst.PublicIpAddress == nil { - return "", fmt.Errorf("No IP for instance %v", *inst.InstanceId) - } - return *inst.PublicIpAddress, nil -} - -func (d *Driver) GetState() (state.State, error) { - inst, err := d.getInstance() - if err != nil { - return state.Error, err - } - switch *inst.State.Name { - case ec2.InstanceStateNamePending: - return state.Starting, nil - case ec2.InstanceStateNameRunning: - return state.Running, nil - case ec2.InstanceStateNameStopping: - return state.Stopping, nil - case ec2.InstanceStateNameShuttingDown: - return state.Stopping, nil - case ec2.InstanceStateNameStopped: - return state.Stopped, nil - case ec2.InstanceStateNameTerminated: - return state.Error, nil - default: - log.Warnf("unrecognized instance state: %v", *inst.State.Name) - return state.Error, nil - } -} - -func (d *Driver) GetSSHHostname() (string, error) { - // TODO: use @nathanleclaire retry func here (ehazlett) - return d.GetIP() -} - -func (d *Driver) GetSSHUsername() string { - if d.SSHUser == "" { - d.SSHUser = defaultSSHUser - } - - return d.SSHUser -} - -func (d *Driver) Start() error { - _, err := d.getClient().StartInstances(&ec2.StartInstancesInput{ - InstanceIds: []*string{&d.InstanceId}, - }) - if err != nil { - return err - } - - return d.waitForInstance() -} - -func (d *Driver) Stop() error { - _, err := d.getClient().StopInstances(&ec2.StopInstancesInput{ - InstanceIds: []*string{&d.InstanceId}, - Force: aws.Bool(false), - }) - return err -} - -func (d *Driver) Restart() error { - _, err := d.getClient().RebootInstances(&ec2.RebootInstancesInput{ - InstanceIds: []*string{&d.InstanceId}, - }) - return err -} - -func (d *Driver) Kill() error { - _, err := d.getClient().StopInstances(&ec2.StopInstancesInput{ - InstanceIds: []*string{&d.InstanceId}, - Force: aws.Bool(true), - }) - return err -} - -func (d *Driver) Remove() error { - multierr := mcnutils.MultiError{ - Errs: []error{}, - } - - if err := d.terminate(); err != nil { - multierr.Errs = append(multierr.Errs, err) - } - - if err := d.deleteKeyPair(); err != nil { - multierr.Errs = append(multierr.Errs, err) - } - - if len(multierr.Errs) == 0 { - return nil - } - - return multierr -} - -func (d *Driver) getInstance() (*ec2.Instance, error) { - instances, err := d.getClient().DescribeInstances(&ec2.DescribeInstancesInput{ - InstanceIds: []*string{&d.InstanceId}, - }) - if err != nil { - return nil, err - } - return instances.Reservations[0].Instances[0], nil -} - -func (d *Driver) instanceIsRunning() bool { - st, err := d.GetState() - if err != nil { - log.Debug(err) - } - if st == state.Running { - return true - } - return false -} - -func (d *Driver) waitForInstance() error { - if err := mcnutils.WaitFor(d.instanceIsRunning); err != nil { - return err - } - - return nil -} - -func (d *Driver) createKeyPair() error { - - keyPath := "" - - if d.SSHPrivateKeyPath == "" { - log.Debugf("Creating New SSH Key") - if err := ssh.GenerateSSHKey(d.GetSSHKeyPath()); err != nil { - return err - } - keyPath = d.GetSSHKeyPath() - } else { - log.Debugf("Using ExistingKeyPair: %s", d.SSHPrivateKeyPath) - if err := mcnutils.CopyFile(d.SSHPrivateKeyPath, d.GetSSHKeyPath()); err != nil { - return err - } - if err := mcnutils.CopyFile(d.SSHPrivateKeyPath+".pub", d.GetSSHKeyPath()+".pub"); err != nil { - return err - } - keyPath = d.SSHPrivateKeyPath - } - - publicKey, err := ioutil.ReadFile(keyPath + ".pub") - if err != nil { - return err - } - - keyName := d.MachineName - - log.Debugf("creating key pair: %s", keyName) - _, err = d.getClient().ImportKeyPair(&ec2.ImportKeyPairInput{ - KeyName: &keyName, - PublicKeyMaterial: publicKey, - }) - if err != nil { - return err - } - d.KeyName = keyName - return nil -} - -func (d *Driver) terminate() error { - if d.InstanceId == "" { - return fmt.Errorf("unknown instance") - } - - log.Debugf("terminating instance: %s", d.InstanceId) - _, err := d.getClient().TerminateInstances(&ec2.TerminateInstancesInput{ - InstanceIds: []*string{&d.InstanceId}, - }) - if err != nil { - return fmt.Errorf("unable to terminate instance: %s", err) - } - return nil -} - -func (d *Driver) isSwarmMaster() bool { - return d.SwarmMaster -} - -func (d *Driver) securityGroupAvailableFunc(id string) func() bool { - return func() bool { - - securityGroup, err := d.getClient().DescribeSecurityGroups(&ec2.DescribeSecurityGroupsInput{ - GroupIds: []*string{&id}, - }) - if err == nil && len(securityGroup.SecurityGroups) > 0 { - return true - } else if err == nil { - log.Debugf("No security group with id %v found", id) - return false - } - log.Debug(err) - return false - } -} - -func (d *Driver) configureTags(tagGroups string) error { - - tags := []*ec2.Tag{} - tags = append(tags, &ec2.Tag{ - Key: aws.String("Name"), - Value: &d.MachineName, - }) - - if tagGroups != "" { - t := strings.Split(tagGroups, ",") - if len(t) > 0 && len(t)%2 != 0 { - log.Warnf("Tags are not key value in pairs. %d elements found", len(t)) - } - for i := 0; i < len(t)-1; i += 2 { - tags = append(tags, &ec2.Tag{ - Key: &t[i], - Value: &t[i+1], - }) - } - } - - _, err := d.getClient().CreateTags(&ec2.CreateTagsInput{ - Resources: []*string{&d.InstanceId}, - Tags: tags, - }) - - if err != nil { - return err - } - - return nil -} - -func (d *Driver) configureSecurityGroups(groupNames []string) error { - if len(groupNames) == 0 { - log.Debugf("no security groups to configure in %s", d.VpcId) - return nil - } - - log.Debugf("configuring security groups in %s", d.VpcId) - - filters := []*ec2.Filter{ - { - Name: aws.String("group-name"), - Values: makePointerSlice(groupNames), - }, - { - Name: aws.String("vpc-id"), - Values: []*string{&d.VpcId}, - }, - } - groups, err := d.getClient().DescribeSecurityGroups(&ec2.DescribeSecurityGroupsInput{ - Filters: filters, - }) - if err != nil { - return err - } - - var groupsByName = make(map[string]*ec2.SecurityGroup) - for _, securityGroup := range groups.SecurityGroups { - groupsByName[*securityGroup.GroupName] = securityGroup - } - - for _, groupName := range groupNames { - var group *ec2.SecurityGroup - securityGroup, ok := groupsByName[groupName] - if ok { - log.Debugf("found existing security group (%s) in %s", groupName, d.VpcId) - group = securityGroup - } else { - log.Debugf("creating security group (%s) in %s", groupName, d.VpcId) - groupResp, err := d.getClient().CreateSecurityGroup(&ec2.CreateSecurityGroupInput{ - GroupName: aws.String(groupName), - Description: aws.String("Docker Machine"), - VpcId: aws.String(d.VpcId), - }) - if err != nil { - return err - } - // Manually translate into the security group construct - group = &ec2.SecurityGroup{ - GroupId: groupResp.GroupId, - VpcId: aws.String(d.VpcId), - GroupName: aws.String(groupName), - } - // wait until created (dat eventual consistency) - log.Debugf("waiting for group (%s) to become available", *group.GroupId) - if err := mcnutils.WaitFor(d.securityGroupAvailableFunc(*group.GroupId)); err != nil { - return err - } - } - d.SecurityGroupIds = append(d.SecurityGroupIds, *group.GroupId) - - perms := d.configureSecurityGroupPermissions(group) - - if len(perms) != 0 { - log.Debugf("authorizing group %s with permissions: %v", groupNames, perms) - _, err := d.getClient().AuthorizeSecurityGroupIngress(&ec2.AuthorizeSecurityGroupIngressInput{ - GroupId: group.GroupId, - IpPermissions: perms, - }) - if err != nil { - return err - } - } - } - - return nil -} - -func (d *Driver) configureSecurityGroupPermissions(group *ec2.SecurityGroup) []*ec2.IpPermission { - hasSshPort := false - hasDockerPort := false - hasSwarmPort := false - for _, p := range group.IpPermissions { - if p.FromPort != nil { - switch *p.FromPort { - case 22: - hasSshPort = true - case int64(dockerPort): - hasDockerPort = true - case int64(swarmPort): - hasSwarmPort = true - } - } - } - - perms := []*ec2.IpPermission{} - - if !hasSshPort { - perms = append(perms, &ec2.IpPermission{ - IpProtocol: aws.String("tcp"), - FromPort: aws.Int64(22), - ToPort: aws.Int64(22), - IpRanges: []*ec2.IpRange{{CidrIp: aws.String(ipRange)}}, - }) - } - - if !hasDockerPort { - perms = append(perms, &ec2.IpPermission{ - IpProtocol: aws.String("tcp"), - FromPort: aws.Int64(int64(dockerPort)), - ToPort: aws.Int64(int64(dockerPort)), - IpRanges: []*ec2.IpRange{{CidrIp: aws.String(ipRange)}}, - }) - } - - if !hasSwarmPort && d.SwarmMaster { - perms = append(perms, &ec2.IpPermission{ - IpProtocol: aws.String("tcp"), - FromPort: aws.Int64(int64(swarmPort)), - ToPort: aws.Int64(int64(swarmPort)), - IpRanges: []*ec2.IpRange{{CidrIp: aws.String(ipRange)}}, - }) - } - - log.Debugf("configuring security group authorization for %s", ipRange) - - return perms -} - -func (d *Driver) deleteKeyPair() error { - log.Debugf("deleting key pair: %s", d.KeyName) - - _, err := d.getClient().DeleteKeyPair(&ec2.DeleteKeyPairInput{ - KeyName: &d.KeyName, - }) - if err != nil { - return err - } - - return nil -} - -func (d *Driver) getDefaultVPCId() (string, error) { - output, err := d.getClient().DescribeAccountAttributes(&ec2.DescribeAccountAttributesInput{}) - if err != nil { - return "", err - } - - for _, attribute := range output.AccountAttributes { - if *attribute.AttributeName == "default-vpc" { - return *attribute.AttributeValues[0].AttributeValue, nil - } - } - - return "", errors.New("No default-vpc attribute") -} - -func generateId() string { - rb := make([]byte, 10) - _, err := rand.Read(rb) - if err != nil { - log.Warnf("Unable to generate id: %s", err) - } - - h := md5.New() - io.WriteString(h, string(rb)) - return fmt.Sprintf("%x", h.Sum(nil)) -} diff --git a/vendor/github.com/docker/machine/drivers/amazonec2/amazonec2_test.go b/vendor/github.com/docker/machine/drivers/amazonec2/amazonec2_test.go deleted file mode 100644 index 8206b529..00000000 --- a/vendor/github.com/docker/machine/drivers/amazonec2/amazonec2_test.go +++ /dev/null @@ -1,423 +0,0 @@ -package amazonec2 - -import ( - "testing" - - "errors" - "reflect" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/ec2" - "github.com/docker/machine/commands/commandstest" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/mock" -) - -const ( - testSSHPort = int64(22) - testDockerPort = int64(2376) - testSwarmPort = int64(3376) -) - -var ( - securityGroup = &ec2.SecurityGroup{ - GroupName: aws.String("test-group"), - GroupId: aws.String("12345"), - VpcId: aws.String("12345"), - } -) - -func TestConfigureSecurityGroupPermissionsEmpty(t *testing.T) { - driver := NewTestDriver() - - perms := driver.configureSecurityGroupPermissions(securityGroup) - - assert.Len(t, perms, 2) -} - -func TestConfigureSecurityGroupPermissionsSshOnly(t *testing.T) { - driver := NewTestDriver() - group := securityGroup - group.IpPermissions = []*ec2.IpPermission{ - { - IpProtocol: aws.String("tcp"), - FromPort: aws.Int64(int64(testSSHPort)), - ToPort: aws.Int64(int64(testSSHPort)), - }, - } - - perms := driver.configureSecurityGroupPermissions(group) - - assert.Len(t, perms, 1) - assert.Equal(t, testDockerPort, *perms[0].FromPort) -} - -func TestConfigureSecurityGroupPermissionsDockerOnly(t *testing.T) { - driver := NewTestDriver() - group := securityGroup - group.IpPermissions = []*ec2.IpPermission{ - { - IpProtocol: aws.String("tcp"), - FromPort: aws.Int64((testDockerPort)), - ToPort: aws.Int64((testDockerPort)), - }, - } - - perms := driver.configureSecurityGroupPermissions(group) - - assert.Len(t, perms, 1) - assert.Equal(t, testSSHPort, *perms[0].FromPort) -} - -func TestConfigureSecurityGroupPermissionsDockerAndSsh(t *testing.T) { - driver := NewTestDriver() - group := securityGroup - group.IpPermissions = []*ec2.IpPermission{ - { - IpProtocol: aws.String("tcp"), - FromPort: aws.Int64(testSSHPort), - ToPort: aws.Int64(testSSHPort), - }, - { - IpProtocol: aws.String("tcp"), - FromPort: aws.Int64(testDockerPort), - ToPort: aws.Int64(testDockerPort), - }, - } - - perms := driver.configureSecurityGroupPermissions(group) - - assert.Empty(t, perms) -} - -func TestConfigureSecurityGroupPermissionsWithSwarm(t *testing.T) { - driver := NewTestDriver() - driver.SwarmMaster = true - group := securityGroup - group.IpPermissions = []*ec2.IpPermission{ - { - IpProtocol: aws.String("tcp"), - FromPort: aws.Int64(testSSHPort), - ToPort: aws.Int64(testSSHPort), - }, - { - IpProtocol: aws.String("tcp"), - FromPort: aws.Int64(testDockerPort), - ToPort: aws.Int64(testDockerPort), - }, - } - - perms := driver.configureSecurityGroupPermissions(group) - - assert.Len(t, perms, 1) - assert.Equal(t, testSwarmPort, *perms[0].FromPort) -} - -func TestValidateAwsRegionValid(t *testing.T) { - regions := []string{"eu-west-1", "eu-central-1"} - - for _, region := range regions { - validatedRegion, err := validateAwsRegion(region) - - assert.NoError(t, err) - assert.Equal(t, region, validatedRegion) - } -} - -func TestValidateAwsRegionInvalid(t *testing.T) { - regions := []string{"eu-west-2", "eu-central-2"} - - for _, region := range regions { - _, err := validateAwsRegion(region) - - assert.EqualError(t, err, "Invalid region specified") - } -} - -func TestFindDefaultVPC(t *testing.T) { - driver := NewDriver("machineFoo", "path") - driver.clientFactory = func() Ec2Client { return &fakeEC2WithLogin{} } - - vpc, err := driver.getDefaultVPCId() - - assert.Equal(t, "vpc-9999", vpc) - assert.NoError(t, err) -} - -func TestDefaultVPCIsMissing(t *testing.T) { - driver := NewDriver("machineFoo", "path") - driver.clientFactory = func() Ec2Client { - return &fakeEC2WithDescribe{ - output: &ec2.DescribeAccountAttributesOutput{ - AccountAttributes: []*ec2.AccountAttribute{}, - }, - } - } - - vpc, err := driver.getDefaultVPCId() - - assert.EqualError(t, err, "No default-vpc attribute") - assert.Empty(t, vpc) -} - -func TestDescribeAccountAttributeFails(t *testing.T) { - driver := NewDriver("machineFoo", "path") - driver.clientFactory = func() Ec2Client { - return &fakeEC2WithDescribe{ - err: errors.New("Not Found"), - } - } - - vpc, err := driver.getDefaultVPCId() - - assert.EqualError(t, err, "Not Found") - assert.Empty(t, vpc) -} - -func TestAccessKeyIsMandatory(t *testing.T) { - driver := NewTestDriver() - driver.awsCredentials = &cliCredentials{} - options := &commandstest.FakeFlagger{ - Data: map[string]interface{}{ - "name": "test", - "amazonec2-region": "us-east-1", - "amazonec2-zone": "e", - }, - } - - err := driver.SetConfigFromFlags(options) - - assert.Equal(t, err, errorMissingAccessKeyOption) -} - -func TestAccessKeyIsMandatoryEvenIfSecretKeyIsPassed(t *testing.T) { - driver := NewTestDriver() - driver.awsCredentials = &cliCredentials{} - options := &commandstest.FakeFlagger{ - Data: map[string]interface{}{ - "name": "test", - "amazonec2-secret-key": "123", - "amazonec2-region": "us-east-1", - "amazonec2-zone": "e", - }, - } - - err := driver.SetConfigFromFlags(options) - - assert.Equal(t, err, errorMissingAccessKeyOption) -} - -func TestSecretKeyIsMandatory(t *testing.T) { - driver := NewTestDriver() - driver.awsCredentials = &cliCredentials{} - options := &commandstest.FakeFlagger{ - Data: map[string]interface{}{ - "name": "test", - "amazonec2-access-key": "foobar", - "amazonec2-region": "us-east-1", - "amazonec2-zone": "e", - }, - } - - err := driver.SetConfigFromFlags(options) - - assert.Equal(t, err, errorMissingSecretKeyOption) -} - -func TestLoadingFromCredentialsWorked(t *testing.T) { - driver := NewCustomTestDriver(&fakeEC2WithLogin{}) - driver.awsCredentials = &fileCredentials{} - options := &commandstest.FakeFlagger{ - Data: map[string]interface{}{ - "name": "test", - "amazonec2-region": "us-east-1", - "amazonec2-zone": "e", - }, - } - - err := driver.SetConfigFromFlags(options) - - assert.NoError(t, err) - assert.Equal(t, "access", driver.AccessKey) - assert.Equal(t, "secret", driver.SecretKey) - assert.Equal(t, "token", driver.SessionToken) -} - -func TestPassingBothCLIArgWorked(t *testing.T) { - driver := NewCustomTestDriver(&fakeEC2WithLogin{}) - driver.awsCredentials = &cliCredentials{} - options := &commandstest.FakeFlagger{ - Data: map[string]interface{}{ - "name": "test", - "amazonec2-access-key": "foobar", - "amazonec2-secret-key": "123", - "amazonec2-region": "us-east-1", - "amazonec2-zone": "e", - }, - } - - err := driver.SetConfigFromFlags(options) - - assert.NoError(t, err) - assert.Equal(t, "foobar", driver.AccessKey) - assert.Equal(t, "123", driver.SecretKey) -} - -var values = []string{ - "bob", - "jake", - "jill", -} - -var pointerSliceTests = []struct { - input []string - expected []*string -}{ - {[]string{}, []*string{}}, - {[]string{values[1]}, []*string{&values[1]}}, - {[]string{values[0], values[2], values[2]}, []*string{&values[0], &values[2], &values[2]}}, -} - -func TestMakePointerSlice(t *testing.T) { - for _, tt := range pointerSliceTests { - actual := makePointerSlice(tt.input) - assert.Equal(t, tt.expected, actual) - } -} - -var securityGroupNameTests = []struct { - groupName string - groupNames []string - expected []string -}{ - {groupName: "bob", expected: []string{"bob"}}, - {groupNames: []string{"bill"}, expected: []string{"bill"}}, - {groupName: "bob", groupNames: []string{"bill"}, expected: []string{"bob", "bill"}}, -} - -func TestMergeSecurityGroupName(t *testing.T) { - for _, tt := range securityGroupNameTests { - d := Driver{SecurityGroupName: tt.groupName, SecurityGroupNames: tt.groupNames} - assert.Equal(t, tt.expected, d.securityGroupNames()) - } -} - -var securityGroupIdTests = []struct { - groupId string - groupIds []string - expected []string -}{ - {groupId: "id", expected: []string{"id"}}, - {groupIds: []string{"id"}, expected: []string{"id"}}, - {groupId: "id1", groupIds: []string{"id2"}, expected: []string{"id1", "id2"}}, -} - -func TestMergeSecurityGroupId(t *testing.T) { - for _, tt := range securityGroupIdTests { - d := Driver{SecurityGroupId: tt.groupId, SecurityGroupIds: tt.groupIds} - assert.Equal(t, tt.expected, d.securityGroupIds()) - } -} - -func matchGroupLookup(expected []string) interface{} { - return func(input *ec2.DescribeSecurityGroupsInput) bool { - actual := []string{} - for _, filter := range input.Filters { - if *filter.Name == "group-name" { - for _, groupName := range filter.Values { - actual = append(actual, *groupName) - } - } - } - return reflect.DeepEqual(expected, actual) - } -} - -func ipPermission(port int64) *ec2.IpPermission { - return &ec2.IpPermission{ - FromPort: aws.Int64(port), - ToPort: aws.Int64(port), - IpProtocol: aws.String("tcp"), - IpRanges: []*ec2.IpRange{{CidrIp: aws.String(ipRange)}}, - } -} - -func TestConfigureSecurityGroupsEmpty(t *testing.T) { - recorder := fakeEC2SecurityGroupTestRecorder{} - - driver := NewCustomTestDriver(&recorder) - err := driver.configureSecurityGroups([]string{}) - - assert.Nil(t, err) - recorder.AssertExpectations(t) -} - -func TestConfigureSecurityGroupsMixed(t *testing.T) { - groups := []string{"existingGroup", "newGroup"} - recorder := fakeEC2SecurityGroupTestRecorder{} - - // First, a check is made for which groups already exist. - initialLookupResult := ec2.DescribeSecurityGroupsOutput{SecurityGroups: []*ec2.SecurityGroup{ - { - GroupName: aws.String("existingGroup"), - GroupId: aws.String("existingGroupId"), - IpPermissions: []*ec2.IpPermission{ipPermission(testSSHPort)}, - }, - }} - recorder.On("DescribeSecurityGroups", mock.MatchedBy(matchGroupLookup(groups))).Return( - &initialLookupResult, nil) - - // An ingress permission is added to the existing group. - recorder.On("AuthorizeSecurityGroupIngress", &ec2.AuthorizeSecurityGroupIngressInput{ - GroupId: aws.String("existingGroupId"), - IpPermissions: []*ec2.IpPermission{ipPermission(testDockerPort)}, - }).Return( - &ec2.AuthorizeSecurityGroupIngressOutput{}, nil) - - // The new security group is created. - recorder.On("CreateSecurityGroup", &ec2.CreateSecurityGroupInput{ - GroupName: aws.String("newGroup"), - Description: aws.String("Docker Machine"), - VpcId: aws.String(""), - }).Return( - &ec2.CreateSecurityGroupOutput{GroupId: aws.String("newGroupId")}, nil) - - // Ensuring the new security group exists. - postCreateLookupResult := ec2.DescribeSecurityGroupsOutput{SecurityGroups: []*ec2.SecurityGroup{ - { - GroupName: aws.String("newGroup"), - GroupId: aws.String("newGroupId"), - }, - }} - recorder.On("DescribeSecurityGroups", - &ec2.DescribeSecurityGroupsInput{GroupIds: []*string{aws.String("newGroupId")}}).Return( - &postCreateLookupResult, nil) - - // Permissions are added to the new security group. - recorder.On("AuthorizeSecurityGroupIngress", &ec2.AuthorizeSecurityGroupIngressInput{ - GroupId: aws.String("newGroupId"), - IpPermissions: []*ec2.IpPermission{ipPermission(testSSHPort), ipPermission(testDockerPort)}, - }).Return( - &ec2.AuthorizeSecurityGroupIngressOutput{}, nil) - - driver := NewCustomTestDriver(&recorder) - err := driver.configureSecurityGroups(groups) - - assert.Nil(t, err) - recorder.AssertExpectations(t) -} - -func TestConfigureSecurityGroupsErrLookupExist(t *testing.T) { - groups := []string{"group"} - recorder := fakeEC2SecurityGroupTestRecorder{} - - lookupExistErr := errors.New("lookup failed") - recorder.On("DescribeSecurityGroups", mock.MatchedBy(matchGroupLookup(groups))).Return( - nil, lookupExistErr) - - driver := NewCustomTestDriver(&recorder) - err := driver.configureSecurityGroups(groups) - - assert.Exactly(t, lookupExistErr, err) - recorder.AssertExpectations(t) -} diff --git a/vendor/github.com/docker/machine/drivers/amazonec2/awscredentials.go b/vendor/github.com/docker/machine/drivers/amazonec2/awscredentials.go deleted file mode 100644 index 15e3a326..00000000 --- a/vendor/github.com/docker/machine/drivers/amazonec2/awscredentials.go +++ /dev/null @@ -1,19 +0,0 @@ -package amazonec2 - -import "github.com/aws/aws-sdk-go/aws/credentials" - -type awsCredentials interface { - NewStaticCredentials(id, secret, token string) *credentials.Credentials - - NewSharedCredentials(filename, profile string) *credentials.Credentials -} - -type defaultAWSCredentials struct{} - -func (c *defaultAWSCredentials) NewStaticCredentials(id, secret, token string) *credentials.Credentials { - return credentials.NewStaticCredentials(id, secret, token) -} - -func (c *defaultAWSCredentials) NewSharedCredentials(filename, profile string) *credentials.Credentials { - return credentials.NewSharedCredentials(filename, profile) -} diff --git a/vendor/github.com/docker/machine/drivers/amazonec2/ec2client.go b/vendor/github.com/docker/machine/drivers/amazonec2/ec2client.go deleted file mode 100644 index ecb2a50b..00000000 --- a/vendor/github.com/docker/machine/drivers/amazonec2/ec2client.go +++ /dev/null @@ -1,51 +0,0 @@ -package amazonec2 - -import "github.com/aws/aws-sdk-go/service/ec2" - -type Ec2Client interface { - DescribeAccountAttributes(input *ec2.DescribeAccountAttributesInput) (*ec2.DescribeAccountAttributesOutput, error) - - DescribeSubnets(input *ec2.DescribeSubnetsInput) (*ec2.DescribeSubnetsOutput, error) - - CreateTags(input *ec2.CreateTagsInput) (*ec2.CreateTagsOutput, error) - - //SecurityGroup - - CreateSecurityGroup(input *ec2.CreateSecurityGroupInput) (*ec2.CreateSecurityGroupOutput, error) - - AuthorizeSecurityGroupIngress(input *ec2.AuthorizeSecurityGroupIngressInput) (*ec2.AuthorizeSecurityGroupIngressOutput, error) - - DescribeSecurityGroups(input *ec2.DescribeSecurityGroupsInput) (*ec2.DescribeSecurityGroupsOutput, error) - - DeleteSecurityGroup(input *ec2.DeleteSecurityGroupInput) (*ec2.DeleteSecurityGroupOutput, error) - - //KeyPair - - DeleteKeyPair(input *ec2.DeleteKeyPairInput) (*ec2.DeleteKeyPairOutput, error) - - ImportKeyPair(input *ec2.ImportKeyPairInput) (*ec2.ImportKeyPairOutput, error) - - DescribeKeyPairs(input *ec2.DescribeKeyPairsInput) (*ec2.DescribeKeyPairsOutput, error) - - //Instances - - DescribeInstances(input *ec2.DescribeInstancesInput) (*ec2.DescribeInstancesOutput, error) - - StartInstances(input *ec2.StartInstancesInput) (*ec2.StartInstancesOutput, error) - - RebootInstances(input *ec2.RebootInstancesInput) (*ec2.RebootInstancesOutput, error) - - StopInstances(input *ec2.StopInstancesInput) (*ec2.StopInstancesOutput, error) - - RunInstances(input *ec2.RunInstancesInput) (*ec2.Reservation, error) - - TerminateInstances(input *ec2.TerminateInstancesInput) (*ec2.TerminateInstancesOutput, error) - - //SpotInstances - - RequestSpotInstances(input *ec2.RequestSpotInstancesInput) (*ec2.RequestSpotInstancesOutput, error) - - DescribeSpotInstanceRequests(input *ec2.DescribeSpotInstanceRequestsInput) (*ec2.DescribeSpotInstanceRequestsOutput, error) - - WaitUntilSpotInstanceRequestFulfilled(input *ec2.DescribeSpotInstanceRequestsInput) error -} diff --git a/vendor/github.com/docker/machine/drivers/amazonec2/logger.go b/vendor/github.com/docker/machine/drivers/amazonec2/logger.go deleted file mode 100644 index a0dd929c..00000000 --- a/vendor/github.com/docker/machine/drivers/amazonec2/logger.go +++ /dev/null @@ -1,21 +0,0 @@ -package amazonec2 - -import ( - "github.com/aws/aws-sdk-go/aws" - "log" - "os" -) - -type awslogger struct { - logger *log.Logger -} - -func AwsLogger() aws.Logger { - return &awslogger{ - logger: log.New(os.Stderr, "", log.LstdFlags), - } -} - -func (l awslogger) Log(args ...interface{}) { - l.logger.Println(args...) -} diff --git a/vendor/github.com/docker/machine/drivers/amazonec2/region.go b/vendor/github.com/docker/machine/drivers/amazonec2/region.go deleted file mode 100644 index f4e28a3d..00000000 --- a/vendor/github.com/docker/machine/drivers/amazonec2/region.go +++ /dev/null @@ -1,46 +0,0 @@ -package amazonec2 - -import ( - "errors" -) - -type region struct { - AmiId string -} - -// Release 15.10 20151116.1 -// See https://cloud-images.ubuntu.com/locator/ec2/ -var regionDetails map[string]*region = map[string]*region{ - "ap-northeast-1": {"ami-b36d4edd"}, - "ap-northeast-2": {"ami-09dc1267"}, - "ap-southeast-1": {"ami-1069af73"}, - "ap-southeast-2": {"ami-1d336a7e"}, - "cn-north-1": {"ami-79eb2214"}, - "eu-west-1": {"ami-8aa67cf9"}, - "eu-central-1": {"ami-ab0210c7"}, - "sa-east-1": {"ami-185de774"}, - "us-east-1": {"ami-26d5af4c"}, - "us-west-1": {"ami-9cbcd2fc"}, - "us-west-2": {"ami-16b1a077"}, - "us-gov-west-1": {"ami-b0bad893"}, -} - -func awsRegionsList() []string { - var list []string - - for k := range regionDetails { - list = append(list, k) - } - - return list -} - -func validateAwsRegion(region string) (string, error) { - for _, v := range awsRegionsList() { - if v == region { - return region, nil - } - } - - return "", errors.New("Invalid region specified") -} diff --git a/vendor/github.com/docker/machine/drivers/amazonec2/stub_test.go b/vendor/github.com/docker/machine/drivers/amazonec2/stub_test.go deleted file mode 100644 index f4b1a4dc..00000000 --- a/vendor/github.com/docker/machine/drivers/amazonec2/stub_test.go +++ /dev/null @@ -1,139 +0,0 @@ -package amazonec2 - -import ( - "errors" - - "github.com/aws/aws-sdk-go/aws/credentials" - "github.com/aws/aws-sdk-go/service/ec2" - - "github.com/stretchr/testify/mock" -) - -type fakeEC2 struct { - *ec2.EC2 -} - -type errorProvider struct{} - -func (p *errorProvider) Retrieve() (credentials.Value, error) { - return credentials.Value{}, errors.New("bad credentials") -} - -func (p *errorProvider) IsExpired() bool { - return true -} - -type okProvider struct { - accessKeyID string - secretAccessKey string - sessionToken string -} - -func (p *okProvider) Retrieve() (credentials.Value, error) { - return credentials.Value{ - AccessKeyID: p.accessKeyID, - SecretAccessKey: p.secretAccessKey, - SessionToken: p.sessionToken, - }, nil -} - -func (p *okProvider) IsExpired() bool { - return true -} - -type cliCredentials struct{} - -func (c *cliCredentials) NewStaticCredentials(id, secret, token string) *credentials.Credentials { - return credentials.NewCredentials(&okProvider{id, secret, token}) -} - -func (c *cliCredentials) NewSharedCredentials(filename, profile string) *credentials.Credentials { - return credentials.NewCredentials(&errorProvider{}) -} - -type fileCredentials struct{} - -func (c *fileCredentials) NewStaticCredentials(id, secret, token string) *credentials.Credentials { - return nil -} - -func (c *fileCredentials) NewSharedCredentials(filename, profile string) *credentials.Credentials { - return credentials.NewCredentials(&okProvider{"access", "secret", "token"}) -} - -type fakeEC2WithDescribe struct { - *fakeEC2 - output *ec2.DescribeAccountAttributesOutput - err error -} - -func (f *fakeEC2WithDescribe) DescribeAccountAttributes(input *ec2.DescribeAccountAttributesInput) (*ec2.DescribeAccountAttributesOutput, error) { - return f.output, f.err -} - -type fakeEC2WithLogin struct { - *fakeEC2 -} - -func (f *fakeEC2WithLogin) DescribeAccountAttributes(input *ec2.DescribeAccountAttributesInput) (*ec2.DescribeAccountAttributesOutput, error) { - defaultVpc := "default-vpc" - vpcName := "vpc-9999" - - return &ec2.DescribeAccountAttributesOutput{ - AccountAttributes: []*ec2.AccountAttribute{ - { - AttributeName: &defaultVpc, - AttributeValues: []*ec2.AccountAttributeValue{ - {AttributeValue: &vpcName}, - }, - }, - }, - }, nil -} - -type fakeEC2SecurityGroupTestRecorder struct { - *fakeEC2 - mock.Mock -} - -func (f *fakeEC2SecurityGroupTestRecorder) DescribeSecurityGroups(input *ec2.DescribeSecurityGroupsInput) (*ec2.DescribeSecurityGroupsOutput, error) { - result := f.Called(input) - err := result.Error(1) - value, ok := result.Get(0).(*ec2.DescribeSecurityGroupsOutput) - if !ok && err == nil { - return nil, errors.New("Type assertion to DescribeSecurityGroupsOutput failed") - } - return value, err -} - -func (f *fakeEC2SecurityGroupTestRecorder) CreateSecurityGroup(input *ec2.CreateSecurityGroupInput) (*ec2.CreateSecurityGroupOutput, error) { - result := f.Called(input) - err := result.Error(1) - value, ok := result.Get(0).(*ec2.CreateSecurityGroupOutput) - if !ok && err == nil { - return nil, errors.New("Type assertion to CreateSecurityGroupOutput failed") - } - return value, err -} - -func (f *fakeEC2SecurityGroupTestRecorder) AuthorizeSecurityGroupIngress(input *ec2.AuthorizeSecurityGroupIngressInput) (*ec2.AuthorizeSecurityGroupIngressOutput, error) { - result := f.Called(input) - err := result.Error(1) - value, ok := result.Get(0).(*ec2.AuthorizeSecurityGroupIngressOutput) - if !ok && err == nil { - return nil, errors.New("Type assertion to AuthorizeSecurityGroupIngressInput failed") - } - return value, err -} - -func NewTestDriver() *Driver { - driver := NewDriver("machineFoo", "path") - driver.clientFactory = func() Ec2Client { return &fakeEC2{} } - return driver -} - -func NewCustomTestDriver(ec2Client Ec2Client) *Driver { - driver := NewDriver("machineFoo", "path") - driver.clientFactory = func() Ec2Client { return ec2Client } - return driver -} diff --git a/vendor/github.com/docker/machine/drivers/azure/azure.go b/vendor/github.com/docker/machine/drivers/azure/azure.go deleted file mode 100644 index 8ae211ab..00000000 --- a/vendor/github.com/docker/machine/drivers/azure/azure.go +++ /dev/null @@ -1,508 +0,0 @@ -package azure - -import ( - "errors" - "fmt" - "net" - "net/url" - - "github.com/docker/machine/drivers/azure/azureutil" - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnflag" - "github.com/docker/machine/libmachine/state" - - "github.com/Azure/azure-sdk-for-go/arm/storage" -) - -const ( - defaultAzureEnvironment = "AzurePublicCloud" - defaultAzureResourceGroup = "docker-machine" - defaultAzureSize = "Standard_A2" - defaultAzureLocation = "westus" - defaultSSHUser = "docker-user" // 'root' not allowed on Azure - defaultDockerPort = 2376 - defaultAzureImage = "canonical:UbuntuServer:16.04.0-LTS:latest" - defaultAzureVNet = "docker-machine-vnet" - defaultAzureSubnet = "docker-machine" - defaultAzureSubnetPrefix = "192.168.0.0/16" - defaultStorageType = storage.StandardLRS - defaultAzureAvailabilitySet = "docker-machine" -) - -const ( - flAzureEnvironment = "azure-environment" - flAzureSubscriptionID = "azure-subscription-id" - flAzureResourceGroup = "azure-resource-group" - flAzureSSHUser = "azure-ssh-user" - flAzureDockerPort = "azure-docker-port" - flAzureLocation = "azure-location" - flAzureSize = "azure-size" - flAzureImage = "azure-image" - flAzureVNet = "azure-vnet" - flAzureSubnet = "azure-subnet" - flAzureSubnetPrefix = "azure-subnet-prefix" - flAzureAvailabilitySet = "azure-availability-set" - flAzurePorts = "azure-open-port" - flAzurePrivateIPAddr = "azure-private-ip-address" - flAzureUsePrivateIP = "azure-use-private-ip" - flAzureStaticPublicIP = "azure-static-public-ip" - flAzureNoPublicIP = "azure-no-public-ip" -) - -const ( - driverName = "azure" - sshPort = 22 -) - -// Driver represents Azure Docker Machine Driver. -type Driver struct { - *drivers.BaseDriver - - Environment string - SubscriptionID string - ResourceGroup string - - DockerPort int - Location string - Size string - Image string - VirtualNetwork string - SubnetName string - SubnetPrefix string - AvailabilitySet string - - OpenPorts []string - PrivateIPAddr string - UsePrivateIP bool - NoPublicIP bool - StaticPublicIP bool - - // Ephemeral fields - ctx *azureutil.DeploymentContext - resolvedIP string // cache -} - -// NewDriver returns a new driver instance. -func NewDriver(hostName, storePath string) drivers.Driver { - // NOTE(ahmetalpbalkan): any driver initialization I do here gets lost - // afterwards, especially for non-Create RPC calls. Therefore I am mostly - // making rest of the driver stateless by just relying on the following - // piece of info. - d := &Driver{ - BaseDriver: &drivers.BaseDriver{ - SSHUser: defaultSSHUser, - MachineName: hostName, - StorePath: storePath, - }, - } - return d -} - -// GetCreateFlags returns list of create flags driver accepts. -func (d *Driver) GetCreateFlags() []mcnflag.Flag { - return []mcnflag.Flag{ - mcnflag.StringFlag{ - Name: flAzureEnvironment, - Usage: "Azure environment (e.g. AzurePublicCloud, AzureChinaCloud)", - EnvVar: "AZURE_ENVIRONMENT", - Value: defaultAzureEnvironment, - }, - mcnflag.StringFlag{ - Name: flAzureSubscriptionID, - Usage: "Azure Subscription ID", - EnvVar: "AZURE_SUBSCRIPTION_ID", - }, - mcnflag.StringFlag{ - Name: flAzureResourceGroup, - Usage: "Azure Resource Group name (will be created if missing)", - EnvVar: "AZURE_RESOURCE_GROUP", - Value: defaultAzureResourceGroup, - }, - mcnflag.StringFlag{ - Name: flAzureSSHUser, - Usage: "Username for SSH login", - EnvVar: "AZURE_SSH_USER", - Value: defaultSSHUser, - }, - mcnflag.IntFlag{ - Name: flAzureDockerPort, - Usage: "Port number for Docker engine", - EnvVar: "AZURE_DOCKER_PORT", - Value: defaultDockerPort, - }, - mcnflag.StringFlag{ - Name: flAzureLocation, - Usage: "Azure region to create the virtual machine", - EnvVar: "AZURE_LOCATION", - Value: defaultAzureLocation, - }, - mcnflag.StringFlag{ - Name: flAzureSize, - Usage: "Size for Azure Virtual Machine", - EnvVar: "AZURE_SIZE", - Value: defaultAzureSize, - }, - mcnflag.StringFlag{ - Name: flAzureImage, - Usage: "Azure virtual machine OS image", - EnvVar: "AZURE_IMAGE", - Value: defaultAzureImage, - }, - mcnflag.StringFlag{ - Name: flAzureVNet, - Usage: "Azure Virtual Network name to connect the virtual machine", - EnvVar: "AZURE_VNET", - Value: defaultAzureVNet, - }, - mcnflag.StringFlag{ - Name: flAzureSubnet, - Usage: "Azure Subnet Name to be used within the Virtual Network", - EnvVar: "AZURE_SUBNET", - Value: defaultAzureSubnet, - }, - mcnflag.StringFlag{ - Name: flAzureSubnetPrefix, - Usage: "Private CIDR block to be used for the new subnet, should comply RFC 1918", - EnvVar: "AZURE_SUBNET_PREFIX", - Value: defaultAzureSubnetPrefix, - }, - mcnflag.StringFlag{ - Name: flAzureAvailabilitySet, - Usage: "Azure Availability Set to place the virtual machine into", - EnvVar: "AZURE_AVAILABILITY_SET", - Value: defaultAzureAvailabilitySet, - }, - mcnflag.StringFlag{ - Name: flAzurePrivateIPAddr, - Usage: "Specify a static private IP address for the machine", - }, - mcnflag.BoolFlag{ - Name: flAzureUsePrivateIP, - Usage: "Use private IP address of the machine to connect", - }, - mcnflag.BoolFlag{ - Name: flAzureNoPublicIP, - Usage: "Do not create a public IP address for the machine", - }, - mcnflag.BoolFlag{ - Name: flAzureStaticPublicIP, - Usage: "Assign a static public IP address to the machine", - }, - mcnflag.StringSliceFlag{ - Name: flAzurePorts, - Usage: "Make the specified port number accessible from the Internet", - }, - } -} - -// SetConfigFromFlags initializes driver values from the command line values -// and checks if the arguments have values. -func (d *Driver) SetConfigFromFlags(fl drivers.DriverOptions) error { - // Initialize driver context for machine - d.ctx = &azureutil.DeploymentContext{} - - // Required string flags - flags := []struct { - target *string - flag string - }{ - {&d.BaseDriver.SSHUser, flAzureSSHUser}, - {&d.SubscriptionID, flAzureSubscriptionID}, - {&d.ResourceGroup, flAzureResourceGroup}, - {&d.Location, flAzureLocation}, - {&d.Size, flAzureSize}, - {&d.Image, flAzureImage}, - {&d.VirtualNetwork, flAzureVNet}, - {&d.SubnetName, flAzureSubnet}, - {&d.SubnetPrefix, flAzureSubnetPrefix}, - {&d.AvailabilitySet, flAzureAvailabilitySet}, - } - for _, f := range flags { - *f.target = fl.String(f.flag) - if *f.target == "" { - return requiredOptionError(f.flag) - } - } - - // Optional flags or Flags of other types - d.Environment = fl.String(flAzureEnvironment) - d.OpenPorts = fl.StringSlice(flAzurePorts) - d.PrivateIPAddr = fl.String(flAzurePrivateIPAddr) - d.UsePrivateIP = fl.Bool(flAzureUsePrivateIP) - d.NoPublicIP = fl.Bool(flAzureNoPublicIP) - d.StaticPublicIP = fl.Bool(flAzureStaticPublicIP) - d.DockerPort = fl.Int(flAzureDockerPort) - - // Set flags on the BaseDriver - d.BaseDriver.SSHPort = sshPort - d.SetSwarmConfigFromFlags(fl) - - log.Debug("Set configuration from flags.") - return nil -} - -// DriverName returns the name of the driver. -func (d *Driver) DriverName() string { return driverName } - -// PreCreateCheck validates if driver values are valid to create the machine. -func (d *Driver) PreCreateCheck() (err error) { - c, err := d.newAzureClient() - if err != nil { - return err - } - - // Register used resource providers with current Azure subscription. - if err := c.RegisterResourceProviders( - "Microsoft.Compute", - "Microsoft.Network", - "Microsoft.Storage"); err != nil { - return err - } - - // Validate if firewall rules can be read correctly - d.ctx.FirewallRules, err = d.getSecurityRules(d.OpenPorts) - if err != nil { - return err - } - - // Check if virtual machine exists. An existing virtual machine cannot be updated. - log.Debug("Checking if Virtual Machine already exists.") - if exists, err := c.VirtualMachineExists(d.ResourceGroup, d.naming().VM()); err != nil { - return err - } else if exists { - return fmt.Errorf("Virtual Machine with name %s already exists in resource group %q", d.naming().VM(), d.ResourceGroup) - } - - // NOTE(ahmetalpbalkan) we could have done more checks here but Azure often - // returns meaningful error messages and it would be repeating the backend - // logic on the client side. Some examples: - // - Deployment of a machine to an existing Virtual Network fails if - // virtual network is in a different region. - // - Changing IP Address space of a subnet would fail if there are machines - // running in the Virtual Network. - log.Info("Completed machine pre-create checks.") - return nil -} - -// Create creates the virtual machine. -func (d *Driver) Create() error { - // NOTE(ahmetalpbalkan): We can probably parallelize the sh*t out of this. - // However that would lead to a concurrency logic and while creation of a - // resource fails, other ones would be kicked off, which could lead to a - // resource leak. This is slower but safer. - c, err := d.newAzureClient() - if err != nil { - return err - } - - if err := c.CreateResourceGroup(d.ResourceGroup, d.Location); err != nil { - return err - } - if err := c.CreateAvailabilitySetIfNotExists(d.ctx, d.ResourceGroup, d.AvailabilitySet, d.Location); err != nil { - return err - } - if err := c.CreateNetworkSecurityGroup(d.ctx, d.ResourceGroup, d.naming().NSG(), d.Location, d.ctx.FirewallRules); err != nil { - return err - } - if err := c.CreateVirtualNetworkIfNotExists(d.ResourceGroup, d.VirtualNetwork, d.Location); err != nil { - return err - } - if err := c.CreateSubnet(d.ctx, d.ResourceGroup, d.VirtualNetwork, d.SubnetName, d.SubnetPrefix); err != nil { - return err - } - if d.NoPublicIP { - log.Info("Not creating a public IP address.") - } else { - if err := c.CreatePublicIPAddress(d.ctx, d.ResourceGroup, d.naming().IP(), d.Location, d.StaticPublicIP); err != nil { - return err - } - } - if err := c.CreateNetworkInterface(d.ctx, d.ResourceGroup, d.naming().NIC(), d.Location, - d.ctx.PublicIPAddressID, d.ctx.SubnetID, d.ctx.NetworkSecurityGroupID, d.PrivateIPAddr); err != nil { - return err - } - if err := c.CreateStorageAccount(d.ctx, d.ResourceGroup, d.Location, defaultStorageType); err != nil { - return err - } - if err := d.generateSSHKey(d.ctx); err != nil { - return err - } - if err := c.CreateVirtualMachine(d.ResourceGroup, d.naming().VM(), d.Location, d.Size, d.ctx.AvailabilitySetID, - d.ctx.NetworkInterfaceID, d.BaseDriver.SSHUser, d.ctx.SSHPublicKey, d.Image, d.ctx.StorageAccount); err != nil { - return err - } - return nil -} - -// Remove deletes the virtual machine and resources associated to it. -func (d *Driver) Remove() error { - if err := d.checkLegacyDriver(false); err != nil { - return err - } - - // NOTE(ahmetalpbalkan): - // - remove attemps are best effort and if a resource is already gone, we - // continue removing other resources instead of failing. - // - we can probably do a lot of parallelization here but a sequential - // logic works fine too. If we were to detach the NIC from the VM and - // then delete the VM, this could enable some parallelization. - - log.Info("NOTICE: Please check Azure portal/CLI to make sure you have no leftover resources to avoid unexpected charges.") - c, err := d.newAzureClient() - if err != nil { - return err - } - if err := c.DeleteVirtualMachineIfExists(d.ResourceGroup, d.naming().VM()); err != nil { - return err - } - if err := c.DeleteNetworkInterfaceIfExists(d.ResourceGroup, d.naming().NIC()); err != nil { - return err - } - if err := c.DeletePublicIPAddressIfExists(d.ResourceGroup, d.naming().IP()); err != nil { - return err - } - if err := c.DeleteNetworkSecurityGroupIfExists(d.ResourceGroup, d.naming().NSG()); err != nil { - return err - } - if err := c.CleanupAvailabilitySetIfExists(d.ResourceGroup, d.AvailabilitySet); err != nil { - return err - } - if err := c.CleanupSubnetIfExists(d.ResourceGroup, d.VirtualNetwork, d.SubnetName); err != nil { - return err - } - if err := c.CleanupVirtualNetworkIfExists(d.ResourceGroup, d.VirtualNetwork); err != nil { - return err - } - return nil -} - -// GetIP returns public IP address or hostname of the machine instance. -func (d *Driver) GetIP() (string, error) { - if err := d.checkLegacyDriver(true); err != nil { - return "", err - } - - if d.resolvedIP == "" { - ip, err := d.ipAddress() - if err != nil { - return "", err - } - d.resolvedIP = ip - } - log.Debugf("Machine IP address resolved to: %s", d.resolvedIP) - return d.resolvedIP, nil -} - -// GetSSHHostname returns an IP address or hostname for the machine instance. -func (d *Driver) GetSSHHostname() (string, error) { - return d.GetIP() -} - -// GetURL returns a socket address to connect to Docker engine of the machine -// instance. -func (d *Driver) GetURL() (string, error) { - if err := drivers.MustBeRunning(d); err != nil { - return "", err - } - - // NOTE (ahmetalpbalkan) I noticed that this is not used until machine is - // actually created and provisioned. By then GetIP() should be returning - // a non-empty IP address as the VM is already allocated and connected to. - ip, err := d.GetIP() - if err != nil { - return "", err - } - u := (&url.URL{ - Scheme: "tcp", - Host: net.JoinHostPort(ip, fmt.Sprintf("%d", d.DockerPort)), - }).String() - log.Debugf("Machine URL is resolved to: %s", u) - return u, nil -} - -// GetState returns the state of the virtual machine role instance. -func (d *Driver) GetState() (state.State, error) { - if err := d.checkLegacyDriver(true); err != nil { - return state.None, err - } - - c, err := d.newAzureClient() - if err != nil { - return state.None, err - } - powerState, err := c.GetVirtualMachinePowerState( - d.ResourceGroup, d.naming().VM()) - if err != nil { - return state.None, err - } - - machineState := machineStateForVMPowerState(powerState) - log.Debugf("Determined Azure PowerState=%q, docker-machine state=%q", - powerState, machineState) - return machineState, nil -} - -// Start issues a power on for the virtual machine instance. -func (d *Driver) Start() error { - if err := d.checkLegacyDriver(true); err != nil { - return err - } - - c, err := d.newAzureClient() - if err != nil { - return err - } - return c.StartVirtualMachine(d.ResourceGroup, d.naming().VM()) -} - -// Stop issues a power off for the virtual machine instance. -func (d *Driver) Stop() error { - if err := d.checkLegacyDriver(true); err != nil { - return err - } - - c, err := d.newAzureClient() - if err != nil { - return err - } - log.Info("NOTICE: Stopping an Azure Virtual Machine is just going to power it off, not deallocate.") - log.Info("NOTICE: You should remove the machine if you would like to avoid unexpected costs.") - return c.StopVirtualMachine(d.ResourceGroup, d.naming().VM()) -} - -// Restart reboots the virtual machine instance. -func (d *Driver) Restart() error { - if err := d.checkLegacyDriver(true); err != nil { - return err - } - - // NOTE(ahmetalpbalkan) Azure will always keep the VM in Running state - // during the restart operation. Hence we rely on returned async operation - // polling to make sure the reboot is waited upon. - c, err := d.newAzureClient() - if err != nil { - return err - } - return c.RestartVirtualMachine(d.ResourceGroup, d.naming().VM()) -} - -// Kill stops the virtual machine role instance. -func (d *Driver) Kill() error { - // NOTE(ahmetalpbalkan) In Azure, there is no kill option for virtual - // machines, Stop() is the closest option. - log.Debug("Azure does not implement kill. Calling Stop instead.") - return d.Stop() -} - -// checkLegacyDriver errors out if it encounters an Azure VM created with the -// legacy (<=0.6.0) docker-machine Azure driver. -func (d *Driver) checkLegacyDriver(short bool) error { - if d.ResourceGroup == "" { - if short { - return errors.New("New azure driver cannot manage old VMs, downgrade to v0.6.0") - } - return errors.New("New azure driver uses the new Azure Resource Manager APIs and therefore cannot manage this existing machine created with old azure driver. Please downgrade to docker-machine 0.6.0 to continue using these machines or to remove them.") - } - return nil -} diff --git a/vendor/github.com/docker/machine/drivers/azure/azureutil/auth.go b/vendor/github.com/docker/machine/drivers/azure/azureutil/auth.go deleted file mode 100644 index 8266cf6b..00000000 --- a/vendor/github.com/docker/machine/drivers/azure/azureutil/auth.go +++ /dev/null @@ -1,218 +0,0 @@ -package azureutil - -import ( - "fmt" - "os" - "path/filepath" - - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnutils" - - "github.com/Azure/go-autorest/autorest/azure" - "github.com/Azure/go-autorest/autorest/to" - "github.com/docker/machine/drivers/azure/logutil" -) - -var ( - // AD app id for docker-machine driver in various Azure realms - clientIDs = map[string]string{ - azure.PublicCloud.Name: "637ddaba-219b-43b8-bf19-8cea500cf273", - azure.ChinaCloud.Name: "bb5eed6f-120b-4365-8fd9-ab1a3fba5698", - } -) - -// NOTE(ahmetalpbalkan): Azure Active Directory implements OAuth 2.0 Device Flow -// described here: https://tools.ietf.org/html/draft-denniss-oauth-device-flow-00 -// Although it has some gotchas, most of the authentication logic is in Azure SDK -// for Go helper packages. -// -// Device auth prints a message to the screen telling the user to click on URL -// and approve the app on the browser, meanwhile the client polls the auth API -// for a token. Once we have token, we save it locally to a file with proper -// permissions and when the token expires (in Azure case typically 1 hour) SDK -// will automatically refresh the specified token and will call the refresh -// callback function we implement here. This way we will always be storing a -// token with a refresh_token saved on the machine. - -// Authenticate fetches a token from the local file cache or initiates a consent -// flow and waits for token to be obtained. -func Authenticate(env azure.Environment, subscriptionID string) (*azure.ServicePrincipalToken, error) { - clientID, ok := clientIDs[env.Name] - if !ok { - return nil, fmt.Errorf("docker-machine application not set up for Azure environment %q", env.Name) - } - - // First we locate the tenant ID of the subscription as we store tokens per - // tenant (which could have multiple subscriptions) - log.Debug("Looking up AAD Tenant ID.", logutil.Fields{ - "subs": subscriptionID}) - tenantID, err := loadOrFindTenantID(env, subscriptionID) - if err != nil { - return nil, err - } - log.Debug("Found AAD Tenant ID.", logutil.Fields{ - "tenant": tenantID, - "subs": subscriptionID}) - - oauthCfg, err := env.OAuthConfigForTenant(tenantID) - if err != nil { - return nil, fmt.Errorf("Failed to obtain oauth config for azure environment: %v", err) - } - - // for AzurePublicCloud (https://management.core.windows.net/), this old - // Service Management scope covers both ASM and ARM. - apiScope := env.ServiceManagementEndpoint - - tokenPath := tokenCachePath(tenantID) - saveToken := mkTokenCallback(tokenPath) - saveTokenCallback := func(t azure.Token) error { - log.Debug("Azure token expired. Saving the refreshed token...") - return saveToken(t) - } - f := logutil.Fields{"path": tokenPath} - - // Lookup the token cache file for an existing token. - spt, err := tokenFromFile(*oauthCfg, tokenPath, clientID, apiScope, saveTokenCallback) - if err != nil { - return nil, err - } - if spt != nil { - log.Debug("Auth token found in file.", f) - - // NOTE(ahmetalpbalkan): The token file we found might be containng an - // expired access_token. In that case, the first call to Azure SDK will - // attempt to refresh the token using refresh_token –which might have - // expired[1], in that case we will get an error and we shall remove the - // token file and initiate token flow again so that the user would not - // need removing the token cache file manually. - // - // [1]: expiration date of refresh_token is not returned in AAD /token - // response, we just know it is 14 days. Therefore user’s token - // will go stale every 14 days and we will delete the token file, - // re-initiate the device flow. - log.Debug("Validating the token.") - if err := validateToken(env, spt); err != nil { - log.Debug(fmt.Sprintf("Error: %v", err)) - log.Info("Stored Azure credentials expired. Please reauthenticate.") - log.Debug(fmt.Sprintf("Deleting %s", tokenPath)) - if err := os.RemoveAll(tokenPath); err != nil { - return nil, fmt.Errorf("Error deleting stale token file: %v", err) - } - } else { - log.Debug("Token works.") - return spt, nil - } - } - - // Start an OAuth 2.0 device flow - log.Debug("Initiating device flow.", f) - spt, err = tokenFromDeviceFlow(*oauthCfg, tokenPath, clientID, apiScope) - if err != nil { - return nil, err - } - log.Debug("Obtained service principal token.") - if err := saveToken(spt.Token); err != nil { - log.Error("Error occurred saving token to cache file.") - return nil, err - } - return spt, nil -} - -// tokenFromFile returns a token from the specified file if it is found, otherwise -// returns nil. Any error retrieving or creating the token is returned as an error. -func tokenFromFile(oauthCfg azure.OAuthConfig, tokenPath, clientID, resource string, - callback azure.TokenRefreshCallback) (*azure.ServicePrincipalToken, error) { - log.Debug("Loading auth token from file", logutil.Fields{"path": tokenPath}) - if _, err := os.Stat(tokenPath); err != nil { - if os.IsNotExist(err) { // file not found - return nil, nil - } - return nil, err - } - - token, err := azure.LoadToken(tokenPath) - if err != nil { - return nil, fmt.Errorf("Failed to load token from file: %v", err) - } - - spt, err := azure.NewServicePrincipalTokenFromManualToken(oauthCfg, clientID, resource, *token, callback) - if err != nil { - return nil, fmt.Errorf("Error constructing service principal token: %v", err) - } - return spt, nil -} - -// tokenFromDeviceFlow prints a message to the screen for user to take action to -// consent application on a browser and in the meanwhile the authentication -// endpoint is polled until user gives consent, denies or the flow times out. -// Returned token must be saved. -func tokenFromDeviceFlow(oauthCfg azure.OAuthConfig, tokenPath, clientID, resource string) (*azure.ServicePrincipalToken, error) { - cl := oauthClient() - deviceCode, err := azure.InitiateDeviceAuth(&cl, oauthCfg, clientID, resource) - if err != nil { - return nil, fmt.Errorf("Failed to start device auth: %v", err) - } - log.Debug("Retrieved device code.", logutil.Fields{ - "expires_in": to.Int64(deviceCode.ExpiresIn), - "interval": to.Int64(deviceCode.Interval), - }) - - // Example message: “To sign in, open https://aka.ms/devicelogin and enter - // the code 0000000 to authenticate.” - log.Infof("Microsoft Azure: %s", to.String(deviceCode.Message)) - - token, err := azure.WaitForUserCompletion(&cl, deviceCode) - if err != nil { - return nil, fmt.Errorf("Failed to complete device auth: %v", err) - } - - spt, err := azure.NewServicePrincipalTokenFromManualToken(oauthCfg, clientID, resource, *token) - if err != nil { - return nil, fmt.Errorf("Error constructing service principal token: %v", err) - } - return spt, nil -} - -// azureCredsPath returns the directory the azure credentials are stored in. -func azureCredsPath() string { - return filepath.Join(mcnutils.GetHomeDir(), ".docker", "machine", "credentials", "azure") -} - -// tokenCachePath returns the full path the OAuth 2.0 token should be saved at -// for given tenant ID. -func tokenCachePath(tenantID string) string { - return filepath.Join(azureCredsPath(), fmt.Sprintf("%s.json", tenantID)) -} - -// tenantIDPath returns the full path the tenant ID for the given subscription -// should be saved at. -func tenantIDPath(subscriptionID string) string { - return filepath.Join(azureCredsPath(), fmt.Sprintf("%s.tenantid", subscriptionID)) -} - -// mkTokenCallback returns a callback function that can be used to save the -// token initially or register to the Azure SDK to be called when the token is -// refreshed. -func mkTokenCallback(path string) azure.TokenRefreshCallback { - return func(t azure.Token) error { - if err := azure.SaveToken(path, 0600, t); err != nil { - return err - } - log.Debug("Saved token to file.") - return nil - } -} - -// validateToken makes a call to Azure SDK with given token, essentially making -// sure if the access_token valid, if not it uses SDK’s functionality to -// automatically refresh the token using refresh_token (which might have -// expired). This check is essentially to make sure refresh_token is good. -func validateToken(env azure.Environment, token *azure.ServicePrincipalToken) error { - c := subscriptionsClient(env.ResourceManagerEndpoint) - c.Authorizer = token - _, err := c.List() - if err != nil { - return fmt.Errorf("Token validity check failed: %v", err) - } - return nil -} diff --git a/vendor/github.com/docker/machine/drivers/azure/azureutil/authorizer.go b/vendor/github.com/docker/machine/drivers/azure/azureutil/authorizer.go deleted file mode 100644 index 8ea1a354..00000000 --- a/vendor/github.com/docker/machine/drivers/azure/azureutil/authorizer.go +++ /dev/null @@ -1,15 +0,0 @@ -package azureutil - -import ( - "fmt" - - "github.com/Azure/go-autorest/autorest" -) - -// accessToken is interim autorest.Authorizer until we figure out oauth token -// handling. It holds the access token. -type accessToken string - -func (a accessToken) WithAuthorization() autorest.PrepareDecorator { - return autorest.WithHeader("Authorization", fmt.Sprintf("Bearer %s", string(a))) -} diff --git a/vendor/github.com/docker/machine/drivers/azure/azureutil/azureutil.go b/vendor/github.com/docker/machine/drivers/azure/azureutil/azureutil.go deleted file mode 100644 index f7f2cf51..00000000 --- a/vendor/github.com/docker/machine/drivers/azure/azureutil/azureutil.go +++ /dev/null @@ -1,741 +0,0 @@ -package azureutil - -import ( - "errors" - "fmt" - "net/http" - "net/url" - "strings" - "time" - - "github.com/docker/machine/drivers/azure/logutil" - "github.com/docker/machine/libmachine/log" - - "github.com/Azure/azure-sdk-for-go/arm/compute" - "github.com/Azure/azure-sdk-for-go/arm/network" - "github.com/Azure/azure-sdk-for-go/arm/resources/resources" - "github.com/Azure/azure-sdk-for-go/arm/storage" - blobstorage "github.com/Azure/azure-sdk-for-go/storage" - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "github.com/Azure/go-autorest/autorest/to" -) - -const ( - storageAccountPrefix = "vhds" // do not contaminate to user's existing storage accounts - fmtOSDiskContainer = "vhd-%s" // place vhds of VMs in separate containers for ease of cleanup - fmtOSDiskBlobName = "%s-os-disk.vhd" - fmtOSDiskResourceName = "%s-os-disk" - defaultStorageAPIVersion = blobstorage.DefaultAPIVersion -) - -var ( - // Private IPv4 address space per RFC 1918. - defaultVnetAddressPrefixes = []string{ - "192.168.0.0/16", - "10.0.0.0/8", - "172.16.0.0/12"} - - // Polling interval for VM power state check. - powerStatePollingInterval = time.Second * 5 - waitStartTimeout = time.Minute * 10 - waitPowerOffTimeout = time.Minute * 5 -) - -type AzureClient struct { - env azure.Environment - subscriptionID string - auth autorest.Authorizer -} - -func New(env azure.Environment, subsID string, auth autorest.Authorizer) *AzureClient { - return &AzureClient{env, subsID, auth} -} - -// RegisterResourceProviders registers current subscription to the specified -// resource provider namespaces if they are not already registered. Namespaces -// are case-insensitive. -func (a AzureClient) RegisterResourceProviders(namespaces ...string) error { - l, err := a.providersClient().List(nil) - if err != nil { - return err - } - if l.Value == nil { - return errors.New("Resource Providers list is returned as nil.") - } - - m := make(map[string]bool) - for _, p := range *l.Value { - m[strings.ToLower(to.String(p.Namespace))] = to.String(p.RegistrationState) == "Registered" - } - - for _, ns := range namespaces { - registered, ok := m[strings.ToLower(ns)] - if !ok { - return fmt.Errorf("Unknown resource provider %q", ns) - } - if registered { - log.Debugf("Already registered for %q", ns) - } else { - log.Info("Registering subscription to resource provider.", logutil.Fields{ - "ns": ns, - "subs": a.subscriptionID, - }) - if _, err := a.providersClient().Register(ns); err != nil { - return err - } - } - } - return nil -} - -// CreateResourceGroup creates a Resource Group if not exists -func (a AzureClient) CreateResourceGroup(name, location string) error { - if ok, err := a.resourceGroupExists(name); err != nil { - return err - } else if ok { - log.Infof("Resource group %q already exists.", name) - return nil - } - - log.Info("Creating resource group.", logutil.Fields{ - "name": name, - "location": location}) - _, err := a.resourceGroupsClient().CreateOrUpdate(name, - resources.ResourceGroup{ - Location: to.StringPtr(location), - }) - return err -} - -func (a AzureClient) resourceGroupExists(name string) (bool, error) { - log.Info("Querying existing resource group.", logutil.Fields{"name": name}) - _, err := a.resourceGroupsClient().Get(name) - return checkResourceExistsFromError(err) -} - -func (a AzureClient) CreateNetworkSecurityGroup(ctx *DeploymentContext, resourceGroup, name, location string, rules *[]network.SecurityRule) error { - log.Info("Configuring network security group.", logutil.Fields{ - "name": name, - "location": location}) - _, err := a.securityGroupsClient().CreateOrUpdate(resourceGroup, name, - network.SecurityGroup{ - Location: to.StringPtr(location), - Properties: &network.SecurityGroupPropertiesFormat{ - SecurityRules: rules, - }, - }, nil) - if err != nil { - return err - } - nsg, err := a.securityGroupsClient().Get(resourceGroup, name, "") - ctx.NetworkSecurityGroupID = to.String(nsg.ID) - return err -} - -func (a AzureClient) DeleteNetworkSecurityGroupIfExists(resourceGroup, name string) error { - return deleteResourceIfExists("Network Security Group", name, - func() error { - _, err := a.securityGroupsClient().Get(resourceGroup, name, "") - return err - }, - func() (autorest.Response, error) { return a.securityGroupsClient().Delete(resourceGroup, name, nil) }) -} - -func (a AzureClient) CreatePublicIPAddress(ctx *DeploymentContext, resourceGroup, name, location string, isStatic bool) error { - log.Info("Creating public IP address.", logutil.Fields{ - "name": name, - "static": isStatic}) - - var ipType network.IPAllocationMethod - if isStatic { - ipType = network.Static - } else { - ipType = network.Dynamic - } - - _, err := a.publicIPAddressClient().CreateOrUpdate(resourceGroup, name, - network.PublicIPAddress{ - Location: to.StringPtr(location), - Properties: &network.PublicIPAddressPropertiesFormat{ - PublicIPAllocationMethod: ipType, - }, - }, nil) - if err != nil { - return err - } - ip, err := a.publicIPAddressClient().Get(resourceGroup, name, "") - ctx.PublicIPAddressID = to.String(ip.ID) - return err -} - -func (a AzureClient) DeletePublicIPAddressIfExists(resourceGroup, name string) error { - return deleteResourceIfExists("Public IP", name, - func() error { - _, err := a.publicIPAddressClient().Get(resourceGroup, name, "") - return err - }, - func() (autorest.Response, error) { return a.publicIPAddressClient().Delete(resourceGroup, name, nil) }) -} - -func (a AzureClient) CreateVirtualNetworkIfNotExists(resourceGroup, name, location string) error { - f := logutil.Fields{ - "name": name, - "location": location} - - log.Info("Querying if virtual network already exists.", f) - - if exists, err := a.virtualNetworkExists(resourceGroup, name); err != nil { - return err - } else if exists { - log.Info("Virtual network already exists.", f) - return nil - } - - log.Info("Creating virtual network.", f) - _, err := a.virtualNetworksClient().CreateOrUpdate(resourceGroup, name, - network.VirtualNetwork{ - Location: to.StringPtr(location), - Properties: &network.VirtualNetworkPropertiesFormat{ - AddressSpace: &network.AddressSpace{ - AddressPrefixes: to.StringSlicePtr(defaultVnetAddressPrefixes), - }, - }, - }, nil) - return err -} - -func (a AzureClient) virtualNetworkExists(resourceGroup, name string) (bool, error) { - _, err := a.virtualNetworksClient().Get(resourceGroup, name, "") - return checkResourceExistsFromError(err) -} - -// CleanupVirtualNetworkIfExists removes a subnet if there are no subnets -// attached to it. Note that this method is not safe for multiple concurrent -// writers, in case of races, deployment of a machine could fail or resource -// might not be cleaned up. -func (a AzureClient) CleanupVirtualNetworkIfExists(resourceGroup, name string) error { - return a.cleanupResourceIfExists(&vnetCleanup{rg: resourceGroup, name: name}) -} - -func (a AzureClient) GetSubnet(resourceGroup, virtualNetwork, name string) (network.Subnet, error) { - return a.subnetsClient().Get(resourceGroup, virtualNetwork, name, "") -} - -func (a AzureClient) CreateSubnet(ctx *DeploymentContext, resourceGroup, virtualNetwork, name, subnetPrefix string) error { - log.Info("Configuring subnet.", logutil.Fields{ - "name": name, - "vnet": virtualNetwork, - "cidr": subnetPrefix}) - _, err := a.subnetsClient().CreateOrUpdate(resourceGroup, virtualNetwork, name, - network.Subnet{ - Properties: &network.SubnetPropertiesFormat{ - AddressPrefix: to.StringPtr(subnetPrefix), - }, - }, nil) - if err != nil { - return err - } - subnet, err := a.subnetsClient().Get(resourceGroup, virtualNetwork, name, "") - ctx.SubnetID = to.String(subnet.ID) - return err -} - -// CleanupSubnetIfExists removes a subnet if there are no IP configurations -// (through NICs) are attached to it. Note that this method is not safe for -// multiple concurrent writers, in case of races, deployment of a machine could -// fail or resource might not be cleaned up. -func (a AzureClient) CleanupSubnetIfExists(resourceGroup, virtualNetwork, name string) error { - return a.cleanupResourceIfExists(&subnetCleanup{ - rg: resourceGroup, vnet: virtualNetwork, name: name, - }) -} - -func (a AzureClient) CreateNetworkInterface(ctx *DeploymentContext, resourceGroup, name, location, publicIPAddressID, subnetID, nsgID, privateIPAddress string) error { - // NOTE(ahmetalpbalkan) This method is expected to fail if the user - // specified Azure location is different than location of the virtual - // network as Azure does not support cross-region virtual networks. In this - // situation, user will get an explanatory API error from Azure. - log.Info("Creating network interface.", logutil.Fields{"name": name}) - - var publicIP *network.PublicIPAddress - if publicIPAddressID != "" { - publicIP = &network.PublicIPAddress{ID: to.StringPtr(publicIPAddressID)} - } - - var privateIPAllocMethod = network.Dynamic - if privateIPAddress != "" { - privateIPAllocMethod = network.Static - } - _, err := a.networkInterfacesClient().CreateOrUpdate(resourceGroup, name, network.Interface{ - Location: to.StringPtr(location), - Properties: &network.InterfacePropertiesFormat{ - NetworkSecurityGroup: &network.SecurityGroup{ - ID: to.StringPtr(nsgID), - }, - IPConfigurations: &[]network.InterfaceIPConfiguration{ - { - Name: to.StringPtr("ip"), - Properties: &network.InterfaceIPConfigurationPropertiesFormat{ - PrivateIPAddress: to.StringPtr(privateIPAddress), - PrivateIPAllocationMethod: privateIPAllocMethod, - PublicIPAddress: publicIP, - Subnet: &network.Subnet{ - ID: to.StringPtr(subnetID), - }, - }, - }, - }, - }, - }, nil) - if err != nil { - return err - } - nic, err := a.networkInterfacesClient().Get(resourceGroup, name, "") - ctx.NetworkInterfaceID = to.String(nic.ID) - return err -} - -func (a AzureClient) DeleteNetworkInterfaceIfExists(resourceGroup, name string) error { - return deleteResourceIfExists("Network Interface", name, - func() error { - _, err := a.networkInterfacesClient().Get(resourceGroup, name, "") - return err - }, - func() (autorest.Response, error) { return a.networkInterfacesClient().Delete(resourceGroup, name, nil) }) -} - -func (a AzureClient) CreateStorageAccount(ctx *DeploymentContext, resourceGroup, location string, storageType storage.AccountType) error { - s, err := a.findOrCreateStorageAccount(resourceGroup, location, storageType) - ctx.StorageAccount = s - return err -} - -func (a AzureClient) findOrCreateStorageAccount(resourceGroup, location string, storageType storage.AccountType) (*storage.AccountProperties, error) { - prefix := storageAccountPrefix - if s, err := a.findStorageAccount(resourceGroup, location, prefix, storageType); err != nil { - return nil, err - } else if s != nil { - return s, nil - } - - log.Debug("No eligible storage account found.", logutil.Fields{ - "location": location, - "type": storageType}) - return a.createStorageAccount(resourceGroup, location, storageType) -} - -func (a AzureClient) findStorageAccount(resourceGroup, location, prefix string, storageType storage.AccountType) (*storage.AccountProperties, error) { - f := logutil.Fields{ - "type": storageType, - "prefix": prefix, - "location": location} - log.Debug("Querying existing storage accounts.", f) - l, err := a.storageAccountsClient().ListByResourceGroup(resourceGroup) - if err != nil { - return nil, err - } - - if l.Value != nil { - for _, v := range *l.Value { - log.Debug("Iterating...", logutil.Fields{ - "name": to.String(v.Name), - "type": storageType, - "location": to.String(v.Location), - }) - if to.String(v.Location) == location && v.Properties.AccountType == storageType && strings.HasPrefix(to.String(v.Name), prefix) { - log.Debug("Found eligible storage account.", logutil.Fields{"name": to.String(v.Name)}) - return v.Properties, nil - } - } - } - log.Debug("No account matching the pattern is found.", f) - return nil, err -} - -func (a AzureClient) createStorageAccount(resourceGroup, location string, storageType storage.AccountType) (*storage.AccountProperties, error) { - name := randomAzureStorageAccountName() // if it's not random enough, then you're unlucky - f := logutil.Fields{ - "name": name, - "location": location} - - log.Info("Creating storage account.", f) - _, err := a.storageAccountsClient().Create(resourceGroup, name, - storage.AccountCreateParameters{ - Location: to.StringPtr(location), - Properties: &storage.AccountPropertiesCreateParameters{ - AccountType: storageType, - }, - }, nil) - if err != nil { - return nil, err - } - - s, err := a.storageAccountsClient().GetProperties(resourceGroup, name) - if err != nil { - return nil, err - } - return s.Properties, nil -} - -func (a AzureClient) VirtualMachineExists(resourceGroup, name string) (bool, error) { - _, err := a.virtualMachinesClient().Get(resourceGroup, name, "") - return checkResourceExistsFromError(err) -} - -func (a AzureClient) DeleteVirtualMachineIfExists(resourceGroup, name string) error { - var vmRef compute.VirtualMachine - err := deleteResourceIfExists("Virtual Machine", name, - func() error { - vm, err := a.virtualMachinesClient().Get(resourceGroup, name, "") - vmRef = vm - return err - }, - func() (autorest.Response, error) { return a.virtualMachinesClient().Delete(resourceGroup, name, nil) }) - if err != nil { - return err - } - - // Remove disk - if vmRef.Properties != nil { - vhdURL := to.String(vmRef.Properties.StorageProfile.OsDisk.Vhd.URI) - return a.removeOSDiskBlob(resourceGroup, name, vhdURL) - } - return nil -} - -func (a AzureClient) removeOSDiskBlob(resourceGroup, vmName, vhdURL string) error { - // NOTE(ahmetalpbalkan) Currently Azure APIs do not offer a Delete Virtual - // Machine functionality which deletes the attached disks along with the VM - // as well. Therefore we find out the storage account from OS disk URL and - // fetch storage account keys to delete the container containing the disk. - log.Debug("Attempting to remove OS disk.", logutil.Fields{"vm": vmName}) - log.Debugf("OS Disk vhd URL: %q", vhdURL) - - vhdContainer := osDiskStorageContainerName(vmName) - - storageAccount, blobServiceBaseURL := extractStorageAccountFromVHDURL(vhdURL) - if storageAccount == "" { - log.Warn("Could not extract the storage account name from URL. Please clean up the disk yourself.") - return nil - } - log.Debug("Fetching storage account keys.", logutil.Fields{ - "account": storageAccount, - "storageBase": blobServiceBaseURL, - }) - keys, err := a.storageAccountsClient().ListKeys(resourceGroup, storageAccount) - if err != nil { - return err - } - - storageAccountKey := to.String(keys.Key1) - bs, err := blobstorage.NewClient(storageAccount, storageAccountKey, blobServiceBaseURL, defaultStorageAPIVersion, true) - if err != nil { - return fmt.Errorf("Error constructing blob storage client :%v", err) - } - - f := logutil.Fields{ - "account": storageAccount, - "container": vhdContainer} - log.Debug("Removing container of disk blobs.", f) - ok, err := bs.GetBlobService().DeleteContainerIfExists(vhdContainer) // HTTP round-trip will not be inspected - if err != nil { - log.Debugf("Container remove happened: %v", ok) - } - return err -} - -func (a AzureClient) CreateVirtualMachine(resourceGroup, name, location, size, availabilitySetID, networkInterfaceID, - username, sshPublicKey, imageName string, storageAccount *storage.AccountProperties) error { - log.Info("Creating virtual machine.", logutil.Fields{ - "name": name, - "location": location, - "size": size, - "username": username, - "osImage": imageName, - }) - - img, err := parseImageName(imageName) - if err != nil { - return err - } - - var ( - osDiskBlobURL = osDiskStorageBlobURL(storageAccount, name) - sshKeyPath = fmt.Sprintf("/home/%s/.ssh/authorized_keys", username) - ) - log.Debugf("OS disk blob will be placed at: %s", osDiskBlobURL) - log.Debugf("SSH key will be placed at: %s", sshKeyPath) - - _, err = a.virtualMachinesClient().CreateOrUpdate(resourceGroup, name, - compute.VirtualMachine{ - Location: to.StringPtr(location), - Properties: &compute.VirtualMachineProperties{ - AvailabilitySet: &compute.SubResource{ - ID: to.StringPtr(availabilitySetID), - }, - HardwareProfile: &compute.HardwareProfile{ - VMSize: compute.VirtualMachineSizeTypes(size), - }, - NetworkProfile: &compute.NetworkProfile{ - NetworkInterfaces: &[]compute.NetworkInterfaceReference{ - { - ID: to.StringPtr(networkInterfaceID), - }, - }, - }, - OsProfile: &compute.OSProfile{ - ComputerName: to.StringPtr(name), - AdminUsername: to.StringPtr(username), - LinuxConfiguration: &compute.LinuxConfiguration{ - DisablePasswordAuthentication: to.BoolPtr(true), - SSH: &compute.SSHConfiguration{ - PublicKeys: &[]compute.SSHPublicKey{ - { - Path: to.StringPtr(sshKeyPath), - KeyData: to.StringPtr(sshPublicKey), - }, - }, - }, - }, - }, - StorageProfile: &compute.StorageProfile{ - ImageReference: &compute.ImageReference{ - Publisher: to.StringPtr(img.publisher), - Offer: to.StringPtr(img.offer), - Sku: to.StringPtr(img.sku), - Version: to.StringPtr(img.version), - }, - OsDisk: &compute.OSDisk{ - Name: to.StringPtr(fmt.Sprintf(fmtOSDiskResourceName, name)), - Caching: compute.ReadWrite, - CreateOption: compute.FromImage, - Vhd: &compute.VirtualHardDisk{ - URI: to.StringPtr(osDiskBlobURL), - }, - }, - }, - }, - }, nil) - return err -} - -func (a AzureClient) GetVirtualMachinePowerState(resourceGroup, name string) (VMPowerState, error) { - log.Debug("Querying instance view for power state.") - vm, err := a.virtualMachinesClient().Get(resourceGroup, name, "instanceView") - if err != nil { - log.Errorf("Error querying instance view: %v", err) - return Unknown, err - } - return powerStateFromInstanceView(vm.Properties.InstanceView), nil -} - -func (a AzureClient) GetAvailabilitySet(resourceGroup, name string) (compute.AvailabilitySet, error) { - return a.availabilitySetsClient().Get(resourceGroup, name) -} - -func (a AzureClient) CreateAvailabilitySetIfNotExists(ctx *DeploymentContext, resourceGroup, name, location string) error { - f := logutil.Fields{"name": name} - log.Info("Configuring availability set.", f) - as, err := a.availabilitySetsClient().CreateOrUpdate(resourceGroup, name, - compute.AvailabilitySet{ - Location: to.StringPtr(location), - }) - ctx.AvailabilitySetID = to.String(as.ID) - return err -} - -// CleanupAvailabilitySetIfExists removes an availability set if there are no -// virtual machines attached to it. Note that this method is not safe for -// multiple concurrent writers, in case of races, deployment of a machine could -// fail or resource might not be cleaned up. -func (a AzureClient) CleanupAvailabilitySetIfExists(resourceGroup, name string) error { - return a.cleanupResourceIfExists(&avSetCleanup{rg: resourceGroup, name: name}) -} - -// GetPublicIPAddress attempts to get public IP address from the Public IP -// resource. If IP address is not allocated yet, returns empty string. -func (a AzureClient) GetPublicIPAddress(resourceGroup, name string) (string, error) { - f := logutil.Fields{"name": name} - log.Debug("Querying public IP address.", f) - ip, err := a.publicIPAddressClient().Get(resourceGroup, name, "") - if err != nil { - return "", err - } - if ip.Properties == nil { - log.Debug("publicIP.Properties is nil. Could not determine IP address", f) - return "", nil - } - return to.String(ip.Properties.IPAddress), nil -} - -// GetPrivateIPAddress attempts to retrieve private IP address of the specified -// network interface name. If IP address is not allocated yet, returns empty -// string. -func (a AzureClient) GetPrivateIPAddress(resourceGroup, name string) (string, error) { - f := logutil.Fields{"name": name} - log.Debug("Querying network interface.", f) - nic, err := a.networkInterfacesClient().Get(resourceGroup, name, "") - if err != nil { - return "", err - } - if nic.Properties == nil || nic.Properties.IPConfigurations == nil || - len(*nic.Properties.IPConfigurations) == 0 { - log.Debug("No IPConfigurations found on NIC", f) - return "", nil - } - return to.String((*nic.Properties.IPConfigurations)[0].Properties.PrivateIPAddress), nil -} - -// StartVirtualMachine starts the virtual machine and waits until it reaches -// the goal state (running) or times out. -func (a AzureClient) StartVirtualMachine(resourceGroup, name string) error { - log.Info("Starting virtual machine.", logutil.Fields{"vm": name}) - if _, err := a.virtualMachinesClient().Start(resourceGroup, name, nil); err != nil { - return err - } - return a.waitVMPowerState(resourceGroup, name, Running, waitStartTimeout) -} - -// StopVirtualMachine power offs the virtual machine and waits until it reaches -// the goal state (stopped) or times out. -func (a AzureClient) StopVirtualMachine(resourceGroup, name string) error { - log.Info("Stopping virtual machine.", logutil.Fields{"vm": name}) - if _, err := a.virtualMachinesClient().PowerOff(resourceGroup, name, nil); err != nil { - return err - } - return a.waitVMPowerState(resourceGroup, name, Stopped, waitPowerOffTimeout) -} - -// RestartVirtualMachine restarts the virtual machine and waits until it reaches -// the goal state (stopped) or times out. -func (a AzureClient) RestartVirtualMachine(resourceGroup, name string) error { - log.Info("Restarting virtual machine.", logutil.Fields{"vm": name}) - if _, err := a.virtualMachinesClient().Restart(resourceGroup, name, nil); err != nil { - return err - } - return a.waitVMPowerState(resourceGroup, name, Running, waitStartTimeout) -} - -// deleteResourceIfExists is an utility method to determine if a resource exists -// from the error returned from its Get response. If so, deletes it. name is -// used only for logging purposes. -func deleteResourceIfExists(resourceType, name string, getFunc func() error, deleteFunc func() (autorest.Response, error)) error { - f := logutil.Fields{"name": name} - log.Debug(fmt.Sprintf("Querying if %s exists.", resourceType), f) - if exists, err := checkResourceExistsFromError(getFunc()); err != nil { - return err - } else if !exists { - log.Info(fmt.Sprintf("%s does not exist. Skipping.", resourceType), f) - return nil - } - log.Info(fmt.Sprintf("Removing %s resource.", resourceType), f) - _, err := deleteFunc() - return err -} - -// waitVMPowerState polls the Virtual Machine instance view until it reaches the -// specified goal power state or times out. If checking for virtual machine -// state fails or waiting times out, an error is returned. -func (a AzureClient) waitVMPowerState(resourceGroup, name string, goalState VMPowerState, timeout time.Duration) error { - // NOTE(ahmetalpbalkan): Azure APIs for Start and Stop are actually async - // operations on which our SDK blocks and does polling until the operation - // is complete. - // - // By the time the issued power cycle operation is complete, the VM will be - // already in the goal PowerState. Hence, this method will return in the - // first check, however there is no harm in being defensive. - log.Debug("Waiting until VM reaches goal power state.", logutil.Fields{ - "vm": name, - "goalState": goalState, - "timeout": timeout, - }) - - chErr := make(chan error) - go func(ch chan error) { - for { - select { - case <-ch: - // channel closed - return - default: - state, err := a.GetVirtualMachinePowerState(resourceGroup, name) - if err != nil { - ch <- err - return - } - if state != goalState { - log.Debug(fmt.Sprintf("Waiting %v...", powerStatePollingInterval), - logutil.Fields{ - "goalState": goalState, - "state": state, - }) - time.Sleep(powerStatePollingInterval) - } else { - log.Debug("Reached goal power state.", - logutil.Fields{"state": state}) - ch <- nil - return - } - } - } - }(chErr) - - select { - case <-time.After(timeout): - close(chErr) - return fmt.Errorf("Waiting for goal state %q timed out after %v", goalState, timeout) - case err := <-chErr: - return err - } -} - -// checkExistsFromError inspects an error and returns a true if err is nil, -// false if error is an autorest.Error with StatusCode=404 and will return the -// error back if error is another status code or another type of error. -func checkResourceExistsFromError(err error) (bool, error) { - if err == nil { - return true, nil - } - v, ok := err.(autorest.DetailedError) - if ok && v.StatusCode == http.StatusNotFound { - return false, nil - } - return false, v -} - -// osDiskStorageBlobURL gives the full url of the VHD blob where the OS disk for -// the given VM should be stored. -func osDiskStorageBlobURL(account *storage.AccountProperties, vmName string) string { - containerURL := osDiskStorageContainerURL(account, vmName) // has trailing slash - blobName := fmt.Sprintf(fmtOSDiskBlobName, vmName) - return containerURL + blobName -} - -// osDiskStorageContainerName returns the container name the OS disk for the VM -// should be saved. -func osDiskStorageContainerName(vm string) string { return fmt.Sprintf(fmtOSDiskContainer, vm) } - -// osDiskStorageContainerURL crafts a URL with a trailing slash pointing -// to the full Azure Blob Container URL for given VM name. -func osDiskStorageContainerURL(account *storage.AccountProperties, vmName string) string { - return fmt.Sprintf("%s%s/", to.String(account.PrimaryEndpoints.Blob), osDiskStorageContainerName(vmName)) -} - -// extractStorageAccountFromVHDURL parses a blob URL and extracts the Azure -// Storage account name from the URL, namely first subdomain of the hostname and -// the Azure Storage service base URL (e.g. core.windows.net). If it could not -// be parsed, returns empty string. -func extractStorageAccountFromVHDURL(vhdURL string) (string, string) { - u, err := url.Parse(vhdURL) - if err != nil { - log.Warn(fmt.Sprintf("URL parse error: %v", err), logutil.Fields{"url": vhdURL}) - return "", "" - } - parts := strings.SplitN(u.Host, ".", 2) - if len(parts) != 2 { - log.Warnf("Could not split account name and storage base URL: %s", vhdURL) - return "", "" - } - return parts[0], strings.TrimPrefix(parts[1], "blob.") // "blob." prefix will added by azure storage sdk -} diff --git a/vendor/github.com/docker/machine/drivers/azure/azureutil/cleanup.go b/vendor/github.com/docker/machine/drivers/azure/azureutil/cleanup.go deleted file mode 100644 index 431ec530..00000000 --- a/vendor/github.com/docker/machine/drivers/azure/azureutil/cleanup.go +++ /dev/null @@ -1,126 +0,0 @@ -package azureutil - -import ( - "fmt" - - "github.com/Azure/azure-sdk-for-go/arm/compute" - "github.com/Azure/azure-sdk-for-go/arm/network" - "github.com/docker/machine/drivers/azure/logutil" - "github.com/docker/machine/libmachine/log" -) - -type cleanupResource interface { - // Get retrieves if the resource and saves its reference to the instance - // for further using, returned error is used to determine if the resource - // exists - Get(a AzureClient) error - - // Delete deletes the resource - Delete(a AzureClient) error - - // HasAttachedResources checks the resource reference if it has dependent - // resources attached to it preventing it from being deleted. - HasAttachedResources() bool - - // ResourceType returns human-readable name of the type of the resource. - ResourceType() string - - // LogFields returns the logging fields used during cleanup logging. - LogFields() logutil.Fields -} - -// cleanupResourceIfExists checks if the resource exists, if it does and it -// does not have any attached resources, then deletes the resource. If the -// resource does not exist or is not eligible for cleanup, returns nil. If an -// error is encountered, returns the error. -func (a AzureClient) cleanupResourceIfExists(r cleanupResource) error { - f := r.LogFields() - log.Info(fmt.Sprintf("Attempting to clean up %s resource...", r.ResourceType()), f) - err := r.Get(a) - if exists, err := checkResourceExistsFromError(err); err != nil { - return err - } else if !exists { - log.Debug(fmt.Sprintf("%s resource does not exist. Skipping.", r.ResourceType()), f) - return nil - } - - if !r.HasAttachedResources() { - log.Debug(fmt.Sprintf("%s does not have any attached dependent resource.", r.ResourceType()), f) - log.Info(fmt.Sprintf("Removing %s resource...", r.ResourceType()), f) - return r.Delete(a) - } - log.Info(fmt.Sprintf("%s is still in use by other resources, skipping removal.", r.ResourceType()), f) - return nil -} - -// subnetCleanup manages cleanup of Subnet resources -type subnetCleanup struct { - rg, vnet, name string - ref network.Subnet -} - -func (c *subnetCleanup) Get(a AzureClient) (err error) { - c.ref, err = a.subnetsClient().Get(c.rg, c.vnet, c.name, "") - return err -} - -func (c *subnetCleanup) Delete(a AzureClient) error { - _, err := a.subnetsClient().Delete(c.rg, c.vnet, c.name, nil) - return err -} - -func (c *subnetCleanup) ResourceType() string { return "Subnet" } - -func (c *subnetCleanup) LogFields() logutil.Fields { return logutil.Fields{"name": c.name} } - -func (c *subnetCleanup) HasAttachedResources() bool { - return c.ref.Properties.IPConfigurations != nil && len(*c.ref.Properties.IPConfigurations) > 0 -} - -// vnetCleanup manages cleanup of Virtual Network resources. -type vnetCleanup struct { - rg, name string - ref network.VirtualNetwork -} - -func (c *vnetCleanup) Get(a AzureClient) (err error) { - c.ref, err = a.virtualNetworksClient().Get(c.rg, c.name, "") - return err -} - -func (c *vnetCleanup) Delete(a AzureClient) error { - _, err := a.virtualNetworksClient().Delete(c.rg, c.name, nil) - return err -} - -func (c *vnetCleanup) ResourceType() string { return "Virtual Network" } - -func (c *vnetCleanup) LogFields() logutil.Fields { return logutil.Fields{"name": c.name} } - -func (c *vnetCleanup) HasAttachedResources() bool { - return c.ref.Properties.Subnets != nil && len(*c.ref.Properties.Subnets) > 0 -} - -// avSetCleanup manages cleanup of Availability Set resources. -type avSetCleanup struct { - rg, name string - ref compute.AvailabilitySet -} - -func (c *avSetCleanup) Get(a AzureClient) (err error) { - c.ref, err = a.availabilitySetsClient().Get(c.rg, c.name) - return err -} - -func (c *avSetCleanup) Delete(a AzureClient) error { - _, err := a.availabilitySetsClient().Delete(c.rg, c.name) - return err -} - -func (c *avSetCleanup) ResourceType() string { return "Availability Set" } - -func (c *avSetCleanup) LogFields() logutil.Fields { return logutil.Fields{"name": c.name} } - -func (c *avSetCleanup) HasAttachedResources() bool { - return c.ref.Properties.VirtualMachines != nil && len(*c.ref.Properties.VirtualMachines) > 0 -} diff --git a/vendor/github.com/docker/machine/drivers/azure/azureutil/clients.go b/vendor/github.com/docker/machine/drivers/azure/azureutil/clients.go deleted file mode 100644 index 0a06e3d1..00000000 --- a/vendor/github.com/docker/machine/drivers/azure/azureutil/clients.go +++ /dev/null @@ -1,137 +0,0 @@ -package azureutil - -import ( - "fmt" - "time" - - "github.com/docker/machine/version" - - "github.com/Azure/azure-sdk-for-go/arm/compute" - "github.com/Azure/azure-sdk-for-go/arm/network" - "github.com/Azure/azure-sdk-for-go/arm/resources/resources" - "github.com/Azure/azure-sdk-for-go/arm/resources/subscriptions" - "github.com/Azure/azure-sdk-for-go/arm/storage" - "github.com/Azure/go-autorest/autorest" -) - -// TODO(ahmetalpbalkan) Remove duplication around client creation. This is -// happening because we auto-generate our SDK and we don't have generics in Go. -// We are hoping to come up with a factory or some defaults instance to set -// these client configuration in a central place in azure-sdk-for-go. - -func oauthClient() autorest.Client { - c := autorest.NewClientWithUserAgent(fmt.Sprintf("docker-machine/%s", version.Version)) - c.RequestInspector = withInspection() - c.ResponseInspector = byInspecting() - // TODO set user agent - return c -} - -func subscriptionsClient(baseURI string) subscriptions.Client { - c := subscriptions.NewClientWithBaseURI(baseURI, "") // used only for unauthenticated requests for generic subs IDs - c.Client.UserAgent += fmt.Sprintf(";docker-machine/%s", version.Version) - c.RequestInspector = withInspection() - c.ResponseInspector = byInspecting() - c.PollingDelay = time.Second * 5 - return c -} - -func (a AzureClient) providersClient() resources.ProvidersClient { - c := resources.NewProvidersClientWithBaseURI(a.env.ResourceManagerEndpoint, a.subscriptionID) - c.Authorizer = a.auth - c.Client.UserAgent += fmt.Sprintf(";docker-machine/%s", version.Version) - c.RequestInspector = withInspection() - c.ResponseInspector = byInspecting() - c.PollingDelay = time.Second * 5 - return c -} - -func (a AzureClient) resourceGroupsClient() resources.GroupsClient { - c := resources.NewGroupsClientWithBaseURI(a.env.ResourceManagerEndpoint, a.subscriptionID) - c.Authorizer = a.auth - c.Client.UserAgent += fmt.Sprintf(";docker-machine/%s", version.Version) - c.RequestInspector = withInspection() - c.ResponseInspector = byInspecting() - c.PollingDelay = time.Second * 5 - return c -} - -func (a AzureClient) securityGroupsClient() network.SecurityGroupsClient { - c := network.NewSecurityGroupsClientWithBaseURI(a.env.ResourceManagerEndpoint, a.subscriptionID) - c.Authorizer = a.auth - c.Client.UserAgent += fmt.Sprintf(";docker-machine/%s", version.Version) - c.RequestInspector = withInspection() - c.ResponseInspector = byInspecting() - c.PollingDelay = time.Second * 5 - return c -} - -func (a AzureClient) virtualNetworksClient() network.VirtualNetworksClient { - c := network.NewVirtualNetworksClientWithBaseURI(a.env.ResourceManagerEndpoint, a.subscriptionID) - c.Authorizer = a.auth - c.Client.UserAgent += fmt.Sprintf(";docker-machine/%s", version.Version) - c.RequestInspector = withInspection() - c.ResponseInspector = byInspecting() - c.PollingDelay = time.Second * 5 - return c -} - -func (a AzureClient) subnetsClient() network.SubnetsClient { - c := network.NewSubnetsClientWithBaseURI(a.env.ResourceManagerEndpoint, a.subscriptionID) - c.Authorizer = a.auth - c.Client.UserAgent += fmt.Sprintf(";docker-machine/%s", version.Version) - c.RequestInspector = withInspection() - c.ResponseInspector = byInspecting() - c.PollingDelay = time.Second * 5 - return c -} - -func (a AzureClient) networkInterfacesClient() network.InterfacesClient { - c := network.NewInterfacesClientWithBaseURI(a.env.ResourceManagerEndpoint, a.subscriptionID) - c.Authorizer = a.auth - c.Client.UserAgent += fmt.Sprintf(";docker-machine/%s", version.Version) - c.RequestInspector = withInspection() - c.ResponseInspector = byInspecting() - c.PollingDelay = time.Second * 5 - return c -} - -func (a AzureClient) publicIPAddressClient() network.PublicIPAddressesClient { - c := network.NewPublicIPAddressesClientWithBaseURI(a.env.ResourceManagerEndpoint, a.subscriptionID) - c.Authorizer = a.auth - c.Client.UserAgent += fmt.Sprintf(";docker-machine/%s", version.Version) - c.RequestInspector = withInspection() - c.ResponseInspector = byInspecting() - c.PollingDelay = time.Second * 5 - return c -} - -func (a AzureClient) storageAccountsClient() storage.AccountsClient { - c := storage.NewAccountsClientWithBaseURI(a.env.ResourceManagerEndpoint, a.subscriptionID) - c.Authorizer = a.auth - c.Client.UserAgent += fmt.Sprintf(";docker-machine/%s", version.Version) - c.RequestInspector = withInspection() - c.ResponseInspector = byInspecting() - c.PollingDelay = time.Second * 5 - return c -} - -func (a AzureClient) virtualMachinesClient() compute.VirtualMachinesClient { - c := compute.NewVirtualMachinesClientWithBaseURI(a.env.ResourceManagerEndpoint, a.subscriptionID) - c.Authorizer = a.auth - c.Client.UserAgent += fmt.Sprintf(";docker-machine/%s", version.Version) - c.RequestInspector = withInspection() - c.ResponseInspector = byInspecting() - c.PollingDelay = time.Second * 5 - return c -} - -func (a AzureClient) availabilitySetsClient() compute.AvailabilitySetsClient { - c := compute.NewAvailabilitySetsClientWithBaseURI(a.env.ResourceManagerEndpoint, a.subscriptionID) - c.Authorizer = a.auth - c.Client.UserAgent += fmt.Sprintf(";docker-machine/%s", version.Version) - c.RequestInspector = withInspection() - c.ResponseInspector = byInspecting() - c.PollingDelay = time.Second * 5 - return c -} diff --git a/vendor/github.com/docker/machine/drivers/azure/azureutil/context.go b/vendor/github.com/docker/machine/drivers/azure/azureutil/context.go deleted file mode 100644 index 63d54af5..00000000 --- a/vendor/github.com/docker/machine/drivers/azure/azureutil/context.go +++ /dev/null @@ -1,20 +0,0 @@ -package azureutil - -import ( - "github.com/Azure/azure-sdk-for-go/arm/network" - "github.com/Azure/azure-sdk-for-go/arm/storage" -) - -// DeploymentContext contains references to various sources created and then -// used in creating other resources. -type DeploymentContext struct { - VirtualNetworkExists bool - StorageAccount *storage.AccountProperties - PublicIPAddressID string - NetworkSecurityGroupID string - SubnetID string - NetworkInterfaceID string - SSHPublicKey string - AvailabilitySetID string - FirewallRules *[]network.SecurityRule -} diff --git a/vendor/github.com/docker/machine/drivers/azure/azureutil/inspector.go b/vendor/github.com/docker/machine/drivers/azure/azureutil/inspector.go deleted file mode 100644 index d992b696..00000000 --- a/vendor/github.com/docker/machine/drivers/azure/azureutil/inspector.go +++ /dev/null @@ -1,36 +0,0 @@ -package azureutil - -import ( - "net/http" - - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "github.com/docker/machine/drivers/azure/logutil" - "github.com/docker/machine/libmachine/log" -) - -func withInspection() autorest.PrepareDecorator { - return func(p autorest.Preparer) autorest.Preparer { - return autorest.PreparerFunc(func(r *http.Request) (*http.Request, error) { - log.Debug("Azure request", logutil.Fields{ - "method": r.Method, - "request": r.URL.String(), - }) - return p.Prepare(r) - }) - } -} - -func byInspecting() autorest.RespondDecorator { - return func(r autorest.Responder) autorest.Responder { - return autorest.ResponderFunc(func(resp *http.Response) error { - log.Debug("Azure response", logutil.Fields{ - "status": resp.Status, - "method": resp.Request.Method, - "request": resp.Request.URL.String(), - "x-ms-request-id": azure.ExtractRequestID(resp), - }) - return r.Respond(resp) - }) - } -} diff --git a/vendor/github.com/docker/machine/drivers/azure/azureutil/naming.go b/vendor/github.com/docker/machine/drivers/azure/azureutil/naming.go deleted file mode 100644 index 9967fcf8..00000000 --- a/vendor/github.com/docker/machine/drivers/azure/azureutil/naming.go +++ /dev/null @@ -1,21 +0,0 @@ -package azureutil - -import ( - "fmt" -) - -const ( - fmtNIC = "%s-nic" - fmtIP = "%s-ip" - fmtNSG = "%s-firewall" - fmtVM = "%s" -) - -// ResourceNaming provides methods to construct Azure resource names for a given -// machine name. -type ResourceNaming string - -func (r ResourceNaming) IP() string { return fmt.Sprintf(fmtIP, r) } -func (r ResourceNaming) NIC() string { return fmt.Sprintf(fmtNIC, r) } -func (r ResourceNaming) NSG() string { return fmt.Sprintf(fmtNSG, r) } -func (r ResourceNaming) VM() string { return fmt.Sprintf(fmtVM, r) } diff --git a/vendor/github.com/docker/machine/drivers/azure/azureutil/powerstate.go b/vendor/github.com/docker/machine/drivers/azure/azureutil/powerstate.go deleted file mode 100644 index b9518e9f..00000000 --- a/vendor/github.com/docker/machine/drivers/azure/azureutil/powerstate.go +++ /dev/null @@ -1,93 +0,0 @@ -package azureutil - -import ( - "strings" - - "github.com/docker/machine/libmachine/log" - - "github.com/Azure/azure-sdk-for-go/arm/compute" - "github.com/Azure/go-autorest/autorest/to" -) - -type VMPowerState string - -const ( - // Unknown is returned when Azure does not provide a PowerState (happens - // when VM is just deployed or started transitioning to another state) or - // obtained PowerState is not one of the following. - Unknown VMPowerState = "" - - // Stopped indicates that VM is allocated and in powered off state or the VM - // has been just deployed for the first time. In this state, VM can be powered - // on or - Stopped VMPowerState = "stopped" - - // Stopping indicates that VM is about to go into powered off state. - Stopping VMPowerState = "stopping" - - // Starting indicates that VM is being created or powered on. - Starting VMPowerState = "starting" - - // Running indicates that VM is either powered on or being rebooted. VM - // stays in this state during the reboot operation. In this state VM can be - // stopped, restarted or deallocated. - Running VMPowerState = "running" - - // Deallocating indicates that the VM is being terminated. - Deallocating VMPowerState = "deallocating" - - // Deallocated indicates that the VM is being terminated. In this state, VM - // can be powered on or powered off. - Deallocated VMPowerState = "deallocated" -) - -const ( - powerStateCodePrefix = "PowerState/" -) - -// powerStateFromInstanceView reads the instance view response and extracts the -// power state status (if exists) from there. If no status is found or an -// unknown status has occured, returns Unknown. -func powerStateFromInstanceView(instanceView *compute.VirtualMachineInstanceView) VMPowerState { - if instanceView == nil { - log.Debug("Retrieved nil instance view.") - return Unknown - } else if instanceView.Statuses == nil || len(*instanceView.Statuses) == 0 { - log.Debug("Retrieved nil or empty instanceView.statuses.") - return Unknown - } - statuses := *instanceView.Statuses - - // Filter statuses whose "code" starts with "PowerState/" - var s *compute.InstanceViewStatus - for _, v := range statuses { - log.Debugf("Matching pattern for code=%q", to.String(v.Code)) - if strings.HasPrefix(to.String(v.Code), powerStateCodePrefix) { - log.Debug("Power state found.") - s = &v - break - } - } - if s == nil { - log.Debug("No PowerState found in the instance view statuses.") - return Unknown - } - code := strings.TrimPrefix(to.String(s.Code), powerStateCodePrefix) - switch code { - case "stopped": - return Stopped - case "stopping": - return Stopping - case "starting": - return Starting - case "running": - return Running - case "deallocated": - return Deallocated - case "deallocating": - return Deallocating - default: - log.Warn("Encountered unknown PowerState for virtual machine: %q", code) - return Unknown - } -} diff --git a/vendor/github.com/docker/machine/drivers/azure/azureutil/tenantid.go b/vendor/github.com/docker/machine/drivers/azure/azureutil/tenantid.go deleted file mode 100644 index 60fa52e1..00000000 --- a/vendor/github.com/docker/machine/drivers/azure/azureutil/tenantid.go +++ /dev/null @@ -1,116 +0,0 @@ -package azureutil - -import ( - "fmt" - "io/ioutil" - "net/http" - "os" - "path/filepath" - "regexp" - "strings" - - "github.com/docker/machine/libmachine/log" - - "github.com/Azure/go-autorest/autorest/azure" -) - -// laodOrFindTenantID figures out the AAD tenant ID of the subscription by first -// looking at the cache file, if not exists, makes a network call to load it and -// cache it for future use. -func loadOrFindTenantID(env azure.Environment, subscriptionID string) (string, error) { - var tenantID string - - // Load from cache - fp := tenantIDPath(subscriptionID) - b, err := ioutil.ReadFile(fp) - if err == nil { - tenantID = strings.TrimSpace(string(b)) - log.Debugf("Tenant ID loaded from file: %s", fp) - } else if os.IsNotExist(err) { - log.Debugf("Tenant ID file not found: %s", fp) - } else { - return "", fmt.Errorf("Failed to load tenant ID file: %v", err) - } - - // Handle cache miss - if tenantID == "" { - log.Debug("Making API call to find tenant ID") - t, err := findTenantID(env, subscriptionID) - if err != nil { - return "", err - } - tenantID = t - - // Cache the result - if err := saveTenantID(fp, tenantID); err != nil { - return "", fmt.Errorf("Failed to save tenant ID: %v", err) - } - log.Debugf("Cached tenant ID to file: %s", fp) - } - return tenantID, nil -} - -// findTenantID figures out the AAD tenant ID of the subscription by making an -// unauthenticated request to the Get Subscription Details endpoint and parses -// the value from WWW-Authenticate header. -func findTenantID(env azure.Environment, subscriptionID string) (string, error) { - const hdrKey = "WWW-Authenticate" - c := subscriptionsClient(env.ResourceManagerEndpoint) - - // we expect this request to fail (err != nil), but we are only interested - // in headers, so surface the error if the Response is not present (i.e. - // network error etc) - subs, err := c.Get(subscriptionID) - if subs.Response.Response == nil { - return "", fmt.Errorf("Request failed: %v", err) - } - - // Expecting 401 StatusUnauthorized here, just read the header - if subs.StatusCode != http.StatusUnauthorized { - return "", fmt.Errorf("Unexpected response from Get Subscription: %v", err) - } - hdr := subs.Header.Get(hdrKey) - if hdr == "" { - return "", fmt.Errorf("Header %v not found in Get Subscription response", hdrKey) - } - - // Example value for hdr: - // Bearer authorization_uri="https://login.windows.net/996fe9d1-6171-40aa-945b-4c64b63bf655", error="invalid_token", error_description="The authentication failed because of missing 'Authorization' header." - r := regexp.MustCompile(`authorization_uri=".*/([0-9a-f\-]+)"`) - m := r.FindStringSubmatch(hdr) - if m == nil { - return "", fmt.Errorf("Could not find the tenant ID in header: %s %q", hdrKey, hdr) - } - return m[1], nil -} - -// saveTenantID performs an atomic write to the path with given tenantID contents. -func saveTenantID(path string, tenantID string) error { - var perm os.FileMode = 0600 - - dir := filepath.Dir(path) - if err := os.MkdirAll(dir, os.ModePerm); err != nil { - return fmt.Errorf("Failed to create directory %s: %v", dir, err) - } - - f, err := ioutil.TempFile(dir, "tenantid") - if err != nil { - return fmt.Errorf("Failed to create temp file: %v", err) - } - defer f.Close() - - fp := f.Name() - if _, err := f.Write([]byte(tenantID)); err != nil { - return fmt.Errorf("Failed to write tenant ID to file: %v", err) - } - f.Close() - - // atomic move by rename - if err := os.Rename(fp, path); err != nil { - return fmt.Errorf("Failed to rename file. src=%s dst=%s error=%v", fp, path, err) - } - if err := os.Chmod(path, perm); err != nil { - return fmt.Errorf("Failed to chmod the file %s: %v", path, err) - } - return nil -} diff --git a/vendor/github.com/docker/machine/drivers/azure/azureutil/util.go b/vendor/github.com/docker/machine/drivers/azure/azureutil/util.go deleted file mode 100644 index 9d47b769..00000000 --- a/vendor/github.com/docker/machine/drivers/azure/azureutil/util.go +++ /dev/null @@ -1,45 +0,0 @@ -package azureutil - -import ( - "fmt" - "math/rand" - "strings" - "time" -) - -/* Utilities */ - -// randomAzureStorageAccountName generates a valid storage account name prefixed -// with a predefined string. Availability of the name is not checked. Uses maximum -// length to maximise randomness. -func randomAzureStorageAccountName() string { - const ( - maxLen = 24 - chars = "0123456789abcdefghijklmnopqrstuvwxyz" - ) - return storageAccountPrefix + randomString(maxLen-len(storageAccountPrefix), chars) -} - -// randomString generates a random string of given length using specified alphabet. -func randomString(n int, alphabet string) string { - r := timeSeed() - b := make([]byte, n) - for i := range b { - b[i] = alphabet[r.Intn(len(alphabet))] - } - return string(b) -} - -// imageName holds various components of an OS image name identifier -type imageName struct{ publisher, offer, sku, version string } - -// parseImageName parses a publisher:offer:sku:version into those parts. -func parseImageName(image string) (imageName, error) { - l := strings.Split(image, ":") - if len(l) != 4 { - return imageName{}, fmt.Errorf("Image name %q not a valid format.", image) - } - return imageName{l[0], l[1], l[2], l[3]}, nil -} - -func timeSeed() *rand.Rand { return rand.New(rand.NewSource(time.Now().UTC().UnixNano())) } diff --git a/vendor/github.com/docker/machine/drivers/azure/logutil/logfields.go b/vendor/github.com/docker/machine/drivers/azure/logutil/logfields.go deleted file mode 100644 index b450594d..00000000 --- a/vendor/github.com/docker/machine/drivers/azure/logutil/logfields.go +++ /dev/null @@ -1,16 +0,0 @@ -package logutil - -import "fmt" - -type Fields map[string]interface{} - -func (f Fields) String() string { - var s string - for k, v := range f { - if sv, ok := v.(string); ok { - v = fmt.Sprintf("%q", sv) - } - s += fmt.Sprintf(" %s=%v", k, v) - } - return s -} diff --git a/vendor/github.com/docker/machine/drivers/azure/util.go b/vendor/github.com/docker/machine/drivers/azure/util.go deleted file mode 100644 index 7de64977..00000000 --- a/vendor/github.com/docker/machine/drivers/azure/util.go +++ /dev/null @@ -1,175 +0,0 @@ -package azure - -import ( - "fmt" - "io/ioutil" - "net" - "net/url" - - "github.com/Azure/azure-sdk-for-go/arm/network" - "github.com/Azure/go-autorest/autorest/azure" - "github.com/Azure/go-autorest/autorest/to" - "github.com/docker/machine/drivers/azure/azureutil" - "github.com/docker/machine/drivers/azure/logutil" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/ssh" - "github.com/docker/machine/libmachine/state" -) - -var ( - environments = map[string]azure.Environment{ - azure.PublicCloud.Name: azure.PublicCloud, - azure.USGovernmentCloud.Name: azure.USGovernmentCloud, - azure.ChinaCloud.Name: azure.ChinaCloud, - } -) - -// requiredOptionError forms an error from the error indicating the option has -// to be provided with a value for this driver. -type requiredOptionError string - -func (r requiredOptionError) Error() string { - return fmt.Sprintf("%s driver requires the %q option.", driverName, string(r)) -} - -// newAzureClient creates an AzureClient helper from the Driver context and -// initiates authentication if required. -func (d *Driver) newAzureClient() (*azureutil.AzureClient, error) { - env, ok := environments[d.Environment] - if !ok { - return nil, fmt.Errorf("Invalid Azure environment: %q", d.Environment) - } - - servicePrincipalToken, err := azureutil.Authenticate(env, d.SubscriptionID) - if err != nil { - return nil, fmt.Errorf("Error creating Azure client: %v", err) - } - return azureutil.New(env, d.SubscriptionID, servicePrincipalToken), nil -} - -// generateSSHKey creates a ssh key pair locally and saves the public key file -// contents in OpenSSH format to the DeploymentContext. -func (d *Driver) generateSSHKey(ctx *azureutil.DeploymentContext) error { - privPath := d.GetSSHKeyPath() - pubPath := privPath + ".pub" - - log.Debug("Creating SSH key...", logutil.Fields{ - "pub": pubPath, - "priv": privPath, - }) - - if err := ssh.GenerateSSHKey(privPath); err != nil { - return err - } - log.Debug("SSH key pair generated.") - - publicKey, err := ioutil.ReadFile(pubPath) - ctx.SSHPublicKey = string(publicKey) - return err -} - -// getSecurityRules creates network security group rules based on driver -// configuration such as SSH port, docker port and swarm port. -func (d *Driver) getSecurityRules(extraPorts []string) (*[]network.SecurityRule, error) { - mkRule := func(priority int, name, description, srcPort, dstPort string) network.SecurityRule { - return network.SecurityRule{ - Name: to.StringPtr(name), - Properties: &network.SecurityRulePropertiesFormat{ - Description: to.StringPtr(description), - SourceAddressPrefix: to.StringPtr("*"), - DestinationAddressPrefix: to.StringPtr("*"), - SourcePortRange: to.StringPtr(srcPort), - DestinationPortRange: to.StringPtr(dstPort), - Access: network.Allow, - Direction: network.Inbound, - Protocol: network.TCP, - Priority: to.Int32Ptr(int32(priority)), - }, - } - } - - log.Debugf("Docker port is configured as %d", d.DockerPort) - - // Base ports to be opened for any machine - rl := []network.SecurityRule{ - mkRule(100, "SSHAllowAny", "Allow ssh from public Internet", "*", fmt.Sprintf("%d", d.BaseDriver.SSHPort)), - mkRule(300, "DockerAllowAny", "Allow docker engine access (TLS-protected)", "*", fmt.Sprintf("%d", d.DockerPort)), - } - - // Open swarm port if configured - if d.BaseDriver.SwarmMaster { - swarmHost := d.BaseDriver.SwarmHost - log.Debugf("Swarm host is configured as %q", swarmHost) - u, err := url.Parse(swarmHost) - if err != nil { - return nil, fmt.Errorf("Cannot parse URL %q: %v", swarmHost, err) - } - _, swarmPort, err := net.SplitHostPort(u.Host) - if err != nil { - return nil, fmt.Errorf("Could not parse swarm port in %q: %v", u.Host, err) - } - rl = append(rl, mkRule(500, "DockerSwarmAllowAny", "Allow swarm manager access (TLS-protected)", "*", swarmPort)) - } else { - log.Debug("Swarm host is not configured.") - } - - // extra port numbers requested by user - basePri := 1000 - for i, port := range extraPorts { - log.Debugf("User-requested port number to be opened on NSG: %v", port) - r := mkRule(basePri+i, fmt.Sprintf("Port%sAllowAny", port), "User requested port to be accessible from Internet via docker-machine", "*", port) - rl = append(rl, r) - } - log.Debugf("Total NSG rules: %d", len(rl)) - - return &rl, nil -} - -func (d *Driver) naming() azureutil.ResourceNaming { - return azureutil.ResourceNaming(d.BaseDriver.MachineName) -} - -// ipAddress returns machine’s private or public IP address according to the -// configuration. If no IP address is found it returns empty string. -func (d *Driver) ipAddress() (ip string, err error) { - c, err := d.newAzureClient() - if err != nil { - return "", err - } - - var ipType string - if d.UsePrivateIP || d.NoPublicIP { - ipType = "Private" - ip, err = c.GetPrivateIPAddress(d.ResourceGroup, d.naming().NIC()) - } else { - ipType = "Public" - ip, err = c.GetPublicIPAddress(d.ResourceGroup, d.naming().IP()) - } - - log.Debugf("Retrieving %s IP address...", ipType) - if err != nil { - return "", fmt.Errorf("Error querying %s IP: %v", ipType, err) - } - if ip == "" { - log.Debugf("%s IP address is not yet allocated.", ipType) - } - return ip, nil -} - -func machineStateForVMPowerState(ps azureutil.VMPowerState) state.State { - m := map[azureutil.VMPowerState]state.State{ - azureutil.Running: state.Running, - azureutil.Starting: state.Starting, - azureutil.Stopping: state.Stopping, - azureutil.Stopped: state.Stopped, - azureutil.Deallocating: state.Stopping, - azureutil.Deallocated: state.Stopped, - azureutil.Unknown: state.None, - } - - if v, ok := m[ps]; ok { - return v - } - log.Warnf("Azure PowerState %q does not map to a docker-machine state.", ps) - return state.None -} diff --git a/vendor/github.com/docker/machine/drivers/digitalocean/digitalocean.go b/vendor/github.com/docker/machine/drivers/digitalocean/digitalocean.go deleted file mode 100644 index 899aa65c..00000000 --- a/vendor/github.com/docker/machine/drivers/digitalocean/digitalocean.go +++ /dev/null @@ -1,360 +0,0 @@ -package digitalocean - -import ( - "fmt" - "io/ioutil" - "net" - "os" - "time" - - "github.com/digitalocean/godo" - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnflag" - "github.com/docker/machine/libmachine/ssh" - "github.com/docker/machine/libmachine/state" - "golang.org/x/oauth2" -) - -type Driver struct { - *drivers.BaseDriver - AccessToken string - DropletID int - DropletName string - Image string - Region string - SSHKeyID int - SSHKeyFingerprint string - Size string - IPv6 bool - Backups bool - PrivateNetworking bool - UserDataFile string -} - -const ( - defaultSSHPort = 22 - defaultSSHUser = "root" - defaultImage = "ubuntu-16-04-x64" - defaultRegion = "nyc3" - defaultSize = "512mb" -) - -// GetCreateFlags registers the flags this driver adds to -// "docker hosts create" -func (d *Driver) GetCreateFlags() []mcnflag.Flag { - return []mcnflag.Flag{ - mcnflag.StringFlag{ - EnvVar: "DIGITALOCEAN_ACCESS_TOKEN", - Name: "digitalocean-access-token", - Usage: "Digital Ocean access token", - }, - mcnflag.StringFlag{ - EnvVar: "DIGITALOCEAN_SSH_USER", - Name: "digitalocean-ssh-user", - Usage: "SSH username", - Value: defaultSSHUser, - }, - mcnflag.StringFlag{ - EnvVar: "DIGITALOCEAN_SSH_KEY_FINGERPRINT", - Name: "digitalocean-ssh-key-fingerprint", - Usage: "SSH key fingerprint", - }, - mcnflag.IntFlag{ - EnvVar: "DIGITALOCEAN_SSH_PORT", - Name: "digitalocean-ssh-port", - Usage: "SSH port", - Value: defaultSSHPort, - }, - mcnflag.StringFlag{ - EnvVar: "DIGITALOCEAN_IMAGE", - Name: "digitalocean-image", - Usage: "Digital Ocean Image", - Value: defaultImage, - }, - mcnflag.StringFlag{ - EnvVar: "DIGITALOCEAN_REGION", - Name: "digitalocean-region", - Usage: "Digital Ocean region", - Value: defaultRegion, - }, - mcnflag.StringFlag{ - EnvVar: "DIGITALOCEAN_SIZE", - Name: "digitalocean-size", - Usage: "Digital Ocean size", - Value: defaultSize, - }, - mcnflag.BoolFlag{ - EnvVar: "DIGITALOCEAN_IPV6", - Name: "digitalocean-ipv6", - Usage: "enable ipv6 for droplet", - }, - mcnflag.BoolFlag{ - EnvVar: "DIGITALOCEAN_PRIVATE_NETWORKING", - Name: "digitalocean-private-networking", - Usage: "enable private networking for droplet", - }, - mcnflag.BoolFlag{ - EnvVar: "DIGITALOCEAN_BACKUPS", - Name: "digitalocean-backups", - Usage: "enable backups for droplet", - }, - mcnflag.StringFlag{ - EnvVar: "DIGITALOCEAN_USERDATA", - Name: "digitalocean-userdata", - Usage: "path to file with cloud-init user-data", - }, - } -} - -func NewDriver(hostName, storePath string) *Driver { - return &Driver{ - Image: defaultImage, - Size: defaultSize, - Region: defaultRegion, - BaseDriver: &drivers.BaseDriver{ - MachineName: hostName, - StorePath: storePath, - }, - } -} - -func (d *Driver) GetSSHHostname() (string, error) { - return d.GetIP() -} - -// DriverName returns the name of the driver -func (d *Driver) DriverName() string { - return "digitalocean" -} - -func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error { - d.AccessToken = flags.String("digitalocean-access-token") - d.Image = flags.String("digitalocean-image") - d.Region = flags.String("digitalocean-region") - d.Size = flags.String("digitalocean-size") - d.IPv6 = flags.Bool("digitalocean-ipv6") - d.PrivateNetworking = flags.Bool("digitalocean-private-networking") - d.Backups = flags.Bool("digitalocean-backups") - d.UserDataFile = flags.String("digitalocean-userdata") - d.SSHUser = flags.String("digitalocean-ssh-user") - d.SSHPort = flags.Int("digitalocean-ssh-port") - d.SSHKeyFingerprint = flags.String("digitalocean-ssh-key-fingerprint") - d.SetSwarmConfigFromFlags(flags) - - if d.AccessToken == "" { - return fmt.Errorf("digitalocean driver requires the --digitalocean-access-token option") - } - - return nil -} - -func (d *Driver) PreCreateCheck() error { - if d.UserDataFile != "" { - if _, err := os.Stat(d.UserDataFile); os.IsNotExist(err) { - return fmt.Errorf("user-data file %s could not be found", d.UserDataFile) - } - } - - client := d.getClient() - regions, _, err := client.Regions.List(nil) - if err != nil { - return err - } - for _, region := range regions { - if region.Slug == d.Region { - return nil - } - } - - return fmt.Errorf("digitalocean requires a valid region") -} - -func (d *Driver) Create() error { - var userdata string - if d.UserDataFile != "" { - buf, err := ioutil.ReadFile(d.UserDataFile) - if err != nil { - return err - } - userdata = string(buf) - } - - log.Infof("Creating SSH key...") - - key, err := d.createSSHKey() - if err != nil { - return err - } - - d.SSHKeyID = key.ID - - log.Infof("Creating Digital Ocean droplet...") - - client := d.getClient() - - createRequest := &godo.DropletCreateRequest{ - Image: godo.DropletCreateImage{Slug: d.Image}, - Name: d.MachineName, - Region: d.Region, - Size: d.Size, - IPv6: d.IPv6, - PrivateNetworking: d.PrivateNetworking, - Backups: d.Backups, - UserData: userdata, - SSHKeys: []godo.DropletCreateSSHKey{{ID: d.SSHKeyID}}, - } - - newDroplet, _, err := client.Droplets.Create(createRequest) - if err != nil { - return err - } - - d.DropletID = newDroplet.ID - - log.Info("Waiting for IP address to be assigned to the Droplet...") - for { - newDroplet, _, err = client.Droplets.Get(d.DropletID) - if err != nil { - return err - } - for _, network := range newDroplet.Networks.V4 { - if network.Type == "public" { - d.IPAddress = network.IPAddress - } - } - - if d.IPAddress != "" { - break - } - - time.Sleep(1 * time.Second) - } - - log.Debugf("Created droplet ID %d, IP address %s", - newDroplet.ID, - d.IPAddress) - - return nil -} - -func (d *Driver) createSSHKey() (*godo.Key, error) { - if d.SSHKeyFingerprint != "" { - key, resp, err := d.getClient().Keys.GetByFingerprint(d.SSHKeyFingerprint) - if err != nil && resp.StatusCode == 404 { - return nil, fmt.Errorf("Digital Ocean SSH key with fingerprint %s doesn't exist", d.SSHKeyFingerprint) - } - return key, err - } - - if err := ssh.GenerateSSHKey(d.GetSSHKeyPath()); err != nil { - return nil, err - } - - publicKey, err := ioutil.ReadFile(d.publicSSHKeyPath()) - if err != nil { - return nil, err - } - - createRequest := &godo.KeyCreateRequest{ - Name: d.MachineName, - PublicKey: string(publicKey), - } - - key, _, err := d.getClient().Keys.Create(createRequest) - if err != nil { - return key, err - } - - return key, nil -} - -func (d *Driver) GetURL() (string, error) { - if err := drivers.MustBeRunning(d); err != nil { - return "", err - } - - ip, err := d.GetIP() - if err != nil { - return "", err - } - - return fmt.Sprintf("tcp://%s", net.JoinHostPort(ip, "2376")), nil -} - -func (d *Driver) GetState() (state.State, error) { - droplet, _, err := d.getClient().Droplets.Get(d.DropletID) - if err != nil { - return state.Error, err - } - switch droplet.Status { - case "new": - return state.Starting, nil - case "active": - return state.Running, nil - case "off": - return state.Stopped, nil - } - return state.None, nil -} - -func (d *Driver) Start() error { - _, _, err := d.getClient().DropletActions.PowerOn(d.DropletID) - return err -} - -func (d *Driver) Stop() error { - _, _, err := d.getClient().DropletActions.Shutdown(d.DropletID) - return err -} - -func (d *Driver) Restart() error { - _, _, err := d.getClient().DropletActions.Reboot(d.DropletID) - return err -} - -func (d *Driver) Kill() error { - _, _, err := d.getClient().DropletActions.PowerOff(d.DropletID) - return err -} - -func (d *Driver) Remove() error { - client := d.getClient() - if d.SSHKeyFingerprint == "" { - if resp, err := client.Keys.DeleteByID(d.SSHKeyID); err != nil { - if resp.StatusCode == 404 { - log.Infof("Digital Ocean SSH key doesn't exist, assuming it is already deleted") - } else { - return err - } - } - } - if resp, err := client.Droplets.Delete(d.DropletID); err != nil { - if resp.StatusCode == 404 { - log.Infof("Digital Ocean droplet doesn't exist, assuming it is already deleted") - } else { - return err - } - } - return nil -} - -func (d *Driver) getClient() *godo.Client { - token := &oauth2.Token{AccessToken: d.AccessToken} - tokenSource := oauth2.StaticTokenSource(token) - client := oauth2.NewClient(oauth2.NoContext, tokenSource) - - return godo.NewClient(client) -} - -func (d *Driver) GetSSHKeyPath() string { - // don't set SSHKeyPath when using an existing key fingerprint - if d.SSHKeyPath == "" && d.SSHKeyFingerprint == "" { - d.SSHKeyPath = d.ResolveStorePath("id_rsa") - } - return d.SSHKeyPath -} - -func (d *Driver) publicSSHKeyPath() string { - return d.GetSSHKeyPath() + ".pub" -} diff --git a/vendor/github.com/docker/machine/drivers/digitalocean/digitalocean_test.go b/vendor/github.com/docker/machine/drivers/digitalocean/digitalocean_test.go deleted file mode 100644 index 5eb1e365..00000000 --- a/vendor/github.com/docker/machine/drivers/digitalocean/digitalocean_test.go +++ /dev/null @@ -1,84 +0,0 @@ -package digitalocean - -import ( - "testing" - - "github.com/docker/machine/libmachine/drivers" - "github.com/stretchr/testify/assert" -) - -func TestSetConfigFromFlags(t *testing.T) { - driver := NewDriver("default", "path") - - checkFlags := &drivers.CheckDriverOptions{ - FlagsValues: map[string]interface{}{ - "digitalocean-access-token": "TOKEN", - }, - CreateFlags: driver.GetCreateFlags(), - } - - err := driver.SetConfigFromFlags(checkFlags) - - assert.NoError(t, err) - assert.Empty(t, checkFlags.InvalidFlags) - - assert.Equal(t, driver.ResolveStorePath("id_rsa"), driver.GetSSHKeyPath()) -} - -func TestDefaultSSHUserAndPort(t *testing.T) { - driver := NewDriver("default", "path") - - checkFlags := &drivers.CheckDriverOptions{ - FlagsValues: map[string]interface{}{ - "digitalocean-access-token": "TOKEN", - }, - CreateFlags: driver.GetCreateFlags(), - } - - err := driver.SetConfigFromFlags(checkFlags) - assert.NoError(t, err) - - sshPort, err := driver.GetSSHPort() - assert.Equal(t, "root", driver.GetSSHUsername()) - assert.Equal(t, 22, sshPort) - assert.NoError(t, err) -} - -func TestCustomSSHUserAndPort(t *testing.T) { - driver := NewDriver("default", "path") - - checkFlags := &drivers.CheckDriverOptions{ - FlagsValues: map[string]interface{}{ - "digitalocean-access-token": "TOKEN", - "digitalocean-ssh-user": "user", - "digitalocean-ssh-port": 2222, - }, - CreateFlags: driver.GetCreateFlags(), - } - - err := driver.SetConfigFromFlags(checkFlags) - assert.NoError(t, err) - - sshPort, err := driver.GetSSHPort() - assert.Equal(t, "user", driver.GetSSHUsername()) - assert.Equal(t, 2222, sshPort) - assert.NoError(t, err) -} - -func TestSSHKeyFingerprint(t *testing.T) { - driver := NewDriver("default", "path") - - checkFlags := &drivers.CheckDriverOptions{ - FlagsValues: map[string]interface{}{ - "digitalocean-access-token": "TOKEN", - "digitalocean-ssh-key-fingerprint": "64:51:2b:9b:8b:f0:95:3c:f9:36:4d:8b:80:a8:8f:1e", - }, - CreateFlags: driver.GetCreateFlags(), - } - - err := driver.SetConfigFromFlags(checkFlags) - assert.NoError(t, err) - - assert.Equal(t, "64:51:2b:9b:8b:f0:95:3c:f9:36:4d:8b:80:a8:8f:1e", driver.SSHKeyFingerprint) - assert.Equal(t, "", driver.GetSSHKeyPath()) -} diff --git a/vendor/github.com/docker/machine/drivers/errdriver/error.go b/vendor/github.com/docker/machine/drivers/errdriver/error.go deleted file mode 100644 index 53220377..00000000 --- a/vendor/github.com/docker/machine/drivers/errdriver/error.go +++ /dev/null @@ -1,104 +0,0 @@ -package errdriver - -import ( - "fmt" - - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/mcnflag" - "github.com/docker/machine/libmachine/state" -) - -type Driver struct { - Name string -} - -type NotLoadable struct { - Name string -} - -func (e NotLoadable) Error() string { - return fmt.Sprintf("Driver %q not found. Do you have the plugin binary accessible in your PATH?", e.Name) -} - -func NewDriver(Name string) drivers.Driver { - return &Driver{ - Name: Name, - } -} - -// DriverName returns the name of the driver -func (d *Driver) DriverName() string { - return "not-found" -} - -func (d *Driver) PreCreateCheck() error { - return NotLoadable{d.Name} -} - -func (d *Driver) GetCreateFlags() []mcnflag.Flag { - return nil -} - -func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error { - return NotLoadable{d.Name} -} - -func (d *Driver) GetURL() (string, error) { - return "", NotLoadable{d.Name} -} - -func (d *Driver) GetMachineName() string { - return d.Name -} - -func (d *Driver) GetIP() (string, error) { - return "1.2.3.4", NotLoadable{d.Name} -} - -func (d *Driver) GetSSHHostname() (string, error) { - return "", NotLoadable{d.Name} -} - -func (d *Driver) GetSSHKeyPath() string { - return "" -} - -func (d *Driver) GetSSHPort() (int, error) { - return 0, NotLoadable{d.Name} -} - -func (d *Driver) GetSSHUsername() string { - return "" -} - -func (d *Driver) GetState() (state.State, error) { - return state.Error, NotLoadable{d.Name} -} - -func (d *Driver) Create() error { - return NotLoadable{d.Name} -} - -func (d *Driver) Remove() error { - return NotLoadable{d.Name} -} - -func (d *Driver) Start() error { - return NotLoadable{d.Name} -} - -func (d *Driver) Stop() error { - return NotLoadable{d.Name} -} - -func (d *Driver) Restart() error { - return NotLoadable{d.Name} -} - -func (d *Driver) Kill() error { - return NotLoadable{d.Name} -} - -func (d *Driver) Upgrade() error { - return NotLoadable{d.Name} -} diff --git a/vendor/github.com/docker/machine/drivers/exoscale/exoscale.go b/vendor/github.com/docker/machine/drivers/exoscale/exoscale.go deleted file mode 100644 index f51e296e..00000000 --- a/vendor/github.com/docker/machine/drivers/exoscale/exoscale.go +++ /dev/null @@ -1,464 +0,0 @@ -package exoscale - -import ( - "fmt" - "io/ioutil" - "net" - "os" - "strings" - "time" - - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnflag" - "github.com/docker/machine/libmachine/mcnutils" - "github.com/docker/machine/libmachine/state" - "github.com/pyr/egoscale/src/egoscale" -) - -type Driver struct { - *drivers.BaseDriver - URL string - APIKey string `json:"ApiKey"` - APISecretKey string `json:"ApiSecretKey"` - InstanceProfile string - DiskSize int - Image string - SecurityGroup string - AvailabilityZone string - KeyPair string - PublicKey string - UserDataFile string - ID string `json:"Id"` -} - -const ( - defaultInstanceProfile = "small" - defaultDiskSize = 50 - defaultImage = "ubuntu-15.10" - defaultAvailabilityZone = "ch-gva-2" - defaultSSHUser = "ubuntu" -) - -// GetCreateFlags registers the flags this driver adds to -// "docker hosts create" -func (d *Driver) GetCreateFlags() []mcnflag.Flag { - return []mcnflag.Flag{ - mcnflag.StringFlag{ - EnvVar: "EXOSCALE_ENDPOINT", - Name: "exoscale-url", - Usage: "exoscale API endpoint", - }, - mcnflag.StringFlag{ - EnvVar: "EXOSCALE_API_KEY", - Name: "exoscale-api-key", - Usage: "exoscale API key", - }, - mcnflag.StringFlag{ - EnvVar: "EXOSCALE_API_SECRET", - Name: "exoscale-api-secret-key", - Usage: "exoscale API secret key", - }, - mcnflag.StringFlag{ - EnvVar: "EXOSCALE_INSTANCE_PROFILE", - Name: "exoscale-instance-profile", - Value: defaultInstanceProfile, - Usage: "exoscale instance profile (small, medium, large, ...)", - }, - mcnflag.IntFlag{ - EnvVar: "EXOSCALE_DISK_SIZE", - Name: "exoscale-disk-size", - Value: defaultDiskSize, - Usage: "exoscale disk size (10, 50, 100, 200, 400)", - }, - mcnflag.StringFlag{ - EnvVar: "EXSOCALE_IMAGE", - Name: "exoscale-image", - Value: defaultImage, - Usage: "exoscale image template", - }, - mcnflag.StringSliceFlag{ - EnvVar: "EXOSCALE_SECURITY_GROUP", - Name: "exoscale-security-group", - Value: []string{}, - Usage: "exoscale security group", - }, - mcnflag.StringFlag{ - EnvVar: "EXOSCALE_AVAILABILITY_ZONE", - Name: "exoscale-availability-zone", - Value: defaultAvailabilityZone, - Usage: "exoscale availibility zone", - }, - mcnflag.StringFlag{ - EnvVar: "EXOSCALE_SSH_USER", - Name: "exoscale-ssh-user", - Value: defaultSSHUser, - Usage: "Set the name of the ssh user", - }, - mcnflag.StringFlag{ - EnvVar: "EXOSCALE_USERDATA", - Name: "exoscale-userdata", - Usage: "path to file with cloud-init user-data", - }, - } -} - -func NewDriver(hostName, storePath string) drivers.Driver { - return &Driver{ - InstanceProfile: defaultInstanceProfile, - DiskSize: defaultDiskSize, - Image: defaultImage, - AvailabilityZone: defaultAvailabilityZone, - BaseDriver: &drivers.BaseDriver{ - MachineName: hostName, - StorePath: storePath, - }, - } -} - -func (d *Driver) GetSSHHostname() (string, error) { - return d.GetIP() -} - -func (d *Driver) GetSSHUsername() string { - if d.SSHUser == "" { - d.SSHUser = defaultSSHUser - } - - return d.SSHUser -} - -// DriverName returns the name of the driver -func (d *Driver) DriverName() string { - return "exoscale" -} - -func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error { - d.URL = flags.String("exoscale-url") - d.APIKey = flags.String("exoscale-api-key") - d.APISecretKey = flags.String("exoscale-api-secret-key") - d.InstanceProfile = flags.String("exoscale-instance-profile") - d.DiskSize = flags.Int("exoscale-disk-size") - d.Image = flags.String("exoscale-image") - securityGroups := flags.StringSlice("exoscale-security-group") - if len(securityGroups) == 0 { - securityGroups = []string{"docker-machine"} - } - d.SecurityGroup = strings.Join(securityGroups, ",") - d.AvailabilityZone = flags.String("exoscale-availability-zone") - d.SSHUser = flags.String("exoscale-ssh-user") - d.UserDataFile = flags.String("exoscale-userdata") - d.SetSwarmConfigFromFlags(flags) - - if d.URL == "" { - d.URL = "https://api.exoscale.ch/compute" - } - if d.APIKey == "" || d.APISecretKey == "" { - return fmt.Errorf("Please specify an API key (--exoscale-api-key) and an API secret key (--exoscale-api-secret-key).") - } - - return nil -} - -func (d *Driver) PreCreateCheck() error { - if d.UserDataFile != "" { - if _, err := os.Stat(d.UserDataFile); os.IsNotExist(err) { - return fmt.Errorf("user-data file %s could not be found", d.UserDataFile) - } - } - - return nil -} - -func (d *Driver) GetURL() (string, error) { - if err := drivers.MustBeRunning(d); err != nil { - return "", err - } - - ip, err := d.GetIP() - if err != nil { - return "", err - } - - return fmt.Sprintf("tcp://%s", net.JoinHostPort(ip, "2376")), nil -} - -func (d *Driver) GetState() (state.State, error) { - client := egoscale.NewClient(d.URL, d.APIKey, d.APISecretKey) - vm, err := client.GetVirtualMachine(d.ID) - if err != nil { - return state.Error, err - } - switch vm.State { - case "Starting": - return state.Starting, nil - case "Running": - return state.Running, nil - case "Stopping": - return state.Running, nil - case "Stopped": - return state.Stopped, nil - case "Destroyed": - return state.Stopped, nil - case "Expunging": - return state.Stopped, nil - case "Migrating": - return state.Paused, nil - case "Error": - return state.Error, nil - case "Unknown": - return state.Error, nil - case "Shutdowned": - return state.Stopped, nil - } - return state.None, nil -} - -func (d *Driver) createDefaultSecurityGroup(client *egoscale.Client, group string) (string, error) { - rules := []egoscale.SecurityGroupRule{ - { - SecurityGroupId: "", - Cidr: "0.0.0.0/0", - Protocol: "TCP", - Port: 22, - }, - { - SecurityGroupId: "", - Cidr: "0.0.0.0/0", - Protocol: "TCP", - Port: 2376, - }, - { - SecurityGroupId: "", - Cidr: "0.0.0.0/0", - Protocol: "TCP", - Port: 3376, - }, - { - SecurityGroupId: "", - Cidr: "0.0.0.0/0", - Protocol: "ICMP", - IcmpType: 8, - IcmpCode: 0, - }, - } - sgresp, err := client.CreateSecurityGroupWithRules( - group, - rules, - make([]egoscale.SecurityGroupRule, 0, 0)) - if err != nil { - return "", err - } - sg := sgresp.Id - return sg, nil -} - -func (d *Driver) Create() error { - userdata, err := d.getCloudInit() - if err != nil { - return err - } - - log.Infof("Querying exoscale for the requested parameters...") - client := egoscale.NewClient(d.URL, d.APIKey, d.APISecretKey) - topology, err := client.GetTopology() - if err != nil { - return err - } - - // Availability zone UUID - zone, ok := topology.Zones[d.AvailabilityZone] - if !ok { - return fmt.Errorf("Availability zone %v doesn't exist", - d.AvailabilityZone) - } - log.Debugf("Availability zone %v = %s", d.AvailabilityZone, zone) - - // Image UUID - var tpl string - images, ok := topology.Images[strings.ToLower(d.Image)] - if ok { - tpl, ok = images[d.DiskSize] - } - if !ok { - return fmt.Errorf("Unable to find image %v with size %d", - d.Image, d.DiskSize) - } - log.Debugf("Image %v(%d) = %s", d.Image, d.DiskSize, tpl) - - // Profile UUID - profile, ok := topology.Profiles[strings.ToLower(d.InstanceProfile)] - if !ok { - return fmt.Errorf("Unable to find the %s profile", - d.InstanceProfile) - } - log.Debugf("Profile %v = %s", d.InstanceProfile, profile) - - // Security groups - securityGroups := strings.Split(d.SecurityGroup, ",") - sgs := make([]string, len(securityGroups)) - for idx, group := range securityGroups { - sg, ok := topology.SecurityGroups[group] - if !ok { - log.Infof("Security group %v does not exist, create it", - group) - sg, err = d.createDefaultSecurityGroup(client, group) - if err != nil { - return err - } - } - log.Debugf("Security group %v = %s", group, sg) - sgs[idx] = sg - } - - log.Infof("Generate an SSH keypair...") - keypairName := fmt.Sprintf("docker-machine-%s", d.MachineName) - kpresp, err := client.CreateKeypair(keypairName) - if err != nil { - return err - } - err = ioutil.WriteFile(d.GetSSHKeyPath(), []byte(kpresp.Privatekey), 0600) - if err != nil { - return err - } - d.KeyPair = keypairName - - log.Infof("Spawn exoscale host...") - log.Debugf("Using the following cloud-init file:") - log.Debugf("%s", userdata) - - machineProfile := egoscale.MachineProfile{ - Template: tpl, - ServiceOffering: profile, - SecurityGroups: sgs, - Userdata: userdata, - Zone: zone, - Keypair: d.KeyPair, - Name: d.MachineName, - } - - cvmresp, err := client.CreateVirtualMachine(machineProfile) - if err != nil { - return err - } - - vm, err := d.waitForVM(client, cvmresp) - if err != nil { - return err - } - d.IPAddress = vm.Nic[0].Ipaddress - d.ID = vm.Id - - return nil -} - -func (d *Driver) Start() error { - client := egoscale.NewClient(d.URL, d.APIKey, d.APISecretKey) - - svmresp, err := client.StartVirtualMachine(d.ID) - if err != nil { - return err - } - - return d.waitForJob(client, svmresp) -} - -func (d *Driver) Stop() error { - client := egoscale.NewClient(d.URL, d.APIKey, d.APISecretKey) - - svmresp, err := client.StopVirtualMachine(d.ID) - if err != nil { - return err - } - - return d.waitForJob(client, svmresp) -} - -func (d *Driver) Restart() error { - client := egoscale.NewClient(d.URL, d.APIKey, d.APISecretKey) - - svmresp, err := client.RebootVirtualMachine(d.ID) - if err != nil { - return err - } - - return d.waitForJob(client, svmresp) -} - -func (d *Driver) Kill() error { - return d.Stop() -} - -func (d *Driver) Remove() error { - client := egoscale.NewClient(d.URL, d.APIKey, d.APISecretKey) - - // Destroy the SSH key - if _, err := client.DeleteKeypair(d.KeyPair); err != nil { - return err - } - - // Destroy the virtual machine - dvmresp, err := client.DestroyVirtualMachine(d.ID) - if err != nil { - return err - } - if err = d.waitForJob(client, dvmresp); err != nil { - return err - } - return nil -} - -func (d *Driver) jobIsDone(client *egoscale.Client, jobid string) (bool, error) { - resp, err := client.PollAsyncJob(jobid) - if err != nil { - return true, err - } - switch resp.Jobstatus { - case 0: // Job is still in progress - case 1: // Job has successfully completed - return true, nil - case 2: // Job has failed to complete - return true, fmt.Errorf("Operation failed to complete") - default: // Some other code - } - return false, nil -} - -func (d *Driver) waitForJob(client *egoscale.Client, jobid string) error { - log.Infof("Waiting for job to complete...") - return mcnutils.WaitForSpecificOrError(func() (bool, error) { - return d.jobIsDone(client, jobid) - }, 60, 2*time.Second) -} - -func (d *Driver) waitForVM(client *egoscale.Client, jobid string) (*egoscale.DeployVirtualMachineResponse, error) { - if err := d.waitForJob(client, jobid); err != nil { - return nil, err - } - resp, err := client.PollAsyncJob(jobid) - if err != nil { - return nil, err - } - vm, err := client.AsyncToVirtualMachine(*resp) - if err != nil { - return nil, err - } - - return vm, nil -} - -// Build a cloud-init user data string that will install and run -// docker. -func (d *Driver) getCloudInit() (string, error) { - if d.UserDataFile != "" { - buf, err := ioutil.ReadFile(d.UserDataFile) - if err != nil { - return "", err - } - return string(buf), nil - } - - return `#cloud-config -manage_etc_hosts: localhost -`, nil -} diff --git a/vendor/github.com/docker/machine/drivers/exoscale/exoscale_test.go b/vendor/github.com/docker/machine/drivers/exoscale/exoscale_test.go deleted file mode 100644 index 0638f3cc..00000000 --- a/vendor/github.com/docker/machine/drivers/exoscale/exoscale_test.go +++ /dev/null @@ -1,25 +0,0 @@ -package exoscale - -import ( - "testing" - - "github.com/docker/machine/libmachine/drivers" - "github.com/stretchr/testify/assert" -) - -func TestSetConfigFromFlags(t *testing.T) { - driver := NewDriver("default", "path") - - checkFlags := &drivers.CheckDriverOptions{ - FlagsValues: map[string]interface{}{ - "exoscale-api-key": "API_KEY", - "exoscale-api-secret-key": "API_SECRET_KEY", - }, - CreateFlags: driver.GetCreateFlags(), - } - - err := driver.SetConfigFromFlags(checkFlags) - - assert.NoError(t, err) - assert.Empty(t, checkFlags.InvalidFlags) -} diff --git a/vendor/github.com/docker/machine/drivers/fakedriver/fakedriver.go b/vendor/github.com/docker/machine/drivers/fakedriver/fakedriver.go deleted file mode 100644 index 953db88d..00000000 --- a/vendor/github.com/docker/machine/drivers/fakedriver/fakedriver.go +++ /dev/null @@ -1,109 +0,0 @@ -package fakedriver - -import ( - "fmt" - - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/mcnflag" - "github.com/docker/machine/libmachine/state" -) - -type Driver struct { - *drivers.BaseDriver - MockState state.State - MockIP string - MockName string -} - -func (d *Driver) GetCreateFlags() []mcnflag.Flag { - return []mcnflag.Flag{} -} - -// DriverName returns the name of the driver -func (d *Driver) DriverName() string { - return "Driver" -} - -func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error { - return nil -} - -func (d *Driver) GetURL() (string, error) { - ip, err := d.GetIP() - if err != nil { - return "", err - } - if ip == "" { - return "", nil - } - return fmt.Sprintf("tcp://%s:2376", ip), nil -} - -func (d *Driver) GetMachineName() string { - return d.MockName -} - -func (d *Driver) GetIP() (string, error) { - if d.MockState == state.Error { - return "", fmt.Errorf("Unable to get ip") - } - if d.MockState == state.Timeout { - select {} // Loop forever - } - if d.MockState != state.Running { - return "", drivers.ErrHostIsNotRunning - } - return d.MockIP, nil -} - -func (d *Driver) GetSSHHostname() (string, error) { - return "", nil -} - -func (d *Driver) GetSSHKeyPath() string { - return "" -} - -func (d *Driver) GetSSHPort() (int, error) { - return 0, nil -} - -func (d *Driver) GetSSHUsername() string { - return "" -} - -func (d *Driver) GetState() (state.State, error) { - return d.MockState, nil -} - -func (d *Driver) Create() error { - return nil -} - -func (d *Driver) Start() error { - d.MockState = state.Running - return nil -} - -func (d *Driver) Stop() error { - d.MockState = state.Stopped - return nil -} - -func (d *Driver) Restart() error { - d.MockState = state.Running - return nil -} - -func (d *Driver) Kill() error { - d.MockState = state.Stopped - return nil -} - -func (d *Driver) Remove() error { - return nil -} - -func (d *Driver) Upgrade() error { - return nil -} diff --git a/vendor/github.com/docker/machine/drivers/generic/generic.go b/vendor/github.com/docker/machine/drivers/generic/generic.go deleted file mode 100644 index f94e01bc..00000000 --- a/vendor/github.com/docker/machine/drivers/generic/generic.go +++ /dev/null @@ -1,196 +0,0 @@ -package generic - -import ( - "errors" - "fmt" - "net" - "os" - "path" - "strconv" - "time" - - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnflag" - "github.com/docker/machine/libmachine/mcnutils" - "github.com/docker/machine/libmachine/state" -) - -type Driver struct { - *drivers.BaseDriver - EnginePort int - SSHKey string -} - -const ( - defaultTimeout = 1 * time.Second -) - -// GetCreateFlags registers the flags this driver adds to -// "docker hosts create" -func (d *Driver) GetCreateFlags() []mcnflag.Flag { - return []mcnflag.Flag{ - mcnflag.IntFlag{ - Name: "generic-engine-port", - Usage: "Docker engine port", - Value: engine.DefaultPort, - EnvVar: "GENERIC_ENGINE_PORT", - }, - mcnflag.StringFlag{ - Name: "generic-ip-address", - Usage: "IP Address of machine", - EnvVar: "GENERIC_IP_ADDRESS", - }, - mcnflag.StringFlag{ - Name: "generic-ssh-user", - Usage: "SSH user", - Value: drivers.DefaultSSHUser, - EnvVar: "GENERIC_SSH_USER", - }, - mcnflag.StringFlag{ - Name: "generic-ssh-key", - Usage: "SSH private key path (if not provided, default SSH key will be used)", - Value: "", - EnvVar: "GENERIC_SSH_KEY", - }, - mcnflag.IntFlag{ - Name: "generic-ssh-port", - Usage: "SSH port", - Value: drivers.DefaultSSHPort, - EnvVar: "GENERIC_SSH_PORT", - }, - } -} - -// NewDriver creates and returns a new instance of the driver -func NewDriver(hostName, storePath string) drivers.Driver { - return &Driver{ - EnginePort: engine.DefaultPort, - BaseDriver: &drivers.BaseDriver{ - MachineName: hostName, - StorePath: storePath, - }, - } -} - -// DriverName returns the name of the driver -func (d *Driver) DriverName() string { - return "generic" -} - -func (d *Driver) GetSSHHostname() (string, error) { - return d.GetIP() -} - -func (d *Driver) GetSSHUsername() string { - return d.SSHUser -} - -func (d *Driver) GetSSHKeyPath() string { - return d.SSHKeyPath -} - -func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error { - d.EnginePort = flags.Int("generic-engine-port") - d.IPAddress = flags.String("generic-ip-address") - d.SSHUser = flags.String("generic-ssh-user") - d.SSHKey = flags.String("generic-ssh-key") - d.SSHPort = flags.Int("generic-ssh-port") - - if d.IPAddress == "" { - return errors.New("generic driver requires the --generic-ip-address option") - } - - return nil -} - -func (d *Driver) PreCreateCheck() error { - if d.SSHKey != "" { - if _, err := os.Stat(d.SSHKey); os.IsNotExist(err) { - return fmt.Errorf("SSH key does not exist: %q", d.SSHKey) - } - - // TODO: validate the key is a valid key - } - - return nil -} - -func (d *Driver) Create() error { - if d.SSHKey == "" { - log.Info("No SSH key specified. Assuming an existing key at the default location.") - } else { - log.Info("Importing SSH key...") - - d.SSHKeyPath = d.ResolveStorePath(path.Base(d.SSHKey)) - if err := copySSHKey(d.SSHKey, d.SSHKeyPath); err != nil { - return err - } - - if err := copySSHKey(d.SSHKey+".pub", d.SSHKeyPath+".pub"); err != nil { - log.Infof("Couldn't copy SSH public key : %s", err) - } - } - - log.Debugf("IP: %s", d.IPAddress) - - return nil -} - -func (d *Driver) GetURL() (string, error) { - if err := drivers.MustBeRunning(d); err != nil { - return "", err - } - - ip, err := d.GetIP() - if err != nil { - return "", err - } - - return fmt.Sprintf("tcp://%s", net.JoinHostPort(ip, strconv.Itoa(d.EnginePort))), nil -} - -func (d *Driver) GetState() (state.State, error) { - address := net.JoinHostPort(d.IPAddress, strconv.Itoa(d.SSHPort)) - - _, err := net.DialTimeout("tcp", address, defaultTimeout) - if err != nil { - return state.Stopped, nil - } - - return state.Running, nil -} - -func (d *Driver) Start() error { - return errors.New("generic driver does not support start") -} - -func (d *Driver) Stop() error { - return errors.New("generic driver does not support stop") -} - -func (d *Driver) Restart() error { - _, err := drivers.RunSSHCommandFromDriver(d, "sudo shutdown -r now") - return err -} - -func (d *Driver) Kill() error { - return errors.New("generic driver does not support kill") -} - -func (d *Driver) Remove() error { - return nil -} - -func copySSHKey(src, dst string) error { - if err := mcnutils.CopyFile(src, dst); err != nil { - return fmt.Errorf("unable to copy ssh key: %s", err) - } - - if err := os.Chmod(dst, 0600); err != nil { - return fmt.Errorf("unable to set permissions on the ssh key: %s", err) - } - - return nil -} diff --git a/vendor/github.com/docker/machine/drivers/generic/generic_test.go b/vendor/github.com/docker/machine/drivers/generic/generic_test.go deleted file mode 100644 index 93caa797..00000000 --- a/vendor/github.com/docker/machine/drivers/generic/generic_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package generic - -import ( - "testing" - - "github.com/docker/machine/libmachine/drivers" - "github.com/stretchr/testify/assert" -) - -func TestSetConfigFromFlags(t *testing.T) { - driver := NewDriver("default", "path") - - checkFlags := &drivers.CheckDriverOptions{ - FlagsValues: map[string]interface{}{ - "generic-engine-port": "3000", - "generic-ip-address": "localhost", - "generic-ssh-key": "path", - }, - CreateFlags: driver.GetCreateFlags(), - } - - err := driver.SetConfigFromFlags(checkFlags) - - assert.NoError(t, err) - assert.Empty(t, checkFlags.InvalidFlags) -} diff --git a/vendor/github.com/docker/machine/drivers/google/compute_util.go b/vendor/github.com/docker/machine/drivers/google/compute_util.go deleted file mode 100644 index 92e2d472..00000000 --- a/vendor/github.com/docker/machine/drivers/google/compute_util.go +++ /dev/null @@ -1,464 +0,0 @@ -package google - -import ( - "fmt" - "io/ioutil" - "net/url" - "regexp" - "strings" - "time" - - "github.com/docker/machine/libmachine/log" - raw "google.golang.org/api/compute/v1" - - "errors" - - "golang.org/x/oauth2" - "golang.org/x/oauth2/google" - "google.golang.org/api/googleapi" -) - -// ComputeUtil is used to wrap the raw GCE API code and store common parameters. -type ComputeUtil struct { - zone string - instanceName string - userName string - project string - diskTypeURL string - address string - preemptible bool - useInternalIP bool - useInternalIPOnly bool - service *raw.Service - zoneURL string - globalURL string - SwarmMaster bool - SwarmHost string -} - -const ( - apiURL = "https://www.googleapis.com/compute/v1/projects/" - firewallRule = "docker-machines" - port = "2376" - firewallTargetTag = "docker-machine" - dockerStartCommand = "sudo service docker start" - dockerStopCommand = "sudo service docker stop" -) - -// NewComputeUtil creates and initializes a ComputeUtil. -func newComputeUtil(driver *Driver) (*ComputeUtil, error) { - client, err := google.DefaultClient(oauth2.NoContext, raw.ComputeScope) - if err != nil { - return nil, err - } - - service, err := raw.New(client) - if err != nil { - return nil, err - } - - return &ComputeUtil{ - zone: driver.Zone, - instanceName: driver.MachineName, - userName: driver.SSHUser, - project: driver.Project, - diskTypeURL: driver.DiskType, - address: driver.Address, - preemptible: driver.Preemptible, - useInternalIP: driver.UseInternalIP, - useInternalIPOnly: driver.UseInternalIPOnly, - service: service, - zoneURL: apiURL + driver.Project + "/zones/" + driver.Zone, - globalURL: apiURL + driver.Project + "/global", - SwarmMaster: driver.SwarmMaster, - SwarmHost: driver.SwarmHost, - }, nil -} - -func (c *ComputeUtil) diskName() string { - return c.instanceName + "-disk" -} - -func (c *ComputeUtil) diskType() string { - return apiURL + c.project + "/zones/" + c.zone + "/diskTypes/" + c.diskTypeURL -} - -// disk returns the persistent disk attached to the vm. -func (c *ComputeUtil) disk() (*raw.Disk, error) { - return c.service.Disks.Get(c.project, c.zone, c.diskName()).Do() -} - -// deleteDisk deletes the persistent disk. -func (c *ComputeUtil) deleteDisk() error { - disk, _ := c.disk() - if disk == nil { - return nil - } - - log.Infof("Deleting disk.") - op, err := c.service.Disks.Delete(c.project, c.zone, c.diskName()).Do() - if err != nil { - return err - } - - log.Infof("Waiting for disk to delete.") - return c.waitForRegionalOp(op.Name) -} - -// staticAddress returns the external static IP address. -func (c *ComputeUtil) staticAddress() (string, error) { - // is the address a name? - isName, err := regexp.MatchString("[a-z]([-a-z0-9]*[a-z0-9])?", c.address) - if err != nil { - return "", err - } - - if !isName { - return c.address, nil - } - - // resolve the address by name - externalAddress, err := c.service.Addresses.Get(c.project, c.region(), c.address).Do() - if err != nil { - return "", err - } - - return externalAddress.Address, nil -} - -func (c *ComputeUtil) region() string { - return c.zone[:len(c.zone)-2] -} - -func (c *ComputeUtil) firewallRule() (*raw.Firewall, error) { - return c.service.Firewalls.Get(c.project, firewallRule).Do() -} - -func missingOpenedPorts(rule *raw.Firewall, ports []string) []string { - missing := []string{} - opened := map[string]bool{} - - for _, allowed := range rule.Allowed { - for _, allowedPort := range allowed.Ports { - opened[allowedPort] = true - } - } - - for _, port := range ports { - if !opened[port] { - missing = append(missing, port) - } - } - - return missing -} - -func (c *ComputeUtil) portsUsed() ([]string, error) { - ports := []string{port} - - if c.SwarmMaster { - u, err := url.Parse(c.SwarmHost) - if err != nil { - return nil, fmt.Errorf("error authorizing port for swarm: %s", err) - } - - swarmPort := strings.Split(u.Host, ":")[1] - ports = append(ports, swarmPort) - } - - return ports, nil -} - -// openFirewallPorts configures the firewall to open docker and swarm ports. -func (c *ComputeUtil) openFirewallPorts() error { - log.Infof("Opening firewall ports") - - create := false - rule, _ := c.firewallRule() - if rule == nil { - create = true - rule = &raw.Firewall{ - Name: firewallRule, - Allowed: []*raw.FirewallAllowed{}, - SourceRanges: []string{"0.0.0.0/0"}, - TargetTags: []string{firewallTargetTag}, - } - } - - portsUsed, err := c.portsUsed() - if err != nil { - return err - } - - missingPorts := missingOpenedPorts(rule, portsUsed) - if len(missingPorts) == 0 { - return nil - } - - rule.Allowed = append(rule.Allowed, &raw.FirewallAllowed{ - IPProtocol: "tcp", - Ports: missingPorts, - }) - - var op *raw.Operation - if create { - op, err = c.service.Firewalls.Insert(c.project, rule).Do() - } else { - op, err = c.service.Firewalls.Update(c.project, firewallRule, rule).Do() - } - - if err != nil { - return err - } - - return c.waitForGlobalOp(op.Name) -} - -// instance retrieves the instance. -func (c *ComputeUtil) instance() (*raw.Instance, error) { - return c.service.Instances.Get(c.project, c.zone, c.instanceName).Do() -} - -// createInstance creates a GCE VM instance. -func (c *ComputeUtil) createInstance(d *Driver) error { - log.Infof("Creating instance") - - instance := &raw.Instance{ - Name: c.instanceName, - Description: "docker host vm", - MachineType: c.zoneURL + "/machineTypes/" + d.MachineType, - Disks: []*raw.AttachedDisk{ - { - Boot: true, - AutoDelete: false, - Type: "PERSISTENT", - Mode: "READ_WRITE", - }, - }, - NetworkInterfaces: []*raw.NetworkInterface{ - { - Network: c.globalURL + "/networks/default", - }, - }, - Tags: &raw.Tags{ - Items: parseTags(d), - }, - ServiceAccounts: []*raw.ServiceAccount{ - { - Email: "default", - Scopes: strings.Split(d.Scopes, ","), - }, - }, - Scheduling: &raw.Scheduling{ - Preemptible: c.preemptible, - }, - } - - if !c.useInternalIPOnly { - cfg := &raw.AccessConfig{ - Type: "ONE_TO_ONE_NAT", - } - instance.NetworkInterfaces[0].AccessConfigs = append(instance.NetworkInterfaces[0].AccessConfigs, cfg) - } - - if c.address != "" { - staticAddress, err := c.staticAddress() - if err != nil { - return err - } - - instance.NetworkInterfaces[0].AccessConfigs[0].NatIP = staticAddress - } - - disk, err := c.disk() - if disk == nil || err != nil { - instance.Disks[0].InitializeParams = &raw.AttachedDiskInitializeParams{ - DiskName: c.diskName(), - SourceImage: d.MachineImage, - // The maximum supported disk size is 1000GB, the cast should be fine. - DiskSizeGb: int64(d.DiskSize), - DiskType: c.diskType(), - } - } else { - instance.Disks[0].Source = c.zoneURL + "/disks/" + c.instanceName + "-disk" - } - op, err := c.service.Instances.Insert(c.project, c.zone, instance).Do() - - if err != nil { - return err - } - - log.Infof("Waiting for Instance") - if err = c.waitForRegionalOp(op.Name); err != nil { - return err - } - - instance, err = c.instance() - if err != nil { - return err - } - - return c.uploadSSHKey(instance, d.GetSSHKeyPath()) -} - -// configureInstance configures an existing instance for use with Docker Machine. -func (c *ComputeUtil) configureInstance(d *Driver) error { - log.Infof("Configuring instance") - - instance, err := c.instance() - if err != nil { - return err - } - - if err := c.addFirewallTag(instance); err != nil { - return err - } - - return c.uploadSSHKey(instance, d.GetSSHKeyPath()) -} - -// addFirewallTag adds a tag to the instance to match the firewall rule. -func (c *ComputeUtil) addFirewallTag(instance *raw.Instance) error { - log.Infof("Adding tag for the firewall rule") - - tags := instance.Tags - for _, tag := range tags.Items { - if tag == firewallTargetTag { - return nil - } - } - - tags.Items = append(tags.Items, firewallTargetTag) - - op, err := c.service.Instances.SetTags(c.project, c.zone, instance.Name, tags).Do() - if err != nil { - return err - } - - return c.waitForRegionalOp(op.Name) -} - -// uploadSSHKey updates the instance metadata with the given ssh key. -func (c *ComputeUtil) uploadSSHKey(instance *raw.Instance, sshKeyPath string) error { - log.Infof("Uploading SSH Key") - - sshKey, err := ioutil.ReadFile(sshKeyPath + ".pub") - if err != nil { - return err - } - - metaDataValue := fmt.Sprintf("%s:%s %s\n", c.userName, strings.TrimSpace(string(sshKey)), c.userName) - - op, err := c.service.Instances.SetMetadata(c.project, c.zone, c.instanceName, &raw.Metadata{ - Fingerprint: instance.Metadata.Fingerprint, - Items: []*raw.MetadataItems{ - { - Key: "sshKeys", - Value: &metaDataValue, - }, - }, - }).Do() - - return c.waitForRegionalOp(op.Name) -} - -// parseTags computes the tags for the instance. -func parseTags(d *Driver) []string { - tags := []string{firewallTargetTag} - - if d.Tags != "" { - tags = append(tags, strings.Split(d.Tags, ",")...) - } - - return tags -} - -// deleteInstance deletes the instance, leaving the persistent disk. -func (c *ComputeUtil) deleteInstance() error { - log.Infof("Deleting instance.") - op, err := c.service.Instances.Delete(c.project, c.zone, c.instanceName).Do() - if err != nil { - return err - } - - log.Infof("Waiting for instance to delete.") - return c.waitForRegionalOp(op.Name) -} - -// stopInstance stops the instance. -func (c *ComputeUtil) stopInstance() error { - op, err := c.service.Instances.Stop(c.project, c.zone, c.instanceName).Do() - if err != nil { - return err - } - - log.Infof("Waiting for instance to stop.") - return c.waitForRegionalOp(op.Name) -} - -// startInstance starts the instance. -func (c *ComputeUtil) startInstance() error { - op, err := c.service.Instances.Start(c.project, c.zone, c.instanceName).Do() - if err != nil { - return err - } - - log.Infof("Waiting for instance to start.") - return c.waitForRegionalOp(op.Name) -} - -// waitForOp waits for the operation to finish. -func (c *ComputeUtil) waitForOp(opGetter func() (*raw.Operation, error)) error { - for { - op, err := opGetter() - if err != nil { - return err - } - - log.Debugf("Operation %q status: %s", op.Name, op.Status) - if op.Status == "DONE" { - if op.Error != nil { - return fmt.Errorf("Operation error: %v", *op.Error.Errors[0]) - } - break - } - time.Sleep(1 * time.Second) - } - return nil -} - -// waitForRegionalOp waits for the regional operation to finish. -func (c *ComputeUtil) waitForRegionalOp(name string) error { - return c.waitForOp(func() (*raw.Operation, error) { - return c.service.ZoneOperations.Get(c.project, c.zone, name).Do() - }) -} - -// waitForGlobalOp waits for the global operation to finish. -func (c *ComputeUtil) waitForGlobalOp(name string) error { - return c.waitForOp(func() (*raw.Operation, error) { - return c.service.GlobalOperations.Get(c.project, name).Do() - }) -} - -// ip retrieves and returns the external IP address of the instance. -func (c *ComputeUtil) ip() (string, error) { - instance, err := c.service.Instances.Get(c.project, c.zone, c.instanceName).Do() - if err != nil { - return "", unwrapGoogleError(err) - } - - nic := instance.NetworkInterfaces[0] - if c.useInternalIP { - return nic.NetworkIP, nil - } - return nic.AccessConfigs[0].NatIP, nil -} - -func unwrapGoogleError(err error) error { - if googleErr, ok := err.(*googleapi.Error); ok { - return errors.New(googleErr.Message) - } - - return err -} diff --git a/vendor/github.com/docker/machine/drivers/google/compute_util_test.go b/vendor/github.com/docker/machine/drivers/google/compute_util_test.go deleted file mode 100644 index 40f0988c..00000000 --- a/vendor/github.com/docker/machine/drivers/google/compute_util_test.go +++ /dev/null @@ -1,70 +0,0 @@ -package google - -import ( - "testing" - - "github.com/stretchr/testify/assert" - raw "google.golang.org/api/compute/v1" -) - -func TestDefaultTag(t *testing.T) { - tags := parseTags(&Driver{Tags: ""}) - - assert.Equal(t, []string{"docker-machine"}, tags) -} - -func TestAdditionalTag(t *testing.T) { - tags := parseTags(&Driver{Tags: "tag1"}) - - assert.Equal(t, []string{"docker-machine", "tag1"}, tags) -} - -func TestAdditionalTags(t *testing.T) { - tags := parseTags(&Driver{Tags: "tag1,tag2"}) - - assert.Equal(t, []string{"docker-machine", "tag1", "tag2"}, tags) -} - -func TestPortsUsed(t *testing.T) { - var tests = []struct { - description string - computeUtil *ComputeUtil - expectedPorts []string - expectedError error - }{ - {"use docker port", &ComputeUtil{}, []string{"2376"}, nil}, - {"use docker and swarm port", &ComputeUtil{SwarmMaster: true, SwarmHost: "tcp://host:3376"}, []string{"2376", "3376"}, nil}, - {"use docker and non default swarm port", &ComputeUtil{SwarmMaster: true, SwarmHost: "tcp://host:4242"}, []string{"2376", "4242"}, nil}, - } - - for _, test := range tests { - ports, err := test.computeUtil.portsUsed() - - assert.Equal(t, test.expectedPorts, ports) - assert.Equal(t, test.expectedError, err) - } -} - -func TestMissingOpenedPorts(t *testing.T) { - var tests = []struct { - description string - allowed []*raw.FirewallAllowed - ports []string - expectedMissing []string - }{ - {"no port opened", []*raw.FirewallAllowed{}, []string{"2376"}, []string{"2376"}}, - {"docker port opened", []*raw.FirewallAllowed{{IPProtocol: "tcp", Ports: []string{"2376"}}}, []string{"2376"}, []string{}}, - {"missing swarm port", []*raw.FirewallAllowed{{IPProtocol: "tcp", Ports: []string{"2376"}}}, []string{"2376", "3376"}, []string{"3376"}}, - {"missing docker port", []*raw.FirewallAllowed{{IPProtocol: "tcp", Ports: []string{"3376"}}}, []string{"2376", "3376"}, []string{"2376"}}, - {"both ports opened", []*raw.FirewallAllowed{{IPProtocol: "tcp", Ports: []string{"2376", "3376"}}}, []string{"2376", "3376"}, []string{}}, - {"more ports opened", []*raw.FirewallAllowed{{IPProtocol: "tcp", Ports: []string{"2376", "3376", "22", "1024-2048"}}}, []string{"2376", "3376"}, []string{}}, - } - - for _, test := range tests { - firewall := &raw.Firewall{Allowed: test.allowed} - - missingPorts := missingOpenedPorts(firewall, test.ports) - - assert.Equal(t, test.expectedMissing, missingPorts, test.description) - } -} diff --git a/vendor/github.com/docker/machine/drivers/google/google.go b/vendor/github.com/docker/machine/drivers/google/google.go deleted file mode 100644 index 88d9a5cf..00000000 --- a/vendor/github.com/docker/machine/drivers/google/google.go +++ /dev/null @@ -1,375 +0,0 @@ -package google - -import ( - "fmt" - "net" - "strings" - - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnflag" - "github.com/docker/machine/libmachine/ssh" - "github.com/docker/machine/libmachine/state" -) - -// Driver is a struct compatible with the docker.hosts.drivers.Driver interface. -type Driver struct { - *drivers.BaseDriver - Zone string - MachineType string - MachineImage string - DiskType string - Address string - Preemptible bool - UseInternalIP bool - UseInternalIPOnly bool - Scopes string - DiskSize int - Project string - Tags string - UseExisting bool -} - -const ( - defaultZone = "us-central1-a" - defaultUser = "docker-user" - defaultMachineType = "n1-standard-1" - defaultImageName = "https://www.googleapis.com/compute/v1/projects/ubuntu-os-cloud/global/images/ubuntu-1510-wily-v20151114" - defaultScopes = "https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write" - defaultDiskType = "pd-standard" - defaultDiskSize = 10 -) - -// GetCreateFlags registers the flags this driver adds to -// "docker hosts create" -func (d *Driver) GetCreateFlags() []mcnflag.Flag { - return []mcnflag.Flag{ - mcnflag.StringFlag{ - Name: "google-zone", - Usage: "GCE Zone", - Value: defaultZone, - EnvVar: "GOOGLE_ZONE", - }, - mcnflag.StringFlag{ - Name: "google-machine-type", - Usage: "GCE Machine Type", - Value: defaultMachineType, - EnvVar: "GOOGLE_MACHINE_TYPE", - }, - mcnflag.StringFlag{ - Name: "google-machine-image", - Usage: "GCE Machine Image Absolute URL", - Value: defaultImageName, - EnvVar: "GOOGLE_MACHINE_IMAGE", - }, - mcnflag.StringFlag{ - Name: "google-username", - Usage: "GCE User Name", - Value: defaultUser, - EnvVar: "GOOGLE_USERNAME", - }, - mcnflag.StringFlag{ - Name: "google-project", - Usage: "GCE Project", - EnvVar: "GOOGLE_PROJECT", - }, - mcnflag.StringFlag{ - Name: "google-scopes", - Usage: "GCE Scopes (comma-separated if multiple scopes)", - Value: defaultScopes, - EnvVar: "GOOGLE_SCOPES", - }, - mcnflag.IntFlag{ - Name: "google-disk-size", - Usage: "GCE Instance Disk Size (in GB)", - Value: defaultDiskSize, - EnvVar: "GOOGLE_DISK_SIZE", - }, - mcnflag.StringFlag{ - Name: "google-disk-type", - Usage: "GCE Instance Disk type", - Value: defaultDiskType, - EnvVar: "GOOGLE_DISK_TYPE", - }, - mcnflag.StringFlag{ - Name: "google-address", - Usage: "GCE Instance External IP", - EnvVar: "GOOGLE_ADDRESS", - }, - mcnflag.BoolFlag{ - Name: "google-preemptible", - Usage: "GCE Instance Preemptibility", - EnvVar: "GOOGLE_PREEMPTIBLE", - }, - mcnflag.StringFlag{ - Name: "google-tags", - Usage: "GCE Instance Tags (comma-separated)", - EnvVar: "GOOGLE_TAGS", - Value: "", - }, - mcnflag.BoolFlag{ - Name: "google-use-internal-ip", - Usage: "Use internal GCE Instance IP rather than public one", - EnvVar: "GOOGLE_USE_INTERNAL_IP", - }, - mcnflag.BoolFlag{ - Name: "google-use-internal-ip-only", - Usage: "Configure GCE instance to not have an external IP address", - EnvVar: "GOOGLE_USE_INTERNAL_IP_ONLY", - }, - mcnflag.BoolFlag{ - Name: "google-use-existing", - Usage: "Don't create a new VM, use an existing one", - EnvVar: "GOOGLE_USE_EXISTING", - }, - } -} - -// NewDriver creates a Driver with the specified storePath. -func NewDriver(machineName string, storePath string) *Driver { - return &Driver{ - Zone: defaultZone, - DiskType: defaultDiskType, - DiskSize: defaultDiskSize, - MachineType: defaultMachineType, - MachineImage: defaultImageName, - Scopes: defaultScopes, - BaseDriver: &drivers.BaseDriver{ - SSHUser: defaultUser, - MachineName: machineName, - StorePath: storePath, - }, - } -} - -// GetSSHHostname returns hostname for use with ssh -func (d *Driver) GetSSHHostname() (string, error) { - return d.GetIP() -} - -// GetSSHUsername returns username for use with ssh -func (d *Driver) GetSSHUsername() string { - if d.SSHUser == "" { - d.SSHUser = "docker-user" - } - return d.SSHUser -} - -// DriverName returns the name of the driver -func (d *Driver) DriverName() string { - return "google" -} - -// SetConfigFromFlags initializes the driver based on the command line flags. -func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error { - d.Project = flags.String("google-project") - if d.Project == "" { - return fmt.Errorf("Please specify the Google Cloud Project name using the option --google-project.") - } - - d.Zone = flags.String("google-zone") - d.UseExisting = flags.Bool("google-use-existing") - if !d.UseExisting { - d.MachineType = flags.String("google-machine-type") - d.MachineImage = flags.String("google-machine-image") - d.DiskSize = flags.Int("google-disk-size") - d.DiskType = flags.String("google-disk-type") - d.Address = flags.String("google-address") - d.Preemptible = flags.Bool("google-preemptible") - d.UseInternalIP = flags.Bool("google-use-internal-ip") || flags.Bool("google-use-internal-ip-only") - d.UseInternalIPOnly = flags.Bool("google-use-internal-ip-only") - d.Scopes = flags.String("google-scopes") - d.Tags = flags.String("google-tags") - } - d.SSHUser = flags.String("google-username") - d.SSHPort = 22 - d.SetSwarmConfigFromFlags(flags) - - return nil -} - -// PreCreateCheck is called to enforce pre-creation steps -func (d *Driver) PreCreateCheck() error { - c, err := newComputeUtil(d) - if err != nil { - return err - } - - // Check that the project exists. It will also check the credentials - // at the same time. - log.Infof("Check that the project exists") - - if _, err = c.service.Projects.Get(d.Project).Do(); err != nil { - return fmt.Errorf("Project with ID %q not found. %v", d.Project, err) - } - - // Check if the instance already exists. There will be an error if the instance - // doesn't exist, so just check instance for nil. - log.Infof("Check if the instance already exists") - - instance, _ := c.instance() - if d.UseExisting { - if instance == nil { - return fmt.Errorf("Unable to find instance %q in zone %q.", d.MachineName, d.Zone) - } - } else { - if instance != nil { - return fmt.Errorf("Instance %q already exists in zone %q.", d.MachineName, d.Zone) - } - } - - return nil -} - -// Create creates a GCE VM instance acting as a docker host. -func (d *Driver) Create() error { - log.Infof("Generating SSH Key") - - if err := ssh.GenerateSSHKey(d.GetSSHKeyPath()); err != nil { - return err - } - - log.Infof("Creating host...") - - c, err := newComputeUtil(d) - if err != nil { - return err - } - - if err := c.openFirewallPorts(); err != nil { - return err - } - - if d.UseExisting { - return c.configureInstance(d) - } - return c.createInstance(d) -} - -// GetURL returns the URL of the remote docker daemon. -func (d *Driver) GetURL() (string, error) { - ip, err := d.GetIP() - if err != nil { - return "", err - } - - return fmt.Sprintf("tcp://%s", net.JoinHostPort(ip, "2376")), nil -} - -// GetIP returns the IP address of the GCE instance. -func (d *Driver) GetIP() (string, error) { - c, err := newComputeUtil(d) - if err != nil { - return "", err - } - - ip, err := c.ip() - if err != nil { - return "", err - } - if ip == "" { - return "", drivers.ErrHostIsNotRunning - } - - return ip, nil -} - -// GetState returns a docker.hosts.state.State value representing the current state of the host. -func (d *Driver) GetState() (state.State, error) { - c, err := newComputeUtil(d) - if err != nil { - return state.None, err - } - - // All we care about is whether the disk exists, so we just check disk for a nil value. - // There will be no error if disk is not nil. - instance, _ := c.instance() - if instance == nil { - disk, _ := c.disk() - if disk == nil { - return state.None, nil - } - return state.Stopped, nil - } - - switch instance.Status { - case "PROVISIONING", "STAGING": - return state.Starting, nil - case "RUNNING": - return state.Running, nil - case "STOPPING", "STOPPED", "TERMINATED": - return state.Stopped, nil - } - return state.None, nil -} - -// Start starts an existing GCE instance or create an instance with an existing disk. -func (d *Driver) Start() error { - c, err := newComputeUtil(d) - if err != nil { - return err - } - - instance, err := c.instance() - if err != nil { - if !strings.Contains(err.Error(), "notFound") { - return err - } - } - - if instance == nil { - if err = c.createInstance(d); err != nil { - return err - } - } else { - if err := c.startInstance(); err != nil { - return err - } - } - - d.IPAddress, err = d.GetIP() - return err -} - -// Stop stops an existing GCE instance. -func (d *Driver) Stop() error { - c, err := newComputeUtil(d) - if err != nil { - return err - } - - if err := c.stopInstance(); err != nil { - return err - } - - d.IPAddress = "" - return nil -} - -// Restart restarts a machine which is known to be running. -func (d *Driver) Restart() error { - if err := d.Stop(); err != nil { - return err - } - - return d.Start() -} - -// Kill stops an existing GCE instance. -func (d *Driver) Kill() error { - return d.Stop() -} - -// Remove deletes the GCE instance and the disk. -func (d *Driver) Remove() error { - c, err := newComputeUtil(d) - if err != nil { - return err - } - - if err := c.deleteInstance(); err != nil { - return err - } - - return c.deleteDisk() -} diff --git a/vendor/github.com/docker/machine/drivers/google/google_test.go b/vendor/github.com/docker/machine/drivers/google/google_test.go deleted file mode 100644 index b72035ac..00000000 --- a/vendor/github.com/docker/machine/drivers/google/google_test.go +++ /dev/null @@ -1,24 +0,0 @@ -package google - -import ( - "testing" - - "github.com/docker/machine/libmachine/drivers" - "github.com/stretchr/testify/assert" -) - -func TestSetConfigFromFlags(t *testing.T) { - driver := NewDriver("", "") - - checkFlags := &drivers.CheckDriverOptions{ - FlagsValues: map[string]interface{}{ - "google-project": "PROJECT", - }, - CreateFlags: driver.GetCreateFlags(), - } - - err := driver.SetConfigFromFlags(checkFlags) - - assert.NoError(t, err) - assert.Empty(t, checkFlags.InvalidFlags) -} diff --git a/vendor/github.com/docker/machine/drivers/hyperv/hyperv.go b/vendor/github.com/docker/machine/drivers/hyperv/hyperv.go deleted file mode 100644 index e67e0437..00000000 --- a/vendor/github.com/docker/machine/drivers/hyperv/hyperv.go +++ /dev/null @@ -1,476 +0,0 @@ -package hyperv - -import ( - "fmt" - "net" - "os" - "time" - - "errors" - - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnflag" - "github.com/docker/machine/libmachine/mcnutils" - "github.com/docker/machine/libmachine/ssh" - "github.com/docker/machine/libmachine/state" -) - -type Driver struct { - *drivers.BaseDriver - Boot2DockerURL string - VSwitch string - DiskSize int - MemSize int - CPU int - MacAddr string - VLanID int -} - -const ( - defaultDiskSize = 20000 - defaultMemory = 1024 - defaultCPU = 1 - defaultVLanID = 0 -) - -// NewDriver creates a new Hyper-v driver with default settings. -func NewDriver(hostName, storePath string) *Driver { - return &Driver{ - DiskSize: defaultDiskSize, - MemSize: defaultMemory, - CPU: defaultCPU, - BaseDriver: &drivers.BaseDriver{ - MachineName: hostName, - StorePath: storePath, - }, - } -} - -// GetCreateFlags registers the flags this driver adds to -// "docker hosts create" -func (d *Driver) GetCreateFlags() []mcnflag.Flag { - return []mcnflag.Flag{ - mcnflag.StringFlag{ - Name: "hyperv-boot2docker-url", - Usage: "URL of the boot2docker ISO. Defaults to the latest available version.", - EnvVar: "HYPERV_BOOT2DOCKER_URL", - }, - mcnflag.StringFlag{ - Name: "hyperv-virtual-switch", - Usage: "Virtual switch name. Defaults to first found.", - EnvVar: "HYPERV_VIRTUAL_SWITCH", - }, - mcnflag.IntFlag{ - Name: "hyperv-disk-size", - Usage: "Maximum size of dynamically expanding disk in MB.", - Value: defaultDiskSize, - EnvVar: "HYPERV_DISK_SIZE", - }, - mcnflag.IntFlag{ - Name: "hyperv-memory", - Usage: "Memory size for host in MB.", - Value: defaultMemory, - EnvVar: "HYPERV_MEMORY", - }, - mcnflag.IntFlag{ - Name: "hyperv-cpu-count", - Usage: "number of CPUs for the machine", - Value: defaultCPU, - EnvVar: "HYPERV_CPU_COUNT", - }, - mcnflag.StringFlag{ - Name: "hyperv-static-macaddress", - Usage: "Hyper-V network adapter's static MAC address.", - EnvVar: "HYPERV_STATIC_MACADDRESS", - }, - mcnflag.IntFlag{ - Name: "hyperv-vlan-id", - Usage: "Hyper-V network adapter's VLAN ID if any", - Value: defaultVLanID, - EnvVar: "HYPERV_VLAN_ID", - }, - } -} - -func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error { - if drivers.EngineInstallURLFlagSet(flags) { - return errors.New("--engine-install-url cannot be used with the hyperv driver, use --hyperv-boot2docker-url instead") - } - d.Boot2DockerURL = flags.String("hyperv-boot2docker-url") - d.VSwitch = flags.String("hyperv-virtual-switch") - d.DiskSize = flags.Int("hyperv-disk-size") - d.MemSize = flags.Int("hyperv-memory") - d.CPU = flags.Int("hyperv-cpu-count") - d.MacAddr = flags.String("hyperv-static-macaddress") - d.VLanID = flags.Int("hyperv-vlan-id") - d.SSHUser = "docker" - d.SetSwarmConfigFromFlags(flags) - - return nil -} - -func (d *Driver) GetSSHHostname() (string, error) { - return d.GetIP() -} - -// DriverName returns the name of the driver -func (d *Driver) DriverName() string { - return "hyperv" -} - -func (d *Driver) GetURL() (string, error) { - ip, err := d.GetIP() - if err != nil { - return "", err - } - - if ip == "" { - return "", nil - } - - return fmt.Sprintf("tcp://%s", net.JoinHostPort(ip, "2376")), nil -} - -func (d *Driver) GetState() (state.State, error) { - stdout, err := cmdOut("(", "Get-VM", d.MachineName, ").state") - if err != nil { - return state.None, fmt.Errorf("Failed to find the VM status") - } - - resp := parseLines(stdout) - if len(resp) < 1 { - return state.None, nil - } - - switch resp[0] { - case "Running": - return state.Running, nil - case "Off": - return state.Stopped, nil - default: - return state.None, nil - } -} - -// PreCreateCheck checks that the machine creation process can be started safely. -func (d *Driver) PreCreateCheck() error { - // Check that powershell was found - if powershell == "" { - return ErrPowerShellNotFound - } - - // Check that hyperv is installed - if err := hypervAvailable(); err != nil { - return err - } - - // Check that the user is an Administrator - isAdmin, err := isAdministrator() - if err != nil { - return err - } - if !isAdmin { - return ErrNotAdministrator - } - - // Check that there is a virtual switch already configured - if _, err := d.chooseVirtualSwitch(); err != nil { - return err - } - - // Downloading boot2docker to cache should be done here to make sure - // that a download failure will not leave a machine half created. - b2dutils := mcnutils.NewB2dUtils(d.StorePath) - if err := b2dutils.UpdateISOCache(d.Boot2DockerURL); err != nil { - return err - } - - return nil -} - -func (d *Driver) Create() error { - b2dutils := mcnutils.NewB2dUtils(d.StorePath) - if err := b2dutils.CopyIsoToMachineDir(d.Boot2DockerURL, d.MachineName); err != nil { - return err - } - - log.Infof("Creating SSH key...") - if err := ssh.GenerateSSHKey(d.GetSSHKeyPath()); err != nil { - return err - } - - log.Infof("Creating VM...") - virtualSwitch, err := d.chooseVirtualSwitch() - if err != nil { - return err - } - - log.Infof("Using switch %q", virtualSwitch) - - diskImage, err := d.generateDiskImage() - if err != nil { - return err - } - - if err := cmd("New-VM", - d.MachineName, - "-Path", fmt.Sprintf("'%s'", d.ResolveStorePath(".")), - "-SwitchName", quote(virtualSwitch), - "-MemoryStartupBytes", toMb(d.MemSize)); err != nil { - return err - } - - if d.CPU > 1 { - if err := cmd("Set-VMProcessor", - d.MachineName, - "-Count", fmt.Sprintf("%d", d.CPU)); err != nil { - return err - } - } - - if d.MacAddr != "" { - if err := cmd("Set-VMNetworkAdapter", - "-VMName", d.MachineName, - "-StaticMacAddress", fmt.Sprintf("\"%s\"", d.MacAddr)); err != nil { - return err - } - } - - if d.VLanID > 0 { - if err := cmd("Set-VMNetworkAdapterVlan", - "-VMName", d.MachineName, - "-Access", - "-VlanId", fmt.Sprintf("%d", d.VLanID)); err != nil { - return err - } - } - - if err := cmd("Set-VMDvdDrive", - "-VMName", d.MachineName, - "-Path", quote(d.ResolveStorePath("boot2docker.iso"))); err != nil { - return err - } - - if err := cmd("Add-VMHardDiskDrive", - "-VMName", d.MachineName, - "-Path", quote(diskImage)); err != nil { - return err - } - - log.Infof("Starting VM...") - return d.Start() -} - -func (d *Driver) chooseVirtualSwitch() (string, error) { - stdout, err := cmdOut("(Get-VMSwitch).Name") - if err != nil { - return "", err - } - - switches := parseLines(stdout) - - if d.VSwitch == "" { - if len(switches) < 1 { - return "", fmt.Errorf("no vswitch found. A valid vswitch must be available for this command to run. Check https://docs.docker.com/machine/drivers/hyper-v/") - } - - return switches[0], nil - } - - found := false - for _, name := range switches { - if name == d.VSwitch { - found = true - break - } - } - - if !found { - return "", fmt.Errorf("vswitch %q not found", d.VSwitch) - } - - return d.VSwitch, nil -} - -// waitForIP waits until the host has a valid IP -func (d *Driver) waitForIP() (string, error) { - log.Infof("Waiting for host to start...") - - for { - ip, _ := d.GetIP() - if ip != "" { - return ip, nil - } - - time.Sleep(1 * time.Second) - } -} - -// waitStopped waits until the host is stopped -func (d *Driver) waitStopped() error { - log.Infof("Waiting for host to stop...") - - for { - s, err := d.GetState() - if err != nil { - return err - } - - if s != state.Running { - return nil - } - - time.Sleep(1 * time.Second) - } -} - -// Start starts an host -func (d *Driver) Start() error { - if err := cmd("Start-VM", d.MachineName); err != nil { - return err - } - - ip, err := d.waitForIP() - if err != nil { - return err - } - - d.IPAddress = ip - - return nil -} - -// Stop stops an host -func (d *Driver) Stop() error { - if err := cmd("Stop-VM", d.MachineName); err != nil { - return err - } - - if err := d.waitStopped(); err != nil { - return err - } - - d.IPAddress = "" - - return nil -} - -// Remove removes an host -func (d *Driver) Remove() error { - s, err := d.GetState() - if err != nil { - return err - } - - if s == state.Running { - if err := d.Kill(); err != nil { - return err - } - } - - return cmd("Remove-VM", d.MachineName, "-Force") -} - -// Restart stops and starts an host -func (d *Driver) Restart() error { - err := d.Stop() - if err != nil { - return err - } - - return d.Start() -} - -// Kill force stops an host -func (d *Driver) Kill() error { - if err := cmd("Stop-VM", d.MachineName, "-TurnOff"); err != nil { - return err - } - - if err := d.waitStopped(); err != nil { - return err - } - - d.IPAddress = "" - - return nil -} - -func (d *Driver) GetIP() (string, error) { - s, err := d.GetState() - if err != nil { - return "", err - } - if s != state.Running { - return "", drivers.ErrHostIsNotRunning - } - - stdout, err := cmdOut("((", "Get-VM", d.MachineName, ").networkadapters[0]).ipaddresses[0]") - if err != nil { - return "", err - } - - resp := parseLines(stdout) - if len(resp) < 1 { - return "", fmt.Errorf("IP not found") - } - - return resp[0], nil -} - -func (d *Driver) publicSSHKeyPath() string { - return d.GetSSHKeyPath() + ".pub" -} - -// generateDiskImage creates a small fixed vhd, put the tar in, convert to dynamic, then resize -func (d *Driver) generateDiskImage() (string, error) { - diskImage := d.ResolveStorePath("disk.vhd") - fixed := d.ResolveStorePath("fixed.vhd") - - // Resizing vhds requires administrator priviledges - // incase the user is only a hyper-v admin then create the disk at the target size to avoid resizing. - isWindowsAdmin, err := isWindowsAdministrator() - if err != nil { - return "", err - } - fixedDiskSize := "10MB" - if !isWindowsAdmin { - fixedDiskSize = toMb(d.DiskSize) - } - - log.Infof("Creating VHD") - if err := cmd("New-VHD", "-Path", quote(fixed), "-SizeBytes", fixedDiskSize, "-Fixed"); err != nil { - return "", err - } - - tarBuf, err := mcnutils.MakeDiskImage(d.publicSSHKeyPath()) - if err != nil { - return "", err - } - - file, err := os.OpenFile(fixed, os.O_WRONLY, 0644) - if err != nil { - return "", err - } - defer file.Close() - - file.Seek(0, os.SEEK_SET) - _, err = file.Write(tarBuf.Bytes()) - if err != nil { - return "", err - } - file.Close() - - if err := cmd("Convert-VHD", "-Path", quote(fixed), "-DestinationPath", quote(diskImage), "-VHDType", "Dynamic", "-DeleteSource"); err != nil { - return "", err - } - - if isWindowsAdmin { - if err := cmd("Resize-VHD", "-Path", quote(diskImage), "-SizeBytes", toMb(d.DiskSize)); err != nil { - return "", err - } - } - - return diskImage, nil -} diff --git a/vendor/github.com/docker/machine/drivers/hyperv/hyperv_test.go b/vendor/github.com/docker/machine/drivers/hyperv/hyperv_test.go deleted file mode 100644 index d4d833ee..00000000 --- a/vendor/github.com/docker/machine/drivers/hyperv/hyperv_test.go +++ /dev/null @@ -1,68 +0,0 @@ -package hyperv - -import ( - "testing" - - "github.com/docker/machine/libmachine/drivers" - "github.com/stretchr/testify/assert" -) - -func TestSetConfigFromDefaultFlags(t *testing.T) { - driver := NewDriver("default", "path") - - checkFlags := &drivers.CheckDriverOptions{ - FlagsValues: map[string]interface{}{}, - CreateFlags: driver.GetCreateFlags(), - } - - err := driver.SetConfigFromFlags(checkFlags) - assert.NoError(t, err) - assert.Empty(t, checkFlags.InvalidFlags) - - sshPort, err := driver.GetSSHPort() - assert.Equal(t, 22, sshPort) - assert.NoError(t, err) - - assert.Equal(t, "", driver.Boot2DockerURL) - assert.Equal(t, "", driver.VSwitch) - assert.Equal(t, defaultDiskSize, driver.DiskSize) - assert.Equal(t, defaultMemory, driver.MemSize) - assert.Equal(t, defaultCPU, driver.CPU) - assert.Equal(t, "", driver.MacAddr) - assert.Equal(t, defaultVLanID, driver.VLanID) - assert.Equal(t, "docker", driver.GetSSHUsername()) -} - -func TestSetConfigFromCustomFlags(t *testing.T) { - driver := NewDriver("default", "path") - - checkFlags := &drivers.CheckDriverOptions{ - FlagsValues: map[string]interface{}{ - "hyperv-boot2docker-url": "B2D_URL", - "hyperv-virtual-switch": "TheSwitch", - "hyperv-disk-size": 100000, - "hyperv-memory": 4096, - "hyperv-cpu-count": 4, - "hyperv-static-macaddress": "00:0a:95:9d:68:16", - "hyperv-vlan-id": 2, - }, - CreateFlags: driver.GetCreateFlags(), - } - - err := driver.SetConfigFromFlags(checkFlags) - assert.NoError(t, err) - assert.Empty(t, checkFlags.InvalidFlags) - - sshPort, err := driver.GetSSHPort() - assert.Equal(t, 22, sshPort) - assert.NoError(t, err) - - assert.Equal(t, "B2D_URL", driver.Boot2DockerURL) - assert.Equal(t, "TheSwitch", driver.VSwitch) - assert.Equal(t, 100000, driver.DiskSize) - assert.Equal(t, 4096, driver.MemSize) - assert.Equal(t, 4, driver.CPU) - assert.Equal(t, "00:0a:95:9d:68:16", driver.MacAddr) - assert.Equal(t, 2, driver.VLanID) - assert.Equal(t, "docker", driver.GetSSHUsername()) -} diff --git a/vendor/github.com/docker/machine/drivers/hyperv/powershell.go b/vendor/github.com/docker/machine/drivers/hyperv/powershell.go deleted file mode 100644 index b486cbad..00000000 --- a/vendor/github.com/docker/machine/drivers/hyperv/powershell.go +++ /dev/null @@ -1,114 +0,0 @@ -package hyperv - -import ( - "bufio" - "bytes" - "errors" - "os/exec" - "strings" - - "fmt" - - "github.com/docker/machine/libmachine/log" -) - -var powershell string - -var ( - ErrPowerShellNotFound = errors.New("Powershell was not found in the path") - ErrNotAdministrator = errors.New("Hyper-v commands have to be run as an Administrator") - ErrNotInstalled = errors.New("Hyper-V PowerShell Module is not available") -) - -func init() { - powershell, _ = exec.LookPath("powershell.exe") -} - -func cmdOut(args ...string) (string, error) { - args = append([]string{"-NoProfile", "-NonInteractive"}, args...) - cmd := exec.Command(powershell, args...) - log.Debugf("[executing ==>] : %v %v", powershell, strings.Join(args, " ")) - var stdout bytes.Buffer - var stderr bytes.Buffer - cmd.Stdout = &stdout - cmd.Stderr = &stderr - err := cmd.Run() - log.Debugf("[stdout =====>] : %s", stdout.String()) - log.Debugf("[stderr =====>] : %s", stderr.String()) - return stdout.String(), err -} - -func cmd(args ...string) error { - _, err := cmdOut(args...) - return err -} - -func parseLines(stdout string) []string { - resp := []string{} - - s := bufio.NewScanner(strings.NewReader(stdout)) - for s.Scan() { - resp = append(resp, s.Text()) - } - - return resp -} - -func hypervAvailable() error { - stdout, err := cmdOut("@(Get-Command Get-VM).ModuleName") - if err != nil { - return err - } - - resp := parseLines(stdout) - if resp[0] != "Hyper-V" { - return ErrNotInstalled - } - - return nil -} - -func isAdministrator() (bool, error) { - hypervAdmin := isHypervAdministrator() - - if hypervAdmin { - return true, nil - } - - windowsAdmin, err := isWindowsAdministrator() - - if err != nil { - return false, err - } - - return windowsAdmin, nil -} - -func isHypervAdministrator() bool { - stdout, err := cmdOut(`@([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole("Hyper-V Administrators")`) - if err != nil { - log.Debug(err) - return false - } - - resp := parseLines(stdout) - return resp[0] == "True" -} - -func isWindowsAdministrator() (bool, error) { - stdout, err := cmdOut(`@([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")`) - if err != nil { - return false, err - } - - resp := parseLines(stdout) - return resp[0] == "True", nil -} - -func quote(text string) string { - return fmt.Sprintf("'%s'", text) -} - -func toMb(value int) string { - return fmt.Sprintf("%dMB", value) -} diff --git a/vendor/github.com/docker/machine/drivers/none/driver.go b/vendor/github.com/docker/machine/drivers/none/driver.go deleted file mode 100644 index 2e88dbef..00000000 --- a/vendor/github.com/docker/machine/drivers/none/driver.go +++ /dev/null @@ -1,113 +0,0 @@ -package none - -import ( - "fmt" - neturl "net/url" - - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/mcnflag" - "github.com/docker/machine/libmachine/state" -) - -const driverName = "none" - -// Driver is the driver used when no driver is selected. It is used to -// connect to existing Docker hosts by specifying the URL of the host as -// an option. -type Driver struct { - *drivers.BaseDriver - URL string -} - -func NewDriver(hostName, storePath string) *Driver { - return &Driver{ - BaseDriver: &drivers.BaseDriver{ - MachineName: hostName, - StorePath: storePath, - }, - } -} - -func (d *Driver) GetCreateFlags() []mcnflag.Flag { - return []mcnflag.Flag{ - mcnflag.StringFlag{ - Name: "url", - Usage: "URL of host when no driver is selected", - Value: "", - }, - } -} - -func (d *Driver) Create() error { - return nil -} - -// DriverName returns the name of the driver -func (d *Driver) DriverName() string { - return driverName -} - -func (d *Driver) GetIP() (string, error) { - return d.IPAddress, nil -} - -func (d *Driver) GetSSHHostname() (string, error) { - return "", nil -} - -func (d *Driver) GetSSHKeyPath() string { - return "" -} - -func (d *Driver) GetSSHPort() (int, error) { - return 0, nil -} - -func (d *Driver) GetSSHUsername() string { - return "" -} - -func (d *Driver) GetURL() (string, error) { - return d.URL, nil -} - -func (d *Driver) GetState() (state.State, error) { - return state.Running, nil -} - -func (d *Driver) Kill() error { - return fmt.Errorf("hosts without a driver cannot be killed") -} - -func (d *Driver) Remove() error { - return nil -} - -func (d *Driver) Restart() error { - return fmt.Errorf("hosts without a driver cannot be restarted") -} - -func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error { - url := flags.String("url") - - if url == "" { - return fmt.Errorf("--url option is required when no driver is selected") - } - - d.URL = url - u, err := neturl.Parse(url) - if err != nil { - return err - } - - d.IPAddress = u.Host - return nil -} - -func (d *Driver) Start() error { - return fmt.Errorf("hosts without a driver cannot be started") -} - -func (d *Driver) Stop() error { - return fmt.Errorf("hosts without a driver cannot be stopped") -} diff --git a/vendor/github.com/docker/machine/drivers/openstack/client.go b/vendor/github.com/docker/machine/drivers/openstack/client.go deleted file mode 100644 index 83a57390..00000000 --- a/vendor/github.com/docker/machine/drivers/openstack/client.go +++ /dev/null @@ -1,575 +0,0 @@ -package openstack - -import ( - "crypto/tls" - "fmt" - "net/http" - "time" - - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnutils" - "github.com/docker/machine/libmachine/version" - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/openstack" - compute_ips "github.com/rackspace/gophercloud/openstack/compute/v2/extensions/floatingip" - "github.com/rackspace/gophercloud/openstack/compute/v2/extensions/keypairs" - "github.com/rackspace/gophercloud/openstack/compute/v2/extensions/startstop" - "github.com/rackspace/gophercloud/openstack/compute/v2/flavors" - "github.com/rackspace/gophercloud/openstack/compute/v2/images" - "github.com/rackspace/gophercloud/openstack/compute/v2/servers" - "github.com/rackspace/gophercloud/openstack/identity/v2/tenants" - "github.com/rackspace/gophercloud/openstack/networking/v2/extensions/layer3/floatingips" - "github.com/rackspace/gophercloud/openstack/networking/v2/networks" - "github.com/rackspace/gophercloud/openstack/networking/v2/ports" - "github.com/rackspace/gophercloud/pagination" -) - -type Client interface { - Authenticate(d *Driver) error - InitComputeClient(d *Driver) error - InitIdentityClient(d *Driver) error - InitNetworkClient(d *Driver) error - - CreateInstance(d *Driver) (string, error) - GetInstanceState(d *Driver) (string, error) - StartInstance(d *Driver) error - StopInstance(d *Driver) error - RestartInstance(d *Driver) error - DeleteInstance(d *Driver) error - WaitForInstanceStatus(d *Driver, status string) error - GetInstanceIPAddresses(d *Driver) ([]IPAddress, error) - GetPublicKey(keyPairName string) ([]byte, error) - CreateKeyPair(d *Driver, name string, publicKey string) error - DeleteKeyPair(d *Driver, name string) error - GetNetworkID(d *Driver) (string, error) - GetFlavorID(d *Driver) (string, error) - GetImageID(d *Driver) (string, error) - AssignFloatingIP(d *Driver, floatingIP *FloatingIP) error - GetFloatingIPs(d *Driver) ([]FloatingIP, error) - GetFloatingIPPoolID(d *Driver) (string, error) - GetInstancePortID(d *Driver) (string, error) - GetTenantID(d *Driver) (string, error) -} - -type GenericClient struct { - Provider *gophercloud.ProviderClient - Compute *gophercloud.ServiceClient - Identity *gophercloud.ServiceClient - Network *gophercloud.ServiceClient -} - -func (c *GenericClient) CreateInstance(d *Driver) (string, error) { - serverOpts := servers.CreateOpts{ - Name: d.MachineName, - FlavorRef: d.FlavorId, - ImageRef: d.ImageId, - UserData: d.UserData, - SecurityGroups: d.SecurityGroups, - AvailabilityZone: d.AvailabilityZone, - } - if d.NetworkId != "" { - serverOpts.Networks = []servers.Network{ - { - UUID: d.NetworkId, - }, - } - } - - log.Info("Creating machine...") - - server, err := servers.Create(c.Compute, keypairs.CreateOptsExt{ - serverOpts, - d.KeyPairName, - }).Extract() - if err != nil { - return "", err - } - return server.ID, nil -} - -const ( - Floating string = "floating" - Fixed string = "fixed" -) - -type IPAddress struct { - Network string - AddressType string - Address string - Version int - Mac string -} - -type FloatingIP struct { - Id string - Ip string - NetworkId string - PortId string - Pool string - MachineId string -} - -func (c *GenericClient) GetInstanceState(d *Driver) (string, error) { - server, err := c.GetServerDetail(d) - if err != nil { - return "", err - } - return server.Status, nil -} - -func (c *GenericClient) StartInstance(d *Driver) error { - if result := startstop.Start(c.Compute, d.MachineId); result.Err != nil { - return result.Err - } - return nil -} - -func (c *GenericClient) StopInstance(d *Driver) error { - if result := startstop.Stop(c.Compute, d.MachineId); result.Err != nil { - return result.Err - } - return nil -} - -func (c *GenericClient) RestartInstance(d *Driver) error { - if result := servers.Reboot(c.Compute, d.MachineId, servers.SoftReboot); result.Err != nil { - return result.Err - } - return nil -} - -func (c *GenericClient) DeleteInstance(d *Driver) error { - if result := servers.Delete(c.Compute, d.MachineId); result.Err != nil { - return result.Err - } - return nil -} - -func (c *GenericClient) WaitForInstanceStatus(d *Driver, status string) error { - return mcnutils.WaitForSpecificOrError(func() (bool, error) { - current, err := servers.Get(c.Compute, d.MachineId).Extract() - if err != nil { - return true, err - } - - if current.Status == "ERROR" { - return true, fmt.Errorf("Instance creation failed. Instance is in ERROR state") - } - - if current.Status == status { - return true, nil - } - - return false, nil - }, (d.ActiveTimeout / 4), 4*time.Second) -} - -func (c *GenericClient) GetInstanceIPAddresses(d *Driver) ([]IPAddress, error) { - server, err := c.GetServerDetail(d) - if err != nil { - return nil, err - } - addresses := []IPAddress{} - for network, networkAddresses := range server.Addresses { - for _, element := range networkAddresses.([]interface{}) { - address := element.(map[string]interface{}) - version, ok := address["version"].(float64) - if !ok { - // Assume IPv4 if no version present. - version = 4 - } - - addr := IPAddress{ - Network: network, - AddressType: Fixed, - Address: address["addr"].(string), - Version: int(version), - } - - if tp, ok := address["OS-EXT-IPS:type"]; ok { - addr.AddressType = tp.(string) - } - if mac, ok := address["OS-EXT-IPS-MAC:mac_addr"]; ok { - addr.Mac = mac.(string) - } - - addresses = append(addresses, addr) - } - } - - return addresses, nil -} - -func (c *GenericClient) GetNetworkID(d *Driver) (string, error) { - return c.getNetworkID(d, d.NetworkName) -} - -func (c *GenericClient) GetFloatingIPPoolID(d *Driver) (string, error) { - return c.getNetworkID(d, d.FloatingIpPool) -} - -func (c *GenericClient) getNetworkID(d *Driver, networkName string) (string, error) { - opts := networks.ListOpts{Name: networkName} - pager := networks.List(c.Network, opts) - networkID := "" - - err := pager.EachPage(func(page pagination.Page) (bool, error) { - networkList, err := networks.ExtractNetworks(page) - if err != nil { - return false, err - } - - for _, n := range networkList { - if n.Name == networkName { - networkID = n.ID - return false, nil - } - } - - return true, nil - }) - - return networkID, err -} - -func (c *GenericClient) GetFlavorID(d *Driver) (string, error) { - pager := flavors.ListDetail(c.Compute, nil) - flavorID := "" - - err := pager.EachPage(func(page pagination.Page) (bool, error) { - flavorList, err := flavors.ExtractFlavors(page) - if err != nil { - return false, err - } - - for _, f := range flavorList { - if f.Name == d.FlavorName { - flavorID = f.ID - return false, nil - } - } - - return true, nil - }) - - return flavorID, err -} - -func (c *GenericClient) GetImageID(d *Driver) (string, error) { - opts := images.ListOpts{Name: d.ImageName} - pager := images.ListDetail(c.Compute, opts) - imageID := "" - - err := pager.EachPage(func(page pagination.Page) (bool, error) { - imageList, err := images.ExtractImages(page) - if err != nil { - return false, err - } - - for _, i := range imageList { - if i.Name == d.ImageName { - imageID = i.ID - return false, nil - } - } - - return true, nil - }) - - return imageID, err -} - -func (c *GenericClient) GetTenantID(d *Driver) (string, error) { - pager := tenants.List(c.Identity, nil) - tenantId := "" - - err := pager.EachPage(func(page pagination.Page) (bool, error) { - tenantList, err := tenants.ExtractTenants(page) - if err != nil { - return false, err - } - - for _, i := range tenantList { - if i.Name == d.TenantName { - tenantId = i.ID - return false, nil - } - } - - return true, nil - }) - - return tenantId, err -} - -func (c *GenericClient) GetPublicKey(keyPairName string) ([]byte, error) { - kp, err := keypairs.Get(c.Compute, keyPairName).Extract() - if err != nil { - return nil, err - } - return []byte(kp.PublicKey), nil -} - -func (c *GenericClient) CreateKeyPair(d *Driver, name string, publicKey string) error { - opts := keypairs.CreateOpts{ - Name: name, - PublicKey: publicKey, - } - if result := keypairs.Create(c.Compute, opts); result.Err != nil { - return result.Err - } - return nil -} - -func (c *GenericClient) DeleteKeyPair(d *Driver, name string) error { - if result := keypairs.Delete(c.Compute, name); result.Err != nil { - return result.Err - } - return nil -} - -func (c *GenericClient) GetServerDetail(d *Driver) (*servers.Server, error) { - server, err := servers.Get(c.Compute, d.MachineId).Extract() - if err != nil { - return nil, err - } - return server, nil -} - -func (c *GenericClient) AssignFloatingIP(d *Driver, floatingIP *FloatingIP) error { - if d.ComputeNetwork { - return c.assignNovaFloatingIP(d, floatingIP) - } - return c.assignNeutronFloatingIP(d, floatingIP) -} - -func (c *GenericClient) assignNovaFloatingIP(d *Driver, floatingIP *FloatingIP) error { - if floatingIP.Ip == "" { - f, err := compute_ips.Create(c.Compute, compute_ips.CreateOpts{ - Pool: d.FloatingIpPool, - }).Extract() - if err != nil { - return err - } - floatingIP.Ip = f.IP - floatingIP.Pool = f.Pool - } - return compute_ips.Associate(c.Compute, d.MachineId, floatingIP.Ip).Err -} - -func (c *GenericClient) assignNeutronFloatingIP(d *Driver, floatingIP *FloatingIP) error { - portID, err := c.GetInstancePortID(d) - if err != nil { - return err - } - if floatingIP.Id == "" { - f, err := floatingips.Create(c.Network, floatingips.CreateOpts{ - FloatingNetworkID: d.FloatingIpPoolId, - PortID: portID, - }).Extract() - if err != nil { - return err - } - floatingIP.Id = f.ID - floatingIP.Ip = f.FloatingIP - floatingIP.NetworkId = f.FloatingNetworkID - floatingIP.PortId = f.PortID - return nil - } - _, err = floatingips.Update(c.Network, floatingIP.Id, floatingips.UpdateOpts{ - PortID: portID, - }).Extract() - if err != nil { - return err - } - return nil -} - -func (c *GenericClient) GetFloatingIPs(d *Driver) ([]FloatingIP, error) { - if d.ComputeNetwork { - return c.getNovaNetworkFloatingIPs(d) - } - return c.getNeutronNetworkFloatingIPs(d) -} - -func (c *GenericClient) getNovaNetworkFloatingIPs(d *Driver) ([]FloatingIP, error) { - pager := compute_ips.List(c.Compute) - - ips := []FloatingIP{} - err := pager.EachPage(func(page pagination.Page) (continue_paging bool, err error) { - continue_paging, err = true, nil - ipListing, err := compute_ips.ExtractFloatingIPs(page) - - for _, ip := range ipListing { - if ip.InstanceID == "" && ip.Pool == d.FloatingIpPool { - ips = append(ips, FloatingIP{ - Id: ip.ID, - Ip: ip.IP, - Pool: ip.Pool, - }) - } - } - return - }) - return ips, err -} - -func (c *GenericClient) getNeutronNetworkFloatingIPs(d *Driver) ([]FloatingIP, error) { - log.Debug("Listing floating IPs", map[string]string{ - "FloatingNetworkId": d.FloatingIpPoolId, - "TenantID": d.TenantId, - }) - pager := floatingips.List(c.Network, floatingips.ListOpts{ - FloatingNetworkID: d.FloatingIpPoolId, - TenantID: d.TenantId, - }) - - ips := []FloatingIP{} - err := pager.EachPage(func(page pagination.Page) (bool, error) { - floatingipList, err := floatingips.ExtractFloatingIPs(page) - if err != nil { - return false, err - } - for _, f := range floatingipList { - ips = append(ips, FloatingIP{ - Id: f.ID, - Ip: f.FloatingIP, - NetworkId: f.FloatingNetworkID, - PortId: f.PortID, - }) - } - return true, nil - }) - - if err != nil { - return nil, err - } - return ips, nil -} - -func (c *GenericClient) GetInstancePortID(d *Driver) (string, error) { - pager := ports.List(c.Network, ports.ListOpts{ - DeviceID: d.MachineId, - NetworkID: d.NetworkId, - }) - - var portID string - err := pager.EachPage(func(page pagination.Page) (bool, error) { - portList, err := ports.ExtractPorts(page) - if err != nil { - return false, err - } - for _, port := range portList { - portID = port.ID - return false, nil - } - return true, nil - }) - - if err != nil { - return "", err - } - return portID, nil -} - -func (c *GenericClient) InitComputeClient(d *Driver) error { - if c.Compute != nil { - return nil - } - - compute, err := openstack.NewComputeV2(c.Provider, gophercloud.EndpointOpts{ - Region: d.Region, - Availability: c.getEndpointType(d), - }) - if err != nil { - return err - } - c.Compute = compute - return nil -} - -func (c *GenericClient) InitIdentityClient(d *Driver) error { - if c.Identity != nil { - return nil - } - - identity := openstack.NewIdentityV2(c.Provider) - c.Identity = identity - return nil -} - -func (c *GenericClient) InitNetworkClient(d *Driver) error { - if c.Network != nil { - return nil - } - - network, err := openstack.NewNetworkV2(c.Provider, gophercloud.EndpointOpts{ - Region: d.Region, - Availability: c.getEndpointType(d), - }) - if err != nil { - return err - } - c.Network = network - return nil -} - -func (c *GenericClient) getEndpointType(d *Driver) gophercloud.Availability { - switch d.EndpointType { - case "internalURL": - return gophercloud.AvailabilityInternal - case "adminURL": - return gophercloud.AvailabilityAdmin - } - return gophercloud.AvailabilityPublic -} - -func (c *GenericClient) Authenticate(d *Driver) error { - if c.Provider != nil { - return nil - } - - log.Debug("Authenticating...", map[string]interface{}{ - "AuthUrl": d.AuthUrl, - "Insecure": d.Insecure, - "DomainID": d.DomainID, - "DomainName": d.DomainName, - "Username": d.Username, - "TenantName": d.TenantName, - "TenantID": d.TenantId, - }) - - opts := gophercloud.AuthOptions{ - IdentityEndpoint: d.AuthUrl, - DomainID: d.DomainID, - DomainName: d.DomainName, - Username: d.Username, - Password: d.Password, - TenantName: d.TenantName, - TenantID: d.TenantId, - AllowReauth: true, - } - - provider, err := openstack.NewClient(opts.IdentityEndpoint) - if err != nil { - return err - } - - provider.UserAgent.Prepend(fmt.Sprintf("docker-machine/v%d", version.APIVersion)) - - if d.Insecure { - // Configure custom TLS settings. - config := &tls.Config{InsecureSkipVerify: true} - transport := &http.Transport{TLSClientConfig: config} - provider.HTTPClient.Transport = transport - } - - err = openstack.Authenticate(provider, opts) - if err != nil { - return err - } - - c.Provider = provider - - return nil -} diff --git a/vendor/github.com/docker/machine/drivers/openstack/openstack.go b/vendor/github.com/docker/machine/drivers/openstack/openstack.go deleted file mode 100644 index 89ce20cf..00000000 --- a/vendor/github.com/docker/machine/drivers/openstack/openstack.go +++ /dev/null @@ -1,787 +0,0 @@ -package openstack - -import ( - "fmt" - "io/ioutil" - "net" - "strings" - "time" - - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnflag" - "github.com/docker/machine/libmachine/mcnutils" - "github.com/docker/machine/libmachine/ssh" - "github.com/docker/machine/libmachine/state" -) - -type Driver struct { - *drivers.BaseDriver - AuthUrl string - ActiveTimeout int - Insecure bool - DomainID string - DomainName string - Username string - Password string - TenantName string - TenantId string - Region string - AvailabilityZone string - EndpointType string - MachineId string - FlavorName string - FlavorId string - ImageName string - ImageId string - KeyPairName string - NetworkName string - NetworkId string - UserData []byte - PrivateKeyFile string - SecurityGroups []string - FloatingIpPool string - ComputeNetwork bool - FloatingIpPoolId string - IpVersion int - client Client -} - -const ( - defaultSSHUser = "root" - defaultSSHPort = 22 - defaultActiveTimeout = 200 -) - -func (d *Driver) GetCreateFlags() []mcnflag.Flag { - return []mcnflag.Flag{ - mcnflag.StringFlag{ - EnvVar: "OS_AUTH_URL", - Name: "openstack-auth-url", - Usage: "OpenStack authentication URL", - Value: "", - }, - mcnflag.BoolFlag{ - EnvVar: "OS_INSECURE", - Name: "openstack-insecure", - Usage: "Disable TLS credential checking.", - }, - mcnflag.StringFlag{ - EnvVar: "OS_DOMAIN_ID", - Name: "openstack-domain-id", - Usage: "OpenStack domain ID (identity v3 only)", - Value: "", - }, - mcnflag.StringFlag{ - EnvVar: "OS_DOMAIN_NAME", - Name: "openstack-domain-name", - Usage: "OpenStack domain name (identity v3 only)", - Value: "", - }, - mcnflag.StringFlag{ - EnvVar: "OS_USERNAME", - Name: "openstack-username", - Usage: "OpenStack username", - Value: "", - }, - mcnflag.StringFlag{ - EnvVar: "OS_PASSWORD", - Name: "openstack-password", - Usage: "OpenStack password", - Value: "", - }, - mcnflag.StringFlag{ - EnvVar: "OS_TENANT_NAME", - Name: "openstack-tenant-name", - Usage: "OpenStack tenant name", - Value: "", - }, - mcnflag.StringFlag{ - EnvVar: "OS_TENANT_ID", - Name: "openstack-tenant-id", - Usage: "OpenStack tenant id", - Value: "", - }, - mcnflag.StringFlag{ - EnvVar: "OS_REGION_NAME", - Name: "openstack-region", - Usage: "OpenStack region name", - Value: "", - }, - mcnflag.StringFlag{ - EnvVar: "OS_AVAILABILITY_ZONE", - Name: "openstack-availability-zone", - Usage: "OpenStack availability zone", - Value: "", - }, - mcnflag.StringFlag{ - EnvVar: "OS_ENDPOINT_TYPE", - Name: "openstack-endpoint-type", - Usage: "OpenStack endpoint type (adminURL, internalURL or publicURL)", - Value: "", - }, - mcnflag.StringFlag{ - EnvVar: "OS_FLAVOR_ID", - Name: "openstack-flavor-id", - Usage: "OpenStack flavor id to use for the instance", - Value: "", - }, - mcnflag.StringFlag{ - EnvVar: "OS_FLAVOR_NAME", - Name: "openstack-flavor-name", - Usage: "OpenStack flavor name to use for the instance", - Value: "", - }, - mcnflag.StringFlag{ - EnvVar: "OS_IMAGE_ID", - Name: "openstack-image-id", - Usage: "OpenStack image id to use for the instance", - Value: "", - }, - mcnflag.StringFlag{ - EnvVar: "OS_IMAGE_NAME", - Name: "openstack-image-name", - Usage: "OpenStack image name to use for the instance", - Value: "", - }, - mcnflag.StringFlag{ - EnvVar: "OS_KEYPAIR_NAME", - Name: "openstack-keypair-name", - Usage: "OpenStack keypair to use to SSH to the instance", - Value: "", - }, - mcnflag.StringFlag{ - EnvVar: "OS_NETWORK_ID", - Name: "openstack-net-id", - Usage: "OpenStack network id the machine will be connected on", - Value: "", - }, - mcnflag.StringFlag{ - EnvVar: "OS_PRIVATE_KEY_FILE", - Name: "openstack-private-key-file", - Usage: "Private keyfile to use for SSH (absolute path)", - Value: "", - }, - mcnflag.StringFlag{ - EnvVar: "OS_USER_DATA_FILE", - Name: "openstack-user-data-file", - Usage: "File containing an openstack userdata script", - Value: "", - }, - mcnflag.StringFlag{ - EnvVar: "OS_NETWORK_NAME", - Name: "openstack-net-name", - Usage: "OpenStack network name the machine will be connected on", - Value: "", - }, - mcnflag.StringFlag{ - EnvVar: "OS_SECURITY_GROUPS", - Name: "openstack-sec-groups", - Usage: "OpenStack comma separated security groups for the machine", - Value: "", - }, - mcnflag.BoolFlag{ - EnvVar: "OS_NOVA_NETWORK", - Name: "openstack-nova-network", - Usage: "Use the nova networking services instead of neutron.", - }, - mcnflag.StringFlag{ - EnvVar: "OS_FLOATINGIP_POOL", - Name: "openstack-floatingip-pool", - Usage: "OpenStack floating IP pool to get an IP from to assign to the instance", - Value: "", - }, - mcnflag.IntFlag{ - EnvVar: "OS_IP_VERSION", - Name: "openstack-ip-version", - Usage: "OpenStack version of IP address assigned for the machine", - Value: 4, - }, - mcnflag.StringFlag{ - EnvVar: "OS_SSH_USER", - Name: "openstack-ssh-user", - Usage: "OpenStack SSH user", - Value: defaultSSHUser, - }, - mcnflag.IntFlag{ - EnvVar: "OS_SSH_PORT", - Name: "openstack-ssh-port", - Usage: "OpenStack SSH port", - Value: defaultSSHPort, - }, - mcnflag.IntFlag{ - EnvVar: "OS_ACTIVE_TIMEOUT", - Name: "openstack-active-timeout", - Usage: "OpenStack active timeout", - Value: defaultActiveTimeout, - }, - } -} - -func NewDriver(hostName, storePath string) drivers.Driver { - return NewDerivedDriver(hostName, storePath) -} - -func NewDerivedDriver(hostName, storePath string) *Driver { - return &Driver{ - client: &GenericClient{}, - ActiveTimeout: defaultActiveTimeout, - BaseDriver: &drivers.BaseDriver{ - SSHUser: defaultSSHUser, - SSHPort: defaultSSHPort, - MachineName: hostName, - StorePath: storePath, - }, - } -} - -func (d *Driver) GetSSHHostname() (string, error) { - return d.GetIP() -} - -func (d *Driver) SetClient(client Client) { - d.client = client -} - -// DriverName returns the name of the driver -func (d *Driver) DriverName() string { - return "openstack" -} - -func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error { - d.AuthUrl = flags.String("openstack-auth-url") - d.ActiveTimeout = flags.Int("openstack-active-timeout") - d.Insecure = flags.Bool("openstack-insecure") - d.DomainID = flags.String("openstack-domain-id") - d.DomainName = flags.String("openstack-domain-name") - d.Username = flags.String("openstack-username") - d.Password = flags.String("openstack-password") - d.TenantName = flags.String("openstack-tenant-name") - d.TenantId = flags.String("openstack-tenant-id") - d.Region = flags.String("openstack-region") - d.AvailabilityZone = flags.String("openstack-availability-zone") - d.EndpointType = flags.String("openstack-endpoint-type") - d.FlavorId = flags.String("openstack-flavor-id") - d.FlavorName = flags.String("openstack-flavor-name") - d.ImageId = flags.String("openstack-image-id") - d.ImageName = flags.String("openstack-image-name") - d.NetworkId = flags.String("openstack-net-id") - d.NetworkName = flags.String("openstack-net-name") - if flags.String("openstack-sec-groups") != "" { - d.SecurityGroups = strings.Split(flags.String("openstack-sec-groups"), ",") - } - d.FloatingIpPool = flags.String("openstack-floatingip-pool") - d.IpVersion = flags.Int("openstack-ip-version") - d.ComputeNetwork = flags.Bool("openstack-nova-network") - d.SSHUser = flags.String("openstack-ssh-user") - d.SSHPort = flags.Int("openstack-ssh-port") - d.KeyPairName = flags.String("openstack-keypair-name") - d.PrivateKeyFile = flags.String("openstack-private-key-file") - - if flags.String("openstack-user-data-file") != "" { - userData, err := ioutil.ReadFile(flags.String("openstack-user-data-file")) - if err == nil { - d.UserData = userData - } else { - return err - } - } - - d.SetSwarmConfigFromFlags(flags) - - return d.checkConfig() -} - -func (d *Driver) GetURL() (string, error) { - if err := drivers.MustBeRunning(d); err != nil { - return "", err - } - - ip, err := d.GetIP() - if err != nil { - return "", err - } - if ip == "" { - return "", nil - } - - return fmt.Sprintf("tcp://%s", net.JoinHostPort(ip, "2376")), nil -} - -func (d *Driver) GetIP() (string, error) { - if d.IPAddress != "" { - return d.IPAddress, nil - } - - log.Debug("Looking for the IP address...", map[string]string{"MachineId": d.MachineId}) - - if err := d.initCompute(); err != nil { - return "", err - } - - addressType := Fixed - if d.FloatingIpPool != "" { - addressType = Floating - } - - // Looking for the IP address in a retry loop to deal with OpenStack latency - for retryCount := 0; retryCount < 200; retryCount++ { - addresses, err := d.client.GetInstanceIPAddresses(d) - if err != nil { - return "", err - } - for _, a := range addresses { - if a.AddressType == addressType && a.Version == d.IpVersion { - return a.Address, nil - } - } - time.Sleep(2 * time.Second) - } - return "", fmt.Errorf("No IP found for the machine") -} - -func (d *Driver) GetState() (state.State, error) { - log.Debug("Get status for OpenStack instance...", map[string]string{"MachineId": d.MachineId}) - if err := d.initCompute(); err != nil { - return state.None, err - } - - s, err := d.client.GetInstanceState(d) - if err != nil { - return state.None, err - } - - log.Debug("State for OpenStack instance", map[string]string{ - "MachineId": d.MachineId, - "State": s, - }) - - switch s { - case "ACTIVE": - return state.Running, nil - case "PAUSED": - return state.Paused, nil - case "SUSPENDED": - return state.Saved, nil - case "SHUTOFF": - return state.Stopped, nil - case "BUILDING": - return state.Starting, nil - case "ERROR": - return state.Error, nil - } - return state.None, nil -} - -func (d *Driver) Create() error { - if err := d.resolveIds(); err != nil { - return err - } - if d.KeyPairName != "" { - if err := d.loadSSHKey(); err != nil { - return err - } - } else { - d.KeyPairName = fmt.Sprintf("%s-%s", d.MachineName, mcnutils.GenerateRandomID()) - if err := d.createSSHKey(); err != nil { - return err - } - } - if err := d.createMachine(); err != nil { - return err - } - if err := d.waitForInstanceActive(); err != nil { - return err - } - if d.FloatingIpPool != "" { - if err := d.assignFloatingIP(); err != nil { - return err - } - } - if err := d.lookForIPAddress(); err != nil { - return err - } - return nil -} - -func (d *Driver) Start() error { - if err := d.initCompute(); err != nil { - return err - } - - return d.client.StartInstance(d) -} - -func (d *Driver) Stop() error { - if err := d.initCompute(); err != nil { - return err - } - - return d.client.StopInstance(d) -} - -func (d *Driver) Restart() error { - if err := d.initCompute(); err != nil { - return err - } - - return d.client.RestartInstance(d) -} - -func (d *Driver) Kill() error { - return d.Stop() -} - -func (d *Driver) Remove() error { - log.Debug("deleting instance...", map[string]string{"MachineId": d.MachineId}) - log.Info("Deleting OpenStack instance...") - if err := d.initCompute(); err != nil { - return err - } - if err := d.client.DeleteInstance(d); err != nil { - return err - } - log.Debug("deleting key pair...", map[string]string{"Name": d.KeyPairName}) - // TODO (fsoppelsa) maybe we want to check this, in case of shared keypairs, before removal - if err := d.client.DeleteKeyPair(d, d.KeyPairName); err != nil { - return err - } - return nil -} - -const ( - errorMandatoryEnvOrOption string = "%s must be specified either using the environment variable %s or the CLI option %s" - errorMandatoryOption string = "%s must be specified using the CLI option %s" - errorExclusiveOptions string = "Either %s or %s must be specified, not both" - errorBothOptions string = "Both %s and %s must be specified" - errorMandatoryTenantNameOrID string = "Tenant id or name must be provided either using one of the environment variables OS_TENANT_ID and OS_TENANT_NAME or one of the CLI options --openstack-tenant-id and --openstack-tenant-name" - errorWrongEndpointType string = "Endpoint type must be 'publicURL', 'adminURL' or 'internalURL'" - errorUnknownFlavorName string = "Unable to find flavor named %s" - errorUnknownImageName string = "Unable to find image named %s" - errorUnknownNetworkName string = "Unable to find network named %s" - errorUnknownTenantName string = "Unable to find tenant named %s" -) - -func (d *Driver) checkConfig() error { - if d.AuthUrl == "" { - return fmt.Errorf(errorMandatoryEnvOrOption, "Authentication URL", "OS_AUTH_URL", "--openstack-auth-url") - } - if d.Username == "" { - return fmt.Errorf(errorMandatoryEnvOrOption, "Username", "OS_USERNAME", "--openstack-username") - } - if d.Password == "" { - return fmt.Errorf(errorMandatoryEnvOrOption, "Password", "OS_PASSWORD", "--openstack-password") - } - if d.TenantName == "" && d.TenantId == "" { - return fmt.Errorf(errorMandatoryTenantNameOrID) - } - - if d.FlavorName == "" && d.FlavorId == "" { - return fmt.Errorf(errorMandatoryOption, "Flavor name or Flavor id", "--openstack-flavor-name or --openstack-flavor-id") - } - if d.FlavorName != "" && d.FlavorId != "" { - return fmt.Errorf(errorExclusiveOptions, "Flavor name", "Flavor id") - } - - if d.ImageName == "" && d.ImageId == "" { - return fmt.Errorf(errorMandatoryOption, "Image name or Image id", "--openstack-image-name or --openstack-image-id") - } - if d.ImageName != "" && d.ImageId != "" { - return fmt.Errorf(errorExclusiveOptions, "Image name", "Image id") - } - - if d.NetworkName != "" && d.NetworkId != "" { - return fmt.Errorf(errorExclusiveOptions, "Network name", "Network id") - } - if d.EndpointType != "" && (d.EndpointType != "publicURL" && d.EndpointType != "adminURL" && d.EndpointType != "internalURL") { - return fmt.Errorf(errorWrongEndpointType) - } - if (d.KeyPairName != "" && d.PrivateKeyFile == "") || (d.KeyPairName == "" && d.PrivateKeyFile != "") { - return fmt.Errorf(errorBothOptions, "KeyPairName", "PrivateKeyFile") - } - return nil -} - -func (d *Driver) resolveIds() error { - if d.NetworkName != "" && !d.ComputeNetwork { - if err := d.initNetwork(); err != nil { - return err - } - - networkID, err := d.client.GetNetworkID(d) - - if err != nil { - return err - } - - if networkID == "" { - return fmt.Errorf(errorUnknownNetworkName, d.NetworkName) - } - - d.NetworkId = networkID - log.Debug("Found network id using its name", map[string]string{ - "Name": d.NetworkName, - "ID": d.NetworkId, - }) - } - - if d.FlavorName != "" { - if err := d.initCompute(); err != nil { - return err - } - flavorID, err := d.client.GetFlavorID(d) - - if err != nil { - return err - } - - if flavorID == "" { - return fmt.Errorf(errorUnknownFlavorName, d.FlavorName) - } - - d.FlavorId = flavorID - log.Debug("Found flavor id using its name", map[string]string{ - "Name": d.FlavorName, - "ID": d.FlavorId, - }) - } - - if d.ImageName != "" { - if err := d.initCompute(); err != nil { - return err - } - imageID, err := d.client.GetImageID(d) - - if err != nil { - return err - } - - if imageID == "" { - return fmt.Errorf(errorUnknownImageName, d.ImageName) - } - - d.ImageId = imageID - log.Debug("Found image id using its name", map[string]string{ - "Name": d.ImageName, - "ID": d.ImageId, - }) - } - - if d.FloatingIpPool != "" && !d.ComputeNetwork { - if err := d.initNetwork(); err != nil { - return err - } - f, err := d.client.GetFloatingIPPoolID(d) - - if err != nil { - return err - } - - if f == "" { - return fmt.Errorf(errorUnknownNetworkName, d.FloatingIpPool) - } - - d.FloatingIpPoolId = f - log.Debug("Found floating IP pool id using its name", map[string]string{ - "Name": d.FloatingIpPool, - "ID": d.FloatingIpPoolId, - }) - } - - if d.TenantName != "" && d.TenantId == "" { - if err := d.initIdentity(); err != nil { - return err - } - tenantId, err := d.client.GetTenantID(d) - - if err != nil { - return err - } - - if tenantId == "" { - return fmt.Errorf(errorUnknownTenantName, d.TenantName) - } - - d.TenantId = tenantId - log.Debug("Found tenant id using its name", map[string]string{ - "Name": d.TenantName, - "ID": d.TenantId, - }) - } - - return nil -} - -func (d *Driver) initCompute() error { - if err := d.client.Authenticate(d); err != nil { - return err - } - if err := d.client.InitComputeClient(d); err != nil { - return err - } - return nil -} - -func (d *Driver) initIdentity() error { - if err := d.client.Authenticate(d); err != nil { - return err - } - if err := d.client.InitIdentityClient(d); err != nil { - return err - } - return nil -} - -func (d *Driver) initNetwork() error { - if err := d.client.Authenticate(d); err != nil { - return err - } - if err := d.client.InitNetworkClient(d); err != nil { - return err - } - return nil -} - -func (d *Driver) loadSSHKey() error { - log.Debug("Loading Key Pair", d.KeyPairName) - if err := d.initCompute(); err != nil { - return err - } - log.Debug("Loading Private Key from", d.PrivateKeyFile) - privateKey, err := ioutil.ReadFile(d.PrivateKeyFile) - if err != nil { - return err - } - publicKey, err := d.client.GetPublicKey(d.KeyPairName) - if err != nil { - return err - } - if err := ioutil.WriteFile(d.privateSSHKeyPath(), privateKey, 0600); err != nil { - return err - } - if err := ioutil.WriteFile(d.publicSSHKeyPath(), publicKey, 0600); err != nil { - return err - } - - return nil -} - -func (d *Driver) createSSHKey() error { - sanitizeKeyPairName(&d.KeyPairName) - log.Debug("Creating Key Pair...", map[string]string{"Name": d.KeyPairName}) - if err := ssh.GenerateSSHKey(d.GetSSHKeyPath()); err != nil { - return err - } - publicKey, err := ioutil.ReadFile(d.publicSSHKeyPath()) - if err != nil { - return err - } - - if err := d.initCompute(); err != nil { - return err - } - if err := d.client.CreateKeyPair(d, d.KeyPairName, string(publicKey)); err != nil { - return err - } - return nil -} - -func (d *Driver) createMachine() error { - log.Debug("Creating OpenStack instance...", map[string]string{ - "FlavorId": d.FlavorId, - "ImageId": d.ImageId, - }) - - if err := d.initCompute(); err != nil { - return err - } - instanceID, err := d.client.CreateInstance(d) - if err != nil { - return err - } - d.MachineId = instanceID - return nil -} - -func (d *Driver) assignFloatingIP() error { - var err error - - if d.ComputeNetwork { - err = d.initCompute() - } else { - err = d.initNetwork() - } - - if err != nil { - return err - } - - ips, err := d.client.GetFloatingIPs(d) - if err != nil { - return err - } - - var floatingIP *FloatingIP - - log.Debugf("Looking for an available floating IP", map[string]string{ - "MachineId": d.MachineId, - "Pool": d.FloatingIpPool, - }) - - for _, ip := range ips { - if ip.PortId == "" { - log.Debug("Available floating IP found", map[string]string{ - "MachineId": d.MachineId, - "IP": ip.Ip, - }) - floatingIP = &ip - break - } - } - - if floatingIP == nil { - floatingIP = &FloatingIP{} - log.Debug("No available floating IP found. Allocating a new one...", map[string]string{"MachineId": d.MachineId}) - } else { - log.Debug("Assigning floating IP to the instance", map[string]string{"MachineId": d.MachineId}) - } - - if err := d.client.AssignFloatingIP(d, floatingIP); err != nil { - return err - } - d.IPAddress = floatingIP.Ip - return nil -} - -func (d *Driver) waitForInstanceActive() error { - log.Debug("Waiting for the OpenStack instance to be ACTIVE...", map[string]string{"MachineId": d.MachineId}) - if err := d.client.WaitForInstanceStatus(d, "ACTIVE"); err != nil { - return err - } - return nil -} - -func (d *Driver) lookForIPAddress() error { - ip, err := d.GetIP() - if err != nil { - return err - } - d.IPAddress = ip - log.Debug("IP address found", map[string]string{ - "IP": ip, - "MachineId": d.MachineId, - }) - return nil -} - -func (d *Driver) privateSSHKeyPath() string { - return d.GetSSHKeyPath() -} - -func (d *Driver) publicSSHKeyPath() string { - return d.GetSSHKeyPath() + ".pub" -} - -func sanitizeKeyPairName(s *string) { - *s = strings.Replace(*s, ".", "_", -1) -} diff --git a/vendor/github.com/docker/machine/drivers/openstack/openstack_test.go b/vendor/github.com/docker/machine/drivers/openstack/openstack_test.go deleted file mode 100644 index 49134c08..00000000 --- a/vendor/github.com/docker/machine/drivers/openstack/openstack_test.go +++ /dev/null @@ -1,29 +0,0 @@ -package openstack - -import ( - "testing" - - "github.com/docker/machine/libmachine/drivers" - "github.com/stretchr/testify/assert" -) - -func TestSetConfigFromFlags(t *testing.T) { - driver := NewDriver("default", "path") - - checkFlags := &drivers.CheckDriverOptions{ - FlagsValues: map[string]interface{}{ - "openstack-auth-url": "http://url", - "openstack-username": "user", - "openstack-password": "pwd", - "openstack-tenant-id": "ID", - "openstack-flavor-id": "ID", - "openstack-image-id": "ID", - }, - CreateFlags: driver.GetCreateFlags(), - } - - err := driver.SetConfigFromFlags(checkFlags) - - assert.NoError(t, err) - assert.Empty(t, checkFlags.InvalidFlags) -} diff --git a/vendor/github.com/docker/machine/drivers/rackspace/client.go b/vendor/github.com/docker/machine/drivers/rackspace/client.go deleted file mode 100644 index b73263fd..00000000 --- a/vendor/github.com/docker/machine/drivers/rackspace/client.go +++ /dev/null @@ -1,79 +0,0 @@ -package rackspace - -import ( - "fmt" - - "github.com/docker/machine/drivers/openstack" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/version" - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/rackspace" -) - -func unsupportedOpErr(operation string) error { - return fmt.Errorf("Rackspace does not currently support the %s operation", operation) -} - -// Client is a Rackspace specialization of the generic OpenStack driver. -type Client struct { - openstack.GenericClient - driver *Driver -} - -// Authenticate creates a Rackspace-specific Gophercloud client. -func (c *Client) Authenticate(d *openstack.Driver) error { - if c.Provider != nil { - return nil - } - - log.Debug("Authenticating to Rackspace.", map[string]string{ - "Username": d.Username, - }) - - apiKey := c.driver.APIKey - opts := gophercloud.AuthOptions{ - Username: d.Username, - APIKey: apiKey, - } - - provider, err := rackspace.NewClient(rackspace.RackspaceUSIdentity) - if err != nil { - return err - } - - provider.UserAgent.Prepend(fmt.Sprintf("docker-machine/v%d", version.APIVersion)) - - err = rackspace.Authenticate(provider, opts) - if err != nil { - return err - } - - c.Provider = provider - - return nil -} - -// StartInstance is unfortunately not supported on Rackspace at this time. -func (c *Client) StartInstance(d *openstack.Driver) error { - return unsupportedOpErr("start") -} - -// StopInstance is unfortunately not support on Rackspace at this time. -func (c *Client) StopInstance(d *openstack.Driver) error { - return unsupportedOpErr("stop") -} - -// GetInstanceIPAddresses can be short-circuited with the server's AccessIPv4Addr on Rackspace. -func (c *Client) GetInstanceIPAddresses(d *openstack.Driver) ([]openstack.IPAddress, error) { - server, err := c.GetServerDetail(d) - if err != nil { - return nil, err - } - return []openstack.IPAddress{ - { - Network: "public", - Address: server.AccessIPv4, - AddressType: openstack.Fixed, - }, - }, nil -} diff --git a/vendor/github.com/docker/machine/drivers/rackspace/rackspace.go b/vendor/github.com/docker/machine/drivers/rackspace/rackspace.go deleted file mode 100644 index c8c4d41b..00000000 --- a/vendor/github.com/docker/machine/drivers/rackspace/rackspace.go +++ /dev/null @@ -1,154 +0,0 @@ -package rackspace - -import ( - "fmt" - - "github.com/docker/machine/drivers/openstack" - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnflag" -) - -// Driver is a machine driver for Rackspace. It's a specialization of the generic OpenStack one. -type Driver struct { - *openstack.Driver - - APIKey string -} - -const ( - defaultEndpointType = "publicURL" - defaultFlavorID = "general1-1" - defaultSSHUser = "root" - defaultSSHPort = 22 - defaultDockerInstall = "true" - defaultActiveTimeout = 300 -) - -// GetCreateFlags registers the "machine create" flags recognized by this driver, including -// their help text and defaults. -func (d *Driver) GetCreateFlags() []mcnflag.Flag { - return []mcnflag.Flag{ - mcnflag.StringFlag{ - EnvVar: "OS_USERNAME", - Name: "rackspace-username", - Usage: "Rackspace account username", - Value: "", - }, - mcnflag.StringFlag{ - EnvVar: "OS_API_KEY", - Name: "rackspace-api-key", - Usage: "Rackspace API key", - Value: "", - }, - mcnflag.StringFlag{ - EnvVar: "OS_REGION_NAME", - Name: "rackspace-region", - Usage: "Rackspace region name", - Value: "", - }, - mcnflag.StringFlag{ - EnvVar: "OS_ENDPOINT_TYPE", - Name: "rackspace-endpoint-type", - Usage: "Rackspace endpoint type (adminURL, internalURL or the default publicURL)", - Value: defaultEndpointType, - }, - mcnflag.StringFlag{ - Name: "rackspace-image-id", - Usage: "Rackspace image ID. Default: Ubuntu 15.10 (Wily Werewolf) (PVHVM)", - }, - mcnflag.StringFlag{ - Name: "rackspace-flavor-id", - Usage: "Rackspace flavor ID. Default: General Purpose 1GB", - Value: defaultFlavorID, - EnvVar: "OS_FLAVOR_ID", - }, - mcnflag.StringFlag{ - Name: "rackspace-ssh-user", - Usage: "SSH user for the newly booted machine. Set to root by default", - Value: defaultSSHUser, - }, - mcnflag.IntFlag{ - Name: "rackspace-ssh-port", - Usage: "SSH port for the newly booted machine. Set to 22 by default", - Value: defaultSSHPort, - }, - mcnflag.StringFlag{ - Name: "rackspace-docker-install", - Usage: "Set if docker have to be installed on the machine", - Value: defaultDockerInstall, - }, - mcnflag.IntFlag{ - EnvVar: "OS_ACTIVE_TIMEOUT", - Name: "rackspace-active-timeout", - Usage: "Rackspace active timeout", - Value: defaultActiveTimeout, - }, - } -} - -// NewDriver instantiates a Rackspace driver. -func NewDriver(machineName, storePath string) drivers.Driver { - log.Debug("Instantiating Rackspace driver.", map[string]string{"machineName": machineName}) - - inner := openstack.NewDerivedDriver(machineName, storePath) - driver := &Driver{ - Driver: inner, - } - inner.SetClient(&Client{ - driver: driver, - }) - - return driver -} - -// DriverName returns the name of the driver -func (d *Driver) DriverName() string { - return "rackspace" -} - -func missingEnvOrOption(setting, envVar, opt string) error { - return fmt.Errorf( - "%s must be specified either using the environment variable %s or the CLI option %s", - setting, - envVar, - opt, - ) -} - -// SetConfigFromFlags assigns and verifies the command-line arguments presented to the driver. -func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error { - d.ActiveTimeout = flags.Int("rackspace-active-timeout") - d.Username = flags.String("rackspace-username") - d.APIKey = flags.String("rackspace-api-key") - d.Region = flags.String("rackspace-region") - d.EndpointType = flags.String("rackspace-endpoint-type") - d.ImageId = flags.String("rackspace-image-id") - d.FlavorId = flags.String("rackspace-flavor-id") - d.SSHUser = flags.String("rackspace-ssh-user") - d.SSHPort = flags.Int("rackspace-ssh-port") - d.SetSwarmConfigFromFlags(flags) - - if d.Region == "" { - return missingEnvOrOption("Region", "OS_REGION_NAME", "--rackspace-region") - } - if d.Username == "" { - return missingEnvOrOption("Username", "OS_USERNAME", "--rackspace-username") - } - if d.APIKey == "" { - return missingEnvOrOption("API key", "OS_API_KEY", "--rackspace-api-key") - } - - if d.ImageId == "" { - // Default to the Ubuntu 15.10 image. - // This is done here, rather than in the option registration, to keep the default value - // from making "machine create --help" ugly. - d.ImageId = "59a3fadd-93e7-4674-886a-64883e17115f" - } - - if d.EndpointType != "publicURL" && d.EndpointType != "adminURL" && d.EndpointType != "internalURL" { - return fmt.Errorf(`Invalid endpoint type "%s". Endpoint type must be publicURL, adminURL or internalURL.`, d.EndpointType) - } - - return nil -} diff --git a/vendor/github.com/docker/machine/drivers/rackspace/rackspace_test.go b/vendor/github.com/docker/machine/drivers/rackspace/rackspace_test.go deleted file mode 100644 index 79241538..00000000 --- a/vendor/github.com/docker/machine/drivers/rackspace/rackspace_test.go +++ /dev/null @@ -1,27 +0,0 @@ -package rackspace - -import ( - "testing" - - "github.com/docker/machine/libmachine/drivers" - "github.com/stretchr/testify/assert" -) - -func TestSetConfigFromFlags(t *testing.T) { - driver := NewDriver("default", "path") - - checkFlags := &drivers.CheckDriverOptions{ - FlagsValues: map[string]interface{}{ - "rackspace-region": "REGION", - "rackspace-username": "user", - "rackspace-api-key": "KEY", - "rackspace-endpoint-type": "publicURL", - }, - CreateFlags: driver.GetCreateFlags(), - } - - err := driver.SetConfigFromFlags(checkFlags) - - assert.NoError(t, err) - assert.Empty(t, checkFlags.InvalidFlags) -} diff --git a/vendor/github.com/docker/machine/drivers/softlayer/driver.go b/vendor/github.com/docker/machine/drivers/softlayer/driver.go deleted file mode 100644 index 90b7b147..00000000 --- a/vendor/github.com/docker/machine/drivers/softlayer/driver.go +++ /dev/null @@ -1,498 +0,0 @@ -package softlayer - -import ( - "fmt" - "io/ioutil" - "net" - "os" - "regexp" - "time" - - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnflag" - "github.com/docker/machine/libmachine/ssh" - "github.com/docker/machine/libmachine/state" -) - -const ( - APIEndpoint = "https://api.softlayer.com/rest/v3" -) - -type Driver struct { - *drivers.BaseDriver - deviceConfig *deviceConfig - Id int - Client *Client - SSHKeyID int -} - -type deviceConfig struct { - DiskSize int - Cpu int - Hostname string - Domain string - Region string - Memory int - Image string - HourlyBilling bool - LocalDisk bool - PrivateNet bool - PublicVLAN int - PrivateVLAN int -} - -const ( - defaultMemory = 1024 - defaultDiskSize = 0 - defaultRegion = "dal01" - defaultCpus = 1 - defaultImage = "UBUNTU_LATEST" - defaultPublicVLANIP = 0 - defaultPrivateVLANIP = 0 -) - -func NewDriver(hostName, storePath string) drivers.Driver { - return &Driver{ - Client: &Client{ - Endpoint: APIEndpoint, - }, - deviceConfig: &deviceConfig{ - HourlyBilling: true, - DiskSize: defaultDiskSize, - Image: defaultImage, - Memory: defaultMemory, - Cpu: defaultCpus, - Region: defaultRegion, - PrivateVLAN: defaultPrivateVLANIP, - PublicVLAN: defaultPublicVLANIP, - }, - BaseDriver: &drivers.BaseDriver{ - MachineName: hostName, - StorePath: storePath, - }, - } -} - -func (d *Driver) GetSSHHostname() (string, error) { - return d.GetIP() -} - -func (d *Driver) GetCreateFlags() []mcnflag.Flag { - // Set hourly billing to true by default since codegangsta cli doesn't take default bool values - if os.Getenv("SOFTLAYER_HOURLY_BILLING") == "" { - os.Setenv("SOFTLAYER_HOURLY_BILLING", "true") - } - return []mcnflag.Flag{ - mcnflag.IntFlag{ - EnvVar: "SOFTLAYER_MEMORY", - Name: "softlayer-memory", - Usage: "Memory in MB for machine", - Value: defaultMemory, - }, - mcnflag.IntFlag{ - EnvVar: "SOFTLAYER_DISK_SIZE", - Name: "softlayer-disk-size", - Usage: "Disk size for machine, a value of 0 uses the default size on softlayer", - Value: defaultDiskSize, - }, - mcnflag.StringFlag{ - EnvVar: "SOFTLAYER_USER", - Name: "softlayer-user", - Usage: "softlayer user account name", - }, - mcnflag.StringFlag{ - EnvVar: "SOFTLAYER_API_KEY", - Name: "softlayer-api-key", - Usage: "softlayer user API key", - }, - mcnflag.StringFlag{ - EnvVar: "SOFTLAYER_REGION", - Name: "softlayer-region", - Usage: "softlayer region for machine", - Value: defaultRegion, - }, - mcnflag.IntFlag{ - EnvVar: "SOFTLAYER_CPU", - Name: "softlayer-cpu", - Usage: "number of CPU's for the machine", - Value: defaultCpus, - }, - mcnflag.StringFlag{ - EnvVar: "SOFTLAYER_HOSTNAME", - Name: "softlayer-hostname", - Usage: "hostname for the machine - defaults to machine name", - }, - mcnflag.StringFlag{ - EnvVar: "SOFTLAYER_DOMAIN", - Name: "softlayer-domain", - Usage: "domain name for machine", - }, - mcnflag.StringFlag{ - EnvVar: "SOFTLAYER_API_ENDPOINT", - Name: "softlayer-api-endpoint", - Usage: "softlayer api endpoint to use", - Value: APIEndpoint, - }, - mcnflag.BoolFlag{ - EnvVar: "SOFTLAYER_HOURLY_BILLING", - Name: "softlayer-hourly-billing", - Usage: "set hourly billing for machine - on by default", - }, - mcnflag.BoolFlag{ - EnvVar: "SOFTLAYER_LOCAL_DISK", - Name: "softlayer-local-disk", - Usage: "use machine local disk instead of softlayer SAN", - }, - mcnflag.BoolFlag{ - EnvVar: "SOFTLAYER_PRIVATE_NET", - Name: "softlayer-private-net-only", - Usage: "Use only private networking", - }, - mcnflag.StringFlag{ - EnvVar: "SOFTLAYER_IMAGE", - Name: "softlayer-image", - Usage: "OS image for machine", - Value: defaultImage, - }, - mcnflag.IntFlag{ - EnvVar: "SOFTLAYER_PUBLIC_VLAN_ID", - Name: "softlayer-public-vlan-id", - Usage: "", - }, - mcnflag.IntFlag{ - EnvVar: "SOFTLAYER_PRIVATE_VLAN_ID", - Name: "softlayer-private-vlan-id", - Usage: "", - }, - } -} - -func validateDeviceConfig(c *deviceConfig) error { - if c.Domain == "" { - return fmt.Errorf("Missing required setting - --softlayer-domain") - } - - if c.Region == "" { - return fmt.Errorf("Missing required setting - --softlayer-region") - } - if c.Cpu < 1 { - return fmt.Errorf("Missing required setting - --softlayer-cpu") - } - - if c.PrivateNet && c.PublicVLAN > 0 { - return fmt.Errorf("Can not specify both --softlayer-private-net-only and --softlayer-public-vlan-id") - } - if c.PublicVLAN > 0 && c.PrivateVLAN == 0 { - return fmt.Errorf("Missing required setting - --softlayer-private-vlan-id (because --softlayer-public-vlan-id is specified)") - } - if c.PrivateVLAN > 0 && !c.PrivateNet && c.PublicVLAN == 0 { - return fmt.Errorf("Missing required setting - --softlayer-public-vlan-id (because --softlayer-private-vlan-id is specified)") - } - - return nil -} - -func validateClientConfig(c *Client) error { - if c.ApiKey == "" { - return fmt.Errorf("Missing required setting - --softlayer-api-key") - } - - if c.User == "" { - return fmt.Errorf("Missing required setting - --softlayer-user") - } - - if c.Endpoint == "" { - return fmt.Errorf("Missing required setting - --softlayer-api-endpoint") - } - - return nil -} - -func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error { - - d.Client = &Client{ - Endpoint: flags.String("softlayer-api-endpoint"), - User: flags.String("softlayer-user"), - ApiKey: flags.String("softlayer-api-key"), - } - - d.SetSwarmConfigFromFlags(flags) - d.SSHUser = "root" - d.SSHPort = 22 - - if err := validateClientConfig(d.Client); err != nil { - return err - } - - d.deviceConfig = &deviceConfig{ - Hostname: flags.String("softlayer-hostname"), - DiskSize: flags.Int("softlayer-disk-size"), - Cpu: flags.Int("softlayer-cpu"), - Domain: flags.String("softlayer-domain"), - Memory: flags.Int("softlayer-memory"), - PrivateNet: flags.Bool("softlayer-private-net-only"), - LocalDisk: flags.Bool("softlayer-local-disk"), - HourlyBilling: flags.Bool("softlayer-hourly-billing"), - Image: flags.String("softlayer-image"), - Region: flags.String("softlayer-region"), - PublicVLAN: flags.Int("softlayer-public-vlan-id"), - PrivateVLAN: flags.Int("softlayer-private-vlan-id"), - } - - if d.deviceConfig.Hostname == "" { - d.deviceConfig.Hostname = d.GetMachineName() - } - - return validateDeviceConfig(d.deviceConfig) -} - -func (d *Driver) getClient() *Client { - return d.Client -} - -// DriverName returns the name of the driver -func (d *Driver) DriverName() string { - return "softlayer" -} - -func (d *Driver) GetURL() (string, error) { - if err := drivers.MustBeRunning(d); err != nil { - return "", err - } - - ip, err := d.GetIP() - if err != nil { - return "", err - } - if ip == "" { - return "", nil - } - - return "tcp://" + net.JoinHostPort(ip, "2376"), nil -} - -func (d *Driver) GetIP() (string, error) { - if d.IPAddress != "" { - return d.IPAddress, nil - } - if d.deviceConfig != nil && d.deviceConfig.PrivateNet == true { - return d.getClient().VirtualGuest().GetPrivateIP(d.Id) - } - return d.getClient().VirtualGuest().GetPublicIP(d.Id) -} - -func (d *Driver) GetState() (state.State, error) { - s, err := d.getClient().VirtualGuest().PowerState(d.Id) - if err != nil { - return state.None, err - } - var vmState state.State - switch s { - case "Running": - vmState = state.Running - case "Halted": - vmState = state.Stopped - default: - vmState = state.None - } - return vmState, nil -} - -func (d *Driver) GetActiveTransaction() (string, error) { - t, err := d.getClient().VirtualGuest().ActiveTransaction(d.Id) - if err != nil { - return "", err - } - return t, nil -} - -func (d *Driver) waitForStart() { - log.Infof("Waiting for host to become available") - for { - s, err := d.GetState() - if err != nil { - log.Debugf("Failed to GetState - %+v", err) - continue - } - - if s == state.Running { - break - } else { - log.Debugf("Still waiting - state is %s...", s) - } - time.Sleep(2 * time.Second) - } -} - -func (d *Driver) getIP() (string, error) { - log.Infof("Getting Host IP") - for { - var ( - ip string - err error - ) - if d.deviceConfig.PrivateNet { - ip, err = d.getClient().VirtualGuest().GetPrivateIP(d.Id) - } else { - ip, err = d.getClient().VirtualGuest().GetPublicIP(d.Id) - } - if err != nil { - time.Sleep(2 * time.Second) - continue - } - // not a perfect regex, but should be just fine for our needs - exp := regexp.MustCompile(`\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}`) - if exp.MatchString(ip) { - d.IPAddress = ip - return ip, nil - } - time.Sleep(2 * time.Second) - } -} - -func (d *Driver) waitForSetupTransactions() { - log.Infof("Waiting for host setup transactions to complete") - // sometimes we'll hit a case where there's no active transaction, but if - // we check again in a few seconds, it moves to the next transaction. We - // don't want to get false-positives, so we check a few times in a row to make sure! - noActiveCount, maxNoActiveCount := 0, 3 - for { - t, err := d.GetActiveTransaction() - if err != nil { - noActiveCount = 0 - log.Debugf("Failed to GetActiveTransaction - %+v", err) - continue - } - - if t == "" { - if noActiveCount == maxNoActiveCount { - break - } - noActiveCount++ - } else { - noActiveCount = 0 - log.Debugf("Still waiting - active transaction is %s...", t) - } - time.Sleep(2 * time.Second) - } -} - -func (d *Driver) Create() error { - spec := d.buildHostSpec() - - log.Infof("Creating SSH key...") - key, err := d.createSSHKey() - if err != nil { - return err - } - - log.Infof("SSH key %s (%d) created in SoftLayer", key.Label, key.Id) - d.SSHKeyID = key.Id - - spec.SshKeys = []*SSHKey{key} - - id, err := d.getClient().VirtualGuest().Create(spec) - if err != nil { - return fmt.Errorf("Error creating host: %q", err) - } - d.Id = id - d.getIP() - d.waitForStart() - d.waitForSetupTransactions() - - return nil -} - -func (d *Driver) buildHostSpec() *HostSpec { - spec := &HostSpec{ - Hostname: d.deviceConfig.Hostname, - Domain: d.deviceConfig.Domain, - Cpu: d.deviceConfig.Cpu, - Memory: d.deviceConfig.Memory, - Datacenter: Datacenter{Name: d.deviceConfig.Region}, - Os: d.deviceConfig.Image, - HourlyBilling: d.deviceConfig.HourlyBilling, - PrivateNetOnly: d.deviceConfig.PrivateNet, - LocalDisk: d.deviceConfig.LocalDisk, - } - if d.deviceConfig.DiskSize > 0 { - spec.BlockDevices = []BlockDevice{{Device: "0", DiskImage: DiskImage{Capacity: d.deviceConfig.DiskSize}}} - } - if d.deviceConfig.PublicVLAN > 0 { - spec.PrimaryNetworkComponent = &NetworkComponent{ - NetworkVLAN: &NetworkVLAN{ - Id: d.deviceConfig.PublicVLAN, - }, - } - } - if d.deviceConfig.PrivateVLAN > 0 { - spec.PrimaryBackendNetworkComponent = &NetworkComponent{ - NetworkVLAN: &NetworkVLAN{ - Id: d.deviceConfig.PrivateVLAN, - }, - } - } - log.Debugf("Built host spec %#v", spec) - return spec -} - -func (d *Driver) createSSHKey() (*SSHKey, error) { - if err := ssh.GenerateSSHKey(d.GetSSHKeyPath()); err != nil { - return nil, err - } - - publicKey, err := ioutil.ReadFile(d.publicSSHKeyPath()) - if err != nil { - return nil, err - } - - key, err := d.getClient().SSHKey().Create(d.deviceConfig.Hostname, string(publicKey)) - if err != nil { - return nil, err - } - - return key, nil -} - -func (d *Driver) publicSSHKeyPath() string { - return d.GetSSHKeyPath() + ".pub" -} - -func (d *Driver) Remove() error { - log.Infof("Canceling SoftLayer instance %d...", d.Id) - var err error - for i := 0; i < 5; i++ { - if err = d.getClient().VirtualGuest().Cancel(d.Id); err != nil { - time.Sleep(2 * time.Second) - continue - } - break - } - if err != nil { - return err - } - - log.Infof("Removing SSH Key %d...", d.SSHKeyID) - if err = d.getClient().SSHKey().Delete(d.SSHKeyID); err != nil { - return err - } - - return nil -} - -func (d *Driver) Start() error { - return d.getClient().VirtualGuest().PowerOn(d.Id) -} - -func (d *Driver) Stop() error { - return d.getClient().VirtualGuest().PowerOff(d.Id) -} - -func (d *Driver) Restart() error { - return d.getClient().VirtualGuest().Reboot(d.Id) -} - -func (d *Driver) Kill() error { - return d.Stop() -} diff --git a/vendor/github.com/docker/machine/drivers/softlayer/driver_test.go b/vendor/github.com/docker/machine/drivers/softlayer/driver_test.go deleted file mode 100644 index ab8c6b44..00000000 --- a/vendor/github.com/docker/machine/drivers/softlayer/driver_test.go +++ /dev/null @@ -1,93 +0,0 @@ -package softlayer - -import ( - "io/ioutil" - "os" - "testing" - - "github.com/docker/machine/commands/commandstest" - "github.com/docker/machine/commands/mcndirs" - "github.com/docker/machine/libmachine/drivers" - "github.com/stretchr/testify/assert" -) - -const ( - testStoreDir = ".store-test" - machineTestName = "test-host" - machineTestCaCert = "test-cert" - machineTestPrivateKey = "test-key" -) - -func cleanup() error { - return os.RemoveAll(testStoreDir) -} - -func getTestStorePath() (string, error) { - tmpDir, err := ioutil.TempDir("", "machine-test-") - if err != nil { - return "", err - } - mcndirs.BaseDir = tmpDir - return tmpDir, nil -} - -func getDefaultTestDriverFlags() *commandstest.FakeFlagger { - return &commandstest.FakeFlagger{ - Data: map[string]interface{}{ - "name": "test", - "url": "unix:///var/run/docker.sock", - "softlayer-api-key": "12345", - "softlayer-user": "abcdefg", - "softlayer-api-endpoint": "https://api.softlayer.com/rest/v3", - "softlayer-image": "MY_TEST_IMAGE", - }, - } -} - -func getTestDriver() (*Driver, error) { - storePath, err := getTestStorePath() - if err != nil { - return nil, err - } - defer cleanup() - - d := NewDriver(machineTestName, storePath) - d.SetConfigFromFlags(getDefaultTestDriverFlags()) - drv := d.(*Driver) - return drv, nil -} - -func TestSetConfigFromFlagsSetsImage(t *testing.T) { - d, err := getTestDriver() - - if assert.NoError(t, err) { - assert.Equal(t, "MY_TEST_IMAGE", d.deviceConfig.Image) - } -} - -func TestHostnameDefaultsToMachineName(t *testing.T) { - d, err := getTestDriver() - if assert.NoError(t, err) { - assert.Equal(t, machineTestName, d.deviceConfig.Hostname) - } -} - -func TestSetConfigFromFlags(t *testing.T) { - driver := NewDriver("default", "path") - - checkFlags := &drivers.CheckDriverOptions{ - FlagsValues: map[string]interface{}{ - "softlayer-api-key": "KEY", - "softlayer-user": "user", - "softlayer-api-endpoint": "ENDPOINT", - "softlayer-domain": "DOMAIN", - "softlayer-region": "REGION", - }, - CreateFlags: driver.GetCreateFlags(), - } - - err := driver.SetConfigFromFlags(checkFlags) - - assert.NoError(t, err) - assert.Empty(t, checkFlags.InvalidFlags) -} diff --git a/vendor/github.com/docker/machine/drivers/softlayer/softlayer.go b/vendor/github.com/docker/machine/drivers/softlayer/softlayer.go deleted file mode 100644 index 5200ee2e..00000000 --- a/vendor/github.com/docker/machine/drivers/softlayer/softlayer.go +++ /dev/null @@ -1,364 +0,0 @@ -package softlayer - -import ( - "bytes" - "encoding/json" - "fmt" - "io/ioutil" - "net/http" - "strings" -) - -type Client struct { - User string - ApiKey string - Endpoint string -} - -type HostSpec struct { - Hostname string `json:"hostname"` - Domain string `json:"domain"` - Cpu int `json:"startCpus"` - Memory int `json:"maxMemory"` - Datacenter Datacenter `json:"datacenter"` - SshKeys []*SSHKey `json:"sshKeys"` - BlockDevices []BlockDevice `json:"blockDevices"` - InstallScript string `json:"postInstallScriptUri"` - PrivateNetOnly bool `json:"privateNetworkOnlyFlag"` - Os string `json:"operatingSystemReferenceCode"` - HourlyBilling bool `json:"hourlyBillingFlag"` - LocalDisk bool `json:"localDiskFlag"` - PrimaryNetworkComponent *NetworkComponent `json:"primaryNetworkComponent,omitempty"` - PrimaryBackendNetworkComponent *NetworkComponent `json:"primaryBackendNetworkComponent,omitempty"` -} - -type NetworkComponent struct { - NetworkVLAN *NetworkVLAN `json:"networkVlan"` -} - -type NetworkVLAN struct { - Id int `json:"id"` -} - -type SSHKey struct { - Key string `json:"key,omitempty"` - Id int `json:"id,omitempty"` - Label string `json:"label,omitempty"` -} - -type BlockDevice struct { - Device string `json:"device"` - DiskImage DiskImage `json:"diskImage"` -} - -type DiskImage struct { - Capacity int `json:"capacity"` -} - -type Datacenter struct { - Name string `json:"name"` -} - -type sshKey struct { - *Client -} - -type VirtualGuest struct { - *Client -} - -func NewClient(user, key, endpoint string) *Client { - return &Client{User: user, ApiKey: key, Endpoint: endpoint} -} - -func (c *Client) isOkStatus(code int) bool { - codes := map[int]bool{ - 200: true, - 201: true, - 204: true, - 400: false, - 404: false, - 500: false, - 409: false, - 406: false, - } - - return codes[code] -} - -func (c *Client) newRequest(method, uri string, body interface{}) ([]byte, error) { - var ( - client = &http.Client{} - url = fmt.Sprintf("%s/%s", c.Endpoint, uri) - err error - req *http.Request - ) - - if body != nil { - bodyJSON, err := json.Marshal(body) - if err != nil { - return nil, err - } - req, err = http.NewRequest(method, url, bytes.NewBuffer(bodyJSON)) - } else { - req, err = http.NewRequest(method, url, nil) - } - - if err != nil { - return nil, fmt.Errorf("Error with request: %v - %q", url, err) - } - - req.SetBasicAuth(c.User, c.ApiKey) - req.Method = method - - resp, err := client.Do(req) - if err != nil { - return nil, err - } - defer resp.Body.Close() - data, err := ioutil.ReadAll(resp.Body) - if !c.isOkStatus(resp.StatusCode) { - type apiErr struct { - Err string `json:"error"` - } - var outErr apiErr - json.Unmarshal(data, &outErr) - return nil, fmt.Errorf("Error in response: %s", outErr.Err) - } - if err != nil { - return nil, err - } - - return data, nil -} - -func (c *Client) SSHKey() *sshKey { - return &sshKey{c} -} - -func (c *sshKey) namespace() string { - return "SoftLayer_Security_Ssh_Key" -} - -func (c *sshKey) Create(label, key string) (*SSHKey, error) { - var ( - method = "POST" - uri = c.namespace() - body = SSHKey{Key: key, Label: label} - ) - - data, err := c.newRequest(method, uri, map[string]interface{}{"parameters": []interface{}{body}}) - if err != nil { - return nil, err - } - - var k SSHKey - if err := json.Unmarshal(data, &k); err != nil { - return nil, err - } - - return &k, nil -} - -func (c *sshKey) Delete(id int) error { - var ( - method = "DELETE" - uri = fmt.Sprintf("%s/%v", c.namespace(), id) - ) - - _, err := c.newRequest(method, uri, nil) - if err != nil { - return err - } - return nil -} - -func (c *Client) VirtualGuest() *VirtualGuest { - return &VirtualGuest{c} -} - -func (c *VirtualGuest) namespace() string { - return "SoftLayer_Virtual_Guest" -} - -func (c *VirtualGuest) PowerState(id int) (string, error) { - type state struct { - KeyName string `json:"keyName"` - Name string `json:"name"` - } - var ( - method = "GET" - uri = fmt.Sprintf("%s/%v/getPowerState.json", c.namespace(), id) - ) - - data, err := c.newRequest(method, uri, nil) - if err != nil { - return "", err - } - var s state - if err := json.Unmarshal(data, &s); err != nil { - return "", err - } - - return s.Name, nil -} - -func (c *VirtualGuest) ActiveTransaction(id int) (string, error) { - type transactionStatus struct { - AverageDuration string `json:"averageDuration"` - FriendlyName string `json:"friendlyName"` - Name string `json:"name"` - } - type transaction struct { - CreateDate string `json:"createDate"` - ElapsedSeconds int `json:"elapsedSeconds"` - GuestID int `json:"guestId"` - HardwareID int `json:"hardwareId"` - ID int `json:"id"` - ModifyDate string `json:"modifyDate"` - StatusChangeDate string `json:"statusChangeDate"` - TransactionStatus transactionStatus `json:"transactionStatus"` - } - var ( - method = "GET" - uri = fmt.Sprintf("%s/%v/getActiveTransaction.json", c.namespace(), id) - ) - - data, err := c.newRequest(method, uri, nil) - if err != nil { - return "", err - } - var t transaction - if err := json.Unmarshal(data, &t); err != nil { - return "", err - } - - return t.TransactionStatus.Name, nil -} - -func (c *VirtualGuest) Create(spec *HostSpec) (int, error) { - var ( - method = "POST" - uri = c.namespace() + ".json" - ) - - data, err := c.newRequest(method, uri, map[string]interface{}{"parameters": []interface{}{spec}}) - if err != nil { - return -1, err - } - - type createResp struct { - ID int `json:"id"` - } - - var r createResp - if err := json.Unmarshal(data, &r); err != nil { - return -1, err - } - - return r.ID, nil -} - -func (c *VirtualGuest) Cancel(id int) error { - var ( - method = "DELETE" - uri = fmt.Sprintf("%s/%v", c.namespace(), id) - ) - - _, err := c.newRequest(method, uri, nil) - if err != nil { - return err - } - return nil -} - -func (c *VirtualGuest) PowerOn(id int) error { - var ( - method = "GET" - uri = fmt.Sprintf("%s/%v/powerOn.json", c.namespace(), id) - ) - - _, err := c.newRequest(method, uri, nil) - if err != nil { - return err - } - return nil -} - -func (c *VirtualGuest) PowerOff(id int) error { - var ( - method = "GET" - uri = fmt.Sprintf("%s/%v/powerOff.json", c.namespace(), id) - ) - - _, err := c.newRequest(method, uri, nil) - if err != nil { - return err - } - return nil -} - -func (c *VirtualGuest) Pause(id int) error { - var ( - method = "GET" - uri = fmt.Sprintf("%s/%v/pause.json", c.namespace(), id) - ) - - _, err := c.newRequest(method, uri, nil) - if err != nil { - return err - } - return nil -} - -func (c *VirtualGuest) Resume(id int) error { - var ( - method = "GET" - uri = fmt.Sprintf("%s/%v/resume.json", c.namespace(), id) - ) - - _, err := c.newRequest(method, uri, nil) - if err != nil { - return err - } - return nil -} - -func (c *VirtualGuest) Reboot(id int) error { - var ( - method = "GET" - uri = fmt.Sprintf("%s/%v/rebootSoft.json", c.namespace(), id) - ) - - _, err := c.newRequest(method, uri, nil) - if err != nil { - return err - } - return nil -} - -func (c *VirtualGuest) GetPublicIP(id int) (string, error) { - var ( - method = "GET" - uri = fmt.Sprintf("%s/%v/getPrimaryIpAddress.json", c.namespace(), id) - ) - - data, err := c.newRequest(method, uri, nil) - if err != nil { - return "", err - } - return strings.Replace(string(data), "\"", "", -1), nil -} - -func (c *VirtualGuest) GetPrivateIP(id int) (string, error) { - var ( - method = "GET" - uri = fmt.Sprintf("%s/%v/getPrimaryBackendIpAddress.json", c.namespace(), id) - ) - - data, err := c.newRequest(method, uri, nil) - if err != nil { - return "", err - } - return strings.Replace(string(data), "\"", "", -1), nil -} diff --git a/vendor/github.com/docker/machine/drivers/virtualbox/disk.go b/vendor/github.com/docker/machine/drivers/virtualbox/disk.go deleted file mode 100644 index 82f064f6..00000000 --- a/vendor/github.com/docker/machine/drivers/virtualbox/disk.go +++ /dev/null @@ -1,141 +0,0 @@ -package virtualbox - -import ( - "fmt" - "io" - "os" - "os/exec" - - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnutils" -) - -type VirtualDisk struct { - UUID string - Path string -} - -type DiskCreator interface { - Create(size int, publicSSHKeyPath, diskPath string) error -} - -func NewDiskCreator() DiskCreator { - return &defaultDiskCreator{} -} - -type defaultDiskCreator struct{} - -// Make a boot2docker VM disk image. -func (c *defaultDiskCreator) Create(size int, publicSSHKeyPath, diskPath string) error { - log.Debugf("Creating %d MB hard disk image...", size) - - tarBuf, err := mcnutils.MakeDiskImage(publicSSHKeyPath) - if err != nil { - return err - } - - log.Debug("Calling inner createDiskImage") - - return createDiskImage(diskPath, size, tarBuf) -} - -// createDiskImage makes a disk image at dest with the given size in MB. If r is -// not nil, it will be read as a raw disk image to convert from. -func createDiskImage(dest string, size int, r io.Reader) error { - // Convert a raw image from stdin to the dest VMDK image. - sizeBytes := int64(size) << 20 // usually won't fit in 32-bit int (max 2GB) - // FIXME: why isn't this just using the vbm*() functions? - cmd := exec.Command(vboxManageCmd, "convertfromraw", "stdin", dest, - fmt.Sprintf("%d", sizeBytes), "--format", "VMDK") - - log.Debug(cmd) - - if os.Getenv("MACHINE_DEBUG") != "" { - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - } - - stdin, err := cmd.StdinPipe() - if err != nil { - return err - } - - log.Debug("Starting command") - - if err := cmd.Start(); err != nil { - return err - } - - log.Debug("Copying to stdin") - - n, err := io.Copy(stdin, r) - if err != nil { - return err - } - - log.Debug("Filling zeroes") - - // The total number of bytes written to stdin must match sizeBytes, or - // VBoxManage.exe on Windows will fail. Fill remaining with zeros. - if left := sizeBytes - n; left > 0 { - if err := zeroFill(stdin, left); err != nil { - return err - } - } - - log.Debug("Closing STDIN") - - // cmd won't exit until the stdin is closed. - if err := stdin.Close(); err != nil { - return err - } - - log.Debug("Waiting on cmd") - - return cmd.Wait() -} - -// zeroFill writes n zero bytes into w. -func zeroFill(w io.Writer, n int64) error { - const blocksize = 32 << 10 - zeros := make([]byte, blocksize) - var k int - var err error - for n > 0 { - if n > blocksize { - k, err = w.Write(zeros) - } else { - k, err = w.Write(zeros[:n]) - } - if err != nil { - return err - } - n -= int64(k) - } - return nil -} - -func getVMDiskInfo(name string, vbox VBoxManager) (*VirtualDisk, error) { - out, err := vbox.vbmOut("showvminfo", name, "--machinereadable") - if err != nil { - return nil, err - } - - disk := &VirtualDisk{} - - err = parseKeyValues(out, reEqualQuoteLine, func(key, val string) error { - switch key { - case "SATA-1-0": - disk.Path = val - case "SATA-ImageUUID-1-0": - disk.UUID = val - } - - return nil - }) - if err != nil { - return nil, err - } - - return disk, nil -} diff --git a/vendor/github.com/docker/machine/drivers/virtualbox/disk_test.go b/vendor/github.com/docker/machine/drivers/virtualbox/disk_test.go deleted file mode 100644 index b6c59195..00000000 --- a/vendor/github.com/docker/machine/drivers/virtualbox/disk_test.go +++ /dev/null @@ -1,55 +0,0 @@ -package virtualbox - -import ( - "errors" - "testing" - - "github.com/stretchr/testify/assert" -) - -const stdOutDiskInfo = ` -storagecontrollerbootable0="on" -"SATA-0-0"="/home/ehazlett/.boot2docker/boot2docker.iso" -"SATA-IsEjected"="off" -"SATA-1-0"="/home/ehazlett/vm/test/disk.vmdk" -"SATA-ImageUUID-1-0"="12345-abcdefg" -"SATA-2-0"="none" -nic1="nat"` - -func TestVMDiskInfo(t *testing.T) { - vbox := &VBoxManagerMock{ - args: "showvminfo default --machinereadable", - stdOut: stdOutDiskInfo, - } - - disk, err := getVMDiskInfo("default", vbox) - - assert.Equal(t, "/home/ehazlett/vm/test/disk.vmdk", disk.Path) - assert.Equal(t, "12345-abcdefg", disk.UUID) - assert.NoError(t, err) -} - -func TestVMDiskInfoError(t *testing.T) { - vbox := &VBoxManagerMock{ - args: "showvminfo default --machinereadable", - err: errors.New("BUG"), - } - - disk, err := getVMDiskInfo("default", vbox) - - assert.Nil(t, disk) - assert.EqualError(t, err, "BUG") -} - -func TestVMDiskInfoInvalidOutput(t *testing.T) { - vbox := &VBoxManagerMock{ - args: "showvminfo default --machinereadable", - stdOut: "INVALID", - } - - disk, err := getVMDiskInfo("default", vbox) - - assert.Empty(t, disk.Path) - assert.Empty(t, disk.UUID) - assert.NoError(t, err) -} diff --git a/vendor/github.com/docker/machine/drivers/virtualbox/ip.go b/vendor/github.com/docker/machine/drivers/virtualbox/ip.go deleted file mode 100644 index be22a4fb..00000000 --- a/vendor/github.com/docker/machine/drivers/virtualbox/ip.go +++ /dev/null @@ -1,36 +0,0 @@ -package virtualbox - -import ( - "time" - - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/mcnutils" -) - -// IPWaiter waits for an IP to be configured. -type IPWaiter interface { - Wait(d *Driver) error -} - -func NewIPWaiter() IPWaiter { - return &sshIPWaiter{} -} - -type sshIPWaiter struct{} - -func (w *sshIPWaiter) Wait(d *Driver) error { - // Wait for SSH over NAT to be available before returning to user - if err := drivers.WaitForSSH(d); err != nil { - return err - } - - // Bail if we don't get an IP from DHCP after a given number of seconds. - if err := mcnutils.WaitForSpecific(d.hostOnlyIPAvailable, 5, 4*time.Second); err != nil { - return err - } - - var err error - d.IPAddress, err = d.GetIP() - - return err -} diff --git a/vendor/github.com/docker/machine/drivers/virtualbox/misc.go b/vendor/github.com/docker/machine/drivers/virtualbox/misc.go deleted file mode 100644 index 87e745c8..00000000 --- a/vendor/github.com/docker/machine/drivers/virtualbox/misc.go +++ /dev/null @@ -1,106 +0,0 @@ -package virtualbox - -import ( - "bufio" - "math/rand" - "os" - - "time" - - "github.com/docker/machine/libmachine/mcnutils" - "github.com/docker/machine/libmachine/ssh" -) - -// B2DUpdater describes the interactions with b2d. -type B2DUpdater interface { - UpdateISOCache(storePath, isoURL string) error - CopyIsoToMachineDir(storePath, machineName, isoURL string) error -} - -func NewB2DUpdater() B2DUpdater { - return &b2dUtilsUpdater{} -} - -type b2dUtilsUpdater struct{} - -func (u *b2dUtilsUpdater) CopyIsoToMachineDir(storePath, machineName, isoURL string) error { - return mcnutils.NewB2dUtils(storePath).CopyIsoToMachineDir(isoURL, machineName) -} - -func (u *b2dUtilsUpdater) UpdateISOCache(storePath, isoURL string) error { - return mcnutils.NewB2dUtils(storePath).UpdateISOCache(isoURL) -} - -// SSHKeyGenerator describes the generation of ssh keys. -type SSHKeyGenerator interface { - Generate(path string) error -} - -func NewSSHKeyGenerator() SSHKeyGenerator { - return &defaultSSHKeyGenerator{} -} - -type defaultSSHKeyGenerator struct{} - -func (g *defaultSSHKeyGenerator) Generate(path string) error { - return ssh.GenerateSSHKey(path) -} - -// LogsReader describes the reading of VBox.log -type LogsReader interface { - Read(path string) ([]string, error) -} - -func NewLogsReader() LogsReader { - return &vBoxLogsReader{} -} - -type vBoxLogsReader struct{} - -func (c *vBoxLogsReader) Read(path string) ([]string, error) { - file, err := os.Open(path) - if err != nil { - return []string{}, err - } - - defer file.Close() - - lines := []string{} - - scanner := bufio.NewScanner(file) - for scanner.Scan() { - lines = append(lines, scanner.Text()) - } - - return lines, nil -} - -// RandomInter returns random int values. -type RandomInter interface { - RandomInt(n int) int -} - -func NewRandomInter() RandomInter { - return &defaultRandomInter{} -} - -type defaultRandomInter struct{} - -func (d *defaultRandomInter) RandomInt(n int) int { - return rand.Intn(n) -} - -// Sleeper sleeps for given duration. -type Sleeper interface { - Sleep(d time.Duration) -} - -func NewSleeper() Sleeper { - return &defaultSleeper{} -} - -type defaultSleeper struct{} - -func (s *defaultSleeper) Sleep(d time.Duration) { - time.Sleep(d) -} diff --git a/vendor/github.com/docker/machine/drivers/virtualbox/network.go b/vendor/github.com/docker/machine/drivers/virtualbox/network.go deleted file mode 100644 index 0586b77d..00000000 --- a/vendor/github.com/docker/machine/drivers/virtualbox/network.go +++ /dev/null @@ -1,400 +0,0 @@ -package virtualbox - -import ( - "errors" - "fmt" - "net" - "regexp" - "strings" - "time" - - "runtime" - - "github.com/docker/machine/libmachine/log" -) - -const ( - buggyNetmask = "0f000000" - dhcpPrefix = "HostInterfaceNetworking-" -) - -var ( - reHostOnlyAdapterCreated = regexp.MustCompile(`Interface '(.+)' was successfully created`) - errNewHostOnlyAdapterNotVisible = errors.New("The host-only adapter we just created is not visible. This is a well known VirtualBox bug. You might want to uninstall it and reinstall at least version 5.0.12 that is is supposed to fix this issue") -) - -// Host-only network. -type hostOnlyNetwork struct { - Name string - GUID string - DHCP bool - IPv4 net.IPNet - HwAddr net.HardwareAddr - Medium string - Status string - NetworkName string // referenced in DHCP.NetworkName -} - -// HostInterfaces returns host network interface info. By default delegates to net.Interfaces() -type HostInterfaces interface { - Interfaces() ([]net.Interface, error) - Addrs(iface *net.Interface) ([]net.Addr, error) -} - -func NewHostInterfaces() HostInterfaces { - return &defaultHostInterfaces{} -} - -type defaultHostInterfaces struct { -} - -func (ni *defaultHostInterfaces) Interfaces() ([]net.Interface, error) { - return net.Interfaces() -} - -func (ni *defaultHostInterfaces) Addrs(iface *net.Interface) ([]net.Addr, error) { - return iface.Addrs() -} - -// Save changes the configuration of the host-only network. -func (n *hostOnlyNetwork) Save(vbox VBoxManager) error { - if err := n.SaveIPv4(vbox); err != nil { - return err - } - - if n.DHCP { - vbox.vbm("hostonlyif", "ipconfig", n.Name, "--dhcp") // not implemented as of VirtualBox 4.3 - } - - return nil -} - -// SaveIPv4 changes the ipv4 configuration of the host-only network. -func (n *hostOnlyNetwork) SaveIPv4(vbox VBoxManager) error { - if n.IPv4.IP != nil && n.IPv4.Mask != nil { - if runtime.GOOS == "windows" { - log.Warn("Windows might ask for the permission to configure a network adapter. Sometimes, such confirmation window is minimized in the taskbar.") - } - - if err := vbox.vbm("hostonlyif", "ipconfig", n.Name, "--ip", n.IPv4.IP.String(), "--netmask", net.IP(n.IPv4.Mask).String()); err != nil { - return err - } - } - - return nil -} - -// createHostonlyAdapter creates a new host-only network. -func createHostonlyAdapter(vbox VBoxManager) (*hostOnlyNetwork, error) { - if runtime.GOOS == "windows" { - log.Warn("Windows might ask for the permission to create a network adapter. Sometimes, such confirmation window is minimized in the taskbar.") - } - - out, err := vbox.vbmOut("hostonlyif", "create") - if err != nil { - return nil, err - } - - res := reHostOnlyAdapterCreated.FindStringSubmatch(string(out)) - if res == nil { - return nil, errors.New("Failed to create host-only adapter") - } - - return &hostOnlyNetwork{Name: res[1]}, nil -} - -// listHostOnlyAdapters gets all host-only adapters in a map keyed by NetworkName. -func listHostOnlyAdapters(vbox VBoxManager) (map[string]*hostOnlyNetwork, error) { - out, err := vbox.vbmOut("list", "hostonlyifs") - if err != nil { - return nil, err - } - - byName := map[string]*hostOnlyNetwork{} - byIP := map[string]*hostOnlyNetwork{} - n := &hostOnlyNetwork{} - - err = parseKeyValues(out, reColonLine, func(key, val string) error { - switch key { - case "Name": - n.Name = val - case "GUID": - n.GUID = val - case "DHCP": - n.DHCP = (val != "Disabled") - case "IPAddress": - n.IPv4.IP = net.ParseIP(val) - case "NetworkMask": - n.IPv4.Mask = parseIPv4Mask(val) - case "HardwareAddress": - mac, err := net.ParseMAC(val) - if err != nil { - return err - } - n.HwAddr = mac - case "MediumType": - n.Medium = val - case "Status": - n.Status = val - case "VBoxNetworkName": - n.NetworkName = val - - if _, present := byName[n.NetworkName]; present { - return fmt.Errorf("VirtualBox is configured with multiple host-only adapters with the same name %q. Please remove one.", n.NetworkName) - } - byName[n.NetworkName] = n - - if len(n.IPv4.IP) != 0 { - if _, present := byIP[n.IPv4.IP.String()]; present { - return fmt.Errorf("VirtualBox is configured with multiple host-only adapters with the same IP %q. Please remove one.", n.IPv4.IP) - } - byIP[n.IPv4.IP.String()] = n - } - - n = &hostOnlyNetwork{} - } - - return nil - }) - if err != nil { - return nil, err - } - - return byName, nil -} - -func getHostOnlyAdapter(nets map[string]*hostOnlyNetwork, hostIP net.IP, netmask net.IPMask) *hostOnlyNetwork { - for _, n := range nets { - // Second part of this conditional handles a race where - // VirtualBox returns us the incorrect netmask value for the - // newly created adapter. - if hostIP.Equal(n.IPv4.IP) && - (netmask.String() == n.IPv4.Mask.String() || n.IPv4.Mask.String() == buggyNetmask) { - log.Debugf("Found: %s", n.Name) - return n - } - } - - log.Debug("Not found") - return nil -} - -func getOrCreateHostOnlyNetwork(hostIP net.IP, netmask net.IPMask, nets map[string]*hostOnlyNetwork, vbox VBoxManager) (*hostOnlyNetwork, error) { - // Search for an existing host-only adapter. - hostOnlyAdapter := getHostOnlyAdapter(nets, hostIP, netmask) - if hostOnlyAdapter != nil { - return hostOnlyAdapter, nil - } - - // No existing host-only adapter found. Create a new one. - _, err := createHostonlyAdapter(vbox) - if err != nil { - // Sometimes the host-only adapter fails to create. See https://www.virtualbox.org/ticket/14040 - // BUT, it is created in fact! So let's wait until it appears last in the list - log.Warnf("Creating a new host-only adapter produced an error: %s", err) - log.Warn("This is a known VirtualBox bug. Let's try to recover anyway...") - } - - // It can take some time for an adapter to appear. Let's poll. - hostOnlyAdapter, err = waitForNewHostOnlyNetwork(nets, vbox) - if err != nil { - // Sometimes, Vbox says it created it but then it cannot be found... - return nil, errNewHostOnlyAdapterNotVisible - } - - log.Warnf("Found a new host-only adapter: %q", hostOnlyAdapter.Name) - - hostOnlyAdapter.IPv4.IP = hostIP - hostOnlyAdapter.IPv4.Mask = netmask - if err := hostOnlyAdapter.Save(vbox); err != nil { - return nil, err - } - - return hostOnlyAdapter, nil -} - -func waitForNewHostOnlyNetwork(oldNets map[string]*hostOnlyNetwork, vbox VBoxManager) (*hostOnlyNetwork, error) { - for i := 0; i < 10; i++ { - time.Sleep(1 * time.Second) - - newNets, err := listHostOnlyAdapters(vbox) - if err != nil { - return nil, err - } - - for name, latestNet := range newNets { - if _, present := oldNets[name]; !present { - return latestNet, nil - } - } - } - - return nil, errors.New("Failed to find a new host-only adapter") -} - -// DHCP server info. -type dhcpServer struct { - NetworkName string - IPv4 net.IPNet - LowerIP net.IP - UpperIP net.IP - Enabled bool -} - -// removeOrphanDHCPServers removed the DHCP servers linked to no host-only adapter -func removeOrphanDHCPServers(vbox VBoxManager) error { - dhcps, err := listDHCPServers(vbox) - if err != nil { - return err - } - - if len(dhcps) == 0 { - return nil - } - - log.Debug("Removing orphan DHCP servers...") - - nets, err := listHostOnlyAdapters(vbox) - if err != nil { - return err - } - - for name := range dhcps { - if strings.HasPrefix(name, dhcpPrefix) { - if _, present := nets[name]; !present { - if err := vbox.vbm("dhcpserver", "remove", "--netname", name); err != nil { - log.Warnf("Unable to remove orphan dhcp server %q: %s", name, err) - } - } - } - } - - return nil -} - -// addHostOnlyDHCPServer adds a DHCP server to a host-only network. -func addHostOnlyDHCPServer(ifname string, d dhcpServer, vbox VBoxManager) error { - name := dhcpPrefix + ifname - - dhcps, err := listDHCPServers(vbox) - if err != nil { - return err - } - - // On some platforms (OSX), creating a host-only adapter adds a default dhcpserver, - // while on others (Windows?) it does not. - command := "add" - if dhcp, ok := dhcps[name]; ok { - command = "modify" - if (dhcp.IPv4.IP.Equal(d.IPv4.IP)) && (dhcp.IPv4.Mask.String() == d.IPv4.Mask.String()) && (dhcp.LowerIP.Equal(d.LowerIP)) && (dhcp.UpperIP.Equal(d.UpperIP)) && dhcp.Enabled { - // dhcp is up to date - return nil - } - } - - args := []string{"dhcpserver", command, - "--netname", name, - "--ip", d.IPv4.IP.String(), - "--netmask", net.IP(d.IPv4.Mask).String(), - "--lowerip", d.LowerIP.String(), - "--upperip", d.UpperIP.String(), - } - if d.Enabled { - args = append(args, "--enable") - } else { - args = append(args, "--disable") - } - - if runtime.GOOS == "windows" { - log.Warn("Windows might ask for the permission to configure a dhcp server. Sometimes, such confirmation window is minimized in the taskbar.") - } - - return vbox.vbm(args...) -} - -// listDHCPServers lists all DHCP server settings in a map keyed by DHCP.NetworkName. -func listDHCPServers(vbox VBoxManager) (map[string]*dhcpServer, error) { - out, err := vbox.vbmOut("list", "dhcpservers") - if err != nil { - return nil, err - } - - m := map[string]*dhcpServer{} - dhcp := &dhcpServer{} - - err = parseKeyValues(out, reColonLine, func(key, val string) error { - switch key { - case "NetworkName": - dhcp = &dhcpServer{} - m[val] = dhcp - dhcp.NetworkName = val - case "IP": - dhcp.IPv4.IP = net.ParseIP(val) - case "upperIPAddress": - dhcp.UpperIP = net.ParseIP(val) - case "lowerIPAddress": - dhcp.LowerIP = net.ParseIP(val) - case "NetworkMask": - dhcp.IPv4.Mask = parseIPv4Mask(val) - case "Enabled": - dhcp.Enabled = (val == "Yes") - } - - return nil - }) - if err != nil { - return nil, err - } - - return m, nil -} - -// listHostInterfaces returns a map of net.IPNet addresses of host interfaces that are "UP" and not loopback adapters -// and not virtualbox host-only networks (given by excludeNets), keyed by CIDR string. -func listHostInterfaces(hif HostInterfaces, excludeNets map[string]*hostOnlyNetwork) (map[string]*net.IPNet, error) { - ifaces, err := hif.Interfaces() - if err != nil { - return nil, err - } - m := map[string]*net.IPNet{} - - for _, iface := range ifaces { - addrs, err := hif.Addrs(&iface) - if err != nil { - return nil, err - } - for _, a := range addrs { - switch ipnet := a.(type) { - case *net.IPNet: - _, hostOnly := excludeNets[ipnet.String()] - if !hostOnly && iface.Flags&net.FlagUp != 0 && iface.Flags&net.FlagLoopback == 0 { - m[ipnet.String()] = ipnet - } - default: - - } - } - } - return m, nil -} - -// checkIPNetCollision returns true if any host interfaces conflict with the host-only network mask passed as a parameter. -// This works with IPv4 or IPv6 ip addresses. -func checkIPNetCollision(hostonly *net.IPNet, hostIfaces map[string]*net.IPNet) (bool, error) { - for _, ifaceNet := range hostIfaces { - if hostonly.IP.Equal(ifaceNet.IP.Mask(ifaceNet.Mask)) { - return true, nil - } - } - return false, nil -} - -// parseIPv4Mask parses IPv4 netmask written in IP form (e.g. 255.255.255.0). -// This function should really belong to the net package. -func parseIPv4Mask(s string) net.IPMask { - mask := net.ParseIP(s) - if mask == nil { - return nil - } - return net.IPv4Mask(mask[12], mask[13], mask[14], mask[15]) -} diff --git a/vendor/github.com/docker/machine/drivers/virtualbox/network_test.go b/vendor/github.com/docker/machine/drivers/virtualbox/network_test.go deleted file mode 100644 index ce8f4cd9..00000000 --- a/vendor/github.com/docker/machine/drivers/virtualbox/network_test.go +++ /dev/null @@ -1,406 +0,0 @@ -package virtualbox - -import ( - "net" - "reflect" - "testing" - - "github.com/stretchr/testify/assert" -) - -const ( - stdOutOneHostOnlyNetwork = ` -Name: vboxnet0 -GUID: 786f6276-656e-4074-8000-0a0027000000 -DHCP: Disabled -IPAddress: 192.168.99.1 -NetworkMask: 255.255.255.0 -IPV6Address: -IPV6NetworkMaskPrefixLength: 0 -HardwareAddress: 0a:00:27:00:00:00 -MediumType: Ethernet -Status: Up -VBoxNetworkName: HostInterfaceNetworking-vboxnet0 - -` - stdOutTwoHostOnlyNetwork = ` -Name: vboxnet0 -GUID: 786f6276-656e-4074-8000-0a0027000000 -DHCP: Disabled -IPAddress: 192.168.99.1 -NetworkMask: 255.255.255.0 -IPV6Address: -IPV6NetworkMaskPrefixLength: 0 -HardwareAddress: 0a:00:27:00:00:00 -MediumType: Ethernet -Status: Up -VBoxNetworkName: HostInterfaceNetworking-vboxnet0 - -Name: vboxnet1 -GUID: 786f6276-656e-4174-8000-0a0027000001 -DHCP: Disabled -IPAddress: 169.254.37.187 -NetworkMask: 255.255.255.0 -IPV6Address: -IPV6NetworkMaskPrefixLength: 0 -HardwareAddress: 0a:00:27:00:00:01 -MediumType: Ethernet -Status: Up -VBoxNetworkName: HostInterfaceNetworking-vboxnet1 -` - stdOutListTwoDHCPServers = ` -NetworkName: HostInterfaceNetworking-vboxnet0 -IP: 192.168.99.6 -NetworkMask: 255.255.255.0 -lowerIPAddress: 192.168.99.100 -upperIPAddress: 192.168.99.254 -Enabled: Yes - -NetworkName: HostInterfaceNetworking-vboxnet1 -IP: 192.168.99.7 -NetworkMask: 255.255.255.0 -lowerIPAddress: 192.168.99.100 -upperIPAddress: 192.168.99.254 -Enabled: No -` -) - -type mockHostInterfaces struct { - mockIfaces []net.Interface - mockAddrs map[string]net.Addr -} - -func newMockHostInterfaces() *mockHostInterfaces { - return &mockHostInterfaces{ - mockAddrs: make(map[string]net.Addr), - } -} - -func (mhi *mockHostInterfaces) Interfaces() ([]net.Interface, error) { - return mhi.mockIfaces, nil -} - -func (mhi *mockHostInterfaces) Addrs(iface *net.Interface) ([]net.Addr, error) { - return []net.Addr{mhi.mockAddrs[iface.Name]}, nil -} - -func (mhi *mockHostInterfaces) addMockIface(ip string, mask int, iplen int, name string, flags net.Flags) (*net.IPNet, error) { - iface := &net.Interface{Name: name, Flags: flags} - mhi.mockIfaces = append(mhi.mockIfaces, *iface) - - ipnet := &net.IPNet{IP: net.ParseIP(ip), Mask: net.CIDRMask(mask, 8*iplen)} - if ipnet.IP == nil { - return nil, &net.ParseError{Type: "IP address", Text: ip} - } - mhi.mockAddrs[name] = ipnet - return ipnet, nil -} - -// Tests that when we have a host only network which matches our expectations, -// it gets returned correctly. -func TestGetHostOnlyNetworkHappy(t *testing.T) { - cidr := "192.168.99.0/24" - ip, ipnet, err := net.ParseCIDR(cidr) - if err != nil { - t.Fatalf("Error parsing cidr: %s", err) - } - expectedHostOnlyNetwork := &hostOnlyNetwork{ - IPv4: *ipnet, - } - vboxNets := map[string]*hostOnlyNetwork{ - "HostInterfaceNetworking-vboxnet0": expectedHostOnlyNetwork, - } - - n := getHostOnlyAdapter(vboxNets, ip, ipnet.Mask) - if !reflect.DeepEqual(n, expectedHostOnlyNetwork) { - t.Fatalf("Expected result of calling getHostOnlyNetwork to be the same as expected but it was not:\nexpected: %+v\nactual: %+v\n", expectedHostOnlyNetwork, n) - } -} - -// Tests that we are able to properly detect when a host only network which -// matches our expectations can not be found. -func TestGetHostOnlyNetworkNotFound(t *testing.T) { - // Note that this has a different ip is different from "ip" below. - cidr := "192.168.99.0/24" - ip, ipnet, err := net.ParseCIDR(cidr) - if err != nil { - t.Fatalf("Error parsing cidr: %s", err) - } - - ip = net.ParseIP("192.168.59.0").To4() - - // Suppose a vbox net is created, but it doesn't align with our - // expectation. - vboxNet := &hostOnlyNetwork{ - IPv4: *ipnet, - } - vboxNets := map[string]*hostOnlyNetwork{ - "HostInterfaceNetworking-vboxnet0": vboxNet, - } - - n := getHostOnlyAdapter(vboxNets, ip, ipnet.Mask) - if n != nil { - t.Fatalf("Expected vbox net to be nil but it has a value: %+v\n", n) - } -} - -// Tests a special case where Virtualbox creates the host only network -// successfully but mis-reports the netmask. -func TestGetHostOnlyNetworkWindows10Bug(t *testing.T) { - cidr := "192.168.99.0/24" - ip, ipnet, err := net.ParseCIDR(cidr) - if err != nil { - t.Fatalf("Error parsing cidr: %s", err) - } - - // This is a faulty netmask: a VirtualBox bug causes it to be - // misreported. - ipnet.Mask = net.IPMask(net.ParseIP("15.0.0.0").To4()) - - expectedHostOnlyNetwork := &hostOnlyNetwork{ - IPv4: *ipnet, - } - - vboxNets := map[string]*hostOnlyNetwork{ - "HostInterfaceNetworking-vboxnet0": expectedHostOnlyNetwork, - } - - // The Mask that we are passing in will be the "legitimate" mask, so it - // must differ from the magic buggy mask. - n := getHostOnlyAdapter(vboxNets, ip, net.IPMask(net.ParseIP("255.255.255.0").To4())) - if !reflect.DeepEqual(n, expectedHostOnlyNetwork) { - t.Fatalf("Expected result of calling getHostOnlyNetwork to be the same as expected but it was not:\nexpected: %+v\nactual: %+v\n", expectedHostOnlyNetwork, n) - } -} - -func TestListHostOnlyNetworks(t *testing.T) { - vbox := &VBoxManagerMock{ - args: "list hostonlyifs", - stdOut: stdOutOneHostOnlyNetwork, - } - - nets, err := listHostOnlyAdapters(vbox) - - assert.Equal(t, 1, len(nets)) - assert.NoError(t, err) - - net, present := nets["HostInterfaceNetworking-vboxnet0"] - - assert.True(t, present) - assert.Equal(t, "vboxnet0", net.Name) - assert.Equal(t, "786f6276-656e-4074-8000-0a0027000000", net.GUID) - assert.False(t, net.DHCP) - assert.Equal(t, "192.168.99.1", net.IPv4.IP.String()) - assert.Equal(t, "ffffff00", net.IPv4.Mask.String()) - assert.Equal(t, "0a:00:27:00:00:00", net.HwAddr.String()) - assert.Equal(t, "Ethernet", net.Medium) - assert.Equal(t, "Up", net.Status) - assert.Equal(t, "HostInterfaceNetworking-vboxnet0", net.NetworkName) -} - -func TestListTwoHostOnlyNetworks(t *testing.T) { - vbox := &VBoxManagerMock{ - args: "list hostonlyifs", - stdOut: stdOutTwoHostOnlyNetwork, - } - - nets, err := listHostOnlyAdapters(vbox) - - assert.Equal(t, 2, len(nets)) - assert.NoError(t, err) - - net, present := nets["HostInterfaceNetworking-vboxnet1"] - - assert.True(t, present) - assert.Equal(t, "vboxnet1", net.Name) - assert.Equal(t, "786f6276-656e-4174-8000-0a0027000001", net.GUID) - assert.False(t, net.DHCP) - assert.Equal(t, "169.254.37.187", net.IPv4.IP.String()) - assert.Equal(t, "ffffff00", net.IPv4.Mask.String()) - assert.Equal(t, "0a:00:27:00:00:01", net.HwAddr.String()) - assert.Equal(t, "Ethernet", net.Medium) - assert.Equal(t, "Up", net.Status) - assert.Equal(t, "HostInterfaceNetworking-vboxnet1", net.NetworkName) -} - -func TestListHostOnlyNetworksDontRelyOnEmptyLinesForParsing(t *testing.T) { - vbox := &VBoxManagerMock{ - args: "list hostonlyifs", - stdOut: `Name: vboxnet0 -VBoxNetworkName: HostInterfaceNetworking-vboxnet0 -Name: vboxnet1 -VBoxNetworkName: HostInterfaceNetworking-vboxnet1`, - } - - nets, err := listHostOnlyAdapters(vbox) - - assert.Equal(t, 2, len(nets)) - assert.NoError(t, err) - - net, present := nets["HostInterfaceNetworking-vboxnet1"] - assert.True(t, present) - assert.Equal(t, "vboxnet1", net.Name) - - net, present = nets["HostInterfaceNetworking-vboxnet0"] - assert.True(t, present) - assert.Equal(t, "vboxnet0", net.Name) -} - -func TestGetHostOnlyNetwork(t *testing.T) { - vbox := &VBoxManagerMock{ - args: "list hostonlyifs", - stdOut: stdOutOneHostOnlyNetwork, - } - nets, err := listHostOnlyAdapters(vbox) - assert.NoError(t, err) - - net, err := getOrCreateHostOnlyNetwork(net.ParseIP("192.168.99.1"), parseIPv4Mask("255.255.255.0"), nets, vbox) - - assert.NotNil(t, net) - assert.Equal(t, "HostInterfaceNetworking-vboxnet0", net.NetworkName) - assert.NoError(t, err) -} - -func TestFailIfTwoNetworksHaveSameIP(t *testing.T) { - vbox := &VBoxManagerMock{ - args: "list hostonlyifs", - stdOut: `Name: vboxnet0 -IPAddress: 192.168.99.1 -NetworkMask: 255.255.255.0 -VBoxNetworkName: HostInterfaceNetworking-vboxnet0 -Name: vboxnet1 -IPAddress: 192.168.99.1 -NetworkMask: 255.255.255.0 -VBoxNetworkName: HostInterfaceNetworking-vboxnet1`, - } - nets, err := listHostOnlyAdapters(vbox) - assert.Nil(t, nets) - assert.EqualError(t, err, `VirtualBox is configured with multiple host-only adapters with the same IP "192.168.99.1". Please remove one.`) -} - -func TestFailIfTwoNetworksHaveSameName(t *testing.T) { - vbox := &VBoxManagerMock{ - args: "list hostonlyifs", - stdOut: `Name: vboxnet0 -VBoxNetworkName: HostInterfaceNetworking-vboxnet0 -Name: vboxnet0 -VBoxNetworkName: HostInterfaceNetworking-vboxnet0`, - } - nets, err := listHostOnlyAdapters(vbox) - assert.Nil(t, nets) - assert.EqualError(t, err, `VirtualBox is configured with multiple host-only adapters with the same name "HostInterfaceNetworking-vboxnet0". Please remove one.`) -} - -func TestGetDHCPServers(t *testing.T) { - vbox := &VBoxManagerMock{ - args: "list dhcpservers", - stdOut: stdOutListTwoDHCPServers, - } - - servers, err := listDHCPServers(vbox) - - assert.Equal(t, 2, len(servers)) - assert.NoError(t, err) - - server, present := servers["HostInterfaceNetworking-vboxnet0"] - assert.True(t, present) - assert.Equal(t, "HostInterfaceNetworking-vboxnet0", server.NetworkName) - assert.Equal(t, "192.168.99.6", server.IPv4.IP.String()) - assert.Equal(t, "192.168.99.100", server.LowerIP.String()) - assert.Equal(t, "192.168.99.254", server.UpperIP.String()) - assert.Equal(t, "ffffff00", server.IPv4.Mask.String()) - assert.True(t, server.Enabled) - - server, present = servers["HostInterfaceNetworking-vboxnet1"] - assert.True(t, present) - assert.Equal(t, "HostInterfaceNetworking-vboxnet1", server.NetworkName) - assert.Equal(t, "192.168.99.7", server.IPv4.IP.String()) - assert.Equal(t, "192.168.99.100", server.LowerIP.String()) - assert.Equal(t, "192.168.99.254", server.UpperIP.String()) - assert.Equal(t, "ffffff00", server.IPv4.Mask.String()) - assert.False(t, server.Enabled) -} - -// Tests detection of a conflict between prospective vbox host-only network and an IPV6 host interface -func TestCheckIPNetCollisionIPv6(t *testing.T) { - m := map[string]*net.IPNet{} - _, vboxHostOnly, err := net.ParseCIDR("2607:f8b0:400e:c04:ffff:ffff:ffff:ffff/64") - assert.Nil(t, err) - - hostIP, hostNet, err := net.ParseCIDR("2001:4998:c:a06::2:4008/64") - assert.Nil(t, err) - m[hostIP.String()] = &net.IPNet{IP: hostIP, Mask: hostNet.Mask} - - result, err := checkIPNetCollision(vboxHostOnly, m) - assert.Nil(t, err) - assert.False(t, result) - - hostIP, hostNet, err = net.ParseCIDR("2607:f8b0:400e:c04::6a/64") - assert.Nil(t, err) - m[hostIP.String()] = &net.IPNet{IP: hostIP, Mask: hostNet.Mask} - - result, err = checkIPNetCollision(vboxHostOnly, m) - assert.Nil(t, err) - assert.True(t, result) -} - -// Tests detection of a conflict between prospective vbox host-only network and an IPV4 host interface -func TestCheckIPNetCollisionIPv4(t *testing.T) { - m := map[string]*net.IPNet{} - _, vboxHostOnly, err := net.ParseCIDR("192.168.99.1/24") - assert.NoError(t, err) - - hostIP, hostNet, err := net.ParseCIDR("10.10.10.42/24") - assert.NoError(t, err) - m[hostIP.String()] = &net.IPNet{IP: hostIP, Mask: hostNet.Mask} - - result, err := checkIPNetCollision(vboxHostOnly, m) - assert.NoError(t, err) - assert.False(t, result) - - hostIP, hostNet, err = net.ParseCIDR("192.168.99.22/24") - assert.NoError(t, err) - m[hostIP.String()] = &net.IPNet{IP: hostIP, Mask: hostNet.Mask} - - result, err = checkIPNetCollision(vboxHostOnly, m) - assert.NoError(t, err) - assert.True(t, result) -} - -// Tests functionality of listHostInterfaces and verifies only non-loopback, active and non-excluded interfaces are returned -func TestListHostInterfaces(t *testing.T) { - mhi := newMockHostInterfaces() - excludes := map[string]*hostOnlyNetwork{} - - en0, err := mhi.addMockIface("10.10.0.22", 24, net.IPv4len, "en0", net.FlagUp|net.FlagBroadcast) - assert.NoError(t, err) - _, err = mhi.addMockIface("10.10.1.11", 24, net.IPv4len, "en1", net.FlagBroadcast /*not up*/) - assert.NoError(t, err) - _, err = mhi.addMockIface("127.0.0.1", 24, net.IPv4len, "lo0", net.FlagUp|net.FlagLoopback) - assert.NoError(t, err) - en0ipv6, err := mhi.addMockIface("2001:4998:c:a06::2:4008", 64, net.IPv6len, "en0ipv6", net.FlagUp|net.FlagBroadcast) - assert.NoError(t, err) - vboxnet0, err := mhi.addMockIface("192.168.99.1", 24, net.IPv4len, "vboxnet0", net.FlagUp|net.FlagBroadcast) - assert.NoError(t, err) - notvboxnet0, err := mhi.addMockIface("192.168.99.42", 24, net.IPv4len, "en2", net.FlagUp|net.FlagBroadcast) - assert.NoError(t, err) - - excludes["192.168.99.1/24"] = &hostOnlyNetwork{IPv4: *vboxnet0, Name: "HostInterfaceNetworking-vboxnet0"} - - m, err := listHostInterfaces(mhi, excludes) - assert.NoError(t, err) - assert.NotEmpty(t, m) - - assert.Contains(t, m, "10.10.0.22/24") - assert.Equal(t, en0, m["10.10.0.22/24"]) - - assert.Contains(t, m, "2001:4998:c:a06::2:4008/64") - assert.Equal(t, en0ipv6, m["2001:4998:c:a06::2:4008/64"]) - - assert.Contains(t, m, "192.168.99.42/24") - assert.Equal(t, notvboxnet0, m["192.168.99.42/24"]) - - assert.NotContains(t, m, "10.10.1.11/24") - assert.NotContains(t, m, "127.0.0.1/24") - assert.NotContains(t, m, "192.168.99.1/24") -} diff --git a/vendor/github.com/docker/machine/drivers/virtualbox/vbm.go b/vendor/github.com/docker/machine/drivers/virtualbox/vbm.go deleted file mode 100644 index ea6eb8d5..00000000 --- a/vendor/github.com/docker/machine/drivers/virtualbox/vbm.go +++ /dev/null @@ -1,165 +0,0 @@ -package virtualbox - -import ( - "bufio" - "bytes" - "errors" - "fmt" - "os/exec" - "regexp" - "strings" - - "strconv" - - "time" - - "github.com/docker/machine/libmachine/log" -) - -const ( - retryCountOnObjectNotReadyError = 5 - objectNotReady = "error: The object is not ready" - retryDelay = 100 * time.Millisecond -) - -var ( - reColonLine = regexp.MustCompile(`(.+):\s+(.*)`) - reEqualLine = regexp.MustCompile(`(.+)=(.*)`) - reEqualQuoteLine = regexp.MustCompile(`"(.+)"="(.*)"`) - reMachineNotFound = regexp.MustCompile(`Could not find a registered machine named '(.+)'`) - - ErrMachineNotExist = errors.New("machine does not exist") - ErrVBMNotFound = errors.New("VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path") - - vboxManageCmd = detectVBoxManageCmd() -) - -// VBoxManager defines the interface to communicate to VirtualBox. -type VBoxManager interface { - vbm(args ...string) error - - vbmOut(args ...string) (string, error) - - vbmOutErr(args ...string) (string, string, error) -} - -// VBoxCmdManager communicates with VirtualBox through the commandline using `VBoxManage`. -type VBoxCmdManager struct { - runCmd func(cmd *exec.Cmd) error -} - -// NewVBoxManager creates a VBoxManager instance. -func NewVBoxManager() *VBoxCmdManager { - return &VBoxCmdManager{ - runCmd: func(cmd *exec.Cmd) error { return cmd.Run() }, - } -} - -func (v *VBoxCmdManager) vbm(args ...string) error { - _, _, err := v.vbmOutErr(args...) - return err -} - -func (v *VBoxCmdManager) vbmOut(args ...string) (string, error) { - stdout, _, err := v.vbmOutErr(args...) - return stdout, err -} - -func (v *VBoxCmdManager) vbmOutErr(args ...string) (string, string, error) { - return v.vbmOutErrRetry(retryCountOnObjectNotReadyError, args...) -} - -func (v *VBoxCmdManager) vbmOutErrRetry(retry int, args ...string) (string, string, error) { - cmd := exec.Command(vboxManageCmd, args...) - log.Debugf("COMMAND: %v %v", vboxManageCmd, strings.Join(args, " ")) - var stdout bytes.Buffer - var stderr bytes.Buffer - cmd.Stdout = &stdout - cmd.Stderr = &stderr - err := v.runCmd(cmd) - stderrStr := stderr.String() - if len(args) > 0 { - log.Debugf("STDOUT:\n{\n%v}", stdout.String()) - log.Debugf("STDERR:\n{\n%v}", stderrStr) - } - - if err != nil { - if ee, ok := err.(*exec.Error); ok && ee.Err == exec.ErrNotFound { - err = ErrVBMNotFound - } - } - - // Sometimes, we just need to retry... - if retry > 1 { - if strings.Contains(stderrStr, objectNotReady) { - time.Sleep(retryDelay) - return v.vbmOutErrRetry(retry-1, args...) - } - } - - if err == nil || strings.HasPrefix(err.Error(), "exit status ") { - // VBoxManage will sometimes not set the return code, but has a fatal error - // such as VBoxManage.exe: error: VT-x is not available. (VERR_VMX_NO_VMX) - if strings.Contains(stderrStr, "error:") { - err = fmt.Errorf("%v %v failed:\n%v", vboxManageCmd, strings.Join(args, " "), stderrStr) - } - } - - return stdout.String(), stderrStr, err -} - -func checkVBoxManageVersion(version string) error { - major, minor, err := parseVersion(version) - if (err != nil) || (major < 4) || (major == 4 && minor <= 2) { - return fmt.Errorf("We support Virtualbox starting with version 5. Your VirtualBox install is %q. Please upgrade at https://www.virtualbox.org", version) - } - - if major < 5 { - log.Warnf("You are using version %s of VirtualBox. If you encounter issues, you might want to upgrade to version 5 at https://www.virtualbox.org", version) - } - - return nil -} - -func parseVersion(version string) (int, int, error) { - parts := strings.Split(version, ".") - if len(parts) < 2 { - return 0, 0, fmt.Errorf("Invalid version: %q", version) - } - - major, err := strconv.Atoi(parts[0]) - if err != nil { - return 0, 0, fmt.Errorf("Invalid version: %q", version) - } - - minor, err := strconv.Atoi(parts[1]) - if err != nil { - return 0, 0, fmt.Errorf("Invalid version: %q", version) - } - - return major, minor, err -} - -func parseKeyValues(stdOut string, regexp *regexp.Regexp, callback func(key, val string) error) error { - r := strings.NewReader(stdOut) - s := bufio.NewScanner(r) - - for s.Scan() { - line := s.Text() - if line == "" { - continue - } - - res := regexp.FindStringSubmatch(line) - if res == nil { - continue - } - - key, val := res[1], res[2] - if err := callback(key, val); err != nil { - return err - } - } - - return s.Err() -} diff --git a/vendor/github.com/docker/machine/drivers/virtualbox/vbm_test.go b/vendor/github.com/docker/machine/drivers/virtualbox/vbm_test.go deleted file mode 100644 index a1baa1b3..00000000 --- a/vendor/github.com/docker/machine/drivers/virtualbox/vbm_test.go +++ /dev/null @@ -1,142 +0,0 @@ -package virtualbox - -import ( - "testing" - - "os/exec" - - "errors" - - "fmt" - - "github.com/stretchr/testify/assert" -) - -func TestValidCheckVBoxManageVersion(t *testing.T) { - var tests = []struct { - version string - }{ - {"5.1"}, - {"5.0.8r103449"}, - {"5.0"}, - {"4.10"}, - {"4.3.1"}, - } - - for _, test := range tests { - err := checkVBoxManageVersion(test.version) - - assert.NoError(t, err) - } -} - -func TestInvalidCheckVBoxManageVersion(t *testing.T) { - var tests = []struct { - version string - expectedError string - }{ - {"3.9", `We support Virtualbox starting with version 5. Your VirtualBox install is "3.9". Please upgrade at https://www.virtualbox.org`}, - {"4.0", `We support Virtualbox starting with version 5. Your VirtualBox install is "4.0". Please upgrade at https://www.virtualbox.org`}, - {"4.1.1", `We support Virtualbox starting with version 5. Your VirtualBox install is "4.1.1". Please upgrade at https://www.virtualbox.org`}, - {"4.2.36-104064", `We support Virtualbox starting with version 5. Your VirtualBox install is "4.2.36-104064". Please upgrade at https://www.virtualbox.org`}, - {"X.Y", `We support Virtualbox starting with version 5. Your VirtualBox install is "X.Y". Please upgrade at https://www.virtualbox.org`}, - {"", `We support Virtualbox starting with version 5. Your VirtualBox install is "". Please upgrade at https://www.virtualbox.org`}, - } - - for _, test := range tests { - err := checkVBoxManageVersion(test.version) - - assert.EqualError(t, err, test.expectedError) - } -} - -func TestVbmOutErr(t *testing.T) { - var cmdRun *exec.Cmd - vBoxManager := NewVBoxManager() - vBoxManager.runCmd = func(cmd *exec.Cmd) error { - cmdRun = cmd - fmt.Fprint(cmd.Stdout, "Printed to StdOut") - fmt.Fprint(cmd.Stderr, "Printed to StdErr") - return nil - } - - stdOut, stdErr, err := vBoxManager.vbmOutErr("arg1", "arg2") - - assert.Equal(t, []string{vboxManageCmd, "arg1", "arg2"}, cmdRun.Args) - assert.Equal(t, "Printed to StdOut", stdOut) - assert.Equal(t, "Printed to StdErr", stdErr) - assert.NoError(t, err) -} - -func TestVbmOutErrError(t *testing.T) { - vBoxManager := NewVBoxManager() - vBoxManager.runCmd = func(cmd *exec.Cmd) error { return errors.New("BUG") } - - _, _, err := vBoxManager.vbmOutErr("arg1", "arg2") - - assert.EqualError(t, err, "BUG") -} - -func TestVbmOutErrNotFound(t *testing.T) { - vBoxManager := NewVBoxManager() - vBoxManager.runCmd = func(cmd *exec.Cmd) error { return &exec.Error{Err: exec.ErrNotFound} } - - _, _, err := vBoxManager.vbmOutErr("arg1", "arg2") - - assert.Equal(t, ErrVBMNotFound, err) -} - -func TestVbmOutErrFailingWithExitStatus(t *testing.T) { - vBoxManager := NewVBoxManager() - vBoxManager.runCmd = func(cmd *exec.Cmd) error { - fmt.Fprint(cmd.Stderr, "error: Unable to run vbox") - return errors.New("exit status BUG") - } - - _, _, err := vBoxManager.vbmOutErr("arg1", "arg2", "arg3") - - assert.EqualError(t, err, vboxManageCmd+" arg1 arg2 arg3 failed:\nerror: Unable to run vbox") -} - -func TestVbmOutErrRetryOnce(t *testing.T) { - var cmdRun *exec.Cmd - var runCount int - vBoxManager := NewVBoxManager() - vBoxManager.runCmd = func(cmd *exec.Cmd) error { - cmdRun = cmd - - runCount++ - if runCount == 1 { - fmt.Fprint(cmd.Stderr, "error: The object is not ready") - return errors.New("Fail the first time it's called") - } - - fmt.Fprint(cmd.Stdout, "Printed to StdOut") - return nil - } - - stdOut, stdErr, err := vBoxManager.vbmOutErr("command", "arg") - - assert.Equal(t, 2, runCount) - assert.Equal(t, []string{vboxManageCmd, "command", "arg"}, cmdRun.Args) - assert.Equal(t, "Printed to StdOut", stdOut) - assert.Empty(t, stdErr) - assert.NoError(t, err) -} - -func TestVbmOutErrRetryMax(t *testing.T) { - var runCount int - vBoxManager := NewVBoxManager() - vBoxManager.runCmd = func(cmd *exec.Cmd) error { - runCount++ - fmt.Fprint(cmd.Stderr, "error: The object is not ready") - return errors.New("Always fail") - } - - stdOut, stdErr, err := vBoxManager.vbmOutErr("command", "arg") - - assert.Equal(t, 5, runCount) - assert.Empty(t, stdOut) - assert.Equal(t, "error: The object is not ready", stdErr) - assert.Error(t, err) -} diff --git a/vendor/github.com/docker/machine/drivers/virtualbox/virtualbox.go b/vendor/github.com/docker/machine/drivers/virtualbox/virtualbox.go deleted file mode 100644 index ddd7e907..00000000 --- a/vendor/github.com/docker/machine/drivers/virtualbox/virtualbox.go +++ /dev/null @@ -1,972 +0,0 @@ -package virtualbox - -import ( - "errors" - "fmt" - "net" - "os" - "os/exec" - "path/filepath" - "regexp" - "runtime" - "strconv" - "strings" - "time" - - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnflag" - "github.com/docker/machine/libmachine/mcnutils" - "github.com/docker/machine/libmachine/state" -) - -const ( - defaultCPU = 1 - defaultMemory = 1024 - defaultBoot2DockerURL = "" - defaultBoot2DockerImportVM = "" - defaultHostOnlyCIDR = "192.168.99.1/24" - defaultHostOnlyNictype = "82540EM" - defaultHostOnlyPromiscMode = "deny" - defaultUIType = "headless" - defaultDiskSize = 20000 - defaultDNSProxy = true - defaultDNSResolver = false -) - -var ( - ErrUnableToGenerateRandomIP = errors.New("unable to generate random IP") - ErrMustEnableVTX = errors.New("This computer doesn't have VT-X/AMD-v enabled. Enabling it in the BIOS is mandatory") - ErrNotCompatibleWithHyperV = errors.New("This computer is running Hyper-V. VirtualBox won't boot a 64bits VM when Hyper-V is activated. Either use Hyper-V as a driver, or disable the Hyper-V hypervisor. (To skip this check, use --virtualbox-no-vtx-check)") - ErrNetworkAddrCidr = errors.New("host-only cidr must be specified with a host address, not a network address") - ErrNetworkAddrCollision = errors.New("host-only cidr conflicts with the network address of a host interface") -) - -type Driver struct { - *drivers.BaseDriver - VBoxManager - HostInterfaces - b2dUpdater B2DUpdater - sshKeyGenerator SSHKeyGenerator - diskCreator DiskCreator - logsReader LogsReader - ipWaiter IPWaiter - randomInter RandomInter - sleeper Sleeper - CPU int - Memory int - DiskSize int - NatNicType string - Boot2DockerURL string - Boot2DockerImportVM string - HostDNSResolver bool - HostOnlyCIDR string - HostOnlyNicType string - HostOnlyPromiscMode string - UIType string - NoShare bool - DNSProxy bool - NoVTXCheck bool -} - -// NewDriver creates a new VirtualBox driver with default settings. -func NewDriver(hostName, storePath string) *Driver { - return &Driver{ - VBoxManager: NewVBoxManager(), - b2dUpdater: NewB2DUpdater(), - sshKeyGenerator: NewSSHKeyGenerator(), - diskCreator: NewDiskCreator(), - logsReader: NewLogsReader(), - ipWaiter: NewIPWaiter(), - randomInter: NewRandomInter(), - sleeper: NewSleeper(), - HostInterfaces: NewHostInterfaces(), - Memory: defaultMemory, - CPU: defaultCPU, - DiskSize: defaultDiskSize, - NatNicType: defaultHostOnlyNictype, - HostOnlyCIDR: defaultHostOnlyCIDR, - HostOnlyNicType: defaultHostOnlyNictype, - HostOnlyPromiscMode: defaultHostOnlyPromiscMode, - UIType: defaultUIType, - DNSProxy: defaultDNSProxy, - HostDNSResolver: defaultDNSResolver, - BaseDriver: &drivers.BaseDriver{ - MachineName: hostName, - StorePath: storePath, - }, - } -} - -// GetCreateFlags registers the flags this driver adds to -// "docker hosts create" -func (d *Driver) GetCreateFlags() []mcnflag.Flag { - return []mcnflag.Flag{ - mcnflag.IntFlag{ - Name: "virtualbox-memory", - Usage: "Size of memory for host in MB", - Value: defaultMemory, - EnvVar: "VIRTUALBOX_MEMORY_SIZE", - }, - mcnflag.IntFlag{ - Name: "virtualbox-cpu-count", - Usage: "number of CPUs for the machine (-1 to use the number of CPUs available)", - Value: defaultCPU, - EnvVar: "VIRTUALBOX_CPU_COUNT", - }, - mcnflag.IntFlag{ - Name: "virtualbox-disk-size", - Usage: "Size of disk for host in MB", - Value: defaultDiskSize, - EnvVar: "VIRTUALBOX_DISK_SIZE", - }, - mcnflag.StringFlag{ - Name: "virtualbox-boot2docker-url", - Usage: "The URL of the boot2docker image. Defaults to the latest available version", - Value: defaultBoot2DockerURL, - EnvVar: "VIRTUALBOX_BOOT2DOCKER_URL", - }, - mcnflag.StringFlag{ - Name: "virtualbox-import-boot2docker-vm", - Usage: "The name of a Boot2Docker VM to import", - Value: defaultBoot2DockerImportVM, - EnvVar: "VIRTUALBOX_BOOT2DOCKER_IMPORT_VM", - }, - mcnflag.BoolFlag{ - Name: "virtualbox-host-dns-resolver", - Usage: "Use the host DNS resolver", - EnvVar: "VIRTUALBOX_HOST_DNS_RESOLVER", - }, - mcnflag.StringFlag{ - Name: "virtualbox-nat-nictype", - Usage: "Specify the Network Adapter Type", - Value: defaultHostOnlyNictype, - EnvVar: "VIRTUALBOX_NAT_NICTYPE", - }, - mcnflag.StringFlag{ - Name: "virtualbox-hostonly-cidr", - Usage: "Specify the Host Only CIDR", - Value: defaultHostOnlyCIDR, - EnvVar: "VIRTUALBOX_HOSTONLY_CIDR", - }, - mcnflag.StringFlag{ - Name: "virtualbox-hostonly-nictype", - Usage: "Specify the Host Only Network Adapter Type", - Value: defaultHostOnlyNictype, - EnvVar: "VIRTUALBOX_HOSTONLY_NIC_TYPE", - }, - mcnflag.StringFlag{ - Name: "virtualbox-hostonly-nicpromisc", - Usage: "Specify the Host Only Network Adapter Promiscuous Mode", - Value: defaultHostOnlyPromiscMode, - EnvVar: "VIRTUALBOX_HOSTONLY_NIC_PROMISC", - }, - mcnflag.StringFlag{ - Name: "virtualbox-ui-type", - Usage: "Specify the UI Type: (gui|sdl|headless|separate)", - Value: defaultUIType, - EnvVar: "VIRTUALBOX_UI_TYPE", - }, - mcnflag.BoolFlag{ - Name: "virtualbox-no-share", - Usage: "Disable the mount of your home directory", - EnvVar: "VIRTUALBOX_NO_SHARE", - }, - mcnflag.BoolFlag{ - Name: "virtualbox-no-dns-proxy", - Usage: "Disable proxying all DNS requests to the host", - EnvVar: "VIRTUALBOX_NO_DNS_PROXY", - }, - mcnflag.BoolFlag{ - Name: "virtualbox-no-vtx-check", - Usage: "Disable checking for the availability of hardware virtualization before the vm is started", - EnvVar: "VIRTUALBOX_NO_VTX_CHECK", - }, - } -} - -func (d *Driver) GetSSHHostname() (string, error) { - return "127.0.0.1", nil -} - -func (d *Driver) GetSSHUsername() string { - if d.SSHUser == "" { - d.SSHUser = "docker" - } - - return d.SSHUser -} - -// DriverName returns the name of the driver -func (d *Driver) DriverName() string { - return "virtualbox" -} - -func (d *Driver) GetURL() (string, error) { - ip, err := d.GetIP() - if err != nil { - return "", err - } - if ip == "" { - return "", nil - } - return fmt.Sprintf("tcp://%s:2376", ip), nil -} - -func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error { - if drivers.EngineInstallURLFlagSet(flags) { - return errors.New("--engine-install-url cannot be used with the virtualbox driver, use --virtualbox-boot2docker-url instead") - } - d.CPU = flags.Int("virtualbox-cpu-count") - d.Memory = flags.Int("virtualbox-memory") - d.DiskSize = flags.Int("virtualbox-disk-size") - d.Boot2DockerURL = flags.String("virtualbox-boot2docker-url") - d.SetSwarmConfigFromFlags(flags) - d.SSHUser = "docker" - d.Boot2DockerImportVM = flags.String("virtualbox-import-boot2docker-vm") - d.HostDNSResolver = flags.Bool("virtualbox-host-dns-resolver") - d.NatNicType = flags.String("virtualbox-nat-nictype") - d.HostOnlyCIDR = flags.String("virtualbox-hostonly-cidr") - d.HostOnlyNicType = flags.String("virtualbox-hostonly-nictype") - d.HostOnlyPromiscMode = flags.String("virtualbox-hostonly-nicpromisc") - d.UIType = flags.String("virtualbox-ui-type") - d.NoShare = flags.Bool("virtualbox-no-share") - d.DNSProxy = !flags.Bool("virtualbox-no-dns-proxy") - d.NoVTXCheck = flags.Bool("virtualbox-no-vtx-check") - - return nil -} - -// PreCreateCheck checks that VBoxManage exists and works -func (d *Driver) PreCreateCheck() error { - // Check that VBoxManage exists and works - version, err := d.vbmOut("--version") - if err != nil { - return err - } - - // Check that VBoxManage is of a supported version - if err = checkVBoxManageVersion(strings.TrimSpace(version)); err != nil { - return err - } - - if !d.NoVTXCheck { - if isHyperVInstalled() { - return ErrNotCompatibleWithHyperV - } - - if d.IsVTXDisabled() { - return ErrMustEnableVTX - } - } - - // Downloading boot2docker to cache should be done here to make sure - // that a download failure will not leave a machine half created. - if err := d.b2dUpdater.UpdateISOCache(d.StorePath, d.Boot2DockerURL); err != nil { - return err - } - - // Check that Host-only interfaces are ok - if _, err = listHostOnlyAdapters(d.VBoxManager); err != nil { - return err - } - - return nil -} - -func (d *Driver) Create() error { - if err := d.CreateVM(); err != nil { - return err - } - - log.Info("Starting the VM...") - return d.Start() -} - -func (d *Driver) CreateVM() error { - if err := d.b2dUpdater.CopyIsoToMachineDir(d.StorePath, d.MachineName, d.Boot2DockerURL); err != nil { - return err - } - - log.Info("Creating VirtualBox VM...") - - // import b2d VM if requested - if d.Boot2DockerImportVM != "" { - name := d.Boot2DockerImportVM - - // make sure vm is stopped - _ = d.vbm("controlvm", name, "poweroff") - - diskInfo, err := getVMDiskInfo(name, d.VBoxManager) - if err != nil { - return err - } - - if _, err := os.Stat(diskInfo.Path); err != nil { - return err - } - - if err := d.vbm("clonehd", diskInfo.Path, d.diskPath()); err != nil { - return err - } - - log.Debugf("Importing VM settings...") - vmInfo, err := getVMInfo(name, d.VBoxManager) - if err != nil { - return err - } - - d.CPU = vmInfo.CPUs - d.Memory = vmInfo.Memory - - log.Debugf("Importing SSH key...") - keyPath := filepath.Join(mcnutils.GetHomeDir(), ".ssh", "id_boot2docker") - if err := mcnutils.CopyFile(keyPath, d.GetSSHKeyPath()); err != nil { - return err - } - } else { - log.Infof("Creating SSH key...") - if err := d.sshKeyGenerator.Generate(d.GetSSHKeyPath()); err != nil { - return err - } - - log.Debugf("Creating disk image...") - if err := d.diskCreator.Create(d.DiskSize, d.publicSSHKeyPath(), d.diskPath()); err != nil { - return err - } - } - - if err := d.vbm("createvm", - "--basefolder", d.ResolveStorePath("."), - "--name", d.MachineName, - "--register"); err != nil { - return err - } - - log.Debugf("VM CPUS: %d", d.CPU) - log.Debugf("VM Memory: %d", d.Memory) - - cpus := d.CPU - if cpus < 1 { - cpus = int(runtime.NumCPU()) - } - if cpus > 32 { - cpus = 32 - } - - hostDNSResolver := "off" - if d.HostDNSResolver { - hostDNSResolver = "on" - } - - dnsProxy := "off" - if d.DNSProxy { - dnsProxy = "on" - } - - var modifyFlags = []string{ - "modifyvm", d.MachineName, - "--firmware", "bios", - "--bioslogofadein", "off", - "--bioslogofadeout", "off", - "--bioslogodisplaytime", "0", - "--biosbootmenu", "disabled", - "--ostype", "Linux26_64", - "--cpus", fmt.Sprintf("%d", cpus), - "--memory", fmt.Sprintf("%d", d.Memory), - "--acpi", "on", - "--ioapic", "on", - "--rtcuseutc", "on", - "--natdnshostresolver1", hostDNSResolver, - "--natdnsproxy1", dnsProxy, - "--cpuhotplug", "off", - "--pae", "on", - "--hpet", "on", - "--hwvirtex", "on", - "--nestedpaging", "on", - "--largepages", "on", - "--vtxvpid", "on", - "--accelerate3d", "off", - "--boot1", "dvd"} - - if runtime.GOOS == "windows" && runtime.GOARCH == "386" { - modifyFlags = append(modifyFlags, "--longmode", "on") - } - - if err := d.vbm(modifyFlags...); err != nil { - return err - } - - if err := d.vbm("modifyvm", d.MachineName, - "--nic1", "nat", - "--nictype1", d.NatNicType, - "--cableconnected1", "on"); err != nil { - return err - } - - if err := d.vbm("storagectl", d.MachineName, - "--name", "SATA", - "--add", "sata", - "--hostiocache", "on"); err != nil { - return err - } - - if err := d.vbm("storageattach", d.MachineName, - "--storagectl", "SATA", - "--port", "0", - "--device", "0", - "--type", "dvddrive", - "--medium", d.ResolveStorePath("boot2docker.iso")); err != nil { - return err - } - - if err := d.vbm("storageattach", d.MachineName, - "--storagectl", "SATA", - "--port", "1", - "--device", "0", - "--type", "hdd", - "--medium", d.diskPath()); err != nil { - return err - } - - // let VBoxService do nice magic automounting (when it's used) - if err := d.vbm("guestproperty", "set", d.MachineName, "/VirtualBox/GuestAdd/SharedFolders/MountPrefix", "/"); err != nil { - return err - } - if err := d.vbm("guestproperty", "set", d.MachineName, "/VirtualBox/GuestAdd/SharedFolders/MountDir", "/"); err != nil { - return err - } - - shareName, shareDir := getShareDriveAndName() - - if shareDir != "" && !d.NoShare { - log.Debugf("setting up shareDir") - if _, err := os.Stat(shareDir); err != nil && !os.IsNotExist(err) { - return err - } else if !os.IsNotExist(err) { - if shareName == "" { - // parts of the VBox internal code are buggy with share names that start with "/" - shareName = strings.TrimLeft(shareDir, "/") - // TODO do some basic Windows -> MSYS path conversion - // ie, s!^([a-z]+):[/\\]+!\1/!; s!\\!/!g - } - - // woo, shareDir exists! let's carry on! - if err := d.vbm("sharedfolder", "add", d.MachineName, "--name", shareName, "--hostpath", shareDir, "--automount"); err != nil { - return err - } - - // enable symlinks - if err := d.vbm("setextradata", d.MachineName, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/"+shareName, "1"); err != nil { - return err - } - } - } - - return nil -} - -func (d *Driver) hostOnlyIPAvailable() bool { - ip, err := d.GetIP() - if err != nil { - log.Debugf("ERROR getting IP: %s", err) - return false - } - if ip == "" { - log.Debug("Strangely, there was no error attempting to get the IP, but it was still empty.") - return false - } - - log.Debugf("IP is %s", ip) - return true -} - -func (d *Driver) Start() error { - s, err := d.GetState() - if err != nil { - return err - } - - var hostOnlyAdapter *hostOnlyNetwork - if s == state.Stopped { - log.Infof("Check network to re-create if needed...") - - if hostOnlyAdapter, err = d.setupHostOnlyNetwork(d.MachineName); err != nil { - return fmt.Errorf("Error setting up host only network on machine start: %s", err) - } - } - - switch s { - case state.Stopped, state.Saved: - d.SSHPort, err = setPortForwarding(d, 1, "ssh", "tcp", 22, d.SSHPort) - if err != nil { - return err - } - - if err := d.vbm("startvm", d.MachineName, "--type", d.UIType); err != nil { - if lines, readErr := d.readVBoxLog(); readErr == nil && len(lines) > 0 { - return fmt.Errorf("Unable to start the VM: %s\nDetails: %s", err, lines[len(lines)-1]) - } - return fmt.Errorf("Unable to start the VM: %s", err) - } - case state.Paused: - if err := d.vbm("controlvm", d.MachineName, "resume", "--type", d.UIType); err != nil { - return err - } - log.Infof("Resuming VM ...") - default: - log.Infof("VM not in restartable state") - } - - if !d.NoVTXCheck { - // Verify that VT-X is not disabled in the started VM - vtxIsDisabled, err := d.IsVTXDisabledInTheVM() - if err != nil { - return fmt.Errorf("Checking if hardware virtualization is enabled failed: %s", err) - } - - if vtxIsDisabled { - return ErrMustEnableVTX - } - } - - log.Infof("Waiting for an IP...") - if err := d.ipWaiter.Wait(d); err != nil { - return err - } - - if hostOnlyAdapter == nil { - return nil - } - - // Check that the host-only adapter we just created can still be found - // Sometimes it is corrupted after the VM is started. - nets, err := listHostOnlyAdapters(d.VBoxManager) - if err != nil { - return err - } - - ip, network, err := parseAndValidateCIDR(d.HostOnlyCIDR) - if err != nil { - return err - } - - err = validateNoIPCollisions(d.HostInterfaces, network, nets) - if err != nil { - return err - } - - hostOnlyNet := getHostOnlyAdapter(nets, ip, network.Mask) - if hostOnlyNet != nil { - // OK, we found a valid host-only adapter - return nil - } - - // This happens a lot on windows. The adapter has an invalid IP and the VM has the same IP - log.Warn("The host-only adapter is corrupted. Let's stop the VM, fix the host-only adapter and restart the VM") - if err := d.Stop(); err != nil { - return err - } - - // We have to be sure the host-only adapter is not used by the VM - d.sleeper.Sleep(5 * time.Second) - - log.Debugf("Fixing %+v...", hostOnlyAdapter) - if err := hostOnlyAdapter.SaveIPv4(d.VBoxManager); err != nil { - return err - } - - // We have to be sure the adapter is updated before starting the VM - d.sleeper.Sleep(5 * time.Second) - - if err := d.vbm("startvm", d.MachineName, "--type", d.UIType); err != nil { - return fmt.Errorf("Unable to start the VM: %s", err) - } - - log.Infof("Waiting for an IP...") - return d.ipWaiter.Wait(d) -} - -func (d *Driver) Stop() error { - currentState, err := d.GetState() - if err != nil { - return err - } - - if currentState == state.Paused { - if err := d.vbm("controlvm", d.MachineName, "resume"); err != nil { // , "--type", d.UIType - return err - } - log.Infof("Resuming VM ...") - } - - if err := d.vbm("controlvm", d.MachineName, "acpipowerbutton"); err != nil { - return err - } - for { - s, err := d.GetState() - if err != nil { - return err - } - if s == state.Running { - d.sleeper.Sleep(1 * time.Second) - } else { - break - } - } - - d.IPAddress = "" - - return nil -} - -// Restart restarts a machine which is known to be running. -func (d *Driver) Restart() error { - if err := d.Stop(); err != nil { - return fmt.Errorf("Problem stopping the VM: %s", err) - } - - if err := d.Start(); err != nil { - return fmt.Errorf("Problem starting the VM: %s", err) - } - - d.IPAddress = "" - - return d.ipWaiter.Wait(d) -} - -func (d *Driver) Kill() error { - return d.vbm("controlvm", d.MachineName, "poweroff") -} - -func (d *Driver) Remove() error { - s, err := d.GetState() - if err == ErrMachineNotExist { - return nil - } - if err != nil { - return err - } - - if s != state.Stopped && s != state.Saved { - if err := d.Kill(); err != nil { - return err - } - } - - return d.vbm("unregistervm", "--delete", d.MachineName) -} - -func (d *Driver) GetState() (state.State, error) { - stdout, stderr, err := d.vbmOutErr("showvminfo", d.MachineName, "--machinereadable") - if err != nil { - if reMachineNotFound.FindString(stderr) != "" { - return state.Error, ErrMachineNotExist - } - return state.Error, err - } - re := regexp.MustCompile(`(?m)^VMState="(\w+)"`) - groups := re.FindStringSubmatch(stdout) - if len(groups) < 1 { - return state.None, nil - } - switch groups[1] { - case "running": - return state.Running, nil - case "paused": - return state.Paused, nil - case "saved": - return state.Saved, nil - case "poweroff", "aborted": - return state.Stopped, nil - } - return state.None, nil -} - -func (d *Driver) getHostOnlyMACAddress() (string, error) { - // Return the MAC address of the host-only adapter - // assigned to this machine. The returned address - // is lower-cased and does not contain colons. - - stdout, stderr, err := d.vbmOutErr("showvminfo", d.MachineName, "--machinereadable") - if err != nil { - if reMachineNotFound.FindString(stderr) != "" { - return "", ErrMachineNotExist - } - return "", err - } - - // First, we get the number of the host-only interface - re := regexp.MustCompile(`(?m)^hostonlyadapter([\d]+)`) - groups := re.FindStringSubmatch(stdout) - if len(groups) < 2 { - return "", errors.New("Machine does not have a host-only adapter") - } - - // Then we grab the MAC address based on that number - adapterNumber := groups[1] - re = regexp.MustCompile(fmt.Sprintf("(?m)^macaddress%s=\"(.*)\"", adapterNumber)) - groups = re.FindStringSubmatch(stdout) - if len(groups) < 2 { - return "", fmt.Errorf("Could not find MAC address for adapter %v", adapterNumber) - } - - return strings.ToLower(groups[1]), nil -} - -func (d *Driver) parseIPForMACFromIPAddr(ipAddrOutput string, macAddress string) (string, error) { - // Given the output of "ip addr show" on the VM, return the IPv4 address - // of the interface with the given MAC address. - - lines := strings.Split(ipAddrOutput, "\n") - returnNextIP := false - - for _, line := range lines { - line = strings.TrimSpace(line) - - if strings.HasPrefix(line, "link") { // line contains MAC address - vals := strings.Split(line, " ") - if len(vals) >= 2 { - macBlock := vals[1] - macWithoutColons := strings.Replace(macBlock, ":", "", -1) - if macWithoutColons == macAddress { // we are in the correct device block - returnNextIP = true - } - } - } else if strings.HasPrefix(line, "inet") && !strings.HasPrefix(line, "inet6") && returnNextIP { - vals := strings.Split(line, " ") - if len(vals) >= 2 { - return vals[1][:strings.Index(vals[1], "/")], nil - } - } - } - - return "", fmt.Errorf("Could not find matching IP for MAC address %v", macAddress) -} - -func (d *Driver) GetIP() (string, error) { - // DHCP is used to get the IP, so virtualbox hosts don't have IPs unless - // they are running - s, err := d.GetState() - if err != nil { - return "", err - } - if s != state.Running { - return "", drivers.ErrHostIsNotRunning - } - - macAddress, err := d.getHostOnlyMACAddress() - if err != nil { - return "", err - } - - log.Debugf("Host-only MAC: %s\n", macAddress) - - output, err := drivers.RunSSHCommandFromDriver(d, "ip addr show") - if err != nil { - return "", err - } - - log.Debugf("SSH returned: %s\nEND SSH\n", output) - - ipAddress, err := d.parseIPForMACFromIPAddr(output, macAddress) - if err != nil { - return "", err - } - - return ipAddress, nil -} - -func (d *Driver) publicSSHKeyPath() string { - return d.GetSSHKeyPath() + ".pub" -} - -func (d *Driver) diskPath() string { - return d.ResolveStorePath("disk.vmdk") -} - -func (d *Driver) setupHostOnlyNetwork(machineName string) (*hostOnlyNetwork, error) { - hostOnlyCIDR := d.HostOnlyCIDR - - // This is to assist in migrating from version 0.2 to 0.3 format - // it should be removed in a later release - if hostOnlyCIDR == "" { - hostOnlyCIDR = defaultHostOnlyCIDR - } - - ip, network, err := parseAndValidateCIDR(hostOnlyCIDR) - if err != nil { - return nil, err - } - - nets, err := listHostOnlyAdapters(d.VBoxManager) - if err != nil { - return nil, err - } - - err = validateNoIPCollisions(d.HostInterfaces, network, nets) - if err != nil { - return nil, err - } - - log.Debugf("Searching for hostonly interface for IPv4: %s and Mask: %s", ip, network.Mask) - hostOnlyAdapter, err := getOrCreateHostOnlyNetwork(ip, network.Mask, nets, d.VBoxManager) - if err != nil { - return nil, err - } - - if err := removeOrphanDHCPServers(d.VBoxManager); err != nil { - return nil, err - } - - dhcpAddr, err := getRandomIPinSubnet(d, ip) - if err != nil { - return nil, err - } - - log.Debugf("Adding/Modifying DHCP server %q...", dhcpAddr) - nAddr := network.IP.To4() - - dhcp := dhcpServer{} - dhcp.IPv4.IP = dhcpAddr - dhcp.IPv4.Mask = network.Mask - dhcp.LowerIP = net.IPv4(nAddr[0], nAddr[1], nAddr[2], byte(100)) - dhcp.UpperIP = net.IPv4(nAddr[0], nAddr[1], nAddr[2], byte(254)) - dhcp.Enabled = true - if err := addHostOnlyDHCPServer(hostOnlyAdapter.Name, dhcp, d.VBoxManager); err != nil { - return nil, err - } - - if err := d.vbm("modifyvm", machineName, - "--nic2", "hostonly", - "--nictype2", d.HostOnlyNicType, - "--nicpromisc2", d.HostOnlyPromiscMode, - "--hostonlyadapter2", hostOnlyAdapter.Name, - "--cableconnected2", "on"); err != nil { - return nil, err - } - - return hostOnlyAdapter, nil -} - -func parseAndValidateCIDR(hostOnlyCIDR string) (net.IP, *net.IPNet, error) { - ip, network, err := net.ParseCIDR(hostOnlyCIDR) - if err != nil { - return nil, nil, err - } - - networkAddress := network.IP.To4() - if ip.Equal(networkAddress) { - return nil, nil, ErrNetworkAddrCidr - } - - return ip, network, nil -} - -// validateNoIPCollisions ensures no conflicts between the host's network interfaces and the vbox host-only network that -// will be used for machine vm instances. -func validateNoIPCollisions(hif HostInterfaces, hostOnlyNet *net.IPNet, currHostOnlyNets map[string]*hostOnlyNetwork) error { - hostOnlyByCIDR := map[string]*hostOnlyNetwork{} - //listHostOnlyAdapters returns a map w/ virtualbox net names as key. Rekey to CIDRs - for _, n := range currHostOnlyNets { - ipnet := net.IPNet{IP: n.IPv4.IP, Mask: n.IPv4.Mask} - hostOnlyByCIDR[ipnet.String()] = n - } - - m, err := listHostInterfaces(hif, hostOnlyByCIDR) - if err != nil { - return err - } - - collision, err := checkIPNetCollision(hostOnlyNet, m) - if err != nil { - return err - } - - if collision { - return ErrNetworkAddrCollision - } - return nil -} - -// Select an available port, trying the specified -// port first, falling back on an OS selected port. -func getAvailableTCPPort(port int) (int, error) { - for i := 0; i <= 10; i++ { - ln, err := net.Listen("tcp4", fmt.Sprintf("127.0.0.1:%d", port)) - if err != nil { - return 0, err - } - defer ln.Close() - addr := ln.Addr().String() - addrParts := strings.SplitN(addr, ":", 2) - p, err := strconv.Atoi(addrParts[1]) - if err != nil { - return 0, err - } - if p != 0 { - port = p - return port, nil - } - port = 0 // Throw away the port hint before trying again - time.Sleep(1) - } - return 0, fmt.Errorf("unable to allocate tcp port") -} - -// Setup a NAT port forwarding entry. -func setPortForwarding(d *Driver, interfaceNum int, mapName, protocol string, guestPort, desiredHostPort int) (int, error) { - actualHostPort, err := getAvailableTCPPort(desiredHostPort) - if err != nil { - return -1, err - } - if desiredHostPort != actualHostPort && desiredHostPort != 0 { - log.Debugf("NAT forwarding host port for guest port %d (%s) changed from %d to %d", - guestPort, mapName, desiredHostPort, actualHostPort) - } - cmd := fmt.Sprintf("--natpf%d", interfaceNum) - d.vbm("modifyvm", d.MachineName, cmd, "delete", mapName) - if err := d.vbm("modifyvm", d.MachineName, - cmd, fmt.Sprintf("%s,%s,127.0.0.1,%d,,%d", mapName, protocol, actualHostPort, guestPort)); err != nil { - return -1, err - } - return actualHostPort, nil -} - -// getRandomIPinSubnet returns a pseudo-random net.IP in the same -// subnet as the IP passed -func getRandomIPinSubnet(d *Driver, baseIP net.IP) (net.IP, error) { - var dhcpAddr net.IP - - nAddr := baseIP.To4() - // select pseudo-random DHCP addr; make sure not to clash with the host - // only try 5 times and bail if no random received - for i := 0; i < 5; i++ { - n := d.randomInter.RandomInt(25) - if byte(n) != nAddr[3] { - dhcpAddr = net.IPv4(nAddr[0], nAddr[1], nAddr[2], byte(n)) - break - } - } - - if dhcpAddr == nil { - return nil, ErrUnableToGenerateRandomIP - } - - return dhcpAddr, nil -} - -func detectVBoxManageCmdInPath() string { - cmd := "VBoxManage" - if path, err := exec.LookPath(cmd); err == nil { - return path - } - return cmd -} - -func (d *Driver) readVBoxLog() ([]string, error) { - logPath := filepath.Join(d.ResolveStorePath(d.MachineName), "Logs", "VBox.log") - log.Debugf("Checking vm logs: %s", logPath) - - return d.logsReader.Read(logPath) -} diff --git a/vendor/github.com/docker/machine/drivers/virtualbox/virtualbox_darwin.go b/vendor/github.com/docker/machine/drivers/virtualbox/virtualbox_darwin.go deleted file mode 100644 index 6c100e16..00000000 --- a/vendor/github.com/docker/machine/drivers/virtualbox/virtualbox_darwin.go +++ /dev/null @@ -1,35 +0,0 @@ -package virtualbox - -import ( - "strings" - "syscall" - - "github.com/docker/machine/libmachine/log" -) - -// IsVTXDisabled checks if VT-X is disabled in the BIOS. If it is, the vm will fail to start. -// If we can't be sure it is disabled, we carry on and will check the vm logs after it's started. -func (d *Driver) IsVTXDisabled() bool { - features, err := syscall.Sysctl("machdep.cpu.features") - if err != nil { - log.Debugf("Couldn't check that VT-X/AMD-v is enabled. Will check that the vm is properly created: %v", err) - return false - } - return isVTXDisabled(features) -} - -func isVTXDisabled(features string) bool { - return !strings.Contains(features, "VMX") -} - -func detectVBoxManageCmd() string { - return detectVBoxManageCmdInPath() -} - -func getShareDriveAndName() (string, string) { - return "Users", "/Users" -} - -func isHyperVInstalled() bool { - return false -} diff --git a/vendor/github.com/docker/machine/drivers/virtualbox/virtualbox_darwin_test.go b/vendor/github.com/docker/machine/drivers/virtualbox/virtualbox_darwin_test.go deleted file mode 100644 index b1e840e8..00000000 --- a/vendor/github.com/docker/machine/drivers/virtualbox/virtualbox_darwin_test.go +++ /dev/null @@ -1,25 +0,0 @@ -package virtualbox - -import ( - "testing" - - "github.com/stretchr/testify/assert" -) - -const ( - featuresWithVMX = "FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 VMX PBE SSE3 PCLMULQDQ DTES64 AVX1.0 RDRAND F16C" - featuresNoVMX = "FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 PBE SSE3 PCLMULQDQ DTES64 AVX1.0 RDRAND F16C" -) - -func TestShareName(t *testing.T) { - name, dir := getShareDriveAndName() - - assert.Equal(t, name, "Users") - assert.Equal(t, dir, "/Users") - -} - -func TestIsVTXEnabled(t *testing.T) { - assert.False(t, isVTXDisabled(featuresWithVMX)) - assert.True(t, isVTXDisabled(featuresNoVMX)) -} diff --git a/vendor/github.com/docker/machine/drivers/virtualbox/virtualbox_linux.go b/vendor/github.com/docker/machine/drivers/virtualbox/virtualbox_linux.go deleted file mode 100644 index 0631ed51..00000000 --- a/vendor/github.com/docker/machine/drivers/virtualbox/virtualbox_linux.go +++ /dev/null @@ -1,45 +0,0 @@ -package virtualbox - -import ( - "bytes" - "io/ioutil" - - "github.com/docker/machine/libmachine/log" -) - -// IsVTXDisabled checks if VT-X is disabled in the BIOS. If it is, the vm will fail to start. -// If we can't be sure it is disabled, we carry on and will check the vm logs after it's started. -// We want to check that either vmx or svm flags are present in /proc/cpuinfo. -func (d *Driver) IsVTXDisabled() bool { - cpuinfo, err := ioutil.ReadFile("/proc/cpuinfo") - if err != nil { - log.Debugf("Couldn't check that VT-X/AMD-v is enabled. Will check that the vm is properly created: %v", err) - return false - } - return isVTXDisabled(cpuinfo) -} - -func isVTXDisabled(cpuinfo []byte) bool { - features := [2][]byte{ - {'v', 'm', 'x'}, - {'s', 'v', 'm'}, - } - for _, v := range features { - if bytes.Contains(cpuinfo, v) { - return false - } - } - return true -} - -func detectVBoxManageCmd() string { - return detectVBoxManageCmdInPath() -} - -func getShareDriveAndName() (string, string) { - return "hosthome", "/home" -} - -func isHyperVInstalled() bool { - return false -} diff --git a/vendor/github.com/docker/machine/drivers/virtualbox/virtualbox_linux_test.go b/vendor/github.com/docker/machine/drivers/virtualbox/virtualbox_linux_test.go deleted file mode 100644 index da4d4529..00000000 --- a/vendor/github.com/docker/machine/drivers/virtualbox/virtualbox_linux_test.go +++ /dev/null @@ -1,115 +0,0 @@ -package virtualbox - -import ( - "testing" - - "github.com/stretchr/testify/assert" -) - -const ( - amdCPUInfo = ` -processor : 0 -vendor_id : AuthenticAMD -cpu family : 20 -model : 1 -model name : AMD C-50 Processor -stepping : 0 -microcode : 0x5000026 -cpu MHz : 800.000 -cache size : 512 KB -physical id : 0 -siblings : 2 -core id : 0 -cpu cores : 2 -apicid : 0 -initial apicid : 0 -fpu : yes -fpu_exception : yes -cpuid level : 6 -wp : yes -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni monitor ssse3 cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch ibs skinit wdt arat hw_pstate npt lbrv svm_lock nrip_save pausefilter vmmcall -bugs : fxsave_leak sysret_ss_attrs -bogomips : 1995.09 -TLB size : 1024 4K pages -clflush size : 64 -cache_alignment : 64 -address sizes : 36 bits physical, 48 bits virtual -power management: ts ttp tm stc 100mhzsteps hwpstate -` - intelCPUInfo = ` -processor : 0 -vendor_id : GenuineIntel -cpu family : 6 -model : 70 -model name : Intel(R) Core(TM) i7-4850HQ CPU @ 2.30GHz -stepping : 1 -microcode : 0x19 -cpu MHz : 2294.688 -cache size : 6144 KB -physical id : 0 -siblings : 1 -core id : 0 -cpu cores : 1 -apicid : 0 -initial apicid : 0 -fpu : yes -fpu_exception : yes -cpuid level : 13 -wp : yes -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr vmx pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc pni pclmulqdq monitor ssse3 cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx rdrand hypervisor lahf_lm abm -bugs : -bogomips : 4589.37 -clflush size : 64 -cache_alignment : 64 -address sizes : 39 bits physical, 48 bits virtual -power management: -` - - faultyCPUInfo = ` -processor : 0 -vendor_id : GenuineIntel -cpu family : 6 -model : 70 -model name : Intel(R) Core(TM) i7-4850HQ CPU @ 2.30GHz -stepping : 1 -microcode : 0x19 -cpu MHz : 2294.688 -cache size : 6144 KB -physical id : 0 -siblings : 1 -core id : 0 -cpu cores : 1 -apicid : 0 -initial apicid : 0 -fpu : yes -fpu_exception : yes -cpuid level : 13 -wp : yes -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc pni pclmulqdq monitor ssse3 cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx rdrand hypervisor lahf_lm abm -bugs : -bogomips : 4589.37 -clflush size : 64 -cache_alignment : 64 -address sizes : 39 bits physical, 48 bits virtual -power management: -` -) - -func TestShareName(t *testing.T) { - name, dir := getShareDriveAndName() - - assert.Equal(t, name, "hosthome") - assert.Equal(t, dir, "/home") -} - -func TestCpuInfoOnAMD(t *testing.T) { - assert.False(t, isVTXDisabled([]byte(amdCPUInfo))) -} - -func TestCpuInfoOnIntel(t *testing.T) { - assert.False(t, isVTXDisabled([]byte(intelCPUInfo))) -} - -func TestCpuInfoOnNone(t *testing.T) { - assert.True(t, isVTXDisabled([]byte(faultyCPUInfo))) -} diff --git a/vendor/github.com/docker/machine/drivers/virtualbox/virtualbox_test.go b/vendor/github.com/docker/machine/drivers/virtualbox/virtualbox_test.go deleted file mode 100644 index 8d495228..00000000 --- a/vendor/github.com/docker/machine/drivers/virtualbox/virtualbox_test.go +++ /dev/null @@ -1,659 +0,0 @@ -package virtualbox - -import ( - "errors" - "net" - "runtime" - "strings" - "testing" - - "fmt" - - "time" - - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/state" - "github.com/stretchr/testify/assert" -) - -type VBoxManagerMock struct { - args string - stdOut string - stdErr string - err error -} - -func (v *VBoxManagerMock) vbm(args ...string) error { - _, _, err := v.vbmOutErr(args...) - return err -} - -func (v *VBoxManagerMock) vbmOut(args ...string) (string, error) { - stdout, _, err := v.vbmOutErr(args...) - return stdout, err -} - -func (v *VBoxManagerMock) vbmOutErr(args ...string) (string, string, error) { - if strings.Join(args, " ") == v.args { - return v.stdOut, v.stdErr, v.err - } - return "", "", errors.New("Invalid args") -} - -func newTestDriver(name string) *Driver { - return NewDriver(name, "") -} - -func TestDriverName(t *testing.T) { - driverName := newTestDriver("default").DriverName() - - assert.Equal(t, "virtualbox", driverName) -} - -func TestSSHHostname(t *testing.T) { - hostname, err := newTestDriver("default").GetSSHHostname() - - assert.Equal(t, "127.0.0.1", hostname) - assert.NoError(t, err) -} - -func TestDefaultSSHUsername(t *testing.T) { - username := newTestDriver("default").GetSSHUsername() - - assert.Equal(t, "docker", username) -} - -func TestState(t *testing.T) { - var tests = []struct { - stdOut string - state state.State - }{ - {`VMState="running"`, state.Running}, - {`VMState="paused"`, state.Paused}, - {`VMState="saved"`, state.Saved}, - {`VMState="poweroff"`, state.Stopped}, - {`VMState="aborted"`, state.Stopped}, - {`VMState="whatever"`, state.None}, - {`VMState=`, state.None}, - } - - for _, expected := range tests { - driver := newTestDriver("default") - driver.VBoxManager = &VBoxManagerMock{ - args: "showvminfo default --machinereadable", - stdOut: expected.stdOut, - } - - machineState, err := driver.GetState() - - assert.NoError(t, err) - assert.Equal(t, expected.state, machineState) - } -} - -func TestStateErrors(t *testing.T) { - var tests = []struct { - stdErr string - err error - finalErr error - }{ - {"Could not find a registered machine named 'unknown'", errors.New("Bug"), errors.New("machine does not exist")}, - {"", errors.New("Unexpected error"), errors.New("Unexpected error")}, - } - - for _, expected := range tests { - driver := newTestDriver("default") - driver.VBoxManager = &VBoxManagerMock{ - args: "showvminfo default --machinereadable", - stdErr: expected.stdErr, - err: expected.err, - } - - machineState, err := driver.GetState() - - assert.Equal(t, err, expected.finalErr) - assert.Equal(t, state.Error, machineState) - } -} - -func TestGetRandomIPinSubnet(t *testing.T) { - driver := newTestDriver("default") - - // test IP 1.2.3.4 - testIP := net.IPv4(byte(1), byte(2), byte(3), byte(4)) - newIP, err := getRandomIPinSubnet(driver, testIP) - if err != nil { - t.Fatal(err) - } - - if testIP.Equal(newIP) { - t.Fatalf("expected different IP (source %s); received %s", testIP.String(), newIP.String()) - } - - if newIP[0] != testIP[0] { - t.Fatalf("expected first octet of %d; received %d", testIP[0], newIP[0]) - } - - if newIP[1] != testIP[1] { - t.Fatalf("expected second octet of %d; received %d", testIP[1], newIP[1]) - } - - if newIP[2] != testIP[2] { - t.Fatalf("expected third octet of %d; received %d", testIP[2], newIP[2]) - } -} - -func TestGetHolyOnlyMACAddress(t *testing.T) { - driver := newTestDriver("default") - driver.VBoxManager = &VBoxManagerMock{ - args: "showvminfo default --machinereadable", - stdOut: "unrelatedfield=whatever\nhostonlyadapter2=\"vboxnet1\"\nmacaddress2=\"004488AABBCC\"\n", - } - - result, err := driver.getHostOnlyMACAddress() - expected := "004488aabbcc" - assert.NoError(t, err) - assert.Equal(t, expected, result) -} - -func TestGetHostOnlyMACAddressWhenNoHostOnlyAdapter(t *testing.T) { - driver := newTestDriver("default") - driver.VBoxManager = &VBoxManagerMock{ - args: "showvminfo default --machinereadable", - stdOut: "unrelatedfield=whatever\n", - } - - result, err := driver.getHostOnlyMACAddress() - assert.Empty(t, result) - assert.Equal(t, err, errors.New("Machine does not have a host-only adapter")) -} - -func TestParseIPForMACFromIPAddr(t *testing.T) { - driver := newTestDriver("default") - - ipAddrOutput := "1: eth0:\n link/ether 00:44:88:aa:bb:cc\n inet 1.2.3.4/24\n2: eth1:\n link/ether 11:55:99:dd:ee:ff\n inet 5.6.7.8/24" - - result, err := driver.parseIPForMACFromIPAddr(ipAddrOutput, "004488aabbcc") - assert.NoError(t, err) - assert.Equal(t, result, "1.2.3.4") - - result, err = driver.parseIPForMACFromIPAddr(ipAddrOutput, "115599ddeeff") - assert.NoError(t, err) - assert.Equal(t, result, "5.6.7.8") - - result, err = driver.parseIPForMACFromIPAddr(ipAddrOutput, "000000000000") - assert.Empty(t, result) - assert.Equal(t, err, errors.New("Could not find matching IP for MAC address 000000000000")) -} - -func TestGetIPErrors(t *testing.T) { - var tests = []struct { - stdOut string - err error - finalErr error - }{ - {`VMState="poweroff"`, nil, errors.New("Host is not running")}, - {"", errors.New("Unable to get state"), errors.New("Unable to get state")}, - } - - for _, expected := range tests { - driver := newTestDriver("default") - driver.VBoxManager = &VBoxManagerMock{ - args: "showvminfo default --machinereadable", - stdOut: expected.stdOut, - err: expected.err, - } - - ip, err := driver.GetIP() - - assert.Empty(t, ip) - assert.Equal(t, err, expected.finalErr) - - url, err := driver.GetURL() - - assert.Empty(t, url) - assert.Equal(t, err, expected.finalErr) - } -} - -func TestParseValidCIDR(t *testing.T) { - ip, network, err := parseAndValidateCIDR("192.168.100.1/24") - - assert.Equal(t, "192.168.100.1", ip.String()) - assert.Equal(t, "192.168.100.0", network.IP.String()) - assert.Equal(t, "ffffff00", network.Mask.String()) - assert.NoError(t, err) -} - -func TestInvalidCIDR(t *testing.T) { - ip, network, err := parseAndValidateCIDR("192.168.100.1") - - assert.EqualError(t, err, "invalid CIDR address: 192.168.100.1") - assert.Nil(t, ip) - assert.Nil(t, network) -} - -func TestInvalidNetworkIpCIDR(t *testing.T) { - ip, network, err := parseAndValidateCIDR("192.168.100.0/24") - - assert.Equal(t, ErrNetworkAddrCidr, err) - assert.Nil(t, ip) - assert.Nil(t, network) -} - -// Tests detection of a conflict between an existing vbox host-only network and a host network interface. This -// scenario would happen if the docker-machine was created with the host on one network, and then the host gets -// moved to another network (e.g. different wifi routers) -func TestCIDRHostIFaceCollisionExisting(t *testing.T) { - vbox := &VBoxManagerMock{ - args: "list hostonlyifs", - stdOut: stdOutTwoHostOnlyNetwork, - } - mhi := newMockHostInterfaces() - _, err := mhi.addMockIface("192.168.99.42", 24, net.IPv4len, "en0", net.FlagUp|net.FlagBroadcast) - assert.NoError(t, err) - - nets, err := listHostOnlyAdapters(vbox) - assert.NoError(t, err) - m, listErr := listHostInterfaces(mhi, nets) - assert.Nil(t, listErr) - assert.NotEmpty(t, m) - - _, network, cidrErr := net.ParseCIDR("192.168.99.1/24") - assert.Nil(t, cidrErr) - err = validateNoIPCollisions(mhi, network, nets) - assert.Equal(t, ErrNetworkAddrCollision, err) -} - -// Tests operation of validateNoIPCollisions when no conflicts exist. -func TestCIDRHostIFaceNoCollision(t *testing.T) { - vbox := &VBoxManagerMock{ - args: "list hostonlyifs", - stdOut: stdOutTwoHostOnlyNetwork, - } - mhi := newMockHostInterfaces() - _, err := mhi.addMockIface("10.10.0.22", 24, net.IPv4len, "en0", net.FlagUp|net.FlagBroadcast) - assert.NoError(t, err) - - nets, err := listHostOnlyAdapters(vbox) - assert.NoError(t, err) - m, listErr := listHostInterfaces(mhi, nets) - assert.Nil(t, listErr) - assert.NotEmpty(t, m) - - _, network, cidrErr := net.ParseCIDR("192.168.99.1/24") - assert.Nil(t, cidrErr) - err = validateNoIPCollisions(mhi, network, nets) - assert.NoError(t, err) -} - -// Tests detection of a conflict between a potential vbox host-only network and a host network interface. -func TestCIDRHostIFaceCollision(t *testing.T) { - vbox := &VBoxManagerMock{ - args: "list hostonlyifs", - stdOut: "", - } - mhi := newMockHostInterfaces() - _, err := mhi.addMockIface("192.168.99.42", 24, net.IPv4len, "en0", net.FlagUp|net.FlagBroadcast) - assert.NoError(t, err) - - nets, err := listHostOnlyAdapters(vbox) - assert.NoError(t, err) - m, listErr := listHostInterfaces(mhi, nets) - assert.Nil(t, listErr) - assert.NotEmpty(t, m) - - _, network, cidrErr := net.ParseCIDR("192.168.99.1/24") - assert.Nil(t, cidrErr) - err = validateNoIPCollisions(mhi, network, nets) - assert.Equal(t, ErrNetworkAddrCollision, err) -} - -func TestSetConfigFromFlags(t *testing.T) { - driver := newTestDriver("default") - - checkFlags := &drivers.CheckDriverOptions{ - FlagsValues: map[string]interface{}{}, - CreateFlags: driver.GetCreateFlags(), - } - - err := driver.SetConfigFromFlags(checkFlags) - - assert.NoError(t, err) - assert.Empty(t, checkFlags.InvalidFlags) -} - -type MockCreateOperations struct { - test *testing.T - expectedCalls []Call - call int -} - -type Call struct { - signature string - output string - err error -} - -func (v *MockCreateOperations) vbm(args ...string) error { - _, _, err := v.vbmOutErr(args...) - return err -} - -func (v *MockCreateOperations) vbmOut(args ...string) (string, error) { - stdout, _, err := v.vbmOutErr(args...) - return stdout, err -} - -func (v *MockCreateOperations) vbmOutErr(args ...string) (string, string, error) { - output, err := v.doCall("vbm " + strings.Join(args, " ")) - return output, "", err -} - -func (v *MockCreateOperations) UpdateISOCache(storePath, isoURL string) error { - _, err := v.doCall("UpdateISOCache " + storePath + " " + isoURL) - return err -} - -func (v *MockCreateOperations) CopyIsoToMachineDir(storePath, machineName, isoURL string) error { - _, err := v.doCall("CopyIsoToMachineDir " + storePath + " " + machineName + " " + isoURL) - return err -} - -func (v *MockCreateOperations) Generate(path string) error { - _, err := v.doCall("Generate " + path) - return err -} - -func (v *MockCreateOperations) Create(size int, publicSSHKeyPath, diskPath string) error { - _, err := v.doCall("Create " + fmt.Sprintf("%d %s %s", size, publicSSHKeyPath, diskPath)) - return err -} - -func (v *MockCreateOperations) Read(path string) ([]string, error) { - _, err := v.doCall("Read " + path) - return []string{}, err -} - -func (v *MockCreateOperations) Wait(d *Driver) error { - _, err := v.doCall("WaitIP") - return err -} - -func (v *MockCreateOperations) RandomInt(n int) int { - return 6 -} - -func (v *MockCreateOperations) Sleep(d time.Duration) { - v.doCall("Sleep " + fmt.Sprintf("%v", d)) -} - -func (v *MockCreateOperations) Interfaces() ([]net.Interface, error) { - _, err := v.doCall("Interfaces") - return []net.Interface{}, err -} - -func (v *MockCreateOperations) Addrs(iface *net.Interface) ([]net.Addr, error) { - _, err := v.doCall("Addrs " + fmt.Sprintf("%v", iface)) - return []net.Addr{}, err -} - -func (v *MockCreateOperations) expectCall(callSignature, output string, err error) { - v.expectedCalls = append(v.expectedCalls, Call{ - signature: callSignature, - output: output, - err: err, - }) -} - -func (v *MockCreateOperations) doCall(callSignature string) (string, error) { - if v.call >= len(v.expectedCalls) { - v.test.Fatal("Unexpected call", callSignature) - - } - - call := v.expectedCalls[v.call] - if call.signature != "IGNORE CALL" && (callSignature != call.signature) { - v.test.Fatal("Unexpected call", callSignature) - } - - v.call++ - - return call.output, call.err -} - -func mockCalls(t *testing.T, driver *Driver, expectedCalls []Call) { - mockOperations := &MockCreateOperations{ - test: t, - expectedCalls: expectedCalls, - } - - driver.Boot2DockerURL = "http://b2d.org" - driver.VBoxManager = mockOperations - driver.b2dUpdater = mockOperations - driver.sshKeyGenerator = mockOperations - driver.diskCreator = mockOperations - driver.logsReader = mockOperations - driver.ipWaiter = mockOperations - driver.randomInter = mockOperations - driver.sleeper = mockOperations - driver.HostInterfaces = mockOperations -} - -func TestCreateVM(t *testing.T) { - shareName, shareDir := getShareDriveAndName() - - modifyVMcommand := "vbm modifyvm default --firmware bios --bioslogofadein off --bioslogofadeout off --bioslogodisplaytime 0 --biosbootmenu disabled --ostype Linux26_64 --cpus 1 --memory 1024 --acpi on --ioapic on --rtcuseutc on --natdnshostresolver1 off --natdnsproxy1 on --cpuhotplug off --pae on --hpet on --hwvirtex on --nestedpaging on --largepages on --vtxvpid on --accelerate3d off --boot1 dvd" - if runtime.GOOS == "windows" && runtime.GOARCH == "386" { - modifyVMcommand += " --longmode on" - } - - driver := NewDriver("default", "path") - mockCalls(t, driver, []Call{ - {"CopyIsoToMachineDir path default http://b2d.org", "", nil}, - {"Generate path/machines/default/id_rsa", "", nil}, - {"Create 20000 path/machines/default/id_rsa.pub path/machines/default/disk.vmdk", "", nil}, - {"vbm createvm --basefolder path/machines/default --name default --register", "", nil}, - {modifyVMcommand, "", nil}, - {"vbm modifyvm default --nic1 nat --nictype1 82540EM --cableconnected1 on", "", nil}, - {"vbm storagectl default --name SATA --add sata --hostiocache on", "", nil}, - {"vbm storageattach default --storagectl SATA --port 0 --device 0 --type dvddrive --medium path/machines/default/boot2docker.iso", "", nil}, - {"vbm storageattach default --storagectl SATA --port 1 --device 0 --type hdd --medium path/machines/default/disk.vmdk", "", nil}, - {"vbm guestproperty set default /VirtualBox/GuestAdd/SharedFolders/MountPrefix /", "", nil}, - {"vbm guestproperty set default /VirtualBox/GuestAdd/SharedFolders/MountDir /", "", nil}, - {"vbm sharedfolder add default --name " + shareName + " --hostpath " + shareDir + " --automount", "", nil}, - {"vbm setextradata default VBoxInternal2/SharedFoldersEnableSymlinksCreate/" + shareName + " 1", "", nil}, - }) - - err := driver.CreateVM() - - assert.NoError(t, err) -} - -func TestCreateVMWithSpecificNatNicType(t *testing.T) { - shareName, shareDir := getShareDriveAndName() - - modifyVMcommand := "vbm modifyvm default --firmware bios --bioslogofadein off --bioslogofadeout off --bioslogodisplaytime 0 --biosbootmenu disabled --ostype Linux26_64 --cpus 1 --memory 1024 --acpi on --ioapic on --rtcuseutc on --natdnshostresolver1 off --natdnsproxy1 on --cpuhotplug off --pae on --hpet on --hwvirtex on --nestedpaging on --largepages on --vtxvpid on --accelerate3d off --boot1 dvd" - if runtime.GOOS == "windows" && runtime.GOARCH == "386" { - modifyVMcommand += " --longmode on" - } - - driver := NewDriver("default", "path") - driver.NatNicType = "Am79C973" - mockCalls(t, driver, []Call{ - {"CopyIsoToMachineDir path default http://b2d.org", "", nil}, - {"Generate path/machines/default/id_rsa", "", nil}, - {"Create 20000 path/machines/default/id_rsa.pub path/machines/default/disk.vmdk", "", nil}, - {"vbm createvm --basefolder path/machines/default --name default --register", "", nil}, - {modifyVMcommand, "", nil}, - {"vbm modifyvm default --nic1 nat --nictype1 Am79C973 --cableconnected1 on", "", nil}, - {"vbm storagectl default --name SATA --add sata --hostiocache on", "", nil}, - {"vbm storageattach default --storagectl SATA --port 0 --device 0 --type dvddrive --medium path/machines/default/boot2docker.iso", "", nil}, - {"vbm storageattach default --storagectl SATA --port 1 --device 0 --type hdd --medium path/machines/default/disk.vmdk", "", nil}, - {"vbm guestproperty set default /VirtualBox/GuestAdd/SharedFolders/MountPrefix /", "", nil}, - {"vbm guestproperty set default /VirtualBox/GuestAdd/SharedFolders/MountDir /", "", nil}, - {"vbm sharedfolder add default --name " + shareName + " --hostpath " + shareDir + " --automount", "", nil}, - {"vbm setextradata default VBoxInternal2/SharedFoldersEnableSymlinksCreate/" + shareName + " 1", "", nil}, - }) - - err := driver.CreateVM() - - assert.NoError(t, err) -} - -func TestStart(t *testing.T) { - driver := NewDriver("default", "path") - mockCalls(t, driver, []Call{ - {"vbm showvminfo default --machinereadable", `VMState="poweroff"`, nil}, - {"vbm list hostonlyifs", "", nil}, - {"Interfaces", "", nil}, - {"vbm hostonlyif create", "Interface 'VirtualBox Host-Only Ethernet Adapter' was successfully created", nil}, - {"vbm list hostonlyifs", ` -Name: VirtualBox Host-Only Ethernet Adapter -GUID: 786f6276-656e-4074-8000-0a0027000000 -DHCP: Disabled -IPAddress: 192.168.99.1 -NetworkMask: 255.255.255.0 -IPV6Address: -IPV6NetworkMaskPrefixLength: 0 -HardwareAddress: 0a:00:27:00:00:00 -MediumType: Ethernet -Status: Up -VBoxNetworkName: HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter`, nil}, - {"vbm hostonlyif ipconfig VirtualBox Host-Only Ethernet Adapter --ip 192.168.99.1 --netmask 255.255.255.0", "", nil}, - {"vbm list dhcpservers", "", nil}, - {"vbm list dhcpservers", "", nil}, - {"vbm dhcpserver add --netname HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter --ip 192.168.99.6 --netmask 255.255.255.0 --lowerip 192.168.99.100 --upperip 192.168.99.254 --enable", "", nil}, - {"vbm modifyvm default --nic2 hostonly --nictype2 82540EM --nicpromisc2 deny --hostonlyadapter2 VirtualBox Host-Only Ethernet Adapter --cableconnected2 on", "", nil}, - {"IGNORE CALL", "", nil}, - {"IGNORE CALL", "", nil}, - {"vbm startvm default --type headless", "", nil}, - {"Read path/machines/default/default/Logs/VBox.log", "", nil}, - {"WaitIP", "", nil}, - {"vbm list hostonlyifs", ` -Name: VirtualBox Host-Only Ethernet Adapter -GUID: 786f6276-656e-4074-8000-0a0027000000 -DHCP: Disabled -IPAddress: 192.168.99.1 -NetworkMask: 255.255.255.0 -IPV6Address: -IPV6NetworkMaskPrefixLength: 0 -HardwareAddress: 0a:00:27:00:00:00 -MediumType: Ethernet -Status: Up -VBoxNetworkName: HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter`, nil}, - {"Interfaces", "", nil}, - }) - - err := driver.Start() - - assert.NoError(t, err) -} - -func TestStartWithHostOnlyAdapterCreationBug(t *testing.T) { - driver := NewDriver("default", "path") - mockCalls(t, driver, []Call{ - {"vbm showvminfo default --machinereadable", `VMState="poweroff"`, nil}, - {"vbm list hostonlyifs", "", nil}, - {"Interfaces", "", nil}, - {"vbm hostonlyif create", "", errors.New("error: Failed to create the host-only adapter")}, - {"vbm list hostonlyifs", "", nil}, - {"vbm list hostonlyifs", ` -Name: VirtualBox Host-Only Ethernet Adapter -GUID: 786f6276-656e-4074-8000-0a0027000000 -DHCP: Disabled -IPAddress: 192.168.99.1 -NetworkMask: 255.255.255.0 -IPV6Address: -IPV6NetworkMaskPrefixLength: 0 -HardwareAddress: 0a:00:27:00:00:00 -MediumType: Ethernet -Status: Up -VBoxNetworkName: HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter`, nil}, - {"vbm hostonlyif ipconfig VirtualBox Host-Only Ethernet Adapter --ip 192.168.99.1 --netmask 255.255.255.0", "", nil}, - {"vbm list dhcpservers", "", nil}, - {"vbm list dhcpservers", "", nil}, - {"vbm dhcpserver add --netname HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter --ip 192.168.99.6 --netmask 255.255.255.0 --lowerip 192.168.99.100 --upperip 192.168.99.254 --enable", "", nil}, - {"vbm modifyvm default --nic2 hostonly --nictype2 82540EM --nicpromisc2 deny --hostonlyadapter2 VirtualBox Host-Only Ethernet Adapter --cableconnected2 on", "", nil}, - {"IGNORE CALL", "", nil}, - {"IGNORE CALL", "", nil}, - {"vbm startvm default --type headless", "", nil}, - {"Read path/machines/default/default/Logs/VBox.log", "", nil}, - {"WaitIP", "", nil}, - {"vbm list hostonlyifs", ` -Name: VirtualBox Host-Only Ethernet Adapter -GUID: 786f6276-656e-4074-8000-0a0027000000 -DHCP: Disabled -IPAddress: 192.168.99.100 -NetworkMask: 255.255.255.0 -IPV6Address: -IPV6NetworkMaskPrefixLength: 0 -HardwareAddress: 0a:00:27:00:00:00 -MediumType: Ethernet -Status: Up -VBoxNetworkName: HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter`, nil}, - {"Interfaces", "", nil}, - {"vbm showvminfo default --machinereadable", `VMState="running"`, nil}, - {"vbm controlvm default acpipowerbutton", "", nil}, - {"vbm showvminfo default --machinereadable", `VMState="stopped"`, nil}, - {"Sleep 5s", "", nil}, - {"vbm hostonlyif ipconfig VirtualBox Host-Only Ethernet Adapter --ip 192.168.99.1 --netmask 255.255.255.0", "", nil}, - {"Sleep 5s", "", nil}, - {"vbm startvm default --type headless", "", nil}, - {"WaitIP", "", nil}, - }) - - err := driver.Start() - - assert.NoError(t, err) -} - -func TestRemoveStopped(t *testing.T) { - driver := NewDriver("default", "path") - mockCalls(t, driver, []Call{ - {"vbm showvminfo default --machinereadable", `VMState="poweroff"`, nil}, - {"vbm unregistervm --delete default", "", nil}, - }) - - err := driver.Remove() - - assert.NoError(t, err) -} - -func TestRemoveStarted(t *testing.T) { - driver := NewDriver("default", "path") - mockCalls(t, driver, []Call{ - {"vbm showvminfo default --machinereadable", `VMState="running"`, nil}, - {"vbm controlvm default poweroff", "", nil}, - {"vbm unregistervm --delete default", "", nil}, - }) - - err := driver.Remove() - - assert.NoError(t, err) -} - -func TestRemoveSaved(t *testing.T) { - driver := NewDriver("default", "path") - mockCalls(t, driver, []Call{ - {"vbm showvminfo default --machinereadable", `VMState="saved"`, nil}, - {"vbm unregistervm --delete default", "", nil}, - }) - - err := driver.Remove() - - assert.NoError(t, err) -} - -func TestRemovePaused(t *testing.T) { - driver := NewDriver("default", "path") - mockCalls(t, driver, []Call{ - {"vbm showvminfo default --machinereadable", `VMState="running"`, nil}, - {"vbm controlvm default poweroff", "", nil}, - {"vbm unregistervm --delete default", "", nil}, - }) - - err := driver.Remove() - - assert.NoError(t, err) -} diff --git a/vendor/github.com/docker/machine/drivers/virtualbox/virtualbox_windows.go b/vendor/github.com/docker/machine/drivers/virtualbox/virtualbox_windows.go deleted file mode 100644 index 4f025e82..00000000 --- a/vendor/github.com/docker/machine/drivers/virtualbox/virtualbox_windows.go +++ /dev/null @@ -1,119 +0,0 @@ -package virtualbox - -import ( - "strings" - - "fmt" - "os" - "os/exec" - "path/filepath" - - "github.com/docker/machine/libmachine/log" - "golang.org/x/sys/windows/registry" -) - -// IsVTXDisabled checks if VT-X is disabled in the BIOS. If it is, the vm will fail to start. -// If we can't be sure it is disabled, we carry on and will check the vm logs after it's started. -func (d *Driver) IsVTXDisabled() bool { - errmsg := "Couldn't check that VT-X/AMD-v is enabled. Will check that the vm is properly created: %v" - output, err := cmdOutput("wmic", "cpu", "get", "VirtualizationFirmwareEnabled") - if err != nil { - log.Debugf(errmsg, err) - return false - } - - disabled := strings.Contains(output, "FALSE") - return disabled -} - -// cmdOutput runs a shell command and returns its output. -func cmdOutput(name string, args ...string) (string, error) { - cmd := exec.Command(name, args...) - log.Debugf("COMMAND: %v %v", name, strings.Join(args, " ")) - - stdout, err := cmd.Output() - if err != nil { - return "", err - } - - log.Debugf("STDOUT:\n{\n%v}", string(stdout)) - - return string(stdout), nil -} - -func detectVBoxManageCmd() string { - cmd := "VBoxManage" - if p := os.Getenv("VBOX_INSTALL_PATH"); p != "" { - if path, err := exec.LookPath(filepath.Join(p, cmd)); err == nil { - return path - } - } - - if p := os.Getenv("VBOX_MSI_INSTALL_PATH"); p != "" { - if path, err := exec.LookPath(filepath.Join(p, cmd)); err == nil { - return path - } - } - - // Look in default installation path for VirtualBox version > 5 - if path, err := exec.LookPath(filepath.Join("C:\\Program Files\\Oracle\\VirtualBox", cmd)); err == nil { - return path - } - - // Look in windows registry - if p, err := findVBoxInstallDirInRegistry(); err == nil { - if path, err := exec.LookPath(filepath.Join(p, cmd)); err == nil { - return path - } - } - - return detectVBoxManageCmdInPath() //fallback to path -} - -func findVBoxInstallDirInRegistry() (string, error) { - registryKey, err := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Oracle\VirtualBox`, registry.QUERY_VALUE) - if err != nil { - errorMessage := fmt.Sprintf("Can't find VirtualBox registry entries, is VirtualBox really installed properly? %s", err) - log.Debugf(errorMessage) - return "", fmt.Errorf(errorMessage) - } - - defer registryKey.Close() - - installDir, _, err := registryKey.GetStringValue("InstallDir") - if err != nil { - errorMessage := fmt.Sprintf("Can't find InstallDir registry key within VirtualBox registries entries, is VirtualBox really installed properly? %s", err) - log.Debugf(errorMessage) - return "", fmt.Errorf(errorMessage) - } - - return installDir, nil -} - -func getShareDriveAndName() (string, string) { - return "c/Users", "\\\\?\\c:\\Users" -} - -func isHyperVInstalled() bool { - // check if hyper-v is installed - _, err := exec.LookPath("vmms.exe") - if err != nil { - errmsg := "Hyper-V is not installed." - log.Debugf(errmsg, err) - return false - } - - // check to see if a hypervisor is present. if hyper-v is installed and enabled, - // display an error explaining the incompatibility between virtualbox and hyper-v. - output, err := cmdOutput("wmic", "computersystem", "get", "hypervisorpresent") - - if err != nil { - errmsg := "Could not check to see if Hyper-V is running." - log.Debugf(errmsg, err) - return false - } - - enabled := strings.Contains(output, "TRUE") - return enabled - -} diff --git a/vendor/github.com/docker/machine/drivers/virtualbox/vm.go b/vendor/github.com/docker/machine/drivers/virtualbox/vm.go deleted file mode 100644 index cd95ada7..00000000 --- a/vendor/github.com/docker/machine/drivers/virtualbox/vm.go +++ /dev/null @@ -1,41 +0,0 @@ -package virtualbox - -import "strconv" - -type VM struct { - CPUs int - Memory int -} - -func getVMInfo(name string, vbox VBoxManager) (*VM, error) { - out, err := vbox.vbmOut("showvminfo", name, "--machinereadable") - if err != nil { - return nil, err - } - - vm := &VM{} - - err = parseKeyValues(out, reEqualLine, func(key, val string) error { - switch key { - case "cpus": - v, err := strconv.Atoi(val) - if err != nil { - return err - } - vm.CPUs = v - case "memory": - v, err := strconv.Atoi(val) - if err != nil { - return err - } - vm.Memory = v - } - - return nil - }) - if err != nil { - return nil, err - } - - return vm, nil -} diff --git a/vendor/github.com/docker/machine/drivers/virtualbox/vm_test.go b/vendor/github.com/docker/machine/drivers/virtualbox/vm_test.go deleted file mode 100644 index a90ffbf1..00000000 --- a/vendor/github.com/docker/machine/drivers/virtualbox/vm_test.go +++ /dev/null @@ -1,44 +0,0 @@ -package virtualbox - -import ( - "errors" - "testing" - - "github.com/stretchr/testify/assert" -) - -var stdOutVMInfo = ` -storagecontrollerbootable0="on" -memory=1024 -cpus=2 -"SATA-0-0"="/home/ehazlett/.boot2docker/boot2docker.iso" -"SATA-IsEjected"="off" -"SATA-1-0"="/home/ehazlett/vm/test/disk.vmdk" -"SATA-ImageUUID-1-0"="12345-abcdefg" -"SATA-2-0"="none" -nic1="nat"` - -func TestVMInfo(t *testing.T) { - vbox := &VBoxManagerMock{ - args: "showvminfo host --machinereadable", - stdOut: stdOutVMInfo, - } - - vm, err := getVMInfo("host", vbox) - - assert.Equal(t, 2, vm.CPUs) - assert.Equal(t, 1024, vm.Memory) - assert.NoError(t, err) -} - -func TestVMInfoError(t *testing.T) { - vbox := &VBoxManagerMock{ - args: "showvminfo host --machinereadable", - err: errors.New("BUG"), - } - - vm, err := getVMInfo("host", vbox) - - assert.Nil(t, vm) - assert.EqualError(t, err, "BUG") -} diff --git a/vendor/github.com/docker/machine/drivers/virtualbox/vtx.go b/vendor/github.com/docker/machine/drivers/virtualbox/vtx.go deleted file mode 100644 index 7adb631f..00000000 --- a/vendor/github.com/docker/machine/drivers/virtualbox/vtx.go +++ /dev/null @@ -1,28 +0,0 @@ -package virtualbox - -import "strings" - -// IsVTXDisabledInTheVM checks if VT-X is disabled in the started vm. -func (d *Driver) IsVTXDisabledInTheVM() (bool, error) { - lines, err := d.readVBoxLog() - if err != nil { - return true, err - } - - for _, line := range lines { - if strings.Contains(line, "VT-x is disabled") && !strings.Contains(line, "Falling back to raw-mode: VT-x is disabled in the BIOS for all CPU modes") { - return true, nil - } - if strings.Contains(line, "the host CPU does NOT support HW virtualization") { - return true, nil - } - if strings.Contains(line, "VERR_VMX_UNABLE_TO_START_VM") { - return true, nil - } - if strings.Contains(line, "Power up failed") && strings.Contains(line, "VERR_VMX_NO_VMX") { - return true, nil - } - } - - return false, nil -} diff --git a/vendor/github.com/docker/machine/drivers/virtualbox/vtx_test.go b/vendor/github.com/docker/machine/drivers/virtualbox/vtx_test.go deleted file mode 100644 index da90b15a..00000000 --- a/vendor/github.com/docker/machine/drivers/virtualbox/vtx_test.go +++ /dev/null @@ -1,72 +0,0 @@ -package virtualbox - -import ( - "testing" - - "errors" - - "github.com/stretchr/testify/assert" -) - -type MockLogsReader struct { - content []string - err error -} - -func (r *MockLogsReader) Read(path string) ([]string, error) { - return r.content, r.err -} - -func TestIsVTXEnabledInTheVM(t *testing.T) { - driver := NewDriver("default", "path") - - var tests = []struct { - description string - content []string - err error - }{ - {"Empty log", []string{}, nil}, - {"Raw mode", []string{"Falling back to raw-mode: VT-x is disabled in the BIOS for all CPU modes"}, nil}, - {"Raw mode", []string{"HM: HMR3Init: Falling back to raw-mode: VT-x is not available"}, nil}, - } - - for _, test := range tests { - driver.logsReader = &MockLogsReader{ - content: test.content, - err: test.err, - } - - disabled, err := driver.IsVTXDisabledInTheVM() - - assert.False(t, disabled, test.description) - assert.Equal(t, test.err, err) - } -} - -func TestIsVTXDisabledInTheVM(t *testing.T) { - driver := NewDriver("default", "path") - - var tests = []struct { - description string - content []string - err error - }{ - {"VT-x Disabled", []string{"VT-x is disabled"}, nil}, - {"No HW virtualization", []string{"the host CPU does NOT support HW virtualization"}, nil}, - {"Unable to start VM", []string{"VERR_VMX_UNABLE_TO_START_VM"}, nil}, - {"Power up failed", []string{"00:00:00.318604 Power up failed (vrc=VERR_VMX_NO_VMX, rc=NS_ERROR_FAILURE (0X80004005))"}, nil}, - {"Unable to read log", nil, errors.New("Unable to read log")}, - } - - for _, test := range tests { - driver.logsReader = &MockLogsReader{ - content: test.content, - err: test.err, - } - - disabled, err := driver.IsVTXDisabledInTheVM() - - assert.True(t, disabled, test.description) - assert.Equal(t, test.err, err) - } -} diff --git a/vendor/github.com/docker/machine/drivers/vmwarefusion/fusion.go b/vendor/github.com/docker/machine/drivers/vmwarefusion/fusion.go deleted file mode 100644 index be433e5f..00000000 --- a/vendor/github.com/docker/machine/drivers/vmwarefusion/fusion.go +++ /dev/null @@ -1,9 +0,0 @@ -// +build !darwin - -package vmwarefusion - -import "github.com/docker/machine/libmachine/drivers" - -func NewDriver(hostName, storePath string) drivers.Driver { - return drivers.NewDriverNotSupported("vmwarefusion", hostName, storePath) -} diff --git a/vendor/github.com/docker/machine/drivers/vmwarefusion/fusion_darwin.go b/vendor/github.com/docker/machine/drivers/vmwarefusion/fusion_darwin.go deleted file mode 100644 index 370beeea..00000000 --- a/vendor/github.com/docker/machine/drivers/vmwarefusion/fusion_darwin.go +++ /dev/null @@ -1,774 +0,0 @@ -/* - * Copyright 2014 VMware, Inc. All rights reserved. Licensed under the Apache v2 License. - */ - -package vmwarefusion - -import ( - "archive/tar" - "bytes" - "fmt" - "io/ioutil" - "net" - "os" - "path/filepath" - "regexp" - "runtime" - "strings" - "text/template" - "time" - - "errors" - - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnflag" - "github.com/docker/machine/libmachine/mcnutils" - "github.com/docker/machine/libmachine/ssh" - "github.com/docker/machine/libmachine/state" - cryptossh "golang.org/x/crypto/ssh" -) - -const ( - B2DUser = "docker" - B2DPass = "tcuser" - isoFilename = "boot2docker.iso" - isoConfigDrive = "configdrive.iso" -) - -// Driver for VMware Fusion -type Driver struct { - *drivers.BaseDriver - Memory int - DiskSize int - CPU int - ISO string - Boot2DockerURL string - - SSHPassword string - ConfigDriveISO string - ConfigDriveURL string - NoShare bool -} - -const ( - defaultSSHUser = B2DUser - defaultSSHPass = B2DPass - defaultDiskSize = 20000 - defaultCPU = 1 - defaultMemory = 1024 -) - -// GetCreateFlags registers the flags this driver adds to -// "docker hosts create" -func (d *Driver) GetCreateFlags() []mcnflag.Flag { - return []mcnflag.Flag{ - mcnflag.StringFlag{ - EnvVar: "FUSION_BOOT2DOCKER_URL", - Name: "vmwarefusion-boot2docker-url", - Usage: "Fusion URL for boot2docker image", - Value: "", - }, - mcnflag.StringFlag{ - EnvVar: "FUSION_CONFIGDRIVE_URL", - Name: "vmwarefusion-configdrive-url", - Usage: "Fusion URL for cloud-init configdrive", - Value: "", - }, - mcnflag.IntFlag{ - EnvVar: "FUSION_CPU_COUNT", - Name: "vmwarefusion-cpu-count", - Usage: "number of CPUs for the machine (-1 to use the number of CPUs available)", - Value: defaultCPU, - }, - mcnflag.IntFlag{ - EnvVar: "FUSION_MEMORY_SIZE", - Name: "vmwarefusion-memory-size", - Usage: "Fusion size of memory for host VM (in MB)", - Value: defaultMemory, - }, - mcnflag.IntFlag{ - EnvVar: "FUSION_DISK_SIZE", - Name: "vmwarefusion-disk-size", - Usage: "Fusion size of disk for host VM (in MB)", - Value: defaultDiskSize, - }, - mcnflag.StringFlag{ - EnvVar: "FUSION_SSH_USER", - Name: "vmwarefusion-ssh-user", - Usage: "SSH user", - Value: defaultSSHUser, - }, - mcnflag.StringFlag{ - EnvVar: "FUSION_SSH_PASSWORD", - Name: "vmwarefusion-ssh-password", - Usage: "SSH password", - Value: defaultSSHPass, - }, - mcnflag.BoolFlag{ - EnvVar: "FUSION_NO_SHARE", - Name: "vmwarefusion-no-share", - Usage: "Disable the mount of your home directory", - }, - } -} - -func NewDriver(hostName, storePath string) drivers.Driver { - return &Driver{ - CPU: defaultCPU, - Memory: defaultMemory, - DiskSize: defaultDiskSize, - SSHPassword: defaultSSHPass, - BaseDriver: &drivers.BaseDriver{ - SSHUser: defaultSSHUser, - MachineName: hostName, - StorePath: storePath, - }, - } -} - -func (d *Driver) GetSSHHostname() (string, error) { - return d.GetIP() -} - -func (d *Driver) GetSSHUsername() string { - if d.SSHUser == "" { - d.SSHUser = "docker" - } - - return d.SSHUser -} - -// DriverName returns the name of the driver -func (d *Driver) DriverName() string { - return "vmwarefusion" -} - -func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error { - if drivers.EngineInstallURLFlagSet(flags) { - return errors.New("--engine-install-url cannot be used with the vmwarefusion driver, use --vmwarefusion-boot2docker-url instead") - } - d.Memory = flags.Int("vmwarefusion-memory-size") - d.CPU = flags.Int("vmwarefusion-cpu-count") - d.DiskSize = flags.Int("vmwarefusion-disk-size") - d.Boot2DockerURL = flags.String("vmwarefusion-boot2docker-url") - d.ConfigDriveURL = flags.String("vmwarefusion-configdrive-url") - d.ISO = d.ResolveStorePath(isoFilename) - d.ConfigDriveISO = d.ResolveStorePath(isoConfigDrive) - d.SetSwarmConfigFromFlags(flags) - d.SSHUser = flags.String("vmwarefusion-ssh-user") - d.SSHPassword = flags.String("vmwarefusion-ssh-password") - d.SSHPort = 22 - d.NoShare = flags.Bool("vmwarefusion-no-share") - - // We support a maximum of 16 cpu to be consistent with Virtual Hardware 10 - // specs. - if d.CPU < 1 { - d.CPU = int(runtime.NumCPU()) - } - if d.CPU > 16 { - d.CPU = 16 - } - - return nil -} - -func (d *Driver) GetURL() (string, error) { - ip, err := d.GetIP() - if err != nil { - return "", err - } - if ip == "" { - return "", nil - } - return fmt.Sprintf("tcp://%s", net.JoinHostPort(ip, "2376")), nil -} - -func (d *Driver) GetIP() (string, error) { - s, err := d.GetState() - if err != nil { - return "", err - } - if s != state.Running { - return "", drivers.ErrHostIsNotRunning - } - - // determine MAC address for VM - macaddr, err := d.getMacAddressFromVmx() - if err != nil { - return "", err - } - - // attempt to find the address in the vmnet configuration - if ip, err := d.getIPfromVmnetConfiguration(macaddr); err == nil { - return ip, err - } - - // address not found in vmnet so look for a DHCP lease - ip, err := d.getIPfromDHCPLease(macaddr) - if err != nil { - return "", err - } - - return ip, nil -} - -func (d *Driver) GetState() (state.State, error) { - // VMRUN only tells use if the vm is running or not - vmxp, err := filepath.EvalSymlinks(d.vmxPath()) - if err != nil { - return state.Error, err - } - if stdout, _, _ := vmrun("list"); strings.Contains(stdout, vmxp) { - return state.Running, nil - } - return state.Stopped, nil -} - -// PreCreateCheck checks that the machine creation process can be started safely. -func (d *Driver) PreCreateCheck() error { - // Downloading boot2docker to cache should be done here to make sure - // that a download failure will not leave a machine half created. - b2dutils := mcnutils.NewB2dUtils(d.StorePath) - if err := b2dutils.UpdateISOCache(d.Boot2DockerURL); err != nil { - return err - } - - return nil -} - -func (d *Driver) Create() error { - b2dutils := mcnutils.NewB2dUtils(d.StorePath) - if err := b2dutils.CopyIsoToMachineDir(d.Boot2DockerURL, d.MachineName); err != nil { - return err - } - - // download cloud-init config drive - if d.ConfigDriveURL != "" { - if err := b2dutils.DownloadISO(d.ResolveStorePath("."), isoConfigDrive, d.ConfigDriveURL); err != nil { - return err - } - } - - log.Infof("Creating SSH key...") - if err := ssh.GenerateSSHKey(d.GetSSHKeyPath()); err != nil { - return err - } - - log.Infof("Creating VM...") - if err := os.MkdirAll(d.ResolveStorePath("."), 0755); err != nil { - return err - } - - if _, err := os.Stat(d.vmxPath()); err == nil { - return ErrMachineExist - } - - // Generate vmx config file from template - vmxt := template.Must(template.New("vmx").Parse(vmx)) - vmxfile, err := os.Create(d.vmxPath()) - if err != nil { - return err - } - vmxt.Execute(vmxfile, d) - - // Generate vmdk file - diskImg := d.ResolveStorePath(fmt.Sprintf("%s.vmdk", d.MachineName)) - if _, err := os.Stat(diskImg); err != nil { - if !os.IsNotExist(err) { - return err - } - - if err := vdiskmanager(diskImg, d.DiskSize); err != nil { - return err - } - } - - log.Infof("Starting %s...", d.MachineName) - vmrun("start", d.vmxPath(), "nogui") - - var ip string - - log.Infof("Waiting for VM to come online...") - for i := 1; i <= 60; i++ { - ip, err = d.GetIP() - if err != nil { - log.Debugf("Not there yet %d/%d, error: %s", i, 60, err) - time.Sleep(2 * time.Second) - continue - } - - if ip != "" { - log.Debugf("Got an ip: %s", ip) - conn, err := net.DialTimeout("tcp", fmt.Sprintf("%s:%d", ip, 22), time.Duration(2*time.Second)) - if err != nil { - log.Debugf("SSH Daemon not responding yet: %s", err) - time.Sleep(2 * time.Second) - continue - } - conn.Close() - break - } - } - - if ip == "" { - return fmt.Errorf("Machine didn't return an IP after 120 seconds, aborting") - } - - // we got an IP, let's copy ssh keys over - d.IPAddress = ip - - // Do not execute the rest of boot2docker specific configuration - // The uplaod of the public ssh key uses a ssh connection, - // this works without installed vmware client tools - if d.ConfigDriveURL != "" { - var keyfh *os.File - var keycontent []byte - - log.Infof("Copy public SSH key to %s [%s]", d.MachineName, d.IPAddress) - - // create .ssh folder in users home - if err := executeSSHCommand(fmt.Sprintf("mkdir -p /home/%s/.ssh", d.SSHUser), d); err != nil { - return err - } - - // read generated public ssh key - if keyfh, err = os.Open(d.publicSSHKeyPath()); err != nil { - return err - } - defer keyfh.Close() - - if keycontent, err = ioutil.ReadAll(keyfh); err != nil { - return err - } - - // add public ssh key to authorized_keys - if err := executeSSHCommand(fmt.Sprintf("echo '%s' > /home/%s/.ssh/authorized_keys", string(keycontent), d.SSHUser), d); err != nil { - return err - } - - // make it secure - if err := executeSSHCommand(fmt.Sprintf("chmod 600 /home/%s/.ssh/authorized_keys", d.SSHUser), d); err != nil { - return err - } - - log.Debugf("Leaving create sequence early, configdrive found") - return nil - } - - // Generate a tar keys bundle - if err := d.generateKeyBundle(); err != nil { - return err - } - - // Test if /var/lib/boot2docker exists - vmrun("-gu", B2DUser, "-gp", B2DPass, "directoryExistsInGuest", d.vmxPath(), "/var/lib/boot2docker") - - // Copy SSH keys bundle - vmrun("-gu", B2DUser, "-gp", B2DPass, "CopyFileFromHostToGuest", d.vmxPath(), d.ResolveStorePath("userdata.tar"), "/home/docker/userdata.tar") - - // Expand tar file. - vmrun("-gu", B2DUser, "-gp", B2DPass, "runScriptInGuest", d.vmxPath(), "/bin/sh", "sudo /bin/mv /home/docker/userdata.tar /var/lib/boot2docker/userdata.tar && sudo tar xf /var/lib/boot2docker/userdata.tar -C /home/docker/ > /var/log/userdata.log 2>&1 && sudo chown -R docker:staff /home/docker") - - // Enable Shared Folders - vmrun("-gu", B2DUser, "-gp", B2DPass, "enableSharedFolders", d.vmxPath()) - - var shareName, shareDir string // TODO configurable at some point - switch runtime.GOOS { - case "darwin": - shareName = "Users" - shareDir = "/Users" - // TODO "linux" and "windows" - } - - if shareDir != "" && !d.NoShare { - if _, err := os.Stat(shareDir); err != nil && !os.IsNotExist(err) { - return err - } else if !os.IsNotExist(err) { - // add shared folder, create mountpoint and mount it. - vmrun("-gu", B2DUser, "-gp", B2DPass, "addSharedFolder", d.vmxPath(), shareName, shareDir) - command := "[ ! -d " + shareDir + " ]&& sudo mkdir " + shareDir + "; sudo mount --bind /mnt/hgfs/" + shareDir + " " + shareDir + " || [ -f /usr/local/bin/vmhgfs-fuse ]&& sudo /usr/local/bin/vmhgfs-fuse -o allow_other .host:/" + shareName + " " + shareDir + " || sudo mount -t vmhgfs -o uid=$(id -u),gid=$(id -g) .host:/" + shareName + " " + shareDir - vmrun("-gu", B2DUser, "-gp", B2DPass, "runScriptInGuest", d.vmxPath(), "/bin/sh", command) - } - } - return nil -} - -func (d *Driver) Start() error { - vmrun("start", d.vmxPath(), "nogui") - - // Do not execute the rest of boot2docker specific configuration, exit here - if d.ConfigDriveURL != "" { - log.Debugf("Leaving start sequence early, configdrive found") - return nil - } - - log.Debugf("Mounting Shared Folders...") - var shareName, shareDir string // TODO configurable at some point - switch runtime.GOOS { - case "darwin": - shareName = "Users" - shareDir = "/Users" - // TODO "linux" and "windows" - } - - if shareDir != "" { - if _, err := os.Stat(shareDir); err != nil && !os.IsNotExist(err) { - return err - } else if !os.IsNotExist(err) { - // create mountpoint and mount shared folder - command := "[ ! -d " + shareDir + " ]&& sudo mkdir " + shareDir + "; sudo mount --bind /mnt/hgfs/" + shareDir + " " + shareDir + " || [ -f /usr/local/bin/vmhgfs-fuse ]&& sudo /usr/local/bin/vmhgfs-fuse -o allow_other .host:/" + shareName + " " + shareDir + " || sudo mount -t vmhgfs -o uid=$(id -u),gid=$(id -g) .host:/" + shareName + " " + shareDir - vmrun("-gu", B2DUser, "-gp", B2DPass, "runScriptInGuest", d.vmxPath(), "/bin/sh", command) - } - } - - return nil -} - -func (d *Driver) Stop() error { - _, _, err := vmrun("stop", d.vmxPath(), "nogui") - return err -} - -func (d *Driver) Restart() error { - // Stop VM gracefully - if err := d.Stop(); err != nil { - return err - } - // Start it again and mount shared folder - if err := d.Start(); err != nil { - return err - } - return nil -} - -func (d *Driver) Kill() error { - _, _, err := vmrun("stop", d.vmxPath(), "hard nogui") - return err -} - -func (d *Driver) Remove() error { - s, _ := d.GetState() - if s == state.Running { - if err := d.Kill(); err != nil { - return fmt.Errorf("Error stopping VM before deletion") - } - } - log.Infof("Deleting %s...", d.MachineName) - vmrun("deleteVM", d.vmxPath(), "nogui") - return nil -} - -func (d *Driver) Upgrade() error { - return fmt.Errorf("VMware Fusion does not currently support the upgrade operation") -} - -func (d *Driver) vmxPath() string { - return d.ResolveStorePath(fmt.Sprintf("%s.vmx", d.MachineName)) -} - -func (d *Driver) vmdkPath() string { - return d.ResolveStorePath(fmt.Sprintf("%s.vmdk", d.MachineName)) -} - -func (d *Driver) getMacAddressFromVmx() (string, error) { - var vmxfh *os.File - var vmxcontent []byte - var err error - - if vmxfh, err = os.Open(d.vmxPath()); err != nil { - return "", err - } - defer vmxfh.Close() - - if vmxcontent, err = ioutil.ReadAll(vmxfh); err != nil { - return "", err - } - - // Look for generatedAddress as we're passing a VMX with addressType = "generated". - var macaddr string - vmxparse := regexp.MustCompile(`^ethernet0.generatedAddress\s*=\s*"(.*?)"\s*$`) - for _, line := range strings.Split(string(vmxcontent), "\n") { - if matches := vmxparse.FindStringSubmatch(line); matches == nil { - continue - } else { - macaddr = strings.ToLower(matches[1]) - } - } - - if macaddr == "" { - return "", fmt.Errorf("couldn't find MAC address in VMX file %s", d.vmxPath()) - } - - log.Debugf("MAC address in VMX: %s", macaddr) - - return macaddr, nil -} - -func (d *Driver) getIPfromVmnetConfiguration(macaddr string) (string, error) { - - // DHCP lease table for NAT vmnet interface - confFiles, _ := filepath.Glob("/Library/Preferences/VMware Fusion/vmnet*/dhcpd.conf") - for _, conffile := range confFiles { - log.Debugf("Trying to find IP address in configuration file: %s", conffile) - if ipaddr, err := d.getIPfromVmnetConfigurationFile(conffile, macaddr); err == nil { - return ipaddr, err - } - } - - return "", fmt.Errorf("IP not found for MAC %s in vmnet configuration files", macaddr) -} - -func (d *Driver) getIPfromVmnetConfigurationFile(conffile, macaddr string) (string, error) { - var conffh *os.File - var confcontent []byte - - var currentip string - var lastipmatch string - var lastmacmatch string - - var err error - - if conffh, err = os.Open(conffile); err != nil { - return "", err - } - defer conffh.Close() - - if confcontent, err = ioutil.ReadAll(conffh); err != nil { - return "", err - } - - // find all occurences of 'host .* { .. }' and extract - // out of the inner block the MAC and IP addresses - - // key = MAC, value = IP - m := make(map[string]string) - - // Begin of a host block, that contains the IP, MAC - hostbegin := regexp.MustCompile(`^host (.+?) {`) - // End of a host block - hostend := regexp.MustCompile(`^}`) - - // Get the IP address. - ip := regexp.MustCompile(`^\s*fixed-address (.+?);$`) - // Get the MAC address associated. - mac := regexp.MustCompile(`^\s*hardware ethernet (.+?);$`) - - // we use a block depth so that just in case inner blocks exists - // we are not being fooled by them - blockdepth := 0 - for _, line := range strings.Split(string(confcontent), "\n") { - - if matches := hostbegin.FindStringSubmatch(line); matches != nil { - blockdepth = blockdepth + 1 - continue - } - - // we are only in intressted in endings if we in a block. Otherwise we will count - // ending of non host blocks as well - if matches := hostend.FindStringSubmatch(line); blockdepth > 0 && matches != nil { - blockdepth = blockdepth - 1 - - if blockdepth == 0 { - // add data - m[lastmacmatch] = lastipmatch - - // reset all temp var holders - lastipmatch = "" - lastmacmatch = "" - } - - continue - } - - // only if we are within the first level of a block - // we are looking for addresses to extract - if blockdepth == 1 { - if matches := ip.FindStringSubmatch(line); matches != nil { - lastipmatch = matches[1] - continue - } - - if matches := mac.FindStringSubmatch(line); matches != nil { - lastmacmatch = strings.ToLower(matches[1]) - continue - } - } - } - - log.Debugf("Following IPs found %s", m) - - // map is filled to now lets check if we have a MAC associated to an IP - currentip, ok := m[strings.ToLower(macaddr)] - - if !ok { - return "", fmt.Errorf("IP not found for MAC %s in vmnet configuration", macaddr) - } - - log.Debugf("IP found in vmnet configuration file: %s", currentip) - - return currentip, nil - -} - -func (d *Driver) getIPfromDHCPLease(macaddr string) (string, error) { - - // DHCP lease table for NAT vmnet interface - leasesFiles, _ := filepath.Glob("/var/db/vmware/*.leases") - for _, dhcpfile := range leasesFiles { - log.Debugf("Trying to find IP address in leases file: %s", dhcpfile) - if ipaddr, err := d.getIPfromDHCPLeaseFile(dhcpfile, macaddr); err == nil { - return ipaddr, err - } - } - - return "", fmt.Errorf("IP not found for MAC %s in DHCP leases", macaddr) -} - -func (d *Driver) getIPfromDHCPLeaseFile(dhcpfile, macaddr string) (string, error) { - - var dhcpfh *os.File - var dhcpcontent []byte - var lastipmatch string - var currentip string - var lastleaseendtime time.Time - var currentleadeendtime time.Time - var err error - - if dhcpfh, err = os.Open(dhcpfile); err != nil { - return "", err - } - defer dhcpfh.Close() - - if dhcpcontent, err = ioutil.ReadAll(dhcpfh); err != nil { - return "", err - } - - // Get the IP from the lease table. - leaseip := regexp.MustCompile(`^lease (.+?) {$`) - // Get the lease end date time. - leaseend := regexp.MustCompile(`^\s*ends \d (.+?);$`) - // Get the MAC address associated. - leasemac := regexp.MustCompile(`^\s*hardware ethernet (.+?);$`) - - for _, line := range strings.Split(string(dhcpcontent), "\n") { - - if matches := leaseip.FindStringSubmatch(line); matches != nil { - lastipmatch = matches[1] - continue - } - - if matches := leaseend.FindStringSubmatch(line); matches != nil { - lastleaseendtime, _ = time.Parse("2006/01/02 15:04:05", matches[1]) - continue - } - - if matches := leasemac.FindStringSubmatch(line); matches != nil && matches[1] == macaddr && currentleadeendtime.Before(lastleaseendtime) { - currentip = lastipmatch - currentleadeendtime = lastleaseendtime - } - } - - if currentip == "" { - return "", fmt.Errorf("IP not found for MAC %s in DHCP leases", macaddr) - } - - log.Debugf("IP found in DHCP lease table: %s", currentip) - - return currentip, nil -} - -func (d *Driver) publicSSHKeyPath() string { - return d.GetSSHKeyPath() + ".pub" -} - -// Make a boot2docker userdata.tar key bundle -func (d *Driver) generateKeyBundle() error { - log.Debugf("Creating Tar key bundle...") - - magicString := "boot2docker, this is vmware speaking" - - tf, err := os.Create(d.ResolveStorePath("userdata.tar")) - if err != nil { - return err - } - defer tf.Close() - var fileWriter = tf - - tw := tar.NewWriter(fileWriter) - defer tw.Close() - - // magicString first so we can figure out who originally wrote the tar. - file := &tar.Header{Name: magicString, Size: int64(len(magicString))} - if err := tw.WriteHeader(file); err != nil { - return err - } - if _, err := tw.Write([]byte(magicString)); err != nil { - return err - } - // .ssh/key.pub => authorized_keys - file = &tar.Header{Name: ".ssh", Typeflag: tar.TypeDir, Mode: 0700} - if err := tw.WriteHeader(file); err != nil { - return err - } - pubKey, err := ioutil.ReadFile(d.publicSSHKeyPath()) - if err != nil { - return err - } - file = &tar.Header{Name: ".ssh/authorized_keys", Size: int64(len(pubKey)), Mode: 0644} - if err := tw.WriteHeader(file); err != nil { - return err - } - if _, err := tw.Write([]byte(pubKey)); err != nil { - return err - } - file = &tar.Header{Name: ".ssh/authorized_keys2", Size: int64(len(pubKey)), Mode: 0644} - if err := tw.WriteHeader(file); err != nil { - return err - } - if _, err := tw.Write([]byte(pubKey)); err != nil { - return err - } - if err := tw.Close(); err != nil { - return err - } - - return nil - -} - -// execute command over SSH with user / password authentication -func executeSSHCommand(command string, d *Driver) error { - log.Debugf("Execute executeSSHCommand: %s", command) - - config := &cryptossh.ClientConfig{ - User: d.SSHUser, - Auth: []cryptossh.AuthMethod{ - cryptossh.Password(d.SSHPassword), - }, - } - - client, err := cryptossh.Dial("tcp", fmt.Sprintf("%s:%d", d.IPAddress, d.SSHPort), config) - if err != nil { - log.Debugf("Failed to dial:", err) - return err - } - - session, err := client.NewSession() - if err != nil { - log.Debugf("Failed to create session: " + err.Error()) - return err - } - defer session.Close() - - var b bytes.Buffer - session.Stdout = &b - - if err := session.Run(command); err != nil { - log.Debugf("Failed to run: " + err.Error()) - return err - } - log.Debugf("Stdout from executeSSHCommand: %s", b.String()) - - return nil -} diff --git a/vendor/github.com/docker/machine/drivers/vmwarefusion/fusion_darwin_test.go b/vendor/github.com/docker/machine/drivers/vmwarefusion/fusion_darwin_test.go deleted file mode 100644 index da58950f..00000000 --- a/vendor/github.com/docker/machine/drivers/vmwarefusion/fusion_darwin_test.go +++ /dev/null @@ -1,22 +0,0 @@ -package vmwarefusion - -import ( - "testing" - - "github.com/docker/machine/libmachine/drivers" - "github.com/stretchr/testify/assert" -) - -func TestSetConfigFromFlags(t *testing.T) { - driver := NewDriver("default", "path") - - checkFlags := &drivers.CheckDriverOptions{ - FlagsValues: map[string]interface{}{}, - CreateFlags: driver.GetCreateFlags(), - } - - err := driver.SetConfigFromFlags(checkFlags) - - assert.NoError(t, err) - assert.Empty(t, checkFlags.InvalidFlags) -} diff --git a/vendor/github.com/docker/machine/drivers/vmwarefusion/vmrun_darwin.go b/vendor/github.com/docker/machine/drivers/vmwarefusion/vmrun_darwin.go deleted file mode 100644 index 3039ea17..00000000 --- a/vendor/github.com/docker/machine/drivers/vmwarefusion/vmrun_darwin.go +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2014 VMware, Inc. All rights reserved. Licensed under the Apache v2 License. - */ - -package vmwarefusion - -import ( - "bytes" - "errors" - "fmt" - "os" - "os/exec" - "path/filepath" - "strings" - "syscall" - - "github.com/docker/machine/libmachine/log" -) - -var ( - vmrunbin = setVmwareCmd("vmrun") - vdiskmanbin = setVmwareCmd("vmware-vdiskmanager") -) - -var ( - ErrMachineExist = errors.New("machine already exists") - ErrMachineNotExist = errors.New("machine does not exist") - ErrVMRUNNotFound = errors.New("VMRUN not found") -) - -// detect the vmrun and vmware-vdiskmanager cmds' path if needed -func setVmwareCmd(cmd string) string { - if path, err := exec.LookPath(cmd); err == nil { - return path - } - return filepath.Join("/Applications/VMware Fusion.app/Contents/Library/", cmd) -} - -func vmrun(args ...string) (string, string, error) { - // vmrun with nogui on VMware Fusion through at least 8.0.1 doesn't work right - // if the umask is set to not allow world-readable permissions - _ = syscall.Umask(022) - cmd := exec.Command(vmrunbin, args...) - if os.Getenv("MACHINE_DEBUG") != "" { - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - } - - var stdout bytes.Buffer - var stderr bytes.Buffer - cmd.Stdout, cmd.Stderr = &stdout, &stderr - log.Debugf("executing: %v %v", vmrunbin, strings.Join(args, " ")) - - err := cmd.Run() - if err != nil { - if ee, ok := err.(*exec.Error); ok && ee == exec.ErrNotFound { - err = ErrVMRUNNotFound - } - } - - return stdout.String(), stderr.String(), err -} - -// Make a vmdk disk image with the given size (in MB). -func vdiskmanager(dest string, size int) error { - cmd := exec.Command(vdiskmanbin, "-c", "-t", "0", "-s", fmt.Sprintf("%dMB", size), "-a", "lsilogic", dest) - if os.Getenv("MACHINE_DEBUG") != "" { - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - } - - if stdout := cmd.Run(); stdout != nil { - if ee, ok := stdout.(*exec.Error); ok && ee == exec.ErrNotFound { - return ErrVMRUNNotFound - } - } - return nil -} diff --git a/vendor/github.com/docker/machine/drivers/vmwarefusion/vmx_darwin.go b/vendor/github.com/docker/machine/drivers/vmwarefusion/vmx_darwin.go deleted file mode 100644 index 0ca6e63b..00000000 --- a/vendor/github.com/docker/machine/drivers/vmwarefusion/vmx_darwin.go +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2014 VMware, Inc. All rights reserved. Licensed under the Apache v2 License. - */ - -package vmwarefusion - -const vmx = ` -.encoding = "UTF-8" -config.version = "8" -displayName = "{{.MachineName}}" -ethernet0.present = "TRUE" -ethernet0.connectionType = "nat" -ethernet0.virtualDev = "vmxnet3" -ethernet0.wakeOnPcktRcv = "FALSE" -ethernet0.addressType = "generated" -ethernet0.linkStatePropagation.enable = "TRUE" -pciBridge0.present = "TRUE" -pciBridge4.present = "TRUE" -pciBridge4.virtualDev = "pcieRootPort" -pciBridge4.functions = "8" -pciBridge5.present = "TRUE" -pciBridge5.virtualDev = "pcieRootPort" -pciBridge5.functions = "8" -pciBridge6.present = "TRUE" -pciBridge6.virtualDev = "pcieRootPort" -pciBridge6.functions = "8" -pciBridge7.present = "TRUE" -pciBridge7.virtualDev = "pcieRootPort" -pciBridge7.functions = "8" -pciBridge0.pciSlotNumber = "17" -pciBridge4.pciSlotNumber = "21" -pciBridge5.pciSlotNumber = "22" -pciBridge6.pciSlotNumber = "23" -pciBridge7.pciSlotNumber = "24" -scsi0.pciSlotNumber = "160" -usb.pciSlotNumber = "32" -ethernet0.pciSlotNumber = "192" -sound.pciSlotNumber = "33" -vmci0.pciSlotNumber = "35" -sata0.pciSlotNumber = "36" -floppy0.present = "FALSE" -guestOS = "other3xlinux-64" -hpet0.present = "TRUE" -sata0.present = "TRUE" -sata0:1.present = "TRUE" -sata0:1.fileName = "{{.ISO}}" -sata0:1.deviceType = "cdrom-image" -{{ if .ConfigDriveURL }} -sata0:2.present = "TRUE" -sata0:2.fileName = "{{.ConfigDriveISO}}" -sata0:2.deviceType = "cdrom-image" -{{ end }} -vmci0.present = "TRUE" -mem.hotadd = "TRUE" -memsize = "{{.Memory}}" -powerType.powerOff = "soft" -powerType.powerOn = "soft" -powerType.reset = "soft" -powerType.suspend = "soft" -scsi0.present = "TRUE" -scsi0.virtualDev = "pvscsi" -scsi0:0.fileName = "{{.MachineName}}.vmdk" -scsi0:0.present = "TRUE" -tools.synctime = "TRUE" -virtualHW.productCompatibility = "hosted" -virtualHW.version = "10" -msg.autoanswer = "TRUE" -uuid.action = "create" -numvcpus = "{{.CPU}}" -hgfs.mapRootShare = "FALSE" -hgfs.linkRootShare = "FALSE" -` diff --git a/vendor/github.com/docker/machine/drivers/vmwarevcloudair/vcloudair.go b/vendor/github.com/docker/machine/drivers/vmwarevcloudair/vcloudair.go deleted file mode 100644 index b4ebd730..00000000 --- a/vendor/github.com/docker/machine/drivers/vmwarevcloudair/vcloudair.go +++ /dev/null @@ -1,624 +0,0 @@ -/* - * Copyright 2014 VMware, Inc. All rights reserved. Licensed under the Apache v2 License. - */ - -package vmwarevcloudair - -import ( - "fmt" - "io/ioutil" - "net" - "strconv" - "strings" - - "github.com/vmware/govcloudair" - - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnflag" - "github.com/docker/machine/libmachine/mcnutils" - "github.com/docker/machine/libmachine/ssh" - "github.com/docker/machine/libmachine/state" -) - -type Driver struct { - *drivers.BaseDriver - UserName string - UserPassword string - ComputeID string - VDCID string - OrgVDCNet string - EdgeGateway string - PublicIP string - Catalog string - CatalogItem string - DockerPort int - CPUCount int - MemorySize int - VAppID string -} - -const ( - defaultCatalog = "Public Catalog" - defaultCatalogItem = "Ubuntu Server 12.04 LTS (amd64 20150127)" - defaultCpus = 1 - defaultMemory = 2048 - defaultSSHPort = 22 - defaultDockerPort = 2376 -) - -// GetCreateFlags registers the flags this driver adds to -// "docker hosts create" -func (d *Driver) GetCreateFlags() []mcnflag.Flag { - return []mcnflag.Flag{ - mcnflag.StringFlag{ - EnvVar: "VCLOUDAIR_USERNAME", - Name: "vmwarevcloudair-username", - Usage: "vCloud Air username", - }, - mcnflag.StringFlag{ - EnvVar: "VCLOUDAIR_PASSWORD", - Name: "vmwarevcloudair-password", - Usage: "vCloud Air password", - }, - mcnflag.StringFlag{ - EnvVar: "VCLOUDAIR_COMPUTEID", - Name: "vmwarevcloudair-computeid", - Usage: "vCloud Air Compute ID (if using Dedicated Cloud)", - }, - mcnflag.StringFlag{ - EnvVar: "VCLOUDAIR_VDCID", - Name: "vmwarevcloudair-vdcid", - Usage: "vCloud Air VDC ID", - }, - mcnflag.StringFlag{ - EnvVar: "VCLOUDAIR_ORGVDCNETWORK", - Name: "vmwarevcloudair-orgvdcnetwork", - Usage: "vCloud Air Org VDC Network (Default is -default-routed)", - }, - mcnflag.StringFlag{ - EnvVar: "VCLOUDAIR_EDGEGATEWAY", - Name: "vmwarevcloudair-edgegateway", - Usage: "vCloud Air Org Edge Gateway (Default is )", - }, - mcnflag.StringFlag{ - EnvVar: "VCLOUDAIR_PUBLICIP", - Name: "vmwarevcloudair-publicip", - Usage: "vCloud Air Org Public IP to use", - }, - mcnflag.StringFlag{ - EnvVar: "VCLOUDAIR_CATALOG", - Name: "vmwarevcloudair-catalog", - Usage: "vCloud Air Catalog (default is Public Catalog)", - Value: defaultCatalog, - }, - mcnflag.StringFlag{ - EnvVar: "VCLOUDAIR_CATALOGITEM", - Name: "vmwarevcloudair-catalogitem", - Usage: "vCloud Air Catalog Item (default is Ubuntu Precise)", - Value: defaultCatalogItem, - }, - mcnflag.IntFlag{ - EnvVar: "VCLOUDAIR_CPU_COUNT", - Name: "vmwarevcloudair-cpu-count", - Usage: "vCloud Air VM Cpu Count (default 1)", - Value: defaultCpus, - }, - mcnflag.IntFlag{ - EnvVar: "VCLOUDAIR_MEMORY_SIZE", - Name: "vmwarevcloudair-memory-size", - Usage: "vCloud Air VM Memory Size in MB (default 2048)", - Value: defaultMemory, - }, - mcnflag.IntFlag{ - EnvVar: "VCLOUDAIR_SSH_PORT", - Name: "vmwarevcloudair-ssh-port", - Usage: "vCloud Air SSH port", - Value: defaultSSHPort, - }, - mcnflag.IntFlag{ - EnvVar: "VCLOUDAIR_DOCKER_PORT", - Name: "vmwarevcloudair-docker-port", - Usage: "vCloud Air Docker port", - Value: defaultDockerPort, - }, - } -} - -func NewDriver(hostName, storePath string) drivers.Driver { - return &Driver{ - Catalog: defaultCatalog, - CatalogItem: defaultCatalogItem, - CPUCount: defaultCpus, - MemorySize: defaultMemory, - DockerPort: defaultDockerPort, - BaseDriver: &drivers.BaseDriver{ - SSHPort: defaultSSHPort, - MachineName: hostName, - StorePath: storePath, - }, - } -} - -func (d *Driver) GetSSHHostname() (string, error) { - return d.GetIP() -} - -// DriverName returns the name of the driver -func (d *Driver) DriverName() string { - return "vmwarevcloudair" -} - -func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error { - - d.UserName = flags.String("vmwarevcloudair-username") - d.UserPassword = flags.String("vmwarevcloudair-password") - d.VDCID = flags.String("vmwarevcloudair-vdcid") - d.PublicIP = flags.String("vmwarevcloudair-publicip") - d.SetSwarmConfigFromFlags(flags) - - // Check for required Params - if d.UserName == "" || d.UserPassword == "" || d.VDCID == "" || d.PublicIP == "" { - return fmt.Errorf("Please specify vcloudair mandatory params using options: -vmwarevcloudair-username -vmwarevcloudair-password -vmwarevcloudair-vdcid and -vmwarevcloudair-publicip") - } - - // If ComputeID is not set we're using a VPC, hence setting ComputeID = VDCID - if flags.String("vmwarevcloudair-computeid") == "" { - d.ComputeID = flags.String("vmwarevcloudair-vdcid") - } else { - d.ComputeID = flags.String("vmwarevcloudair-computeid") - } - - // If the Org VDC Network is empty, set it to the default routed network. - if flags.String("vmwarevcloudair-orgvdcnetwork") == "" { - d.OrgVDCNet = flags.String("vmwarevcloudair-vdcid") + "-default-routed" - } else { - d.OrgVDCNet = flags.String("vmwarevcloudair-orgvdcnetwork") - } - - // If the Edge Gateway is empty, just set it to the default edge gateway. - if flags.String("vmwarevcloudair-edgegateway") == "" { - d.EdgeGateway = flags.String("vmwarevcloudair-vdcid") - } else { - d.EdgeGateway = flags.String("vmwarevcloudair-edgegateway") - } - - d.Catalog = flags.String("vmwarevcloudair-catalog") - d.CatalogItem = flags.String("vmwarevcloudair-catalogitem") - - d.DockerPort = flags.Int("vmwarevcloudair-docker-port") - d.SSHUser = "root" - d.SSHPort = flags.Int("vmwarevcloudair-ssh-port") - d.CPUCount = flags.Int("vmwarevcloudair-cpu-count") - d.MemorySize = flags.Int("vmwarevcloudair-memory-size") - - return nil -} - -func (d *Driver) GetURL() (string, error) { - if err := drivers.MustBeRunning(d); err != nil { - return "", err - } - - return fmt.Sprintf("tcp://%s", net.JoinHostPort(d.PublicIP, strconv.Itoa(d.DockerPort))), nil -} - -func (d *Driver) GetIP() (string, error) { - return d.PublicIP, nil -} - -func (d *Driver) GetState() (state.State, error) { - p, err := govcloudair.NewClient() - if err != nil { - return state.Error, err - } - - log.Debug("Connecting to vCloud Air to fetch vApp Status...") - // Authenticate to vCloud Air - v, err := p.Authenticate(d.UserName, d.UserPassword, d.ComputeID, d.VDCID) - if err != nil { - return state.Error, err - } - - vapp, err := v.FindVAppByID(d.VAppID) - if err != nil { - return state.Error, err - } - - status, err := vapp.GetStatus() - if err != nil { - return state.Error, err - } - - if err = p.Disconnect(); err != nil { - return state.Error, err - } - - switch status { - case "POWERED_ON": - return state.Running, nil - case "POWERED_OFF": - return state.Stopped, nil - } - return state.None, nil -} - -func (d *Driver) Create() error { - key, err := d.createSSHKey() - if err != nil { - return err - } - - p, err := govcloudair.NewClient() - if err != nil { - return err - } - - log.Infof("Connecting to vCloud Air...") - // Authenticate to vCloud Air - v, err := p.Authenticate(d.UserName, d.UserPassword, d.ComputeID, d.VDCID) - if err != nil { - return err - } - - // Find VDC Network - net, err := v.FindVDCNetwork(d.OrgVDCNet) - if err != nil { - return err - } - - // Find our Edge Gateway - edge, err := v.FindEdgeGateway(d.EdgeGateway) - if err != nil { - return err - } - - // Get the Org our VDC belongs to - org, err := v.GetVDCOrg() - if err != nil { - return err - } - - // Find our Catalog - cat, err := org.FindCatalog(d.Catalog) - if err != nil { - return err - } - - // Find our Catalog Item - cati, err := cat.FindCatalogItem(d.CatalogItem) - if err != nil { - return err - } - - // Fetch the vApp Template in the Catalog Item - vapptemplate, err := cati.GetVAppTemplate() - if err != nil { - return err - } - - // Create a new empty vApp - vapp := govcloudair.NewVApp(p) - - log.Infof("Creating a new vApp: %s...", d.MachineName) - // Compose the vApp with ComposeVApp - task, err := vapp.ComposeVApp(net, vapptemplate, d.MachineName, "Container Host created with Docker Host") - if err != nil { - return err - } - - // Wait for the creation to be completed - if err = task.WaitTaskCompletion(); err != nil { - return err - } - - task, err = vapp.ChangeCPUcount(d.CPUCount) - if err != nil { - return err - } - - if err = task.WaitTaskCompletion(); err != nil { - return err - } - - task, err = vapp.ChangeMemorySize(d.MemorySize) - if err != nil { - return err - } - - if err = task.WaitTaskCompletion(); err != nil { - return err - } - - sshCustomScript := "echo \"" + strings.TrimSpace(key) + "\" > /root/.ssh/authorized_keys" - - task, err = vapp.RunCustomizationScript(d.MachineName, sshCustomScript) - if err != nil { - return err - } - - if err = task.WaitTaskCompletion(); err != nil { - return err - } - - task, err = vapp.PowerOn() - if err != nil { - return err - } - - log.Infof("Waiting for the VM to power on and run the customization script...") - - if err = task.WaitTaskCompletion(); err != nil { - return err - } - - log.Infof("Creating NAT and Firewall Rules on %s...", d.EdgeGateway) - task, err = edge.Create1to1Mapping(vapp.VApp.Children.VM[0].NetworkConnectionSection.NetworkConnection.IPAddress, d.PublicIP, d.MachineName) - if err != nil { - return err - } - - if err = task.WaitTaskCompletion(); err != nil { - return err - } - - log.Debugf("Disconnecting from vCloud Air...") - - if err = p.Disconnect(); err != nil { - return err - } - - // Set VAppID with ID of the created VApp - d.VAppID = vapp.VApp.ID - - d.IPAddress, err = d.GetIP() - return err -} - -func (d *Driver) Remove() error { - p, err := govcloudair.NewClient() - if err != nil { - return err - } - - log.Infof("Connecting to vCloud Air...") - // Authenticate to vCloud Air - v, err := p.Authenticate(d.UserName, d.UserPassword, d.ComputeID, d.VDCID) - if err != nil { - return err - } - - // Find our Edge Gateway - edge, err := v.FindEdgeGateway(d.EdgeGateway) - if err != nil { - return err - } - - vapp, err := v.FindVAppByID(d.VAppID) - if err != nil { - log.Infof("Can't find the vApp, assuming it was deleted already...") - return nil - } - - status, err := vapp.GetStatus() - if err != nil { - return err - } - - log.Infof("Removing NAT and Firewall Rules on %s...", d.EdgeGateway) - task, err := edge.Remove1to1Mapping(vapp.VApp.Children.VM[0].NetworkConnectionSection.NetworkConnection.IPAddress, d.PublicIP) - if err != nil { - return err - } - if err = task.WaitTaskCompletion(); err != nil { - return err - } - - if status == "POWERED_ON" { - // If it's powered on, power it off before deleting - log.Infof("Powering Off %s...", d.MachineName) - task, err = vapp.PowerOff() - if err != nil { - return err - } - if err = task.WaitTaskCompletion(); err != nil { - return err - } - - } - - log.Debugf("Undeploying %s...", d.MachineName) - task, err = vapp.Undeploy() - if err != nil { - return err - } - if err = task.WaitTaskCompletion(); err != nil { - return err - } - - log.Infof("Deleting %s...", d.MachineName) - task, err = vapp.Delete() - if err != nil { - return err - } - if err = task.WaitTaskCompletion(); err != nil { - return err - } - - if err = p.Disconnect(); err != nil { - return err - } - - return nil -} - -func (d *Driver) Start() error { - p, err := govcloudair.NewClient() - if err != nil { - return err - } - - log.Infof("Connecting to vCloud Air...") - // Authenticate to vCloud Air - v, err := p.Authenticate(d.UserName, d.UserPassword, d.ComputeID, d.VDCID) - if err != nil { - return err - } - - vapp, err := v.FindVAppByID(d.VAppID) - if err != nil { - return err - } - - status, err := vapp.GetStatus() - if err != nil { - return err - } - - if status == "POWERED_OFF" { - log.Infof("Starting %s...", d.MachineName) - task, err := vapp.PowerOn() - if err != nil { - return err - } - if err = task.WaitTaskCompletion(); err != nil { - return err - } - - } - - if err = p.Disconnect(); err != nil { - return err - } - - d.IPAddress, err = d.GetIP() - return err -} - -func (d *Driver) Stop() error { - p, err := govcloudair.NewClient() - if err != nil { - return err - } - - log.Infof("Connecting to vCloud Air...") - // Authenticate to vCloud Air - v, err := p.Authenticate(d.UserName, d.UserPassword, d.ComputeID, d.VDCID) - if err != nil { - return err - } - - vapp, err := v.FindVAppByID(d.VAppID) - if err != nil { - return err - } - - task, err := vapp.Shutdown() - if err != nil { - return err - } - if err = task.WaitTaskCompletion(); err != nil { - return err - } - - if err = p.Disconnect(); err != nil { - return err - } - - d.IPAddress = "" - - return nil -} - -func (d *Driver) Restart() error { - p, err := govcloudair.NewClient() - if err != nil { - return err - } - - log.Infof("Connecting to vCloud Air...") - // Authenticate to vCloud Air - v, err := p.Authenticate(d.UserName, d.UserPassword, d.ComputeID, d.VDCID) - if err != nil { - return err - } - - vapp, err := v.FindVAppByID(d.VAppID) - if err != nil { - return err - } - - task, err := vapp.Reset() - if err != nil { - return err - } - if err = task.WaitTaskCompletion(); err != nil { - return err - } - - if err = p.Disconnect(); err != nil { - return err - } - - d.IPAddress, err = d.GetIP() - return err -} - -func (d *Driver) Kill() error { - p, err := govcloudair.NewClient() - if err != nil { - return err - } - - log.Infof("Connecting to vCloud Air...") - // Authenticate to vCloud Air - v, err := p.Authenticate(d.UserName, d.UserPassword, d.ComputeID, d.VDCID) - if err != nil { - return err - } - - vapp, err := v.FindVAppByID(d.VAppID) - if err != nil { - return err - } - - task, err := vapp.PowerOff() - if err != nil { - return err - } - if err = task.WaitTaskCompletion(); err != nil { - return err - } - - if err = p.Disconnect(); err != nil { - return err - } - - d.IPAddress = "" - - return nil -} - -// Helpers - -func generateVMName() string { - randomID := mcnutils.TruncateID(mcnutils.GenerateRandomID()) - return fmt.Sprintf("docker-host-%s", randomID) -} - -func (d *Driver) createSSHKey() (string, error) { - if err := ssh.GenerateSSHKey(d.GetSSHKeyPath()); err != nil { - return "", err - } - - publicKey, err := ioutil.ReadFile(d.publicSSHKeyPath()) - if err != nil { - return "", err - } - - return string(publicKey), nil -} - -func (d *Driver) publicSSHKeyPath() string { - return d.GetSSHKeyPath() + ".pub" -} diff --git a/vendor/github.com/docker/machine/drivers/vmwarevcloudair/vcloudlair_test.go b/vendor/github.com/docker/machine/drivers/vmwarevcloudair/vcloudlair_test.go deleted file mode 100644 index e92ee558..00000000 --- a/vendor/github.com/docker/machine/drivers/vmwarevcloudair/vcloudlair_test.go +++ /dev/null @@ -1,27 +0,0 @@ -package vmwarevcloudair - -import ( - "testing" - - "github.com/docker/machine/libmachine/drivers" - "github.com/stretchr/testify/assert" -) - -func TestSetConfigFromFlags(t *testing.T) { - driver := NewDriver("default", "path") - - checkFlags := &drivers.CheckDriverOptions{ - FlagsValues: map[string]interface{}{ - "vmwarevcloudair-username": "root", - "vmwarevcloudair-password": "pwd", - "vmwarevcloudair-vdcid": "ID", - "vmwarevcloudair-publicip": "IP", - }, - CreateFlags: driver.GetCreateFlags(), - } - - err := driver.SetConfigFromFlags(checkFlags) - - assert.NoError(t, err) - assert.Empty(t, checkFlags.InvalidFlags) -} diff --git a/vendor/github.com/docker/machine/drivers/vmwarevsphere/vsphere.go b/vendor/github.com/docker/machine/drivers/vmwarevsphere/vsphere.go deleted file mode 100644 index f83f7bfc..00000000 --- a/vendor/github.com/docker/machine/drivers/vmwarevsphere/vsphere.go +++ /dev/null @@ -1,888 +0,0 @@ -/* - * Copyright 2014 VMware, Inc. All rights reserved. Licensed under the Apache v2 License. - */ - -package vmwarevsphere - -import ( - "archive/tar" - "fmt" - "io/ioutil" - "net" - "net/url" - "os" - "strings" - "time" - - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnflag" - "github.com/docker/machine/libmachine/mcnutils" - "github.com/docker/machine/libmachine/ssh" - "github.com/docker/machine/libmachine/state" - - "errors" - - "github.com/vmware/govmomi" - "github.com/vmware/govmomi/find" - "github.com/vmware/govmomi/guest" - "github.com/vmware/govmomi/object" - "github.com/vmware/govmomi/vim25/mo" - "github.com/vmware/govmomi/vim25/soap" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -const ( - isoFilename = "boot2docker.iso" - // B2DUser is the guest User for tools login - B2DUser = "docker" - // B2DPass is the guest Pass for tools login - B2DPass = "tcuser" -) - -type Driver struct { - *drivers.BaseDriver - Memory int - DiskSize int - CPU int - ISO string - Boot2DockerURL string - CPUS int - - IP string - Port int - Username string - Password string - Network string - Datastore string - Datacenter string - Pool string - HostSystem string - - SSHPassword string -} - -const ( - defaultSSHUser = B2DUser - defaultSSHPass = B2DPass - defaultCpus = 2 - defaultMemory = 2048 - defaultDiskSize = 20480 - defaultSDKPort = 443 -) - -// GetCreateFlags registers the flags this driver adds to -// "docker-machine create" -func (d *Driver) GetCreateFlags() []mcnflag.Flag { - return []mcnflag.Flag{ - mcnflag.IntFlag{ - EnvVar: "VSPHERE_CPU_COUNT", - Name: "vmwarevsphere-cpu-count", - Usage: "vSphere CPU number for docker VM", - Value: defaultCpus, - }, - mcnflag.IntFlag{ - EnvVar: "VSPHERE_MEMORY_SIZE", - Name: "vmwarevsphere-memory-size", - Usage: "vSphere size of memory for docker VM (in MB)", - Value: defaultMemory, - }, - mcnflag.IntFlag{ - EnvVar: "VSPHERE_DISK_SIZE", - Name: "vmwarevsphere-disk-size", - Usage: "vSphere size of disk for docker VM (in MB)", - Value: defaultDiskSize, - }, - mcnflag.StringFlag{ - EnvVar: "VSPHERE_BOOT2DOCKER_URL", - Name: "vmwarevsphere-boot2docker-url", - Usage: "vSphere URL for boot2docker image", - }, - mcnflag.StringFlag{ - EnvVar: "VSPHERE_VCENTER", - Name: "vmwarevsphere-vcenter", - Usage: "vSphere IP/hostname for vCenter", - }, - mcnflag.IntFlag{ - EnvVar: "VSPHERE_VCENTER_PORT", - Name: "vmwarevsphere-vcenter-port", - Usage: "vSphere Port for vCenter", - Value: defaultSDKPort, - }, - mcnflag.StringFlag{ - EnvVar: "VSPHERE_USERNAME", - Name: "vmwarevsphere-username", - Usage: "vSphere username", - }, - mcnflag.StringFlag{ - EnvVar: "VSPHERE_PASSWORD", - Name: "vmwarevsphere-password", - Usage: "vSphere password", - }, - mcnflag.StringFlag{ - EnvVar: "VSPHERE_NETWORK", - Name: "vmwarevsphere-network", - Usage: "vSphere network where the docker VM will be attached", - }, - mcnflag.StringFlag{ - EnvVar: "VSPHERE_DATASTORE", - Name: "vmwarevsphere-datastore", - Usage: "vSphere datastore for docker VM", - }, - mcnflag.StringFlag{ - EnvVar: "VSPHERE_DATACENTER", - Name: "vmwarevsphere-datacenter", - Usage: "vSphere datacenter for docker VM", - }, - mcnflag.StringFlag{ - EnvVar: "VSPHERE_POOL", - Name: "vmwarevsphere-pool", - Usage: "vSphere resource pool for docker VM", - }, - mcnflag.StringFlag{ - EnvVar: "VSPHERE_HOSTSYSTEM", - Name: "vmwarevsphere-hostsystem", - Usage: "vSphere compute resource where the docker VM will be instantiated (use /* or / if using a cluster)", - }, - } -} - -func NewDriver(hostName, storePath string) drivers.Driver { - return &Driver{ - CPUS: defaultCpus, - Memory: defaultMemory, - DiskSize: defaultDiskSize, - SSHPassword: defaultSSHPass, - Port: defaultSDKPort, - BaseDriver: &drivers.BaseDriver{ - SSHUser: defaultSSHUser, - MachineName: hostName, - StorePath: storePath, - }, - } -} - -func (d *Driver) GetSSHHostname() (string, error) { - return d.GetIP() -} - -func (d *Driver) GetSSHUsername() string { - if d.SSHUser == "" { - d.SSHUser = "docker" - } - - return d.SSHUser -} - -// DriverName returns the name of the driver -func (d *Driver) DriverName() string { - return "vmwarevsphere" -} - -func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error { - if drivers.EngineInstallURLFlagSet(flags) { - return errors.New("--engine-install-url cannot be used with the vmwarevsphere driver, use --vmwarevsphere-boot2docker-url instead") - } - d.SSHUser = "docker" - d.SSHPort = 22 - d.CPU = flags.Int("vmwarevsphere-cpu-count") - d.Memory = flags.Int("vmwarevsphere-memory-size") - d.DiskSize = flags.Int("vmwarevsphere-disk-size") - d.Boot2DockerURL = flags.String("vmwarevsphere-boot2docker-url") - d.IP = flags.String("vmwarevsphere-vcenter") - d.Port = flags.Int("vmwarevsphere-vcenter-port") - d.Username = flags.String("vmwarevsphere-username") - d.Password = flags.String("vmwarevsphere-password") - d.Network = flags.String("vmwarevsphere-network") - d.Datastore = flags.String("vmwarevsphere-datastore") - d.Datacenter = flags.String("vmwarevsphere-datacenter") - d.Pool = flags.String("vmwarevsphere-pool") - d.HostSystem = flags.String("vmwarevsphere-hostsystem") - d.SetSwarmConfigFromFlags(flags) - - d.ISO = d.ResolveStorePath(isoFilename) - - return nil -} - -func (d *Driver) GetURL() (string, error) { - - ip, err := d.GetIP() - if err != nil { - return "", err - } - if ip == "" { - return "", nil - } - return fmt.Sprintf("tcp://%s", net.JoinHostPort(ip, "2376")), nil -} - -func (d *Driver) GetIP() (string, error) { - status, err := d.GetState() - if status != state.Running { - return "", drivers.ErrHostIsNotRunning - } - - // Create context - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - - c, err := d.vsphereLogin(ctx) - if err != nil { - return "", err - } - defer c.Logout(ctx) - - vm, err := d.fetchVM(c, ctx, d.MachineName) - if err != nil { - return "", err - } - - configuredMacIPs, err := vm.WaitForNetIP(ctx, false) - if err != nil { - return "", err - } - - for _, ips := range configuredMacIPs { - if len(ips) >= 0 { - // Prefer IPv4 address, but fall back to first/IPv6 - preferredIP := ips[0] - for _, ip := range ips { - if net.ParseIP(ip).To4() != nil { - preferredIP = ip - break - } - } - return preferredIP, nil - } - } - - return "", errors.New("No IP despite waiting for one - check DHCP status") -} - -func (d *Driver) GetState() (state.State, error) { - - // Create context - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - - c, err := d.vsphereLogin(ctx) - if err != nil { - return state.None, err - } - defer c.Logout(ctx) - - vm, err := d.fetchVM(c, ctx, d.MachineName) - if err != nil { - return state.None, err - } - - var mvm mo.VirtualMachine - - err = c.RetrieveOne(ctx, vm.Reference(), nil, &mvm) - if err != nil { - return state.None, nil - } - - s := mvm.Summary - - if strings.Contains(string(s.Runtime.PowerState), "poweredOn") { - return state.Running, nil - } else if strings.Contains(string(s.Runtime.PowerState), "poweredOff") { - return state.Stopped, nil - } - return state.None, nil -} - -// PreCreateCheck checks that the machine creation process can be started safely. -func (d *Driver) PreCreateCheck() error { - log.Debug("Connecting to vSphere for pre-create checks...") - // Create context - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - - c, err := d.vsphereLogin(ctx) - if err != nil { - return err - } - defer c.Logout(ctx) - - // Create a new finder - f := find.NewFinder(c.Client, true) - - dc, err := f.DatacenterOrDefault(ctx, d.Datacenter) - if err != nil { - return err - } - - f.SetDatacenter(dc) - - if _, err := f.DatastoreOrDefault(ctx, d.Datastore); err != nil { - return err - } - - if _, err := f.NetworkOrDefault(ctx, d.Network); err != nil { - return err - } - - hs, err := f.HostSystemOrDefault(ctx, d.HostSystem) - if err != nil { - return err - } - - // ResourcePool - if d.Pool != "" { - // Find specified Resource Pool - if _, err := f.ResourcePool(ctx, d.Pool); err != nil { - return err - } - } else { - // Pick default Resource Pool for Host System - if _, err := hs.ResourcePool(ctx); err != nil { - return err - } - } - - return nil -} - -// Create has the following implementation: -// 1. check whether the docker directory contains the boot2docker ISO -// 2. generate an SSH keypair and bundle it in a tar. -// 3. create a virtual machine with the boot2docker ISO mounted; -// 4. reconfigure the virtual machine network and disk size; -func (d *Driver) Create() error { - b2dutils := mcnutils.NewB2dUtils(d.StorePath) - if err := b2dutils.CopyIsoToMachineDir(d.Boot2DockerURL, d.MachineName); err != nil { - return err - } - - log.Infof("Generating SSH Keypair...") - if err := ssh.GenerateSSHKey(d.GetSSHKeyPath()); err != nil { - return err - } - - // Create context - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - - c, err := d.vsphereLogin(ctx) - if err != nil { - return err - } - defer c.Logout(ctx) - - // Create a new finder - f := find.NewFinder(c.Client, true) - - dc, err := f.DatacenterOrDefault(ctx, d.Datacenter) - if err != nil { - return err - } - - f.SetDatacenter(dc) - - dss, err := f.DatastoreOrDefault(ctx, d.Datastore) - if err != nil { - return err - } - - net, err := f.NetworkOrDefault(ctx, d.Network) - if err != nil { - return err - } - - hs, err := f.HostSystemOrDefault(ctx, d.HostSystem) - if err != nil { - return err - } - - var rp *object.ResourcePool - if d.Pool != "" { - // Find specified Resource Pool - rp, err = f.ResourcePool(ctx, d.Pool) - if err != nil { - return err - } - } else { - // Pick default Resource Pool for Host System - rp, err = hs.ResourcePool(ctx) - if err != nil { - return err - } - } - - spec := types.VirtualMachineConfigSpec{ - Name: d.MachineName, - GuestId: "otherLinux64Guest", - Files: &types.VirtualMachineFileInfo{VmPathName: fmt.Sprintf("[%s]", dss.Name())}, - NumCPUs: int32(d.CPU), - MemoryMB: int64(d.Memory), - } - - scsi, err := object.SCSIControllerTypes().CreateSCSIController("pvscsi") - if err != nil { - return err - } - - spec.DeviceChange = append(spec.DeviceChange, &types.VirtualDeviceConfigSpec{ - Operation: types.VirtualDeviceConfigSpecOperationAdd, - Device: scsi, - }) - - log.Infof("Creating VM...") - folders, err := dc.Folders(ctx) - task, err := folders.VmFolder.CreateVM(ctx, spec, rp, hs) - if err != nil { - return err - } - - info, err := task.WaitForResult(ctx, nil) - if err != nil { - return err - } - - log.Infof("Uploading Boot2docker ISO ...") - dsurl, err := dss.URL(ctx, dc, fmt.Sprintf("%s/%s", d.MachineName, isoFilename)) - if err != nil { - return err - } - p := soap.DefaultUpload - if err = c.Client.UploadFile(d.ISO, dsurl, &p); err != nil { - return err - } - - // Retrieve the new VM - vm := object.NewVirtualMachine(c.Client, info.Result.(types.ManagedObjectReference)) - - devices, err := vm.Device(ctx) - if err != nil { - return err - } - - var add []types.BaseVirtualDevice - - controller, err := devices.FindDiskController("scsi") - if err != nil { - return err - } - - disk := devices.CreateDisk(controller, dss.Reference(), - dss.Path(fmt.Sprintf("%s/%s.vmdk", d.MachineName, d.MachineName))) - - // Convert MB to KB - disk.CapacityInKB = int64(d.DiskSize) * 1024 - - add = append(add, disk) - ide, err := devices.FindIDEController("") - if err != nil { - return err - } - - cdrom, err := devices.CreateCdrom(ide) - if err != nil { - return err - } - - add = append(add, devices.InsertIso(cdrom, dss.Path(fmt.Sprintf("%s/%s", d.MachineName, isoFilename)))) - - backing, err := net.EthernetCardBackingInfo(ctx) - if err != nil { - return err - } - - netdev, err := object.EthernetCardTypes().CreateEthernetCard("vmxnet3", backing) - if err != nil { - return err - } - - log.Infof("Reconfiguring VM...") - add = append(add, netdev) - if vm.AddDevice(ctx, add...); err != nil { - return err - } - - if err := d.Start(); err != nil { - return err - } - - log.Infof("Provisioning certs and ssh keys...") - // Generate a tar keys bundle - if err := d.generateKeyBundle(); err != nil { - return err - } - - opman := guest.NewOperationsManager(c.Client, vm.Reference()) - - fileman, err := opman.FileManager(ctx) - if err != nil { - return err - } - - src := d.ResolveStorePath("userdata.tar") - s, err := os.Stat(src) - if err != nil { - return err - } - - auth := AuthFlag{} - flag := FileAttrFlag{} - auth.auth.Username = B2DUser - auth.auth.Password = B2DPass - flag.SetPerms(0, 0, 660) - url, err := fileman.InitiateFileTransferToGuest(ctx, auth.Auth(), "/home/docker/userdata.tar", flag.Attr(), s.Size(), true) - if err != nil { - return err - } - u, err := c.Client.ParseURL(url) - if err != nil { - return err - } - if err = c.Client.UploadFile(src, u, nil); err != nil { - return err - } - - procman, err := opman.ProcessManager(ctx) - if err != nil { - return err - } - - var env []string - guestspec := types.GuestProgramSpec{ - ProgramPath: "/usr/bin/sudo", - Arguments: "/bin/mv /home/docker/userdata.tar /var/lib/boot2docker/userdata.tar && /usr/bin/sudo tar xf /var/lib/boot2docker/userdata.tar -C /home/docker/ > /var/log/userdata.log 2>&1 && /usr/bin/sudo chown -R docker:staff /home/docker", - WorkingDirectory: "", - EnvVariables: env, - } - - _, err = procman.StartProgram(ctx, auth.Auth(), &guestspec) - if err != nil { - return err - } - - return nil -} - -func (d *Driver) Start() error { - machineState, err := d.GetState() - if err != nil { - return err - } - - switch machineState { - case state.Running: - log.Infof("VM %s has already been started", d.MachineName) - return nil - case state.Stopped: - // TODO add transactional or error handling in the following steps - // Create context - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - - c, err := d.vsphereLogin(ctx) - if err != nil { - return err - } - defer c.Logout(ctx) - - vm, err := d.fetchVM(c, ctx, d.MachineName) - if err != nil { - return err - } - - task, err := vm.PowerOn(ctx) - if err != nil { - return err - } - - _, err = task.WaitForResult(ctx, nil) - if err != nil { - return err - } - - log.Infof("Waiting for VMware Tools to come online...") - if d.IPAddress, err = d.GetIP(); err != nil { - return err - } - } - return nil -} - -func (d *Driver) Stop() error { - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - - c, err := d.vsphereLogin(ctx) - if err != nil { - return err - } - defer c.Logout(ctx) - - vm, err := d.fetchVM(c, ctx, d.MachineName) - if err != nil { - return err - } - - if err := vm.ShutdownGuest(ctx); err != nil { - return err - } - - d.IPAddress = "" - - return nil -} - -func (d *Driver) Restart() error { - if err := d.Stop(); err != nil { - return err - } - - // Check for 120 seconds for the machine to stop - for i := 1; i <= 60; i++ { - machineState, err := d.GetState() - if err != nil { - return err - } - if machineState == state.Running { - log.Debugf("Not there yet %d/%d", i, 60) - time.Sleep(2 * time.Second) - continue - } - if machineState == state.Stopped { - break - } - } - - machineState, err := d.GetState() - // If the VM is still running after 120 seconds just kill it. - if machineState == state.Running { - if err = d.Kill(); err != nil { - return fmt.Errorf("can't stop VM: %s", err) - } - } - - return d.Start() -} - -func (d *Driver) Kill() error { - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - - c, err := d.vsphereLogin(ctx) - if err != nil { - return err - } - defer c.Logout(ctx) - - vm, err := d.fetchVM(c, ctx, d.MachineName) - if err != nil { - return err - } - - task, err := vm.PowerOff(ctx) - if err != nil { - return err - } - - _, err = task.WaitForResult(ctx, nil) - if err != nil { - return err - } - - d.IPAddress = "" - - return nil -} - -func (d *Driver) Remove() error { - machineState, err := d.GetState() - if err != nil { - return err - } - if machineState == state.Running { - if err = d.Kill(); err != nil { - return fmt.Errorf("can't stop VM: %s", err) - } - } - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - - c, err := d.vsphereLogin(ctx) - if err != nil { - return err - } - defer c.Logout(ctx) - - // Create a new finder - f := find.NewFinder(c.Client, true) - - dc, err := f.DatacenterOrDefault(ctx, d.Datacenter) - if err != nil { - return err - } - - f.SetDatacenter(dc) - - dss, err := f.DatastoreOrDefault(ctx, d.Datastore) - if err != nil { - return err - } - - // Remove B2D Iso from VM folder - m := object.NewFileManager(c.Client) - task, err := m.DeleteDatastoreFile(ctx, dss.Path(fmt.Sprintf("%s/%s", d.MachineName, isoFilename)), dc) - if err != nil { - return err - } - - err = task.Wait(ctx) - if err != nil { - if types.IsFileNotFound(err) { - // Ignore error - return nil - } - } - - vm, err := d.fetchVM(c, ctx, d.MachineName) - if err != nil { - return err - } - - task, err = vm.Destroy(ctx) - if err != nil { - return err - } - - _, err = task.WaitForResult(ctx, nil) - if err != nil { - return err - } - return nil -} - -func (d *Driver) Upgrade() error { - return fmt.Errorf("upgrade is not supported for vsphere driver at this moment") -} - -func (d *Driver) publicSSHKeyPath() string { - return d.GetSSHKeyPath() + ".pub" -} - -// Make a boot2docker userdata.tar key bundle -func (d *Driver) generateKeyBundle() error { - log.Debugf("Creating Tar key bundle...") - - magicString := "boot2docker, this is vmware speaking" - - tf, err := os.Create(d.ResolveStorePath("userdata.tar")) - if err != nil { - return err - } - defer tf.Close() - var fileWriter = tf - - tw := tar.NewWriter(fileWriter) - defer tw.Close() - - // magicString first so we can figure out who originally wrote the tar. - file := &tar.Header{Name: magicString, Size: int64(len(magicString))} - if err := tw.WriteHeader(file); err != nil { - return err - } - if _, err := tw.Write([]byte(magicString)); err != nil { - return err - } - // .ssh/key.pub => authorized_keys - file = &tar.Header{Name: ".ssh", Typeflag: tar.TypeDir, Mode: 0700} - if err := tw.WriteHeader(file); err != nil { - return err - } - pubKey, err := ioutil.ReadFile(d.publicSSHKeyPath()) - if err != nil { - return err - } - file = &tar.Header{Name: ".ssh/authorized_keys", Size: int64(len(pubKey)), Mode: 0644} - if err := tw.WriteHeader(file); err != nil { - return err - } - if _, err := tw.Write([]byte(pubKey)); err != nil { - return err - } - file = &tar.Header{Name: ".ssh/authorized_keys2", Size: int64(len(pubKey)), Mode: 0644} - if err := tw.WriteHeader(file); err != nil { - return err - } - if _, err := tw.Write([]byte(pubKey)); err != nil { - return err - } - if err := tw.Close(); err != nil { - return err - } - - return nil - -} - -func (d *Driver) vsphereLogin(ctx context.Context) (*govmomi.Client, error) { - - // Parse URL from string - u, err := url.Parse(fmt.Sprintf("https://%s:%d/sdk", d.IP, d.Port)) - if err != nil { - return nil, err - } - // set username and password for the URL - u.User = url.UserPassword(d.Username, d.Password) - - // Connect and log in to ESX or vCenter - c, err := govmomi.NewClient(ctx, u, true) - if err != nil { - return nil, err - } - - return c, nil -} - -func (d *Driver) fetchVM(c *govmomi.Client, ctx context.Context, vmname string) (*object.VirtualMachine, error) { - - // Create a new finder - f := find.NewFinder(c.Client, true) - - var vm *object.VirtualMachine - var err error - - dc, err := f.DatacenterOrDefault(ctx, d.Datacenter) - if err != nil { - return vm, err - } - - f.SetDatacenter(dc) - - vm, err = f.VirtualMachine(ctx, vmname) - if err != nil { - return vm, err - } - return vm, nil -} - -type AuthFlag struct { - auth types.NamePasswordAuthentication -} - -func (f *AuthFlag) Auth() types.BaseGuestAuthentication { - return &f.auth -} - -type FileAttrFlag struct { - types.GuestPosixFileAttributes -} - -func (f *FileAttrFlag) SetPerms(owner, group, perms int) { - f.OwnerId = int32(owner) - f.GroupId = int32(group) - f.Permissions = int64(perms) -} - -func (f *FileAttrFlag) Attr() types.BaseGuestFileAttributes { - return &f.GuestPosixFileAttributes -} diff --git a/vendor/github.com/docker/machine/drivers/vmwarevsphere/vsphere_test.go b/vendor/github.com/docker/machine/drivers/vmwarevsphere/vsphere_test.go deleted file mode 100644 index d3d7af3a..00000000 --- a/vendor/github.com/docker/machine/drivers/vmwarevsphere/vsphere_test.go +++ /dev/null @@ -1,22 +0,0 @@ -package vmwarevsphere - -import ( - "testing" - - "github.com/docker/machine/libmachine/drivers" - "github.com/stretchr/testify/assert" -) - -func TestSetConfigFromFlags(t *testing.T) { - driver := NewDriver("default", "path") - - checkFlags := &drivers.CheckDriverOptions{ - FlagsValues: map[string]interface{}{}, - CreateFlags: driver.GetCreateFlags(), - } - - err := driver.SetConfigFromFlags(checkFlags) - - assert.NoError(t, err) - assert.Empty(t, checkFlags.InvalidFlags) -} diff --git a/vendor/github.com/docker/machine/experimental/README.md b/vendor/github.com/docker/machine/experimental/README.md deleted file mode 100644 index 633e33ad..00000000 --- a/vendor/github.com/docker/machine/experimental/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# Docker Machine Experimental Features - -Docker Machine’s experimental features gives you access to bleeding edge features. By identifying experimental features, you can try out features early and give feedback to the Docker Machine maintainers. In this way, we hope to refine our feature designs by exposing them earlier to real-world usage. - -This page describes the experimental features in Docker Machine. Docker Machine is currently in beta. Neither it nor its experimental features are ready for production use. - -The information below describes each feature and the Github pull requests and -issues associated with it. If necessary, links are provided to additional -documentation on an issue. As an active Docker user and community member, -please feel free to provide any feedback on these features you wish. - -## Current experimental features - -Currently, you can experiment with [migrating a Boot2Docker created VM to Docker Machine](b2d_migration.md). Also, consider reviewing our [rough plan for the migration](b2d_migration_tasks.md). - -Additional experimental features include support for Red Hat, Debian, CentOS, Fedora, and RancherOS as base OSes. These features have no separate feature documentation. We simply encourage you to try them. - -## How to comment on an experimental feature - -Each feature's documentation includes a list of proposal pull requests or PRs associated with the feature. If you want to comment on or suggest a change to a feature, please add it to the existing feature PR. - -Issues or problems with a feature? Inquire for help on the `#docker-machine` IRC channel or in on the [Docker Google group](https://groups.google.com/forum/#!forum/docker-user). diff --git a/vendor/github.com/docker/machine/experimental/b2d_migration.md b/vendor/github.com/docker/machine/experimental/b2d_migration.md deleted file mode 100644 index 1fe85f93..00000000 --- a/vendor/github.com/docker/machine/experimental/b2d_migration.md +++ /dev/null @@ -1,62 +0,0 @@ -# Migrate from Boot2Docker CLI to Docker Machine - -This guide explains migrating from the Boot2Docker CLI to Docker Machine. - -This guide assumes basic knowledge of the Boot2Docker CLI and Docker Machine. If you are not familiar, please review those docs prior to migrating. - -There are a few differences between the Boot2Docker CLI commands and Machine. Please review the table below for the Boot2Docker command and the corresponding Machine command. You can also see details on Machine commands in the official [Docker Machine Docs](http://docs.docker.com/machine/#subcommands). - -# Migrating - -In order to migrate a Boot2Docker VM to Docker Machine, you must have Docker Machine installed. If you do not have Docker Machine, please see the [install docs](http://docs.docker.com/machine/#installation) before proceeding. - -> Note: when migrating to Docker Machine, this will also update Docker to the latest stable version - -To migrate a Boot2Docker VM, run the following command where `` is the name of your Boot2Docker VM and `` is the name of the new Machine (i.e. `dev`): - -> To get the name of your Boot2Docker VM, use the `boot2docker config` command. Default: `boot2docker-vm`. - - docker-machine create -d virtualbox --virtualbox-import-boot2docker-vm - -> Note: this will stop the Boot2Docker VM in order to safely copy the virtual disk - -You should see output similar to the following: - - $> docker-machine create -d virtualbox --virtualbox-import-boot2docker-vm boot2docker-vm dev - INFO[0000] Creating VirtualBox VM... - INFO[0001] Starting VirtualBox VM... - INFO[0001] Waiting for VM to start... - INFO[0035] "dev" has been created and is now the active machine. - INFO[0035] To point your Docker client at it, run this in your shell: eval "$(docker-machine env dev)" - -You now should have a Machine that contains all of the Docker data from the Boot2Docker VM. See the Docker Machine [usage docs](http://docs.docker.com/machine/#getting-started-with-docker-machine-using-a-local-vm) for details on working with Machine. - -# Cleanup - -When migrating a Boot2Docker VM to Docker Machine the Boot2Docker VM is left intact. Once you have verified that all of your Docker data (containers, images, etc) are in the new Machine, you can remove the Boot2Docker VM using `boot2docker delete`. - -# Command Comparison - -| boot2docker cli | machine | machine description | -| --------------- | ----------- | -------------------------------------------------------------------------------------- | -| init | create | creates a new docker host | -| up | start | starts a stopped machine | -| ssh | ssh | runs a command or interactive ssh session on the machine | -| save | - | n/a | -| down | stop | stops a running machine | -| poweroff | stop | stops a running machine | -| reset | restart | restarts a running machine | -| config | inspect (*) | shows details about machine | -| status | ls (**) | shows a list of all machines | -| info | inspect (*) | shows details about machine | -| ip | url (***) | shows the Docker URL for the machine | -| shellinit | env | shows the environment configuration needed to configure the Docker CLI for the machine | -| delete | rm | removes a machine | -| download | - | | -| upgrade | upgrade | upgrades Docker on the machine to the latest stable release | - -\* provides similar functionality but not exact - -** `ls` will show all machines including their status - -*** the `url` command reports the entire Docker URL including the IP / Hostname diff --git a/vendor/github.com/docker/machine/experimental/b2d_migration_tasks.md b/vendor/github.com/docker/machine/experimental/b2d_migration_tasks.md deleted file mode 100644 index 1e633635..00000000 --- a/vendor/github.com/docker/machine/experimental/b2d_migration_tasks.md +++ /dev/null @@ -1,49 +0,0 @@ - - -# Boot2Docker Migration - -This document is a rough guide to what will need to be completed to support -migrating from boot2docker-cli to Machine. It is not meant to be a user guide -but more so an internal guide to what we will want to support. - -## Existing Boot2Docker Instances - -We will need to import the disk to "migrate" the existing Docker data to the -new Machine. This should not be too much work as instead of creating the -virtual disk we will simply copy this one. From there, provisioning should -happen as normal (cert regeneration, option configuration, etc). - -## CLI - -Currently almost every b2d command has a comparable Machine command. I do not -feel we need to have the exact same naming but we will want to create a -migration user guide to inform the users of what is different. - -## Boot2Docker Host Alias - -Boot2Docker also modifies the local system host file to create a `boot2docker` -alias that can be used by the host system. We will need to decide if we want -to support this and, if so, how to implement. Perhaps local aliases for each -Machine name? - -## Installer and Initial Setup - -There is a Boot2Docker installer that assists the users in getting started. -It installs VirtualBox along with the b2d CLI. We will need something similar. -This will probably be part of a larger installation project with the various -Docker platform tools. - -## Updates - -Machine already supports the `upgrade` command to update the Machine instances. -I'm not sure if we want to add a mechanism to update the local Machine binary -and/or the Docker CLI binary as well. We will need to discuss. diff --git a/vendor/github.com/docker/machine/its/cli/create_rm_test.go b/vendor/github.com/docker/machine/its/cli/create_rm_test.go deleted file mode 100644 index 1a1ae2fb..00000000 --- a/vendor/github.com/docker/machine/its/cli/create_rm_test.go +++ /dev/null @@ -1,79 +0,0 @@ -package cli - -import ( - "testing" - - "github.com/docker/machine/its" -) - -func TestCreateRm(t *testing.T) { - test := its.NewTest(t) - defer test.TearDown() - - test.Run("non-existent driver fails", func() { - test.Machine("create -d bogus bogus").Should().Fail(`Driver "bogus" not found. Do you have the plugin binary accessible in your PATH?`) - }) - - test.Run("non-existent driver fails", func() { - test.Machine("create -d bogus bogus").Should().Fail(`Driver "bogus" not found. Do you have the plugin binary accessible in your PATH?`) - }) - - test.Run("create with no name fails", func() { - test.Machine("create -d none").Should().Fail(`Error: No machine name specified`) - }) - - test.Run("create with invalid name fails", func() { - test.Machine("create -d none --url none ∞").Should().Fail(`Error creating machine: Invalid hostname specified. Allowed hostname chars are: 0-9a-zA-Z . -`) - }) - - test.Run("create with invalid name fails", func() { - test.Machine("create -d none --url none -").Should().Fail(`Error creating machine: Invalid hostname specified. Allowed hostname chars are: 0-9a-zA-Z . -`) - }) - - test.Run("create with invalid name fails", func() { - test.Machine("create -d none --url none .").Should().Fail(`Error creating machine: Invalid hostname specified. Allowed hostname chars are: 0-9a-zA-Z . -`) - }) - - test.Run("create with invalid name fails", func() { - test.Machine("create -d none --url none ..").Should().Fail(`Error creating machine: Invalid hostname specified. Allowed hostname chars are: 0-9a-zA-Z . -`) - }) - - test.Run("create with weird but valid name succeeds", func() { - test.Machine("create -d none --url none a").Should().Succeed() - }) - - test.Run("fail with extra argument", func() { - test.Machine("create -d none --url none a extra").Should().Fail(`Invalid command line. Found extra arguments [extra]`) - }) - - test.Run("create with weird but valid name", func() { - test.Machine("create -d none --url none 0").Should().Succeed() - }) - - test.Run("rm with no name fails", func() { - test.Machine("rm -y").Should().Fail(`Error: Expected to get one or more machine names as arguments`) - }) - - test.Run("rm non existent machine fails", func() { - test.Machine("rm ∞ -y").Should().Fail(`Error removing host "∞": Host does not exist: "∞"`) - }) - - test.Run("rm existing machine", func() { - test.Machine("rm 0 -y").Should().Succeed() - }) - - test.Run("rm ask user confirmation when -y is not provided", func() { - test.Machine("create -d none --url none ba").Should().Succeed() - test.Cmd("echo y | machine rm ba").Should().Succeed() - }) - - test.Run("rm deny user confirmation when -y is not provided", func() { - test.Machine("create -d none --url none ab").Should().Succeed() - test.Cmd("echo n | machine rm ab").Should().Succeed() - }) - - test.Run("rm never prompt user confirmation when -f is provided", func() { - test.Machine("create -d none --url none c").Should().Succeed() - test.Machine("rm -f c").Should().Succeed("Successfully removed c") - }) -} diff --git a/vendor/github.com/docker/machine/its/cli/driver_help_test.go b/vendor/github.com/docker/machine/its/cli/driver_help_test.go deleted file mode 100644 index ea69491a..00000000 --- a/vendor/github.com/docker/machine/its/cli/driver_help_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package cli - -import ( - "testing" - - "github.com/docker/machine/its" -) - -func TestDriverHelp(t *testing.T) { - test := its.NewTest(t) - defer test.TearDown() - - test.SkipDriver("ci-test") - - test.Run("no --help flag or command specified", func() { - test.Machine("create -d $DRIVER").Should().Fail("Error: No machine name specified") - }) - - test.Run("-h flag specified", func() { - test.Machine("create -d $DRIVER -h").Should().Succeed(test.DriverName()) - }) - - test.Run("--help flag specified", func() { - test.Machine("create -d $DRIVER --help").Should().Succeed(test.DriverName()) - }) -} diff --git a/vendor/github.com/docker/machine/its/cli/help_test.go b/vendor/github.com/docker/machine/its/cli/help_test.go deleted file mode 100644 index 3a1d0582..00000000 --- a/vendor/github.com/docker/machine/its/cli/help_test.go +++ /dev/null @@ -1,96 +0,0 @@ -package cli - -import ( - "testing" - - "github.com/docker/machine/its" -) - -func TestHelp(t *testing.T) { - test := its.NewTest(t) - defer test.TearDown() - - test.Run("cli: show info", func() { - test.Machine("").Should().Succeed("Usage:", "Create and manage machines running Docker") - }) - - test.Run("cli: show active help", func() { - test.Machine("active -h").Should().Succeed("machine active") - }) - - test.Run("cli: show config help", func() { - test.Machine("config -h").Should().Succeed("machine config") - }) - - test.Run("cli: show create help", func() { - test.Machine("create -h").Should().Succeed("machine create") - }) - - test.Run("cli: show env help", func() { - test.Machine("env -h").Should().Succeed("machine env") - }) - - test.Run("cli: show inspect help", func() { - test.Machine("inspect -h").Should().Succeed("machine inspect") - }) - - test.Run("cli: show ip help", func() { - test.Machine("ip -h").Should().Succeed("machine ip") - }) - - test.Run("cli: show kill help", func() { - test.Machine("kill -h").Should().Succeed("machine kill") - }) - - test.Run("cli: show ls help", func() { - test.Machine("ls -h").Should().Succeed("machine ls") - }) - - test.Run("cli: show regenerate-certs help", func() { - test.Machine("regenerate-certs -h").Should().Succeed("machine regenerate-certs") - }) - - test.Run("cli: show restart help", func() { - test.Machine("restart -h").Should().Succeed("machine restart") - }) - - test.Run("cli: show rm help", func() { - test.Machine("rm -h").Should().Succeed("machine rm") - }) - - test.Run("cli: show scp help", func() { - test.Machine("scp -h").Should().Succeed("machine scp") - }) - - test.Run("cli: show ssh help", func() { - test.Machine("ssh -h").Should().Succeed("machine ssh") - }) - - test.Run("cli: show start help", func() { - test.Machine("start -h").Should().Succeed("machine start") - }) - - test.Run("cli: show status help", func() { - test.Machine("status -h").Should().Succeed("machine status") - }) - - test.Run("cli: show stop help", func() { - test.Machine("stop -h").Should().Succeed("machine stop") - }) - - test.Run("cli: show upgrade help", func() { - test.Machine("upgrade -h").Should().Succeed("machine upgrade") - }) - - test.Run("cli: show url help", func() { - test.Machine("url -h").Should().Succeed("machine url") - }) - - test.Run("cli: show version", func() { - test.Machine("-v").Should().Succeed("version") - }) - - test.Run("cli: show help", func() { - test.Machine("--help").Should().Succeed("Usage:") - }) -} diff --git a/vendor/github.com/docker/machine/its/cli/inspect_test.go b/vendor/github.com/docker/machine/its/cli/inspect_test.go deleted file mode 100644 index 59bd291b..00000000 --- a/vendor/github.com/docker/machine/its/cli/inspect_test.go +++ /dev/null @@ -1,16 +0,0 @@ -package cli - -import ( - "testing" - - "github.com/docker/machine/its" -) - -func TestInspect(t *testing.T) { - test := its.NewTest(t) - defer test.TearDown() - - test.Run("inspect: show error in case of no args", func() { - test.Machine("inspect").Should().Fail(`Error: No machine name(s) specified and no "default" machine exists.`) - }) -} diff --git a/vendor/github.com/docker/machine/its/cli/ls_test.go b/vendor/github.com/docker/machine/its/cli/ls_test.go deleted file mode 100644 index deea762a..00000000 --- a/vendor/github.com/docker/machine/its/cli/ls_test.go +++ /dev/null @@ -1,189 +0,0 @@ -package cli - -import ( - "testing" - - "github.com/docker/machine/its" -) - -func TestLs(t *testing.T) { - test := its.NewTest(t) - defer test.TearDown() - - test.Run("setup", func() { - test.Machine("create -d none --url url5 --engine-label app=1 testmachine5").Should().Succeed() - test.Machine("create -d none --url url4 --engine-label foo=bar --engine-label app=1 testmachine4").Should().Succeed() - test.Machine("create -d none --url url3 testmachine3").Should().Succeed() - test.Machine("create -d none --url url2 testmachine2").Should().Succeed() - test.Machine("create -d none --url url1 testmachine").Should().Succeed() - }) - - test.Run("ls: no filter", func() { - test.Machine("ls").Should().Succeed(). - ContainLines(6). - MatchLine(0, "NAME[ ]+ACTIVE[ ]+DRIVER[ ]+STATE[ ]+URL[ ]+SWARM[ ]+DOCKER[ ]+ERRORS"). - MatchLine(1, "testmachine[ ]+-[ ]+none[ ]+Running[ ]+url1[ ]+Unknown[ ]+Unable to query docker version: .*"). - MatchLine(2, "testmachine2[ ]+-[ ]+none[ ]+Running[ ]+url2[ ]+Unknown[ ]+Unable to query docker version: .*"). - MatchLine(3, "testmachine3[ ]+-[ ]+none[ ]+Running[ ]+url3[ ]+Unknown[ ]+Unable to query docker version: .*"). - MatchLine(4, "testmachine4[ ]+-[ ]+none[ ]+Running[ ]+url4[ ]+Unknown[ ]+Unable to query docker version: .*"). - MatchLine(5, "testmachine5[ ]+-[ ]+none[ ]+Running[ ]+url5[ ]+Unknown[ ]+Unable to query docker version: .*") - }) - - test.Run("ls: filter on label", func() { - test.Machine("ls --filter label=foo=bar").Should().Succeed(). - ContainLines(2). - ContainLine(0, "NAME"). - ContainLine(1, "testmachine4") - }) - - test.Run("ls: mutiple filters on label", func() { - test.Machine("ls --filter label=foo=bar --filter label=app=1").Should().Succeed(). - ContainLines(3). - ContainLine(0, "NAME"). - ContainLine(1, "testmachine4"). - ContainLine(2, "testmachine5") - }) - - test.Run("ls: non-existing filter on label", func() { - test.Machine("ls --filter label=invalid=filter").Should().Succeed(). - ContainLines(1). - ContainLine(0, "NAME") - }) - - test.Run("ls: filter on driver", func() { - test.Machine("ls --filter driver=none").Should().Succeed(). - ContainLines(6). - ContainLine(0, "NAME"). - ContainLine(1, "testmachine"). - ContainLine(2, "testmachine2"). - ContainLine(3, "testmachine3"). - ContainLine(4, "testmachine4"). - ContainLine(5, "testmachine5") - }) - - test.Run("ls: filter on driver", func() { - test.Machine("ls -q --filter driver=none").Should().Succeed(). - ContainLines(5). - EqualLine(0, "testmachine"). - EqualLine(1, "testmachine2"). - EqualLine(2, "testmachine3") - }) - - test.Run("ls: filter on state", func() { - test.Machine("ls --filter state=Running").Should().Succeed(). - ContainLines(6). - ContainLine(0, "NAME"). - ContainLine(1, "testmachine"). - ContainLine(2, "testmachine2"). - ContainLine(3, "testmachine3") - - test.Machine("ls -q --filter state=Running").Should().Succeed(). - ContainLines(5). - EqualLine(0, "testmachine"). - EqualLine(1, "testmachine2"). - EqualLine(2, "testmachine3") - - test.Machine("ls --filter state=None").Should().Succeed(). - ContainLines(1). - ContainLine(0, "NAME") - - test.Machine("ls --filter state=Paused").Should().Succeed(). - ContainLines(1). - ContainLine(0, "NAME") - - test.Machine("ls --filter state=Saved").Should().Succeed(). - ContainLines(1). - ContainLine(0, "NAME") - - test.Machine("ls --filter state=Stopped").Should().Succeed(). - ContainLines(1). - ContainLine(0, "NAME") - - test.Machine("ls --filter state=Stopping").Should().Succeed(). - ContainLines(1). - ContainLine(0, "NAME") - - test.Machine("ls --filter state=Starting").Should().Succeed(). - ContainLines(1). - ContainLine(0, "NAME") - - test.Machine("ls --filter state=Error").Should().Succeed(). - ContainLines(1). - ContainLine(0, "NAME") - }) - - test.Run("ls: filter on name", func() { - test.Machine("ls --filter name=testmachine2").Should().Succeed(). - ContainLines(2). - ContainLine(0, "NAME"). - ContainLine(1, "testmachine2") - - test.Machine("ls -q --filter name=testmachine3").Should().Succeed(). - ContainLines(1). - EqualLine(0, "testmachine3") - }) - - test.Run("ls: filter on name with regex", func() { - test.Machine("ls --filter name=^t.*e[3-5]").Should().Succeed(). - ContainLines(4). - ContainLine(0, "NAME"). - ContainLine(1, "testmachine3"). - ContainLine(2, "testmachine4"). - ContainLine(3, "testmachine5") - - test.Machine("ls -q --filter name=^t.*e[45]").Should().Succeed(). - ContainLines(2). - EqualLine(0, "testmachine4"). - EqualLine(1, "testmachine5") - }) - - test.Run("setup swarm", func() { - test.Machine("create -d none --url tcp://127.0.0.1:2375 --swarm --swarm-master --swarm-discovery token://deadbeef testswarm").Should().Succeed() - test.Machine("create -d none --url tcp://127.0.0.1:2375 --swarm --swarm-discovery token://deadbeef testswarm2").Should().Succeed() - test.Machine("create -d none --url tcp://127.0.0.1:2375 --swarm --swarm-discovery token://deadbeef testswarm3").Should().Succeed() - }) - - test.Run("ls: filter on swarm", func() { - test.Machine("ls --filter swarm=testswarm").Should().Succeed(). - ContainLines(4). - ContainLine(0, "NAME"). - ContainLine(1, "testswarm"). - ContainLine(2, "testswarm2"). - ContainLine(3, "testswarm3") - }) - - test.Run("ls: multi filter", func() { - test.Machine("ls -q --filter swarm=testswarm --filter name=^t.*e --filter driver=none --filter state=Running").Should().Succeed(). - ContainLines(3). - EqualLine(0, "testswarm"). - EqualLine(1, "testswarm2"). - EqualLine(2, "testswarm3") - }) - - test.Run("ls: format on driver", func() { - test.Machine("ls --format {{.DriverName}}").Should().Succeed(). - ContainLines(8). - EqualLine(0, "none"). - EqualLine(1, "none"). - EqualLine(2, "none"). - EqualLine(3, "none"). - EqualLine(4, "none"). - EqualLine(5, "none"). - EqualLine(6, "none"). - EqualLine(7, "none") - }) - - test.Run("ls: format on name and driver", func() { - test.Machine("ls --format 'table {{.Name}}: {{.DriverName}}'").Should().Succeed(). - ContainLines(9). - ContainLine(0, "NAME"). - EqualLine(1, "testmachine: none"). - EqualLine(2, "testmachine2: none"). - EqualLine(3, "testmachine3: none"). - EqualLine(4, "testmachine4: none"). - EqualLine(5, "testmachine5: none"). - EqualLine(6, "testswarm: none"). - EqualLine(7, "testswarm2: none"). - EqualLine(8, "testswarm3: none") - }) -} diff --git a/vendor/github.com/docker/machine/its/cli/status_test.go b/vendor/github.com/docker/machine/its/cli/status_test.go deleted file mode 100644 index 556fc3b4..00000000 --- a/vendor/github.com/docker/machine/its/cli/status_test.go +++ /dev/null @@ -1,16 +0,0 @@ -package cli - -import ( - "testing" - - "github.com/docker/machine/its" -) - -func TestStatus(t *testing.T) { - test := its.NewTest(t) - defer test.TearDown() - - test.Run("status: show error in case of no args", func() { - test.Machine("status").Should().Fail(`Error: No machine name(s) specified and no "default" machine exists.`) - }) -} diff --git a/vendor/github.com/docker/machine/its/cli/url_test.go b/vendor/github.com/docker/machine/its/cli/url_test.go deleted file mode 100644 index b8d40044..00000000 --- a/vendor/github.com/docker/machine/its/cli/url_test.go +++ /dev/null @@ -1,16 +0,0 @@ -package cli - -import ( - "testing" - - "github.com/docker/machine/its" -) - -func TestUrl(t *testing.T) { - test := its.NewTest(t) - defer test.TearDown() - - test.Run("url: show error in case of no args", func() { - test.Machine("url").Should().Fail(`Error: No machine name(s) specified and no "default" machine exists.`) - }) -} diff --git a/vendor/github.com/docker/machine/its/tester.go b/vendor/github.com/docker/machine/its/tester.go deleted file mode 100644 index 12290db9..00000000 --- a/vendor/github.com/docker/machine/its/tester.go +++ /dev/null @@ -1,363 +0,0 @@ -package its - -import ( - "os/exec" - "regexp" - "strings" - "testing" - - "io/ioutil" - - "os" - - "fmt" - - "path/filepath" - "runtime" -) - -var ( - regexpCommandLine = regexp.MustCompile("('[^']*')|(\\S+)") -) - -type IntegrationTest interface { - RequireDriver(driverName string) - - SkipDriver(driverName string) - - SkipDrivers(driverNames ...string) - - ForceDriver(driverName string) - - Run(description string, action func()) - - Cmd(commandLine string) IntegrationTest - - Machine(commandLine string) IntegrationTest - - DriverName() string - - Should() Assertions - - TearDown() -} - -type Assertions interface { - Succeed(messages ...string) Assertions - - Fail(errorMessages ...string) Assertions - - ContainLines(count int) Assertions - - ContainLine(index int, text string) Assertions - - MatchLine(index int, template string) Assertions - - EqualLine(index int, text string) Assertions -} - -func NewTest(t *testing.T) IntegrationTest { - storagePath, _ := ioutil.TempDir("", "docker") - - return &dockerMachineTest{ - t: t, - storagePath: storagePath, - } -} - -type dockerMachineTest struct { - t *testing.T - storagePath string - dockerMachineBinary string - description string - skip bool - rawOutput string - lines []string - err error - fatal bool - failed bool -} - -func (dmt *dockerMachineTest) RequireDriver(driverName string) { - dmt.skipIf(dmt.DriverName() != driverName) -} - -func (dmt *dockerMachineTest) SkipDriver(driverName string) { - dmt.skipIf(dmt.DriverName() == driverName) -} - -func (dmt *dockerMachineTest) SkipDrivers(driverNames ...string) { - for _, driverName := range driverNames { - dmt.skipIf(dmt.DriverName() == driverName) - } -} - -func (dmt *dockerMachineTest) ForceDriver(driverName string) { - os.Setenv("DRIVER", driverName) -} - -func (dmt *dockerMachineTest) skipIf(condition bool) { - if condition { - dmt.skip = true - } -} - -func (dmt *dockerMachineTest) Run(description string, action func()) { - dmt.description = description - dmt.rawOutput = "" - dmt.lines = nil - dmt.err = nil - dmt.failed = false - - if dmt.skip { - fmt.Printf("%s %s\n", yellow("[SKIP]"), description) - } else { - fmt.Printf("%s %s", yellow("[..]"), description) - action() - - if dmt.fatal || dmt.failed { - fmt.Printf("\r%s %s\n", red("[KO]"), description) - } else { - fmt.Printf("\r%s %s\n", green("[OK]"), description) - } - } -} - -func red(message string) string { - if runtime.GOOS == "windows" { - return message - } - return "\033[1;31m" + message + "\033[0m" -} - -func green(message string) string { - if runtime.GOOS == "windows" { - return message - } - return "\033[1;32m" + message + "\033[0m" -} - -func yellow(message string) string { - if runtime.GOOS == "windows" { - return message - } - return "\033[1;33m" + message + "\033[0m" -} - -func (dmt *dockerMachineTest) DriverName() string { - driver := os.Getenv("DRIVER") - if driver != "" { - return driver - } - - return "none" -} - -func (dmt *dockerMachineTest) Should() Assertions { - return dmt -} - -func (dmt *dockerMachineTest) testedBinary() string { - if dmt.dockerMachineBinary != "" { - return dmt.dockerMachineBinary - } - - var binary string - if runtime.GOOS == "windows" { - binary = "docker-machine.exe" - } else { - binary = "docker-machine" - } - - _, file, _, _ := runtime.Caller(0) - dir := filepath.Dir(file) - - for dir != "/" { - path := filepath.Join(dir, "bin", binary) - - _, err := os.Stat(path) - if err == nil { - dmt.dockerMachineBinary = path - return path - } - - dir = filepath.Dir(dir) - } - - if !dmt.fatal { - dmt.fatal = true - dmt.t.Errorf("Binary not found: %s", binary) - } - - return "" -} - -func (dmt *dockerMachineTest) Cmd(commandLine string) IntegrationTest { - if dmt.fatal { - return dmt - } - - commandLine = dmt.replaceDriver(commandLine) - commandLine = dmt.replaceMachinePath(commandLine) - - return dmt.cmd("bash", "-c", commandLine) -} - -func (dmt *dockerMachineTest) Machine(commandLine string) IntegrationTest { - if dmt.fatal { - return dmt - } - - commandLine = dmt.replaceDriver(commandLine) - - return dmt.cmd(dmt.testedBinary(), parseFields(commandLine)...) -} - -func (dmt *dockerMachineTest) cmd(command string, args ...string) IntegrationTest { - cmd := exec.Command(command, args...) - cmd.Env = append(os.Environ(), "MACHINE_STORAGE_PATH="+dmt.storagePath) - - combinedOutput, err := cmd.CombinedOutput() - - dmt.rawOutput = string(combinedOutput) - dmt.lines = strings.Split(strings.TrimSpace(dmt.rawOutput), "\n") - dmt.err = err - - return dmt -} - -func (dmt *dockerMachineTest) replaceMachinePath(commandLine string) string { - return strings.Replace(commandLine, "machine", dmt.testedBinary(), -1) -} - -func (dmt *dockerMachineTest) replaceDriver(commandLine string) string { - return strings.Replace(commandLine, "$DRIVER", dmt.DriverName(), -1) -} - -func parseFields(commandLine string) []string { - fields := regexpCommandLine.FindAllString(commandLine, -1) - - for i := range fields { - if len(fields[i]) > 2 && strings.HasPrefix(fields[i], "'") && strings.HasSuffix(fields[i], "'") { - fields[i] = fields[i][1 : len(fields[i])-1] - } - } - - return fields -} - -func (dmt *dockerMachineTest) TearDown() { - machines := filepath.Join(dmt.storagePath, "machines") - - dirs, _ := ioutil.ReadDir(machines) - for _, dir := range dirs { - dmt.Cmd("machine rm -f " + dir.Name()) - } - - os.RemoveAll(dmt.storagePath) -} - -func (dmt *dockerMachineTest) ContainLines(count int) Assertions { - if dmt.fatal { - return dmt - } - - if count != len(dmt.lines) { - return dmt.failExpected("%d lines but got %d\n%s", count, len(dmt.lines), dmt.rawOutput) - } - - return dmt -} - -func (dmt *dockerMachineTest) ContainLine(index int, text string) Assertions { - if dmt.fatal { - return dmt - } - - if index >= len(dmt.lines) { - return dmt.failExpected("at least %d lines\nGot %d", index+1, len(dmt.lines)) - } - - if !strings.Contains(dmt.lines[index], text) { - return dmt.failExpected("line %d to contain '%s'\nGot '%s'", index, text, dmt.lines[index]) - } - - return dmt -} - -func (dmt *dockerMachineTest) MatchLine(index int, template string) Assertions { - if dmt.fatal { - return dmt - } - - if index >= len(dmt.lines) { - return dmt.failExpected("at least %d lines\nGot %d", index+1, len(dmt.lines)) - } - - if !regexp.MustCompile(template).MatchString(dmt.lines[index]) { - return dmt.failExpected("line %d to match '%s'\nGot '%s'", index, template, dmt.lines[index]) - } - - return dmt -} - -func (dmt *dockerMachineTest) EqualLine(index int, text string) Assertions { - if dmt.fatal { - return dmt - } - - if index >= len(dmt.lines) { - return dmt.failExpected("at least %d lines\nGot %d", index+1, len(dmt.lines)) - } - - if text != dmt.lines[index] { - return dmt.failExpected("line %d to be '%s'\nGot '%s'", index, text, dmt.lines[index]) - } - - return dmt -} - -func (dmt *dockerMachineTest) Succeed(messages ...string) Assertions { - if dmt.fatal { - return dmt - } - - if dmt.err != nil { - return dmt.failExpected("to succeed\nFailed with %s\n%s", dmt.err, dmt.rawOutput) - } - - for _, message := range messages { - if !strings.Contains(dmt.rawOutput, message) { - return dmt.failExpected("output to contain '%s'\nGot '%s'", message, dmt.rawOutput) - } - } - - return dmt -} - -func (dmt *dockerMachineTest) Fail(errorMessages ...string) Assertions { - if dmt.fatal { - return dmt - } - - if dmt.err == nil { - return dmt.failExpected("to fail\nGot success\n%s", dmt.rawOutput) - } - - for _, message := range errorMessages { - if !strings.Contains(dmt.rawOutput, message) { - return dmt.failExpected("output to contain '%s'\nGot '%s'", message, dmt.rawOutput) - } - } - - return dmt -} - -func (dmt *dockerMachineTest) failExpected(message string, args ...interface{}) Assertions { - allArgs := append([]interface{}{dmt.description}, args...) - - dmt.failed = true - dmt.t.Errorf("%s\nExpected "+message, allArgs...) - - return dmt -} diff --git a/vendor/github.com/docker/machine/its/thirdparty/commands_test.go b/vendor/github.com/docker/machine/its/thirdparty/commands_test.go deleted file mode 100644 index 945ece76..00000000 --- a/vendor/github.com/docker/machine/its/thirdparty/commands_test.go +++ /dev/null @@ -1,34 +0,0 @@ -package thirdparty - -import ( - "testing" - - "github.com/docker/machine/its" -) - -func TestThirdPartyCompatibility(t *testing.T) { - test := its.NewTest(t) - defer test.TearDown() - - test.RequireDriver("ci-test") - - test.Run("create", func() { - test.Machine("create -d $DRIVER --url url default").Should().Succeed() - }) - - test.Run("ls", func() { - test.Machine("ls -q").Should().Succeed().ContainLines(1).EqualLine(0, "default") - }) - - test.Run("url", func() { - test.Machine("url default").Should().Succeed("url") - }) - - test.Run("status", func() { - test.Machine("status default").Should().Succeed("Running") - }) - - test.Run("rm", func() { - test.Machine("rm -y default").Should().Succeed() - }) -} diff --git a/vendor/github.com/docker/machine/libmachine/auth/auth.go b/vendor/github.com/docker/machine/libmachine/auth/auth.go deleted file mode 100644 index 86ae79d2..00000000 --- a/vendor/github.com/docker/machine/libmachine/auth/auth.go +++ /dev/null @@ -1,18 +0,0 @@ -package auth - -type Options struct { - CertDir string - CaCertPath string - CaPrivateKeyPath string - CaCertRemotePath string - ServerCertPath string - ServerKeyPath string - ClientKeyPath string - ServerCertRemotePath string - ServerKeyRemotePath string - ClientCertPath string - ServerCertSANs []string - // StorePath is left in for historical reasons, but not really meant to - // be used directly. - StorePath string -} diff --git a/vendor/github.com/docker/machine/libmachine/cert/bootstrap.go b/vendor/github.com/docker/machine/libmachine/cert/bootstrap.go deleted file mode 100644 index aeadaecd..00000000 --- a/vendor/github.com/docker/machine/libmachine/cert/bootstrap.go +++ /dev/null @@ -1,87 +0,0 @@ -package cert - -import ( - "errors" - "fmt" - "os" - - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnutils" -) - -func BootstrapCertificates(authOptions *auth.Options) error { - certDir := authOptions.CertDir - caCertPath := authOptions.CaCertPath - caPrivateKeyPath := authOptions.CaPrivateKeyPath - clientCertPath := authOptions.ClientCertPath - clientKeyPath := authOptions.ClientKeyPath - - // TODO: I'm not super happy about this use of "org", the user should - // have to specify it explicitly instead of implicitly basing it on - // $USER. - caOrg := mcnutils.GetUsername() - org := caOrg + "." - - bits := 2048 - - if _, err := os.Stat(certDir); err != nil { - if os.IsNotExist(err) { - if err := os.MkdirAll(certDir, 0700); err != nil { - return fmt.Errorf("Creating machine certificate dir failed: %s", err) - } - } else { - return err - } - } - - if _, err := os.Stat(caCertPath); os.IsNotExist(err) { - log.Infof("Creating CA: %s", caCertPath) - - // check if the key path exists; if so, error - if _, err := os.Stat(caPrivateKeyPath); err == nil { - return errors.New("The CA key already exists. Please remove it or specify a different key/cert.") - } - - if err := GenerateCACertificate(caCertPath, caPrivateKeyPath, caOrg, bits); err != nil { - return fmt.Errorf("Generating CA certificate failed: %s", err) - } - } - - if _, err := os.Stat(clientCertPath); os.IsNotExist(err) { - log.Infof("Creating client certificate: %s", clientCertPath) - - if _, err := os.Stat(certDir); err != nil { - if os.IsNotExist(err) { - if err := os.Mkdir(certDir, 0700); err != nil { - return fmt.Errorf("Creating machine client cert dir failed: %s", err) - } - } else { - return err - } - } - - // check if the key path exists; if so, error - if _, err := os.Stat(clientKeyPath); err == nil { - return errors.New("The client key already exists. Please remove it or specify a different key/cert.") - } - - // Used to generate the client certificate. - certOptions := &Options{ - Hosts: []string{""}, - CertFile: clientCertPath, - KeyFile: clientKeyPath, - CAFile: caCertPath, - CAKeyFile: caPrivateKeyPath, - Org: org, - Bits: bits, - SwarmMaster: false, - } - - if err := GenerateCert(certOptions); err != nil { - return fmt.Errorf("Generating client certificate failed: %s", err) - } - } - - return nil -} diff --git a/vendor/github.com/docker/machine/libmachine/cert/cert.go b/vendor/github.com/docker/machine/libmachine/cert/cert.go deleted file mode 100644 index 45583183..00000000 --- a/vendor/github.com/docker/machine/libmachine/cert/cert.go +++ /dev/null @@ -1,269 +0,0 @@ -package cert - -import ( - "crypto/rand" - "crypto/rsa" - "crypto/tls" - "crypto/x509" - "crypto/x509/pkix" - "encoding/pem" - "io/ioutil" - "math/big" - "net" - "os" - "time" - - "errors" - - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/log" -) - -var defaultGenerator = NewX509CertGenerator() - -type Options struct { - Hosts []string - CertFile, KeyFile, CAFile, CAKeyFile, Org string - Bits int - SwarmMaster bool -} - -type Generator interface { - GenerateCACertificate(certFile, keyFile, org string, bits int) error - GenerateCert(opts *Options) error - ReadTLSConfig(addr string, authOptions *auth.Options) (*tls.Config, error) - ValidateCertificate(addr string, authOptions *auth.Options) (bool, error) -} - -type X509CertGenerator struct{} - -func NewX509CertGenerator() Generator { - return &X509CertGenerator{} -} - -func GenerateCACertificate(certFile, keyFile, org string, bits int) error { - return defaultGenerator.GenerateCACertificate(certFile, keyFile, org, bits) -} - -func GenerateCert(opts *Options) error { - return defaultGenerator.GenerateCert(opts) -} - -func ValidateCertificate(addr string, authOptions *auth.Options) (bool, error) { - return defaultGenerator.ValidateCertificate(addr, authOptions) -} - -func ReadTLSConfig(addr string, authOptions *auth.Options) (*tls.Config, error) { - return defaultGenerator.ReadTLSConfig(addr, authOptions) -} - -func SetCertGenerator(cg Generator) { - defaultGenerator = cg -} - -func (xcg *X509CertGenerator) getTLSConfig(caCert, cert, key []byte, allowInsecure bool) (*tls.Config, error) { - // TLS config - var tlsConfig tls.Config - tlsConfig.InsecureSkipVerify = allowInsecure - certPool := x509.NewCertPool() - - ok := certPool.AppendCertsFromPEM(caCert) - if !ok { - return &tlsConfig, errors.New("There was an error reading certificate") - } - - tlsConfig.RootCAs = certPool - keypair, err := tls.X509KeyPair(cert, key) - if err != nil { - return &tlsConfig, err - } - tlsConfig.Certificates = []tls.Certificate{keypair} - - return &tlsConfig, nil -} - -func (xcg *X509CertGenerator) newCertificate(org string) (*x509.Certificate, error) { - now := time.Now() - // need to set notBefore slightly in the past to account for time - // skew in the VMs otherwise the certs sometimes are not yet valid - notBefore := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), now.Minute()-5, 0, 0, time.Local) - notAfter := notBefore.Add(time.Hour * 24 * 1080) - - serialNumberLimit := new(big.Int).Lsh(big.NewInt(1), 128) - serialNumber, err := rand.Int(rand.Reader, serialNumberLimit) - if err != nil { - return nil, err - } - - return &x509.Certificate{ - SerialNumber: serialNumber, - Subject: pkix.Name{ - Organization: []string{org}, - }, - NotBefore: notBefore, - NotAfter: notAfter, - - KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature | x509.KeyUsageKeyAgreement, - BasicConstraintsValid: true, - }, nil - -} - -// GenerateCACertificate generates a new certificate authority from the specified org -// and bit size and stores the resulting certificate and key file -// in the arguments. -func (xcg *X509CertGenerator) GenerateCACertificate(certFile, keyFile, org string, bits int) error { - template, err := xcg.newCertificate(org) - if err != nil { - return err - } - - template.IsCA = true - template.KeyUsage |= x509.KeyUsageCertSign - template.KeyUsage |= x509.KeyUsageKeyEncipherment - template.KeyUsage |= x509.KeyUsageKeyAgreement - - priv, err := rsa.GenerateKey(rand.Reader, bits) - if err != nil { - return err - } - - derBytes, err := x509.CreateCertificate(rand.Reader, template, template, &priv.PublicKey, priv) - if err != nil { - return err - } - - certOut, err := os.Create(certFile) - if err != nil { - return err - } - - pem.Encode(certOut, &pem.Block{Type: "CERTIFICATE", Bytes: derBytes}) - certOut.Close() - - keyOut, err := os.OpenFile(keyFile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600) - if err != nil { - return err - - } - - pem.Encode(keyOut, &pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(priv)}) - keyOut.Close() - - return nil -} - -// GenerateCert generates a new certificate signed using the provided -// certificate authority files and stores the result in the certificate -// file and key provided. The provided host names are set to the -// appropriate certificate fields. -func (xcg *X509CertGenerator) GenerateCert(opts *Options) error { - template, err := xcg.newCertificate(opts.Org) - if err != nil { - return err - } - // client - if len(opts.Hosts) == 1 && opts.Hosts[0] == "" { - template.ExtKeyUsage = []x509.ExtKeyUsage{x509.ExtKeyUsageClientAuth} - template.KeyUsage = x509.KeyUsageDigitalSignature - } else { // server - template.ExtKeyUsage = []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth} - if opts.SwarmMaster { - // Extend the Swarm master's server certificate - // permissions to also be able to connect to downstream - // nodes as a client. - template.ExtKeyUsage = append(template.ExtKeyUsage, x509.ExtKeyUsageClientAuth) - } - for _, h := range opts.Hosts { - if ip := net.ParseIP(h); ip != nil { - template.IPAddresses = append(template.IPAddresses, ip) - } else { - template.DNSNames = append(template.DNSNames, h) - } - } - } - - tlsCert, err := tls.LoadX509KeyPair(opts.CAFile, opts.CAKeyFile) - if err != nil { - return err - } - - priv, err := rsa.GenerateKey(rand.Reader, opts.Bits) - if err != nil { - return err - } - - x509Cert, err := x509.ParseCertificate(tlsCert.Certificate[0]) - if err != nil { - return err - } - - derBytes, err := x509.CreateCertificate(rand.Reader, template, x509Cert, &priv.PublicKey, tlsCert.PrivateKey) - if err != nil { - return err - } - - certOut, err := os.Create(opts.CertFile) - if err != nil { - return err - } - - pem.Encode(certOut, &pem.Block{Type: "CERTIFICATE", Bytes: derBytes}) - certOut.Close() - - keyOut, err := os.OpenFile(opts.KeyFile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600) - if err != nil { - return err - } - - pem.Encode(keyOut, &pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(priv)}) - keyOut.Close() - - return nil -} - -// ReadTLSConfig reads the tls config for a machine. -func (xcg *X509CertGenerator) ReadTLSConfig(addr string, authOptions *auth.Options) (*tls.Config, error) { - caCertPath := authOptions.CaCertPath - clientCertPath := authOptions.ClientCertPath - clientKeyPath := authOptions.ClientKeyPath - - log.Debugf("Reading CA certificate from %s", caCertPath) - caCert, err := ioutil.ReadFile(caCertPath) - if err != nil { - return nil, err - } - - log.Debugf("Reading client certificate from %s", clientCertPath) - clientCert, err := ioutil.ReadFile(clientCertPath) - if err != nil { - return nil, err - } - - log.Debugf("Reading client key from %s", clientKeyPath) - clientKey, err := ioutil.ReadFile(clientKeyPath) - if err != nil { - return nil, err - } - - return xcg.getTLSConfig(caCert, clientCert, clientKey, false) -} - -// ValidateCertificate validate the certificate installed on the vm. -func (xcg *X509CertGenerator) ValidateCertificate(addr string, authOptions *auth.Options) (bool, error) { - tlsConfig, err := xcg.ReadTLSConfig(addr, authOptions) - if err != nil { - return false, err - } - - dialer := &net.Dialer{ - Timeout: time.Second * 2, - } - - _, err = tls.DialWithDialer(dialer, "tcp", addr, tlsConfig) - if err != nil { - return false, err - } - - return true, nil -} diff --git a/vendor/github.com/docker/machine/libmachine/cert/cert_test.go b/vendor/github.com/docker/machine/libmachine/cert/cert_test.go deleted file mode 100644 index f5b5ecba..00000000 --- a/vendor/github.com/docker/machine/libmachine/cert/cert_test.go +++ /dev/null @@ -1,81 +0,0 @@ -package cert - -import ( - "io/ioutil" - "os" - "path/filepath" - "testing" -) - -func TestGenerateCACertificate(t *testing.T) { - tmpDir, err := ioutil.TempDir("", "machine-test-") - if err != nil { - t.Fatal(err) - } - // cleanup - defer os.RemoveAll(tmpDir) - - caCertPath := filepath.Join(tmpDir, "ca.pem") - caKeyPath := filepath.Join(tmpDir, "key.pem") - testOrg := "test-org" - bits := 2048 - if err := GenerateCACertificate(caCertPath, caKeyPath, testOrg, bits); err != nil { - t.Fatal(err) - } - - if _, err := os.Stat(caCertPath); err != nil { - t.Fatal(err) - } - if _, err := os.Stat(caKeyPath); err != nil { - t.Fatal(err) - } -} - -func TestGenerateCert(t *testing.T) { - tmpDir, err := ioutil.TempDir("", "machine-test-") - if err != nil { - t.Fatal(err) - } - // cleanup - defer os.RemoveAll(tmpDir) - - caCertPath := filepath.Join(tmpDir, "ca.pem") - caKeyPath := filepath.Join(tmpDir, "key.pem") - certPath := filepath.Join(tmpDir, "cert.pem") - keyPath := filepath.Join(tmpDir, "cert-key.pem") - testOrg := "test-org" - bits := 2048 - if err := GenerateCACertificate(caCertPath, caKeyPath, testOrg, bits); err != nil { - t.Fatal(err) - } - - if _, err := os.Stat(caCertPath); err != nil { - t.Fatal(err) - } - if _, err := os.Stat(caKeyPath); err != nil { - t.Fatal(err) - } - - opts := &Options{ - Hosts: []string{}, - CertFile: certPath, - CAKeyFile: caKeyPath, - CAFile: caCertPath, - KeyFile: keyPath, - Org: testOrg, - Bits: bits, - SwarmMaster: false, - } - - if err := GenerateCert(opts); err != nil { - t.Fatal(err) - } - - if _, err := os.Stat(certPath); err != nil { - t.Fatalf("certificate not created at %s", certPath) - } - - if _, err := os.Stat(keyPath); err != nil { - t.Fatalf("key not created at %s", keyPath) - } -} diff --git a/vendor/github.com/docker/machine/libmachine/check/check.go b/vendor/github.com/docker/machine/libmachine/check/check.go deleted file mode 100644 index 8ec29672..00000000 --- a/vendor/github.com/docker/machine/libmachine/check/check.go +++ /dev/null @@ -1,118 +0,0 @@ -package check - -import ( - "errors" - "fmt" - "net/url" - "strings" - - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/cert" - "github.com/docker/machine/libmachine/host" -) - -var ( - DefaultConnChecker ConnChecker - ErrSwarmNotStarted = errors.New("Connection to Swarm cannot be checked but the certs are valid. Maybe swarm is not started") -) - -func init() { - DefaultConnChecker = &MachineConnChecker{} -} - -// ErrCertInvalid for when the cert is computed to be invalid. -type ErrCertInvalid struct { - wrappedErr error - hostURL string -} - -func (e ErrCertInvalid) Error() string { - return fmt.Sprintf(`There was an error validating certificates for host %q: %s -You can attempt to regenerate them using 'docker-machine regenerate-certs [name]'. -Be advised that this will trigger a Docker daemon restart which will stop running containers. -`, e.hostURL, e.wrappedErr) -} - -type ConnChecker interface { - Check(*host.Host, bool) (dockerHost string, authOptions *auth.Options, err error) -} - -type MachineConnChecker struct{} - -func (mcc *MachineConnChecker) Check(h *host.Host, swarm bool) (string, *auth.Options, error) { - dockerHost, err := h.Driver.GetURL() - if err != nil { - return "", &auth.Options{}, err - } - - dockerURL := dockerHost - if swarm { - dockerURL, err = parseSwarm(dockerHost, h) - if err != nil { - return "", &auth.Options{}, err - } - } - - u, err := url.Parse(dockerURL) - if err != nil { - return "", &auth.Options{}, fmt.Errorf("Error parsing URL: %s", err) - } - - authOptions := h.AuthOptions() - - if err := checkCert(u.Host, authOptions); err != nil { - if swarm { - // Connection to the swarm port cannot be checked. Maybe it's just the swarm containers that are down - // TODO: check the containers and restart them - // Let's check the non-swarm connection to give a better error message to the user. - if _, _, err := mcc.Check(h, false); err == nil { - return "", &auth.Options{}, ErrSwarmNotStarted - } - } - - return "", &auth.Options{}, fmt.Errorf("Error checking and/or regenerating the certs: %s", err) - } - - return dockerURL, authOptions, nil -} - -func checkCert(hostURL string, authOptions *auth.Options) error { - valid, err := cert.ValidateCertificate(hostURL, authOptions) - if !valid || err != nil { - return ErrCertInvalid{ - wrappedErr: err, - hostURL: hostURL, - } - } - - return nil -} - -// TODO: This could use a unit test. -func parseSwarm(hostURL string, h *host.Host) (string, error) { - swarmOptions := h.HostOptions.SwarmOptions - - if !swarmOptions.Master { - return "", fmt.Errorf("%q is not a swarm master. The --swarm flag is intended for use with swarm masters", h.Name) - } - - u, err := url.Parse(swarmOptions.Host) - if err != nil { - return "", fmt.Errorf("There was an error parsing the url: %s", err) - } - parts := strings.Split(u.Host, ":") - swarmPort := parts[1] - - // get IP of machine to replace in case swarm host is 0.0.0.0 - mURL, err := url.Parse(hostURL) - if err != nil { - return "", fmt.Errorf("There was an error parsing the url: %s", err) - } - - mParts := strings.Split(mURL.Host, ":") - machineIP := mParts[0] - - hostURL = fmt.Sprintf("tcp://%s:%s", machineIP, swarmPort) - - return hostURL, nil -} diff --git a/vendor/github.com/docker/machine/libmachine/check/check_test.go b/vendor/github.com/docker/machine/libmachine/check/check_test.go deleted file mode 100644 index 948c08a8..00000000 --- a/vendor/github.com/docker/machine/libmachine/check/check_test.go +++ /dev/null @@ -1,60 +0,0 @@ -package check - -import ( - "errors" - "testing" - - "crypto/tls" - - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/cert" - "github.com/stretchr/testify/assert" -) - -type FakeValidateCertificate struct { - IsValid bool - Err error -} - -type FakeCertGenerator struct { - fakeValidateCertificate *FakeValidateCertificate -} - -func (fcg FakeCertGenerator) GenerateCACertificate(certFile, keyFile, org string, bits int) error { - return nil -} - -func (fcg FakeCertGenerator) GenerateCert(opts *cert.Options) error { - return nil -} - -func (fcg FakeCertGenerator) ValidateCertificate(addr string, authOptions *auth.Options) (bool, error) { - return fcg.fakeValidateCertificate.IsValid, fcg.fakeValidateCertificate.Err -} - -func (fcg FakeCertGenerator) ReadTLSConfig(addr string, authOptions *auth.Options) (*tls.Config, error) { - return nil, nil -} - -func TestCheckCert(t *testing.T) { - errCertsExpired := errors.New("Certs have expired") - - cases := []struct { - hostURL string - authOptions *auth.Options - valid bool - checkErr error - expectedErr error - }{ - {"192.168.99.100:2376", &auth.Options{}, true, nil, nil}, - {"192.168.99.100:2376", &auth.Options{}, false, nil, ErrCertInvalid{wrappedErr: nil, hostURL: "192.168.99.100:2376"}}, - {"192.168.99.100:2376", &auth.Options{}, false, errCertsExpired, ErrCertInvalid{wrappedErr: errCertsExpired, hostURL: "192.168.99.100:2376"}}, - } - - for _, c := range cases { - fcg := FakeCertGenerator{fakeValidateCertificate: &FakeValidateCertificate{c.valid, c.checkErr}} - cert.SetCertGenerator(fcg) - err := checkCert(c.hostURL, c.authOptions) - assert.Equal(t, c.expectedErr, err) - } -} diff --git a/vendor/github.com/docker/machine/libmachine/crashreport/crash_report.go b/vendor/github.com/docker/machine/libmachine/crashreport/crash_report.go deleted file mode 100644 index b59d63f5..00000000 --- a/vendor/github.com/docker/machine/libmachine/crashreport/crash_report.go +++ /dev/null @@ -1,149 +0,0 @@ -package crashreport - -import ( - "fmt" - "os" - "runtime" - - "bytes" - - "os/exec" - - "path/filepath" - - "errors" - - "io/ioutil" - - "github.com/bugsnag/bugsnag-go" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/shell" - "github.com/docker/machine/version" -) - -const ( - defaultAPIKey = "a9697f9a010c33ee218a65e5b1f3b0c1" - noreportAPIKey = "no-report" -) - -type CrashReporter interface { - Send(err CrashError) error -} - -// CrashError describes an error that should be reported to bugsnag -type CrashError struct { - Cause error - Command string - Context string - DriverName string - LogFilePath string -} - -func (e CrashError) Error() string { - return e.Cause.Error() -} - -type BugsnagCrashReporter struct { - baseDir string - apiKey string -} - -// NewCrashReporter creates a new bugsnag based CrashReporter. Needs an apiKey. -var NewCrashReporter = func(baseDir string, apiKey string) CrashReporter { - if apiKey == "" { - apiKey = defaultAPIKey - } - - return &BugsnagCrashReporter{ - baseDir: baseDir, - apiKey: apiKey, - } -} - -// Send sends a crash report to bugsnag via an http call. -func (r *BugsnagCrashReporter) Send(err CrashError) error { - if r.noReportFileExist() || r.apiKey == noreportAPIKey { - log.Debug("Opting out of crash reporting.") - return nil - } - - if r.apiKey == "" { - return errors.New("Not sending report since no api key has been set.") - } - - bugsnag.Configure(bugsnag.Configuration{ - APIKey: r.apiKey, - // XXX we need to abuse bugsnag metrics to get the OS/ARCH information as a usable filter - // Can do that with either "stage" or "hostname" - ReleaseStage: fmt.Sprintf("%s (%s)", runtime.GOOS, runtime.GOARCH), - ProjectPackages: []string{"github.com/docker/machine/[^v]*"}, - AppVersion: version.FullVersion(), - Synchronous: true, - PanicHandler: func() {}, - Logger: new(logger), - }) - - metaData := bugsnag.MetaData{} - - metaData.Add("app", "compiler", fmt.Sprintf("%s (%s)", runtime.Compiler, runtime.Version())) - metaData.Add("device", "os", runtime.GOOS) - metaData.Add("device", "arch", runtime.GOARCH) - - detectRunningShell(&metaData) - detectUname(&metaData) - detectOSVersion(&metaData) - addFile(err.LogFilePath, &metaData) - - var buffer bytes.Buffer - for _, message := range log.History() { - buffer.WriteString(message + "\n") - } - metaData.Add("history", "trace", buffer.String()) - - return bugsnag.Notify(err.Cause, metaData, bugsnag.SeverityError, bugsnag.Context{String: err.Context}, bugsnag.ErrorClass{Name: fmt.Sprintf("%s/%s", err.DriverName, err.Command)}) -} - -func (r *BugsnagCrashReporter) noReportFileExist() bool { - optOutFilePath := filepath.Join(r.baseDir, "no-error-report") - if _, err := os.Stat(optOutFilePath); os.IsNotExist(err) { - return false - } - return true -} - -func addFile(path string, metaData *bugsnag.MetaData) { - if path == "" { - return - } - file, err := os.Open(path) - if err != nil { - log.Debug(err) - return - } - data, err := ioutil.ReadAll(file) - if err != nil { - log.Debug(err) - return - } - metaData.Add("logfile", filepath.Base(path), string(data)) -} - -func detectRunningShell(metaData *bugsnag.MetaData) { - shell, err := shell.Detect() - if err == nil { - metaData.Add("device", "shell", shell) - } -} - -func detectUname(metaData *bugsnag.MetaData) { - cmd := exec.Command("uname", "-s") - output, err := cmd.Output() - if err != nil { - return - } - metaData.Add("device", "uname", string(output)) -} - -func detectOSVersion(metaData *bugsnag.MetaData) { - metaData.Add("device", "os version", localOSVersion()) -} diff --git a/vendor/github.com/docker/machine/libmachine/crashreport/crash_report_logger.go b/vendor/github.com/docker/machine/libmachine/crashreport/crash_report_logger.go deleted file mode 100644 index c1243769..00000000 --- a/vendor/github.com/docker/machine/libmachine/crashreport/crash_report_logger.go +++ /dev/null @@ -1,9 +0,0 @@ -package crashreport - -import "github.com/docker/machine/libmachine/log" - -type logger struct{} - -func (d *logger) Printf(fmtString string, args ...interface{}) { - log.Debugf(fmtString, args) -} diff --git a/vendor/github.com/docker/machine/libmachine/crashreport/crash_report_test.go b/vendor/github.com/docker/machine/libmachine/crashreport/crash_report_test.go deleted file mode 100644 index b71e4367..00000000 --- a/vendor/github.com/docker/machine/libmachine/crashreport/crash_report_test.go +++ /dev/null @@ -1,39 +0,0 @@ -package crashreport - -import ( - "testing" - - "io/ioutil" - - "os" - "path/filepath" - - "github.com/bugsnag/bugsnag-go" - "github.com/stretchr/testify/assert" -) - -func TestFileIsNotReadWhenNotExisting(t *testing.T) { - metaData := bugsnag.MetaData{} - addFile("not existing", &metaData) - assert.Empty(t, metaData) -} - -func TestRead(t *testing.T) { - metaData := bugsnag.MetaData{} - content := "foo\nbar\nqix\n" - fileName := createTempFile(t, content) - defer os.Remove(fileName) - addFile(fileName, &metaData) - assert.Equal(t, "foo\nbar\nqix\n", metaData["logfile"][filepath.Base(fileName)]) -} - -func createTempFile(t *testing.T, content string) string { - file, err := ioutil.TempFile("", "") - if err != nil { - t.Fatal(err) - } - if err := ioutil.WriteFile(file.Name(), []byte(content), 0644); err != nil { - t.Fatal(err) - } - return file.Name() -} diff --git a/vendor/github.com/docker/machine/libmachine/crashreport/os_darwin.go b/vendor/github.com/docker/machine/libmachine/crashreport/os_darwin.go deleted file mode 100644 index 2e887e4d..00000000 --- a/vendor/github.com/docker/machine/libmachine/crashreport/os_darwin.go +++ /dev/null @@ -1,12 +0,0 @@ -package crashreport - -import "os/exec" - -func localOSVersion() string { - command := exec.Command("bash", "-c", `sw_vers | grep ProductVersion | cut -d$'\t' -f2`) - output, err := command.Output() - if err != nil { - return "" - } - return string(output) -} diff --git a/vendor/github.com/docker/machine/libmachine/crashreport/os_linux.go b/vendor/github.com/docker/machine/libmachine/crashreport/os_linux.go deleted file mode 100644 index 31b72a89..00000000 --- a/vendor/github.com/docker/machine/libmachine/crashreport/os_linux.go +++ /dev/null @@ -1,12 +0,0 @@ -package crashreport - -import "os/exec" - -func localOSVersion() string { - command := exec.Command("bash", "-c", `cat /etc/os-release | grep 'VERSION=' | cut -d'=' -f2`) - output, err := command.Output() - if err != nil { - return "" - } - return string(output) -} diff --git a/vendor/github.com/docker/machine/libmachine/crashreport/os_windows.go b/vendor/github.com/docker/machine/libmachine/crashreport/os_windows.go deleted file mode 100644 index 6e3a33cc..00000000 --- a/vendor/github.com/docker/machine/libmachine/crashreport/os_windows.go +++ /dev/null @@ -1,47 +0,0 @@ -package crashreport - -import ( - "os/exec" - "strings" -) - -func localOSVersion() string { - command := exec.Command("ver") - output, err := command.Output() - if err == nil { - return parseVerOutput(string(output)) - } - - command = exec.Command("systeminfo") - output, err = command.Output() - if err == nil { - return parseSystemInfoOutput(string(output)) - } - - return "" -} - -func parseSystemInfoOutput(output string) string { - lines := strings.Split(string(output), "\n") - for _, line := range lines { - if strings.HasPrefix(line, "OS Version:") { - return strings.TrimSpace(line[len("OS Version:"):]) - } - } - - // If we couldn't find the version, maybe the output is not in english - // Let's parse the fourth line since it seems to be the one always used - // for the version. - if len(lines) >= 4 { - parts := strings.Split(lines[3], ":") - if len(parts) == 2 { - return strings.TrimSpace(parts[1]) - } - } - - return "" -} - -func parseVerOutput(output string) string { - return strings.TrimSpace(output) -} diff --git a/vendor/github.com/docker/machine/libmachine/crashreport/os_windows_test.go b/vendor/github.com/docker/machine/libmachine/crashreport/os_windows_test.go deleted file mode 100644 index b9cdcdc9..00000000 --- a/vendor/github.com/docker/machine/libmachine/crashreport/os_windows_test.go +++ /dev/null @@ -1,47 +0,0 @@ -package crashreport - -import ( - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestParseVerOutput(t *testing.T) { - output := ` - -Microsoft Windows [version 6.3.9600] - -` - - assert.Equal(t, "Microsoft Windows [version 6.3.9600]", parseVerOutput(output)) -} - -func TestParseSystemInfoOutput(t *testing.T) { - output := ` -Host Name: DESKTOP-3A5PULA -OS Name: Microsoft Windows 10 Enterprise -OS Version: 10.0.10240 N/A Build 10240 -OS Manufacturer: Microsoft Corporation -OS Configuration: Standalone Workstation -OS Build Type: Multiprocessor Free -Registered Owner: Windows User -` - - assert.Equal(t, "10.0.10240 N/A Build 10240", parseSystemInfoOutput(output)) -} - -func TestParseNonEnglishSystemInfoOutput(t *testing.T) { - output := ` -Ignored: ... -Ignored: ... -Version du Système: 10.0.10350 -` - - assert.Equal(t, "10.0.10350", parseSystemInfoOutput(output)) -} - -func TestParseInvalidSystemInfoOutput(t *testing.T) { - output := "Invalid" - - assert.Empty(t, parseSystemInfoOutput(output)) -} diff --git a/vendor/github.com/docker/machine/libmachine/drivers/base.go b/vendor/github.com/docker/machine/libmachine/drivers/base.go deleted file mode 100644 index 040ea2a3..00000000 --- a/vendor/github.com/docker/machine/libmachine/drivers/base.go +++ /dev/null @@ -1,91 +0,0 @@ -package drivers - -import ( - "errors" - "path/filepath" -) - -const ( - DefaultSSHUser = "root" - DefaultSSHPort = 22 - DefaultEngineInstallURL = "https://get.docker.com" -) - -// BaseDriver - Embed this struct into drivers to provide the common set -// of fields and functions. -type BaseDriver struct { - IPAddress string - MachineName string - SSHUser string - SSHPort int - SSHKeyPath string - StorePath string - SwarmMaster bool - SwarmHost string - SwarmDiscovery string -} - -// DriverName returns the name of the driver -func (d *BaseDriver) DriverName() string { - return "unknown" -} - -// GetMachineName returns the machine name -func (d *BaseDriver) GetMachineName() string { - return d.MachineName -} - -// GetIP returns the ip -func (d *BaseDriver) GetIP() (string, error) { - if d.IPAddress == "" { - return "", errors.New("IP address is not set") - } - return d.IPAddress, nil -} - -// GetSSHKeyPath returns the ssh key path -func (d *BaseDriver) GetSSHKeyPath() string { - if d.SSHKeyPath == "" { - d.SSHKeyPath = d.ResolveStorePath("id_rsa") - } - return d.SSHKeyPath -} - -// GetSSHPort returns the ssh port, 22 if not specified -func (d *BaseDriver) GetSSHPort() (int, error) { - if d.SSHPort == 0 { - d.SSHPort = DefaultSSHPort - } - - return d.SSHPort, nil -} - -// GetSSHUsername returns the ssh user name, root if not specified -func (d *BaseDriver) GetSSHUsername() string { - if d.SSHUser == "" { - d.SSHUser = DefaultSSHUser - } - return d.SSHUser -} - -// PreCreateCheck is called to enforce pre-creation steps -func (d *BaseDriver) PreCreateCheck() error { - return nil -} - -// ResolveStorePath returns the store path where the machine is -func (d *BaseDriver) ResolveStorePath(file string) string { - return filepath.Join(d.StorePath, "machines", d.MachineName, file) -} - -// SetSwarmConfigFromFlags configures the driver for swarm -func (d *BaseDriver) SetSwarmConfigFromFlags(flags DriverOptions) { - d.SwarmMaster = flags.Bool("swarm-master") - d.SwarmHost = flags.String("swarm-host") - d.SwarmDiscovery = flags.String("swarm-discovery") -} - -func EngineInstallURLFlagSet(flags DriverOptions) bool { - engineInstallURLFlag := flags.String("engine-install-url") - return engineInstallURLFlag != DefaultEngineInstallURL && engineInstallURLFlag != "" -} diff --git a/vendor/github.com/docker/machine/libmachine/drivers/base_test.go b/vendor/github.com/docker/machine/libmachine/drivers/base_test.go deleted file mode 100644 index 0b824aaf..00000000 --- a/vendor/github.com/docker/machine/libmachine/drivers/base_test.go +++ /dev/null @@ -1,50 +0,0 @@ -package drivers - -import ( - "errors" - "testing" - - "github.com/docker/machine/libmachine/mcnflag" - "github.com/stretchr/testify/assert" -) - -func TestIP(t *testing.T) { - cases := []struct { - baseDriver *BaseDriver - expectedIP string - expectedErr error - }{ - {&BaseDriver{}, "", errors.New("IP address is not set")}, - {&BaseDriver{IPAddress: "2001:4860:0:2001::68"}, "2001:4860:0:2001::68", nil}, - {&BaseDriver{IPAddress: "192.168.0.1"}, "192.168.0.1", nil}, - {&BaseDriver{IPAddress: "::1"}, "::1", nil}, - {&BaseDriver{IPAddress: "hostname"}, "hostname", nil}, - } - - for _, c := range cases { - ip, err := c.baseDriver.GetIP() - assert.Equal(t, c.expectedIP, ip) - assert.Equal(t, c.expectedErr, err) - } -} - -func TestEngineInstallUrlFlagEmpty(t *testing.T) { - assert.False(t, EngineInstallURLFlagSet(&CheckDriverOptions{})) -} - -func createDriverOptionWithEngineInstall(url string) *CheckDriverOptions { - return &CheckDriverOptions{ - FlagsValues: map[string]interface{}{"engine-install-url": url}, - CreateFlags: []mcnflag.Flag{mcnflag.StringFlag{Name: "engine-install-url", Value: ""}}, - } -} - -func TestEngineInstallUrlFlagDefault(t *testing.T) { - options := createDriverOptionWithEngineInstall(DefaultEngineInstallURL) - assert.False(t, EngineInstallURLFlagSet(options)) -} - -func TestEngineInstallUrlFlagSet(t *testing.T) { - options := createDriverOptionWithEngineInstall("https://test.docker.com") - assert.True(t, EngineInstallURLFlagSet(options)) -} diff --git a/vendor/github.com/docker/machine/libmachine/drivers/check.go b/vendor/github.com/docker/machine/libmachine/drivers/check.go deleted file mode 100644 index 67724718..00000000 --- a/vendor/github.com/docker/machine/libmachine/drivers/check.go +++ /dev/null @@ -1,84 +0,0 @@ -package drivers - -import "github.com/docker/machine/libmachine/mcnflag" - -// CheckDriverOptions implements DriverOptions and is used to validate flag parsing -type CheckDriverOptions struct { - FlagsValues map[string]interface{} - CreateFlags []mcnflag.Flag - InvalidFlags []string -} - -func (o *CheckDriverOptions) String(key string) string { - for _, flag := range o.CreateFlags { - if flag.String() == key { - f, ok := flag.(mcnflag.StringFlag) - if !ok { - o.InvalidFlags = append(o.InvalidFlags, flag.String()) - } - - value, present := o.FlagsValues[key].(string) - if present { - return value - } - return f.Value - } - } - - return "" -} - -func (o *CheckDriverOptions) StringSlice(key string) []string { - for _, flag := range o.CreateFlags { - if flag.String() == key { - f, ok := flag.(mcnflag.StringSliceFlag) - if !ok { - o.InvalidFlags = append(o.InvalidFlags, flag.String()) - } - - value, present := o.FlagsValues[key].([]string) - if present { - return value - } - return f.Value - } - } - - return nil -} - -func (o *CheckDriverOptions) Int(key string) int { - for _, flag := range o.CreateFlags { - if flag.String() == key { - f, ok := flag.(mcnflag.IntFlag) - if !ok { - o.InvalidFlags = append(o.InvalidFlags, flag.String()) - } - - value, present := o.FlagsValues[key].(int) - if present { - return value - } - return f.Value - } - } - - return 0 -} - -func (o *CheckDriverOptions) Bool(key string) bool { - for _, flag := range o.CreateFlags { - if flag.String() == key { - _, ok := flag.(mcnflag.BoolFlag) - if !ok { - o.InvalidFlags = append(o.InvalidFlags, flag.String()) - } - } - } - - value, present := o.FlagsValues[key].(bool) - if present { - return value - } - return false -} diff --git a/vendor/github.com/docker/machine/libmachine/drivers/drivers.go b/vendor/github.com/docker/machine/libmachine/drivers/drivers.go deleted file mode 100644 index dbc37d0e..00000000 --- a/vendor/github.com/docker/machine/libmachine/drivers/drivers.go +++ /dev/null @@ -1,109 +0,0 @@ -package drivers - -import ( - "errors" - - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnflag" - "github.com/docker/machine/libmachine/state" -) - -// Driver defines how a host is created and controlled. Different types of -// driver represent different ways hosts can be created (e.g. different -// hypervisors, different cloud providers) -type Driver interface { - // Create a host using the driver's config - Create() error - - // DriverName returns the name of the driver - DriverName() string - - // GetCreateFlags returns the mcnflag.Flag slice representing the flags - // that can be set, their descriptions and defaults. - GetCreateFlags() []mcnflag.Flag - - // GetIP returns an IP or hostname that this host is available at - // e.g. 1.2.3.4 or docker-host-d60b70a14d3a.cloudapp.net - GetIP() (string, error) - - // GetMachineName returns the name of the machine - GetMachineName() string - - // GetSSHHostname returns hostname for use with ssh - GetSSHHostname() (string, error) - - // GetSSHKeyPath returns key path for use with ssh - GetSSHKeyPath() string - - // GetSSHPort returns port for use with ssh - GetSSHPort() (int, error) - - // GetSSHUsername returns username for use with ssh - GetSSHUsername() string - - // GetURL returns a Docker compatible host URL for connecting to this host - // e.g. tcp://1.2.3.4:2376 - GetURL() (string, error) - - // GetState returns the state that the host is in (running, stopped, etc) - GetState() (state.State, error) - - // Kill stops a host forcefully - Kill() error - - // PreCreateCheck allows for pre-create operations to make sure a driver is ready for creation - PreCreateCheck() error - - // Remove a host - Remove() error - - // Restart a host. This may just call Stop(); Start() if the provider does not - // have any special restart behaviour. - Restart() error - - // SetConfigFromFlags configures the driver with the object that was returned - // by RegisterCreateFlags - SetConfigFromFlags(opts DriverOptions) error - - // Start a host - Start() error - - // Stop a host gracefully - Stop() error -} - -var ErrHostIsNotRunning = errors.New("Host is not running") - -type DriverOptions interface { - String(key string) string - StringSlice(key string) []string - Int(key string) int - Bool(key string) bool -} - -func MachineInState(d Driver, desiredState state.State) func() bool { - return func() bool { - currentState, err := d.GetState() - if err != nil { - log.Debugf("Error getting machine state: %s", err) - } - if currentState == desiredState { - return true - } - return false - } -} - -// MustBeRunning will return an error if the machine is not in a running state. -func MustBeRunning(d Driver) error { - s, err := d.GetState() - if err != nil { - return err - } - - if s != state.Running { - return ErrHostIsNotRunning - } - - return nil -} diff --git a/vendor/github.com/docker/machine/libmachine/drivers/notsupported.go b/vendor/github.com/docker/machine/libmachine/drivers/notsupported.go deleted file mode 100644 index 59a1d4e5..00000000 --- a/vendor/github.com/docker/machine/libmachine/drivers/notsupported.go +++ /dev/null @@ -1,89 +0,0 @@ -package drivers - -import ( - "fmt" - - "github.com/docker/machine/libmachine/mcnflag" - "github.com/docker/machine/libmachine/state" -) - -type DriverNotSupported struct { - *BaseDriver - Name string -} - -type NotSupported struct { - DriverName string -} - -func (e NotSupported) Error() string { - return fmt.Sprintf("Driver %q not supported on this platform.", e.DriverName) -} - -// NewDriverNotSupported creates a placeholder Driver that replaces -// a driver that is not supported on a given platform. eg fusion on linux. -func NewDriverNotSupported(driverName, hostName, storePath string) Driver { - return &DriverNotSupported{ - BaseDriver: &BaseDriver{ - MachineName: hostName, - StorePath: storePath, - }, - Name: driverName, - } -} - -func (d *DriverNotSupported) DriverName() string { - return d.Name -} - -func (d *DriverNotSupported) PreCreateCheck() error { - return NotSupported{d.DriverName()} -} - -func (d *DriverNotSupported) GetCreateFlags() []mcnflag.Flag { - return nil -} - -func (d *DriverNotSupported) SetConfigFromFlags(flags DriverOptions) error { - return NotSupported{d.DriverName()} -} - -func (d *DriverNotSupported) GetURL() (string, error) { - return "", NotSupported{d.DriverName()} -} - -func (d *DriverNotSupported) GetSSHHostname() (string, error) { - return "", NotSupported{d.DriverName()} -} - -func (d *DriverNotSupported) GetState() (state.State, error) { - return state.Error, NotSupported{d.DriverName()} -} - -func (d *DriverNotSupported) Create() error { - return NotSupported{d.DriverName()} -} - -func (d *DriverNotSupported) Remove() error { - return NotSupported{d.DriverName()} -} - -func (d *DriverNotSupported) Start() error { - return NotSupported{d.DriverName()} -} - -func (d *DriverNotSupported) Stop() error { - return NotSupported{d.DriverName()} -} - -func (d *DriverNotSupported) Restart() error { - return NotSupported{d.DriverName()} -} - -func (d *DriverNotSupported) Kill() error { - return NotSupported{d.DriverName()} -} - -func (d *DriverNotSupported) Upgrade() error { - return NotSupported{d.DriverName()} -} diff --git a/vendor/github.com/docker/machine/libmachine/drivers/plugin/localbinary/plugin.go b/vendor/github.com/docker/machine/libmachine/drivers/plugin/localbinary/plugin.go deleted file mode 100644 index 68863373..00000000 --- a/vendor/github.com/docker/machine/libmachine/drivers/plugin/localbinary/plugin.go +++ /dev/null @@ -1,245 +0,0 @@ -package localbinary - -import ( - "bufio" - "fmt" - "io" - "os" - "os/exec" - "strings" - "time" - - "github.com/docker/machine/libmachine/log" -) - -var ( - // Timeout where we will bail if we're not able to properly contact the - // plugin server. - defaultTimeout = 10 * time.Second - CurrentBinaryIsDockerMachine = false - CoreDrivers = [...]string{"amazonec2", "azure", "digitalocean", - "exoscale", "generic", "google", "hyperv", "none", "openstack", - "rackspace", "softlayer", "virtualbox", "vmwarefusion", - "vmwarevcloudair", "vmwarevsphere"} -) - -const ( - pluginOut = "(%s) %s" - pluginErr = "(%s) DBG | %s" - PluginEnvKey = "MACHINE_PLUGIN_TOKEN" - PluginEnvVal = "42" - PluginEnvDriverName = "MACHINE_PLUGIN_DRIVER_NAME" -) - -type PluginStreamer interface { - // Return a channel for receiving the output of the stream line by - // line. - // - // It happens to be the case that we do this all inside of the main - // plugin struct today, but that may not be the case forever. - AttachStream(*bufio.Scanner) <-chan string -} - -type PluginServer interface { - // Get the address where the plugin server is listening. - Address() (string, error) - - // Serve kicks off the plugin server. - Serve() error - - // Close shuts down the initialized server. - Close() error -} - -type McnBinaryExecutor interface { - // Execute the driver plugin. Returns scanners for plugin binary - // stdout and stderr. - Start() (*bufio.Scanner, *bufio.Scanner, error) - - // Stop reading from the plugins in question. - Close() error -} - -// DriverPlugin interface wraps the underlying mechanics of starting a driver -// plugin server and then figuring out where it can be dialed. -type DriverPlugin interface { - PluginServer - PluginStreamer -} - -type Plugin struct { - Executor McnBinaryExecutor - Addr string - MachineName string - addrCh chan string - stopCh chan bool - timeout time.Duration -} - -type Executor struct { - pluginStdout, pluginStderr io.ReadCloser - DriverName string - cmd *exec.Cmd - binaryPath string -} - -type ErrPluginBinaryNotFound struct { - driverName string -} - -func (e ErrPluginBinaryNotFound) Error() string { - return fmt.Sprintf("Driver %q not found. Do you have the plugin binary accessible in your PATH?", e.driverName) -} - -// driverPath finds the path of a driver binary by its name. -// + If the driver is a core driver, there is no separate driver binary. We reuse current binary if it's `docker-machine` -// or we assume `docker-machine` is in the PATH. -// + If the driver is NOT a core driver, then the separate binary must be in the PATH and it's name must be -// `docker-machine-driver-driverName` -func driverPath(driverName string) string { - for _, coreDriver := range CoreDrivers { - if coreDriver == driverName { - if CurrentBinaryIsDockerMachine { - return os.Args[0] - } - - return "docker-machine" - } - } - - return fmt.Sprintf("docker-machine-driver-%s", driverName) -} - -func NewPlugin(driverName string) (*Plugin, error) { - driverPath := driverPath(driverName) - binaryPath, err := exec.LookPath(driverPath) - if err != nil { - return nil, ErrPluginBinaryNotFound{driverName} - } - - log.Debugf("Found binary path at %s", binaryPath) - - return &Plugin{ - stopCh: make(chan bool), - addrCh: make(chan string, 1), - Executor: &Executor{ - DriverName: driverName, - binaryPath: binaryPath, - }, - }, nil -} - -func (lbe *Executor) Start() (*bufio.Scanner, *bufio.Scanner, error) { - var err error - - log.Debugf("Launching plugin server for driver %s", lbe.DriverName) - - lbe.cmd = exec.Command(lbe.binaryPath) - - lbe.pluginStdout, err = lbe.cmd.StdoutPipe() - if err != nil { - return nil, nil, fmt.Errorf("Error getting cmd stdout pipe: %s", err) - } - - lbe.pluginStderr, err = lbe.cmd.StderrPipe() - if err != nil { - return nil, nil, fmt.Errorf("Error getting cmd stderr pipe: %s", err) - } - - outScanner := bufio.NewScanner(lbe.pluginStdout) - errScanner := bufio.NewScanner(lbe.pluginStderr) - - os.Setenv(PluginEnvKey, PluginEnvVal) - os.Setenv(PluginEnvDriverName, lbe.DriverName) - - if err := lbe.cmd.Start(); err != nil { - return nil, nil, fmt.Errorf("Error starting plugin binary: %s", err) - } - - return outScanner, errScanner, nil -} - -func (lbe *Executor) Close() error { - if err := lbe.cmd.Wait(); err != nil { - return fmt.Errorf("Error waiting for binary close: %s", err) - } - - return nil -} - -func stream(scanner *bufio.Scanner, streamOutCh chan<- string) { - for scanner.Scan() { - line := scanner.Text() - if err := scanner.Err(); err != nil { - log.Warnf("Scanning stream: %s", err) - } - streamOutCh <- strings.Trim(line, "\n") - } -} - -func (lbp *Plugin) AttachStream(scanner *bufio.Scanner) <-chan string { - streamOutCh := make(chan string) - go stream(scanner, streamOutCh) - return streamOutCh -} - -func (lbp *Plugin) execServer() error { - outScanner, errScanner, err := lbp.Executor.Start() - if err != nil { - return err - } - - // Scan just one line to get the address, then send it to the relevant - // channel. - outScanner.Scan() - addr := outScanner.Text() - if err := outScanner.Err(); err != nil { - return fmt.Errorf("Reading plugin address failed: %s", err) - } - - lbp.addrCh <- strings.TrimSpace(addr) - - stdOutCh := lbp.AttachStream(outScanner) - stdErrCh := lbp.AttachStream(errScanner) - - for { - select { - case out := <-stdOutCh: - log.Infof(pluginOut, lbp.MachineName, out) - case err := <-stdErrCh: - log.Debugf(pluginErr, lbp.MachineName, err) - case <-lbp.stopCh: - if err := lbp.Executor.Close(); err != nil { - return fmt.Errorf("Error closing local plugin binary: %s", err) - } - return nil - } - } -} - -func (lbp *Plugin) Serve() error { - return lbp.execServer() -} - -func (lbp *Plugin) Address() (string, error) { - if lbp.Addr == "" { - if lbp.timeout == 0 { - lbp.timeout = defaultTimeout - } - - select { - case lbp.Addr = <-lbp.addrCh: - log.Debugf("Plugin server listening at address %s", lbp.Addr) - close(lbp.addrCh) - return lbp.Addr, nil - case <-time.After(lbp.timeout): - return "", fmt.Errorf("Failed to dial the plugin server in %s", lbp.timeout) - } - } - return lbp.Addr, nil -} - -func (lbp *Plugin) Close() error { - lbp.stopCh <- true - return nil -} diff --git a/vendor/github.com/docker/machine/libmachine/drivers/plugin/localbinary/plugin_test.go b/vendor/github.com/docker/machine/libmachine/drivers/plugin/localbinary/plugin_test.go deleted file mode 100644 index 8d5dae09..00000000 --- a/vendor/github.com/docker/machine/libmachine/drivers/plugin/localbinary/plugin_test.go +++ /dev/null @@ -1,159 +0,0 @@ -package localbinary - -import ( - "bufio" - "fmt" - "io" - "testing" - "time" - - "os" - - "github.com/docker/machine/libmachine/log" - "github.com/stretchr/testify/assert" -) - -type FakeExecutor struct { - stdout, stderr io.ReadCloser - closed bool -} - -func (fe *FakeExecutor) Start() (*bufio.Scanner, *bufio.Scanner, error) { - return bufio.NewScanner(fe.stdout), bufio.NewScanner(fe.stderr), nil -} - -func (fe *FakeExecutor) Close() error { - fe.closed = true - return nil -} - -func TestLocalBinaryPluginAddress(t *testing.T) { - lbp := &Plugin{} - expectedAddr := "127.0.0.1:12345" - - lbp.addrCh = make(chan string, 1) - lbp.addrCh <- expectedAddr - - // Call the first time to read from the channel - addr, err := lbp.Address() - if err != nil { - t.Fatalf("Expected no error, instead got %s", err) - } - if addr != expectedAddr { - t.Fatal("Expected did not match actual address") - } - - // Call the second time to read the "cached" address value - addr, err = lbp.Address() - if err != nil { - t.Fatalf("Expected no error, instead got %s", err) - } - if addr != expectedAddr { - t.Fatal("Expected did not match actual address") - } -} - -func TestLocalBinaryPluginAddressTimeout(t *testing.T) { - if testing.Short() { - t.Skip("Skipping timeout test") - } - - lbp := &Plugin{ - addrCh: make(chan string, 1), - timeout: 1 * time.Second, - } - - addr, err := lbp.Address() - - assert.Empty(t, addr) - assert.EqualError(t, err, "Failed to dial the plugin server in 1s") -} - -func TestLocalBinaryPluginClose(t *testing.T) { - lbp := &Plugin{} - lbp.stopCh = make(chan bool, 1) - go lbp.Close() - stopped := <-lbp.stopCh - if !stopped { - t.Fatal("Close did not send a stop message on the proper channel") - } -} - -func TestExecServer(t *testing.T) { - logOutReader, logOutWriter := io.Pipe() - logErrReader, logErrWriter := io.Pipe() - - log.SetDebug(true) - log.SetOutWriter(logOutWriter) - log.SetErrWriter(logErrWriter) - - defer func() { - log.SetDebug(false) - log.SetOutWriter(os.Stdout) - log.SetErrWriter(os.Stderr) - }() - - stdoutReader, stdoutWriter := io.Pipe() - stderrReader, stderrWriter := io.Pipe() - - fe := &FakeExecutor{ - stdout: stdoutReader, - stderr: stderrReader, - } - - machineName := "test" - lbp := &Plugin{ - MachineName: machineName, - Executor: fe, - addrCh: make(chan string, 1), - stopCh: make(chan bool, 1), - } - - finalErr := make(chan error) - - // Start the docker-machine-foo plugin server - go func() { - finalErr <- lbp.execServer() - }() - - logOutScanner := bufio.NewScanner(logOutReader) - logErrScanner := bufio.NewScanner(logErrReader) - - // Write the ip address - expectedAddr := "127.0.0.1:12345" - if _, err := io.WriteString(stdoutWriter, expectedAddr+"\n"); err != nil { - t.Fatalf("Error attempting to write plugin address: %s", err) - } - - if addr := <-lbp.addrCh; addr != expectedAddr { - t.Fatalf("Expected to read the expected address properly in server but did not") - } - - // Write a log in stdout - expectedPluginOut := "Doing some fun plugin stuff..." - if _, err := io.WriteString(stdoutWriter, expectedPluginOut+"\n"); err != nil { - t.Fatalf("Error attempting to write to out in plugin: %s", err) - } - - expectedOut := fmt.Sprintf(pluginOut, machineName, expectedPluginOut) - if logOutScanner.Scan(); logOutScanner.Text() != expectedOut { - t.Fatalf("Output written to log was not what we expected\nexpected: %s\nactual: %s", expectedOut, logOutScanner.Text()) - } - - // Write a log in stderr - expectedPluginErr := "Uh oh, something in plugin went wrong..." - if _, err := io.WriteString(stderrWriter, expectedPluginErr+"\n"); err != nil { - t.Fatalf("Error attempting to write to err in plugin: %s", err) - } - - expectedErr := fmt.Sprintf(pluginErr, machineName, expectedPluginErr) - if logErrScanner.Scan(); logErrScanner.Text() != expectedErr { - t.Fatalf("Error written to log was not what we expected\nexpected: %s\nactual: %s", expectedErr, logErrScanner.Text()) - } - - lbp.Close() - - if err := <-finalErr; err != nil { - t.Fatalf("Error serving: %s", err) - } -} diff --git a/vendor/github.com/docker/machine/libmachine/drivers/plugin/register_driver.go b/vendor/github.com/docker/machine/libmachine/drivers/plugin/register_driver.go deleted file mode 100644 index 27e0dbc3..00000000 --- a/vendor/github.com/docker/machine/libmachine/drivers/plugin/register_driver.go +++ /dev/null @@ -1,63 +0,0 @@ -package plugin - -import ( - "fmt" - "net" - "net/http" - "net/rpc" - "os" - "time" - - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/drivers/plugin/localbinary" - "github.com/docker/machine/libmachine/drivers/rpc" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/version" -) - -var ( - heartbeatTimeout = 10 * time.Second -) - -func RegisterDriver(d drivers.Driver) { - if os.Getenv(localbinary.PluginEnvKey) != localbinary.PluginEnvVal { - fmt.Fprintf(os.Stderr, `This is a Docker Machine plugin binary. -Plugin binaries are not intended to be invoked directly. -Please use this plugin through the main 'docker-machine' binary. -(API version: %d) -`, version.APIVersion) - os.Exit(1) - } - - log.SetDebug(true) - os.Setenv("MACHINE_DEBUG", "1") - - rpcd := rpcdriver.NewRPCServerDriver(d) - rpc.RegisterName(rpcdriver.RPCServiceNameV0, rpcd) - rpc.RegisterName(rpcdriver.RPCServiceNameV1, rpcd) - rpc.HandleHTTP() - - listener, err := net.Listen("tcp", "127.0.0.1:0") - if err != nil { - fmt.Fprintf(os.Stderr, "Error loading RPC server: %s\n", err) - os.Exit(1) - } - defer listener.Close() - - fmt.Println(listener.Addr()) - - go http.Serve(listener, nil) - - for { - select { - case <-rpcd.CloseCh: - log.Debug("Closing plugin on server side") - os.Exit(0) - case <-rpcd.HeartbeatCh: - continue - case <-time.After(heartbeatTimeout): - // TODO: Add heartbeat retry logic - os.Exit(1) - } - } -} diff --git a/vendor/github.com/docker/machine/libmachine/drivers/rpc/client_driver.go b/vendor/github.com/docker/machine/libmachine/drivers/rpc/client_driver.go deleted file mode 100644 index 17e4be09..00000000 --- a/vendor/github.com/docker/machine/libmachine/drivers/rpc/client_driver.go +++ /dev/null @@ -1,366 +0,0 @@ -package rpcdriver - -import ( - "fmt" - "net/rpc" - "sync" - "time" - - "io" - - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/drivers/plugin/localbinary" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnflag" - "github.com/docker/machine/libmachine/state" - "github.com/docker/machine/libmachine/version" -) - -var ( - heartbeatInterval = 5 * time.Second -) - -type RPCClientDriverFactory interface { - NewRPCClientDriver(driverName string, rawDriver []byte) (*RPCClientDriver, error) - io.Closer -} - -type DefaultRPCClientDriverFactory struct { - openedDrivers []*RPCClientDriver - openedDriversLock sync.Locker -} - -func NewRPCClientDriverFactory() RPCClientDriverFactory { - return &DefaultRPCClientDriverFactory{ - openedDrivers: []*RPCClientDriver{}, - openedDriversLock: &sync.Mutex{}, - } -} - -type RPCClientDriver struct { - plugin localbinary.DriverPlugin - heartbeatDoneCh chan bool - Client *InternalClient -} - -type RPCCall struct { - ServiceMethod string - Args interface{} - Reply interface{} -} - -type InternalClient struct { - MachineName string - RPCClient *rpc.Client - rpcServiceName string -} - -const ( - RPCServiceNameV0 = `RpcServerDriver` - RPCServiceNameV1 = `RPCServerDriver` - - HeartbeatMethod = `.Heartbeat` - GetVersionMethod = `.GetVersion` - CloseMethod = `.Close` - GetCreateFlagsMethod = `.GetCreateFlags` - SetConfigRawMethod = `.SetConfigRaw` - GetConfigRawMethod = `.GetConfigRaw` - DriverNameMethod = `.DriverName` - SetConfigFromFlagsMethod = `.SetConfigFromFlags` - GetURLMethod = `.GetURL` - GetMachineNameMethod = `.GetMachineName` - GetIPMethod = `.GetIP` - GetSSHHostnameMethod = `.GetSSHHostname` - GetSSHKeyPathMethod = `.GetSSHKeyPath` - GetSSHPortMethod = `.GetSSHPort` - GetSSHUsernameMethod = `.GetSSHUsername` - GetStateMethod = `.GetState` - PreCreateCheckMethod = `.PreCreateCheck` - CreateMethod = `.Create` - RemoveMethod = `.Remove` - StartMethod = `.Start` - StopMethod = `.Stop` - RestartMethod = `.Restart` - KillMethod = `.Kill` - UpgradeMethod = `.Upgrade` -) - -func (ic *InternalClient) Call(serviceMethod string, args interface{}, reply interface{}) error { - if serviceMethod != HeartbeatMethod { - log.Debugf("(%s) Calling %+v", ic.MachineName, serviceMethod) - } - return ic.RPCClient.Call(ic.rpcServiceName+serviceMethod, args, reply) -} - -func (ic *InternalClient) switchToV0() { - ic.rpcServiceName = RPCServiceNameV0 -} - -func NewInternalClient(rpcclient *rpc.Client) *InternalClient { - return &InternalClient{ - RPCClient: rpcclient, - rpcServiceName: RPCServiceNameV1, - } -} - -func (f *DefaultRPCClientDriverFactory) Close() error { - f.openedDriversLock.Lock() - defer f.openedDriversLock.Unlock() - - for _, openedDriver := range f.openedDrivers { - if err := openedDriver.close(); err != nil { - // No need to display an error. - // There's nothing we can do and it doesn't add value to the user. - } - } - f.openedDrivers = []*RPCClientDriver{} - - return nil -} - -func (f *DefaultRPCClientDriverFactory) NewRPCClientDriver(driverName string, rawDriver []byte) (*RPCClientDriver, error) { - mcnName := "" - - p, err := localbinary.NewPlugin(driverName) - if err != nil { - return nil, err - } - - go func() { - if err := p.Serve(); err != nil { - // TODO: Is this best approach? - log.Warn(err) - return - } - }() - - addr, err := p.Address() - if err != nil { - return nil, fmt.Errorf("Error attempting to get plugin server address for RPC: %s", err) - } - - rpcclient, err := rpc.DialHTTP("tcp", addr) - if err != nil { - return nil, err - } - - c := &RPCClientDriver{ - Client: NewInternalClient(rpcclient), - heartbeatDoneCh: make(chan bool), - } - - f.openedDriversLock.Lock() - f.openedDrivers = append(f.openedDrivers, c) - f.openedDriversLock.Unlock() - - var serverVersion int - if err := c.Client.Call(GetVersionMethod, struct{}{}, &serverVersion); err != nil { - // this is the first call we make to the server. We try to play nice with old pre 0.5.1 client, - // by gracefully trying old RPCServiceName, we do this only once, and keep the result for future calls. - log.Debugf(err.Error()) - log.Debugf("Client (%s) with %s does not work, re-attempting with %s", c.Client.MachineName, RPCServiceNameV1, RPCServiceNameV0) - c.Client.switchToV0() - if err := c.Client.Call(GetVersionMethod, struct{}{}, &serverVersion); err != nil { - return nil, err - } - } - - if serverVersion != version.APIVersion { - return nil, fmt.Errorf("Driver binary uses an incompatible API version (%d)", serverVersion) - } - log.Debug("Using API Version ", serverVersion) - - go func(c *RPCClientDriver) { - for { - select { - case <-c.heartbeatDoneCh: - return - case <-time.After(heartbeatInterval): - if err := c.Client.Call(HeartbeatMethod, struct{}{}, nil); err != nil { - log.Warnf("Wrapper Docker Machine process exiting due to closed plugin server (%s)", err) - if err := c.close(); err != nil { - log.Warn(err) - } - } - } - } - }(c) - - if err := c.SetConfigRaw(rawDriver); err != nil { - return nil, err - } - - mcnName = c.GetMachineName() - p.MachineName = mcnName - c.Client.MachineName = mcnName - c.plugin = p - - return c, nil -} - -func (c *RPCClientDriver) MarshalJSON() ([]byte, error) { - return c.GetConfigRaw() -} - -func (c *RPCClientDriver) UnmarshalJSON(data []byte) error { - return c.SetConfigRaw(data) -} - -func (c *RPCClientDriver) close() error { - c.heartbeatDoneCh <- true - close(c.heartbeatDoneCh) - - log.Debug("Making call to close driver server") - - if err := c.Client.Call(CloseMethod, struct{}{}, nil); err != nil { - return err - } - - log.Debug("Successfully made call to close driver server") - log.Debug("Making call to close connection to plugin binary") - - return c.plugin.Close() -} - -// Helper method to make requests which take no arguments and return simply a -// string, e.g. "GetIP". -func (c *RPCClientDriver) rpcStringCall(method string) (string, error) { - var info string - - if err := c.Client.Call(method, struct{}{}, &info); err != nil { - return "", err - } - - return info, nil -} - -func (c *RPCClientDriver) GetCreateFlags() []mcnflag.Flag { - var flags []mcnflag.Flag - - if err := c.Client.Call(GetCreateFlagsMethod, struct{}{}, &flags); err != nil { - log.Warnf("Error attempting call to get create flags: %s", err) - } - - return flags -} - -func (c *RPCClientDriver) SetConfigRaw(data []byte) error { - return c.Client.Call(SetConfigRawMethod, data, nil) -} - -func (c *RPCClientDriver) GetConfigRaw() ([]byte, error) { - var data []byte - - if err := c.Client.Call(GetConfigRawMethod, struct{}{}, &data); err != nil { - return nil, err - } - - return data, nil -} - -// DriverName returns the name of the driver -func (c *RPCClientDriver) DriverName() string { - driverName, err := c.rpcStringCall(DriverNameMethod) - if err != nil { - log.Warnf("Error attempting call to get driver name: %s", err) - } - - return driverName -} - -func (c *RPCClientDriver) SetConfigFromFlags(flags drivers.DriverOptions) error { - return c.Client.Call(SetConfigFromFlagsMethod, &flags, nil) -} - -func (c *RPCClientDriver) GetURL() (string, error) { - return c.rpcStringCall(GetURLMethod) -} - -func (c *RPCClientDriver) GetMachineName() string { - name, err := c.rpcStringCall(GetMachineNameMethod) - if err != nil { - log.Warnf("Error attempting call to get machine name: %s", err) - } - - return name -} - -func (c *RPCClientDriver) GetIP() (string, error) { - return c.rpcStringCall(GetIPMethod) -} - -func (c *RPCClientDriver) GetSSHHostname() (string, error) { - return c.rpcStringCall(GetSSHHostnameMethod) -} - -// GetSSHKeyPath returns the key path -// TODO: This method doesn't even make sense to have with RPC. -func (c *RPCClientDriver) GetSSHKeyPath() string { - path, err := c.rpcStringCall(GetSSHKeyPathMethod) - if err != nil { - log.Warnf("Error attempting call to get SSH key path: %s", err) - } - - return path -} - -func (c *RPCClientDriver) GetSSHPort() (int, error) { - var port int - - if err := c.Client.Call(GetSSHPortMethod, struct{}{}, &port); err != nil { - return 0, err - } - - return port, nil -} - -func (c *RPCClientDriver) GetSSHUsername() string { - username, err := c.rpcStringCall(GetSSHUsernameMethod) - if err != nil { - log.Warnf("Error attempting call to get SSH username: %s", err) - } - - return username -} - -func (c *RPCClientDriver) GetState() (state.State, error) { - var s state.State - - if err := c.Client.Call(GetStateMethod, struct{}{}, &s); err != nil { - return state.Error, err - } - - return s, nil -} - -func (c *RPCClientDriver) PreCreateCheck() error { - return c.Client.Call(PreCreateCheckMethod, struct{}{}, nil) -} - -func (c *RPCClientDriver) Create() error { - return c.Client.Call(CreateMethod, struct{}{}, nil) -} - -func (c *RPCClientDriver) Remove() error { - return c.Client.Call(RemoveMethod, struct{}{}, nil) -} - -func (c *RPCClientDriver) Start() error { - return c.Client.Call(StartMethod, struct{}{}, nil) -} - -func (c *RPCClientDriver) Stop() error { - return c.Client.Call(StopMethod, struct{}{}, nil) -} - -func (c *RPCClientDriver) Restart() error { - return c.Client.Call(RestartMethod, struct{}{}, nil) -} - -func (c *RPCClientDriver) Kill() error { - return c.Client.Call(KillMethod, struct{}{}, nil) -} - -func (c *RPCClientDriver) Upgrade() error { - return c.Client.Call(UpgradeMethod, struct{}{}, nil) -} diff --git a/vendor/github.com/docker/machine/libmachine/drivers/rpc/server_driver.go b/vendor/github.com/docker/machine/libmachine/drivers/rpc/server_driver.go deleted file mode 100644 index 6fb3f3d5..00000000 --- a/vendor/github.com/docker/machine/libmachine/drivers/rpc/server_driver.go +++ /dev/null @@ -1,227 +0,0 @@ -package rpcdriver - -import ( - "encoding/gob" - "encoding/json" - "fmt" - "runtime/debug" - - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnflag" - "github.com/docker/machine/libmachine/state" - "github.com/docker/machine/libmachine/version" -) - -type Stacker interface { - Stack() []byte -} - -type StandardStack struct{} - -func (ss *StandardStack) Stack() []byte { - return debug.Stack() -} - -var ( - stdStacker Stacker = &StandardStack{} -) - -func init() { - gob.Register(new(RPCFlags)) - gob.Register(new(mcnflag.IntFlag)) - gob.Register(new(mcnflag.StringFlag)) - gob.Register(new(mcnflag.StringSliceFlag)) - gob.Register(new(mcnflag.BoolFlag)) -} - -type RPCFlags struct { - Values map[string]interface{} -} - -func (r RPCFlags) Get(key string) interface{} { - val, ok := r.Values[key] - if !ok { - log.Warnf("Trying to access option %s which does not exist", key) - log.Warn("THIS ***WILL*** CAUSE UNEXPECTED BEHAVIOR") - } - return val -} - -func (r RPCFlags) String(key string) string { - val, ok := r.Get(key).(string) - if !ok { - log.Warnf("Type assertion did not go smoothly to string for key %s", key) - } - return val -} - -func (r RPCFlags) StringSlice(key string) []string { - val, ok := r.Get(key).([]string) - if !ok { - log.Warnf("Type assertion did not go smoothly to string slice for key %s", key) - } - return val -} - -func (r RPCFlags) Int(key string) int { - val, ok := r.Get(key).(int) - if !ok { - log.Warnf("Type assertion did not go smoothly to int for key %s", key) - } - return val -} - -func (r RPCFlags) Bool(key string) bool { - val, ok := r.Get(key).(bool) - if !ok { - log.Warnf("Type assertion did not go smoothly to bool for key %s", key) - } - return val -} - -type RPCServerDriver struct { - ActualDriver drivers.Driver - CloseCh chan bool - HeartbeatCh chan bool -} - -func NewRPCServerDriver(d drivers.Driver) *RPCServerDriver { - return &RPCServerDriver{ - ActualDriver: d, - CloseCh: make(chan bool), - HeartbeatCh: make(chan bool), - } -} - -func (r *RPCServerDriver) Close(_, _ *struct{}) error { - r.CloseCh <- true - return nil -} - -func (r *RPCServerDriver) GetVersion(_ *struct{}, reply *int) error { - *reply = version.APIVersion - return nil -} - -func (r *RPCServerDriver) GetConfigRaw(_ *struct{}, reply *[]byte) error { - driverData, err := json.Marshal(r.ActualDriver) - if err != nil { - return err - } - - *reply = driverData - - return nil -} - -func (r *RPCServerDriver) GetCreateFlags(_ *struct{}, reply *[]mcnflag.Flag) error { - *reply = r.ActualDriver.GetCreateFlags() - return nil -} - -func (r *RPCServerDriver) SetConfigRaw(data []byte, _ *struct{}) error { - return json.Unmarshal(data, &r.ActualDriver) -} - -func trapPanic(err *error) { - if r := recover(); r != nil { - *err = fmt.Errorf("Panic in the driver: %s\n%s", r.(error), stdStacker.Stack()) - } -} - -func (r *RPCServerDriver) Create(_, _ *struct{}) (err error) { - // In an ideal world, plugins wouldn't ever panic. However, panics - // have been known to happen and cause issues. Therefore, we recover - // and do not crash the RPC server completely in the case of a panic - // during create. - defer trapPanic(&err) - - err = r.ActualDriver.Create() - - return err -} - -func (r *RPCServerDriver) DriverName(_ *struct{}, reply *string) error { - *reply = r.ActualDriver.DriverName() - return nil -} - -func (r *RPCServerDriver) GetIP(_ *struct{}, reply *string) error { - ip, err := r.ActualDriver.GetIP() - *reply = ip - return err -} - -func (r *RPCServerDriver) GetMachineName(_ *struct{}, reply *string) error { - *reply = r.ActualDriver.GetMachineName() - return nil -} - -func (r *RPCServerDriver) GetSSHHostname(_ *struct{}, reply *string) error { - hostname, err := r.ActualDriver.GetSSHHostname() - *reply = hostname - return err -} - -func (r *RPCServerDriver) GetSSHKeyPath(_ *struct{}, reply *string) error { - *reply = r.ActualDriver.GetSSHKeyPath() - return nil -} - -// GetSSHPort returns port for use with ssh -func (r *RPCServerDriver) GetSSHPort(_ *struct{}, reply *int) error { - port, err := r.ActualDriver.GetSSHPort() - *reply = port - return err -} - -func (r *RPCServerDriver) GetSSHUsername(_ *struct{}, reply *string) error { - *reply = r.ActualDriver.GetSSHUsername() - return nil -} - -func (r *RPCServerDriver) GetURL(_ *struct{}, reply *string) error { - info, err := r.ActualDriver.GetURL() - *reply = info - return err -} - -func (r *RPCServerDriver) GetState(_ *struct{}, reply *state.State) error { - s, err := r.ActualDriver.GetState() - *reply = s - return err -} - -func (r *RPCServerDriver) Kill(_ *struct{}, _ *struct{}) error { - return r.ActualDriver.Kill() -} - -func (r *RPCServerDriver) PreCreateCheck(_ *struct{}, _ *struct{}) error { - return r.ActualDriver.PreCreateCheck() -} - -func (r *RPCServerDriver) Remove(_ *struct{}, _ *struct{}) error { - return r.ActualDriver.Remove() -} - -func (r *RPCServerDriver) Restart(_ *struct{}, _ *struct{}) error { - return r.ActualDriver.Restart() -} - -func (r *RPCServerDriver) SetConfigFromFlags(flags *drivers.DriverOptions, _ *struct{}) error { - return r.ActualDriver.SetConfigFromFlags(*flags) -} - -func (r *RPCServerDriver) Start(_ *struct{}, _ *struct{}) error { - return r.ActualDriver.Start() -} - -func (r *RPCServerDriver) Stop(_ *struct{}, _ *struct{}) error { - return r.ActualDriver.Stop() -} - -func (r *RPCServerDriver) Heartbeat(_ *struct{}, _ *struct{}) error { - r.HeartbeatCh <- true - return nil -} diff --git a/vendor/github.com/docker/machine/libmachine/drivers/rpc/server_driver_test.go b/vendor/github.com/docker/machine/libmachine/drivers/rpc/server_driver_test.go deleted file mode 100644 index 952684df..00000000 --- a/vendor/github.com/docker/machine/libmachine/drivers/rpc/server_driver_test.go +++ /dev/null @@ -1,75 +0,0 @@ -package rpcdriver - -import ( - "errors" - "testing" - - "github.com/docker/machine/drivers/fakedriver" - "github.com/stretchr/testify/assert" -) - -type panicDriver struct { - *fakedriver.Driver - panicErr error - returnErr error -} - -type FakeStacker struct { - trace []byte -} - -func (fs *FakeStacker) Stack() []byte { - return fs.trace -} - -func (p *panicDriver) Create() error { - if p.panicErr != nil { - panic(p.panicErr) - } - return p.returnErr -} - -func TestRPCServerDriverCreate(t *testing.T) { - testCases := []struct { - description string - expectedErr error - serverDriver *RPCServerDriver - stacker Stacker - }{ - { - description: "Happy path", - expectedErr: nil, - serverDriver: &RPCServerDriver{ - ActualDriver: &panicDriver{ - returnErr: nil, - }, - }, - }, - { - description: "Normal error, no panic", - expectedErr: errors.New("API not available"), - serverDriver: &RPCServerDriver{ - ActualDriver: &panicDriver{ - returnErr: errors.New("API not available"), - }, - }, - }, - { - description: "Panic happened during create", - expectedErr: errors.New("Panic in the driver: index out of range\nSTACK TRACE"), - serverDriver: &RPCServerDriver{ - ActualDriver: &panicDriver{ - panicErr: errors.New("index out of range"), - }, - }, - stacker: &FakeStacker{ - trace: []byte("STACK TRACE"), - }, - }, - } - - for _, tc := range testCases { - stdStacker = tc.stacker - assert.Equal(t, tc.expectedErr, tc.serverDriver.Create(nil, nil)) - } -} diff --git a/vendor/github.com/docker/machine/libmachine/drivers/serial.go b/vendor/github.com/docker/machine/libmachine/drivers/serial.go deleted file mode 100644 index 056704ee..00000000 --- a/vendor/github.com/docker/machine/libmachine/drivers/serial.go +++ /dev/null @@ -1,172 +0,0 @@ -package drivers - -import ( - "sync" - - "encoding/json" - - "github.com/docker/machine/libmachine/mcnflag" - "github.com/docker/machine/libmachine/state" -) - -var stdLock = &sync.Mutex{} - -// SerialDriver is a wrapper struct which is used to ensure that RPC calls -// to a driver only occur one at a time. -// Some providers, e.g. virtualbox, should not run driver operations at the -// same time as other driver instances of the same type. Otherwise, we scrape -// up against VirtualBox's own locking mechanisms. -// -// It would be preferable to simply have a lock around, say, the VBoxManage -// command, but with our current one-server-process-per-machine model it is -// impossible to dictate this locking on the server side. -type SerialDriver struct { - Driver - sync.Locker -} - -func NewSerialDriver(innerDriver Driver) Driver { - return newSerialDriverWithLock(innerDriver, stdLock) -} - -func newSerialDriverWithLock(innerDriver Driver, lock sync.Locker) Driver { - return &SerialDriver{ - Driver: innerDriver, - Locker: lock, - } -} - -// Create a host using the driver's config -func (d *SerialDriver) Create() error { - d.Lock() - defer d.Unlock() - return d.Driver.Create() -} - -// DriverName returns the name of the driver as it is registered -func (d *SerialDriver) DriverName() string { - d.Lock() - defer d.Unlock() - return d.Driver.DriverName() -} - -// GetCreateFlags returns the mcnflag.Flag slice representing the flags -// that can be set, their descriptions and defaults. -func (d *SerialDriver) GetCreateFlags() []mcnflag.Flag { - d.Lock() - defer d.Unlock() - return d.Driver.GetCreateFlags() -} - -// GetIP returns an IP or hostname that this host is available at -// e.g. 1.2.3.4 or docker-host-d60b70a14d3a.cloudapp.net -func (d *SerialDriver) GetIP() (string, error) { - d.Lock() - defer d.Unlock() - return d.Driver.GetIP() -} - -// GetMachineName returns the name of the machine -func (d *SerialDriver) GetMachineName() string { - d.Lock() - defer d.Unlock() - return d.Driver.GetMachineName() -} - -// GetSSHHostname returns hostname for use with ssh -func (d *SerialDriver) GetSSHHostname() (string, error) { - d.Lock() - defer d.Unlock() - return d.Driver.GetSSHHostname() -} - -// GetSSHKeyPath returns key path for use with ssh -func (d *SerialDriver) GetSSHKeyPath() string { - d.Lock() - defer d.Unlock() - return d.Driver.GetSSHKeyPath() -} - -// GetSSHPort returns port for use with ssh -func (d *SerialDriver) GetSSHPort() (int, error) { - d.Lock() - defer d.Unlock() - return d.Driver.GetSSHPort() -} - -// GetSSHUsername returns username for use with ssh -func (d *SerialDriver) GetSSHUsername() string { - d.Lock() - defer d.Unlock() - return d.Driver.GetSSHUsername() -} - -// GetURL returns a Docker compatible host URL for connecting to this host -// e.g. tcp://1.2.3.4:2376 -func (d *SerialDriver) GetURL() (string, error) { - d.Lock() - defer d.Unlock() - return d.Driver.GetURL() -} - -// GetState returns the state that the host is in (running, stopped, etc) -func (d *SerialDriver) GetState() (state.State, error) { - d.Lock() - defer d.Unlock() - return d.Driver.GetState() -} - -// Kill stops a host forcefully -func (d *SerialDriver) Kill() error { - d.Lock() - defer d.Unlock() - return d.Driver.Kill() -} - -// PreCreateCheck allows for pre-create operations to make sure a driver is ready for creation -func (d *SerialDriver) PreCreateCheck() error { - d.Lock() - defer d.Unlock() - return d.Driver.PreCreateCheck() -} - -// Remove a host -func (d *SerialDriver) Remove() error { - d.Lock() - defer d.Unlock() - return d.Driver.Remove() -} - -// Restart a host. This may just call Stop(); Start() if the provider does not -// have any special restart behaviour. -func (d *SerialDriver) Restart() error { - d.Lock() - defer d.Unlock() - return d.Driver.Restart() -} - -// SetConfigFromFlags configures the driver with the object that was returned -// by RegisterCreateFlags -func (d *SerialDriver) SetConfigFromFlags(opts DriverOptions) error { - d.Lock() - defer d.Unlock() - return d.Driver.SetConfigFromFlags(opts) -} - -// Start a host -func (d *SerialDriver) Start() error { - d.Lock() - defer d.Unlock() - return d.Driver.Start() -} - -// Stop a host gracefully -func (d *SerialDriver) Stop() error { - d.Lock() - defer d.Unlock() - return d.Driver.Stop() -} - -func (d *SerialDriver) MarshalJSON() ([]byte, error) { - return json.Marshal(d.Driver) -} diff --git a/vendor/github.com/docker/machine/libmachine/drivers/serial_test.go b/vendor/github.com/docker/machine/libmachine/drivers/serial_test.go deleted file mode 100644 index d0a06a46..00000000 --- a/vendor/github.com/docker/machine/libmachine/drivers/serial_test.go +++ /dev/null @@ -1,296 +0,0 @@ -package drivers - -import ( - "testing" - - "github.com/docker/machine/libmachine/mcnflag" - "github.com/docker/machine/libmachine/state" - "github.com/stretchr/testify/assert" -) - -type CallRecorder struct { - calls []string -} - -func (c *CallRecorder) record(call string) { - c.calls = append(c.calls, call) -} - -type MockLocker struct { - calls *CallRecorder -} - -func (l *MockLocker) Lock() { - l.calls.record("Lock") -} - -func (l *MockLocker) Unlock() { - l.calls.record("Unlock") -} - -type MockDriver struct { - calls *CallRecorder - driverName string - flags []mcnflag.Flag - ip string - machineName string - sshHostname string - sshKeyPath string - sshPort int - sshUsername string - url string - state state.State -} - -func (d *MockDriver) Create() error { - d.calls.record("Create") - return nil -} - -func (d *MockDriver) DriverName() string { - d.calls.record("DriverName") - return d.driverName -} - -func (d *MockDriver) GetCreateFlags() []mcnflag.Flag { - d.calls.record("GetCreateFlags") - return d.flags -} - -func (d *MockDriver) GetIP() (string, error) { - d.calls.record("GetIP") - return d.ip, nil -} - -func (d *MockDriver) GetMachineName() string { - d.calls.record("GetMachineName") - return d.machineName -} - -func (d *MockDriver) GetSSHHostname() (string, error) { - d.calls.record("GetSSHHostname") - return d.sshHostname, nil -} - -func (d *MockDriver) GetSSHKeyPath() string { - d.calls.record("GetSSHKeyPath") - return d.sshKeyPath -} - -func (d *MockDriver) GetSSHPort() (int, error) { - d.calls.record("GetSSHPort") - return d.sshPort, nil -} - -func (d *MockDriver) GetSSHUsername() string { - d.calls.record("GetSSHUsername") - return d.sshUsername -} - -func (d *MockDriver) GetURL() (string, error) { - d.calls.record("GetURL") - return d.url, nil -} - -func (d *MockDriver) GetState() (state.State, error) { - d.calls.record("GetState") - return d.state, nil -} - -func (d *MockDriver) Kill() error { - d.calls.record("Kill") - return nil -} - -func (d *MockDriver) PreCreateCheck() error { - d.calls.record("PreCreateCheck") - return nil -} - -func (d *MockDriver) Remove() error { - d.calls.record("Remove") - return nil -} - -func (d *MockDriver) Restart() error { - d.calls.record("Restart") - return nil -} - -func (d *MockDriver) SetConfigFromFlags(opts DriverOptions) error { - d.calls.record("SetConfigFromFlags") - return nil -} - -func (d *MockDriver) Start() error { - d.calls.record("Start") - return nil -} - -func (d *MockDriver) Stop() error { - d.calls.record("Stop") - return nil -} - -func TestSerialDriverCreate(t *testing.T) { - callRecorder := &CallRecorder{} - - driver := newSerialDriverWithLock(&MockDriver{calls: callRecorder}, &MockLocker{calls: callRecorder}) - err := driver.Create() - - assert.NoError(t, err) - assert.Equal(t, []string{"Lock", "Create", "Unlock"}, callRecorder.calls) -} - -func TestSerialDriverDriverName(t *testing.T) { - callRecorder := &CallRecorder{} - - driver := newSerialDriverWithLock(&MockDriver{driverName: "DRIVER", calls: callRecorder}, &MockLocker{calls: callRecorder}) - driverName := driver.DriverName() - - assert.Equal(t, "DRIVER", driverName) - assert.Equal(t, []string{"Lock", "DriverName", "Unlock"}, callRecorder.calls) -} - -func TestSerialDriverGetIP(t *testing.T) { - callRecorder := &CallRecorder{} - - driver := newSerialDriverWithLock(&MockDriver{ip: "IP", calls: callRecorder}, &MockLocker{calls: callRecorder}) - ip, _ := driver.GetIP() - - assert.Equal(t, "IP", ip) - assert.Equal(t, []string{"Lock", "GetIP", "Unlock"}, callRecorder.calls) -} - -func TestSerialDriverGetMachineName(t *testing.T) { - callRecorder := &CallRecorder{} - - driver := newSerialDriverWithLock(&MockDriver{machineName: "MACHINE_NAME", calls: callRecorder}, &MockLocker{calls: callRecorder}) - machineName := driver.GetMachineName() - - assert.Equal(t, "MACHINE_NAME", machineName) - assert.Equal(t, []string{"Lock", "GetMachineName", "Unlock"}, callRecorder.calls) -} - -func TestSerialDriverGetSSHHostname(t *testing.T) { - callRecorder := &CallRecorder{} - - driver := newSerialDriverWithLock(&MockDriver{sshHostname: "SSH_HOSTNAME", calls: callRecorder}, &MockLocker{calls: callRecorder}) - sshHostname, _ := driver.GetSSHHostname() - - assert.Equal(t, "SSH_HOSTNAME", sshHostname) - assert.Equal(t, []string{"Lock", "GetSSHHostname", "Unlock"}, callRecorder.calls) -} - -func TestSerialDriverGetSSHKeyPath(t *testing.T) { - callRecorder := &CallRecorder{} - - driver := newSerialDriverWithLock(&MockDriver{sshKeyPath: "PATH", calls: callRecorder}, &MockLocker{calls: callRecorder}) - path := driver.GetSSHKeyPath() - - assert.Equal(t, "PATH", path) - assert.Equal(t, []string{"Lock", "GetSSHKeyPath", "Unlock"}, callRecorder.calls) -} - -func TestSerialDriverGetSSHPort(t *testing.T) { - callRecorder := &CallRecorder{} - - driver := newSerialDriverWithLock(&MockDriver{sshPort: 42, calls: callRecorder}, &MockLocker{calls: callRecorder}) - sshPort, _ := driver.GetSSHPort() - - assert.Equal(t, 42, sshPort) - assert.Equal(t, []string{"Lock", "GetSSHPort", "Unlock"}, callRecorder.calls) -} - -func TestSerialDriverGetSSHUsername(t *testing.T) { - callRecorder := &CallRecorder{} - - driver := newSerialDriverWithLock(&MockDriver{sshUsername: "SSH_USER", calls: callRecorder}, &MockLocker{calls: callRecorder}) - sshUsername := driver.GetSSHUsername() - - assert.Equal(t, "SSH_USER", sshUsername) - assert.Equal(t, []string{"Lock", "GetSSHUsername", "Unlock"}, callRecorder.calls) -} - -func TestSerialDriverGetURL(t *testing.T) { - callRecorder := &CallRecorder{} - - driver := newSerialDriverWithLock(&MockDriver{url: "URL", calls: callRecorder}, &MockLocker{calls: callRecorder}) - url, _ := driver.GetURL() - - assert.Equal(t, "URL", url) - assert.Equal(t, []string{"Lock", "GetURL", "Unlock"}, callRecorder.calls) -} - -func TestSerialDriverGetState(t *testing.T) { - callRecorder := &CallRecorder{} - - driver := newSerialDriverWithLock(&MockDriver{state: state.Running, calls: callRecorder}, &MockLocker{calls: callRecorder}) - machineState, _ := driver.GetState() - - assert.Equal(t, state.Running, machineState) - assert.Equal(t, []string{"Lock", "GetState", "Unlock"}, callRecorder.calls) -} - -func TestSerialDriverKill(t *testing.T) { - callRecorder := &CallRecorder{} - - driver := newSerialDriverWithLock(&MockDriver{calls: callRecorder}, &MockLocker{calls: callRecorder}) - driver.Kill() - - assert.Equal(t, []string{"Lock", "Kill", "Unlock"}, callRecorder.calls) -} - -func TestSerialDriverPreCreateCheck(t *testing.T) { - callRecorder := &CallRecorder{} - - driver := newSerialDriverWithLock(&MockDriver{calls: callRecorder}, &MockLocker{calls: callRecorder}) - driver.PreCreateCheck() - - assert.Equal(t, []string{"Lock", "PreCreateCheck", "Unlock"}, callRecorder.calls) -} - -func TestSerialDriverRemove(t *testing.T) { - callRecorder := &CallRecorder{} - - driver := newSerialDriverWithLock(&MockDriver{calls: callRecorder}, &MockLocker{calls: callRecorder}) - driver.Remove() - - assert.Equal(t, []string{"Lock", "Remove", "Unlock"}, callRecorder.calls) -} - -func TestSerialDriverRestart(t *testing.T) { - callRecorder := &CallRecorder{} - - driver := newSerialDriverWithLock(&MockDriver{calls: callRecorder}, &MockLocker{calls: callRecorder}) - driver.Restart() - - assert.Equal(t, []string{"Lock", "Restart", "Unlock"}, callRecorder.calls) -} - -func TestSerialDriverSetConfigFromFlags(t *testing.T) { - callRecorder := &CallRecorder{} - - driver := newSerialDriverWithLock(&MockDriver{calls: callRecorder}, &MockLocker{calls: callRecorder}) - driver.SetConfigFromFlags(nil) - - assert.Equal(t, []string{"Lock", "SetConfigFromFlags", "Unlock"}, callRecorder.calls) -} - -func TestSerialDriverStart(t *testing.T) { - callRecorder := &CallRecorder{} - - driver := newSerialDriverWithLock(&MockDriver{calls: callRecorder}, &MockLocker{calls: callRecorder}) - driver.Start() - - assert.Equal(t, []string{"Lock", "Start", "Unlock"}, callRecorder.calls) -} - -func TestSerialDriverStop(t *testing.T) { - callRecorder := &CallRecorder{} - - driver := newSerialDriverWithLock(&MockDriver{calls: callRecorder}, &MockLocker{calls: callRecorder}) - driver.Stop() - - assert.Equal(t, []string{"Lock", "Stop", "Unlock"}, callRecorder.calls) -} diff --git a/vendor/github.com/docker/machine/libmachine/drivers/utils.go b/vendor/github.com/docker/machine/libmachine/drivers/utils.go deleted file mode 100644 index f5f38249..00000000 --- a/vendor/github.com/docker/machine/libmachine/drivers/utils.go +++ /dev/null @@ -1,74 +0,0 @@ -package drivers - -import ( - "fmt" - - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnutils" - "github.com/docker/machine/libmachine/ssh" -) - -func GetSSHClientFromDriver(d Driver) (ssh.Client, error) { - address, err := d.GetSSHHostname() - if err != nil { - return nil, err - } - - port, err := d.GetSSHPort() - if err != nil { - return nil, err - } - - var auth *ssh.Auth - if d.GetSSHKeyPath() == "" { - auth = &ssh.Auth{} - } else { - auth = &ssh.Auth{ - Keys: []string{d.GetSSHKeyPath()}, - } - } - - client, err := ssh.NewClient(d.GetSSHUsername(), address, port, auth) - return client, err - -} - -func RunSSHCommandFromDriver(d Driver, command string) (string, error) { - client, err := GetSSHClientFromDriver(d) - if err != nil { - return "", err - } - - log.Debugf("About to run SSH command:\n%s", command) - - output, err := client.Output(command) - log.Debugf("SSH cmd err, output: %v: %s", err, output) - if err != nil { - return "", fmt.Errorf(`Something went wrong running an SSH command! -command : %s -err : %v -output : %s -`, command, err, output) - } - - return output, nil -} - -func sshAvailableFunc(d Driver) func() bool { - return func() bool { - log.Debug("Getting to WaitForSSH function...") - if _, err := RunSSHCommandFromDriver(d, "exit 0"); err != nil { - log.Debugf("Error getting ssh command 'exit 0' : %s", err) - return false - } - return true - } -} - -func WaitForSSH(d Driver) error { - // Try to dial SSH for 30 seconds before timing out. - if err := mcnutils.WaitFor(sshAvailableFunc(d)); err != nil { - return fmt.Errorf("Too many retries waiting for SSH to be available. Last error: %s", err) - } - return nil -} diff --git a/vendor/github.com/docker/machine/libmachine/engine/engine.go b/vendor/github.com/docker/machine/libmachine/engine/engine.go deleted file mode 100644 index 2910432c..00000000 --- a/vendor/github.com/docker/machine/libmachine/engine/engine.go +++ /dev/null @@ -1,21 +0,0 @@ -package engine - -const ( - DefaultPort = 2376 -) - -type Options struct { - ArbitraryFlags []string - DNS []string `json:"Dns"` - GraphDir string - Env []string - Ipv6 bool - InsecureRegistry []string - Labels []string - LogLevel string - StorageDriver string - SelinuxEnabled bool - TLSVerify bool `json:"TlsVerify"` - RegistryMirror []string - InstallURL string -} diff --git a/vendor/github.com/docker/machine/libmachine/examples/main.go b/vendor/github.com/docker/machine/libmachine/examples/main.go deleted file mode 100644 index 7decc83c..00000000 --- a/vendor/github.com/docker/machine/libmachine/examples/main.go +++ /dev/null @@ -1,145 +0,0 @@ -package main - -import ( - "bufio" - "encoding/json" - "fmt" - "os" - - "github.com/docker/machine/drivers/virtualbox" - "github.com/docker/machine/libmachine" - "github.com/docker/machine/libmachine/log" -) - -func usage() { - fmt.Println("Usage: go run main.go \n" + - "Available examples: create streaming.") - os.Exit(1) -} - -// Sample Virtualbox create independent of Machine CLI. -func create() { - log.SetDebug(true) - - client := libmachine.NewClient("/tmp/automatic", "/tmp/automatic/certs") - defer client.Close() - - hostName := "myfunhost" - - // Set some options on the provider... - driver := virtualbox.NewDriver(hostName, "/tmp/automatic") - driver.CPU = 2 - driver.Memory = 2048 - - data, err := json.Marshal(driver) - if err != nil { - log.Error(err) - return - } - - h, err := client.NewHost("virtualbox", data) - if err != nil { - log.Error(err) - return - } - - h.HostOptions.EngineOptions.StorageDriver = "overlay" - - if err := client.Create(h); err != nil { - log.Error(err) - return - } - - out, err := h.RunSSHCommand("df -h") - if err != nil { - log.Error(err) - return - } - - fmt.Printf("Results of your disk space query:\n%s\n", out) - - fmt.Println("Powering down machine now...") - if err := h.Stop(); err != nil { - log.Error(err) - return - } -} - -// Streaming the output of an SSH session in virtualbox. -func streaming() { - log.SetDebug(true) - - client := libmachine.NewClient("/tmp/automatic", "/tmp/automatic/certs") - defer client.Close() - - hostName := "myfunhost" - - // Set some options on the provider... - driver := virtualbox.NewDriver(hostName, "/tmp/automatic") - data, err := json.Marshal(driver) - if err != nil { - log.Error(err) - return - } - - h, err := client.NewHost("virtualbox", data) - if err != nil { - log.Error(err) - return - } - - if err := client.Create(h); err != nil { - log.Error(err) - return - } - - h.HostOptions.EngineOptions.StorageDriver = "overlay" - - sshClient, err := h.CreateSSHClient() - if err != nil { - log.Error(err) - return - } - - stdout, stderr, err := sshClient.Start("yes | head -n 10000") - if err != nil { - log.Error(err) - return - } - defer func() { - _ = stdout.Close() - _ = stderr.Close() - }() - - scanner := bufio.NewScanner(stdout) - for scanner.Scan() { - fmt.Println(scanner.Text()) - } - if err := scanner.Err(); err != nil { - log.Error(err) - } - if err := sshClient.Wait(); err != nil { - log.Error(err) - } - - fmt.Println("Powering down machine now...") - if err := h.Stop(); err != nil { - log.Error(err) - return - } -} - -func main() { - if len(os.Args) != 2 { - usage() - } - - switch os.Args[1] { - case "create": - create() - case "streaming": - streaming() - default: - usage() - } -} diff --git a/vendor/github.com/docker/machine/libmachine/host/host.go b/vendor/github.com/docker/machine/libmachine/host/host.go deleted file mode 100644 index c4380050..00000000 --- a/vendor/github.com/docker/machine/libmachine/host/host.go +++ /dev/null @@ -1,223 +0,0 @@ -package host - -import ( - "errors" - "regexp" - - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnerror" - "github.com/docker/machine/libmachine/mcnutils" - "github.com/docker/machine/libmachine/provision" - "github.com/docker/machine/libmachine/provision/pkgaction" - "github.com/docker/machine/libmachine/provision/serviceaction" - "github.com/docker/machine/libmachine/ssh" - "github.com/docker/machine/libmachine/state" - "github.com/docker/machine/libmachine/swarm" -) - -var ( - validHostNamePattern = regexp.MustCompile(`^[a-zA-Z0-9][a-zA-Z0-9\-\.]*$`) - errMachineMustBeRunningForUpgrade = errors.New("Error: machine must be running to upgrade.") - stdSSHClientCreator SSHClientCreator = &StandardSSHClientCreator{} -) - -type SSHClientCreator interface { - CreateSSHClient(d drivers.Driver) (ssh.Client, error) -} - -type StandardSSHClientCreator struct { - drivers.Driver -} - -func SetSSHClientCreator(creator SSHClientCreator) { - stdSSHClientCreator = creator -} - -type Host struct { - ConfigVersion int - Driver drivers.Driver - DriverName string - HostOptions *Options - Name string - RawDriver []byte `json:"-"` -} - -type Options struct { - Driver string - Memory int - Disk int - EngineOptions *engine.Options - SwarmOptions *swarm.Options - AuthOptions *auth.Options -} - -type Metadata struct { - ConfigVersion int - DriverName string - HostOptions Options -} - -func ValidateHostName(name string) bool { - return validHostNamePattern.MatchString(name) -} - -func (h *Host) RunSSHCommand(command string) (string, error) { - return drivers.RunSSHCommandFromDriver(h.Driver, command) -} - -func (h *Host) CreateSSHClient() (ssh.Client, error) { - return stdSSHClientCreator.CreateSSHClient(h.Driver) -} - -func (creator *StandardSSHClientCreator) CreateSSHClient(d drivers.Driver) (ssh.Client, error) { - addr, err := d.GetSSHHostname() - if err != nil { - return &ssh.ExternalClient{}, err - } - - port, err := d.GetSSHPort() - if err != nil { - return &ssh.ExternalClient{}, err - } - - auth := &ssh.Auth{} - if d.GetSSHKeyPath() != "" { - auth.Keys = []string{d.GetSSHKeyPath()} - } - - return ssh.NewClient(d.GetSSHUsername(), addr, port, auth) -} - -func (h *Host) runActionForState(action func() error, desiredState state.State) error { - if drivers.MachineInState(h.Driver, desiredState)() { - return mcnerror.ErrHostAlreadyInState{ - Name: h.Name, - State: desiredState, - } - } - - if err := action(); err != nil { - return err - } - - return mcnutils.WaitFor(drivers.MachineInState(h.Driver, desiredState)) -} - -func (h *Host) WaitForDocker() error { - provisioner, err := provision.DetectProvisioner(h.Driver) - if err != nil { - return err - } - - return provision.WaitForDocker(provisioner, engine.DefaultPort) -} - -func (h *Host) Start() error { - log.Infof("Starting %q...", h.Name) - if err := h.runActionForState(h.Driver.Start, state.Running); err != nil { - return err - } - - log.Infof("Machine %q was started.", h.Name) - - return h.WaitForDocker() -} - -func (h *Host) Stop() error { - log.Infof("Stopping %q...", h.Name) - if err := h.runActionForState(h.Driver.Stop, state.Stopped); err != nil { - return err - } - - log.Infof("Machine %q was stopped.", h.Name) - return nil -} - -func (h *Host) Kill() error { - log.Infof("Killing %q...", h.Name) - if err := h.runActionForState(h.Driver.Kill, state.Stopped); err != nil { - return err - } - - log.Infof("Machine %q was killed.", h.Name) - return nil -} - -func (h *Host) Restart() error { - log.Infof("Restarting %q...", h.Name) - if drivers.MachineInState(h.Driver, state.Stopped)() { - if err := h.Start(); err != nil { - return err - } - } else if drivers.MachineInState(h.Driver, state.Running)() { - if err := h.Driver.Restart(); err != nil { - return err - } - if err := mcnutils.WaitFor(drivers.MachineInState(h.Driver, state.Running)); err != nil { - return err - } - } - - return h.WaitForDocker() -} - -func (h *Host) Upgrade() error { - machineState, err := h.Driver.GetState() - if err != nil { - return err - } - - if machineState != state.Running { - return errMachineMustBeRunningForUpgrade - } - - provisioner, err := provision.DetectProvisioner(h.Driver) - if err != nil { - return err - } - - log.Info("Upgrading docker...") - if err := provisioner.Package("docker", pkgaction.Upgrade); err != nil { - return err - } - - log.Info("Restarting docker...") - return provisioner.Service("docker", serviceaction.Restart) -} - -func (h *Host) URL() (string, error) { - return h.Driver.GetURL() -} - -func (h *Host) AuthOptions() *auth.Options { - if h.HostOptions == nil { - return nil - } - return h.HostOptions.AuthOptions -} - -func (h *Host) ConfigureAuth() error { - provisioner, err := provision.DetectProvisioner(h.Driver) - if err != nil { - return err - } - - // TODO: This is kind of a hack (or is it? I'm not really sure until - // we have more clearly defined outlook on what the responsibilities - // and modularity of the provisioners should be). - // - // Call provision to re-provision the certs properly. - return provisioner.Provision(swarm.Options{}, *h.HostOptions.AuthOptions, *h.HostOptions.EngineOptions) -} - -func (h *Host) Provision() error { - provisioner, err := provision.DetectProvisioner(h.Driver) - if err != nil { - return err - } - - return provisioner.Provision(*h.HostOptions.SwarmOptions, *h.HostOptions.AuthOptions, *h.HostOptions.EngineOptions) -} diff --git a/vendor/github.com/docker/machine/libmachine/host/host_test.go b/vendor/github.com/docker/machine/libmachine/host/host_test.go deleted file mode 100644 index a418506e..00000000 --- a/vendor/github.com/docker/machine/libmachine/host/host_test.go +++ /dev/null @@ -1,57 +0,0 @@ -package host - -import ( - "testing" - - "github.com/docker/machine/drivers/fakedriver" - _ "github.com/docker/machine/drivers/none" - "github.com/docker/machine/libmachine/provision" - "github.com/docker/machine/libmachine/state" -) - -func TestValidateHostnameValid(t *testing.T) { - hosts := []string{ - "zomg", - "test-ing", - "some.h0st", - } - - for _, v := range hosts { - isValid := ValidateHostName(v) - if !isValid { - t.Fatalf("Thought a valid hostname was invalid: %s", v) - } - } -} - -func TestValidateHostnameInvalid(t *testing.T) { - hosts := []string{ - "zom_g", - "test$ing", - "some😄host", - } - - for _, v := range hosts { - isValid := ValidateHostName(v) - if isValid { - t.Fatalf("Thought an invalid hostname was valid: %s", v) - } - } -} - -func TestStart(t *testing.T) { - defer provision.SetDetector(&provision.StandardDetector{}) - provision.SetDetector(&provision.FakeDetector{ - Provisioner: provision.NewNetstatProvisioner(), - }) - - host := &Host{ - Driver: &fakedriver.Driver{ - MockState: state.Stopped, - }, - } - - if err := host.Start(); err != nil { - t.Fatalf("Expected no error but got one: %s", err) - } -} diff --git a/vendor/github.com/docker/machine/libmachine/host/host_v0.go b/vendor/github.com/docker/machine/libmachine/host/host_v0.go deleted file mode 100644 index a36db5fe..00000000 --- a/vendor/github.com/docker/machine/libmachine/host/host_v0.go +++ /dev/null @@ -1,35 +0,0 @@ -package host - -import "github.com/docker/machine/libmachine/drivers" - -type V0 struct { - Name string `json:"-"` - Driver drivers.Driver - DriverName string - ConfigVersion int - HostOptions *Options - - StorePath string - CaCertPath string - PrivateKeyPath string - ServerCertPath string - ServerKeyPath string - ClientCertPath string - SwarmHost string - SwarmMaster bool - SwarmDiscovery string - ClientKeyPath string -} - -type MetadataV0 struct { - HostOptions Options - DriverName string - - ConfigVersion int - StorePath string - CaCertPath string - PrivateKeyPath string - ServerCertPath string - ServerKeyPath string - ClientCertPath string -} diff --git a/vendor/github.com/docker/machine/libmachine/host/host_v2.go b/vendor/github.com/docker/machine/libmachine/host/host_v2.go deleted file mode 100644 index 8157e5f9..00000000 --- a/vendor/github.com/docker/machine/libmachine/host/host_v2.go +++ /dev/null @@ -1,11 +0,0 @@ -package host - -import "github.com/docker/machine/libmachine/drivers" - -type V2 struct { - ConfigVersion int - Driver drivers.Driver - DriverName string - HostOptions *Options - Name string -} diff --git a/vendor/github.com/docker/machine/libmachine/host/migrate.go b/vendor/github.com/docker/machine/libmachine/host/migrate.go deleted file mode 100644 index 47f4ac31..00000000 --- a/vendor/github.com/docker/machine/libmachine/host/migrate.go +++ /dev/null @@ -1,120 +0,0 @@ -package host - -import ( - "encoding/json" - "errors" - "fmt" - "path/filepath" - - "github.com/docker/machine/drivers/none" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/version" -) - -var ( - errConfigFromFuture = errors.New("Config version is from the future, please upgrade your Docker Machine client.") -) - -type RawDataDriver struct { - *none.Driver - Data []byte // passed directly back when invoking json.Marshal on this type -} - -func (r *RawDataDriver) MarshalJSON() ([]byte, error) { - return r.Data, nil -} - -func (r *RawDataDriver) UnmarshalJSON(data []byte) error { - r.Data = data - return nil -} - -func getMigratedHostMetadata(data []byte) (*Metadata, error) { - // HostMetadata is for a "first pass" so we can then load the driver - var ( - hostMetadata *MetadataV0 - ) - - if err := json.Unmarshal(data, &hostMetadata); err != nil { - return &Metadata{}, err - } - - migratedHostMetadata := MigrateHostMetadataV0ToHostMetadataV1(hostMetadata) - - return migratedHostMetadata, nil -} - -func MigrateHost(h *Host, data []byte) (*Host, bool, error) { - var ( - migrationNeeded = false - migrationPerformed = false - hostV1 *V1 - hostV2 *V2 - ) - - migratedHostMetadata, err := getMigratedHostMetadata(data) - if err != nil { - return nil, false, err - } - - globalStorePath := filepath.Dir(filepath.Dir(migratedHostMetadata.HostOptions.AuthOptions.StorePath)) - - driver := &RawDataDriver{none.NewDriver(h.Name, globalStorePath), nil} - - if migratedHostMetadata.ConfigVersion > version.ConfigVersion { - return nil, false, errConfigFromFuture - } - - if migratedHostMetadata.ConfigVersion == version.ConfigVersion { - h.Driver = driver - if err := json.Unmarshal(data, &h); err != nil { - return nil, migrationPerformed, fmt.Errorf("Error unmarshalling most recent host version: %s", err) - } - } else { - migrationNeeded = true - } - - if migrationNeeded { - migrationPerformed = true - for h.ConfigVersion = migratedHostMetadata.ConfigVersion; h.ConfigVersion < version.ConfigVersion; h.ConfigVersion++ { - log.Debugf("Migrating to config v%d", h.ConfigVersion) - switch h.ConfigVersion { - case 0: - hostV0 := &V0{ - Driver: driver, - } - if err := json.Unmarshal(data, &hostV0); err != nil { - return nil, migrationPerformed, fmt.Errorf("Error unmarshalling host config version 0: %s", err) - } - hostV1 = MigrateHostV0ToHostV1(hostV0) - case 1: - if hostV1 == nil { - hostV1 = &V1{ - Driver: driver, - } - if err := json.Unmarshal(data, &hostV1); err != nil { - return nil, migrationPerformed, fmt.Errorf("Error unmarshalling host config version 1: %s", err) - } - } - hostV2 = MigrateHostV1ToHostV2(hostV1) - case 2: - if hostV2 == nil { - hostV2 = &V2{ - Driver: driver, - } - if err := json.Unmarshal(data, &hostV2); err != nil { - return nil, migrationPerformed, fmt.Errorf("Error unmarshalling host config version 2: %s", err) - } - } - h = MigrateHostV2ToHostV3(hostV2, data, globalStorePath) - driver.Data = h.RawDriver - h.Driver = driver - case 3: - } - } - } - - h.RawDriver = driver.Data - - return h, migrationPerformed, nil -} diff --git a/vendor/github.com/docker/machine/libmachine/host/migrate_test.go b/vendor/github.com/docker/machine/libmachine/host/migrate_test.go deleted file mode 100644 index 80a93216..00000000 --- a/vendor/github.com/docker/machine/libmachine/host/migrate_test.go +++ /dev/null @@ -1,180 +0,0 @@ -package host - -import ( - "testing" - - "github.com/docker/machine/drivers/none" - "github.com/docker/machine/libmachine/auth" - "github.com/stretchr/testify/assert" -) - -func TestMigrateHost(t *testing.T) { - testCases := []struct { - description string - hostBefore *Host - rawData []byte - expectedHostAfter *Host - expectedMigrationPerformed bool - expectedMigrationError error - }{ - { - // Point of this test is largely that no matter what was in RawDriver - // before, it shoud load into the Host struct based on what is actually - // in the Driver field. - // - // Note that we don't check for the presence of RawDriver's literal "on - // disk" here. It's intentional. - description: "Config version 3 load with existing RawDriver on disk", - hostBefore: &Host{ - Name: "default", - }, - rawData: []byte(`{ - "ConfigVersion": 3, - "Driver": {"MachineName": "default"}, - "DriverName": "virtualbox", - "HostOptions": { - "Driver": "", - "Memory": 0, - "Disk": 0, - "AuthOptions": { - "StorePath": "/Users/nathanleclaire/.docker/machine/machines/default" - } - }, - "Name": "default", - "RawDriver": "eyJWQm94TWFuYWdlciI6e30sIklQQWRkcmVzcyI6IjE5Mi4xNjguOTkuMTAwIiwiTWFjaGluZU5hbWUiOiJkZWZhdWx0IiwiU1NIVXNlciI6ImRvY2tlciIsIlNTSFBvcnQiOjU4MTQ1LCJTU0hLZXlQYXRoIjoiL1VzZXJzL25hdGhhbmxlY2xhaXJlLy5kb2NrZXIvbWFjaGluZS9tYWNoaW5lcy9kZWZhdWx0L2lkX3JzYSIsIlN0b3JlUGF0aCI6Ii9Vc2Vycy9uYXRoYW5sZWNsYWlyZS8uZG9ja2VyL21hY2hpbmUiLCJTd2FybU1hc3RlciI6ZmFsc2UsIlN3YXJtSG9zdCI6InRjcDovLzAuMC4wLjA6MzM3NiIsIlN3YXJtRGlzY292ZXJ5IjoiIiwiQ1BVIjoxLCJNZW1vcnkiOjEwMjQsIkRpc2tTaXplIjoyMDAwMCwiQm9vdDJEb2NrZXJVUkwiOiIiLCJCb290MkRvY2tlckltcG9ydFZNIjoiIiwiSG9zdE9ubHlDSURSIjoiMTkyLjE2OC45OS4xLzI0IiwiSG9zdE9ubHlOaWNUeXBlIjoiODI1NDBFTSIsIkhvc3RPbmx5UHJvbWlzY01vZGUiOiJkZW55IiwiTm9TaGFyZSI6ZmFsc2V9" -}`), - expectedHostAfter: &Host{ - ConfigVersion: 3, - HostOptions: &Options{ - AuthOptions: &auth.Options{ - StorePath: "/Users/nathanleclaire/.docker/machine/machines/default", - }, - }, - Name: "default", - DriverName: "virtualbox", - RawDriver: []byte(`{"MachineName": "default"}`), - Driver: &RawDataDriver{ - Data: []byte(`{"MachineName": "default"}`), - - // TODO (nathanleclaire): The "." argument here is a already existing - // bug (or at least likely to cause them in the future) and most - // likely should be "/Users/nathanleclaire/.docker/machine" - // - // These default StorePath settings get over-written when we - // instantiate the plugin driver, but this seems entirely incidental. - Driver: none.NewDriver("default", "."), - }, - }, - expectedMigrationPerformed: false, - expectedMigrationError: nil, - }, - { - description: "Config version 4 (from the FUTURE) on disk", - hostBefore: &Host{ - Name: "default", - }, - rawData: []byte(`{ - "ConfigVersion": 4, - "Driver": {"MachineName": "default"}, - "DriverName": "virtualbox", - "HostOptions": { - "Driver": "", - "Memory": 0, - "Disk": 0, - "AuthOptions": { - "StorePath": "/Users/nathanleclaire/.docker/machine/machines/default" - } - }, - "Name": "default" -}`), - expectedHostAfter: nil, - expectedMigrationPerformed: false, - expectedMigrationError: errConfigFromFuture, - }, - { - description: "Config version 3 load WITHOUT any existing RawDriver field on disk", - hostBefore: &Host{ - Name: "default", - }, - rawData: []byte(`{ - "ConfigVersion": 3, - "Driver": {"MachineName": "default"}, - "DriverName": "virtualbox", - "HostOptions": { - "Driver": "", - "Memory": 0, - "Disk": 0, - "AuthOptions": { - "StorePath": "/Users/nathanleclaire/.docker/machine/machines/default" - } - }, - "Name": "default" -}`), - expectedHostAfter: &Host{ - ConfigVersion: 3, - HostOptions: &Options{ - AuthOptions: &auth.Options{ - StorePath: "/Users/nathanleclaire/.docker/machine/machines/default", - }, - }, - Name: "default", - DriverName: "virtualbox", - RawDriver: []byte(`{"MachineName": "default"}`), - Driver: &RawDataDriver{ - Data: []byte(`{"MachineName": "default"}`), - - // TODO: See note above. - Driver: none.NewDriver("default", "."), - }, - }, - expectedMigrationPerformed: false, - expectedMigrationError: nil, - }, - { - description: "Config version 2 load and migrate. Ensure StorePath gets set properly.", - hostBefore: &Host{ - Name: "default", - }, - rawData: []byte(`{ - "ConfigVersion": 2, - "Driver": {"MachineName": "default"}, - "DriverName": "virtualbox", - "HostOptions": { - "Driver": "", - "Memory": 0, - "Disk": 0, - "AuthOptions": { - "StorePath": "/Users/nathanleclaire/.docker/machine/machines/default" - } - }, - "StorePath": "/Users/nathanleclaire/.docker/machine/machines/default", - "Name": "default" -}`), - expectedHostAfter: &Host{ - ConfigVersion: 3, - HostOptions: &Options{ - AuthOptions: &auth.Options{ - StorePath: "/Users/nathanleclaire/.docker/machine/machines/default", - }, - }, - Name: "default", - DriverName: "virtualbox", - RawDriver: []byte(`{"MachineName":"default","StorePath":"/Users/nathanleclaire/.docker/machine"}`), - Driver: &RawDataDriver{ - Data: []byte(`{"MachineName":"default","StorePath":"/Users/nathanleclaire/.docker/machine"}`), - Driver: none.NewDriver("default", "/Users/nathanleclaire/.docker/machine"), - }, - }, - expectedMigrationPerformed: true, - expectedMigrationError: nil, - }, - } - - for _, tc := range testCases { - actualHostAfter, actualMigrationPerformed, actualMigrationError := MigrateHost(tc.hostBefore, tc.rawData) - - assert.Equal(t, tc.expectedHostAfter, actualHostAfter) - assert.Equal(t, tc.expectedMigrationPerformed, actualMigrationPerformed) - assert.Equal(t, tc.expectedMigrationError, actualMigrationError) - } -} diff --git a/vendor/github.com/docker/machine/libmachine/host/migrate_v0_v1.go b/vendor/github.com/docker/machine/libmachine/host/migrate_v0_v1.go deleted file mode 100644 index 6460d38e..00000000 --- a/vendor/github.com/docker/machine/libmachine/host/migrate_v0_v1.go +++ /dev/null @@ -1,73 +0,0 @@ -package host - -import ( - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/swarm" -) - -// In the 0.1.0 => 0.2.0 transition, the JSON representation of -// machines changed from a "flat" to a more "nested" structure -// for various options and configuration settings. To preserve -// compatibility with existing machines, these migration functions -// have been introduced. They preserve backwards compat at the expense -// of some duplicated information. - -// MigrateHostV0ToHostV1 validates host config and modifies if needed -// this is used for configuration updates -func MigrateHostV0ToHostV1(hostV0 *V0) *V1 { - hostV1 := &V1{ - Driver: hostV0.Driver, - DriverName: hostV0.DriverName, - } - - hostV1.HostOptions = &OptionsV1{} - hostV1.HostOptions.EngineOptions = &engine.Options{ - TLSVerify: true, - InstallURL: "https://get.docker.com", - } - hostV1.HostOptions.SwarmOptions = &swarm.Options{ - Address: "", - Discovery: hostV0.SwarmDiscovery, - Host: hostV0.SwarmHost, - Master: hostV0.SwarmMaster, - } - hostV1.HostOptions.AuthOptions = &AuthOptionsV1{ - StorePath: hostV0.StorePath, - CaCertPath: hostV0.CaCertPath, - CaCertRemotePath: "", - ServerCertPath: hostV0.ServerCertPath, - ServerKeyPath: hostV0.ServerKeyPath, - ClientKeyPath: hostV0.ClientKeyPath, - ServerCertRemotePath: "", - ServerKeyRemotePath: "", - PrivateKeyPath: hostV0.PrivateKeyPath, - ClientCertPath: hostV0.ClientCertPath, - } - - return hostV1 -} - -// MigrateHostMetadataV0ToHostMetadataV1 fills nested host metadata and modifies if needed -// this is used for configuration updates -func MigrateHostMetadataV0ToHostMetadataV1(m *MetadataV0) *Metadata { - hostMetadata := &Metadata{} - hostMetadata.DriverName = m.DriverName - hostMetadata.HostOptions.EngineOptions = &engine.Options{} - hostMetadata.HostOptions.AuthOptions = &auth.Options{ - StorePath: m.StorePath, - CaCertPath: m.CaCertPath, - CaCertRemotePath: "", - ServerCertPath: m.ServerCertPath, - ServerKeyPath: m.ServerKeyPath, - ClientKeyPath: "", - ServerCertRemotePath: "", - ServerKeyRemotePath: "", - CaPrivateKeyPath: m.PrivateKeyPath, - ClientCertPath: m.ClientCertPath, - } - - hostMetadata.ConfigVersion = m.ConfigVersion - - return hostMetadata -} diff --git a/vendor/github.com/docker/machine/libmachine/host/migrate_v0_v1_test.go b/vendor/github.com/docker/machine/libmachine/host/migrate_v0_v1_test.go deleted file mode 100644 index 689c74b6..00000000 --- a/vendor/github.com/docker/machine/libmachine/host/migrate_v0_v1_test.go +++ /dev/null @@ -1,89 +0,0 @@ -package host - -import ( - "reflect" - "testing" - - "github.com/docker/machine/commands/mcndirs" - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/swarm" -) - -func TestMigrateHostV0ToV1(t *testing.T) { - mcndirs.BaseDir = "/tmp/migration" - originalHost := &V0{ - HostOptions: nil, - SwarmDiscovery: "token://foobar", - SwarmHost: "1.2.3.4:2376", - SwarmMaster: true, - CaCertPath: "/tmp/migration/certs/ca.pem", - PrivateKeyPath: "/tmp/migration/certs/ca-key.pem", - ClientCertPath: "/tmp/migration/certs/cert.pem", - ClientKeyPath: "/tmp/migration/certs/key.pem", - ServerCertPath: "/tmp/migration/certs/server.pem", - ServerKeyPath: "/tmp/migration/certs/server-key.pem", - } - hostOptions := &OptionsV1{ - SwarmOptions: &swarm.Options{ - Master: true, - Discovery: "token://foobar", - Host: "1.2.3.4:2376", - }, - AuthOptions: &AuthOptionsV1{ - CaCertPath: "/tmp/migration/certs/ca.pem", - PrivateKeyPath: "/tmp/migration/certs/ca-key.pem", - ClientCertPath: "/tmp/migration/certs/cert.pem", - ClientKeyPath: "/tmp/migration/certs/key.pem", - ServerCertPath: "/tmp/migration/certs/server.pem", - ServerKeyPath: "/tmp/migration/certs/server-key.pem", - }, - EngineOptions: &engine.Options{ - InstallURL: "https://get.docker.com", - TLSVerify: true, - }, - } - - expectedHost := &V1{ - HostOptions: hostOptions, - } - - host := MigrateHostV0ToHostV1(originalHost) - - if !reflect.DeepEqual(host, expectedHost) { - t.Logf("\n%+v\n%+v", host, expectedHost) - t.Logf("\n%+v\n%+v", host.HostOptions, expectedHost.HostOptions) - t.Fatal("Expected these structs to be equal, they were different") - } -} - -func TestMigrateHostMetadataV0ToV1(t *testing.T) { - metadata := &MetadataV0{ - HostOptions: Options{ - EngineOptions: nil, - AuthOptions: nil, - }, - StorePath: "/tmp/store", - CaCertPath: "/tmp/store/certs/ca.pem", - ServerCertPath: "/tmp/store/certs/server.pem", - } - expectedAuthOptions := &auth.Options{ - StorePath: "/tmp/store", - CaCertPath: "/tmp/store/certs/ca.pem", - ServerCertPath: "/tmp/store/certs/server.pem", - } - - expectedMetadata := &Metadata{ - HostOptions: Options{ - EngineOptions: &engine.Options{}, - AuthOptions: expectedAuthOptions, - }, - } - - m := MigrateHostMetadataV0ToHostMetadataV1(metadata) - - if !reflect.DeepEqual(m, expectedMetadata) { - t.Logf("\n%+v\n%+v", m, expectedMetadata) - t.Fatal("Expected these structs to be equal, they were different") - } -} diff --git a/vendor/github.com/docker/machine/libmachine/host/migrate_v0_v3_test.go b/vendor/github.com/docker/machine/libmachine/host/migrate_v0_v3_test.go deleted file mode 100644 index b5aecfd2..00000000 --- a/vendor/github.com/docker/machine/libmachine/host/migrate_v0_v3_test.go +++ /dev/null @@ -1,23 +0,0 @@ -package host - -import "testing" - -var ( - v0conf = []byte(`{"DriverName":"virtualbox","Driver":{"IPAddress":"192.168.99.100","SSHUser":"docker","SSHPort":53507,"MachineName":"dev","CaCertPath":"/Users/ljrittle/.docker/machine/certs/ca.pem","PrivateKeyPath":"/Users/ljrittle/.docker/machine/certs/ca-key.pem","SwarmMaster":false,"SwarmHost":"tcp://0.0.0.0:3376","SwarmDiscovery":"","CPU":-1,"Memory":1024,"DiskSize":20000,"Boot2DockerURL":"","Boot2DockerImportVM":"","HostOnlyCIDR":""},"StorePath":"/Users/ljrittle/.docker/machine/machines/dev","HostOptions":{"Driver":"","Memory":0,"Disk":0,"EngineOptions":{"ArbitraryFlags":null,"Dns":null,"GraphDir":"","Ipv6":false,"InsecureRegistry":null,"Labels":null,"LogLevel":"","StorageDriver":"","SelinuxEnabled":false,"TlsCaCert":"","TlsCert":"","TlsKey":"","TlsVerify":false,"RegistryMirror":null,"InstallURL":""},"SwarmOptions":{"IsSwarm":false,"Address":"","Discovery":"","Master":false,"Host":"tcp://0.0.0.0:3376","Image":"","Strategy":"","Heartbeat":0,"Overcommit":0,"TlsCaCert":"","TlsCert":"","TlsKey":"","TlsVerify":false,"ArbitraryFlags":null},"AuthOptions":{"StorePath":"/Users/ljrittle/.docker/machine/machines/dev","CaCertPath":"/Users/ljrittle/.docker/machine/certs/ca.pem","CaCertRemotePath":"","ServerCertPath":"/Users/ljrittle/.docker/machine/certs/server.pem","ServerKeyPath":"/Users/ljrittle/.docker/machine/certs/server-key.pem","ClientKeyPath":"/Users/ljrittle/.docker/machine/certs/key.pem","ServerCertRemotePath":"","ServerKeyRemotePath":"","PrivateKeyPath":"/Users/ljrittle/.docker/machine/certs/ca-key.pem","ClientCertPath":"/Users/ljrittle/.docker/machine/certs/cert.pem"}}}`) -) - -func TestMigrateHostV0ToHostV3(t *testing.T) { - h := &Host{} - migratedHost, migrationPerformed, err := MigrateHost(h, v0conf) - if err != nil { - t.Fatalf("Error attempting to migrate host: %s", err) - } - - if !migrationPerformed { - t.Fatal("Expected a migration to be reported as performed but it was not") - } - - if migratedHost.DriverName != "virtualbox" { - t.Fatalf("Expected %q, got %q for the driver name", "virtualbox", migratedHost.DriverName) - } -} diff --git a/vendor/github.com/docker/machine/libmachine/host/migrate_v1_v2.go b/vendor/github.com/docker/machine/libmachine/host/migrate_v1_v2.go deleted file mode 100644 index 6931993d..00000000 --- a/vendor/github.com/docker/machine/libmachine/host/migrate_v1_v2.go +++ /dev/null @@ -1,78 +0,0 @@ -package host - -import ( - "path/filepath" - - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/swarm" -) - -type AuthOptionsV1 struct { - StorePath string - CaCertPath string - CaCertRemotePath string - ServerCertPath string - ServerKeyPath string - ClientKeyPath string - ServerCertRemotePath string - ServerKeyRemotePath string - PrivateKeyPath string - ClientCertPath string -} - -type OptionsV1 struct { - Driver string - Memory int - Disk int - EngineOptions *engine.Options - SwarmOptions *swarm.Options - AuthOptions *AuthOptionsV1 -} - -type V1 struct { - ConfigVersion int - Driver drivers.Driver - DriverName string - HostOptions *OptionsV1 - Name string `json:"-"` - StorePath string -} - -func MigrateHostV1ToHostV2(hostV1 *V1) *V2 { - // Changed: Put StorePath directly in AuthOptions (for provisioning), - // and AuthOptions.PrivateKeyPath => AuthOptions.CaPrivateKeyPath - // Also, CertDir has been added. - - globalStorePath := filepath.Dir(filepath.Dir(hostV1.StorePath)) - - h := &V2{ - ConfigVersion: hostV1.ConfigVersion, - Driver: hostV1.Driver, - Name: hostV1.Driver.GetMachineName(), - DriverName: hostV1.DriverName, - HostOptions: &Options{ - Driver: hostV1.HostOptions.Driver, - Memory: hostV1.HostOptions.Memory, - Disk: hostV1.HostOptions.Disk, - EngineOptions: hostV1.HostOptions.EngineOptions, - SwarmOptions: hostV1.HostOptions.SwarmOptions, - AuthOptions: &auth.Options{ - CertDir: filepath.Join(globalStorePath, "certs"), - CaCertPath: hostV1.HostOptions.AuthOptions.CaCertPath, - CaPrivateKeyPath: hostV1.HostOptions.AuthOptions.PrivateKeyPath, - CaCertRemotePath: hostV1.HostOptions.AuthOptions.CaCertRemotePath, - ServerCertPath: hostV1.HostOptions.AuthOptions.ServerCertPath, - ServerKeyPath: hostV1.HostOptions.AuthOptions.ServerKeyPath, - ClientKeyPath: hostV1.HostOptions.AuthOptions.ClientKeyPath, - ServerCertRemotePath: hostV1.HostOptions.AuthOptions.ServerCertRemotePath, - ServerKeyRemotePath: hostV1.HostOptions.AuthOptions.ServerKeyRemotePath, - ClientCertPath: hostV1.HostOptions.AuthOptions.ClientCertPath, - StorePath: globalStorePath, - }, - }, - } - - return h -} diff --git a/vendor/github.com/docker/machine/libmachine/host/migrate_v1_v2_test.go b/vendor/github.com/docker/machine/libmachine/host/migrate_v1_v2_test.go deleted file mode 100644 index f7f99f4f..00000000 --- a/vendor/github.com/docker/machine/libmachine/host/migrate_v1_v2_test.go +++ /dev/null @@ -1,108 +0,0 @@ -package host - -import ( - "path/filepath" - "testing" -) - -var ( - v1conf = []byte(`{ - "ConfigVersion": 1, - "Driver": { - "IPAddress": "192.168.99.100", - "SSHUser": "docker", - "SSHPort": 64477, - "MachineName": "foobar", - "CaCertPath": "/Users/catbug/.docker/machine/certs/ca.pem", - "PrivateKeyPath": "/Users/catbug/.docker/machine/certs/ca-key.pem", - "SwarmMaster": false, - "SwarmHost": "tcp://0.0.0.0:3376", - "SwarmDiscovery": "", - "CPU": 1, - "Memory": 1024, - "DiskSize": 20000, - "Boot2DockerURL": "", - "Boot2DockerImportVM": "", - "HostOnlyCIDR": "192.168.99.1/24" - }, - "DriverName": "virtualbox", - "HostOptions": { - "Driver": "", - "Memory": 0, - "Disk": 0, - "EngineOptions": { - "ArbitraryFlags": [], - "Dns": null, - "GraphDir": "", - "Env": [], - "Ipv6": false, - "InsecureRegistry": [], - "Labels": [], - "LogLevel": "", - "StorageDriver": "", - "SelinuxEnabled": false, - "TlsCaCert": "", - "TlsCert": "", - "TlsKey": "", - "TlsVerify": true, - "RegistryMirror": [], - "InstallURL": "https://get.docker.com" - }, - "SwarmOptions": { - "IsSwarm": false, - "Address": "", - "Discovery": "", - "Master": false, - "Host": "tcp://0.0.0.0:3376", - "Image": "swarm:latest", - "Strategy": "spread", - "Heartbeat": 0, - "Overcommit": 0, - "TlsCaCert": "", - "TlsCert": "", - "TlsKey": "", - "TlsVerify": false, - "ArbitraryFlags": [] - }, - "AuthOptions": { - "StorePath": "", - "CaCertPath": "/Users/catbug/.docker/machine/certs/ca.pem", - "CaCertRemotePath": "", - "ServerCertPath": "/Users/catbug/.docker/machine/machines/foobar/server.pem", - "ServerKeyPath": "/Users/catbug/.docker/machine/machines/foobar/server-key.pem", - "ClientKeyPath": "/Users/catbug/.docker/machine/certs/key.pem", - "ServerCertRemotePath": "", - "ServerKeyRemotePath": "", - "PrivateKeyPath": "/Users/catbug/.docker/machine/certs/ca-key.pem", - "ClientCertPath": "/Users/catbug/.docker/machine/certs/cert.pem" - } - }, - "StorePath": "/Users/catbug/.docker/machine/machines/foobar" -}`) -) - -func TestMigrateHostV1ToHostV2(t *testing.T) { - h := &Host{} - expectedGlobalStorePath := "/Users/catbug/.docker/machine" - expectedCaPrivateKeyPath := "/Users/catbug/.docker/machine/certs/ca-key.pem" - migratedHost, migrationPerformed, err := MigrateHost(h, v1conf) - if err != nil { - t.Fatalf("Error attempting to migrate host: %s", err) - } - - if !migrationPerformed { - t.Fatal("Expected a migration to be reported as performed but it was not") - } - - if migratedHost.HostOptions.AuthOptions.StorePath != expectedGlobalStorePath { - t.Fatalf("Expected %q, got %q for the store path in AuthOptions", migratedHost.HostOptions.AuthOptions.StorePath, expectedGlobalStorePath) - } - - if migratedHost.HostOptions.AuthOptions.CaPrivateKeyPath != expectedCaPrivateKeyPath { - t.Fatalf("Expected %q, got %q for the private key path in AuthOptions", migratedHost.HostOptions.AuthOptions.CaPrivateKeyPath, expectedCaPrivateKeyPath) - } - - if migratedHost.HostOptions.AuthOptions.CertDir != filepath.Join(expectedGlobalStorePath, "certs") { - t.Fatalf("Expected %q, got %q for the cert dir in AuthOptions", migratedHost.HostOptions.AuthOptions.CaPrivateKeyPath, expectedGlobalStorePath) - } -} diff --git a/vendor/github.com/docker/machine/libmachine/host/migrate_v2_v3.go b/vendor/github.com/docker/machine/libmachine/host/migrate_v2_v3.go deleted file mode 100644 index 12bcbe5f..00000000 --- a/vendor/github.com/docker/machine/libmachine/host/migrate_v2_v3.go +++ /dev/null @@ -1,49 +0,0 @@ -package host - -import ( - "bytes" - "encoding/json" - - "github.com/docker/machine/libmachine/log" -) - -type RawHost struct { - Driver *json.RawMessage -} - -func MigrateHostV2ToHostV3(hostV2 *V2, data []byte, storePath string) *Host { - // Migrate to include RawDriver so that driver plugin will work - // smoothly. - rawHost := &RawHost{} - if err := json.Unmarshal(data, &rawHost); err != nil { - log.Warnf("Could not unmarshal raw host for RawDriver information: %s", err) - } - - m := make(map[string]interface{}) - - // Must migrate to include store path in driver since it was not - // previously stored in drivers directly - d := json.NewDecoder(bytes.NewReader(*rawHost.Driver)) - d.UseNumber() - if err := d.Decode(&m); err != nil { - log.Warnf("Could not unmarshal raw host into map[string]interface{}: %s", err) - } - - m["StorePath"] = storePath - - // Now back to []byte - rawDriver, err := json.Marshal(m) - if err != nil { - log.Warnf("Could not re-marshal raw driver: %s", err) - } - - h := &Host{ - ConfigVersion: 2, - DriverName: hostV2.DriverName, - Name: hostV2.Name, - HostOptions: hostV2.HostOptions, - RawDriver: rawDriver, - } - - return h -} diff --git a/vendor/github.com/docker/machine/libmachine/hosttest/default_test_host.go b/vendor/github.com/docker/machine/libmachine/hosttest/default_test_host.go deleted file mode 100644 index 143a1201..00000000 --- a/vendor/github.com/docker/machine/libmachine/hosttest/default_test_host.go +++ /dev/null @@ -1,78 +0,0 @@ -package hosttest - -import ( - "github.com/docker/machine/drivers/none" - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/host" - "github.com/docker/machine/libmachine/swarm" - "github.com/docker/machine/libmachine/version" -) - -const ( - DefaultHostName = "test-host" - HostTestCaCert = "test-cert" - HostTestPrivateKey = "test-key" -) - -type DriverOptionsMock struct { - Data map[string]interface{} -} - -func (d DriverOptionsMock) String(key string) string { - return d.Data[key].(string) -} - -func (d DriverOptionsMock) StringSlice(key string) []string { - return d.Data[key].([]string) -} - -func (d DriverOptionsMock) Int(key string) int { - return d.Data[key].(int) -} - -func (d DriverOptionsMock) Bool(key string) bool { - return d.Data[key].(bool) -} - -func GetTestDriverFlags() *DriverOptionsMock { - flags := &DriverOptionsMock{ - Data: map[string]interface{}{ - "name": DefaultHostName, - "url": "unix:///var/run/docker.sock", - "swarm": false, - "swarm-host": "", - "swarm-master": false, - "swarm-discovery": "", - }, - } - return flags -} - -func GetDefaultTestHost() (*host.Host, error) { - hostOptions := &host.Options{ - EngineOptions: &engine.Options{}, - SwarmOptions: &swarm.Options{}, - AuthOptions: &auth.Options{ - CaCertPath: HostTestCaCert, - CaPrivateKeyPath: HostTestPrivateKey, - }, - } - - driver := none.NewDriver(DefaultHostName, "/tmp/artifacts") - - host := &host.Host{ - ConfigVersion: version.ConfigVersion, - Name: DefaultHostName, - Driver: driver, - DriverName: "none", - HostOptions: hostOptions, - } - - flags := GetTestDriverFlags() - if err := host.Driver.SetConfigFromFlags(flags); err != nil { - return nil, err - } - - return host, nil -} diff --git a/vendor/github.com/docker/machine/libmachine/libmachine.go b/vendor/github.com/docker/machine/libmachine/libmachine.go deleted file mode 100644 index 986d4ffc..00000000 --- a/vendor/github.com/docker/machine/libmachine/libmachine.go +++ /dev/null @@ -1,188 +0,0 @@ -package libmachine - -import ( - "fmt" - "path/filepath" - - "io" - - "github.com/docker/machine/drivers/errdriver" - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/cert" - "github.com/docker/machine/libmachine/check" - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/drivers/plugin/localbinary" - "github.com/docker/machine/libmachine/drivers/rpc" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/host" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnerror" - "github.com/docker/machine/libmachine/mcnutils" - "github.com/docker/machine/libmachine/persist" - "github.com/docker/machine/libmachine/provision" - "github.com/docker/machine/libmachine/ssh" - "github.com/docker/machine/libmachine/state" - "github.com/docker/machine/libmachine/swarm" - "github.com/docker/machine/libmachine/version" -) - -type API interface { - io.Closer - NewHost(driverName string, rawDriver []byte) (*host.Host, error) - Create(h *host.Host) error - persist.Store - GetMachinesDir() string -} - -type Client struct { - certsDir string - IsDebug bool - SSHClientType ssh.ClientType - GithubAPIToken string - *persist.Filestore - clientDriverFactory rpcdriver.RPCClientDriverFactory -} - -func NewClient(storePath, certsDir string) *Client { - return &Client{ - certsDir: certsDir, - IsDebug: false, - SSHClientType: ssh.External, - Filestore: persist.NewFilestore(storePath, certsDir, certsDir), - clientDriverFactory: rpcdriver.NewRPCClientDriverFactory(), - } -} - -func (api *Client) NewHost(driverName string, rawDriver []byte) (*host.Host, error) { - driver, err := api.clientDriverFactory.NewRPCClientDriver(driverName, rawDriver) - if err != nil { - return nil, err - } - - return &host.Host{ - ConfigVersion: version.ConfigVersion, - Name: driver.GetMachineName(), - Driver: driver, - DriverName: driver.DriverName(), - HostOptions: &host.Options{ - AuthOptions: &auth.Options{ - CertDir: api.certsDir, - CaCertPath: filepath.Join(api.certsDir, "ca.pem"), - CaPrivateKeyPath: filepath.Join(api.certsDir, "ca-key.pem"), - ClientCertPath: filepath.Join(api.certsDir, "cert.pem"), - ClientKeyPath: filepath.Join(api.certsDir, "key.pem"), - ServerCertPath: filepath.Join(api.GetMachinesDir(), "server.pem"), - ServerKeyPath: filepath.Join(api.GetMachinesDir(), "server-key.pem"), - }, - EngineOptions: &engine.Options{ - InstallURL: drivers.DefaultEngineInstallURL, - StorageDriver: "aufs", - TLSVerify: true, - }, - SwarmOptions: &swarm.Options{ - Host: "tcp://0.0.0.0:3376", - Image: "swarm:latest", - Strategy: "spread", - }, - }, - }, nil -} - -func (api *Client) Load(name string) (*host.Host, error) { - h, err := api.Filestore.Load(name) - if err != nil { - return nil, err - } - - d, err := api.clientDriverFactory.NewRPCClientDriver(h.DriverName, h.RawDriver) - if err != nil { - // Not being able to find a driver binary is a "known error" - if _, ok := err.(localbinary.ErrPluginBinaryNotFound); ok { - h.Driver = errdriver.NewDriver(h.DriverName) - return h, nil - } - return nil, err - } - - if h.DriverName == "virtualbox" { - h.Driver = drivers.NewSerialDriver(d) - } else { - h.Driver = d - } - - return h, nil -} - -// Create is the wrapper method which covers all of the boilerplate around -// actually creating, provisioning, and persisting an instance in the store. -func (api *Client) Create(h *host.Host) error { - if err := cert.BootstrapCertificates(h.AuthOptions()); err != nil { - return fmt.Errorf("Error generating certificates: %s", err) - } - - log.Info("Running pre-create checks...") - - if err := h.Driver.PreCreateCheck(); err != nil { - return mcnerror.ErrDuringPreCreate{ - Cause: err, - } - } - - if err := api.Save(h); err != nil { - return fmt.Errorf("Error saving host to store before attempting creation: %s", err) - } - - log.Info("Creating machine...") - - if err := api.performCreate(h); err != nil { - return fmt.Errorf("Error creating machine: %s", err) - } - - log.Debug("Reticulating splines...") - - return nil -} - -func (api *Client) performCreate(h *host.Host) error { - if err := h.Driver.Create(); err != nil { - return fmt.Errorf("Error in driver during machine creation: %s", err) - } - - if err := api.Save(h); err != nil { - return fmt.Errorf("Error saving host to store after attempting creation: %s", err) - } - - // TODO: Not really a fan of just checking "none" or "ci-test" here. - if h.Driver.DriverName() == "none" || h.Driver.DriverName() == "ci-test" { - return nil - } - - log.Info("Waiting for machine to be running, this may take a few minutes...") - if err := mcnutils.WaitFor(drivers.MachineInState(h.Driver, state.Running)); err != nil { - return fmt.Errorf("Error waiting for machine to be running: %s", err) - } - - log.Info("Detecting operating system of created instance...") - provisioner, err := provision.DetectProvisioner(h.Driver) - if err != nil { - return fmt.Errorf("Error detecting OS: %s", err) - } - - log.Infof("Provisioning with %s...", provisioner.String()) - if err := provisioner.Provision(*h.HostOptions.SwarmOptions, *h.HostOptions.AuthOptions, *h.HostOptions.EngineOptions); err != nil { - return fmt.Errorf("Error running provisioning: %s", err) - } - - // We should check the connection to docker here - log.Info("Checking connection to Docker...") - if _, _, err = check.DefaultConnChecker.Check(h, false); err != nil { - return fmt.Errorf("Error checking the host: %s", err) - } - - log.Info("Docker is up and running!") - return nil -} - -func (api *Client) Close() error { - return api.clientDriverFactory.Close() -} diff --git a/vendor/github.com/docker/machine/libmachine/libmachinetest/fake_api.go b/vendor/github.com/docker/machine/libmachine/libmachinetest/fake_api.go deleted file mode 100644 index 4566257a..00000000 --- a/vendor/github.com/docker/machine/libmachine/libmachinetest/fake_api.go +++ /dev/null @@ -1,88 +0,0 @@ -package libmachinetest - -import ( - "github.com/docker/machine/libmachine" - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/host" - "github.com/docker/machine/libmachine/mcnerror" - "github.com/docker/machine/libmachine/state" -) - -type FakeAPI struct { - Hosts []*host.Host -} - -func (api *FakeAPI) NewPluginDriver(string, []byte) (drivers.Driver, error) { - return nil, nil -} - -func (api *FakeAPI) Close() error { - return nil -} - -func (api *FakeAPI) NewHost(driverName string, rawDriver []byte) (*host.Host, error) { - return nil, nil -} - -func (api *FakeAPI) Create(h *host.Host) error { - return nil -} - -func (api *FakeAPI) Exists(name string) (bool, error) { - for _, host := range api.Hosts { - if name == host.Name { - return true, nil - } - } - - return false, nil -} - -func (api *FakeAPI) List() ([]string, error) { - return []string{}, nil -} - -func (api *FakeAPI) Load(name string) (*host.Host, error) { - for _, host := range api.Hosts { - if name == host.Name { - return host, nil - } - } - - return nil, mcnerror.ErrHostDoesNotExist{ - Name: name, - } -} - -func (api *FakeAPI) Remove(name string) error { - newHosts := []*host.Host{} - - for _, host := range api.Hosts { - if name != host.Name { - newHosts = append(newHosts, host) - } - } - - api.Hosts = newHosts - - return nil -} - -func (api *FakeAPI) Save(host *host.Host) error { - return nil -} - -func (api FakeAPI) GetMachinesDir() string { - return "" -} - -func State(api libmachine.API, name string) state.State { - host, _ := api.Load(name) - machineState, _ := host.Driver.GetState() - return machineState -} - -func Exists(api libmachine.API, name string) bool { - exists, _ := api.Exists(name) - return exists -} diff --git a/vendor/github.com/docker/machine/libmachine/log/fmt_machine_logger_test.go b/vendor/github.com/docker/machine/libmachine/log/fmt_machine_logger_test.go deleted file mode 100644 index daa0d5aa..00000000 --- a/vendor/github.com/docker/machine/libmachine/log/fmt_machine_logger_test.go +++ /dev/null @@ -1,97 +0,0 @@ -package log - -import ( - "bufio" - "io" - "io/ioutil" - "testing" - - "github.com/stretchr/testify/assert" -) - -func captureOutput(testLogger MachineLogger, lambda func()) string { - pipeReader, pipeWriter := io.Pipe() - scanner := bufio.NewScanner(pipeReader) - testLogger.SetOutWriter(pipeWriter) - go lambda() - scanner.Scan() - return scanner.Text() -} - -func captureError(testLogger MachineLogger, lambda func()) string { - pipeReader, pipeWriter := io.Pipe() - scanner := bufio.NewScanner(pipeReader) - testLogger.SetErrWriter(pipeWriter) - go lambda() - scanner.Scan() - return scanner.Text() -} - -func TestSetDebugToTrue(t *testing.T) { - testLogger := NewFmtMachineLogger().(*FmtMachineLogger) - testLogger.SetDebug(true) - assert.Equal(t, true, testLogger.debug) -} - -func TestSetDebugToFalse(t *testing.T) { - testLogger := NewFmtMachineLogger().(*FmtMachineLogger) - testLogger.SetDebug(true) - testLogger.SetDebug(false) - assert.Equal(t, false, testLogger.debug) -} - -func TestSetOut(t *testing.T) { - testLogger := NewFmtMachineLogger().(*FmtMachineLogger) - testLogger.SetOutWriter(ioutil.Discard) - assert.Equal(t, ioutil.Discard, testLogger.outWriter) -} - -func TestSetErr(t *testing.T) { - testLogger := NewFmtMachineLogger().(*FmtMachineLogger) - testLogger.SetErrWriter(ioutil.Discard) - assert.Equal(t, ioutil.Discard, testLogger.errWriter) -} - -func TestDebug(t *testing.T) { - testLogger := NewFmtMachineLogger() - testLogger.SetDebug(true) - - result := captureError(testLogger, func() { testLogger.Debug("debug") }) - - assert.Equal(t, result, "debug") -} - -func TestInfo(t *testing.T) { - testLogger := NewFmtMachineLogger() - - result := captureOutput(testLogger, func() { testLogger.Info("info") }) - - assert.Equal(t, result, "info") -} - -func TestWarn(t *testing.T) { - testLogger := NewFmtMachineLogger() - - result := captureOutput(testLogger, func() { testLogger.Warn("warn") }) - - assert.Equal(t, result, "warn") -} - -func TestError(t *testing.T) { - testLogger := NewFmtMachineLogger() - - result := captureError(testLogger, func() { testLogger.Error("error") }) - - assert.Equal(t, result, "error") -} - -func TestEntriesAreCollected(t *testing.T) { - testLogger := NewFmtMachineLogger() - testLogger.Debug("debug") - testLogger.Info("info") - testLogger.Error("error") - assert.Equal(t, 3, len(testLogger.History())) - assert.Equal(t, "debug", testLogger.History()[0]) - assert.Equal(t, "info", testLogger.History()[1]) - assert.Equal(t, "error", testLogger.History()[2]) -} diff --git a/vendor/github.com/docker/machine/libmachine/log/history_recorder_test.go b/vendor/github.com/docker/machine/libmachine/log/history_recorder_test.go deleted file mode 100644 index 5e30520a..00000000 --- a/vendor/github.com/docker/machine/libmachine/log/history_recorder_test.go +++ /dev/null @@ -1,21 +0,0 @@ -package log - -import ( - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestRecording(t *testing.T) { - recorder := NewHistoryRecorder() - recorder.Record("foo") - recorder.Record("bar") - recorder.Record("qix") - assert.Equal(t, recorder.History(), []string{"foo", "bar", "qix"}) -} - -func TestFormattedRecording(t *testing.T) { - recorder := NewHistoryRecorder() - recorder.Recordf("%s, %s and %s", "foo", "bar", "qix") - assert.Equal(t, recorder.History()[0], "foo, bar and qix") -} diff --git a/vendor/github.com/docker/machine/libmachine/log/log_test.go b/vendor/github.com/docker/machine/libmachine/log/log_test.go deleted file mode 100644 index 2343ab98..00000000 --- a/vendor/github.com/docker/machine/libmachine/log/log_test.go +++ /dev/null @@ -1,91 +0,0 @@ -package log - -import ( - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestStripSecrets(t *testing.T) { - testCases := []struct { - description string - input []string - expected []string - }{ - { - description: "Log that does contain certs should have them stripped", - input: []string{ - "Some mundane log lines", - "IP is foo.bar", - `Secret here: printf '%s' '-----BEGIN CERTIFICATE----- -MIIC4DCCAcigAwIBAgIRAMMHbb4WFRVYsCOIrfM3dqkwDQYJKoZIhvcNAQELBQAw -GTEXMBUGA1UEChMObmF0aGFubGVjbGFpcmUwHhcNMTUxMDEwMDE1MDAwWhcNMTgw -OTI0MDE1MDAwWjAZMRcwFQYDVQQKEw5uYXRoYW5sZWNsYWlyZTCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBANLMyaAZPThE6lXtXYfUMZeF0pEfO4BQ7Rv8 -Q9/aIKwm8SlKNm+g+6+RoexsiaPXmAkqk04kg+f9WRgtUKC3nhaiUwTqx2HtxowY -Kp7VVW9QyzwCP1r04WTNTdICzhwM5GfaCMKLmibVUfh9GqIYg4Z6eFly7t0PaN1P -uaLClow1e4sWgAgkpIx7ko9ZtW+73knAnp9PPoH4KPBLS+sIPNGh62WsDlvQrOnq -KDiBPIAAMxu2UefIPeGe6xxFuCG89RoJYYsB627IaR8R8iGJMwjJsiAiObGu6z8M -lcWxT4dC+cEIDRu+XQmavJlAydBeHY6/gtJXzsyRExHTyDwi8xkCAwEAAaMjMCEw -DgYDVR0PAQH/BAQDAgKsMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQAD -ggEBAA5CBXPgjvxfY5bR+f6YfcDcKBWxOQ5zN+OH6jWpVzJMEUWp/ZvTQ1GcV1CT -J4HDMRUOL6lQigZDKR6OJ0g/pD4cDGEQlCuPDXx0O8eenxj9TQ+X+qdtxQNkgjId -QWj3k3JDHCh4BQ7h1ZJIg4SnGCUsrQQ+M8TS4Z0YZ/bZ6ZTktJgQgWMn9Uum1GN9 -hXJ/fa/E9OJuRxTXou7J0WwrV9aX9sEM9syOANR88PcA1fSE7+wNSdj5ZCfY6mQn -II9e8NZEf5ktPXCNi0LKI6R1berejwQI3KKHEFbdZ8SKn93HgDh/Ip/dFctj+zBt -CAlTWS3abehlCERn6Ze9IfZBtpI= ------END CERTIFICATE-----' | sudo tee /etc/docker/ca.pem`, - }, - expected: []string{ - "Some mundane log lines", - "IP is foo.bar", - `Secret here: printf '%s' '' | sudo tee /etc/docker/ca.pem`, - }, - }, - { - description: "Log that does contain private keys should have them stripped", - input: []string{ - "Some mundane log lines", - "IP is foo.bar", - `Secret here: printf '%s' '-----BEGIN RSA PRIVATE KEY----- -MIIC4DCCAcigAwIBAgIRAMMHbb4WFRVYsCOIrfM3dqkwDQYJKoZIhvcNAQELBQAw -GTEXMBUGA1UEChMObmF0aGFubGVjbGFpcmUwHhcNMTUxMDEwMDE1MDAwWhcNMTgw -OTI0MDE1MDAwWjAZMRcwFQYDVQQKEw5uYXRoYW5sZWNsYWlyZTCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBANLMyaAZPThE6lXtXYfUMZeF0pEfO4BQ7Rv8 -Q9/aIKwm8SlKNm+g+6+RoexsiaPXmAkqk04kg+f9WRgtUKC3nhaiUwTqx2HtxowY -Kp7VVW9QyzwCP1r04WTNTdICzhwM5GfaCMKLmibVUfh9GqIYg4Z6eFly7t0PaN1P -uaLClow1e4sWgAgkpIx7ko9ZtW+73knAnp9PPoH4KPBLS+sIPNGh62WsDlvQrOnq -KDiBPIAAMxu2UefIPeGe6xxFuCG89RoJYYsB627IaR8R8iGJMwjJsiAiObGu6z8M -lcWxT4dC+cEIDRu+XQmavJlAydBeHY6/gtJXzsyRExHTyDwi8xkCAwEAAaMjMCEw -DgYDVR0PAQH/BAQDAgKsMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQAD -ggEBAA5CBXPgjvxfY5bR+f6YfcDcKBWxOQ5zN+OH6jWpVzJMEUWp/ZvTQ1GcV1CT -J4HDMRUOL6lQigZDKR6OJ0g/pD4cDGEQlCuPDXx0O8eenxj9TQ+X+qdtxQNkgjId -QWj3k3JDHCh4BQ7h1ZJIg4SnGCUsrQQ+M8TS4Z0YZ/bZ6ZTktJgQgWMn9Uum1GN9 -hXJ/fa/E9OJuRxTXou7J0WwrV9aX9sEM9syOANR88PcA1fSE7+wNSdj5ZCfY6mQn -II9e8NZEf5ktPXCNi0LKI6R1berejwQI3KKHEFbdZ8SKn93HgDh/Ip/dFctj+zBt -CAlTWS3abehlCERn6Ze9IfZBtpI= ------END RSA PRIVATE KEY-----' | sudo tee /etc/docker/server-key.pem`, - }, - expected: []string{ - "Some mundane log lines", - "IP is foo.bar", - `Secret here: printf '%s' '' | sudo tee /etc/docker/server-key.pem`, - }, - }, - { - description: "Log that does not contain secrets should not change", - input: []string{ - "Some mundane log lines", - "IP is foo.bar", - }, - expected: []string{ - "Some mundane log lines", - "IP is foo.bar", - }, - }, - } - - for _, tc := range testCases { - assert.Equal(t, tc.expected, stripSecrets(tc.input)) - } -} diff --git a/vendor/github.com/docker/machine/libmachine/mcndockerclient/docker_client.go b/vendor/github.com/docker/machine/libmachine/mcndockerclient/docker_client.go deleted file mode 100644 index 828dc761..00000000 --- a/vendor/github.com/docker/machine/libmachine/mcndockerclient/docker_client.go +++ /dev/null @@ -1,47 +0,0 @@ -package mcndockerclient - -import ( - "fmt" - - "github.com/docker/machine/libmachine/cert" - "github.com/samalba/dockerclient" -) - -// DockerClient creates a docker client for a given host. -func DockerClient(dockerHost DockerHost) (*dockerclient.DockerClient, error) { - url, err := dockerHost.URL() - if err != nil { - return nil, err - } - - tlsConfig, err := cert.ReadTLSConfig(url, dockerHost.AuthOptions()) - if err != nil { - return nil, fmt.Errorf("Unable to read TLS config: %s", err) - } - - return dockerclient.NewDockerClient(url, tlsConfig) -} - -// CreateContainer creates a docker container. -func CreateContainer(dockerHost DockerHost, config *dockerclient.ContainerConfig, name string) error { - docker, err := DockerClient(dockerHost) - if err != nil { - return err - } - - if err = docker.PullImage(config.Image, nil); err != nil { - return fmt.Errorf("Unable to pull image: %s", err) - } - - var authConfig *dockerclient.AuthConfig - containerID, err := docker.CreateContainer(config, name, authConfig) - if err != nil { - return fmt.Errorf("Error while creating container: %s", err) - } - - if err = docker.StartContainer(containerID, &config.HostConfig); err != nil { - return fmt.Errorf("Error while starting container: %s", err) - } - - return nil -} diff --git a/vendor/github.com/docker/machine/libmachine/mcndockerclient/docker_host.go b/vendor/github.com/docker/machine/libmachine/mcndockerclient/docker_host.go deleted file mode 100644 index 43d774ed..00000000 --- a/vendor/github.com/docker/machine/libmachine/mcndockerclient/docker_host.go +++ /dev/null @@ -1,41 +0,0 @@ -package mcndockerclient - -import ( - "fmt" - - "github.com/docker/machine/libmachine/auth" -) - -type URLer interface { - // URL returns the Docker host URL - URL() (string, error) -} - -type AuthOptionser interface { - // AuthOptions returns the authOptions - AuthOptions() *auth.Options -} - -type DockerHost interface { - URLer - AuthOptionser -} - -type RemoteDocker struct { - HostURL string - AuthOption *auth.Options -} - -// URL returns the Docker host URL -func (rd *RemoteDocker) URL() (string, error) { - if rd.HostURL == "" { - return "", fmt.Errorf("Docker Host URL not set") - } - - return rd.HostURL, nil -} - -// AuthOptions returns the authOptions -func (rd *RemoteDocker) AuthOptions() *auth.Options { - return rd.AuthOption -} diff --git a/vendor/github.com/docker/machine/libmachine/mcndockerclient/docker_versioner.go b/vendor/github.com/docker/machine/libmachine/mcndockerclient/docker_versioner.go deleted file mode 100644 index b8279c77..00000000 --- a/vendor/github.com/docker/machine/libmachine/mcndockerclient/docker_versioner.go +++ /dev/null @@ -1,29 +0,0 @@ -package mcndockerclient - -import "fmt" - -var CurrentDockerVersioner DockerVersioner = &defaultDockerVersioner{} - -type DockerVersioner interface { - DockerVersion(host DockerHost) (string, error) -} - -func DockerVersion(host DockerHost) (string, error) { - return CurrentDockerVersioner.DockerVersion(host) -} - -type defaultDockerVersioner struct{} - -func (dv *defaultDockerVersioner) DockerVersion(host DockerHost) (string, error) { - client, err := DockerClient(host) - if err != nil { - return "", fmt.Errorf("Unable to query docker version: %s", err) - } - - version, err := client.Version() - if err != nil { - return "", fmt.Errorf("Unable to query docker version: %s", err) - } - - return version.Version, nil -} diff --git a/vendor/github.com/docker/machine/libmachine/mcndockerclient/fake_docker_versioner.go b/vendor/github.com/docker/machine/libmachine/mcndockerclient/fake_docker_versioner.go deleted file mode 100644 index 32c4bb4c..00000000 --- a/vendor/github.com/docker/machine/libmachine/mcndockerclient/fake_docker_versioner.go +++ /dev/null @@ -1,14 +0,0 @@ -package mcndockerclient - -type FakeDockerVersioner struct { - Version string - Err error -} - -func (dv *FakeDockerVersioner) DockerVersion(host DockerHost) (string, error) { - if dv.Err != nil { - return "", dv.Err - } - - return dv.Version, nil -} diff --git a/vendor/github.com/docker/machine/libmachine/mcnerror/errors.go b/vendor/github.com/docker/machine/libmachine/mcnerror/errors.go deleted file mode 100644 index 4a409cee..00000000 --- a/vendor/github.com/docker/machine/libmachine/mcnerror/errors.go +++ /dev/null @@ -1,46 +0,0 @@ -package mcnerror - -import ( - "errors" - "fmt" - "strings" - - "github.com/docker/machine/libmachine/state" -) - -var ( - ErrInvalidHostname = errors.New("Invalid hostname specified. Allowed hostname chars are: 0-9a-zA-Z . -") -) - -type ErrHostDoesNotExist struct { - Name string -} - -func (e ErrHostDoesNotExist) Error() string { - return fmt.Sprintf("Host does not exist: %q", e.Name) -} - -type ErrHostAlreadyExists struct { - Name string -} - -func (e ErrHostAlreadyExists) Error() string { - return fmt.Sprintf("Host already exists: %q", e.Name) -} - -type ErrDuringPreCreate struct { - Cause error -} - -func (e ErrDuringPreCreate) Error() string { - return fmt.Sprintf("Error with pre-create check: %q", e.Cause) -} - -type ErrHostAlreadyInState struct { - Name string - State state.State -} - -func (e ErrHostAlreadyInState) Error() string { - return fmt.Sprintf("Machine %q is already %s.", e.Name, strings.ToLower(e.State.String())) -} diff --git a/vendor/github.com/docker/machine/libmachine/mcnflag/flag.go b/vendor/github.com/docker/machine/libmachine/mcnflag/flag.go deleted file mode 100644 index ec24d130..00000000 --- a/vendor/github.com/docker/machine/libmachine/mcnflag/flag.go +++ /dev/null @@ -1,71 +0,0 @@ -package mcnflag - -import "fmt" - -type Flag interface { - fmt.Stringer - Default() interface{} -} - -type StringFlag struct { - Name string - Usage string - EnvVar string - Value string -} - -// TODO: Could this be done more succinctly using embedding? -func (f StringFlag) String() string { - return f.Name -} - -func (f StringFlag) Default() interface{} { - return f.Value -} - -type StringSliceFlag struct { - Name string - Usage string - EnvVar string - Value []string -} - -// TODO: Could this be done more succinctly using embedding? -func (f StringSliceFlag) String() string { - return f.Name -} - -func (f StringSliceFlag) Default() interface{} { - return f.Value -} - -type IntFlag struct { - Name string - Usage string - EnvVar string - Value int -} - -// TODO: Could this be done more succinctly using embedding? -func (f IntFlag) String() string { - return f.Name -} - -func (f IntFlag) Default() interface{} { - return f.Value -} - -type BoolFlag struct { - Name string - Usage string - EnvVar string -} - -// TODO: Could this be done more succinctly using embedding? -func (f BoolFlag) String() string { - return f.Name -} - -func (f BoolFlag) Default() interface{} { - return nil -} diff --git a/vendor/github.com/docker/machine/libmachine/mcnutils/b2d.go b/vendor/github.com/docker/machine/libmachine/mcnutils/b2d.go deleted file mode 100644 index b37ef6ee..00000000 --- a/vendor/github.com/docker/machine/libmachine/mcnutils/b2d.go +++ /dev/null @@ -1,543 +0,0 @@ -package mcnutils - -import ( - "archive/tar" - "bytes" - "encoding/json" - "errors" - "fmt" - "io" - "io/ioutil" - "net" - "net/http" - "net/url" - "os" - "path/filepath" - "regexp" - "strings" - - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/version" -) - -const ( - defaultURL = "https://api.github.com/repos/boot2docker/boot2docker/releases" - defaultISOFilename = "boot2docker.iso" - defaultVolumeIDOffset = int64(0x8028) - versionPrefix = "-v" - defaultVolumeIDLength = 32 -) - -var ( - GithubAPIToken string -) - -var ( - errGitHubAPIResponse = errors.New(`Error getting a version tag from the Github API response. -You may be getting rate limited by Github.`) -) - -var ( - AUFSBugB2DVersions = map[string]string{ - "v1.9.1": "https://github.com/docker/docker/issues/18180", - } -) - -func defaultTimeout(network, addr string) (net.Conn, error) { - return net.Dial(network, addr) -} - -func getClient() *http.Client { - transport := http.Transport{ - DisableKeepAlives: true, - Proxy: http.ProxyFromEnvironment, - Dial: defaultTimeout, - } - - return &http.Client{ - Transport: &transport, - } -} - -func getRequest(apiURL string) (*http.Request, error) { - req, err := http.NewRequest("GET", apiURL, nil) - if err != nil { - return nil, err - } - - if GithubAPIToken != "" { - req.Header.Add("Authorization", fmt.Sprintf("token %s", GithubAPIToken)) - } - - return req, nil -} - -// releaseGetter is a client that gets release information of a product and downloads it. -type releaseGetter interface { - // filename returns filename of the product. - filename() string - // getReleaseTag gets a release tag from the given URL. - getReleaseTag(apiURL string) (string, error) - // getReleaseURL gets the latest release download URL from the given URL. - getReleaseURL(apiURL string) (string, error) - // download downloads a file from the given dlURL and saves it under dir. - download(dir, file, dlURL string) error -} - -// b2dReleaseGetter implements the releaseGetter interface for getting the release of Boot2Docker. -type b2dReleaseGetter struct { - isoFilename string -} - -func (b *b2dReleaseGetter) filename() string { - if b == nil { - return "" - } - return b.isoFilename -} - -// getReleaseTag gets the release tag of Boot2Docker from apiURL. -func (*b2dReleaseGetter) getReleaseTag(apiURL string) (string, error) { - if apiURL == "" { - apiURL = defaultURL - } - - if !version.RC() { - // Just go straight to the convenience URL for "/latest" if we - // are a non-release candidate version. "/latest" won't return - // non-RCs, so that's what we use for stable releases of - // Machine. - apiURL = apiURL + "/latest" - } - - client := getClient() - req, err := getRequest(apiURL) - if err != nil { - return "", err - } - rsp, err := client.Do(req) - if err != nil { - return "", err - } - defer rsp.Body.Close() - - // If we call the API endpoint - // "/repos/boot2docker/boot2docker/releases" without specifying - // "/latest", we will receive a list of releases instead of a single - // one, and we should decode accordingly. - if version.RC() { - var tags []struct { - TagName string `json:"tag_name"` - } - if err := json.NewDecoder(rsp.Body).Decode(&tags); err != nil { - return "", err - } - t := tags[0] - if t.TagName == "" { - return "", errGitHubAPIResponse - } - return t.TagName, nil - } - - // Otherwise, we get back just one release, which we can decode to get - // the tag. - var t struct { - TagName string `json:"tag_name"` - } - if err := json.NewDecoder(rsp.Body).Decode(&t); err != nil { - return "", err - } - if t.TagName == "" { - return "", errGitHubAPIResponse - } - return t.TagName, nil -} - -// getReleaseURL gets the latest release URL of Boot2Docker. -func (b *b2dReleaseGetter) getReleaseURL(apiURL string) (string, error) { - if apiURL == "" { - apiURL = defaultURL - } - - // match github (enterprise) release urls: - // https://api.github.com/repos/../../releases or - // https://some.github.enterprise/api/v3/repos/../../releases - re := regexp.MustCompile("(https?)://([^/]+)(/api/v3)?/repos/([^/]+)/([^/]+)/releases") - matches := re.FindStringSubmatch(apiURL) - if len(matches) != 6 { - // does not match a github releases api URL - return apiURL, nil - } - - scheme, host, org, repo := matches[1], matches[2], matches[4], matches[5] - if host == "api.github.com" { - host = "github.com" - } - - tag, err := b.getReleaseTag(apiURL) - if err != nil { - return "", err - } - - log.Infof("Latest release for %s/%s/%s is %s", host, org, repo, tag) - bugURL, ok := AUFSBugB2DVersions[tag] - if ok { - log.Warnf(` -Boot2Docker %s has a known issue with AUFS. -See here for more details: %s -Consider specifying another storage driver (e.g. 'overlay') using '--engine-storage-driver' instead. -`, tag, bugURL) - } - url := fmt.Sprintf("%s://%s/%s/%s/releases/download/%s/%s", scheme, host, org, repo, tag, b.isoFilename) - return url, nil -} - -func (*b2dReleaseGetter) download(dir, file, isoURL string) error { - u, err := url.Parse(isoURL) - - var src io.ReadCloser - if u.Scheme == "file" || u.Scheme == "" { - s, err := os.Open(u.Path) - if err != nil { - return err - } - - src = s - } else { - client := getClient() - s, err := client.Get(isoURL) - if err != nil { - return err - } - - src = &ReaderWithProgress{ - ReadCloser: s.Body, - out: os.Stdout, - expectedLength: s.ContentLength, - } - } - - defer src.Close() - - // Download to a temp file first then rename it to avoid partial download. - f, err := ioutil.TempFile(dir, file+".tmp") - if err != nil { - return err - } - - defer func() { - if err := removeFileIfExists(f.Name()); err != nil { - log.Warnf("Error removing file: %s", err) - } - }() - - if _, err := io.Copy(f, src); err != nil { - return err - } - - if err := f.Close(); err != nil { - return err - } - - // Dest is the final path of the boot2docker.iso file. - dest := filepath.Join(dir, file) - - // Windows can't rename in place, so remove the old file before - // renaming the temporary downloaded file. - if err := removeFileIfExists(dest); err != nil { - return err - } - - return os.Rename(f.Name(), dest) -} - -// iso is an ISO volume. -type iso interface { - // path returns the path of the ISO. - path() string - // exists reports whether the ISO exists. - exists() bool - // version returns version information of the ISO. - version() (string, error) -} - -// b2dISO represents a Boot2Docker ISO. It implements the ISO interface. -type b2dISO struct { - // path of Boot2Docker ISO - commonIsoPath string - - // offset and length of ISO volume ID - // cf. http://serverfault.com/questions/361474/is-there-a-way-to-change-a-iso-files-volume-id-from-the-command-line - volumeIDOffset int64 - volumeIDLength int -} - -func (b *b2dISO) path() string { - if b == nil { - return "" - } - return b.commonIsoPath -} - -func (b *b2dISO) exists() bool { - if b == nil { - return false - } - - _, err := os.Stat(b.commonIsoPath) - return !os.IsNotExist(err) -} - -// version scans the volume ID in b and returns its version tag. -func (b *b2dISO) version() (string, error) { - if b == nil { - return "", nil - } - - iso, err := os.Open(b.commonIsoPath) - if err != nil { - return "", err - } - defer iso.Close() - - isoMetadata := make([]byte, b.volumeIDLength) - _, err = iso.ReadAt(isoMetadata, b.volumeIDOffset) - if err != nil { - return "", err - } - - fullVersion := string(isoMetadata) - - versionIndex := strings.Index(fullVersion, versionPrefix) - if versionIndex == -1 { - return "", fmt.Errorf("Did not find prefix %q in version string", versionPrefix) - } - - // Original magic file string looks similar to this: "Boot2Docker-v0.1.0 " - // This will return "v0.1.0" given the above string - vers := strings.TrimSpace(fullVersion)[versionIndex+1:] - - log.Debug("local Boot2Docker ISO version: ", vers) - return vers, nil -} - -func removeFileIfExists(name string) error { - if _, err := os.Stat(name); err == nil { - if err := os.Remove(name); err != nil { - return fmt.Errorf("Error removing temporary download file: %s", err) - } - } - return nil -} - -type B2dUtils struct { - releaseGetter - iso - storePath string - imgCachePath string -} - -func NewB2dUtils(storePath string) *B2dUtils { - imgCachePath := filepath.Join(storePath, "cache") - - return &B2dUtils{ - releaseGetter: &b2dReleaseGetter{isoFilename: defaultISOFilename}, - iso: &b2dISO{ - commonIsoPath: filepath.Join(imgCachePath, defaultISOFilename), - volumeIDOffset: defaultVolumeIDOffset, - volumeIDLength: defaultVolumeIDLength, - }, - storePath: storePath, - imgCachePath: imgCachePath, - } -} - -// DownloadISO downloads boot2docker ISO image for the given tag and save it at dest. -func (b *B2dUtils) DownloadISO(dir, file, isoURL string) error { - log.Infof("Downloading %s from %s...", b.path(), isoURL) - return b.download(dir, file, isoURL) -} - -type ReaderWithProgress struct { - io.ReadCloser - out io.Writer - bytesTransferred int64 - expectedLength int64 - nextPercentToPrint int64 -} - -func (r *ReaderWithProgress) Read(p []byte) (int, error) { - n, err := r.ReadCloser.Read(p) - - if n > 0 { - r.bytesTransferred += int64(n) - percentage := r.bytesTransferred * 100 / r.expectedLength - - for percentage >= r.nextPercentToPrint { - if r.nextPercentToPrint%10 == 0 { - fmt.Fprintf(r.out, "%d%%", r.nextPercentToPrint) - } else if r.nextPercentToPrint%2 == 0 { - fmt.Fprint(r.out, ".") - } - r.nextPercentToPrint += 2 - } - } - - return n, err -} - -func (r *ReaderWithProgress) Close() error { - fmt.Fprintln(r.out) - return r.ReadCloser.Close() -} - -func (b *B2dUtils) DownloadLatestBoot2Docker(apiURL string) error { - latestReleaseURL, err := b.getReleaseURL(apiURL) - if err != nil { - return err - } - - return b.DownloadISOFromURL(latestReleaseURL) -} - -func (b *B2dUtils) DownloadISOFromURL(latestReleaseURL string) error { - return b.DownloadISO(b.imgCachePath, b.filename(), latestReleaseURL) -} - -func (b *B2dUtils) UpdateISOCache(isoURL string) error { - // recreate the cache dir if it has been manually deleted - if _, err := os.Stat(b.imgCachePath); os.IsNotExist(err) { - log.Infof("Image cache directory does not exist, creating it at %s...", b.imgCachePath) - if err := os.Mkdir(b.imgCachePath, 0700); err != nil { - return err - } - } - - exists := b.exists() - - if isoURL != "" { - if exists { - // Warn that the b2d iso won't be updated if isoURL is set - log.Warnf("Boot2Docker URL was explicitly set to %q at create time, so Docker Machine cannot upgrade this machine to the latest version.", isoURL) - } - // Non-default B2D are not cached - return nil - } - - if !exists { - log.Info("No default Boot2Docker ISO found locally, downloading the latest release...") - return b.DownloadLatestBoot2Docker("") - } - - latest := b.isLatest() - if !latest { - log.Info("Default Boot2Docker ISO is out-of-date, downloading the latest release...") - return b.DownloadLatestBoot2Docker("") - } - - return nil -} - -func (b *B2dUtils) CopyIsoToMachineDir(isoURL, machineName string) error { - if err := b.UpdateISOCache(isoURL); err != nil { - return err - } - - // TODO: This is a bit off-color. - machineDir := filepath.Join(b.storePath, "machines", machineName) - machineIsoPath := filepath.Join(machineDir, b.filename()) - - // By default just copy the existing "cached" iso to the machine's directory... - if isoURL == "" { - log.Infof("Copying %s to %s...", b.path(), machineIsoPath) - return CopyFile(b.path(), machineIsoPath) - } - - // if ISO is specified, check if it matches a github releases url or fallback to a direct download - downloadURL, err := b.getReleaseURL(isoURL) - if err != nil { - return err - } - - return b.DownloadISO(machineDir, b.filename(), downloadURL) -} - -// isLatest checks the latest release tag and -// reports whether the local ISO cache is the latest version. -// -// It returns false if failing to get the local ISO version -// and true if failing to fetch the latest release tag. -func (b *B2dUtils) isLatest() bool { - localVer, err := b.version() - if err != nil { - log.Warn("Unable to get the local Boot2Docker ISO version: ", err) - return false - } - - latestVer, err := b.getReleaseTag("") - if err != nil { - log.Warn("Unable to get the latest Boot2Docker ISO release version: ", err) - return true - } - - return localVer == latestVer -} - -// MakeDiskImage makes a boot2docker VM disk image. -// See https://github.com/boot2docker/boot2docker/blob/master/rootfs/rootfs/etc/rc.d/automount -func MakeDiskImage(publicSSHKeyPath string) (*bytes.Buffer, error) { - magicString := "boot2docker, please format-me" - - buf := new(bytes.Buffer) - tw := tar.NewWriter(buf) - - // magicString first so the automount script knows to format the disk - file := &tar.Header{Name: magicString, Size: int64(len(magicString))} - - log.Debug("Writing magic tar header") - - if err := tw.WriteHeader(file); err != nil { - return nil, err - } - - if _, err := tw.Write([]byte(magicString)); err != nil { - return nil, err - } - - // .ssh/key.pub => authorized_keys - file = &tar.Header{Name: ".ssh", Typeflag: tar.TypeDir, Mode: 0700} - if err := tw.WriteHeader(file); err != nil { - return nil, err - } - - log.Debug("Writing SSH key tar header") - - pubKey, err := ioutil.ReadFile(publicSSHKeyPath) - if err != nil { - return nil, err - } - - file = &tar.Header{Name: ".ssh/authorized_keys", Size: int64(len(pubKey)), Mode: 0644} - if err := tw.WriteHeader(file); err != nil { - return nil, err - } - - if _, err := tw.Write([]byte(pubKey)); err != nil { - return nil, err - } - - file = &tar.Header{Name: ".ssh/authorized_keys2", Size: int64(len(pubKey)), Mode: 0644} - if err := tw.WriteHeader(file); err != nil { - return nil, err - } - - if _, err := tw.Write([]byte(pubKey)); err != nil { - return nil, err - } - - if err := tw.Close(); err != nil { - return nil, err - } - - return buf, nil -} diff --git a/vendor/github.com/docker/machine/libmachine/mcnutils/b2d_test.go b/vendor/github.com/docker/machine/libmachine/mcnutils/b2d_test.go deleted file mode 100644 index cf1cfad4..00000000 --- a/vendor/github.com/docker/machine/libmachine/mcnutils/b2d_test.go +++ /dev/null @@ -1,339 +0,0 @@ -package mcnutils - -import ( - "bytes" - "errors" - "fmt" - "io/ioutil" - "net/http" - "net/http/httptest" - "os" - "path/filepath" - "testing" - - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/version" - "github.com/stretchr/testify/assert" -) - -func TestGetReleaseURL(t *testing.T) { - testCases := []struct { - apiURL string - isoURL string - machineVersion string - response string - }{ - {"/repos/org/repo/releases/latest", "/org/repo/releases/download/v0.1/boot2docker.iso", "v0.7.0", `{"tag_name": "v0.1"}`}, - - // Note the difference in this one: It's an RC version. - {"/repos/org/repo/releases", "/org/repo/releases/download/v0.2-rc1/boot2docker.iso", "v0.7.0-rc2", `[{"tag_name": "v0.2-rc1"}, {"tag_name": "v0.1"}]`}, - - {"http://dummy.com/boot2docker.iso", "http://dummy.com/boot2docker.iso", "v0.7.0", `{"tag_name": "v0.1"}`}, - } - - for _, tt := range testCases { - testServer := newTestServer(tt.response) - - // TODO: Modifying this package level variable is not elegant, - // but it is effective. Ideally this should be exposed through - // an interface. - actualMachineVersion := version.Version - version.Version = tt.machineVersion - b := NewB2dUtils("/tmp/isos") - isoURL, err := b.getReleaseURL(testServer.URL + tt.apiURL) - - assert.NoError(t, err) - assert.Equal(t, testServer.URL+tt.isoURL, isoURL) - version.Version = actualMachineVersion - - testServer.Close() - } -} - -func TestGetReleaseURLError(t *testing.T) { - // GitHub API error response in case of rate limit - ts := newTestServer(`{"message": "API rate limit exceeded for 127.0.0.1.", - "documentation_url": "https://developer.github.com/v3/#rate-limiting"}`) - defer ts.Close() - - testCases := []struct { - apiURL string - }{ - {ts.URL + "/repos/org/repo/releases/latest"}, - {"http://127.0.0.1/repos/org/repo/releases/latest"}, // dummy API URL. cannot connect it. - } - - for _, tt := range testCases { - b := NewB2dUtils("/tmp/isos") - _, err := b.getReleaseURL(tt.apiURL) - - assert.Error(t, err) - } -} - -func TestVersion(t *testing.T) { - testCases := []string{ - "v0.1.0", - "v0.2.0-rc1", - } - - for _, vers := range testCases { - isopath, off, err := newDummyISO("", defaultISOFilename, vers) - - assert.NoError(t, err) - - b := &b2dISO{ - commonIsoPath: isopath, - volumeIDOffset: off, - volumeIDLength: defaultVolumeIDLength, - } - - got, err := b.version() - - assert.NoError(t, err) - assert.Equal(t, vers, string(got)) - removeFileIfExists(isopath) - } -} - -func TestDownloadISO(t *testing.T) { - testData := "test-download" - ts := newTestServer(testData) - defer ts.Close() - - filename := "test" - - tmpDir, err := ioutil.TempDir("", "machine-test-") - - assert.NoError(t, err) - - b := NewB2dUtils("/tmp/artifacts") - err = b.DownloadISO(tmpDir, filename, ts.URL) - - assert.NoError(t, err) - - data, err := ioutil.ReadFile(filepath.Join(tmpDir, filename)) - - assert.NoError(t, err) - assert.Equal(t, testData, string(data)) -} - -func TestGetRequest(t *testing.T) { - testCases := []struct { - token string - want string - }{ - {"", ""}, - {"CATBUG", "token CATBUG"}, - } - - for _, tt := range testCases { - GithubAPIToken = tt.token - - req, err := getRequest("http://some.github.api") - - assert.NoError(t, err) - assert.Equal(t, tt.want, req.Header.Get("Authorization")) - } -} - -type MockReadCloser struct { - blockLengths []int - currentBlock int -} - -func (r *MockReadCloser) Read(p []byte) (n int, err error) { - n = r.blockLengths[r.currentBlock] - r.currentBlock++ - return -} - -func (r *MockReadCloser) Close() error { - return nil -} - -func TestReaderWithProgress(t *testing.T) { - readCloser := MockReadCloser{blockLengths: []int{5, 45, 50}} - output := new(bytes.Buffer) - buffer := make([]byte, 100) - - readerWithProgress := ReaderWithProgress{ - ReadCloser: &readCloser, - out: output, - expectedLength: 100, - } - - readerWithProgress.Read(buffer) - assert.Equal(t, "0%..", output.String()) - - readerWithProgress.Read(buffer) - assert.Equal(t, "0%....10%....20%....30%....40%....50%", output.String()) - - readerWithProgress.Read(buffer) - assert.Equal(t, "0%....10%....20%....30%....40%....50%....60%....70%....80%....90%....100%", output.String()) - - readerWithProgress.Close() - assert.Equal(t, "0%....10%....20%....30%....40%....50%....60%....70%....80%....90%....100%\n", output.String()) -} - -type mockReleaseGetter struct { - ver string - apiErr error - verCh chan<- string -} - -func (m *mockReleaseGetter) filename() string { - return defaultISOFilename -} - -func (m *mockReleaseGetter) getReleaseTag(apiURL string) (string, error) { - return m.ver, m.apiErr -} - -func (m *mockReleaseGetter) getReleaseURL(apiURL string) (string, error) { - return "http://127.0.0.1/dummy", m.apiErr -} - -func (m *mockReleaseGetter) download(dir, file, isoURL string) error { - path := filepath.Join(dir, file) - var err error - if _, e := os.Stat(path); os.IsNotExist(e) { - err = ioutil.WriteFile(path, dummyISOData(" ", m.ver), 0644) - } - - // send a signal of downloading the latest version - m.verCh <- m.ver - return err -} - -type mockISO struct { - isopath string - exist bool - ver string - verCh <-chan string -} - -func (m *mockISO) path() string { - return m.isopath -} - -func (m *mockISO) exists() bool { - return m.exist -} - -func (m *mockISO) version() (string, error) { - select { - // receive version of a downloaded iso - case ver := <-m.verCh: - return ver, nil - default: - return m.ver, nil - } -} - -func TestCopyDefaultISOToMachine(t *testing.T) { - apiErr := errors.New("api error") - - testCases := []struct { - machineName string - create bool - localVer string - latestVer string - apiErr error - wantVer string - }{ - {"none", false, "", "v1.0.0", nil, "v1.0.0"}, // none => downloading - {"latest", true, "v1.0.0", "v1.0.0", nil, "v1.0.0"}, // latest iso => as is - {"old-badurl", true, "v0.1.0", "", apiErr, "v0.1.0"}, // old iso with bad api => as is - {"old", true, "v0.1.0", "v1.0.0", nil, "v1.0.0"}, // old iso => updating - } - - var isopath string - var err error - verCh := make(chan string, 1) - for _, tt := range testCases { - if tt.create { - isopath, _, err = newDummyISO("cache", defaultISOFilename, tt.localVer) - } else { - if dir, e := ioutil.TempDir("", "machine-test"); e == nil { - isopath = filepath.Join(dir, "cache", defaultISOFilename) - } - } - - // isopath: "$TMPDIR/machine-test-xxxxxx/cache/boot2docker.iso" - // tmpDir: "$TMPDIR/machine-test-xxxxxx" - imgCachePath := filepath.Dir(isopath) - storePath := filepath.Dir(imgCachePath) - - b := &B2dUtils{ - releaseGetter: &mockReleaseGetter{ - ver: tt.latestVer, - apiErr: tt.apiErr, - verCh: verCh, - }, - iso: &mockISO{ - isopath: isopath, - exist: tt.create, - ver: tt.localVer, - verCh: verCh, - }, - storePath: storePath, - imgCachePath: imgCachePath, - } - - dir := filepath.Join(storePath, "machines", tt.machineName) - err = os.MkdirAll(dir, 0700) - assert.NoError(t, err, "machine: %s", tt.machineName) - - err = b.CopyIsoToMachineDir("", tt.machineName) - assert.NoError(t, err) - - dest := filepath.Join(dir, b.filename()) - _, pathErr := os.Stat(dest) - - assert.NoError(t, err, "machine: %s", tt.machineName) - assert.True(t, !os.IsNotExist(pathErr), "machine: %s", tt.machineName) - - ver, err := b.version() - - assert.NoError(t, err, "machine: %s", tt.machineName) - assert.Equal(t, tt.wantVer, ver, "machine: %s", tt.machineName) - - err = removeFileIfExists(isopath) - assert.NoError(t, err, "machine: %s", tt.machineName) - } -} - -// newTestServer creates a new httptest.Server that returns respText as a response body. -func newTestServer(respText string) *httptest.Server { - return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Write([]byte(respText)) - })) -} - -// newDummyISO creates a dummy ISO file that contains the given version info, -// and returns its path and offset value to fetch the version info. -func newDummyISO(dir, name, version string) (string, int64, error) { - tmpDir, err := ioutil.TempDir("", "machine-test-") - if err != nil { - return "", 0, err - } - - tmpDir = filepath.Join(tmpDir, dir) - if e := os.MkdirAll(tmpDir, 755); e != nil { - return "", 0, err - } - - isopath := filepath.Join(tmpDir, name) - log.Info("TEST: dummy ISO created at ", isopath) - - // dummy ISO data mimicking the real byte data of a Boot2Docker ISO image - padding := " " - data := dummyISOData(padding, version) - return isopath, int64(len(padding)), ioutil.WriteFile(isopath, data, 0644) -} - -// dummyISOData returns mock data that contains given padding and version. -func dummyISOData(padding, version string) []byte { - return []byte(fmt.Sprintf("%sBoot2Docker-%s ", padding, version)) -} diff --git a/vendor/github.com/docker/machine/libmachine/mcnutils/utils.go b/vendor/github.com/docker/machine/libmachine/mcnutils/utils.go deleted file mode 100644 index a3992ed1..00000000 --- a/vendor/github.com/docker/machine/libmachine/mcnutils/utils.go +++ /dev/null @@ -1,133 +0,0 @@ -package mcnutils - -import ( - "crypto/rand" - "encoding/hex" - "fmt" - "io" - "os" - "runtime" - "strconv" - "time" -) - -type MultiError struct { - Errs []error -} - -func (e MultiError) Error() string { - aggregate := "" - for _, err := range e.Errs { - aggregate += err.Error() + "\n" - } - return aggregate -} - -// GetHomeDir returns the home directory -// TODO: Having this here just strikes me as dangerous, but some of the drivers -// depend on it ;_; -func GetHomeDir() string { - if runtime.GOOS == "windows" { - return os.Getenv("USERPROFILE") - } - return os.Getenv("HOME") -} - -func GetUsername() string { - u := "unknown" - osUser := "" - - switch runtime.GOOS { - case "darwin", "linux": - osUser = os.Getenv("USER") - case "windows": - osUser = os.Getenv("USERNAME") - } - - if osUser != "" { - u = osUser - } - - return u -} - -func CopyFile(src, dst string) error { - in, err := os.Open(src) - if err != nil { - return err - } - - defer in.Close() - - out, err := os.Create(dst) - if err != nil { - return err - } - - defer out.Close() - - if _, err = io.Copy(out, in); err != nil { - return err - } - - fi, err := os.Stat(src) - if err != nil { - return err - } - - return os.Chmod(dst, fi.Mode()) -} - -func WaitForSpecificOrError(f func() (bool, error), maxAttempts int, waitInterval time.Duration) error { - for i := 0; i < maxAttempts; i++ { - stop, err := f() - if err != nil { - return err - } - if stop { - return nil - } - time.Sleep(waitInterval) - } - return fmt.Errorf("Maximum number of retries (%d) exceeded", maxAttempts) -} - -func WaitForSpecific(f func() bool, maxAttempts int, waitInterval time.Duration) error { - return WaitForSpecificOrError(func() (bool, error) { - return f(), nil - }, maxAttempts, waitInterval) -} - -func WaitFor(f func() bool) error { - return WaitForSpecific(f, 60, 3*time.Second) -} - -// TruncateID returns a shorten id -// Following two functions are from github.com/docker/docker/utils module. It -// was way overkill to include the whole module, so we just have these bits -// that we're using here. -func TruncateID(id string) string { - shortLen := 12 - if len(id) < shortLen { - shortLen = len(id) - } - return id[:shortLen] -} - -// GenerateRandomID returns an unique id -func GenerateRandomID() string { - for { - id := make([]byte, 32) - if _, err := io.ReadFull(rand.Reader, id); err != nil { - panic(err) // This shouldn't happen - } - value := hex.EncodeToString(id) - // if we try to parse the truncated for as an int and we don't have - // an error then the value is all numeric and causes issues when - // used as a hostname. ref #3869 - if _, err := strconv.ParseInt(TruncateID(value), 10, 64); err == nil { - continue - } - return value - } -} diff --git a/vendor/github.com/docker/machine/libmachine/mcnutils/utils_test.go b/vendor/github.com/docker/machine/libmachine/mcnutils/utils_test.go deleted file mode 100644 index 036e2b72..00000000 --- a/vendor/github.com/docker/machine/libmachine/mcnutils/utils_test.go +++ /dev/null @@ -1,101 +0,0 @@ -package mcnutils - -import ( - "io/ioutil" - "os" - "path/filepath" - "runtime" - "testing" -) - -func TestCopyFile(t *testing.T) { - testStr := "test-machine" - - srcFile, err := ioutil.TempFile("", "machine-test-") - if err != nil { - t.Fatal(err) - } - srcFi, err := srcFile.Stat() - if err != nil { - t.Fatal(err) - } - - srcFile.Write([]byte(testStr)) - srcFile.Close() - - srcFilePath := filepath.Join(os.TempDir(), srcFi.Name()) - - destFile, err := ioutil.TempFile("", "machine-copy-test-") - if err != nil { - t.Fatal(err) - } - - destFi, err := destFile.Stat() - if err != nil { - t.Fatal(err) - } - - destFile.Close() - - destFilePath := filepath.Join(os.TempDir(), destFi.Name()) - - if err := CopyFile(srcFilePath, destFilePath); err != nil { - t.Fatal(err) - } - - data, err := ioutil.ReadFile(destFilePath) - if err != nil { - t.Fatal(err) - } - - if string(data) != testStr { - t.Fatalf("expected data \"%s\"; received \"%s\"", testStr, string(data)) - } -} - -func TestGetUsername(t *testing.T) { - currentUser := "unknown" - switch runtime.GOOS { - case "darwin", "linux": - currentUser = os.Getenv("USER") - case "windows": - currentUser = os.Getenv("USERNAME") - } - - username := GetUsername() - if username != currentUser { - t.Fatalf("expected username %s; received %s", currentUser, username) - } -} - -func TestGenerateRandomID(t *testing.T) { - id := GenerateRandomID() - - if len(id) != 64 { - t.Fatalf("Id returned is incorrect: %s", id) - } -} - -func TestShortenId(t *testing.T) { - id := GenerateRandomID() - truncID := TruncateID(id) - if len(truncID) != 12 { - t.Fatalf("Id returned is incorrect: truncate on %s returned %s", id, truncID) - } -} - -func TestShortenIdEmpty(t *testing.T) { - id := "" - truncID := TruncateID(id) - if len(truncID) > len(id) { - t.Fatalf("Id returned is incorrect: truncate on %s returned %s", id, truncID) - } -} - -func TestShortenIdInvalid(t *testing.T) { - id := "1234" - truncID := TruncateID(id) - if len(truncID) != len(id) { - t.Fatalf("Id returned is incorrect: truncate on %s returned %s", id, truncID) - } -} diff --git a/vendor/github.com/docker/machine/libmachine/persist/filestore.go b/vendor/github.com/docker/machine/libmachine/persist/filestore.go deleted file mode 100644 index 3978a9ce..00000000 --- a/vendor/github.com/docker/machine/libmachine/persist/filestore.go +++ /dev/null @@ -1,163 +0,0 @@ -package persist - -import ( - "encoding/json" - "fmt" - "io/ioutil" - "os" - "path/filepath" - "strings" - - "github.com/docker/machine/libmachine/host" - "github.com/docker/machine/libmachine/mcnerror" -) - -type Filestore struct { - Path string - CaCertPath string - CaPrivateKeyPath string -} - -func NewFilestore(path, caCertPath, caPrivateKeyPath string) *Filestore { - return &Filestore{ - Path: path, - CaCertPath: caCertPath, - CaPrivateKeyPath: caPrivateKeyPath, - } -} - -func (s Filestore) GetMachinesDir() string { - return filepath.Join(s.Path, "machines") -} - -func (s Filestore) saveToFile(data []byte, file string) error { - if _, err := os.Stat(file); os.IsNotExist(err) { - return ioutil.WriteFile(file, data, 0600) - } - - tmpfi, err := ioutil.TempFile(filepath.Dir(file), "config.json.tmp") - if err != nil { - return err - } - defer os.Remove(tmpfi.Name()) - - if err = ioutil.WriteFile(tmpfi.Name(), data, 0600); err != nil { - return err - } - - if err = tmpfi.Close(); err != nil { - return err - } - - if err = os.Remove(file); err != nil { - return err - } - - if err = os.Rename(tmpfi.Name(), file); err != nil { - return err - } - return nil -} - -func (s Filestore) Save(host *host.Host) error { - data, err := json.MarshalIndent(host, "", " ") - if err != nil { - return err - } - - hostPath := filepath.Join(s.GetMachinesDir(), host.Name) - - // Ensure that the directory we want to save to exists. - if err := os.MkdirAll(hostPath, 0700); err != nil { - return err - } - - return s.saveToFile(data, filepath.Join(hostPath, "config.json")) -} - -func (s Filestore) Remove(name string) error { - hostPath := filepath.Join(s.GetMachinesDir(), name) - return os.RemoveAll(hostPath) -} - -func (s Filestore) List() ([]string, error) { - dir, err := ioutil.ReadDir(s.GetMachinesDir()) - if err != nil && !os.IsNotExist(err) { - return nil, err - } - - hostNames := []string{} - - for _, file := range dir { - if file.IsDir() && !strings.HasPrefix(file.Name(), ".") { - hostNames = append(hostNames, file.Name()) - } - } - - return hostNames, nil -} - -func (s Filestore) Exists(name string) (bool, error) { - _, err := os.Stat(filepath.Join(s.GetMachinesDir(), name)) - - if os.IsNotExist(err) { - return false, nil - } else if err == nil { - return true, nil - } - - return false, err -} - -func (s Filestore) loadConfig(h *host.Host) error { - data, err := ioutil.ReadFile(filepath.Join(s.GetMachinesDir(), h.Name, "config.json")) - if err != nil { - return err - } - - // Remember the machine name so we don't have to pass it through each - // struct in the migration. - name := h.Name - - migratedHost, migrationPerformed, err := host.MigrateHost(h, data) - if err != nil { - return fmt.Errorf("Error getting migrated host: %s", err) - } - - *h = *migratedHost - - h.Name = name - - // If we end up performing a migration, we should save afterwards so we don't have to do it again on subsequent invocations. - if migrationPerformed { - if err := s.saveToFile(data, filepath.Join(s.GetMachinesDir(), h.Name, "config.json.bak")); err != nil { - return fmt.Errorf("Error attempting to save backup after migration: %s", err) - } - - if err := s.Save(h); err != nil { - return fmt.Errorf("Error saving config after migration was performed: %s", err) - } - } - - return nil -} - -func (s Filestore) Load(name string) (*host.Host, error) { - hostPath := filepath.Join(s.GetMachinesDir(), name) - - if _, err := os.Stat(hostPath); os.IsNotExist(err) { - return nil, mcnerror.ErrHostDoesNotExist{ - Name: name, - } - } - - host := &host.Host{ - Name: name, - } - - if err := s.loadConfig(host); err != nil { - return nil, err - } - - return host, nil -} diff --git a/vendor/github.com/docker/machine/libmachine/persist/filestore_test.go b/vendor/github.com/docker/machine/libmachine/persist/filestore_test.go deleted file mode 100644 index 243d565b..00000000 --- a/vendor/github.com/docker/machine/libmachine/persist/filestore_test.go +++ /dev/null @@ -1,249 +0,0 @@ -package persist - -import ( - "encoding/json" - "fmt" - "io/ioutil" - "os" - "path/filepath" - "regexp" - "testing" - - "github.com/docker/machine/commands/mcndirs" - "github.com/docker/machine/drivers/none" - "github.com/docker/machine/libmachine/host" - "github.com/docker/machine/libmachine/hosttest" -) - -func cleanup() { - os.RemoveAll(os.Getenv("MACHINE_STORAGE_PATH")) -} - -func getTestStore() Filestore { - tmpDir, err := ioutil.TempDir("", "machine-test-") - if err != nil { - fmt.Println(err) - os.Exit(1) - } - - mcndirs.BaseDir = tmpDir - - return Filestore{ - Path: tmpDir, - CaCertPath: filepath.Join(tmpDir, "certs", "ca-cert.pem"), - CaPrivateKeyPath: filepath.Join(tmpDir, "certs", "ca-key.pem"), - } -} - -func TestStoreSave(t *testing.T) { - defer cleanup() - - store := getTestStore() - - h, err := hosttest.GetDefaultTestHost() - if err != nil { - t.Fatal(err) - } - - if err := store.Save(h); err != nil { - t.Fatal(err) - } - - path := filepath.Join(store.GetMachinesDir(), h.Name) - if _, err := os.Stat(path); os.IsNotExist(err) { - t.Fatalf("Host path doesn't exist: %s", path) - } - - files, _ := ioutil.ReadDir(path) - for _, f := range files { - r, err := regexp.Compile("config.json.tmp*") - if err != nil { - t.Fatalf("Failed to compile regexp string") - } - if r.MatchString(f.Name()) { - t.Fatalf("Failed to remove temp filestore:%s", f.Name()) - } - } -} - -func TestStoreSaveOmitRawDriver(t *testing.T) { - defer cleanup() - - store := getTestStore() - - h, err := hosttest.GetDefaultTestHost() - if err != nil { - t.Fatal(err) - } - - if err := store.Save(h); err != nil { - t.Fatal(err) - } - - configJSONPath := filepath.Join(store.GetMachinesDir(), h.Name, "config.json") - - f, err := os.Open(configJSONPath) - if err != nil { - t.Fatal(err) - } - - configData, err := ioutil.ReadAll(f) - if err != nil { - t.Fatal(err) - } - - fakeHost := make(map[string]interface{}) - - if err := json.Unmarshal(configData, &fakeHost); err != nil { - t.Fatal(err) - } - - if rawDriver, ok := fakeHost["RawDriver"]; ok { - t.Fatal("Should not have gotten a value for RawDriver reading host from disk but got one: ", rawDriver) - } - -} - -func TestStoreRemove(t *testing.T) { - defer cleanup() - - store := getTestStore() - - h, err := hosttest.GetDefaultTestHost() - if err != nil { - t.Fatal(err) - } - - if err := store.Save(h); err != nil { - t.Fatal(err) - } - - path := filepath.Join(store.GetMachinesDir(), h.Name) - if _, err := os.Stat(path); os.IsNotExist(err) { - t.Fatalf("Host path doesn't exist: %s", path) - } - - err = store.Remove(h.Name) - if err != nil { - t.Fatal(err) - } - - if _, err := os.Stat(path); err == nil { - t.Fatalf("Host path still exists after remove: %s", path) - } -} - -func TestStoreList(t *testing.T) { - defer cleanup() - - store := getTestStore() - - h, err := hosttest.GetDefaultTestHost() - if err != nil { - t.Fatal(err) - } - - if err := store.Save(h); err != nil { - t.Fatal(err) - } - - hosts, err := store.List() - if len(hosts) != 1 { - t.Fatalf("List returned %d items, expected 1", len(hosts)) - } - - if hosts[0] != h.Name { - t.Fatalf("hosts[0] name is incorrect, got: %s", hosts[0]) - } -} - -func TestStoreExists(t *testing.T) { - defer cleanup() - store := getTestStore() - - h, err := hosttest.GetDefaultTestHost() - if err != nil { - t.Fatal(err) - } - - exists, err := store.Exists(h.Name) - if exists { - t.Fatal("Host should not exist before saving") - } - - if err := store.Save(h); err != nil { - t.Fatal(err) - } - - exists, err = store.Exists(h.Name) - if err != nil { - t.Fatal(err) - } - - if !exists { - t.Fatal("Host should exist after saving") - } - - if err := store.Remove(h.Name); err != nil { - t.Fatal(err) - } - - exists, err = store.Exists(h.Name) - if err != nil { - t.Fatal(err) - } - - if exists { - t.Fatal("Host should not exist after removing") - } -} - -func TestStoreLoad(t *testing.T) { - defer cleanup() - - expectedURL := "unix:///foo/baz" - flags := hosttest.GetTestDriverFlags() - flags.Data["url"] = expectedURL - - store := getTestStore() - - h, err := hosttest.GetDefaultTestHost() - if err != nil { - t.Fatal(err) - } - - if err := h.Driver.SetConfigFromFlags(flags); err != nil { - t.Fatal(err) - } - - if err := store.Save(h); err != nil { - t.Fatal(err) - } - - h, err = store.Load(h.Name) - if err != nil { - t.Fatal(err) - } - - rawDataDriver, ok := h.Driver.(*host.RawDataDriver) - if !ok { - t.Fatal("Expected driver loaded from store to be of type *host.RawDataDriver and it was not") - } - - realDriver := none.NewDriver(h.Name, store.Path) - - if err := json.Unmarshal(rawDataDriver.Data, &realDriver); err != nil { - t.Fatalf("Error unmarshaling rawDataDriver data into concrete 'none' driver: %s", err) - } - - h.Driver = realDriver - - actualURL, err := h.URL() - if err != nil { - t.Fatal(err) - } - - if actualURL != expectedURL { - t.Fatalf("GetURL is not %q, got %q", expectedURL, actualURL) - } -} diff --git a/vendor/github.com/docker/machine/libmachine/persist/persisttest/fake_store.go b/vendor/github.com/docker/machine/libmachine/persist/persisttest/fake_store.go deleted file mode 100644 index f5ee4a8f..00000000 --- a/vendor/github.com/docker/machine/libmachine/persist/persisttest/fake_store.go +++ /dev/null @@ -1,50 +0,0 @@ -package persisttest - -import "github.com/docker/machine/libmachine/host" - -type FakeStore struct { - Hosts []*host.Host - ExistsErr, ListErr, LoadErr, RemoveErr, SaveErr error -} - -func (fs *FakeStore) Exists(name string) (bool, error) { - if fs.ExistsErr != nil { - return false, fs.ExistsErr - } - for _, h := range fs.Hosts { - if h.Name == name { - return true, nil - } - } - - return false, nil -} - -func (fs *FakeStore) List() ([]string, error) { - names := []string{} - for _, h := range fs.Hosts { - names = append(names, h.Name) - } - return names, fs.ListErr -} - -func (fs *FakeStore) Load(name string) (*host.Host, error) { - if fs.LoadErr != nil { - return nil, fs.LoadErr - } - for _, h := range fs.Hosts { - if h.Name == name { - return h, nil - } - } - - return nil, nil -} - -func (fs *FakeStore) Remove(name string) error { - return fs.RemoveErr -} - -func (fs *FakeStore) Save(host *host.Host) error { - return fs.SaveErr -} diff --git a/vendor/github.com/docker/machine/libmachine/persist/store.go b/vendor/github.com/docker/machine/libmachine/persist/store.go deleted file mode 100644 index 1d9d489b..00000000 --- a/vendor/github.com/docker/machine/libmachine/persist/store.go +++ /dev/null @@ -1,47 +0,0 @@ -package persist - -import ( - "github.com/docker/machine/libmachine/host" -) - -type Store interface { - // Exists returns whether a machine exists or not - Exists(name string) (bool, error) - - // List returns a list of all hosts in the store - List() ([]string, error) - - // Load loads a host by name - Load(name string) (*host.Host, error) - - // Remove removes a machine from the store - Remove(name string) error - - // Save persists a machine in the store - Save(host *host.Host) error -} - -func LoadHosts(s Store, hostNames []string) ([]*host.Host, map[string]error) { - loadedHosts := []*host.Host{} - errors := map[string]error{} - - for _, hostName := range hostNames { - h, err := s.Load(hostName) - if err != nil { - errors[hostName] = err - } else { - loadedHosts = append(loadedHosts, h) - } - } - - return loadedHosts, errors -} - -func LoadAllHosts(s Store) ([]*host.Host, map[string]error, error) { - hostNames, err := s.List() - if err != nil { - return nil, nil, err - } - loadedHosts, hostInError := LoadHosts(s, hostNames) - return loadedHosts, hostInError, nil -} diff --git a/vendor/github.com/docker/machine/libmachine/provider/provider.go b/vendor/github.com/docker/machine/libmachine/provider/provider.go deleted file mode 100644 index 294c283c..00000000 --- a/vendor/github.com/docker/machine/libmachine/provider/provider.go +++ /dev/null @@ -1,13 +0,0 @@ -package provider - -import "github.com/docker/machine/libmachine/host" - -type Provider interface { - // IsValid checks whether or not the Provider can successfully create - // machines. If the check does not pass, the provider is no good. - IsValid() bool - - // Create calls out to the driver this provider is associated with, to - // actually create the resource. - Create() (host.Host, error) -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/arch.go b/vendor/github.com/docker/machine/libmachine/provision/arch.go deleted file mode 100644 index 03436f99..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/arch.go +++ /dev/null @@ -1,155 +0,0 @@ -package provision - -import ( - "fmt" - - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnutils" - "github.com/docker/machine/libmachine/provision/pkgaction" - "github.com/docker/machine/libmachine/provision/serviceaction" - "github.com/docker/machine/libmachine/swarm" -) - -func init() { - Register("Arch", &RegisteredProvisioner{ - New: NewArchProvisioner, - }) -} - -func NewArchProvisioner(d drivers.Driver) Provisioner { - return &ArchProvisioner{ - NewSystemdProvisioner("arch", d), - } -} - -type ArchProvisioner struct { - SystemdProvisioner -} - -func (provisioner *ArchProvisioner) String() string { - return "arch" -} - -func (provisioner *ArchProvisioner) CompatibleWithHost() bool { - return provisioner.OsReleaseInfo.ID == provisioner.OsReleaseID || provisioner.OsReleaseInfo.IDLike == provisioner.OsReleaseID -} - -func (provisioner *ArchProvisioner) Package(name string, action pkgaction.PackageAction) error { - var packageAction string - - updateMetadata := true - - switch action { - case pkgaction.Install: - packageAction = "S" - case pkgaction.Remove: - packageAction = "R" - updateMetadata = false - case pkgaction.Upgrade: - packageAction = "U" - } - - switch name { - case "docker": - name = "docker" - } - - pacmanOpts := "-" + packageAction - if updateMetadata { - pacmanOpts = pacmanOpts + "y" - } - - pacmanOpts = pacmanOpts + " --noconfirm --noprogressbar" - - command := fmt.Sprintf("sudo -E pacman %s %s", pacmanOpts, name) - - log.Debugf("package: action=%s name=%s", action.String(), name) - - if _, err := provisioner.SSHCommand(command); err != nil { - return err - } - - return nil -} - -func (provisioner *ArchProvisioner) dockerDaemonResponding() bool { - log.Debug("checking docker daemon") - - if out, err := provisioner.SSHCommand("sudo docker version"); err != nil { - log.Warnf("Error getting SSH command to check if the daemon is up: %s", err) - log.Debugf("'sudo docker version' output:\n%s", out) - return false - } - - // The daemon is up if the command worked. Carry on. - return true -} - -func (provisioner *ArchProvisioner) Provision(swarmOptions swarm.Options, authOptions auth.Options, engineOptions engine.Options) error { - provisioner.SwarmOptions = swarmOptions - provisioner.AuthOptions = authOptions - provisioner.EngineOptions = engineOptions - swarmOptions.Env = engineOptions.Env - - storageDriver, err := decideStorageDriver(provisioner, "overlay", engineOptions.StorageDriver) - if err != nil { - return err - } - provisioner.EngineOptions.StorageDriver = storageDriver - - // HACK: since Arch does not come with sudo by default we install - log.Debug("Installing sudo") - if _, err := provisioner.SSHCommand("if ! type sudo; then pacman -Sy --noconfirm --noprogressbar sudo; fi"); err != nil { - return err - } - - log.Debug("Setting hostname") - if err := provisioner.SetHostname(provisioner.Driver.GetMachineName()); err != nil { - return err - } - - log.Debug("Installing base packages") - for _, pkg := range provisioner.Packages { - if err := provisioner.Package(pkg, pkgaction.Install); err != nil { - return err - } - } - - log.Debug("Installing docker") - if err := provisioner.Package("docker", pkgaction.Install); err != nil { - return err - } - - log.Debug("Starting systemd docker service") - if err := provisioner.Service("docker", serviceaction.Start); err != nil { - return err - } - - log.Debug("Waiting for docker daemon") - if err := mcnutils.WaitFor(provisioner.dockerDaemonResponding); err != nil { - return err - } - - provisioner.AuthOptions = setRemoteAuthOptions(provisioner) - - log.Debug("Configuring auth") - if err := ConfigureAuth(provisioner); err != nil { - return err - } - - log.Debug("Configuring swarm") - if err := configureSwarm(provisioner, swarmOptions, provisioner.AuthOptions); err != nil { - return err - } - - // enable in systemd - log.Debug("Enabling docker in systemd") - if err := provisioner.Service("docker", serviceaction.Enable); err != nil { - return err - } - - return nil -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/arch_test.go b/vendor/github.com/docker/machine/libmachine/provision/arch_test.go deleted file mode 100644 index 4aa19b61..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/arch_test.go +++ /dev/null @@ -1,20 +0,0 @@ -package provision - -import ( - "testing" - - "github.com/docker/machine/drivers/fakedriver" - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/provision/provisiontest" - "github.com/docker/machine/libmachine/swarm" -) - -func TestArchDefaultStorageDriver(t *testing.T) { - p := NewArchProvisioner(&fakedriver.Driver{}).(*ArchProvisioner) - p.SSHCommander = provisiontest.NewFakeSSHCommander(provisiontest.FakeSSHCommanderOptions{}) - p.Provision(swarm.Options{}, auth.Options{}, engine.Options{}) - if p.EngineOptions.StorageDriver != "overlay" { - t.Fatal("Default storage driver should be overlay") - } -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/boot2docker.go b/vendor/github.com/docker/machine/libmachine/provision/boot2docker.go deleted file mode 100644 index 8b09f28c..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/boot2docker.go +++ /dev/null @@ -1,271 +0,0 @@ -package provision - -import ( - "bytes" - "encoding/json" - "fmt" - "net" - "path" - "text/template" - "time" - - "github.com/docker/machine/commands/mcndirs" - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnutils" - "github.com/docker/machine/libmachine/provision/pkgaction" - "github.com/docker/machine/libmachine/provision/serviceaction" - "github.com/docker/machine/libmachine/state" - "github.com/docker/machine/libmachine/swarm" -) - -func init() { - Register("boot2docker", &RegisteredProvisioner{ - New: NewBoot2DockerProvisioner, - }) -} - -func NewBoot2DockerProvisioner(d drivers.Driver) Provisioner { - return &Boot2DockerProvisioner{ - Driver: d, - } -} - -type Boot2DockerProvisioner struct { - OsReleaseInfo *OsRelease - Driver drivers.Driver - AuthOptions auth.Options - EngineOptions engine.Options - SwarmOptions swarm.Options -} - -func (provisioner *Boot2DockerProvisioner) String() string { - return "boot2docker" -} - -func (provisioner *Boot2DockerProvisioner) Service(name string, action serviceaction.ServiceAction) error { - _, err := provisioner.SSHCommand(fmt.Sprintf("sudo /etc/init.d/%s %s", name, action.String())) - return err -} - -func (provisioner *Boot2DockerProvisioner) upgradeIso() error { - // TODO: Ideally, we should not read from mcndirs directory at all. - // The driver should be able to communicate how and where to place the - // relevant files. - b2dutils := mcnutils.NewB2dUtils(mcndirs.GetBaseDir()) - - // Check if the driver has specified a custom b2d url - jsonDriver, err := json.Marshal(provisioner.GetDriver()) - if err != nil { - return err - } - var d struct { - Boot2DockerURL string - } - json.Unmarshal(jsonDriver, &d) - - log.Info("Stopping machine to do the upgrade...") - - if err := provisioner.Driver.Stop(); err != nil { - return err - } - - if err := mcnutils.WaitFor(drivers.MachineInState(provisioner.Driver, state.Stopped)); err != nil { - return err - } - - machineName := provisioner.GetDriver().GetMachineName() - - log.Infof("Upgrading machine %q...", machineName) - - // Either download the latest version of the b2d url that was explicitly - // specified when creating the VM or copy the (updated) default ISO - if err := b2dutils.CopyIsoToMachineDir(d.Boot2DockerURL, machineName); err != nil { - return err - } - - log.Infof("Starting machine back up...") - - if err := provisioner.Driver.Start(); err != nil { - return err - } - - return mcnutils.WaitFor(drivers.MachineInState(provisioner.Driver, state.Running)) -} - -func (provisioner *Boot2DockerProvisioner) Package(name string, action pkgaction.PackageAction) error { - if name == "docker" && action == pkgaction.Upgrade { - if err := provisioner.upgradeIso(); err != nil { - return err - } - } - return nil -} - -func (provisioner *Boot2DockerProvisioner) Hostname() (string, error) { - return provisioner.SSHCommand("hostname") -} - -func (provisioner *Boot2DockerProvisioner) SetHostname(hostname string) error { - if _, err := provisioner.SSHCommand(fmt.Sprintf( - "sudo /usr/bin/sethostname %s && echo %q | sudo tee /var/lib/boot2docker/etc/hostname", - hostname, - hostname, - )); err != nil { - return err - } - - return nil -} - -func (provisioner *Boot2DockerProvisioner) GetDockerOptionsDir() string { - return "/var/lib/boot2docker" -} - -func (provisioner *Boot2DockerProvisioner) GetAuthOptions() auth.Options { - return provisioner.AuthOptions -} - -func (provisioner *Boot2DockerProvisioner) GetSwarmOptions() swarm.Options { - return provisioner.SwarmOptions -} - -func (provisioner *Boot2DockerProvisioner) GenerateDockerOptions(dockerPort int) (*DockerOptions, error) { - var ( - engineCfg bytes.Buffer - ) - - driverNameLabel := fmt.Sprintf("provider=%s", provisioner.Driver.DriverName()) - provisioner.EngineOptions.Labels = append(provisioner.EngineOptions.Labels, driverNameLabel) - - engineConfigTmpl := ` -EXTRA_ARGS=' -{{ range .EngineOptions.Labels }}--label {{.}} -{{ end }}{{ range .EngineOptions.InsecureRegistry }}--insecure-registry {{.}} -{{ end }}{{ range .EngineOptions.RegistryMirror }}--registry-mirror {{.}} -{{ end }}{{ range .EngineOptions.ArbitraryFlags }}--{{.}} -{{ end }} -' -CACERT={{.AuthOptions.CaCertRemotePath}} -DOCKER_HOST='-H tcp://0.0.0.0:{{.DockerPort}}' -DOCKER_STORAGE={{.EngineOptions.StorageDriver}} -DOCKER_TLS=auto -SERVERKEY={{.AuthOptions.ServerKeyRemotePath}} -SERVERCERT={{.AuthOptions.ServerCertRemotePath}} - -{{range .EngineOptions.Env}}export \"{{ printf "%q" . }}\" -{{end}} -` - t, err := template.New("engineConfig").Parse(engineConfigTmpl) - if err != nil { - return nil, err - } - - engineConfigContext := EngineConfigContext{ - DockerPort: dockerPort, - AuthOptions: provisioner.AuthOptions, - EngineOptions: provisioner.EngineOptions, - } - - t.Execute(&engineCfg, engineConfigContext) - - daemonOptsDir := path.Join(provisioner.GetDockerOptionsDir(), "profile") - return &DockerOptions{ - EngineOptions: engineCfg.String(), - EngineOptionsPath: daemonOptsDir, - }, nil -} - -func (provisioner *Boot2DockerProvisioner) CompatibleWithHost() bool { - return provisioner.OsReleaseInfo.ID == "boot2docker" -} - -func (provisioner *Boot2DockerProvisioner) SetOsReleaseInfo(info *OsRelease) { - provisioner.OsReleaseInfo = info -} - -func (provisioner *Boot2DockerProvisioner) GetOsReleaseInfo() (*OsRelease, error) { - return provisioner.OsReleaseInfo, nil -} - -func (provisioner *Boot2DockerProvisioner) AttemptIPContact(dockerPort int) { - ip, err := provisioner.Driver.GetIP() - if err != nil { - log.Warnf("Could not get IP address for created machine: %s", err) - return - } - - if conn, err := net.DialTimeout("tcp", fmt.Sprintf("%s:%d", ip, dockerPort), 5*time.Second); err != nil { - log.Warnf(` -This machine has been allocated an IP address, but Docker Machine could not -reach it successfully. - -SSH for the machine should still work, but connecting to exposed ports, such as -the Docker daemon port (usually :%d), may not work properly. - -You may need to add the route manually, or use another related workaround. - -This could be due to a VPN, proxy, or host file configuration issue. - -You also might want to clear any VirtualBox host only interfaces you are not using.`, engine.DefaultPort) - } else { - conn.Close() - } -} - -func (provisioner *Boot2DockerProvisioner) Provision(swarmOptions swarm.Options, authOptions auth.Options, engineOptions engine.Options) error { - var ( - err error - ) - - defer func() { - if err == nil { - provisioner.AttemptIPContact(engine.DefaultPort) - } - }() - - provisioner.SwarmOptions = swarmOptions - provisioner.AuthOptions = authOptions - provisioner.EngineOptions = engineOptions - swarmOptions.Env = engineOptions.Env - - if provisioner.EngineOptions.StorageDriver == "" { - provisioner.EngineOptions.StorageDriver = "aufs" - } - - if err = provisioner.SetHostname(provisioner.Driver.GetMachineName()); err != nil { - return err - } - - // b2d hosts need to wait for the daemon to be up - // before continuing with provisioning - if err = WaitForDocker(provisioner, engine.DefaultPort); err != nil { - return err - } - - if err = makeDockerOptionsDir(provisioner); err != nil { - return err - } - - provisioner.AuthOptions = setRemoteAuthOptions(provisioner) - - if err = ConfigureAuth(provisioner); err != nil { - return err - } - - if err = configureSwarm(provisioner, swarmOptions, provisioner.AuthOptions); err != nil { - return err - } - - return nil -} - -func (provisioner *Boot2DockerProvisioner) SSHCommand(args string) (string, error) { - return drivers.RunSSHCommandFromDriver(provisioner.Driver, args) -} - -func (provisioner *Boot2DockerProvisioner) GetDriver() drivers.Driver { - return provisioner.Driver -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/centos.go b/vendor/github.com/docker/machine/libmachine/provision/centos.go deleted file mode 100644 index 11c01a39..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/centos.go +++ /dev/null @@ -1,25 +0,0 @@ -package provision - -import ( - "github.com/docker/machine/libmachine/drivers" -) - -func init() { - Register("Centos", &RegisteredProvisioner{ - New: NewCentosProvisioner, - }) -} - -func NewCentosProvisioner(d drivers.Driver) Provisioner { - return &CentosProvisioner{ - NewRedHatProvisioner("centos", d), - } -} - -type CentosProvisioner struct { - *RedHatProvisioner -} - -func (provisioner *CentosProvisioner) String() string { - return "centos" -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/centos_test.go b/vendor/github.com/docker/machine/libmachine/provision/centos_test.go deleted file mode 100644 index 13194467..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/centos_test.go +++ /dev/null @@ -1,28 +0,0 @@ -package provision - -import ( - "regexp" - "testing" -) - -func TestCentosGenerateYumRepoList(t *testing.T) { - info := &OsRelease{ - ID: "centos", - } - p := NewCentosProvisioner(nil) - p.SetOsReleaseInfo(info) - - buf, err := generateYumRepoList(p) - if err != nil { - t.Fatal(err) - } - - m, err := regexp.MatchString(".*centos/7.*", buf.String()) - if err != nil { - t.Fatal(err) - } - - if !m { - t.Fatalf("expected match for centos/7") - } -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/configure_swarm.go b/vendor/github.com/docker/machine/libmachine/provision/configure_swarm.go deleted file mode 100644 index 5d7545ca..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/configure_swarm.go +++ /dev/null @@ -1,149 +0,0 @@ -package provision - -import ( - "fmt" - "net/url" - "strconv" - "strings" - - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcndockerclient" - "github.com/docker/machine/libmachine/swarm" - "github.com/samalba/dockerclient" -) - -func configureSwarm(p Provisioner, swarmOptions swarm.Options, authOptions auth.Options) error { - if !swarmOptions.IsSwarm { - return nil - } - - log.Info("Configuring swarm...") - - ip, err := p.GetDriver().GetIP() - if err != nil { - return err - } - - u, err := url.Parse(swarmOptions.Host) - if err != nil { - return err - } - - enginePort := engine.DefaultPort - engineURL, err := p.GetDriver().GetURL() - if err != nil { - return err - } - - parts := strings.Split(engineURL, ":") - if len(parts) == 3 { - dPort, err := strconv.Atoi(parts[2]) - if err != nil { - return err - } - enginePort = dPort - } - - parts = strings.Split(u.Host, ":") - port := parts[1] - - dockerDir := p.GetDockerOptionsDir() - dockerHost := &mcndockerclient.RemoteDocker{ - HostURL: fmt.Sprintf("tcp://%s:%d", ip, enginePort), - AuthOption: &authOptions, - } - advertiseInfo := fmt.Sprintf("%s:%d", ip, enginePort) - - if swarmOptions.Master { - advertiseMasterInfo := fmt.Sprintf("%s:%s", ip, "3376") - cmd := fmt.Sprintf("manage --tlsverify --tlscacert=%s --tlscert=%s --tlskey=%s -H %s --strategy %s --advertise %s", - authOptions.CaCertRemotePath, - authOptions.ServerCertRemotePath, - authOptions.ServerKeyRemotePath, - swarmOptions.Host, - swarmOptions.Strategy, - advertiseMasterInfo, - ) - if swarmOptions.IsExperimental { - cmd = "--experimental " + cmd - } - - cmdMaster := strings.Fields(cmd) - for _, option := range swarmOptions.ArbitraryFlags { - cmdMaster = append(cmdMaster, "--"+option) - } - - //Discovery must be at end of command - cmdMaster = append(cmdMaster, swarmOptions.Discovery) - - hostBind := fmt.Sprintf("%s:%s", dockerDir, dockerDir) - masterHostConfig := dockerclient.HostConfig{ - RestartPolicy: dockerclient.RestartPolicy{ - Name: "always", - MaximumRetryCount: 0, - }, - Binds: []string{hostBind}, - PortBindings: map[string][]dockerclient.PortBinding{ - fmt.Sprintf("%s/tcp", port): { - { - HostIp: "0.0.0.0", - HostPort: port, - }, - }, - }, - } - - swarmMasterConfig := &dockerclient.ContainerConfig{ - Image: swarmOptions.Image, - Env: swarmOptions.Env, - ExposedPorts: map[string]struct{}{ - "2375/tcp": {}, - fmt.Sprintf("%s/tcp", port): {}, - }, - Cmd: cmdMaster, - HostConfig: masterHostConfig, - } - - err = mcndockerclient.CreateContainer(dockerHost, swarmMasterConfig, "swarm-agent-master") - if err != nil { - return err - } - } - - if swarmOptions.Agent { - workerHostConfig := dockerclient.HostConfig{ - RestartPolicy: dockerclient.RestartPolicy{ - Name: "always", - MaximumRetryCount: 0, - }, - } - - cmdWorker := []string{ - "join", - "--advertise", - advertiseInfo, - } - for _, option := range swarmOptions.ArbitraryJoinFlags { - cmdWorker = append(cmdWorker, "--"+option) - } - cmdWorker = append(cmdWorker, swarmOptions.Discovery) - - swarmWorkerConfig := &dockerclient.ContainerConfig{ - Image: swarmOptions.Image, - Env: swarmOptions.Env, - Cmd: cmdWorker, - HostConfig: workerHostConfig, - } - if swarmOptions.IsExperimental { - swarmWorkerConfig.Cmd = append([]string{"--experimental"}, swarmWorkerConfig.Cmd...) - } - - err = mcndockerclient.CreateContainer(dockerHost, swarmWorkerConfig, "swarm-agent") - if err != nil { - return err - } - } - return nil -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/coreos.go b/vendor/github.com/docker/machine/libmachine/provision/coreos.go deleted file mode 100644 index a4f4904c..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/coreos.go +++ /dev/null @@ -1,135 +0,0 @@ -package provision - -import ( - "bytes" - "fmt" - "text/template" - - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/provision/pkgaction" - "github.com/docker/machine/libmachine/swarm" -) - -const ( - hostTmpl = `sudo tee /var/tmp/hostname.yml << EOF -#cloud-config - -hostname: %s -EOF -` -) - -func init() { - Register("CoreOS", &RegisteredProvisioner{ - New: NewCoreOSProvisioner, - }) -} - -func NewCoreOSProvisioner(d drivers.Driver) Provisioner { - return &CoreOSProvisioner{ - NewSystemdProvisioner("coreos", d), - } -} - -type CoreOSProvisioner struct { - SystemdProvisioner -} - -func (provisioner *CoreOSProvisioner) String() string { - return "coreOS" -} - -func (provisioner *CoreOSProvisioner) SetHostname(hostname string) error { - log.Debugf("SetHostname: %s", hostname) - - if _, err := provisioner.SSHCommand(fmt.Sprintf(hostTmpl, hostname)); err != nil { - return err - } - - if _, err := provisioner.SSHCommand("sudo systemctl start system-cloudinit@var-tmp-hostname.yml.service"); err != nil { - return err - } - - return nil -} - -func (provisioner *CoreOSProvisioner) GenerateDockerOptions(dockerPort int) (*DockerOptions, error) { - var ( - engineCfg bytes.Buffer - ) - - driverNameLabel := fmt.Sprintf("provider=%s", provisioner.Driver.DriverName()) - provisioner.EngineOptions.Labels = append(provisioner.EngineOptions.Labels, driverNameLabel) - - engineConfigTmpl := `[Unit] -Description=Docker Socket for the API -After=docker.socket early-docker.target network.target -Requires=docker.socket early-docker.target - -[Service] -Environment=TMPDIR=/var/tmp -EnvironmentFile=-/run/flannel_docker_opts.env -MountFlags=slave -LimitNOFILE=1048576 -LimitNPROC=1048576 -ExecStart=/usr/lib/coreos/dockerd daemon --host=unix:///var/run/docker.sock --host=tcp://0.0.0.0:{{.DockerPort}} --tlsverify --tlscacert {{.AuthOptions.CaCertRemotePath}} --tlscert {{.AuthOptions.ServerCertRemotePath}} --tlskey {{.AuthOptions.ServerKeyRemotePath}}{{ range .EngineOptions.Labels }} --label {{.}}{{ end }}{{ range .EngineOptions.InsecureRegistry }} --insecure-registry {{.}}{{ end }}{{ range .EngineOptions.RegistryMirror }} --registry-mirror {{.}}{{ end }}{{ range .EngineOptions.ArbitraryFlags }} --{{.}}{{ end }} \$DOCKER_OPTS \$DOCKER_OPT_BIP \$DOCKER_OPT_MTU \$DOCKER_OPT_IPMASQ -Environment={{range .EngineOptions.Env}}{{ printf "%q" . }} {{end}} - -[Install] -WantedBy=multi-user.target -` - - t, err := template.New("engineConfig").Parse(engineConfigTmpl) - if err != nil { - return nil, err - } - - engineConfigContext := EngineConfigContext{ - DockerPort: dockerPort, - AuthOptions: provisioner.AuthOptions, - EngineOptions: provisioner.EngineOptions, - } - - t.Execute(&engineCfg, engineConfigContext) - - return &DockerOptions{ - EngineOptions: engineCfg.String(), - EngineOptionsPath: provisioner.DaemonOptionsFile, - }, nil -} - -func (provisioner *CoreOSProvisioner) Package(name string, action pkgaction.PackageAction) error { - return nil -} - -func (provisioner *CoreOSProvisioner) Provision(swarmOptions swarm.Options, authOptions auth.Options, engineOptions engine.Options) error { - provisioner.SwarmOptions = swarmOptions - provisioner.AuthOptions = authOptions - provisioner.EngineOptions = engineOptions - - if err := provisioner.SetHostname(provisioner.Driver.GetMachineName()); err != nil { - return err - } - - if err := makeDockerOptionsDir(provisioner); err != nil { - return err - } - - log.Debugf("Preparing certificates") - provisioner.AuthOptions = setRemoteAuthOptions(provisioner) - - log.Debugf("Setting up certificates") - if err := ConfigureAuth(provisioner); err != nil { - return err - } - - log.Debug("Configuring swarm") - if err := configureSwarm(provisioner, swarmOptions, provisioner.AuthOptions); err != nil { - return err - } - - return nil -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/debian.go b/vendor/github.com/docker/machine/libmachine/provision/debian.go deleted file mode 100644 index 44241ad7..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/debian.go +++ /dev/null @@ -1,143 +0,0 @@ -package provision - -import ( - "fmt" - - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnutils" - "github.com/docker/machine/libmachine/provision/pkgaction" - "github.com/docker/machine/libmachine/provision/serviceaction" - "github.com/docker/machine/libmachine/swarm" -) - -func init() { - Register("Debian", &RegisteredProvisioner{ - New: NewDebianProvisioner, - }) -} - -func NewDebianProvisioner(d drivers.Driver) Provisioner { - return &DebianProvisioner{ - NewSystemdProvisioner("debian", d), - } -} - -type DebianProvisioner struct { - SystemdProvisioner -} - -func (provisioner *DebianProvisioner) String() string { - return "debian" -} - -func (provisioner *DebianProvisioner) Package(name string, action pkgaction.PackageAction) error { - var packageAction string - - updateMetadata := true - - switch action { - case pkgaction.Install, pkgaction.Upgrade: - packageAction = "install" - case pkgaction.Remove: - packageAction = "remove" - updateMetadata = false - } - - switch name { - case "docker": - name = "docker-engine" - } - - if updateMetadata { - if _, err := provisioner.SSHCommand("sudo apt-get update"); err != nil { - return err - } - } - - command := fmt.Sprintf("DEBIAN_FRONTEND=noninteractive sudo -E apt-get %s -y %s", packageAction, name) - - log.Debugf("package: action=%s name=%s", action.String(), name) - - if _, err := provisioner.SSHCommand(command); err != nil { - return err - } - - return nil -} - -func (provisioner *DebianProvisioner) dockerDaemonResponding() bool { - log.Debug("checking docker daemon") - - if out, err := provisioner.SSHCommand("sudo docker version"); err != nil { - log.Warnf("Error getting SSH command to check if the daemon is up: %s", err) - log.Debugf("'sudo docker version' output:\n%s", out) - return false - } - - // The daemon is up if the command worked. Carry on. - return true -} - -func (provisioner *DebianProvisioner) Provision(swarmOptions swarm.Options, authOptions auth.Options, engineOptions engine.Options) error { - provisioner.SwarmOptions = swarmOptions - provisioner.AuthOptions = authOptions - provisioner.EngineOptions = engineOptions - swarmOptions.Env = engineOptions.Env - - storageDriver, err := decideStorageDriver(provisioner, "aufs", engineOptions.StorageDriver) - if err != nil { - return err - } - provisioner.EngineOptions.StorageDriver = storageDriver - - // HACK: since debian does not come with sudo by default we install - log.Debug("installing sudo") - if _, err := provisioner.SSHCommand("if ! type sudo; then apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y sudo; fi"); err != nil { - return err - } - - log.Debug("setting hostname") - if err := provisioner.SetHostname(provisioner.Driver.GetMachineName()); err != nil { - return err - } - - log.Debug("installing base packages") - for _, pkg := range provisioner.Packages { - if err := provisioner.Package(pkg, pkgaction.Install); err != nil { - return err - } - } - - log.Debug("installing docker") - if err := installDockerGeneric(provisioner, engineOptions.InstallURL); err != nil { - return err - } - - log.Debug("waiting for docker daemon") - if err := mcnutils.WaitFor(provisioner.dockerDaemonResponding); err != nil { - return err - } - - provisioner.AuthOptions = setRemoteAuthOptions(provisioner) - - log.Debug("configuring auth") - if err := ConfigureAuth(provisioner); err != nil { - return err - } - - log.Debug("configuring swarm") - if err := configureSwarm(provisioner, swarmOptions, provisioner.AuthOptions); err != nil { - return err - } - - // enable in systemd - log.Debug("enabling docker in systemd") - if err := provisioner.Service("docker", serviceaction.Enable); err != nil { - return err - } - - return nil -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/debian_test.go b/vendor/github.com/docker/machine/libmachine/provision/debian_test.go deleted file mode 100644 index 2d1f944a..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/debian_test.go +++ /dev/null @@ -1,20 +0,0 @@ -package provision - -import ( - "testing" - - "github.com/docker/machine/drivers/fakedriver" - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/provision/provisiontest" - "github.com/docker/machine/libmachine/swarm" -) - -func TestDebianDefaultStorageDriver(t *testing.T) { - p := NewDebianProvisioner(&fakedriver.Driver{}).(*DebianProvisioner) - p.SSHCommander = provisiontest.NewFakeSSHCommander(provisiontest.FakeSSHCommanderOptions{}) - p.Provision(swarm.Options{}, auth.Options{}, engine.Options{}) - if p.EngineOptions.StorageDriver != "aufs" { - t.Fatal("Default storage driver should be aufs") - } -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/engine_config_context.go b/vendor/github.com/docker/machine/libmachine/provision/engine_config_context.go deleted file mode 100644 index 7a7e9a80..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/engine_config_context.go +++ /dev/null @@ -1,13 +0,0 @@ -package provision - -import ( - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/engine" -) - -type EngineConfigContext struct { - DockerPort int - AuthOptions auth.Options - EngineOptions engine.Options - DockerOptionsDir string -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/errors.go b/vendor/github.com/docker/machine/libmachine/provision/errors.go deleted file mode 100644 index 46348b90..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/errors.go +++ /dev/null @@ -1,24 +0,0 @@ -package provision - -import ( - "errors" - "fmt" -) - -var ( - ErrDetectionFailed = errors.New("OS type not recognized") -) - -type ErrDaemonAvailable struct { - wrappedErr error -} - -func (e ErrDaemonAvailable) Error() string { - return fmt.Sprintf("Unable to verify the Docker daemon is listening: %s", e.wrappedErr) -} - -func NewErrDaemonAvailable(err error) ErrDaemonAvailable { - return ErrDaemonAvailable{ - wrappedErr: err, - } -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/fake_provisioner.go b/vendor/github.com/docker/machine/libmachine/provision/fake_provisioner.go deleted file mode 100644 index 7d4caaed..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/fake_provisioner.go +++ /dev/null @@ -1,110 +0,0 @@ -package provision - -import ( - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/provision/pkgaction" - "github.com/docker/machine/libmachine/provision/serviceaction" - "github.com/docker/machine/libmachine/swarm" -) - -type FakeDetector struct { - Provisioner -} - -func (fd *FakeDetector) DetectProvisioner(d drivers.Driver) (Provisioner, error) { - return fd.Provisioner, nil -} - -type FakeProvisioner struct{} - -func NewFakeProvisioner(d drivers.Driver) Provisioner { - return &FakeProvisioner{} -} - -func (fp *FakeProvisioner) SSHCommand(args string) (string, error) { - return "", nil -} - -func (fp *FakeProvisioner) String() string { - return "fakeprovisioner" -} - -func (fp *FakeProvisioner) GenerateDockerOptions(dockerPort int) (*DockerOptions, error) { - return nil, nil -} - -func (fp *FakeProvisioner) GetDockerOptionsDir() string { - return "" -} - -func (fp *FakeProvisioner) GetAuthOptions() auth.Options { - return auth.Options{} -} - -func (fp *FakeProvisioner) GetSwarmOptions() swarm.Options { - return swarm.Options{} -} - -func (fp *FakeProvisioner) Package(name string, action pkgaction.PackageAction) error { - return nil -} - -func (fp *FakeProvisioner) Hostname() (string, error) { - return "", nil -} - -func (fp *FakeProvisioner) SetHostname(hostname string) error { - return nil -} - -func (fp *FakeProvisioner) CompatibleWithHost() bool { - return true -} - -func (fp *FakeProvisioner) Provision(swarmOptions swarm.Options, authOptions auth.Options, engineOptions engine.Options) error { - return nil -} - -func (fp *FakeProvisioner) Service(name string, action serviceaction.ServiceAction) error { - return nil -} - -func (fp *FakeProvisioner) GetDriver() drivers.Driver { - return nil -} - -func (fp *FakeProvisioner) SetOsReleaseInfo(info *OsRelease) {} - -func (fp *FakeProvisioner) GetOsReleaseInfo() (*OsRelease, error) { - return nil, nil -} - -type NetstatProvisioner struct { - *FakeProvisioner -} - -func (p *NetstatProvisioner) SSHCommand(args string) (string, error) { - return `Active Internet connections (servers and established) -Proto Recv-Q Send-Q Local Address Foreign Address State -tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN -tcp 0 72 192.168.25.141:ssh 192.168.25.1:63235 ESTABLISHED -tcp 0 0 :::2376 :::* LISTEN -tcp 0 0 :::ssh :::* LISTEN -Active UNIX domain sockets (servers and established) -Proto RefCnt Flags Type State I-Node Path -unix 2 [ ACC ] STREAM LISTENING 17990 /var/run/acpid.socket -unix 2 [ ACC ] SEQPACKET LISTENING 14233 /run/udev/control -unix 2 [ ACC ] STREAM LISTENING 19365 /var/run/docker.sock -unix 3 [ ] STREAM CONNECTED 19774 -unix 3 [ ] STREAM CONNECTED 19775 -unix 3 [ ] DGRAM 14243 -unix 3 [ ] DGRAM 14242`, nil -} - -func NewNetstatProvisioner() Provisioner { - return &NetstatProvisioner{ - &FakeProvisioner{}, - } -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/fedora.go b/vendor/github.com/docker/machine/libmachine/provision/fedora.go deleted file mode 100644 index 71989c02..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/fedora.go +++ /dev/null @@ -1,25 +0,0 @@ -package provision - -import ( - "github.com/docker/machine/libmachine/drivers" -) - -func init() { - Register("Fedora", &RegisteredProvisioner{ - New: NewFedoraProvisioner, - }) -} - -func NewFedoraProvisioner(d drivers.Driver) Provisioner { - return &FedoraProvisioner{ - NewRedHatProvisioner("fedora", d), - } -} - -type FedoraProvisioner struct { - *RedHatProvisioner -} - -func (provisioner *FedoraProvisioner) String() string { - return "fedora" -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/fedora_test.go b/vendor/github.com/docker/machine/libmachine/provision/fedora_test.go deleted file mode 100644 index 41ac4700..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/fedora_test.go +++ /dev/null @@ -1,28 +0,0 @@ -package provision - -import ( - "regexp" - "testing" -) - -func TestFedoraGenerateYumRepoList(t *testing.T) { - info := &OsRelease{ - ID: "fedora", - } - p := NewFedoraProvisioner(nil) - p.SetOsReleaseInfo(info) - - buf, err := generateYumRepoList(p) - if err != nil { - t.Fatal(err) - } - - m, err := regexp.MatchString(".*fedora/23.*", buf.String()) - if err != nil { - t.Fatal(err) - } - - if !m { - t.Fatalf("expected match for fedora/23") - } -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/generic.go b/vendor/github.com/docker/machine/libmachine/provision/generic.go deleted file mode 100644 index 84fc173f..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/generic.go +++ /dev/null @@ -1,138 +0,0 @@ -package provision - -import ( - "bytes" - "fmt" - "text/template" - - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/swarm" -) - -type GenericProvisioner struct { - SSHCommander - OsReleaseID string - DockerOptionsDir string - DaemonOptionsFile string - Packages []string - OsReleaseInfo *OsRelease - Driver drivers.Driver - AuthOptions auth.Options - EngineOptions engine.Options - SwarmOptions swarm.Options -} - -type GenericSSHCommander struct { - Driver drivers.Driver -} - -func (sshCmder GenericSSHCommander) SSHCommand(args string) (string, error) { - return drivers.RunSSHCommandFromDriver(sshCmder.Driver, args) -} - -func (provisioner *GenericProvisioner) Hostname() (string, error) { - return provisioner.SSHCommand("hostname") -} - -func (provisioner *GenericProvisioner) SetHostname(hostname string) error { - if _, err := provisioner.SSHCommand(fmt.Sprintf( - "sudo hostname %s && echo %q | sudo tee /etc/hostname", - hostname, - hostname, - )); err != nil { - return err - } - - // ubuntu/debian use 127.0.1.1 for non "localhost" loopback hostnames: https://www.debian.org/doc/manuals/debian-reference/ch05.en.html#_the_hostname_resolution - if _, err := provisioner.SSHCommand(fmt.Sprintf(` - if ! grep -xq .*%s /etc/hosts; then - if grep -xq 127.0.1.1.* /etc/hosts; then - sudo sed -i 's/^127.0.1.1.*/127.0.1.1 %s/g' /etc/hosts; - else - echo '127.0.1.1 %s' | sudo tee -a /etc/hosts; - fi - fi`, - hostname, - hostname, - hostname, - )); err != nil { - return err - } - - return nil -} - -func (provisioner *GenericProvisioner) GetDockerOptionsDir() string { - return provisioner.DockerOptionsDir -} - -func (provisioner *GenericProvisioner) CompatibleWithHost() bool { - return provisioner.OsReleaseInfo.ID == provisioner.OsReleaseID -} - -func (provisioner *GenericProvisioner) GetAuthOptions() auth.Options { - return provisioner.AuthOptions -} - -func (provisioner *GenericProvisioner) GetSwarmOptions() swarm.Options { - return provisioner.SwarmOptions -} - -func (provisioner *GenericProvisioner) SetOsReleaseInfo(info *OsRelease) { - provisioner.OsReleaseInfo = info -} - -func (provisioner *GenericProvisioner) GetOsReleaseInfo() (*OsRelease, error) { - return provisioner.OsReleaseInfo, nil -} - -func (provisioner *GenericProvisioner) GenerateDockerOptions(dockerPort int) (*DockerOptions, error) { - var ( - engineCfg bytes.Buffer - ) - - driverNameLabel := fmt.Sprintf("provider=%s", provisioner.Driver.DriverName()) - provisioner.EngineOptions.Labels = append(provisioner.EngineOptions.Labels, driverNameLabel) - - engineConfigTmpl := ` -DOCKER_OPTS=' --H tcp://0.0.0.0:{{.DockerPort}} --H unix:///var/run/docker.sock ---storage-driver {{.EngineOptions.StorageDriver}} ---tlsverify ---tlscacert {{.AuthOptions.CaCertRemotePath}} ---tlscert {{.AuthOptions.ServerCertRemotePath}} ---tlskey {{.AuthOptions.ServerKeyRemotePath}} -{{ range .EngineOptions.Labels }}--label {{.}} -{{ end }}{{ range .EngineOptions.InsecureRegistry }}--insecure-registry {{.}} -{{ end }}{{ range .EngineOptions.RegistryMirror }}--registry-mirror {{.}} -{{ end }}{{ range .EngineOptions.ArbitraryFlags }}--{{.}} -{{ end }} -' -{{range .EngineOptions.Env}}export \"{{ printf "%q" . }}\" -{{end}} -` - t, err := template.New("engineConfig").Parse(engineConfigTmpl) - if err != nil { - return nil, err - } - - engineConfigContext := EngineConfigContext{ - DockerPort: dockerPort, - AuthOptions: provisioner.AuthOptions, - EngineOptions: provisioner.EngineOptions, - } - - t.Execute(&engineCfg, engineConfigContext) - - return &DockerOptions{ - EngineOptions: engineCfg.String(), - EngineOptionsPath: provisioner.DaemonOptionsFile, - }, nil -} - -func (provisioner *GenericProvisioner) GetDriver() drivers.Driver { - return provisioner.Driver -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/oraclelinux.go b/vendor/github.com/docker/machine/libmachine/provision/oraclelinux.go deleted file mode 100644 index 56d26374..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/oraclelinux.go +++ /dev/null @@ -1,25 +0,0 @@ -package provision - -import ( - "github.com/docker/machine/libmachine/drivers" -) - -func init() { - Register("OracleLinux", &RegisteredProvisioner{ - New: NewOracleLinuxProvisioner, - }) -} - -func NewOracleLinuxProvisioner(d drivers.Driver) Provisioner { - return &OracleLinuxProvisioner{ - NewRedHatProvisioner("ol", d), - } -} - -type OracleLinuxProvisioner struct { - *RedHatProvisioner -} - -func (provisioner *OracleLinuxProvisioner) String() string { - return "ol" -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/oraclelinux_test.go b/vendor/github.com/docker/machine/libmachine/provision/oraclelinux_test.go deleted file mode 100644 index 22ca69a9..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/oraclelinux_test.go +++ /dev/null @@ -1,29 +0,0 @@ -package provision - -import ( - "regexp" - "testing" -) - -func TestOracleLinuxGenerateYumRepoList(t *testing.T) { - info := &OsRelease{ - ID: "ol", - Version: "7.2", - } - p := NewOracleLinuxProvisioner(nil) - p.SetOsReleaseInfo(info) - - buf, err := generateYumRepoList(p) - if err != nil { - t.Fatal(err) - } - - m, err := regexp.MatchString(".*oraclelinux/7.*", buf.String()) - if err != nil { - t.Fatal(err) - } - - if !m { - t.Fatalf("expected match for oraclelinux/7") - } -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/os_release.go b/vendor/github.com/docker/machine/libmachine/provision/os_release.go deleted file mode 100644 index 4c3bdf2a..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/os_release.go +++ /dev/null @@ -1,91 +0,0 @@ -package provision - -import ( - "bufio" - "bytes" - "fmt" - "reflect" - "strings" - - "github.com/docker/machine/libmachine/log" -) - -// The /etc/os-release file contains operating system identification data -// See http://www.freedesktop.org/software/systemd/man/os-release.html for more details - -// OsRelease reflects values in /etc/os-release -// Values in this struct must always be string -// or the reflection will not work properly. -type OsRelease struct { - AnsiColor string `osr:"ANSI_COLOR"` - Name string `osr:"NAME"` - Version string `osr:"VERSION"` - Variant string `osr:"VARIANT"` - VariantID string `osr:"VARIANT_ID"` - ID string `osr:"ID"` - IDLike string `osr:"ID_LIKE"` - PrettyName string `osr:"PRETTY_NAME"` - VersionID string `osr:"VERSION_ID"` - HomeURL string `osr:"HOME_URL"` - SupportURL string `osr:"SUPPORT_URL"` - BugReportURL string `osr:"BUG_REPORT_URL"` -} - -func stripQuotes(val string) string { - if len(val) > 0 && val[0] == '"' { - return val[1 : len(val)-1] - } - return val -} - -func (osr *OsRelease) setIfPossible(key, val string) error { - v := reflect.ValueOf(osr).Elem() - for i := 0; i < v.NumField(); i++ { - fieldValue := v.Field(i) - fieldType := v.Type().Field(i) - originalName := fieldType.Tag.Get("osr") - if key == originalName && fieldValue.Kind() == reflect.String { - fieldValue.SetString(val) - return nil - } - } - return fmt.Errorf("Couldn't set key %s, no corresponding struct field found", key) -} - -func parseLine(osrLine string) (string, string, error) { - if osrLine == "" { - return "", "", nil - } - - vals := strings.Split(osrLine, "=") - if len(vals) != 2 { - return "", "", fmt.Errorf("Expected %s to split by '=' char into two strings, instead got %d strings", osrLine, len(vals)) - } - key := vals[0] - val := stripQuotes(vals[1]) - return key, val, nil -} - -func (osr *OsRelease) ParseOsRelease(osReleaseContents []byte) error { - r := bytes.NewReader(osReleaseContents) - scanner := bufio.NewScanner(r) - for scanner.Scan() { - key, val, err := parseLine(scanner.Text()) - if err != nil { - log.Warnf("Warning: got an invalid line error parsing /etc/os-release: %s", err) - continue - } - if err := osr.setIfPossible(key, val); err != nil { - log.Debug(err) - } - } - return nil -} - -func NewOsRelease(contents []byte) (*OsRelease, error) { - osr := &OsRelease{} - if err := osr.ParseOsRelease(contents); err != nil { - return nil, err - } - return osr, nil -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/os_release_test.go b/vendor/github.com/docker/machine/libmachine/provision/os_release_test.go deleted file mode 100644 index 87ffefd5..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/os_release_test.go +++ /dev/null @@ -1,211 +0,0 @@ -package provision - -import ( - "reflect" - "testing" -) - -func TestParseOsRelease(t *testing.T) { - // These example osr files stolen shamelessly from - // https://github.com/docker/docker/blob/master/pkg/parsers/operatingsystem/operatingsystem_test.go - // cheers @tiborvass - var ( - ubuntuTrusty = []byte(`NAME="Ubuntu" -VERSION="14.04, Trusty Tahr" -ID=ubuntu -ID_LIKE=debian -PRETTY_NAME="Ubuntu 14.04 LTS" -VERSION_ID="14.04" -HOME_URL="http://www.ubuntu.com/" -SUPPORT_URL="http://help.ubuntu.com/" -BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/" -`) - gentoo = []byte(`NAME=Gentoo -ID=gentoo -PRETTY_NAME="Gentoo/Linux" -ANSI_COLOR="1;32" -HOME_URL="http://www.gentoo.org/" -SUPPORT_URL="http://www.gentoo.org/main/en/support.xml" -BUG_REPORT_URL="https://bugs.gentoo.org/" -`) - noPrettyName = []byte(`NAME="Ubuntu" -VERSION="14.04, Trusty Tahr" -ID=ubuntu -ID_LIKE=debian -VERSION_ID="14.04" -HOME_URL="http://www.ubuntu.com/" -SUPPORT_URL="http://help.ubuntu.com/" -BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/" -`) - centos = []byte(`NAME="CentOS Linux" -VERSION="7 (Core)" -ID="centos" -ID_LIKE="rhel fedora" -VERSION_ID="7" -PRETTY_NAME="CentOS Linux 7 (Core)" -ANSI_COLOR="0;31" -HOME_URL="https://www.centos.org/" -BUG_REPORT_URL="https://bugs.centos.org/" -`) - fedora = []byte(`NAME=Fedora -VERSION="23 (Twenty Three)" -ID=fedora -VERSION_ID=23 -VARIANT="Server Edition" -VARIANT_ID=server -PRETTY_NAME="Fedora 23 (Twenty Three)" -ANSI_COLOR="0;34" -HOME_URL="https://fedoraproject.org/" -BUG_REPORT_URL="https://bugzilla.redhat.com/" -`) - ) - - osr, err := NewOsRelease(ubuntuTrusty) - if err != nil { - t.Fatalf("Unexpected error parsing os release: %s", err) - } - - expectedOsr := OsRelease{ - AnsiColor: "", - Name: "Ubuntu", - Version: "14.04, Trusty Tahr", - ID: "ubuntu", - IDLike: "debian", - PrettyName: "Ubuntu 14.04 LTS", - VersionID: "14.04", - HomeURL: "http://www.ubuntu.com/", - SupportURL: "http://help.ubuntu.com/", - BugReportURL: "http://bugs.launchpad.net/ubuntu/", - } - - if !reflect.DeepEqual(*osr, expectedOsr) { - t.Fatal("Error with ubuntu osr parsing: structs do not match") - } - - osr, err = NewOsRelease(gentoo) - if err != nil { - t.Fatalf("Unexpected error parsing os release: %s", err) - } - - expectedOsr = OsRelease{ - AnsiColor: "1;32", - Name: "Gentoo", - Version: "", - ID: "gentoo", - IDLike: "", - PrettyName: "Gentoo/Linux", - VersionID: "", - HomeURL: "http://www.gentoo.org/", - SupportURL: "http://www.gentoo.org/main/en/support.xml", - BugReportURL: "https://bugs.gentoo.org/", - } - - if !reflect.DeepEqual(*osr, expectedOsr) { - t.Fatal("Error with gentoo osr parsing: structs do not match") - } - - osr, err = NewOsRelease(noPrettyName) - if err != nil { - t.Fatalf("Unexpected error parsing os release: %s", err) - } - - expectedOsr = OsRelease{ - AnsiColor: "", - Name: "Ubuntu", - Version: "14.04, Trusty Tahr", - ID: "ubuntu", - IDLike: "debian", - PrettyName: "", - VersionID: "14.04", - HomeURL: "http://www.ubuntu.com/", - SupportURL: "http://help.ubuntu.com/", - BugReportURL: "http://bugs.launchpad.net/ubuntu/", - } - - if !reflect.DeepEqual(*osr, expectedOsr) { - t.Fatal("Error with noPrettyName osr parsing: structs do not match") - } - - osr, err = NewOsRelease(centos) - if err != nil { - t.Fatalf("Unexpected error parsing os release: %s", err) - } - - expectedOsr = OsRelease{ - Name: "CentOS Linux", - Version: "7 (Core)", - ID: "centos", - IDLike: "rhel fedora", - PrettyName: "CentOS Linux 7 (Core)", - AnsiColor: "0;31", - VersionID: "7", - HomeURL: "https://www.centos.org/", - BugReportURL: "https://bugs.centos.org/", - } - - if !reflect.DeepEqual(*osr, expectedOsr) { - t.Fatal("Error with centos osr parsing: structs do not match") - } - - osr, err = NewOsRelease(fedora) - if err != nil { - t.Fatalf("Unexpected error parsing os release: %s", err) - } - - expectedOsr = OsRelease{ - Name: "Fedora", - Version: "23 (Twenty Three)", - ID: "fedora", - PrettyName: "Fedora 23 (Twenty Three)", - Variant: "Server Edition", - VariantID: "server", - AnsiColor: "0;34", - VersionID: "23", - HomeURL: "https://fedoraproject.org/", - BugReportURL: "https://bugzilla.redhat.com/", - } - - if !reflect.DeepEqual(*osr, expectedOsr) { - t.Fatal("Error with fedora osr parsing: structs do not match") - } -} - -func TestParseLine(t *testing.T) { - var ( - withQuotes = "ID=\"ubuntu\"" - withoutQuotes = "ID=gentoo" - wtf = "LOTS=OF=EQUALS" - blank = "" - ) - - key, val, err := parseLine(withQuotes) - if key != "ID" { - t.Fatalf("Expected ID, got %s", key) - } - if val != "ubuntu" { - t.Fatalf("Expected ubuntu, got %s", val) - } - if err != nil { - t.Fatalf("Got error on parseLine with quotes: %s", err) - } - key, val, err = parseLine(withoutQuotes) - if key != "ID" { - t.Fatalf("Expected ID, got %s", key) - } - if val != "gentoo" { - t.Fatalf("Expected gentoo, got %s", val) - } - if err != nil { - t.Fatalf("Got error on parseLine without quotes: %s", err) - } - key, val, err = parseLine(wtf) - if err == nil { - t.Fatal("Expected to get an error on parseLine, got nil") - } - key, val, err = parseLine(blank) - if key != "" || val != "" { - t.Fatalf("Expected empty response on parseLine, got key: %s val: %s", key, val) - } else if err != nil { - t.Fatalf("Expected nil err response on parseLine, got %s", err) - } -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/pkgaction/pkg_action.go b/vendor/github.com/docker/machine/libmachine/provision/pkgaction/pkg_action.go deleted file mode 100644 index 643a9332..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/pkgaction/pkg_action.go +++ /dev/null @@ -1,23 +0,0 @@ -package pkgaction - -type PackageAction int - -const ( - Install PackageAction = iota - Remove - Upgrade -) - -var packageActions = []string{ - "install", - "remove", - "upgrade", -} - -func (s PackageAction) String() string { - if int(s) >= 0 && int(s) < len(packageActions) { - return packageActions[s] - } - - return "" -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/pkgaction/pkg_action_test.go b/vendor/github.com/docker/machine/libmachine/provision/pkgaction/pkg_action_test.go deleted file mode 100644 index 3ca8f284..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/pkgaction/pkg_action_test.go +++ /dev/null @@ -1,9 +0,0 @@ -package pkgaction - -import "testing" - -func TestActionValue(t *testing.T) { - if Install.String() != "install" { - t.Fatalf("Expected %q but got %q", "install", Install.String()) - } -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/provisioner.go b/vendor/github.com/docker/machine/libmachine/provision/provisioner.go deleted file mode 100644 index 81e005a0..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/provisioner.go +++ /dev/null @@ -1,128 +0,0 @@ -package provision - -import ( - "fmt" - - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/provision/pkgaction" - "github.com/docker/machine/libmachine/provision/serviceaction" - "github.com/docker/machine/libmachine/swarm" -) - -var ( - provisioners = make(map[string]*RegisteredProvisioner) - detector Detector = &StandardDetector{} -) - -type SSHCommander interface { - // Short-hand for accessing an SSH command from the driver. - SSHCommand(args string) (string, error) -} - -type Detector interface { - DetectProvisioner(d drivers.Driver) (Provisioner, error) -} - -type StandardDetector struct{} - -func SetDetector(newDetector Detector) { - detector = newDetector -} - -// Provisioner defines distribution specific actions -type Provisioner interface { - fmt.Stringer - SSHCommander - - // Create the files for the daemon to consume configuration settings (return struct of content and path) - GenerateDockerOptions(dockerPort int) (*DockerOptions, error) - - // Get the directory where the settings files for docker are to be found - GetDockerOptionsDir() string - - // Return the auth options used to configure remote connection for the daemon. - GetAuthOptions() auth.Options - - // Get the swarm options associated with this host. - GetSwarmOptions() swarm.Options - - // Run a package action e.g. install - Package(name string, action pkgaction.PackageAction) error - - // Get Hostname - Hostname() (string, error) - - // Set hostname - SetHostname(hostname string) error - - // Figure out if this is the right provisioner to use based on /etc/os-release info - CompatibleWithHost() bool - - // Do the actual provisioning piece: - // 1. Set the hostname on the instance. - // 2. Install Docker if it is not present. - // 3. Configure the daemon to accept connections over TLS. - // 4. Copy the needed certificates to the server and local config dir. - // 5. Configure / activate swarm if applicable. - Provision(swarmOptions swarm.Options, authOptions auth.Options, engineOptions engine.Options) error - - // Perform action on a named service e.g. stop - Service(name string, action serviceaction.ServiceAction) error - - // Get the driver which is contained in the provisioner. - GetDriver() drivers.Driver - - // Set the OS Release info depending on how it's represented - // internally - SetOsReleaseInfo(info *OsRelease) - - // Get the OS Release info for the current provisioner - GetOsReleaseInfo() (*OsRelease, error) -} - -// RegisteredProvisioner creates a new provisioner -type RegisteredProvisioner struct { - New func(d drivers.Driver) Provisioner -} - -func Register(name string, p *RegisteredProvisioner) { - provisioners[name] = p -} - -func DetectProvisioner(d drivers.Driver) (Provisioner, error) { - return detector.DetectProvisioner(d) -} - -func (detector StandardDetector) DetectProvisioner(d drivers.Driver) (Provisioner, error) { - log.Info("Waiting for SSH to be available...") - if err := drivers.WaitForSSH(d); err != nil { - return nil, err - } - - log.Info("Detecting the provisioner...") - - osReleaseOut, err := drivers.RunSSHCommandFromDriver(d, "cat /etc/os-release") - if err != nil { - return nil, fmt.Errorf("Error getting SSH command: %s", err) - } - - osReleaseInfo, err := NewOsRelease([]byte(osReleaseOut)) - if err != nil { - return nil, fmt.Errorf("Error parsing /etc/os-release file: %s", err) - } - - for _, p := range provisioners { - provisioner := p.New(d) - provisioner.SetOsReleaseInfo(osReleaseInfo) - - if provisioner.CompatibleWithHost() { - log.Debugf("found compatible host: %s", osReleaseInfo.ID) - return provisioner, nil - } - } - - return nil, ErrDetectionFailed -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/provisiontest/sshcommander.go b/vendor/github.com/docker/machine/libmachine/provision/provisiontest/sshcommander.go deleted file mode 100644 index 3f9f8b71..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/provisiontest/sshcommander.go +++ /dev/null @@ -1,39 +0,0 @@ -//Package provisiontest provides utilities for testing provisioners -package provisiontest - -import "errors" - -//FakeSSHCommanderOptions is intended to create a FakeSSHCommander without actually knowing the underlying sshcommands by passing it to NewSSHCommander -type FakeSSHCommanderOptions struct { - //Result of the ssh command to look up the FilesystemType - FilesystemType string -} - -//FakeSSHCommander is an implementation of provision.SSHCommander to provide predictable responses set by testing code -//Extend it when needed -type FakeSSHCommander struct { - Responses map[string]string -} - -//NewFakeSSHCommander creates a FakeSSHCommander without actually knowing the underlying sshcommands -func NewFakeSSHCommander(options FakeSSHCommanderOptions) *FakeSSHCommander { - if options.FilesystemType == "" { - options.FilesystemType = "ext4" - } - sshCmder := &FakeSSHCommander{ - Responses: map[string]string{ - "stat -f -c %T /var/lib": options.FilesystemType + "\n", - }, - } - - return sshCmder -} - -//SSHCommand is an implementation of provision.SSHCommander.SSHCommand to provide predictable responses set by testing code -func (sshCmder *FakeSSHCommander) SSHCommand(args string) (string, error) { - response, commandRegistered := sshCmder.Responses[args] - if !commandRegistered { - return "", errors.New("Command not registered in FakeSSHCommander") - } - return response, nil -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/provisiontest/sshcommander_test.go b/vendor/github.com/docker/machine/libmachine/provision/provisiontest/sshcommander_test.go deleted file mode 100644 index 037a454a..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/provisiontest/sshcommander_test.go +++ /dev/null @@ -1,28 +0,0 @@ -package provisiontest - -import ( - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestCreateFakeSSHCommander(t *testing.T) { - sshCmder := NewFakeSSHCommander(FakeSSHCommanderOptions{FilesystemType: "btrfs"}) - output, err := sshCmder.SSHCommand("stat -f -c %T /var/lib") - if err != nil || output != "btrfs\n" { - t.Fatal("FakeSSHCommander should have returned btrfs and no error but returned '", output, "' and error", err) - } -} - -func TestStatSSHCommand(t *testing.T) { - sshCmder := FakeSSHCommander{ - Responses: map[string]string{"sshcommand": "sshcommandresponse"}, - } - - output, err := sshCmder.SSHCommand("sshcommand") - assert.NoError(t, err) - assert.Equal(t, "sshcommandresponse", output) - - output, err = sshCmder.SSHCommand("errorcommand") - assert.Error(t, err) -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/rancheros.go b/vendor/github.com/docker/machine/libmachine/provision/rancheros.go deleted file mode 100644 index 1ff47853..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/rancheros.go +++ /dev/null @@ -1,233 +0,0 @@ -package provision - -import ( - "bufio" - "fmt" - "net/http" - "strings" - - "github.com/docker/machine/commands/mcndirs" - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnutils" - "github.com/docker/machine/libmachine/provision/pkgaction" - "github.com/docker/machine/libmachine/provision/serviceaction" - "github.com/docker/machine/libmachine/state" - "github.com/docker/machine/libmachine/swarm" -) - -const ( - versionsURL = "http://releases.rancher.com/os/versions.yml" - isoURL = "https://github.com/rancherio/os/releases/download/%s/machine-rancheros.iso" - hostnameTmpl = `sudo mkdir -p /var/lib/rancher/conf/cloud-config.d/ -sudo tee /var/lib/rancher/conf/cloud-config.d/machine-hostname.yml << EOF -#cloud-config - -hostname: %s -EOF -` -) - -func init() { - Register("RancherOS", &RegisteredProvisioner{ - New: NewRancherProvisioner, - }) -} - -func NewRancherProvisioner(d drivers.Driver) Provisioner { - return &RancherProvisioner{ - GenericProvisioner{ - SSHCommander: GenericSSHCommander{Driver: d}, - DockerOptionsDir: "/var/lib/rancher/conf", - DaemonOptionsFile: "/var/lib/rancher/conf/docker", - OsReleaseID: "rancheros", - Driver: d, - }, - } -} - -type RancherProvisioner struct { - GenericProvisioner -} - -func (provisioner *RancherProvisioner) String() string { - return "rancheros" -} - -func (provisioner *RancherProvisioner) Service(name string, action serviceaction.ServiceAction) error { - command := fmt.Sprintf("sudo system-docker %s %s", action.String(), name) - - if _, err := provisioner.SSHCommand(command); err != nil { - return err - } - - return nil -} - -func (provisioner *RancherProvisioner) Package(name string, action pkgaction.PackageAction) error { - var packageAction string - - if name == "docker" && action == pkgaction.Upgrade { - return provisioner.upgrade() - } - - switch action { - case pkgaction.Install: - packageAction = "enabled" - case pkgaction.Remove: - packageAction = "disable" - case pkgaction.Upgrade: - // TODO: support upgrade - packageAction = "upgrade" - } - - command := fmt.Sprintf("sudo rancherctl service %s %s", packageAction, name) - - if _, err := provisioner.SSHCommand(command); err != nil { - return err - } - - return nil -} - -func (provisioner *RancherProvisioner) Provision(swarmOptions swarm.Options, authOptions auth.Options, engineOptions engine.Options) error { - provisioner.SwarmOptions = swarmOptions - provisioner.AuthOptions = authOptions - provisioner.EngineOptions = engineOptions - swarmOptions.Env = engineOptions.Env - - if provisioner.EngineOptions.StorageDriver == "" { - provisioner.EngineOptions.StorageDriver = "overlay" - } else if provisioner.EngineOptions.StorageDriver != "overlay" { - return fmt.Errorf("Unsupported storage driver: %s", provisioner.EngineOptions.StorageDriver) - } - - log.Debugf("Setting hostname %s", provisioner.Driver.GetMachineName()) - if err := provisioner.SetHostname(provisioner.Driver.GetMachineName()); err != nil { - return err - } - - for _, pkg := range provisioner.Packages { - log.Debugf("Installing package %s", pkg) - if err := provisioner.Package(pkg, pkgaction.Install); err != nil { - return err - } - } - - log.Debugf("Preparing certificates") - provisioner.AuthOptions = setRemoteAuthOptions(provisioner) - - log.Debugf("Setting up certificates") - if err := ConfigureAuth(provisioner); err != nil { - return err - } - - log.Debugf("Configuring swarm") - if err := configureSwarm(provisioner, swarmOptions, provisioner.AuthOptions); err != nil { - return err - } - - return nil -} - -func (provisioner *RancherProvisioner) SetHostname(hostname string) error { - // /etc/hosts is bind mounted from Docker, this is hack to that the generic provisioner doesn't try to mv /etc/hosts - if _, err := provisioner.SSHCommand("sed /127.0.1.1/d /etc/hosts > /tmp/hosts && cat /tmp/hosts | sudo tee /etc/hosts"); err != nil { - return err - } - - if err := provisioner.GenericProvisioner.SetHostname(hostname); err != nil { - return err - } - - if _, err := provisioner.SSHCommand(fmt.Sprintf(hostnameTmpl, hostname)); err != nil { - return err - } - - return nil -} - -func (provisioner *RancherProvisioner) upgrade() error { - switch provisioner.Driver.DriverName() { - case "virtualbox": - return provisioner.upgradeIso() - default: - log.Infof("Running upgrade") - if _, err := provisioner.SSHCommand("sudo rancherctl os upgrade -f --no-reboot"); err != nil { - return err - } - - log.Infof("Upgrade succeeded, rebooting") - // ignore errors here because the SSH connection will close - provisioner.SSHCommand("sudo reboot") - - return nil - } -} - -func (provisioner *RancherProvisioner) upgradeIso() error { - // Largely copied from Boot2Docker provisioner, we should find a way to share this code - log.Info("Stopping machine to do the upgrade...") - - if err := provisioner.Driver.Stop(); err != nil { - return err - } - - if err := mcnutils.WaitFor(drivers.MachineInState(provisioner.Driver, state.Stopped)); err != nil { - return err - } - - machineName := provisioner.GetDriver().GetMachineName() - - log.Infof("Upgrading machine %s...", machineName) - - // TODO: Ideally, we should not read from mcndirs directory at all. - // The driver should be able to communicate how and where to place the - // relevant files. - b2dutils := mcnutils.NewB2dUtils(mcndirs.GetBaseDir()) - - url, err := provisioner.getLatestISOURL() - if err != nil { - return err - } - - if err := b2dutils.DownloadISOFromURL(url); err != nil { - return err - } - - // Copy the latest version of boot2docker ISO to the machine's directory - if err := b2dutils.CopyIsoToMachineDir("", machineName); err != nil { - return err - } - - log.Infof("Starting machine back up...") - - if err := provisioner.Driver.Start(); err != nil { - return err - } - - return mcnutils.WaitFor(drivers.MachineInState(provisioner.Driver, state.Running)) -} - -func (provisioner *RancherProvisioner) getLatestISOURL() (string, error) { - log.Debugf("Reading %s", versionsURL) - resp, err := http.Get(versionsURL) - if err != nil { - return "", err - } - defer resp.Body.Close() - - // Don't want to pull in yaml parser, we'll do this manually - scanner := bufio.NewScanner(resp.Body) - for scanner.Scan() { - line := scanner.Text() - if strings.HasPrefix(line, "current: ") { - log.Debugf("Found %s", line) - return fmt.Sprintf(isoURL, strings.Split(line, ":")[2]), err - } - } - - return "", fmt.Errorf("Failed to find current version") -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/redhat.go b/vendor/github.com/docker/machine/libmachine/provision/redhat.go deleted file mode 100644 index 1b10d02e..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/redhat.go +++ /dev/null @@ -1,298 +0,0 @@ -package provision - -import ( - "bytes" - "errors" - "fmt" - "regexp" - "text/template" - - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnutils" - "github.com/docker/machine/libmachine/provision/pkgaction" - "github.com/docker/machine/libmachine/provision/serviceaction" - "github.com/docker/machine/libmachine/swarm" -) - -var ( - ErrUnknownYumOsRelease = errors.New("unknown OS for Yum repository") - - packageListTemplate = `[docker] -name=Docker Stable Repository -baseurl=https://yum.dockerproject.org/repo/main/{{.OsRelease}}/{{.OsReleaseVersion}} -priority=1 -enabled=1 -gpgkey=https://yum.dockerproject.org/gpg -` - engineConfigTemplate = `[Unit] -Description=Docker Application Container Engine -After=network.target - -[Service] -Type=notify -ExecStart=/usr/bin/docker daemon -H tcp://0.0.0.0:{{.DockerPort}} -H unix:///var/run/docker.sock --storage-driver {{.EngineOptions.StorageDriver}} --tlsverify --tlscacert {{.AuthOptions.CaCertRemotePath}} --tlscert {{.AuthOptions.ServerCertRemotePath}} --tlskey {{.AuthOptions.ServerKeyRemotePath}} {{ range .EngineOptions.Labels }}--label {{.}} {{ end }}{{ range .EngineOptions.InsecureRegistry }}--insecure-registry {{.}} {{ end }}{{ range .EngineOptions.RegistryMirror }}--registry-mirror {{.}} {{ end }}{{ range .EngineOptions.ArbitraryFlags }}--{{.}} {{ end }} -ExecReload=/bin/kill -s HUP $MAINPID -MountFlags=slave -LimitNOFILE=infinity -LimitNPROC=infinity -LimitCORE=infinity -TimeoutStartSec=0 -Delegate=yes -KillMode=process -Environment={{range .EngineOptions.Env}}{{ printf "%q" . }} {{end}} - -[Install] -WantedBy=multi-user.target -` - - majorVersionRE = regexp.MustCompile(`^(\d+)(\..*)?`) -) - -type PackageListInfo struct { - OsRelease string - OsReleaseVersion string -} - -func init() { - Register("RedHat", &RegisteredProvisioner{ - New: func(d drivers.Driver) Provisioner { - return NewRedHatProvisioner("rhel", d) - }, - }) -} - -func NewRedHatProvisioner(osReleaseID string, d drivers.Driver) *RedHatProvisioner { - systemdProvisioner := NewSystemdProvisioner(osReleaseID, d) - systemdProvisioner.SSHCommander = RedHatSSHCommander{Driver: d} - return &RedHatProvisioner{ - systemdProvisioner, - } -} - -type RedHatProvisioner struct { - SystemdProvisioner -} - -func (provisioner *RedHatProvisioner) String() string { - return "redhat" -} - -func (provisioner *RedHatProvisioner) SetHostname(hostname string) error { - // we have to have SetHostname here as well to use the RedHat provisioner - // SSHCommand to add the tty allocation - if _, err := provisioner.SSHCommand(fmt.Sprintf( - "sudo hostname %s && echo %q | sudo tee /etc/hostname", - hostname, - hostname, - )); err != nil { - return err - } - - // ubuntu/debian use 127.0.1.1 for non "localhost" loopback hostnames: https://www.debian.org/doc/manuals/debian-reference/ch05.en.html#_the_hostname_resolution - if _, err := provisioner.SSHCommand(fmt.Sprintf( - "if grep -xq 127.0.1.1.* /etc/hosts; then sudo sed -i 's/^127.0.1.1.*/127.0.1.1 %s/g' /etc/hosts; else echo '127.0.1.1 %s' | sudo tee -a /etc/hosts; fi", - hostname, - hostname, - )); err != nil { - return err - } - - return nil -} - -func (provisioner *RedHatProvisioner) Package(name string, action pkgaction.PackageAction) error { - var packageAction string - - switch action { - case pkgaction.Install: - packageAction = "install" - case pkgaction.Remove: - packageAction = "remove" - case pkgaction.Upgrade: - packageAction = "upgrade" - } - - command := fmt.Sprintf("sudo -E yum %s -y %s", packageAction, name) - - if _, err := provisioner.SSHCommand(command); err != nil { - return err - } - - return nil -} - -func installDocker(provisioner *RedHatProvisioner) error { - if err := installDockerGeneric(provisioner, provisioner.EngineOptions.InstallURL); err != nil { - return err - } - - if err := provisioner.Service("docker", serviceaction.Restart); err != nil { - return err - } - - if err := provisioner.Service("docker", serviceaction.Enable); err != nil { - return err - } - - return nil -} - -func (provisioner *RedHatProvisioner) dockerDaemonResponding() bool { - log.Debug("checking docker daemon") - - if out, err := provisioner.SSHCommand("sudo docker version"); err != nil { - log.Warnf("Error getting SSH command to check if the daemon is up: %s", err) - log.Debugf("'sudo docker version' output:\n%s", out) - return false - } - - // The daemon is up if the command worked. Carry on. - return true -} - -func (provisioner *RedHatProvisioner) Provision(swarmOptions swarm.Options, authOptions auth.Options, engineOptions engine.Options) error { - provisioner.SwarmOptions = swarmOptions - provisioner.AuthOptions = authOptions - provisioner.EngineOptions = engineOptions - swarmOptions.Env = engineOptions.Env - - // set default storage driver for redhat - storageDriver, err := decideStorageDriver(provisioner, "devicemapper", engineOptions.StorageDriver) - if err != nil { - return err - } - provisioner.EngineOptions.StorageDriver = storageDriver - - if err := provisioner.SetHostname(provisioner.Driver.GetMachineName()); err != nil { - return err - } - - for _, pkg := range provisioner.Packages { - log.Debugf("installing base package: name=%s", pkg) - if err := provisioner.Package(pkg, pkgaction.Install); err != nil { - return err - } - } - - // update OS -- this is needed for libdevicemapper and the docker install - if _, err := provisioner.SSHCommand("sudo -E yum -y update"); err != nil { - return err - } - - // install docker - if err := installDocker(provisioner); err != nil { - return err - } - - if err := mcnutils.WaitFor(provisioner.dockerDaemonResponding); err != nil { - return err - } - - if err := makeDockerOptionsDir(provisioner); err != nil { - return err - } - - provisioner.AuthOptions = setRemoteAuthOptions(provisioner) - - if err := ConfigureAuth(provisioner); err != nil { - return err - } - - if err := configureSwarm(provisioner, swarmOptions, provisioner.AuthOptions); err != nil { - return err - } - - return nil -} - -func (provisioner *RedHatProvisioner) GenerateDockerOptions(dockerPort int) (*DockerOptions, error) { - var ( - engineCfg bytes.Buffer - configPath = provisioner.DaemonOptionsFile - ) - - driverNameLabel := fmt.Sprintf("provider=%s", provisioner.Driver.DriverName()) - provisioner.EngineOptions.Labels = append(provisioner.EngineOptions.Labels, driverNameLabel) - - // systemd / redhat will not load options if they are on newlines - // instead, it just continues with a different set of options; yeah... - t, err := template.New("engineConfig").Parse(engineConfigTemplate) - if err != nil { - return nil, err - } - - engineConfigContext := EngineConfigContext{ - DockerPort: dockerPort, - AuthOptions: provisioner.AuthOptions, - EngineOptions: provisioner.EngineOptions, - DockerOptionsDir: provisioner.DockerOptionsDir, - } - - t.Execute(&engineCfg, engineConfigContext) - - daemonOptsDir := configPath - return &DockerOptions{ - EngineOptions: engineCfg.String(), - EngineOptionsPath: daemonOptsDir, - }, nil -} - -func generateYumRepoList(provisioner Provisioner) (*bytes.Buffer, error) { - packageListInfo := &PackageListInfo{} - - releaseInfo, err := provisioner.GetOsReleaseInfo() - if err != nil { - return nil, err - } - - switch releaseInfo.ID { - case "rhel", "centos": - // rhel and centos both use the "centos" repo - packageListInfo.OsRelease = "centos" - packageListInfo.OsReleaseVersion = "7" - case "fedora": - packageListInfo.OsRelease = "fedora" - packageListInfo.OsReleaseVersion = "23" - case "ol": - packageListInfo.OsRelease = "oraclelinux" - v := majorVersionRE.FindStringSubmatch(releaseInfo.Version) - if v == nil { - return nil, fmt.Errorf("unable to determine major version of %s", releaseInfo.Version) - } - packageListInfo.OsReleaseVersion = v[1] - default: - return nil, ErrUnknownYumOsRelease - } - - t, err := template.New("packageList").Parse(packageListTemplate) - if err != nil { - return nil, err - } - - var buf bytes.Buffer - - if err := t.Execute(&buf, packageListInfo); err != nil { - return nil, err - } - - return &buf, nil -} - -func (provisioner *RedHatProvisioner) ConfigurePackageList() error { - buf, err := generateYumRepoList(provisioner) - if err != nil { - return err - } - - // we cannot use %q here as it combines the newlines in the formatting - // on transport causing yum to not use the repo - packageCmd := fmt.Sprintf("echo \"%s\" | sudo tee /etc/yum.repos.d/docker.repo", buf.String()) - if _, err := provisioner.SSHCommand(packageCmd); err != nil { - return err - } - - return nil -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/redhat_ssh_commander.go b/vendor/github.com/docker/machine/libmachine/provision/redhat_ssh_commander.go deleted file mode 100644 index 04b52442..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/redhat_ssh_commander.go +++ /dev/null @@ -1,46 +0,0 @@ -package provision - -import ( - "fmt" - - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/ssh" -) - -type RedHatSSHCommander struct { - Driver drivers.Driver -} - -func (sshCmder RedHatSSHCommander) SSHCommand(args string) (string, error) { - client, err := drivers.GetSSHClientFromDriver(sshCmder.Driver) - if err != nil { - return "", err - } - - log.Debugf("About to run SSH command:\n%s", args) - - // redhat needs "-t" for tty allocation on ssh therefore we check for the - // external client and add as needed. - // Note: CentOS 7.0 needs multiple "-tt" to force tty allocation when ssh has - // no local tty. - var output string - switch c := client.(type) { - case *ssh.ExternalClient: - c.BaseArgs = append(c.BaseArgs, "-tt") - output, err = c.Output(args) - case *ssh.NativeClient: - output, err = c.OutputWithPty(args) - } - - log.Debugf("SSH cmd err, output: %v: %s", err, output) - if err != nil { - return "", fmt.Errorf(`Something went wrong running an SSH command! -command : %s -err : %v -output : %s -`, args, err, output) - } - - return output, nil -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/redhat_test.go b/vendor/github.com/docker/machine/libmachine/provision/redhat_test.go deleted file mode 100644 index c1f0fab8..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/redhat_test.go +++ /dev/null @@ -1,43 +0,0 @@ -package provision - -import ( - "regexp" - "testing" - - "github.com/docker/machine/drivers/fakedriver" - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/provision/provisiontest" - "github.com/docker/machine/libmachine/swarm" -) - -func TestRedHatGenerateYumRepoList(t *testing.T) { - info := &OsRelease{ - ID: "rhel", - } - p := NewRedHatProvisioner("rhel", nil) - p.SetOsReleaseInfo(info) - - buf, err := generateYumRepoList(p) - if err != nil { - t.Fatal(err) - } - - m, err := regexp.MatchString(".*centos/7.*", buf.String()) - if err != nil { - t.Fatal(err) - } - - if !m { - t.Fatalf("expected match for centos/7") - } -} - -func TestRedHatDefaultStorageDriver(t *testing.T) { - p := NewRedHatProvisioner("", &fakedriver.Driver{}) - p.SSHCommander = provisiontest.NewFakeSSHCommander(provisiontest.FakeSSHCommanderOptions{}) - p.Provision(swarm.Options{}, auth.Options{}, engine.Options{}) - if p.EngineOptions.StorageDriver != "devicemapper" { - t.Fatal("Default storage driver should be devicemapper") - } -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/serviceaction/service_action.go b/vendor/github.com/docker/machine/libmachine/provision/serviceaction/service_action.go deleted file mode 100644 index b2e22e59..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/serviceaction/service_action.go +++ /dev/null @@ -1,29 +0,0 @@ -package serviceaction - -type ServiceAction int - -const ( - Restart ServiceAction = iota - Start - Stop - Enable - Disable - DaemonReload -) - -var serviceActions = []string{ - "restart", - "start", - "stop", - "enable", - "disable", - "daemon-reload", -} - -func (s ServiceAction) String() string { - if int(s) >= 0 && int(s) < len(serviceActions) { - return serviceActions[s] - } - - return "" -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/serviceaction/service_action_test.go b/vendor/github.com/docker/machine/libmachine/provision/serviceaction/service_action_test.go deleted file mode 100644 index b2072a5f..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/serviceaction/service_action_test.go +++ /dev/null @@ -1,9 +0,0 @@ -package serviceaction - -import "testing" - -func TestActionValue(t *testing.T) { - if Restart.String() != "restart" { - t.Fatalf("Expected %s but got %s", "install", Restart.String()) - } -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/suse.go b/vendor/github.com/docker/machine/libmachine/provision/suse.go deleted file mode 100644 index ae8286d5..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/suse.go +++ /dev/null @@ -1,240 +0,0 @@ -package provision - -import ( - "bytes" - "fmt" - "text/template" - - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnutils" - "github.com/docker/machine/libmachine/provision/pkgaction" - "github.com/docker/machine/libmachine/provision/serviceaction" - "github.com/docker/machine/libmachine/swarm" -) - -func init() { - Register("openSUSE", &RegisteredProvisioner{ - New: NewOpenSUSEProvisioner, - }) - Register("SUSE Linux Enterprise Desktop", &RegisteredProvisioner{ - New: NewSLEDProvisioner, - }) - Register("SUSE Linux Enterprise Server", &RegisteredProvisioner{ - New: NewSLESProvisioner, - }) -} - -func NewOpenSUSEProvisioner(d drivers.Driver) Provisioner { - return &SUSEProvisioner{ - GenericProvisioner{ - SSHCommander: GenericSSHCommander{Driver: d}, - DockerOptionsDir: "/etc/docker", - DaemonOptionsFile: "/etc/sysconfig/docker", - OsReleaseID: "opensuse", - Packages: []string{ - "curl", - }, - Driver: d, - }, - } -} - -func NewSLEDProvisioner(d drivers.Driver) Provisioner { - return &SUSEProvisioner{ - GenericProvisioner{ - SSHCommander: GenericSSHCommander{Driver: d}, - DockerOptionsDir: "/etc/docker", - DaemonOptionsFile: "/etc/sysconfig/docker", - OsReleaseID: "sled", - Packages: []string{ - "curl", - }, - Driver: d, - }, - } -} - -func NewSLESProvisioner(d drivers.Driver) Provisioner { - return &SUSEProvisioner{ - GenericProvisioner{ - SSHCommander: GenericSSHCommander{Driver: d}, - DockerOptionsDir: "/etc/docker", - DaemonOptionsFile: "/etc/sysconfig/docker", - OsReleaseID: "sles", - Packages: []string{ - "curl", - }, - Driver: d, - }, - } -} - -type SUSEProvisioner struct { - GenericProvisioner -} - -func (provisioner *SUSEProvisioner) String() string { - return "suse" -} - -func (provisioner *SUSEProvisioner) Service(name string, action serviceaction.ServiceAction) error { - reloadDaemon := false - switch action { - case serviceaction.Start, serviceaction.Restart: - reloadDaemon = true - } - - // systemd needs reloaded when config changes on disk; we cannot - // be sure exactly when it changes from the provisioner so - // we call a reload on every restart to be safe - if reloadDaemon { - if _, err := provisioner.SSHCommand("sudo systemctl daemon-reload"); err != nil { - return err - } - } - - command := fmt.Sprintf("sudo systemctl %s %s", action.String(), name) - - if _, err := provisioner.SSHCommand(command); err != nil { - return err - } - - return nil -} - -func (provisioner *SUSEProvisioner) Package(name string, action pkgaction.PackageAction) error { - var packageAction string - - switch action { - case pkgaction.Install: - packageAction = "install" - case pkgaction.Remove: - packageAction = "remove" - case pkgaction.Upgrade: - packageAction = "upgrade" - } - - command := fmt.Sprintf("sudo -E zypper -n %s %s", packageAction, name) - - if _, err := provisioner.SSHCommand(command); err != nil { - return err - } - - return nil -} - -func (provisioner *SUSEProvisioner) dockerDaemonResponding() bool { - log.Debug("checking docker daemon") - - if out, err := provisioner.SSHCommand("sudo docker version"); err != nil { - log.Warnf("Error getting SSH command to check if the daemon is up: %s", err) - log.Debugf("'sudo docker version' output:\n%s", out) - return false - } - - // The daemon is up if the command worked. Carry on. - return true -} - -func (provisioner *SUSEProvisioner) Provision(swarmOptions swarm.Options, authOptions auth.Options, engineOptions engine.Options) error { - provisioner.SwarmOptions = swarmOptions - provisioner.AuthOptions = authOptions - provisioner.EngineOptions = engineOptions - swarmOptions.Env = engineOptions.Env - - if err := provisioner.SetHostname(provisioner.Driver.GetMachineName()); err != nil { - return err - } - - for _, pkg := range provisioner.Packages { - if err := provisioner.Package(pkg, pkgaction.Install); err != nil { - return err - } - } - - // update OS -- this is needed for libdevicemapper and the docker install - if _, err := provisioner.SSHCommand("sudo zypper ref"); err != nil { - return err - } - if _, err := provisioner.SSHCommand("sudo zypper -n update"); err != nil { - return err - } - - if err := installDockerGeneric(provisioner, engineOptions.InstallURL); err != nil { - return err - } - - if _, err := provisioner.SSHCommand("sudo systemctl start docker"); err != nil { - return err - } - - if err := mcnutils.WaitFor(provisioner.dockerDaemonResponding); err != nil { - return err - } - - if _, err := provisioner.SSHCommand("sudo systemctl stop docker"); err != nil { - return err - } - - // open firewall port required by docker - if _, err := provisioner.SSHCommand("sudo /sbin/yast2 firewall services add ipprotocol=tcp tcpport=2376 zone=EXT"); err != nil { - return err - } - - if err := makeDockerOptionsDir(provisioner); err != nil { - return err - } - - provisioner.AuthOptions = setRemoteAuthOptions(provisioner) - - if err := ConfigureAuth(provisioner); err != nil { - return err - } - - if err := configureSwarm(provisioner, swarmOptions, provisioner.AuthOptions); err != nil { - return err - } - - return nil -} - -func (provisioner *SUSEProvisioner) GenerateDockerOptions(dockerPort int) (*DockerOptions, error) { - var ( - engineCfg bytes.Buffer - configPath = provisioner.DaemonOptionsFile - ) - - // remove existing - if _, err := provisioner.SSHCommand(fmt.Sprintf("sudo rm %s", configPath)); err != nil { - return nil, err - } - - driverNameLabel := fmt.Sprintf("provider=%s", provisioner.Driver.DriverName()) - provisioner.EngineOptions.Labels = append(provisioner.EngineOptions.Labels, driverNameLabel) - - engineConfigTmpl := `# File automatically generated by docker-machine -DOCKER_OPTS=' -H tcp://0.0.0.0:{{.DockerPort}} {{ if .EngineOptions.StorageDriver }} --storage-driver {{.EngineOptions.StorageDriver}} {{ end }} --tlsverify --tlscacert {{.AuthOptions.CaCertRemotePath}} --tlscert {{.AuthOptions.ServerCertRemotePath}} --tlskey {{.AuthOptions.ServerKeyRemotePath}} {{ range .EngineOptions.Labels }}--label {{.}} {{ end }}{{ range .EngineOptions.InsecureRegistry }}--insecure-registry {{.}} {{ end }}{{ range .EngineOptions.RegistryMirror }}--registry-mirror {{.}} {{ end }}{{ range .EngineOptions.ArbitraryFlags }}--{{.}} {{ end }}' -` - t, err := template.New("engineConfig").Parse(engineConfigTmpl) - if err != nil { - return nil, err - } - - engineConfigContext := EngineConfigContext{ - DockerPort: dockerPort, - AuthOptions: provisioner.AuthOptions, - EngineOptions: provisioner.EngineOptions, - DockerOptionsDir: provisioner.DockerOptionsDir, - } - - t.Execute(&engineCfg, engineConfigContext) - - daemonOptsDir := configPath - return &DockerOptions{ - EngineOptions: engineCfg.String(), - EngineOptionsPath: daemonOptsDir, - }, nil -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/systemd.go b/vendor/github.com/docker/machine/libmachine/provision/systemd.go deleted file mode 100644 index 7247976a..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/systemd.go +++ /dev/null @@ -1,96 +0,0 @@ -package provision - -import ( - "bytes" - "fmt" - "text/template" - - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/provision/serviceaction" -) - -type SystemdProvisioner struct { - GenericProvisioner -} - -func (p *SystemdProvisioner) String() string { - return "redhat" -} - -func NewSystemdProvisioner(osReleaseID string, d drivers.Driver) SystemdProvisioner { - return SystemdProvisioner{ - GenericProvisioner{ - SSHCommander: GenericSSHCommander{Driver: d}, - DockerOptionsDir: "/etc/docker", - DaemonOptionsFile: "/etc/systemd/system/docker.service", - OsReleaseID: osReleaseID, - Packages: []string{ - "curl", - }, - Driver: d, - }, - } -} - -func (p *SystemdProvisioner) GenerateDockerOptions(dockerPort int) (*DockerOptions, error) { - var ( - engineCfg bytes.Buffer - ) - - driverNameLabel := fmt.Sprintf("provider=%s", p.Driver.DriverName()) - p.EngineOptions.Labels = append(p.EngineOptions.Labels, driverNameLabel) - - engineConfigTmpl := `[Service] -ExecStart=/usr/bin/docker daemon -H tcp://0.0.0.0:{{.DockerPort}} -H unix:///var/run/docker.sock --storage-driver {{.EngineOptions.StorageDriver}} --tlsverify --tlscacert {{.AuthOptions.CaCertRemotePath}} --tlscert {{.AuthOptions.ServerCertRemotePath}} --tlskey {{.AuthOptions.ServerKeyRemotePath}} {{ range .EngineOptions.Labels }}--label {{.}} {{ end }}{{ range .EngineOptions.InsecureRegistry }}--insecure-registry {{.}} {{ end }}{{ range .EngineOptions.RegistryMirror }}--registry-mirror {{.}} {{ end }}{{ range .EngineOptions.ArbitraryFlags }}--{{.}} {{ end }} -MountFlags=slave -LimitNOFILE=1048576 -LimitNPROC=1048576 -LimitCORE=infinity -Environment={{range .EngineOptions.Env}}{{ printf "%q" . }} {{end}} - -[Install] -WantedBy=multi-user.target -` - t, err := template.New("engineConfig").Parse(engineConfigTmpl) - if err != nil { - return nil, err - } - - engineConfigContext := EngineConfigContext{ - DockerPort: dockerPort, - AuthOptions: p.AuthOptions, - EngineOptions: p.EngineOptions, - } - - t.Execute(&engineCfg, engineConfigContext) - - return &DockerOptions{ - EngineOptions: engineCfg.String(), - EngineOptionsPath: p.DaemonOptionsFile, - }, nil -} - -func (p *SystemdProvisioner) Service(name string, action serviceaction.ServiceAction) error { - reloadDaemon := false - switch action { - case serviceaction.Start, serviceaction.Restart: - reloadDaemon = true - } - - // systemd needs reloaded when config changes on disk; we cannot - // be sure exactly when it changes from the provisioner so - // we call a reload on every restart to be safe - if reloadDaemon { - if _, err := p.SSHCommand("sudo systemctl daemon-reload"); err != nil { - return err - } - } - - command := fmt.Sprintf("sudo systemctl -f %s %s", action.String(), name) - - if _, err := p.SSHCommand(command); err != nil { - return err - } - - return nil -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/ubuntu_systemd.go b/vendor/github.com/docker/machine/libmachine/provision/ubuntu_systemd.go deleted file mode 100644 index 6dbf3214..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/ubuntu_systemd.go +++ /dev/null @@ -1,153 +0,0 @@ -package provision - -import ( - "fmt" - "strconv" - - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnutils" - "github.com/docker/machine/libmachine/provision/pkgaction" - "github.com/docker/machine/libmachine/provision/serviceaction" - "github.com/docker/machine/libmachine/swarm" -) - -func init() { - Register("Ubuntu-SystemD", &RegisteredProvisioner{ - New: NewUbuntuSystemdProvisioner, - }) -} - -func NewUbuntuSystemdProvisioner(d drivers.Driver) Provisioner { - return &UbuntuSystemdProvisioner{ - NewSystemdProvisioner("ubuntu", d), - } -} - -type UbuntuSystemdProvisioner struct { - SystemdProvisioner -} - -func (provisioner *UbuntuSystemdProvisioner) String() string { - return "ubuntu(systemd)" -} - -func (provisioner *UbuntuSystemdProvisioner) CompatibleWithHost() bool { - const FirstUbuntuSystemdVersion = 15.04 - - isUbuntu := provisioner.OsReleaseInfo.ID == provisioner.OsReleaseID - if !isUbuntu { - return false - } - versionNumber, err := strconv.ParseFloat(provisioner.OsReleaseInfo.VersionID, 64) - if err != nil { - return false - } - return versionNumber >= FirstUbuntuSystemdVersion - -} - -func (provisioner *UbuntuSystemdProvisioner) Package(name string, action pkgaction.PackageAction) error { - var packageAction string - - updateMetadata := true - - switch action { - case pkgaction.Install, pkgaction.Upgrade: - packageAction = "install" - case pkgaction.Remove: - packageAction = "remove" - updateMetadata = false - } - - switch name { - case "docker": - name = "docker-engine" - } - - if updateMetadata { - if _, err := provisioner.SSHCommand("sudo apt-get update"); err != nil { - return err - } - } - - command := fmt.Sprintf("DEBIAN_FRONTEND=noninteractive sudo -E apt-get %s -y %s", packageAction, name) - - log.Debugf("package: action=%s name=%s", action.String(), name) - - if _, err := provisioner.SSHCommand(command); err != nil { - return err - } - - return nil -} - -func (provisioner *UbuntuSystemdProvisioner) dockerDaemonResponding() bool { - log.Debug("checking docker daemon") - - if out, err := provisioner.SSHCommand("sudo docker version"); err != nil { - log.Warnf("Error getting SSH command to check if the daemon is up: %s", err) - log.Debugf("'sudo docker version' output:\n%s", out) - return false - } - - // The daemon is up if the command worked. Carry on. - return true -} - -func (provisioner *UbuntuSystemdProvisioner) Provision(swarmOptions swarm.Options, authOptions auth.Options, engineOptions engine.Options) error { - provisioner.SwarmOptions = swarmOptions - provisioner.AuthOptions = authOptions - provisioner.EngineOptions = engineOptions - swarmOptions.Env = engineOptions.Env - - storageDriver, err := decideStorageDriver(provisioner, "aufs", engineOptions.StorageDriver) - if err != nil { - return err - } - provisioner.EngineOptions.StorageDriver = storageDriver - - log.Debug("setting hostname") - if err := provisioner.SetHostname(provisioner.Driver.GetMachineName()); err != nil { - return err - } - - log.Debug("installing base packages") - for _, pkg := range provisioner.Packages { - if err := provisioner.Package(pkg, pkgaction.Install); err != nil { - return err - } - } - - log.Info("Installing Docker...") - if err := installDockerGeneric(provisioner, engineOptions.InstallURL); err != nil { - return err - } - - log.Debug("waiting for docker daemon") - if err := mcnutils.WaitFor(provisioner.dockerDaemonResponding); err != nil { - return err - } - - provisioner.AuthOptions = setRemoteAuthOptions(provisioner) - - log.Debug("configuring auth") - if err := ConfigureAuth(provisioner); err != nil { - return err - } - - log.Debug("configuring swarm") - if err := configureSwarm(provisioner, swarmOptions, provisioner.AuthOptions); err != nil { - return err - } - - // enable in systemd - log.Debug("enabling docker in systemd") - if err := provisioner.Service("docker", serviceaction.Enable); err != nil { - return err - } - - return nil -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/ubuntu_systemd_test.go b/vendor/github.com/docker/machine/libmachine/provision/ubuntu_systemd_test.go deleted file mode 100644 index c4417c8e..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/ubuntu_systemd_test.go +++ /dev/null @@ -1,44 +0,0 @@ -package provision - -import ( - "testing" - - "github.com/docker/machine/drivers/fakedriver" - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/provision/provisiontest" - "github.com/docker/machine/libmachine/swarm" -) - -func TestUbuntuSystemdCompatibleWithHost(t *testing.T) { - info := &OsRelease{ - ID: "ubuntu", - VersionID: "15.04", - } - p := NewUbuntuSystemdProvisioner(nil) - p.SetOsReleaseInfo(info) - - compatible := p.CompatibleWithHost() - - if !compatible { - t.Fatalf("expected to be compatible with ubuntu 15.04") - } - - info.VersionID = "14.04" - - compatible = p.CompatibleWithHost() - - if compatible { - t.Fatalf("expected to NOT be compatible with ubuntu 14.04") - } - -} - -func TestUbuntuSystemdDefaultStorageDriver(t *testing.T) { - p := NewUbuntuSystemdProvisioner(&fakedriver.Driver{}).(*UbuntuSystemdProvisioner) - p.SSHCommander = provisiontest.NewFakeSSHCommander(provisiontest.FakeSSHCommanderOptions{}) - p.Provision(swarm.Options{}, auth.Options{}, engine.Options{}) - if p.EngineOptions.StorageDriver != "aufs" { - t.Fatal("Default storage driver should be aufs") - } -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/ubuntu_upstart.go b/vendor/github.com/docker/machine/libmachine/provision/ubuntu_upstart.go deleted file mode 100644 index 9f056e04..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/ubuntu_upstart.go +++ /dev/null @@ -1,165 +0,0 @@ -package provision - -import ( - "fmt" - "strconv" - - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/drivers" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnutils" - "github.com/docker/machine/libmachine/provision/pkgaction" - "github.com/docker/machine/libmachine/provision/serviceaction" - "github.com/docker/machine/libmachine/swarm" -) - -func init() { - Register("Ubuntu-UpStart", &RegisteredProvisioner{ - New: NewUbuntuProvisioner, - }) -} - -func NewUbuntuProvisioner(d drivers.Driver) Provisioner { - return &UbuntuProvisioner{ - GenericProvisioner{ - SSHCommander: GenericSSHCommander{Driver: d}, - DockerOptionsDir: "/etc/docker", - DaemonOptionsFile: "/etc/default/docker", - OsReleaseID: "ubuntu", - Packages: []string{ - "curl", - }, - Driver: d, - }, - } -} - -type UbuntuProvisioner struct { - GenericProvisioner -} - -func (provisioner *UbuntuProvisioner) String() string { - return "ubuntu(upstart)" -} - -func (provisioner *UbuntuProvisioner) CompatibleWithHost() bool { - const FirstUbuntuSystemdVersion = 15.04 - isUbuntu := provisioner.OsReleaseInfo.ID == provisioner.OsReleaseID - if !isUbuntu { - return false - } - versionNumber, err := strconv.ParseFloat(provisioner.OsReleaseInfo.VersionID, 64) - if err != nil { - return false - } - - return versionNumber < FirstUbuntuSystemdVersion - -} - -func (provisioner *UbuntuProvisioner) Service(name string, action serviceaction.ServiceAction) error { - command := fmt.Sprintf("sudo service %s %s", name, action.String()) - - if _, err := provisioner.SSHCommand(command); err != nil { - return err - } - - return nil -} - -func (provisioner *UbuntuProvisioner) Package(name string, action pkgaction.PackageAction) error { - var packageAction string - - updateMetadata := true - - switch action { - case pkgaction.Install, pkgaction.Upgrade: - packageAction = "install" - case pkgaction.Remove: - packageAction = "remove" - updateMetadata = false - } - - switch name { - case "docker": - name = "docker-engine" - } - - if updateMetadata { - if _, err := provisioner.SSHCommand("sudo apt-get update"); err != nil { - return err - } - } - - command := fmt.Sprintf("DEBIAN_FRONTEND=noninteractive sudo -E apt-get %s -y -o Dpkg::Options::=\"--force-confnew\" %s", packageAction, name) - - log.Debugf("package: action=%s name=%s", action.String(), name) - - if _, err := provisioner.SSHCommand(command); err != nil { - return err - } - - return nil -} - -func (provisioner *UbuntuProvisioner) dockerDaemonResponding() bool { - log.Debug("checking docker daemon") - - if out, err := provisioner.SSHCommand("sudo docker version"); err != nil { - log.Warnf("Error getting SSH command to check if the daemon is up: %s", err) - log.Debugf("'sudo docker version' output:\n%s", out) - return false - } - - // The daemon is up if the command worked. Carry on. - return true -} - -func (provisioner *UbuntuProvisioner) Provision(swarmOptions swarm.Options, authOptions auth.Options, engineOptions engine.Options) error { - provisioner.SwarmOptions = swarmOptions - provisioner.AuthOptions = authOptions - provisioner.EngineOptions = engineOptions - swarmOptions.Env = engineOptions.Env - - storageDriver, err := decideStorageDriver(provisioner, "aufs", engineOptions.StorageDriver) - if err != nil { - return err - } - provisioner.EngineOptions.StorageDriver = storageDriver - - if err := provisioner.SetHostname(provisioner.Driver.GetMachineName()); err != nil { - return err - } - - for _, pkg := range provisioner.Packages { - if err := provisioner.Package(pkg, pkgaction.Install); err != nil { - return err - } - } - - log.Info("Installing Docker...") - if err := installDockerGeneric(provisioner, engineOptions.InstallURL); err != nil { - return err - } - - if err := mcnutils.WaitFor(provisioner.dockerDaemonResponding); err != nil { - return err - } - - if err := makeDockerOptionsDir(provisioner); err != nil { - return err - } - - provisioner.AuthOptions = setRemoteAuthOptions(provisioner) - - if err := ConfigureAuth(provisioner); err != nil { - return err - } - - if err := configureSwarm(provisioner, swarmOptions, provisioner.AuthOptions); err != nil { - return err - } - - return nil -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/ubuntu_upstart_test.go b/vendor/github.com/docker/machine/libmachine/provision/ubuntu_upstart_test.go deleted file mode 100644 index dc99d961..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/ubuntu_upstart_test.go +++ /dev/null @@ -1,44 +0,0 @@ -package provision - -import ( - "testing" - - "github.com/docker/machine/drivers/fakedriver" - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/provision/provisiontest" - "github.com/docker/machine/libmachine/swarm" -) - -func TestUbuntuCompatibleWithHost(t *testing.T) { - info := &OsRelease{ - ID: "ubuntu", - VersionID: "14.04", - } - p := NewUbuntuProvisioner(nil) - p.SetOsReleaseInfo(info) - - compatible := p.CompatibleWithHost() - - if !compatible { - t.Fatalf("expected to be compatible with ubuntu 14.04") - } - - info.VersionID = "15.04" - - compatible = p.CompatibleWithHost() - - if compatible { - t.Fatalf("expected to NOT be compatible with ubuntu 15.04") - } - -} - -func TestUbuntuDefaultStorageDriver(t *testing.T) { - p := NewUbuntuProvisioner(&fakedriver.Driver{}).(*UbuntuProvisioner) - p.SSHCommander = provisiontest.NewFakeSSHCommander(provisiontest.FakeSSHCommanderOptions{}) - p.Provision(swarm.Options{}, auth.Options{}, engine.Options{}) - if p.EngineOptions.StorageDriver != "aufs" { - t.Fatal("Default storage driver should be aufs") - } -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/utils.go b/vendor/github.com/docker/machine/libmachine/provision/utils.go deleted file mode 100644 index ee8deffd..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/utils.go +++ /dev/null @@ -1,274 +0,0 @@ -package provision - -import ( - "fmt" - "io/ioutil" - "net/url" - "path" - "path/filepath" - "regexp" - "strconv" - "strings" - "time" - - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/cert" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnutils" - "github.com/docker/machine/libmachine/provision/serviceaction" -) - -type DockerOptions struct { - EngineOptions string - EngineOptionsPath string -} - -func installDockerGeneric(p Provisioner, baseURL string) error { - // install docker - until cloudinit we use ubuntu everywhere so we - // just install it using the docker repos - if output, err := p.SSHCommand(fmt.Sprintf("if ! type docker; then curl -sSL %s | sh -; fi", baseURL)); err != nil { - return fmt.Errorf("error installing docker: %s\n", output) - } - - return nil -} - -func makeDockerOptionsDir(p Provisioner) error { - dockerDir := p.GetDockerOptionsDir() - if _, err := p.SSHCommand(fmt.Sprintf("sudo mkdir -p %s", dockerDir)); err != nil { - return err - } - - return nil -} - -func setRemoteAuthOptions(p Provisioner) auth.Options { - dockerDir := p.GetDockerOptionsDir() - authOptions := p.GetAuthOptions() - - // due to windows clients, we cannot use filepath.Join as the paths - // will be mucked on the linux hosts - authOptions.CaCertRemotePath = path.Join(dockerDir, "ca.pem") - authOptions.ServerCertRemotePath = path.Join(dockerDir, "server.pem") - authOptions.ServerKeyRemotePath = path.Join(dockerDir, "server-key.pem") - - return authOptions -} - -func ConfigureAuth(p Provisioner) error { - var ( - err error - ) - - driver := p.GetDriver() - machineName := driver.GetMachineName() - authOptions := p.GetAuthOptions() - swarmOptions := p.GetSwarmOptions() - org := mcnutils.GetUsername() + "." + machineName - bits := 2048 - - ip, err := driver.GetIP() - if err != nil { - return err - } - - log.Info("Copying certs to the local machine directory...") - - if err := mcnutils.CopyFile(authOptions.CaCertPath, filepath.Join(authOptions.StorePath, "ca.pem")); err != nil { - return fmt.Errorf("Copying ca.pem to machine dir failed: %s", err) - } - - if err := mcnutils.CopyFile(authOptions.ClientCertPath, filepath.Join(authOptions.StorePath, "cert.pem")); err != nil { - return fmt.Errorf("Copying cert.pem to machine dir failed: %s", err) - } - - if err := mcnutils.CopyFile(authOptions.ClientKeyPath, filepath.Join(authOptions.StorePath, "key.pem")); err != nil { - return fmt.Errorf("Copying key.pem to machine dir failed: %s", err) - } - - // The Host IP is always added to the certificate's SANs list - hosts := append(authOptions.ServerCertSANs, ip, "localhost") - log.Debugf("generating server cert: %s ca-key=%s private-key=%s org=%s san=%s", - authOptions.ServerCertPath, - authOptions.CaCertPath, - authOptions.CaPrivateKeyPath, - org, - hosts, - ) - - // TODO: Switch to passing just authOptions to this func - // instead of all these individual fields - err = cert.GenerateCert(&cert.Options{ - Hosts: hosts, - CertFile: authOptions.ServerCertPath, - KeyFile: authOptions.ServerKeyPath, - CAFile: authOptions.CaCertPath, - CAKeyFile: authOptions.CaPrivateKeyPath, - Org: org, - Bits: bits, - SwarmMaster: swarmOptions.Master, - }) - - if err != nil { - return fmt.Errorf("error generating server cert: %s", err) - } - - if err := p.Service("docker", serviceaction.Stop); err != nil { - return err - } - - if _, err := p.SSHCommand(`if [ ! -z "$(ip link show docker0)" ]; then sudo ip link delete docker0; fi`); err != nil { - return err - } - - // upload certs and configure TLS auth - caCert, err := ioutil.ReadFile(authOptions.CaCertPath) - if err != nil { - return err - } - - serverCert, err := ioutil.ReadFile(authOptions.ServerCertPath) - if err != nil { - return err - } - serverKey, err := ioutil.ReadFile(authOptions.ServerKeyPath) - if err != nil { - return err - } - - log.Info("Copying certs to the remote machine...") - - // printf will choke if we don't pass a format string because of the - // dashes, so that's the reason for the '%%s' - certTransferCmdFmt := "printf '%%s' '%s' | sudo tee %s" - - // These ones are for Jessie and Mike <3 <3 <3 - if _, err := p.SSHCommand(fmt.Sprintf(certTransferCmdFmt, string(caCert), authOptions.CaCertRemotePath)); err != nil { - return err - } - - if _, err := p.SSHCommand(fmt.Sprintf(certTransferCmdFmt, string(serverCert), authOptions.ServerCertRemotePath)); err != nil { - return err - } - - if _, err := p.SSHCommand(fmt.Sprintf(certTransferCmdFmt, string(serverKey), authOptions.ServerKeyRemotePath)); err != nil { - return err - } - - dockerURL, err := driver.GetURL() - if err != nil { - return err - } - u, err := url.Parse(dockerURL) - if err != nil { - return err - } - dockerPort := engine.DefaultPort - parts := strings.Split(u.Host, ":") - if len(parts) == 2 { - dPort, err := strconv.Atoi(parts[1]) - if err != nil { - return err - } - dockerPort = dPort - } - - dkrcfg, err := p.GenerateDockerOptions(dockerPort) - if err != nil { - return err - } - - log.Info("Setting Docker configuration on the remote daemon...") - - if _, err = p.SSHCommand(fmt.Sprintf("printf %%s \"%s\" | sudo tee %s", dkrcfg.EngineOptions, dkrcfg.EngineOptionsPath)); err != nil { - return err - } - - if err := p.Service("docker", serviceaction.Start); err != nil { - return err - } - - return WaitForDocker(p, dockerPort) -} - -func matchNetstatOut(reDaemonListening, netstatOut string) bool { - // TODO: I would really prefer this be a Scanner directly on - // the STDOUT of the executed command than to do all the string - // manipulation hokey-pokey. - // - // TODO: Unit test this matching. - for _, line := range strings.Split(netstatOut, "\n") { - match, err := regexp.MatchString(reDaemonListening, line) - if err != nil { - log.Warnf("Regex warning: %s", err) - } - if match && line != "" { - return true - } - } - - return false -} - -func decideStorageDriver(p Provisioner, defaultDriver, suppliedDriver string) (string, error) { - if suppliedDriver != "" { - return suppliedDriver, nil - } - bestSuitedDriver := "" - - defer func() { - if bestSuitedDriver != "" { - log.Debugf("No storagedriver specified, using %s\n", bestSuitedDriver) - } - }() - - if defaultDriver != "aufs" { - bestSuitedDriver = defaultDriver - } else { - remoteFilesystemType, err := getFilesystemType(p, "/var/lib") - if err != nil { - return "", err - } - if remoteFilesystemType == "btrfs" { - bestSuitedDriver = "btrfs" - } else { - bestSuitedDriver = "aufs" - } - } - return bestSuitedDriver, nil - -} - -func getFilesystemType(p Provisioner, directory string) (string, error) { - statCommandOutput, err := p.SSHCommand("stat -f -c %T " + directory) - if err != nil { - err = fmt.Errorf("Error looking up filesystem type: %s", err) - return "", err - } - - fstype := strings.TrimSpace(statCommandOutput) - return fstype, nil -} - -func checkDaemonUp(p Provisioner, dockerPort int) func() bool { - reDaemonListening := fmt.Sprintf(":%d\\s+.*:.*", dockerPort) - return func() bool { - // HACK: Check netstat's output to see if anyone's listening on the Docker API port. - netstatOut, err := p.SSHCommand("netstat -tln") - if err != nil { - log.Warnf("Error running SSH command: %s", err) - return false - } - - return matchNetstatOut(reDaemonListening, netstatOut) - } -} - -func WaitForDocker(p Provisioner, dockerPort int) error { - if err := mcnutils.WaitForSpecific(checkDaemonUp(p, dockerPort), 10, 3*time.Second); err != nil { - return NewErrDaemonAvailable(err) - } - - return nil -} diff --git a/vendor/github.com/docker/machine/libmachine/provision/utils_test.go b/vendor/github.com/docker/machine/libmachine/provision/utils_test.go deleted file mode 100644 index 2c8bde53..00000000 --- a/vendor/github.com/docker/machine/libmachine/provision/utils_test.go +++ /dev/null @@ -1,210 +0,0 @@ -package provision - -import ( - "fmt" - "regexp" - "strings" - "testing" - - "github.com/docker/machine/drivers/fakedriver" - "github.com/docker/machine/libmachine/auth" - "github.com/docker/machine/libmachine/engine" - "github.com/docker/machine/libmachine/provision/pkgaction" - "github.com/docker/machine/libmachine/provision/provisiontest" - "github.com/docker/machine/libmachine/provision/serviceaction" - "github.com/docker/machine/libmachine/swarm" - "github.com/stretchr/testify/assert" -) - -var ( - reDaemonListening = ":2376\\s+.*:.*" -) - -func TestMatchNetstatOutMissing(t *testing.T) { - nsOut := `Active Internet connections (servers and established) -Proto Recv-Q Send-Q Local Address Foreign Address State -tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -tcp 0 0 0.0.0.0:237 0.0.0.0:* LISTEN -tcp6 0 0 :::22 :::* LISTEN -tcp6 0 0 :::23760 :::* LISTEN` - if matchNetstatOut(reDaemonListening, nsOut) { - t.Fatal("Expected not to match the netstat output as showing the daemon listening but got a match") - } -} - -func TestMatchNetstatOutPresent(t *testing.T) { - nsOut := `Active Internet connections (servers and established) -Proto Recv-Q Send-Q Local Address Foreign Address State -tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -tcp6 0 0 :::2376 :::* LISTEN -tcp6 0 0 :::22 :::* LISTEN` - if !matchNetstatOut(reDaemonListening, nsOut) { - t.Fatal("Expected to match the netstat output as showing the daemon listening but didn't") - } -} - -func TestGenerateDockerOptionsBoot2Docker(t *testing.T) { - p := &Boot2DockerProvisioner{ - Driver: &fakedriver.Driver{}, - } - dockerPort := 1234 - p.AuthOptions = auth.Options{ - CaCertRemotePath: "/test/ca-cert", - ServerKeyRemotePath: "/test/server-key", - ServerCertRemotePath: "/test/server-cert", - } - engineConfigPath := "/var/lib/boot2docker/profile" - - dockerCfg, err := p.GenerateDockerOptions(dockerPort) - if err != nil { - t.Fatal(err) - } - - if dockerCfg.EngineOptionsPath != engineConfigPath { - t.Fatalf("expected engine path %s; received %s", engineConfigPath, dockerCfg.EngineOptionsPath) - } - - if strings.Index(dockerCfg.EngineOptions, fmt.Sprintf("-H tcp://0.0.0.0:%d", dockerPort)) == -1 { - t.Fatalf("-H docker port invalid; expected %d", dockerPort) - } - - if strings.Index(dockerCfg.EngineOptions, fmt.Sprintf("CACERT=%s", p.AuthOptions.CaCertRemotePath)) == -1 { - t.Fatalf("CACERT option invalid; expected %s", p.AuthOptions.CaCertRemotePath) - } - - if strings.Index(dockerCfg.EngineOptions, fmt.Sprintf("SERVERKEY=%s", p.AuthOptions.ServerKeyRemotePath)) == -1 { - t.Fatalf("SERVERKEY option invalid; expected %s", p.AuthOptions.ServerKeyRemotePath) - } - - if strings.Index(dockerCfg.EngineOptions, fmt.Sprintf("SERVERCERT=%s", p.AuthOptions.ServerCertRemotePath)) == -1 { - t.Fatalf("SERVERCERT option invalid; expected %s", p.AuthOptions.ServerCertRemotePath) - } -} - -func TestMachinePortBoot2Docker(t *testing.T) { - p := &Boot2DockerProvisioner{ - Driver: &fakedriver.Driver{}, - } - dockerPort := engine.DefaultPort - bindURL := fmt.Sprintf("tcp://0.0.0.0:%d", dockerPort) - p.AuthOptions = auth.Options{ - CaCertRemotePath: "/test/ca-cert", - ServerKeyRemotePath: "/test/server-key", - ServerCertRemotePath: "/test/server-cert", - } - - cfg, err := p.GenerateDockerOptions(dockerPort) - if err != nil { - t.Fatal(err) - } - re := regexp.MustCompile("-H tcp://.*:(.+)") - m := re.FindStringSubmatch(cfg.EngineOptions) - if len(m) == 0 { - t.Errorf("could not find port %d in engine config", dockerPort) - } - - b := m[0] - u := strings.Split(b, " ") - url := u[1] - url = strings.Replace(url, "'", "", -1) - url = strings.Replace(url, "\\\"", "", -1) - if url != bindURL { - t.Errorf("expected url %s; received %s", bindURL, url) - } -} - -func TestMachineCustomPortBoot2Docker(t *testing.T) { - p := &Boot2DockerProvisioner{ - Driver: &fakedriver.Driver{}, - } - dockerPort := 3376 - bindURL := fmt.Sprintf("tcp://0.0.0.0:%d", dockerPort) - p.AuthOptions = auth.Options{ - CaCertRemotePath: "/test/ca-cert", - ServerKeyRemotePath: "/test/server-key", - ServerCertRemotePath: "/test/server-cert", - } - - cfg, err := p.GenerateDockerOptions(dockerPort) - if err != nil { - t.Fatal(err) - } - - re := regexp.MustCompile("-H tcp://.*:(.+)") - m := re.FindStringSubmatch(cfg.EngineOptions) - if len(m) == 0 { - t.Errorf("could not find port %d in engine config", dockerPort) - } - - b := m[0] - u := strings.Split(b, " ") - url := u[1] - url = strings.Replace(url, "'", "", -1) - url = strings.Replace(url, "\\\"", "", -1) - if url != bindURL { - t.Errorf("expected url %s; received %s", bindURL, url) - } -} - -type fakeProvisioner struct { - GenericProvisioner -} - -func (provisioner *fakeProvisioner) Package(name string, action pkgaction.PackageAction) error { - return nil -} - -func (provisioner *fakeProvisioner) Provision(swarmOptions swarm.Options, authOptions auth.Options, engineOptions engine.Options) error { - return nil -} - -func (provisioner *fakeProvisioner) Service(name string, action serviceaction.ServiceAction) error { - return nil -} - -func (provisioner *fakeProvisioner) String() string { - return "fake" -} - -func TestDecideStorageDriver(t *testing.T) { - var tests = []struct { - suppliedDriver string - defaultDriver string - remoteFilesystemType string - expectedDriver string - }{ - {"", "aufs", "ext4", "aufs"}, - {"", "aufs", "btrfs", "btrfs"}, - {"", "overlay", "btrfs", "overlay"}, - {"devicemapper", "aufs", "ext4", "devicemapper"}, - {"devicemapper", "aufs", "btrfs", "devicemapper"}, - } - - p := &fakeProvisioner{GenericProvisioner{ - Driver: &fakedriver.Driver{}, - }} - for _, test := range tests { - p.SSHCommander = provisiontest.NewFakeSSHCommander( - provisiontest.FakeSSHCommanderOptions{ - FilesystemType: test.remoteFilesystemType, - }, - ) - storageDriver, err := decideStorageDriver(p, test.defaultDriver, test.suppliedDriver) - assert.NoError(t, err) - assert.Equal(t, test.expectedDriver, storageDriver) - } -} - -func TestGetFilesystemType(t *testing.T) { - p := &fakeProvisioner{GenericProvisioner{ - Driver: &fakedriver.Driver{}, - }} - p.SSHCommander = &provisiontest.FakeSSHCommander{ - Responses: map[string]string{ - "stat -f -c %T /var/lib": "btrfs\n", - }, - } - fsType, err := getFilesystemType(p, "/var/lib") - assert.NoError(t, err) - assert.Equal(t, "btrfs", fsType) -} diff --git a/vendor/github.com/docker/machine/libmachine/shell/shell.go b/vendor/github.com/docker/machine/libmachine/shell/shell.go deleted file mode 100644 index dd1579b5..00000000 --- a/vendor/github.com/docker/machine/libmachine/shell/shell.go +++ /dev/null @@ -1,30 +0,0 @@ -// +build !windows - -package shell - -import ( - "errors" - "fmt" - "os" - "path/filepath" -) - -var ( - ErrUnknownShell = errors.New("Error: Unknown shell") -) - -// Detect detects user's current shell. -func Detect() (string, error) { - shell := os.Getenv("SHELL") - - if shell == "" { - fmt.Printf("The default lines below are for a sh/bash shell, you can specify the shell you're using, with the --shell flag.\n\n") - return "", ErrUnknownShell - } - - if os.Getenv("__fish_bin_dir") != "" { - return "fish", nil - } - - return filepath.Base(shell), nil -} diff --git a/vendor/github.com/docker/machine/libmachine/shell/shell_test.go b/vendor/github.com/docker/machine/libmachine/shell/shell_test.go deleted file mode 100644 index ae437357..00000000 --- a/vendor/github.com/docker/machine/libmachine/shell/shell_test.go +++ /dev/null @@ -1,31 +0,0 @@ -package shell - -import ( - "os" - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestDetectBash(t *testing.T) { - defer func(shell string) { os.Setenv("SHELL", shell) }(os.Getenv("SHELL")) - os.Setenv("SHELL", "/bin/bash") - - shell, err := Detect() - - assert.Equal(t, "bash", shell) - assert.NoError(t, err) -} - -func TestDetectFish(t *testing.T) { - defer func(shell string) { os.Setenv("SHELL", shell) }(os.Getenv("SHELL")) - os.Setenv("SHELL", "/bin/bash") - - defer func(fishDir string) { os.Setenv("__fish_bin_dir", fishDir) }(os.Getenv("__fish_bin_dir")) - os.Setenv("__fish_bin_dir", "/usr/local/Cellar/fish/2.2.0/bin") - - shell, err := Detect() - - assert.Equal(t, "fish", shell) - assert.NoError(t, err) -} diff --git a/vendor/github.com/docker/machine/libmachine/shell/shell_unix_test.go b/vendor/github.com/docker/machine/libmachine/shell/shell_unix_test.go deleted file mode 100644 index b9382071..00000000 --- a/vendor/github.com/docker/machine/libmachine/shell/shell_unix_test.go +++ /dev/null @@ -1,20 +0,0 @@ -// +build !windows - -package shell - -import ( - "os" - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestUnknownShell(t *testing.T) { - defer func(shell string) { os.Setenv("SHELL", shell) }(os.Getenv("SHELL")) - os.Setenv("SHELL", "") - - shell, err := Detect() - - assert.Equal(t, err, ErrUnknownShell) - assert.Empty(t, shell) -} diff --git a/vendor/github.com/docker/machine/libmachine/shell/shell_windows.go b/vendor/github.com/docker/machine/libmachine/shell/shell_windows.go deleted file mode 100644 index 89cd2c8b..00000000 --- a/vendor/github.com/docker/machine/libmachine/shell/shell_windows.go +++ /dev/null @@ -1,84 +0,0 @@ -package shell - -import ( - "fmt" - "os" - "path/filepath" - "strings" - "syscall" - "unsafe" -) - -// re-implementation of private function in https://github.com/golang/go/blob/master/src/syscall/syscall_windows.go#L945 -func getProcessEntry(pid int) (pe *syscall.ProcessEntry32, err error) { - snapshot, err := syscall.CreateToolhelp32Snapshot(syscall.TH32CS_SNAPPROCESS, 0) - if err != nil { - return nil, err - } - defer syscall.CloseHandle(syscall.Handle(snapshot)) - - var processEntry syscall.ProcessEntry32 - processEntry.Size = uint32(unsafe.Sizeof(processEntry)) - err = syscall.Process32First(snapshot, &processEntry) - if err != nil { - return nil, err - } - - for { - if processEntry.ProcessID == uint32(pid) { - pe = &processEntry - return - } - - err = syscall.Process32Next(snapshot, &processEntry) - if err != nil { - return nil, err - } - } -} - -// getNameAndItsPpid returns the exe file name its parent process id. -func getNameAndItsPpid(pid int) (exefile string, parentid int, err error) { - pe, err := getProcessEntry(pid) - if err != nil { - return "", 0, err - } - - name := syscall.UTF16ToString(pe.ExeFile[:]) - return name, int(pe.ParentProcessID), nil -} - -func Detect() (string, error) { - shell := os.Getenv("SHELL") - - if shell == "" { - shell, shellppid, err := getNameAndItsPpid(os.Getppid()) - if err != nil { - return "cmd", err // defaulting to cmd - } - if strings.Contains(strings.ToLower(shell), "powershell") { - return "powershell", nil - } else if strings.Contains(strings.ToLower(shell), "cmd") { - return "cmd", nil - } else { - shell, _, err := getNameAndItsPpid(shellppid) - if err != nil { - return "cmd", err // defaulting to cmd - } - if strings.Contains(strings.ToLower(shell), "powershell") { - return "powershell", nil - } else if strings.Contains(strings.ToLower(shell), "cmd") { - return "cmd", nil - } else { - fmt.Printf("You can further specify your shell with either 'cmd' or 'powershell' with the --shell flag.\n\n") - return "cmd", nil // this could be either powershell or cmd, defaulting to cmd - } - } - } - - if os.Getenv("__fish_bin_dir") != "" { - return "fish", nil - } - - return filepath.Base(shell), nil -} diff --git a/vendor/github.com/docker/machine/libmachine/shell/shell_windows_test.go b/vendor/github.com/docker/machine/libmachine/shell/shell_windows_test.go deleted file mode 100644 index 81c0c507..00000000 --- a/vendor/github.com/docker/machine/libmachine/shell/shell_windows_test.go +++ /dev/null @@ -1,41 +0,0 @@ -package shell - -import ( - "os" - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestDetect(t *testing.T) { - defer func(shell string) { os.Setenv("SHELL", shell) }(os.Getenv("SHELL")) - os.Setenv("SHELL", "") - - shell, err := Detect() - - assert.Equal(t, "powershell", shell) - assert.NoError(t, err) -} - -func TestGetNameAndItsPpidOfCurrent(t *testing.T) { - shell, shellppid, err := getNameAndItsPpid(os.Getpid()) - - assert.Equal(t, "shell.test.exe", shell) - assert.Equal(t, os.Getppid(), shellppid) - assert.NoError(t, err) -} - -func TestGetNameAndItsPpidOfParent(t *testing.T) { - shell, _, err := getNameAndItsPpid(os.Getppid()) - - assert.Equal(t, "go.exe", shell) - assert.NoError(t, err) -} - -func TestGetNameAndItsPpidOfGrandParent(t *testing.T) { - shell, shellppid, err := getNameAndItsPpid(os.Getppid()) - shell, shellppid, err = getNameAndItsPpid(shellppid) - - assert.Equal(t, "powershell.exe", shell) - assert.NoError(t, err) -} diff --git a/vendor/github.com/docker/machine/libmachine/ssh/client.go b/vendor/github.com/docker/machine/libmachine/ssh/client.go deleted file mode 100644 index 499df4af..00000000 --- a/vendor/github.com/docker/machine/libmachine/ssh/client.go +++ /dev/null @@ -1,414 +0,0 @@ -package ssh - -import ( - "fmt" - "io" - "io/ioutil" - "os" - "os/exec" - "runtime" - "strings" - - "github.com/docker/docker/pkg/term" - "github.com/docker/machine/libmachine/log" - "github.com/docker/machine/libmachine/mcnutils" - "golang.org/x/crypto/ssh" - "golang.org/x/crypto/ssh/terminal" -) - -type Client interface { - Output(command string) (string, error) - Shell(args ...string) error - - // Start starts the specified command without waiting for it to finish. You - // have to call the Wait function for that. - // - // The first two io.ReadCloser are the standard output and the standard - // error of the executing command respectively. The returned error follows - // the same logic as in the exec.Cmd.Start function. - Start(command string) (io.ReadCloser, io.ReadCloser, error) - - // Wait waits for the command started by the Start function to exit. The - // returned error follows the same logic as in the exec.Cmd.Wait function. - Wait() error -} - -type ExternalClient struct { - BaseArgs []string - BinaryPath string - cmd *exec.Cmd -} - -type NativeClient struct { - Config ssh.ClientConfig - Hostname string - Port int - openSession *ssh.Session -} - -type Auth struct { - Passwords []string - Keys []string -} - -type ClientType string - -const ( - maxDialAttempts = 10 -) - -const ( - External ClientType = "external" - Native ClientType = "native" -) - -var ( - baseSSHArgs = []string{ - "-F", "/dev/null", - "-o", "PasswordAuthentication=no", - "-o", "StrictHostKeyChecking=no", - "-o", "UserKnownHostsFile=/dev/null", - "-o", "LogLevel=quiet", // suppress "Warning: Permanently added '[localhost]:2022' (ECDSA) to the list of known hosts." - "-o", "ConnectionAttempts=3", // retry 3 times if SSH connection fails - "-o", "ConnectTimeout=10", // timeout after 10 seconds - "-o", "ControlMaster=no", // disable ssh multiplexing - "-o", "ControlPath=none", - } - defaultClientType = External -) - -func SetDefaultClient(clientType ClientType) { - // Allow over-riding of default client type, so that even if ssh binary - // is found in PATH we can still use the Go native implementation if - // desired. - switch clientType { - case External: - defaultClientType = External - case Native: - defaultClientType = Native - } -} - -func NewClient(user string, host string, port int, auth *Auth) (Client, error) { - sshBinaryPath, err := exec.LookPath("ssh") - if err != nil { - log.Debug("SSH binary not found, using native Go implementation") - client, err := NewNativeClient(user, host, port, auth) - log.Debug(client) - return client, err - } - - if defaultClientType == Native { - log.Debug("Using SSH client type: native") - client, err := NewNativeClient(user, host, port, auth) - log.Debug(client) - return client, err - } - - log.Debug("Using SSH client type: external") - client, err := NewExternalClient(sshBinaryPath, user, host, port, auth) - log.Debug(client) - return client, err -} - -func NewNativeClient(user, host string, port int, auth *Auth) (Client, error) { - config, err := NewNativeConfig(user, auth) - if err != nil { - return nil, fmt.Errorf("Error getting config for native Go SSH: %s", err) - } - - return &NativeClient{ - Config: config, - Hostname: host, - Port: port, - }, nil -} - -func NewNativeConfig(user string, auth *Auth) (ssh.ClientConfig, error) { - var ( - authMethods []ssh.AuthMethod - ) - - for _, k := range auth.Keys { - key, err := ioutil.ReadFile(k) - if err != nil { - return ssh.ClientConfig{}, err - } - - privateKey, err := ssh.ParsePrivateKey(key) - if err != nil { - return ssh.ClientConfig{}, err - } - - authMethods = append(authMethods, ssh.PublicKeys(privateKey)) - } - - for _, p := range auth.Passwords { - authMethods = append(authMethods, ssh.Password(p)) - } - - return ssh.ClientConfig{ - User: user, - Auth: authMethods, - }, nil -} - -func (client *NativeClient) dialSuccess() bool { - if _, err := ssh.Dial("tcp", fmt.Sprintf("%s:%d", client.Hostname, client.Port), &client.Config); err != nil { - log.Debugf("Error dialing TCP: %s", err) - return false - } - return true -} - -func (client *NativeClient) session(command string) (*ssh.Session, error) { - if err := mcnutils.WaitFor(client.dialSuccess); err != nil { - return nil, fmt.Errorf("Error attempting SSH client dial: %s", err) - } - - conn, err := ssh.Dial("tcp", fmt.Sprintf("%s:%d", client.Hostname, client.Port), &client.Config) - if err != nil { - return nil, fmt.Errorf("Mysterious error dialing TCP for SSH (we already succeeded at least once) : %s", err) - } - - return conn.NewSession() -} - -func (client *NativeClient) Output(command string) (string, error) { - session, err := client.session(command) - if err != nil { - return "", nil - } - - output, err := session.CombinedOutput(command) - defer session.Close() - - return string(output), err -} - -func (client *NativeClient) OutputWithPty(command string) (string, error) { - session, err := client.session(command) - if err != nil { - return "", nil - } - - fd := int(os.Stdin.Fd()) - - termWidth, termHeight, err := terminal.GetSize(fd) - if err != nil { - return "", err - } - - modes := ssh.TerminalModes{ - ssh.ECHO: 0, - ssh.TTY_OP_ISPEED: 14400, - ssh.TTY_OP_OSPEED: 14400, - } - - // request tty -- fixes error with hosts that use - // "Defaults requiretty" in /etc/sudoers - I'm looking at you RedHat - if err := session.RequestPty("xterm", termHeight, termWidth, modes); err != nil { - return "", err - } - - output, err := session.CombinedOutput(command) - defer session.Close() - - return string(output), err -} - -func (client *NativeClient) Start(command string) (io.ReadCloser, io.ReadCloser, error) { - session, err := client.session(command) - if err != nil { - return nil, nil, err - } - - stdout, err := session.StdoutPipe() - if err != nil { - return nil, nil, err - } - stderr, err := session.StderrPipe() - if err != nil { - return nil, nil, err - } - if err := session.Start(command); err != nil { - return nil, nil, err - } - - client.openSession = session - return ioutil.NopCloser(stdout), ioutil.NopCloser(stderr), nil -} - -func (client *NativeClient) Wait() error { - err := client.openSession.Wait() - _ = client.openSession.Close() - client.openSession = nil - return err -} - -func (client *NativeClient) Shell(args ...string) error { - var ( - termWidth, termHeight int - ) - conn, err := ssh.Dial("tcp", fmt.Sprintf("%s:%d", client.Hostname, client.Port), &client.Config) - if err != nil { - return err - } - - session, err := conn.NewSession() - if err != nil { - return err - } - - defer session.Close() - - session.Stdout = os.Stdout - session.Stderr = os.Stderr - session.Stdin = os.Stdin - - modes := ssh.TerminalModes{ - ssh.ECHO: 1, - } - - fd := os.Stdin.Fd() - - if term.IsTerminal(fd) { - oldState, err := term.MakeRaw(fd) - if err != nil { - return err - } - - defer term.RestoreTerminal(fd, oldState) - - winsize, err := term.GetWinsize(fd) - if err != nil { - termWidth = 80 - termHeight = 24 - } else { - termWidth = int(winsize.Width) - termHeight = int(winsize.Height) - } - } - - if err := session.RequestPty("xterm", termHeight, termWidth, modes); err != nil { - return err - } - - if len(args) == 0 { - if err := session.Shell(); err != nil { - return err - } - session.Wait() - } else { - session.Run(strings.Join(args, " ")) - } - - return nil -} - -func NewExternalClient(sshBinaryPath, user, host string, port int, auth *Auth) (*ExternalClient, error) { - client := &ExternalClient{ - BinaryPath: sshBinaryPath, - } - - args := append(baseSSHArgs, fmt.Sprintf("%s@%s", user, host)) - - // If no identities are explicitly provided, also look at the identities - // offered by ssh-agent - if len(auth.Keys) > 0 { - args = append(args, "-o", "IdentitiesOnly=yes") - } - - // Specify which private keys to use to authorize the SSH request. - for _, privateKeyPath := range auth.Keys { - if privateKeyPath != "" { - // Check each private key before use it - fi, err := os.Stat(privateKeyPath) - if err != nil { - // Abort if key not accessible - return nil, err - } - if runtime.GOOS != "windows" { - mode := fi.Mode() - log.Debugf("Using SSH private key: %s (%s)", privateKeyPath, mode) - // Private key file should have strict permissions - perm := mode.Perm() - if perm&0400 == 0 { - return nil, fmt.Errorf("'%s' is not readable", privateKeyPath) - } - if perm&0077 != 0 { - return nil, fmt.Errorf("permissions %#o for '%s' are too open", perm, privateKeyPath) - } - } - args = append(args, "-i", privateKeyPath) - } - } - - // Set which port to use for SSH. - args = append(args, "-p", fmt.Sprintf("%d", port)) - - client.BaseArgs = args - - return client, nil -} - -func getSSHCmd(binaryPath string, args ...string) *exec.Cmd { - return exec.Command(binaryPath, args...) -} - -func (client *ExternalClient) Output(command string) (string, error) { - args := append(client.BaseArgs, command) - cmd := getSSHCmd(client.BinaryPath, args...) - output, err := cmd.CombinedOutput() - return string(output), err -} - -func (client *ExternalClient) Shell(args ...string) error { - args = append(client.BaseArgs, args...) - cmd := getSSHCmd(client.BinaryPath, args...) - - log.Debug(cmd) - - cmd.Stdin = os.Stdin - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - - return cmd.Run() -} - -func (client *ExternalClient) Start(command string) (io.ReadCloser, io.ReadCloser, error) { - args := append(client.BaseArgs, command) - cmd := getSSHCmd(client.BinaryPath, args...) - - log.Debug(cmd) - - stdout, err := cmd.StdoutPipe() - if err != nil { - return nil, nil, err - } - stderr, err := cmd.StderrPipe() - if err != nil { - if closeErr := stdout.Close(); closeErr != nil { - return nil, nil, fmt.Errorf("%s, %s", err, closeErr) - } - return nil, nil, err - } - if err := cmd.Start(); err != nil { - stdOutCloseErr := stdout.Close() - stdErrCloseErr := stderr.Close() - if stdOutCloseErr != nil || stdErrCloseErr != nil { - return nil, nil, fmt.Errorf("%s, %s, %s", - err, stdOutCloseErr, stdErrCloseErr) - } - return nil, nil, err - } - - client.cmd = cmd - return stdout, stderr, nil -} - -func (client *ExternalClient) Wait() error { - err := client.cmd.Wait() - client.cmd = nil - return err -} diff --git a/vendor/github.com/docker/machine/libmachine/ssh/client_test.go b/vendor/github.com/docker/machine/libmachine/ssh/client_test.go deleted file mode 100644 index 5610c1c0..00000000 --- a/vendor/github.com/docker/machine/libmachine/ssh/client_test.go +++ /dev/null @@ -1,106 +0,0 @@ -package ssh - -import ( - "fmt" - "io/ioutil" - "os" - "runtime" - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestGetSSHCmdArgs(t *testing.T) { - cases := []struct { - binaryPath string - args []string - expectedArgs []string - }{ - { - binaryPath: "/usr/local/bin/ssh", - args: []string{ - "docker@localhost", - "apt-get install -y htop", - }, - expectedArgs: []string{ - "/usr/local/bin/ssh", - "docker@localhost", - "apt-get install -y htop", - }, - }, - { - binaryPath: "C:\\Program Files\\Git\\bin\\ssh.exe", - args: []string{ - "docker@localhost", - "sudo /usr/bin/sethostname foobar && echo 'foobar' | sudo tee /var/lib/boot2docker/etc/hostname", - }, - expectedArgs: []string{ - "C:\\Program Files\\Git\\bin\\ssh.exe", - "docker@localhost", - "sudo /usr/bin/sethostname foobar && echo 'foobar' | sudo tee /var/lib/boot2docker/etc/hostname", - }, - }, - } - - for _, c := range cases { - cmd := getSSHCmd(c.binaryPath, c.args...) - assert.Equal(t, cmd.Args, c.expectedArgs) - } -} - -func TestNewExternalClient(t *testing.T) { - keyFile, err := ioutil.TempFile("", "docker-machine-tests-dummy-private-key") - if err != nil { - t.Fatal(err) - } - defer keyFile.Close() - - keyFilename := keyFile.Name() - defer os.Remove(keyFilename) - - cases := []struct { - sshBinaryPath string - user string - host string - port int - auth *Auth - perm os.FileMode - expectedError string - skipOS string - }{ - { - auth: &Auth{Keys: []string{"/tmp/private-key-not-exist"}}, - expectedError: "stat /tmp/private-key-not-exist: no such file or directory", - skipOS: "none", - }, - { - auth: &Auth{Keys: []string{keyFilename}}, - perm: 0400, - skipOS: "windows", - }, - { - auth: &Auth{Keys: []string{keyFilename}}, - perm: 0100, - expectedError: fmt.Sprintf("'%s' is not readable", keyFilename), - skipOS: "windows", - }, - { - auth: &Auth{Keys: []string{keyFilename}}, - perm: 0644, - expectedError: fmt.Sprintf("permissions 0644 for '%s' are too open", keyFilename), - skipOS: "windows", - }, - } - - for _, c := range cases { - if runtime.GOOS != c.skipOS { - keyFile.Chmod(c.perm) - _, err := NewExternalClient(c.sshBinaryPath, c.user, c.host, c.port, c.auth) - if c.expectedError != "" { - assert.EqualError(t, err, c.expectedError) - } else { - assert.Equal(t, err, nil) - } - } - } -} diff --git a/vendor/github.com/docker/machine/libmachine/ssh/keys.go b/vendor/github.com/docker/machine/libmachine/ssh/keys.go deleted file mode 100644 index 6f46e7b3..00000000 --- a/vendor/github.com/docker/machine/libmachine/ssh/keys.go +++ /dev/null @@ -1,124 +0,0 @@ -package ssh - -import ( - "crypto/md5" - "crypto/rand" - "crypto/rsa" - "crypto/x509" - "encoding/base64" - "encoding/pem" - "errors" - "fmt" - "io" - "os" - "runtime" - - gossh "golang.org/x/crypto/ssh" -) - -var ( - ErrKeyGeneration = errors.New("Unable to generate key") - ErrValidation = errors.New("Unable to validate key") - ErrPublicKey = errors.New("Unable to convert public key") - ErrUnableToWriteFile = errors.New("Unable to write file") -) - -type KeyPair struct { - PrivateKey []byte - PublicKey []byte -} - -// NewKeyPair generates a new SSH keypair -// This will return a private & public key encoded as DER. -func NewKeyPair() (keyPair *KeyPair, err error) { - priv, err := rsa.GenerateKey(rand.Reader, 2048) - if err != nil { - return nil, ErrKeyGeneration - } - - if err := priv.Validate(); err != nil { - return nil, ErrValidation - } - - privDer := x509.MarshalPKCS1PrivateKey(priv) - - pubSSH, err := gossh.NewPublicKey(&priv.PublicKey) - if err != nil { - return nil, ErrPublicKey - } - - return &KeyPair{ - PrivateKey: privDer, - PublicKey: gossh.MarshalAuthorizedKey(pubSSH), - }, nil -} - -// WriteToFile writes keypair to files -func (kp *KeyPair) WriteToFile(privateKeyPath string, publicKeyPath string) error { - files := []struct { - File string - Type string - Value []byte - }{ - { - File: privateKeyPath, - Value: pem.EncodeToMemory(&pem.Block{Type: "RSA PRIVATE KEY", Headers: nil, Bytes: kp.PrivateKey}), - }, - { - File: publicKeyPath, - Value: kp.PublicKey, - }, - } - - for _, v := range files { - f, err := os.Create(v.File) - if err != nil { - return ErrUnableToWriteFile - } - - if _, err := f.Write(v.Value); err != nil { - return ErrUnableToWriteFile - } - - // windows does not support chmod - switch runtime.GOOS { - case "darwin", "linux": - if err := f.Chmod(0600); err != nil { - return err - } - } - } - - return nil -} - -// Fingerprint calculates the fingerprint of the public key -func (kp *KeyPair) Fingerprint() string { - b, _ := base64.StdEncoding.DecodeString(string(kp.PublicKey)) - h := md5.New() - - io.WriteString(h, string(b)) - - return fmt.Sprintf("%x", h.Sum(nil)) -} - -// GenerateSSHKey generates SSH keypair based on path of the private key -// The public key would be generated to the same path with ".pub" added -func GenerateSSHKey(path string) error { - if _, err := os.Stat(path); err != nil { - if !os.IsNotExist(err) { - return fmt.Errorf("Desired directory for SSH keys does not exist: %s", err) - } - - kp, err := NewKeyPair() - if err != nil { - return fmt.Errorf("Error generating key pair: %s", err) - } - - if err := kp.WriteToFile(path, fmt.Sprintf("%s.pub", path)); err != nil { - return fmt.Errorf("Error writing keys to file(s): %s", err) - } - } - - return nil -} diff --git a/vendor/github.com/docker/machine/libmachine/ssh/keys_test.go b/vendor/github.com/docker/machine/libmachine/ssh/keys_test.go deleted file mode 100644 index 07e3b832..00000000 --- a/vendor/github.com/docker/machine/libmachine/ssh/keys_test.go +++ /dev/null @@ -1,21 +0,0 @@ -package ssh - -import ( - "encoding/pem" - "testing" -) - -func TestNewKeyPair(t *testing.T) { - pair, err := NewKeyPair() - if err != nil { - t.Fatal(err) - } - - if privPem := pem.EncodeToMemory(&pem.Block{Type: "RSA PRIVATE KEY", Headers: nil, Bytes: pair.PrivateKey}); len(privPem) == 0 { - t.Fatal("No PEM returned") - } - - if fingerprint := pair.Fingerprint(); len(fingerprint) == 0 { - t.Fatal("Unable to generate fingerprint") - } -} diff --git a/vendor/github.com/docker/machine/libmachine/ssh/ssh_test.go b/vendor/github.com/docker/machine/libmachine/ssh/ssh_test.go deleted file mode 100644 index 8722dc72..00000000 --- a/vendor/github.com/docker/machine/libmachine/ssh/ssh_test.go +++ /dev/null @@ -1,28 +0,0 @@ -package ssh - -import ( - "io/ioutil" - "os" - "path/filepath" - "testing" -) - -func TestGenerateSSHKey(t *testing.T) { - tmpDir, err := ioutil.TempDir("", "machine-test-") - if err != nil { - t.Fatal(err) - } - - filename := filepath.Join(tmpDir, "sshkey") - - if err := GenerateSSHKey(filename); err != nil { - t.Fatal(err) - } - - if _, err := os.Stat(filename); err != nil { - t.Fatalf("expected ssh key at %s", filename) - } - - // cleanup - _ = os.RemoveAll(tmpDir) -} diff --git a/vendor/github.com/docker/machine/libmachine/ssh/sshtest/fake_client.go b/vendor/github.com/docker/machine/libmachine/ssh/sshtest/fake_client.go deleted file mode 100644 index 2b333b55..00000000 --- a/vendor/github.com/docker/machine/libmachine/ssh/sshtest/fake_client.go +++ /dev/null @@ -1,31 +0,0 @@ -package sshtest - -import "io" - -type CmdResult struct { - Out string - Err error -} - -type FakeClient struct { - ActivatedShell []string - Outputs map[string]CmdResult -} - -func (fsc *FakeClient) Output(command string) (string, error) { - outerr := fsc.Outputs[command] - return outerr.Out, outerr.Err -} - -func (fsc *FakeClient) Shell(args ...string) error { - fsc.ActivatedShell = args - return nil -} - -func (fsc *FakeClient) Start(command string) (io.ReadCloser, io.ReadCloser, error) { - return nil, nil, nil -} - -func (fsc *FakeClient) Wait() error { - return nil -} diff --git a/vendor/github.com/docker/machine/libmachine/state/state.go b/vendor/github.com/docker/machine/libmachine/state/state.go deleted file mode 100644 index 385a173b..00000000 --- a/vendor/github.com/docker/machine/libmachine/state/state.go +++ /dev/null @@ -1,36 +0,0 @@ -package state - -// State represents the state of a host -type State int - -const ( - None State = iota - Running - Paused - Saved - Stopped - Stopping - Starting - Error - Timeout -) - -var states = []string{ - "", - "Running", - "Paused", - "Saved", - "Stopped", - "Stopping", - "Starting", - "Error", - "Timeout", -} - -// Given a State type, returns its string representation -func (s State) String() string { - if int(s) >= 0 && int(s) < len(states) { - return states[s] - } - return "" -} diff --git a/vendor/github.com/docker/machine/libmachine/state/state_test.go b/vendor/github.com/docker/machine/libmachine/state/state_test.go deleted file mode 100644 index b53bb70e..00000000 --- a/vendor/github.com/docker/machine/libmachine/state/state_test.go +++ /dev/null @@ -1,17 +0,0 @@ -package state - -import ( - "testing" -) - -func TestDaemonCreate(t *testing.T) { - if None.String() != "" { - t.Fatal("None state should be empty string") - } - if Running.String() != "Running" { - t.Fatal("Running state should be 'Running'") - } - if Error.String() != "Error" { - t.Fatal("Error state should be 'Error'") - } -} diff --git a/vendor/github.com/docker/machine/libmachine/swarm/swarm.go b/vendor/github.com/docker/machine/libmachine/swarm/swarm.go deleted file mode 100644 index ee452883..00000000 --- a/vendor/github.com/docker/machine/libmachine/swarm/swarm.go +++ /dev/null @@ -1,22 +0,0 @@ -package swarm - -const ( - DiscoveryServiceEndpoint = "https://discovery-stage.hub.docker.com/v1" -) - -type Options struct { - IsSwarm bool - Address string - Discovery string - Agent bool - Master bool - Host string - Image string - Strategy string - Heartbeat int - Overcommit float64 - ArbitraryFlags []string - ArbitraryJoinFlags []string - Env []string - IsExperimental bool -} diff --git a/vendor/github.com/docker/machine/libmachine/version/version.go b/vendor/github.com/docker/machine/libmachine/version/version.go deleted file mode 100644 index 3cacffdb..00000000 --- a/vendor/github.com/docker/machine/libmachine/version/version.go +++ /dev/null @@ -1,11 +0,0 @@ -package version - -var ( - // APIVersion dictates which version of the libmachine API this is. - APIVersion = 1 - - // ConfigVersion dictates which version of the config.json format is - // used. It needs to be bumped if there is a breaking change, and - // therefore migration, introduced to the config file format. - ConfigVersion = 3 -) diff --git a/vendor/github.com/docker/machine/mk/build.mk b/vendor/github.com/docker/machine/mk/build.mk deleted file mode 100644 index a820165b..00000000 --- a/vendor/github.com/docker/machine/mk/build.mk +++ /dev/null @@ -1,34 +0,0 @@ -extension = $(patsubst windows,.exe,$(filter windows,$(1))) - -# Valid target combinations -VALID_OS_ARCH := "[darwin/amd64][linux/amd64][windows/amd64][windows/386]" - -os.darwin := Darwin -os.linux := Linux -os.windows := Windows - -arch.amd64 := x86_64 -arch.386 := i386 - -define gocross - $(if $(findstring [$(1)/$(2)],$(VALID_OS_ARCH)), \ - GOOS=$(1) GOARCH=$(2) CGO_ENABLED=0 \ - $(GO) build \ - -o $(PREFIX)/bin/docker-machine-${os.$(1)}-${arch.$(2)}$(call extension,$(GOOS)) \ - -a $(VERBOSE_GO) -tags "static_build netgo $(BUILDTAGS)" -installsuffix netgo \ - -ldflags "$(GO_LDFLAGS) -extldflags -static" $(GO_GCFLAGS) ./cmd/machine.go;) -endef - -build-clean: - rm -Rf $(PREFIX)/bin/* - -build-x: $(shell find . -type f -name '*.go') - $(foreach GOARCH,$(TARGET_ARCH),$(foreach GOOS,$(TARGET_OS),$(call gocross,$(GOOS),$(GOARCH)))) - -$(PREFIX)/bin/docker-machine$(call extension,$(GOOS)): $(shell find . -type f -name '*.go') - $(GO) build \ - -o $@ \ - $(VERBOSE_GO) -tags "$(BUILDTAGS)" \ - -ldflags "$(GO_LDFLAGS)" $(GO_GCFLAGS) ./cmd/machine.go - -build: $(PREFIX)/bin/docker-machine$(call extension,$(GOOS)) diff --git a/vendor/github.com/docker/machine/mk/coverage.mk b/vendor/github.com/docker/machine/mk/coverage.mk deleted file mode 100644 index 751b4375..00000000 --- a/vendor/github.com/docker/machine/mk/coverage.mk +++ /dev/null @@ -1,45 +0,0 @@ -# COVERAGE_OUTPUT dir is a temp dir (OSX/Linux compatible), unless explicitly specified through env COVERAGE_DIR -COVERAGE_OUTPUT := $(COVERAGE_DIR) -ifeq ($(COVERAGE_OUTPUT),) - COVERAGE_OUTPUT := $(shell mktemp -d 2>/dev/null || mktemp -d -t machine-coverage) -endif - -# Final cover file, html, and mode -COVERAGE_PROFILE := $(COVERAGE_OUTPUT)/profile.out -COVERAGE_HTML := $(COVERAGE_OUTPUT)/index.html -COVERAGE_MODE := set - -# Goveralls dependency -GOVERALLS_BIN := $(GOPATH)/bin/goveralls -GOVERALLS := $(shell [ -x $(GOVERALLS_BIN) ] && echo $(GOVERALLS_BIN) || echo '') - -# Generate coverage -coverage-generate: $(COVERAGE_PROFILE) - -# Send the results to coveralls -coverage-send: $(COVERAGE_PROFILE) - $(if $(GOVERALLS), , $(error Please install goveralls: go get github.com/mattn/goveralls)) - @$(GOVERALLS) -service travis-ci -coverprofile="$(COVERAGE_PROFILE)" - -# Generate html report -coverage-html: $(COVERAGE_HTML) - @open "$(COVERAGE_HTML)" - -# Serve over http - useful only if building remote/headless -coverage-serve: $(COVERAGE_HTML) - @cd "$(COVERAGE_OUTPUT)" && python -m SimpleHTTPServer 8000 - -# Clean up coverage coverage output -coverage-clean: - @rm -Rf "$(COVERAGE_OUTPUT)/coverage" - @rm -f "$(COVERAGE_HTML)" - @rm -f "$(COVERAGE_PROFILE)" - -$(COVERAGE_PROFILE): $(shell find . -type f -name '*.go') - @mkdir -p "$(COVERAGE_OUTPUT)/coverage" - @$(foreach PKG,$(PKGS), go test $(VERBOSE_GO) -tags "$(BUILDTAGS)" -covermode=$(COVERAGE_MODE) -coverprofile="$(COVERAGE_OUTPUT)/coverage/`echo $(PKG) | tr "/" "-"`.cover" "$(PKG)";) - @echo "mode: $(COVERAGE_MODE)" > "$(COVERAGE_PROFILE)" - @grep -h -v "^mode:" "$(COVERAGE_OUTPUT)/coverage"/*.cover >> "$(COVERAGE_PROFILE)" - -$(COVERAGE_HTML): $(COVERAGE_PROFILE) - $(GO) tool cover -html="$(COVERAGE_PROFILE)" -o "$(COVERAGE_HTML)" diff --git a/vendor/github.com/docker/machine/mk/dev.mk b/vendor/github.com/docker/machine/mk/dev.mk deleted file mode 100644 index 8f19b806..00000000 --- a/vendor/github.com/docker/machine/mk/dev.mk +++ /dev/null @@ -1,9 +0,0 @@ -dep-save: - $(if $(GODEP), , \ - $(error Please install godep: go get github.com/tools/godep)) - $(GODEP) save $(shell go list ./... | grep -v vendor/) - -dep-restore: - $(if $(GODEP), , \ - $(error Please install godep: go get github.com/tools/godep)) - $(GODEP) restore -v diff --git a/vendor/github.com/docker/machine/mk/main.mk b/vendor/github.com/docker/machine/mk/main.mk deleted file mode 100644 index 099dd1f8..00000000 --- a/vendor/github.com/docker/machine/mk/main.mk +++ /dev/null @@ -1,58 +0,0 @@ -# Initialize version and gc flags -GO_LDFLAGS := -X `go list ./version`.GitCommit=`git rev-parse --short HEAD 2>/dev/null` -GO_GCFLAGS := - -# Full package list -PKGS := $(shell go list -tags "$(BUILDTAGS)" ./... | grep -v "/vendor/" | grep -v "/cmd") - -# Resolving binary dependencies for specific targets -GOLINT_BIN := $(GOPATH)/bin/golint -GOLINT := $(shell [ -x $(GOLINT_BIN) ] && echo $(GOLINT_BIN) || echo '') - -GODEP_BIN := $(GOPATH)/bin/godep -GODEP := $(shell [ -x $(GODEP_BIN) ] && echo $(GODEP_BIN) || echo '') - -# Honor debug -ifeq ($(DEBUG),true) - # Disable function inlining and variable registerization - GO_GCFLAGS := -gcflags "-N -l" -else - # Turn of DWARF debugging information and strip the binary otherwise - GO_LDFLAGS := $(GO_LDFLAGS) -w -s -endif - -# Honor static -ifeq ($(STATIC),true) - # Append to the version - GO_LDFLAGS := $(GO_LDFLAGS) -extldflags -static -endif - -# Honor verbose -VERBOSE_GO := -GO := go -ifeq ($(VERBOSE),true) - VERBOSE_GO := -v -endif - -include mk/build.mk -include mk/coverage.mk -include mk/dev.mk -include mk/test.mk -include mk/validate.mk - -.all_build: build build-clean build-x -.all_coverage: coverage-generate coverage-html coverage-send coverage-serve coverage-clean -.all_release: release-checksum release -.all_test: test-short test-long test-integration -.all_validate: dco fmt vet lint - -default: build - -install: - cp $(PREFIX)/bin/docker-machine /usr/local/bin - -clean: coverage-clean build-clean -test: dco fmt test-short lint vet -validate: dco fmt lint vet test-long - -.PHONY: .all_build .all_coverage .all_release .all_test .all_validate test build validate clean diff --git a/vendor/github.com/docker/machine/mk/test.mk b/vendor/github.com/docker/machine/mk/test.mk deleted file mode 100644 index c0c9df90..00000000 --- a/vendor/github.com/docker/machine/mk/test.mk +++ /dev/null @@ -1,11 +0,0 @@ -# Quick test. You can bypass long tests using: `if testing.Short() { t.Skip("Skipping in short mode.") }` -test-short: - $(GO) test $(VERBOSE_GO) -test.short -tags "$(BUILDTAGS)" $(PKGS) - -# Runs long tests also, plus race detection -test-long: - $(GO) test $(VERBOSE_GO) -race -tags "$(BUILDTAGS)" $(PKGS) - -test-integration: build - $(eval TESTSUITE=$(filter-out $@,$(MAKECMDGOALS))) - test/integration/run-bats.sh $(TESTSUITE) diff --git a/vendor/github.com/docker/machine/mk/validate.mk b/vendor/github.com/docker/machine/mk/validate.mk deleted file mode 100644 index fac20cb1..00000000 --- a/vendor/github.com/docker/machine/mk/validate.mk +++ /dev/null @@ -1,20 +0,0 @@ -# Validate DCO on all history -mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST))) -current_dir := $(notdir $(patsubst %/,%,$(dir $(mkfile_path)))) - -# XXX vendorized script miss exec bit, hence the gymnastic -# plus the path resolution... -# TODO migrate away from the shell script and have a make equivalent instead -dco: - @echo `bash $(current_dir)/../script/validate-dco` - -fmt: - @test -z "$$(gofmt -s -l . 2>&1 | grep -v vendor/ | tee /dev/stderr)" - -vet: - @test -z "$$(go vet $(PKGS) 2>&1 | tee /dev/stderr)" - -lint: - $(if $(GOLINT), , \ - $(error Please install golint: go get -u github.com/golang/lint/golint)) - @test -z "$$($(GOLINT) ./... 2>&1 | grep -v vendor/ | grep -v "cli/" | grep -v "amazonec2/" |grep -v "openstack/" |grep -v "softlayer/" | grep -v "should have comment" | tee /dev/stderr)" diff --git a/vendor/github.com/docker/machine/script/.validate b/vendor/github.com/docker/machine/script/.validate deleted file mode 100644 index fd52677e..00000000 --- a/vendor/github.com/docker/machine/script/.validate +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash - -if [ -z "$VALIDATE_UPSTREAM" ]; then - # this is kind of an expensive check, so let's not do this twice if we - # are running more than one validate bundlescript - - VALIDATE_REPO='https://github.com/docker/machine.git' - VALIDATE_BRANCH='master' - - if [ "$TRAVIS" = 'true' -a "$TRAVIS_PULL_REQUEST" != 'false' ]; then - VALIDATE_REPO="https://github.com/${TRAVIS_REPO_SLUG}.git" - VALIDATE_BRANCH="${TRAVIS_BRANCH}" - fi - - VALIDATE_HEAD="$(git rev-parse --verify HEAD)" - - git fetch -q "$VALIDATE_REPO" "refs/heads/$VALIDATE_BRANCH" - VALIDATE_UPSTREAM="$(git rev-parse --verify FETCH_HEAD)" - - VALIDATE_COMMIT_LOG="$VALIDATE_UPSTREAM..$VALIDATE_HEAD" - VALIDATE_COMMIT_DIFF="$VALIDATE_UPSTREAM...$VALIDATE_HEAD" - - validate_diff() { - if [ "$VALIDATE_UPSTREAM" != "$VALIDATE_HEAD" ]; then - git diff "$VALIDATE_COMMIT_DIFF" "$@" - fi - } - validate_log() { - if [ "$VALIDATE_UPSTREAM" != "$VALIDATE_HEAD" ]; then - git log "$VALIDATE_COMMIT_LOG" "$@" - fi - } -fi diff --git a/vendor/github.com/docker/machine/script/build_in_container.sh b/vendor/github.com/docker/machine/script/build_in_container.sh deleted file mode 100644 index 130bb84f..00000000 --- a/vendor/github.com/docker/machine/script/build_in_container.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash - -set -e - -DOCKER_IMAGE_NAME="docker-machine-build" -DOCKER_CONTAINER_NAME="docker-machine-build-container" - -if [[ $(docker ps -a | grep $DOCKER_CONTAINER_NAME) != "" ]]; then - docker rm -f $DOCKER_CONTAINER_NAME 2>/dev/null -fi - -docker build -t $DOCKER_IMAGE_NAME . - -docker run --name $DOCKER_CONTAINER_NAME \ - -e DEBUG \ - -e STATIC \ - -e VERBOSE \ - -e BUILDTAGS \ - -e PARALLEL \ - -e COVERAGE_DIR \ - -e TARGET_OS \ - -e TARGET_ARCH \ - -e PREFIX \ - -e TRAVIS_JOB_ID \ - -e TRAVIS_PULL_REQUEST \ - $DOCKER_IMAGE_NAME \ - make "$@" - -if [[ "$@" == *"clean"* ]] && [[ -d bin ]]; then - rm -Rf bin -fi - -docker cp $DOCKER_CONTAINER_NAME:/go/src/github.com/docker/machine/bin . diff --git a/vendor/github.com/docker/machine/script/release.sh b/vendor/github.com/docker/machine/script/release.sh deleted file mode 100644 index 512bb02f..00000000 --- a/vendor/github.com/docker/machine/script/release.sh +++ /dev/null @@ -1,244 +0,0 @@ -#!/bin/bash - -GITHUB_USER=docker -GITHUB_REPO=machine -PROJECT_URL="git@github.com:${GITHUB_USER}/${GITHUB_REPO}" - -function usage { - echo "Usage: " - echo " GITHUB_TOKEN=XXXXX ${0} [X.Y.Z]" -} - -function display { - echo "🐳 $1" - echo -} - -function checkError { - if [[ "$?" -ne 0 ]]; then - echo "😡 $1" - exit 1 - fi -} - -function createMachine { - docker-machine rm -f release 2> /dev/null - docker-machine create -d virtualbox --virtualbox-cpu-count=2 --virtualbox-memory=2048 release -} - -if [[ -z "${GITHUB_TOKEN}" ]]; then - echo "GITHUB_TOKEN missing" - usage - exit 1 -fi - -VERSION=$1 - -if [[ -z "${VERSION}" ]]; then - echo "Missing version argument" - usage - exit 1 -fi - -if [[ ! "${VERSION}" =~ ^[0-9]\.[0-9](\.[0-9])?(-rc[1-9][0-9]*)?$ ]]; then - echo "Invalid version. It should look like 0.5.1, 0.6 or 0.5.1-rc2" - exit 1 -fi - -command -v git > /dev/null 2>&1 -checkError "You obviously need git, please consider installing it..." - -command -v github-release > /dev/null 2>&1 -checkError "github-release is not installed, go get -u github.com/aktau/github-release or check https://github.com/aktau/github-release, aborting." - -command -v openssl > /dev/null 2>&1 -checkError "You need openssl to generate binaries signature, brew install it, aborting." - -command -v docker-machine > /dev/null 2>&1 -checkError "You must have a docker-machine in your path" - -GITHUB_VERSION="v${VERSION}" -RELEASE_DIR="$(dirname "$(git rev-parse --show-toplevel)")/release-${VERSION}" -GITHUB_RELEASE_FILE="github-release-${VERSION}.md" - -LAST_RELEASE_VERSION=$(git describe --tags $(git rev-list --tags --max-count=1)) -checkError "Unable to find current version tag" - -display "Starting release from ${LAST_RELEASE_VERSION} to ${GITHUB_VERSION} on ${PROJECT_URL} with token ${GITHUB_TOKEN}" -if [[ "${GITHUB_USER}" == "docker" ]]; then - display "THIS IS A REAL RELEASE, on OFFICIAL DOCKER REPO" -fi -while true; do - read -p "🐳 Do you want to proceed with this release? (y/n) > " yn - echo "" - case $yn in - [Yy]* ) break;; - [Nn]* ) exit;; - * ) echo "😡 Please answer yes or no.";; - esac -done - -display "Checking machine 'release' status" -MACHINE_STATUS=$(docker-machine status release) -if [[ "$?" -ne 0 ]]; then - display "Machine 'release' does not exist, creating it" - createMachine -else - if [[ "${MACHINE_STATUS}" != "Running" ]]; then - display "Machine 'release' is not running, trying to start it" - docker-machine start release - docker-machine env release - if [[ "$?" -ne 0 ]]; then - display "Machine 'release' could not be started, removing and creating a fresh new one" - createMachine - fi - display "Loosing 5 seconds to the VirtualBox gods" - sleep 5 - fi -fi - -eval "$(docker-machine env release)" -checkError "Machine 'release' is in a weird state, aborting" - -if [[ -d "${RELEASE_DIR}" ]]; then - display "Cleaning up ${RELEASE_DIR}" - rm -rdf "${RELEASE_DIR}" - checkError "Can't clean up ${RELEASE_DIR}. You should do it manually and retry" -fi - -display "Cloning into ${RELEASE_DIR} from ${PROJECT_URL}" - -mkdir -p "${RELEASE_DIR}" -checkError "Can't create ${RELEASE_DIR}, aborting" -git clone -q "${PROJECT_URL}" "${RELEASE_DIR}" -checkError "Can't clone into ${RELEASE_DIR}, aborting" - -cd "${RELEASE_DIR}" - -display "Bump version number to ${VERSION}" - -# Why 'sed' and then 'mv' instead of 'sed -i'? BSD / GNU sed compatibility. -# Macs have BSD sed by default, Linux has GNU sed. See -# http://unix.stackexchange.com/questions/92895/how-to-achieve-portability-with-sed-i-in-place-editing -sed -e "s/Version = \".*\"$/Version = \"${VERSION}\"/g" version/version.go >version/version.go.new -checkError "Unable to change version in version/version.go" -mv -- version/version.go.new version/version.go - -git add version/version.go -git commit -q -m"Bump version to ${VERSION}" -s -checkError "Can't git commit the version upgrade, aborting" - -display "Building in-container style" -USE_CONTAINER=true make clean build validate build-x -checkError "Build error, aborting" - -display "Generating github release" -cp -f script/release/github-release-template.md "${GITHUB_RELEASE_FILE}" -checkError "Can't find github release template" -CONTRIBUTORS=$(git log "${LAST_RELEASE_VERSION}".. --format="%aN" --reverse | sort | uniq | awk '{printf "- %s\n", $0 }') -CHANGELOG=$(git log "${LAST_RELEASE_VERSION}".. --oneline | grep -v 'Merge pull request') - -CHECKSUM="" -for file in $(ls bin/docker-machine*); do - SHA256=$(openssl dgst -sha256 < "${file}") - MD5=$(openssl dgst -md5 < "${file}") - LINE=$(printf "\n * **%s**\n * sha256 \`%s\`\n * md5 \`%s\`\n\n" "$(basename ${file})" "${SHA256}" "${MD5}") - CHECKSUM="${CHECKSUM}${LINE}" -done - -TEMPLATE=$(cat "${GITHUB_RELEASE_FILE}") -echo "${TEMPLATE//\{\{VERSION\}\}/$GITHUB_VERSION}" > "${GITHUB_RELEASE_FILE}" -checkError "Couldn't replace [ ${GITHUB_VERSION} ]" - -TEMPLATE=$(cat "${GITHUB_RELEASE_FILE}") -echo "${TEMPLATE//\{\{CHANGELOG\}\}/$CHANGELOG}" > "${GITHUB_RELEASE_FILE}" -checkError "Couldn't replace [ ${CHANGELOG} ]" - -TEMPLATE=$(cat "${GITHUB_RELEASE_FILE}") -echo "${TEMPLATE//\{\{CONTRIBUTORS\}\}/$CONTRIBUTORS}" > "${GITHUB_RELEASE_FILE}" -checkError "Couldn't replace [ ${CONTRIBUTORS} ]" - -TEMPLATE=$(cat "${GITHUB_RELEASE_FILE}") -echo "${TEMPLATE//\{\{CHECKSUM\}\}/$CHECKSUM}" > "${GITHUB_RELEASE_FILE}" -checkError "Couldn't replace [ ${CHECKSUM} ]" - -RELEASE_DOCUMENTATION="$(cat ${GITHUB_RELEASE_FILE})" - -display "Tagging and pushing tags" -git remote | grep -q remote.prod.url -if [[ "$?" -ne 0 ]]; then - display "Adding 'remote.prod.url' remote git url" - git remote add remote.prod.url "${PROJECT_URL}" -fi - -display "Checking if remote tag ${GITHUB_VERSION} already exists" -git ls-remote --tags 2> /dev/null | grep -q "${GITHUB_VERSION}" # returns 0 if found, 1 if not -if [[ "$?" -ne 1 ]]; then - display "Deleting previous tag ${GITHUB_VERSION}" - git tag -d "${GITHUB_VERSION}" &> /dev/null - git push -q origin :refs/tags/"${GITHUB_VERSION}" -else - echo "Tag ${GITHUB_VERSION} does not exist... yet" -fi - -display "Tagging release on github" -git tag "${GITHUB_VERSION}" -git push -q remote.prod.url "${GITHUB_VERSION}" -checkError "Could not push to remote url" - -display "Checking if release already exists" -github-release info \ - --security-token "${GITHUB_TOKEN}" \ - --user "${GITHUB_USER}" \ - --repo "${GITHUB_REPO}" \ - --tag "${GITHUB_VERSION}" > /dev/null 2>&1 - -if [[ "$?" -ne 1 ]]; then - display "Release already exists, cleaning it up" - github-release delete \ - --security-token "${GITHUB_TOKEN}" \ - --user "${GITHUB_USER}" \ - --repo "${GITHUB_REPO}" \ - --tag "${GITHUB_VERSION}" - checkError "Could not delete release, aborting" -fi - -display "Creating release on github" -github-release release \ - --security-token "${GITHUB_TOKEN}" \ - --user "${GITHUB_USER}" \ - --repo "${GITHUB_REPO}" \ - --tag "${GITHUB_VERSION}" \ - --name "${GITHUB_VERSION}" \ - --description "${RELEASE_DOCUMENTATION}" \ - --pre-release -checkError "Could not create release, aborting" - -display "Uploading binaries" -for file in $(ls bin/docker-machine-*); do - display "Uploading ${file}..." - github-release upload \ - --security-token "${GITHUB_TOKEN}" \ - --user "${GITHUB_USER}" \ - --repo "${GITHUB_REPO}" \ - --tag "${GITHUB_VERSION}" \ - --name "$(basename "${file}")" \ - --file "${file}" - if [[ "$?" -ne 0 ]]; then - display "Could not upload ${file}, continuing with others" - fi -done - -git remote rm remote.prod.url - -rm ${GITHUB_RELEASE_FILE} - -echo "There is a couple of tasks your still need to do manually:" -echo " 1. Open the release notes created for you on github https://github.com/${GITHUB_USER}/${GITHUB_REPO}/releases/tag/${GITHUB_VERSION}, you'll have a chance to enhance commit details a bit" -echo " 2. Once you're happy with your release notes on github, copy the list of changes to the CHANGELOG.md" -echo " 3. Update the documentation branch" -echo " 4. Test the binaries linked from the github release page" -echo " 5. Change version/version.go to the next dev version" -echo " 6. Party !!" -echo -echo "The full details of these tasks are described in the RELEASE.md document, available at https://github.com/${GITHUB_USER}/${GITHUB_REPO}/blob/master/docs/RELEASE.md" diff --git a/vendor/github.com/docker/machine/script/release/github-release-template.md b/vendor/github.com/docker/machine/script/release/github-release-template.md deleted file mode 100644 index d86355ca..00000000 --- a/vendor/github.com/docker/machine/script/release/github-release-template.md +++ /dev/null @@ -1,43 +0,0 @@ -## Installation - -If you're a Mac or Windows user, the [Docker Toolbox](https://www.docker.com/docker-toolbox) will install Docker Machine {{VERSION}} for you, alongside the latest versions of the Docker Engine, Compose and Kitematic. - -You can use the usual commands to install or upgrade: - -On OS X or Linux -```console -$ curl -L https://github.com/docker/machine/releases/download/{{VERSION}}/docker-machine-`uname -s`-`uname -m` >/usr/local/bin/docker-machine && \ - chmod +x /usr/local/bin/docker-machine -``` -On Windows with git bash -```console -$ if [[ ! -d "$HOME/bin" ]]; then mkdir -p "$HOME/bin"; fi && \ -curl -L https://github.com/docker/machine/releases/download/{{VERSION}}/docker-machine-Windows-x86_64.exe > "$HOME/bin/docker-machine.exe" && \ -chmod +x "$HOME/bin/docker-machine.exe" -``` - -Otherwise, download one of the releases from the [release page](https://github.com/docker/machine/releases/) directly. - -See the install [docs](https://docs.docker.com/machine/install-machine/) for more install options and instructions. - -## Changelog - -*Edit the changelog below by hand* - -{{CHANGELOG}} - -## Thank You - -Thank you very much to our active users and contributors. If you have filed detailed bug reports, THANK YOU! -Please continue to do so if you encounter any issues. It's your hard work that makes Docker Machine better. - -The following authors contributed changes to this release: - -{{CONTRIBUTORS}} - -Great thanks to all of the above! We appreciate it. Keep up the great work! - -## Checksums - -{{CHECKSUM}} - diff --git a/vendor/github.com/docker/machine/script/validate-dco b/vendor/github.com/docker/machine/script/validate-dco deleted file mode 100644 index 1c75d91b..00000000 --- a/vendor/github.com/docker/machine/script/validate-dco +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/bash - -source "$(dirname "$BASH_SOURCE")/.validate" - -adds=$(validate_diff --numstat | awk '{ s += $1 } END { print s }') -dels=$(validate_diff --numstat | awk '{ s += $2 } END { print s }') -notDocs="$(validate_diff --numstat | awk '$3 !~ /^docs\// { print $3 }')" - -: ${adds:=0} -: ${dels:=0} - -# "Username may only contain alphanumeric characters or dashes and cannot begin with a dash" -githubUsernameRegex='[a-zA-Z0-9][a-zA-Z0-9-]+' - -# https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work -dcoPrefix='Signed-off-by:' -dcoRegex="^(Docker-DCO-1.1-)?$dcoPrefix ([^<]+) <([^<>@]+@[^<>]+)>( \\(github: ($githubUsernameRegex)\\))?$" - -check_dco() { - grep -qE "$dcoRegex" -} - -if [ $adds -eq 0 -a $dels -eq 0 ]; then - echo '0 adds, 0 deletions; nothing to validate! :)' -elif [ -z "$notDocs" -a $adds -le 1 -a $dels -le 1 ]; then - echo 'Congratulations! DCO small-patch-exception material!' -else - commits=( $(validate_log --format='format:%H%n') ) - badCommits=() - for commit in "${commits[@]}"; do - if [ -z "$(git log -1 --format='format:' --name-status "$commit")" ]; then - # no content (ie, Merge commit, etc) - continue - fi - if ! git log -1 --format='format:%B' "$commit" | check_dco; then - badCommits+=( "$commit" ) - fi - done - if [ ${#badCommits[@]} -eq 0 ]; then - echo "Congratulations! All commits are properly signed with the DCO!" - else - { - echo "These commits do not have a proper '$dcoPrefix' marker:" - for commit in "${badCommits[@]}"; do - echo " - $commit" - done - echo - echo 'Please amend each commit to include a properly formatted DCO marker.' - echo - echo 'Visit the following URL for information about the Docker DCO:' - echo ' https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work' - echo - } >&2 - false - fi -fi diff --git a/vendor/github.com/docker/machine/test/integration/.gitignore b/vendor/github.com/docker/machine/test/integration/.gitignore deleted file mode 100644 index 9bb348ea..00000000 --- a/vendor/github.com/docker/machine/test/integration/.gitignore +++ /dev/null @@ -1 +0,0 @@ -env-* diff --git a/vendor/github.com/docker/machine/test/integration/amazonec2/amazon.bats b/vendor/github.com/docker/machine/test/integration/amazonec2/amazon.bats deleted file mode 100644 index 28019439..00000000 --- a/vendor/github.com/docker/machine/test/integration/amazonec2/amazon.bats +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env bats - -load ${BASE_TEST_DIR}/helpers.bash - -only_if_env DRIVER amazonec2 - -use_disposable_machine - -require_env AWS_ACCESS_KEY_ID -require_env AWS_SECRET_ACCESS_KEY - -@test "$DRIVER: Should Create a default host" { - run machine create -d amazonec2 $NAME - echo ${output} - [ "$status" -eq 0 ] -} diff --git a/vendor/github.com/docker/machine/test/integration/amazonec2/create-ebsinstance.bats b/vendor/github.com/docker/machine/test/integration/amazonec2/create-ebsinstance.bats deleted file mode 100644 index 2b2661bc..00000000 --- a/vendor/github.com/docker/machine/test/integration/amazonec2/create-ebsinstance.bats +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env bats - -load ${BASE_TEST_DIR}/helpers.bash - -only_if_env DRIVER amazonec2 - -use_disposable_machine - -require_env AWS_ACCESS_KEY_ID -require_env AWS_SECRET_ACCESS_KEY -require_env AWS_VPC_ID - -require_env AWS_DEFAULT_REGION -require_env AWS_ZONE - -@test "$DRIVER: Should Create an EBS Optimized Instance" { - #Use Instance Type that supports EBS Optimize - run machine create -d amazonec2 --amazonec2-instance-type=m4.large --amazonec2-use-ebs-optimized-instance $NAME - echo ${output} - [ "$status" -eq 0 ] -} - -@test "$DRIVER: Check the machine is up" { - run docker $(machine config $NAME) run --rm -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY -e AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION -e AWS_ZONE=$AWS_ZONE -e AWS_VPC_ID=$AWS_VPC_ID blendle/aws-cli ec2 describe-instances --filters Name=tag:Name,Values=$NAME Name=instance-state-name,Values=running --query 'Reservations[0].Instances[0].EbsOptimized' --output text - echo ${output} - [[ ${lines[*]:-1} =~ "True" ]] -} \ No newline at end of file diff --git a/vendor/github.com/docker/machine/test/integration/amazonec2/createwithkeypair.bats b/vendor/github.com/docker/machine/test/integration/amazonec2/createwithkeypair.bats deleted file mode 100644 index c62486c2..00000000 --- a/vendor/github.com/docker/machine/test/integration/amazonec2/createwithkeypair.bats +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env bats - -load ${BASE_TEST_DIR}/helpers.bash - -only_if_env DRIVER amazonec2 - -use_disposable_machine - -require_env AWS_ACCESS_KEY_ID - -require_env AWS_SECRET_ACCESS_KEY - -export AWS_SSH_DIR="$MACHINE_STORAGE_PATH/mcnkeys" - -export AWS_SSH_KEYPATH=$AWS_SSH_DIR/id_rsa - -@test "$DRIVER: Should Create Instance with Pre existing SSH Key" { - - mkdir -p $AWS_SSH_DIR - - run ssh-keygen -f $AWS_SSH_KEYPATH -t rsa -N '' - - machine create -d amazonec2 $NAME - - run diff $AWS_SSH_KEYPATH $MACHINE_STORAGE_PATH/machines/$NAME/id_rsa - [[ $output == "" ]] - - run diff $AWS_SSH_KEYPATH.pub $MACHINE_STORAGE_PATH/machines/$NAME/id_rsa.pub - [[ $output == "" ]] - - -} \ No newline at end of file diff --git a/vendor/github.com/docker/machine/test/integration/core/certs-extra-san.bats b/vendor/github.com/docker/machine/test/integration/core/certs-extra-san.bats deleted file mode 100644 index 0e91d784..00000000 --- a/vendor/github.com/docker/machine/test/integration/core/certs-extra-san.bats +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env bats - -load ${BASE_TEST_DIR}/helpers.bash - -use_disposable_machine - -@test "$DRIVER: create" { - run machine create --tls-san foo.bar.tld --tls-san 10.42.42.42 -d $DRIVER $NAME - echo ${output} - [ "$status" -eq 0 ] -} - -@test "$DRIVER: verify that server cert contains the extra SANs" { - machine ssh $NAME -- openssl x509 -in /var/lib/boot2docker/server.pem -text | grep 'DNS:foo.bar.tld' - machine ssh $NAME -- openssl x509 -in /var/lib/boot2docker/server.pem -text | grep 'IP Address:10.42.42.42' -} - -@test "$DRIVER: verify that server cert SANs are still there after 'regenerate-certs'" { - machine regenerate-certs -f $NAME - machine ssh $NAME -- openssl x509 -in /var/lib/boot2docker/server.pem -text | grep 'DNS:foo.bar.tld' - machine ssh $NAME -- openssl x509 -in /var/lib/boot2docker/server.pem -text | grep 'IP Address:10.42.42.42' -} diff --git a/vendor/github.com/docker/machine/test/integration/core/core-commands.bats b/vendor/github.com/docker/machine/test/integration/core/core-commands.bats deleted file mode 100644 index ca6a9b6f..00000000 --- a/vendor/github.com/docker/machine/test/integration/core/core-commands.bats +++ /dev/null @@ -1,156 +0,0 @@ -#!/usr/bin/env bats - -load ${BASE_TEST_DIR}/helpers.bash - -use_shared_machine - -@test "$DRIVER: machine should not exist" { - run machine inspect UNKNOWN - echo ${output} - [ "$status" -eq 1 ] - [[ ${lines[0]} =~ "Host does not exist: \"UNKNOWN\"" ]] -} - -@test "$DRIVER: appears with ls" { - run machine ls -q - echo ${output} - [ "$status" -eq 0 ] - [[ ${lines[0]} == "$NAME" ]] -} - -@test "$DRIVER: has status 'started' appearing in ls" { - run machine ls -q --filter state=Running - echo ${output} - [ "$status" -eq 0 ] - [[ ${lines[0]} == "$NAME" ]] -} - -@test "$DRIVER: create with same name again fails" { - run machine create -d $DRIVER $NAME - echo ${output} - [ "$status" -eq 1 ] - [[ ${lines[0]} == "Host already exists: \"$NAME\"" ]] -} - -@test "$DRIVER: run busybox container" { - run docker $(machine config $NAME) run busybox echo hello world - echo ${output} - [ "$status" -eq 0 ] -} - -@test "$DRIVER: url" { - run machine url $NAME - echo ${output} - [ "$status" -eq 0 ] -} - -@test "$DRIVER: ip" { - run machine ip $NAME - echo ${output} - [ "$status" -eq 0 ] -} - -@test "$DRIVER: ssh" { - run machine ssh $NAME -- ls -lah / - echo ${output} - [ "$status" -eq 0 ] - [[ ${lines[0]} =~ "total" ]] -} - -@test "$DRIVER: version" { - run machine version $NAME - echo ${output} - [ "$status" -eq 0 ] -} - -@test "$DRIVER: docker commands with the socket should work" { - run machine ssh $NAME -- sudo docker version - echo ${output} -} - -@test "$DRIVER: stop" { - run machine stop $NAME - echo ${output} - [ "$status" -eq 0 ] -} - -@test "$DRIVER: machine should show stopped after stop" { - run machine ls - echo ${output} - [ "$status" -eq 0 ] - [[ ${lines[1]} == *"Stopped"* ]] -} - -@test "$DRIVER: url should show an error when machine is stopped" { - run machine url $NAME - echo ${output} - [ "$status" -eq 1 ] - [[ ${output} == *"Host is not running"* ]] -} - -@test "$DRIVER: env should show an error when machine is stopped" { - run machine env $NAME - echo ${output} - [ "$status" -eq 1 ] - [[ ${output} == *"Host is not running"* ]] -} - -@test "$DRIVER: version should show an error when machine is stopped" { - run machine version $NAME - echo ${output} - [ "$status" -eq 1 ] - [[ ${output} == *"Host is not running"* ]] -} - - -@test "$DRIVER: machine should not allow upgrade when stopped" { - run machine upgrade $NAME - echo ${output} - [[ "$status" -eq 1 ]] -} - -@test "$DRIVER: start" { - run machine start $NAME - echo ${output} - [ "$status" -eq 0 ] -} - -@test "$DRIVER: machine should show running after start" { - run machine ls --timeout 20 - echo ${output} - [ "$status" -eq 0 ] - [[ ${lines[1]} == *"Running"* ]] -} - -@test "$DRIVER: kill" { - run machine kill $NAME - echo ${output} - [ "$status" -eq 0 ] -} - -@test "$DRIVER: machine should show stopped after kill" { - run machine ls - echo ${output} - [ "$status" -eq 0 ] - [[ ${lines[1]} == *"Stopped"* ]] -} - -@test "$DRIVER: restart" { - run machine restart $NAME - echo ${output} - [ "$status" -eq 0 ] -} - -@test "$DRIVER: machine should show running after restart" { - run machine ls --timeout 20 - echo ${output} - [ "$status" -eq 0 ] - [[ ${lines[1]} == *"Running"* ]] -} - -@test "$DRIVER: status" { - run machine status $NAME - echo ${output} - [ "$status" -eq 0 ] - [[ ${output} == *"Running"* ]] -} diff --git a/vendor/github.com/docker/machine/test/integration/core/crashreport.bats b/vendor/github.com/docker/machine/test/integration/core/crashreport.bats deleted file mode 100644 index bbc91843..00000000 --- a/vendor/github.com/docker/machine/test/integration/core/crashreport.bats +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env bats - -load ${BASE_TEST_DIR}/helpers.bash - -only_if_env DRIVER virtualbox - -use_disposable_machine - -@test "$DRIVER: should send bugsnag report" { - # we exploit a 'bug' where vboxmanage wont allow a machine created with 1mb of RAM - run machine --bugsnag-api-token nonexisting -D create -d virtualbox --virtualbox-memory 1 $NAME - echo ${output} - [ "$status" -eq 1 ] - [[ ${output} == *"notifying bugsnag"* ]] -} diff --git a/vendor/github.com/docker/machine/test/integration/core/engine-options.bats b/vendor/github.com/docker/machine/test/integration/core/engine-options.bats deleted file mode 100644 index 73153bec..00000000 --- a/vendor/github.com/docker/machine/test/integration/core/engine-options.bats +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env bats - -load ${BASE_TEST_DIR}/helpers.bash - -use_disposable_machine - -@test "$DRIVER: create with supported engine options" { - run machine create -d $DRIVER \ - --engine-label spam=eggs \ - --engine-storage-driver overlay \ - --engine-insecure-registry registry.myco.com \ - --engine-env=TEST=VALUE \ - --engine-opt log-driver=none \ - $NAME - echo "$output" - [ $status -eq 0 ] -} - -@test "$DRIVER: check for engine label" { - spamlabel=$(docker $(machine config $NAME) info | grep spam) - [[ $spamlabel =~ "spam=eggs" ]] -} - -@test "$DRIVER: check for engine storage driver" { - storage_driver_info=$(docker $(machine config $NAME) info | grep "Storage Driver") - [[ $storage_driver_info =~ "overlay" ]] -} - -@test "$DRIVER: test docker process envs" { - # get pid of docker process, check process envs for set Environment Variable from above test - run machine ssh $NAME 'sudo cat /proc/$(pgrep -f "docker [d]aemon")/environ' - echo ${output} - [ $status -eq 0 ] - [[ "${output}" =~ "TEST=VALUE" ]] -} - -@test "$DRIVER: check created engine option (log driver)" { - docker $(machine config $NAME) run --name nolog busybox echo this should not be logged - run docker $(machine config $NAME) inspect -f '{{.HostConfig.LogConfig.Type}}' nolog - echo ${output} - [ ${output} == "none" ] -} diff --git a/vendor/github.com/docker/machine/test/integration/core/env_shell.bats b/vendor/github.com/docker/machine/test/integration/core/env_shell.bats deleted file mode 100644 index a251e471..00000000 --- a/vendor/github.com/docker/machine/test/integration/core/env_shell.bats +++ /dev/null @@ -1,120 +0,0 @@ -#!/usr/bin/env bats - -load ${BASE_TEST_DIR}/helpers.bash - -use_shared_machine - -@test "$DRIVER: test basic bash / zsh notation" { - run machine env $NAME - [[ ${lines[0]} == "export DOCKER_TLS_VERIFY=\"1\"" ]] - [[ ${lines[1]} == "export DOCKER_HOST=\"$(machine url $NAME)\"" ]] - [[ ${lines[2]} == "export DOCKER_CERT_PATH=\"$MACHINE_STORAGE_PATH/machines/$NAME\"" ]] - [[ ${lines[3]} == "export DOCKER_MACHINE_NAME=\"$NAME\"" ]] -} - -@test "$DRIVER: test powershell notation" { - run machine env --shell powershell --no-proxy $NAME - [[ ${lines[0]} == "\$Env:DOCKER_TLS_VERIFY = \"1\"" ]] - [[ ${lines[1]} == "\$Env:DOCKER_HOST = \"$(machine url $NAME)\"" ]] - [[ ${lines[2]} == "\$Env:DOCKER_CERT_PATH = \"$MACHINE_STORAGE_PATH/machines/$NAME\"" ]] - [[ ${lines[3]} == "\$Env:DOCKER_MACHINE_NAME = \"$NAME\"" ]] - [[ ${lines[4]} == "\$Env:NO_PROXY = \"$(machine ip $NAME)\"" ]] -} - -@test "$DRIVER: test bash / zsh notation with no-proxy" { - run machine env --no-proxy $NAME - [[ ${lines[0]} == "export DOCKER_TLS_VERIFY=\"1\"" ]] - [[ ${lines[1]} == "export DOCKER_HOST=\"$(machine url $NAME)\"" ]] - [[ ${lines[2]} == "export DOCKER_CERT_PATH=\"$MACHINE_STORAGE_PATH/machines/$NAME\"" ]] - [[ ${lines[3]} == "export DOCKER_MACHINE_NAME=\"$NAME\"" ]] - [[ ${lines[4]} == "export NO_PROXY=\"$(machine ip $NAME)\"" ]] -} - -@test "$DRIVER: test cmd.exe notation" { - run machine env --shell cmd --no-proxy $NAME - [[ ${lines[0]} == "SET DOCKER_TLS_VERIFY=1" ]] - [[ ${lines[1]} == "SET DOCKER_HOST=$(machine url $NAME)" ]] - [[ ${lines[2]} == "SET DOCKER_CERT_PATH=$MACHINE_STORAGE_PATH/machines/$NAME" ]] - [[ ${lines[3]} == "SET DOCKER_MACHINE_NAME=$NAME" ]] - [[ ${lines[4]} == "SET NO_PROXY=$(machine ip $NAME)" ]] -} - -@test "$DRIVER: test fish notation" { - run machine env --shell fish --no-proxy $NAME - [[ ${lines[0]} == "set -gx DOCKER_TLS_VERIFY \"1\";" ]] - [[ ${lines[1]} == "set -gx DOCKER_HOST \"$(machine url $NAME)\";" ]] - [[ ${lines[2]} == "set -gx DOCKER_CERT_PATH \"$MACHINE_STORAGE_PATH/machines/$NAME\";" ]] - [[ ${lines[3]} == "set -gx DOCKER_MACHINE_NAME \"$NAME\";" ]] - [[ ${lines[4]} == "set -gx NO_PROXY \"$(machine ip $NAME)\";" ]] -} - -@test "$DRIVER: test emacs notation" { - run machine env --shell emacs --no-proxy $NAME - [[ ${lines[0]} == "(setenv \"DOCKER_TLS_VERIFY\" \"1\")" ]] - [[ ${lines[1]} == "(setenv \"DOCKER_HOST\" \"$(machine url $NAME)\")" ]] - [[ ${lines[2]} == "(setenv \"DOCKER_CERT_PATH\" \"$MACHINE_STORAGE_PATH/machines/$NAME\")" ]] - [[ ${lines[3]} == "(setenv \"DOCKER_MACHINE_NAME\" \"$NAME\")" ]] - [[ ${lines[4]} == "(setenv \"NO_PROXY\" \"$(machine ip $NAME)\")" ]] -} - -@test "$DRIVER: test no proxy with NO_PROXY already set" { - export NO_PROXY=localhost - run machine env --no-proxy $NAME - [[ ${lines[4]} == "export NO_PROXY=\"localhost,$(machine ip $NAME)\"" ]] -} - -@test "$DRIVER: test unset with an args should fail" { - run machine env -u $NAME - [ "$status" -eq 1 ] - [[ ${lines} == "Error: Expected no machine name when the -u flag is present" ]] -} - - -@test "$DRIVER: test bash/zsh unset" { - run machine env -u - [[ ${lines[0]} == "unset DOCKER_TLS_VERIFY" ]] - [[ ${lines[1]} == "unset DOCKER_HOST" ]] - [[ ${lines[2]} == "unset DOCKER_CERT_PATH" ]] - [[ ${lines[3]} == "unset DOCKER_MACHINE_NAME" ]] -} - -@test "$DRIVER: test unset killing no proxy" { - run machine env --no-proxy -u - [[ ${lines[0]} == "unset DOCKER_TLS_VERIFY" ]] - [[ ${lines[1]} == "unset DOCKER_HOST" ]] - [[ ${lines[2]} == "unset DOCKER_CERT_PATH" ]] - [[ ${lines[3]} == "unset DOCKER_MACHINE_NAME" ]] - [[ ${lines[4]} == "unset NO_PROXY" ]] -} - -@test "$DRIVER: unset powershell" { - run machine env --shell powershell -u - [[ ${lines[0]} == 'Remove-Item Env:\\DOCKER_TLS_VERIFY' ]] - [[ ${lines[1]} == 'Remove-Item Env:\\DOCKER_HOST' ]] - [[ ${lines[2]} == 'Remove-Item Env:\\DOCKER_CERT_PATH' ]] - [[ ${lines[3]} == 'Remove-Item Env:\\DOCKER_MACHINE_NAME' ]] -} - -@test "$DRIVER: unset with fish shell" { - run machine env --shell fish -u - [[ ${lines[0]} == "set -e DOCKER_TLS_VERIFY;" ]] - [[ ${lines[1]} == "set -e DOCKER_HOST;" ]] - [[ ${lines[2]} == "set -e DOCKER_CERT_PATH;" ]] - [[ ${lines[3]} == "set -e DOCKER_MACHINE_NAME;" ]] -} - -@test "$DRIVER: unset with cmd shell" { - run machine env --shell cmd -u - [[ ${lines[0]} == "SET DOCKER_TLS_VERIFY=" ]] - [[ ${lines[1]} == "SET DOCKER_HOST=" ]] - [[ ${lines[2]} == "SET DOCKER_CERT_PATH=" ]] - [[ ${lines[3]} == "SET DOCKER_MACHINE_NAME=" ]] -} - -@test "$DRIVER: unset with emacs shell" { - run machine env --shell emacs -u - [[ ${lines[0]} == "(setenv \"DOCKER_TLS_VERIFY\" nil)" ]] - [[ ${lines[1]} == "(setenv \"DOCKER_HOST\" nil)" ]] - [[ ${lines[2]} == "(setenv \"DOCKER_CERT_PATH\" nil)" ]] - [[ ${lines[3]} == "(setenv \"DOCKER_MACHINE_NAME\" nil)" ]] -} diff --git a/vendor/github.com/docker/machine/test/integration/core/inspect_format.bats b/vendor/github.com/docker/machine/test/integration/core/inspect_format.bats deleted file mode 100644 index 41996de7..00000000 --- a/vendor/github.com/docker/machine/test/integration/core/inspect_format.bats +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env bats - -load ${BASE_TEST_DIR}/helpers.bash - -use_shared_machine - -@test "$DRIVER: inspect format template" { - run machine inspect -f '{{.DriverName}}' $NAME - [[ "$output" == "$DRIVER" ]] -} - -@test "$DRIVER: inspect format template json directive" { - run machine inspect -f '{{json .DriverName}}' $NAME - [[ "$output" == "\"$DRIVER\"" ]] -} - -@test "$DRIVER: inspect format template pretty json directive" { - linecount=$(machine inspect -f '{{prettyjson .Driver}}' $NAME | wc -l) - [[ "$linecount" -gt 1 ]] -} - -@test "$DRIVER: check .Driver output is not flawed" { - only_if_env DRIVER virtualbox - run machine inspect -f '{{.Driver.SSHUser}}' $NAME - [ "$status" -eq 0 ] - [[ ${output} == "docker" ]] -} diff --git a/vendor/github.com/docker/machine/test/integration/core/regenerate-certs.bats b/vendor/github.com/docker/machine/test/integration/core/regenerate-certs.bats deleted file mode 100644 index 121bdec3..00000000 --- a/vendor/github.com/docker/machine/test/integration/core/regenerate-certs.bats +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env bats - -load ${BASE_TEST_DIR}/helpers.bash - -use_shared_machine - -@test "$DRIVER: regenerate the certs" { - run machine regenerate-certs -f $NAME - [[ ${status} -eq 0 ]] -} - -@test "$DRIVER: make sure docker still works" { - run docker $(machine config $NAME) version - [[ ${status} -eq 0 ]] -} diff --git a/vendor/github.com/docker/machine/test/integration/core/scp.bats b/vendor/github.com/docker/machine/test/integration/core/scp.bats deleted file mode 100644 index 6e00c516..00000000 --- a/vendor/github.com/docker/machine/test/integration/core/scp.bats +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env bats - -load ${BASE_TEST_DIR}/helpers.bash - -use_shared_machine -export SECOND_MACHINE="$NAME-2" - -@test "$DRIVER: test machine scp command from remote to host" { - machine ssh $NAME 'echo A file created remotely! >/tmp/foo.txt' - machine scp $NAME:/tmp/foo.txt . - [[ $(cat foo.txt) == "A file created remotely!" ]] -} - -@test "$DRIVER: test machine scp command from host to remote" { - teardown () { - rm foo.txt - } - echo A file created locally! >foo.txt - machine scp foo.txt $NAME:/tmp/foo.txt - [[ $(machine ssh $NAME cat /tmp/foo.txt) == "A file created locally!" ]] -} - -@test "$DRIVER: create machine to test transferring files from machine to machine" { - run machine create -d $DRIVER $SECOND_MACHINE - [[ ${status} -eq 0 ]] -} - -@test "$DRIVER: scp from one machine to another" { - run machine ssh $NAME 'echo A file hopping around! >/tmp/foo.txt' - run machine scp $NAME:/tmp/foo.txt $SECOND_MACHINE:/tmp/foo.txt - [[ $(machine ssh ${SECOND_MACHINE} cat /tmp/foo.txt) == "A file hopping around!" ]] -} diff --git a/vendor/github.com/docker/machine/test/integration/core/ssh-backends.bats b/vendor/github.com/docker/machine/test/integration/core/ssh-backends.bats deleted file mode 100644 index b1b5f59e..00000000 --- a/vendor/github.com/docker/machine/test/integration/core/ssh-backends.bats +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env bats - -load ${BASE_TEST_DIR}/helpers.bash - -use_shared_machine - -@test "$DRIVER: test external ssh backend" { - run machine ssh $NAME df -h - [[ "$status" -eq 0 ]] -} - -@test "$DRIVER: test command did what it purported to -- external ssh" { - run machine ssh $NAME echo foo - [[ "$output" == "foo" ]] -} - -@test "$DRIVER: test native ssh backend" { - run machine --native-ssh ssh $NAME df -h - [[ "$status" -eq 0 ]] -} - -@test "$DRIVER: test command did what it purported to -- native ssh" { - run machine --native-ssh ssh $NAME echo foo - [[ "$output" =~ "foo" ]] -} - -@test "$DRIVER: ensure that ssh extra arguments work" { - # don't run this test if we can't use external SSH - which ssh - if [[ $? -ne 0 ]]; then - skip - fi - - # this will not fare well if -C doesn't get interpreted as "use compression" - # like intended - run machine ssh $NAME -C echo foo - - [[ "$status" -eq 0 ]] - [[ "$output" == "foo" ]] -} diff --git a/vendor/github.com/docker/machine/test/integration/core/swarm-options.bats b/vendor/github.com/docker/machine/test/integration/core/swarm-options.bats deleted file mode 100644 index 6c219826..00000000 --- a/vendor/github.com/docker/machine/test/integration/core/swarm-options.bats +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env bats - -load ${BASE_TEST_DIR}/helpers.bash - -export TOKEN=$(curl -sS -X POST "https://discovery.hub.docker.com/v1/clusters") - -@test "create swarm master" { - run machine create -d $DRIVER --swarm --swarm-master --swarm-discovery "token://$TOKEN" --swarm-strategy binpack --swarm-opt heartbeat=5s queenbee - echo ${output} - [[ "$status" -eq 0 ]] -} - -@test "create swarm node" { - run machine create -d $DRIVER --swarm --swarm-discovery "token://$TOKEN" workerbee - [[ "$status" -eq 0 ]] -} - -@test "ensure strategy is correct" { - strategy=$(docker $(machine config --swarm queenbee) info | grep "Strategy:" | awk '{ print $2 }') - echo ${strategy} - [[ "$strategy" == "binpack" ]] -} - -@test "ensure heartbeat" { - heartbeat_arg=$(docker $(machine config queenbee) inspect -f '{{index .Args}}' swarm-agent-master) - echo ${heartbeat_arg} - [[ "$heartbeat_arg" =~ "--heartbeat=5s" ]] -} - -@test "ls command should not show as swarm active if normal active" { - eval $(machine env queenbee) - run machine ls --filter name=queenbee - [[ ${lines[1]} != *"* (swarm)"* ]] -} - -@test "ls command should show as swarm active" { - eval $(machine env --swarm queenbee) - run machine ls --filter name=queenbee - echo ${output} - [[ ${lines[1]} == *"* (swarm)"* ]] -} - -@test "active command should show the host as active if normal active" { - eval $(machine env queenbee) - run machine active - echo ${output} - [[ ${lines[0]} == "queenbee" ]] -} - -@test "active command should show the host as active if swarm active" { - eval $(machine env --swarm queenbee) - run machine active - echo ${output} - [[ ${lines[0]} == "queenbee" ]] -} diff --git a/vendor/github.com/docker/machine/test/integration/helpers.bash b/vendor/github.com/docker/machine/test/integration/helpers.bash deleted file mode 100644 index 7138ed74..00000000 --- a/vendor/github.com/docker/machine/test/integration/helpers.bash +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/bash - -function echo_to_log { - echo "$BATS_TEST_NAME ----------- -$output ----------- - -" >> ${BATS_LOG} -} - -function teardown { - echo_to_log -} - -function errecho { - >&2 echo "$@" -} - -function only_if_env { - if [[ ${!1} != "$2" ]]; then - errecho "This test requires the $1 environment variable to be set to $2. Skipping..." - skip - fi -} - -function require_env { - if [[ -z ${!1} ]]; then - errecho "This test requires the $1 environment variable to be set in order to run." - exit 1 - fi -} - -function use_disposable_machine { - if [[ -z "$NAME" ]]; then - export NAME="bats-$DRIVER-test-$(date +%s)" - fi -} - -function use_shared_machine { - if [[ -z "$NAME" ]]; then - export NAME="$SHARED_NAME" - if [[ $(machine ls -q --filter name=$NAME | wc -l) -eq 0 ]]; then - machine create -d $DRIVER $NAME &>/dev/null - fi - fi -} - -# Make sure these aren't set while tests run (can cause confusing behavior) -unset DOCKER_HOST DOCKER_TLS_VERIFY DOCKER_CERT_DIR diff --git a/vendor/github.com/docker/machine/test/integration/run-bats.sh b/vendor/github.com/docker/machine/test/integration/run-bats.sh deleted file mode 100644 index 06937173..00000000 --- a/vendor/github.com/docker/machine/test/integration/run-bats.sh +++ /dev/null @@ -1,120 +0,0 @@ -#!/usr/bin/env bash - -set -e - -# Wrapper script to run bats tests for various drivers. -# Usage: DRIVER=[driver] ./run-bats.sh [subtest] - -function quiet_run () { - if [[ "$VERBOSE" == "1" ]]; then - "$@" - else - "$@" &>/dev/null - fi -} - -function cleanup_machines() { - for MACHINE_NAME in $(machine ls -q); do - if [[ "$MACHINE_NAME" != "$SHARED_NAME" ]] || [[ "$1" == "ALL" ]]; then - quiet_run machine rm -f $MACHINE_NAME - fi - done -} - -function cleanup_store() { - if [[ -d "$MACHINE_STORAGE_PATH" ]]; then - rm -r "$MACHINE_STORAGE_PATH" - fi -} - -function machine() { - "$MACHINE_ROOT"/bin/"$MACHINE_BIN_NAME" "$@" -} - -function run_bats() { - for bats_file in $(find "$1" -name \*.bats); do - echo "=> $bats_file" - - # BATS returns non-zero to indicate the tests have failed, we shouldn't - # necessarily bail in this case, so that's the reason for the e toggle. - set +e - bats "$bats_file" - if [[ $? -ne 0 ]]; then - EXIT_STATUS=1 - fi - set -e - - echo - - if [[ "$NO_SHARE_MACHINES" == "1" ]]; then - cleanup_machines "ALL" - else - cleanup_machines "NON-SHARED" - fi - done -} - -# Set this ourselves in case bats call fails -EXIT_STATUS=0 -export BATS_FILE="$1" - -# Check we're not running bash 3.x -if [ "${BASH_VERSINFO[0]}" -lt 4 ]; then - echo "Bash 4.1 or later is required to run these tests" - exit 1 -fi - -# If bash 4.x, check the minor version is 1 or later -if [ "${BASH_VERSINFO[0]}" -eq 4 ] && [ "${BASH_VERSINFO[1]}" -lt 1 ]; then - echo "Bash 4.1 or later is required to run these tests" - exit 1 -fi - -if [[ -z "$DRIVER" ]]; then - echo "You must specify the DRIVER environment variable." - exit 1 -fi - -if [[ -z "$BATS_FILE" ]]; then - echo "You must specify a bats test to run." - exit 1 -fi - -if [[ ! -e "$BATS_FILE" ]]; then - echo "Requested bats file or directory not found: $BATS_FILE" - exit 1 -fi - -# TODO: Should the script bail out if these are set already? -export BASE_TEST_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) -export MACHINE_ROOT="$BASE_TEST_DIR/../.." -export MACHINE_STORAGE_PATH="/tmp/machine-bats-test-$DRIVER" -export MACHINE_BIN_NAME=docker-machine -export BATS_LOG="$MACHINE_ROOT/bats.log" -export B2D_LOCATION=~/.docker/machine/cache/boot2docker.iso -export SHARED_NAME="bats-$DRIVER-test-shared-$(date +%s)" -export MACHINE_BUGSNAG_API_TOKEN=no-report - -# This function gets used in the integration tests, so export it. -export -f machine - -> "$BATS_LOG" - -cleanup_machines "ALL" -cleanup_store - -if [[ -f "$B2D_LOCATION" ]]; then - if [[ "$B2D_CACHE" == "1" ]]; then - mkdir -p "${MACHINE_STORAGE_PATH}/cache" - cp $B2D_LOCATION "${MACHINE_STORAGE_PATH}/cache/boot2docker.iso" - else - echo "INFO: Run the tests with B2D_CACHE=1 to avoid downloading the boot2docker iso each time." - fi -fi - -run_bats "$BATS_FILE" - -cleanup_machines "ALL" -cleanup_store - -exit ${EXIT_STATUS} diff --git a/vendor/github.com/docker/machine/test/integration/virtualbox/certs-checksum.bats b/vendor/github.com/docker/machine/test/integration/virtualbox/certs-checksum.bats deleted file mode 100644 index 4e35c4aa..00000000 --- a/vendor/github.com/docker/machine/test/integration/virtualbox/certs-checksum.bats +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env bats - -load ${BASE_TEST_DIR}/helpers.bash - -only_if_env DRIVER virtualbox - -use_shared_machine - -@test "$DRIVER: verify that server cert checksum matches local checksum" { - # TODO: This test is tightly coupled to VirtualBox right now, but should be - # available for all providers ideally. - # - # TODO: Does this test work OK on Linux? cc @ehazlett - # - # Have to create this directory and file or else the OpenSSL checksum will barf. - machine ssh $NAME -- sudo mkdir -p /usr/local/ssl - machine ssh $NAME -- sudo touch /usr/local/ssl/openssl.cnf - - SERVER_CHECKSUM=$(machine ssh $NAME -- openssl dgst -sha256 /var/lib/boot2docker/ca.pem | awk '{ print $2 }') - LOCAL_CHECKSUM=$(openssl dgst -sha256 $MACHINE_STORAGE_PATH/certs/ca.pem | awk '{ print $2 }') - echo ${SERVER_CHECKSUM} - echo ${LOCAL_CHECKSUM} - [[ ${SERVER_CHECKSUM} == ${LOCAL_CHECKSUM} ]] -} diff --git a/vendor/github.com/docker/machine/test/integration/virtualbox/create-with-upgrading.bats b/vendor/github.com/docker/machine/test/integration/virtualbox/create-with-upgrading.bats deleted file mode 100644 index ad8e2777..00000000 --- a/vendor/github.com/docker/machine/test/integration/virtualbox/create-with-upgrading.bats +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env bats - -load ${BASE_TEST_DIR}/helpers.bash - -only_if_env DRIVER virtualbox - -use_disposable_machine - -export CACHE_DIR="$MACHINE_STORAGE_PATH/cache" -export ISO_PATH="$CACHE_DIR/boot2docker.iso" -export OLD_ISO_URL="https://github.com/boot2docker/boot2docker/releases/download/v1.4.1/boot2docker.iso" - -@test "$DRIVER: download the old version iso" { - run mkdir -p $CACHE_DIR - run curl $OLD_ISO_URL -L -o $ISO_PATH - echo ${output} - [ "$status" -eq 0 ] -} - -@test "$DRIVER: create with upgrading" { - run machine create -d $DRIVER $NAME - echo ${output} - [ "$status" -eq 0 ] -} - -@test "$DRIVER: create is correct version" { - SERVER_VERSION=$(docker $(machine config $NAME) version | grep 'Server version' | awk '{ print $3; }') - [[ "$SERVER_VERSION" != "1.4.1" ]] -} diff --git a/vendor/github.com/docker/machine/test/integration/virtualbox/custom-mem-disk.bats b/vendor/github.com/docker/machine/test/integration/virtualbox/custom-mem-disk.bats deleted file mode 100644 index 5828b4fc..00000000 --- a/vendor/github.com/docker/machine/test/integration/virtualbox/custom-mem-disk.bats +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env bats - -load ${BASE_TEST_DIR}/helpers.bash - -only_if_env DRIVER virtualbox - -use_disposable_machine - -# Default memsize is 1024MB and disksize is 20000MB -# These values are defined in drivers/virtualbox/virtualbox.go -export DEFAULT_MEMSIZE=1024 -export DEFAULT_DISKSIZE=20000 -export CUSTOM_MEMSIZE=1536 -export CUSTOM_DISKSIZE=10000 -export CUSTOM_CPUCOUNT=1 - -function findDiskSize() { - # SATA-0-0 is usually the boot2disk.iso image - # We assume that SATA 1-0 is root disk VMDK and grab this UUID - # e.g. "SATA-ImageUUID-1-0"="fb5f33a7-e4e3-4cb9-877c-f9415ae2adea" - # TODO(slashk): does this work on Windows ? - run bash -c "VBoxManage showvminfo --machinereadable $NAME | grep SATA-ImageUUID-1-0 | cut -d'=' -f2" - run bash -c "VBoxManage showhdinfo $output | grep "Capacity:" | awk -F' ' '{ print $2 }'" -} - -function findMemorySize() { - run bash -c "VBoxManage showvminfo --machinereadable $NAME | grep memory= | cut -d'=' -f2" -} - -function findCPUCount() { - run bash -c "VBoxManage showvminfo --machinereadable $NAME | grep cpus= | cut -d'=' -f2" -} - -@test "$DRIVER: create with custom disk, cpu count and memory size flags" { - run machine create -d $DRIVER --virtualbox-cpu-count $CUSTOM_CPUCOUNT --virtualbox-disk-size $CUSTOM_DISKSIZE --virtualbox-memory $CUSTOM_MEMSIZE $NAME - [ "$status" -eq 0 ] -} - -@test "$DRIVER: check custom machine memory size" { - findMemorySize - [[ ${output} == "$CUSTOM_MEMSIZE" ]] -} - -@test "$DRIVER: check custom machine disksize" { - findDiskSize - [[ ${output} == *"$CUSTOM_DISKSIZE"* ]] -} - -@test "$DRIVER: check custom machine cpucount" { - findCPUCount - [[ ${output} == "$CUSTOM_CPUCOUNT" ]] -} - -@test "$DRIVER: machine should show running after create" { - run machine ls - [ "$status" -eq 0 ] - [[ ${lines[1]} == *"Running"* ]] -} diff --git a/vendor/github.com/docker/machine/test/integration/virtualbox/dns.bats b/vendor/github.com/docker/machine/test/integration/virtualbox/dns.bats deleted file mode 100644 index 7b7afca0..00000000 --- a/vendor/github.com/docker/machine/test/integration/virtualbox/dns.bats +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bats - -load ${BASE_TEST_DIR}/helpers.bash - -only_if_env DRIVER virtualbox - -use_disposable_machine - -@test "$DRIVER: Create a vm with a dns proxy set" { - run machine create -d $DRIVER --virtualbox-dns-proxy=true $NAME - [[ ${status} -eq 0 ]] -} - -@test "$DRIVER: Check DNSProxy flag is properly set during machine creation" { - run bash -c "cat ${MACHINE_STORAGE_PATH}/machines/$NAME/$NAME/Logs/VBox.log | grep DNSProxy | grep '(1)'" - [[ ${status} -eq 0 ]] -} \ No newline at end of file diff --git a/vendor/github.com/docker/machine/test/integration/virtualbox/guards.bats b/vendor/github.com/docker/machine/test/integration/virtualbox/guards.bats deleted file mode 100644 index e10d8588..00000000 --- a/vendor/github.com/docker/machine/test/integration/virtualbox/guards.bats +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bats - -load ${BASE_TEST_DIR}/helpers.bash - -only_if_env DRIVER virtualbox - -use_disposable_machine - -@test "$DRIVER: Should not allow machine creation with bad ISO" { - run machine create -d virtualbox --virtualbox-boot2docker-url http://dev.null:9111/bad.iso $NAME - [[ ${status} -eq 1 ]] -} - -@test "$DRIVER: Should not allow machine creation with engine-install-url" { - run machine create --engine-install-url https://test.docker.com -d virtualbox $NAME - [[ ${output} == *"--engine-install-url cannot be used"* ]] -} \ No newline at end of file diff --git a/vendor/github.com/docker/machine/test/integration/virtualbox/pause-save-start.bats b/vendor/github.com/docker/machine/test/integration/virtualbox/pause-save-start.bats deleted file mode 100644 index 2102aefc..00000000 --- a/vendor/github.com/docker/machine/test/integration/virtualbox/pause-save-start.bats +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/env bats - -load ${BASE_TEST_DIR}/helpers.bash - -only_if_env DRIVER virtualbox - -use_shared_machine - -@test "$DRIVER: VBoxManage pause" { - run VBoxManage controlvm $NAME pause - [ "$status" -eq 0 ] -} - -@test "$DRIVER: machine should show paused after VBoxManage pause" { - run machine ls - [ "$status" -eq 0 ] - [[ ${lines[1]} == *"Paused"* ]] -} - -@test "$DRIVER: start after paused" { - run machine start $NAME - [ "$status" -eq 0 ] -} - -@test "$DRIVER: machine should show running after start" { - run machine ls - [ "$status" -eq 0 ] - [[ ${lines[1]} == *"Running"* ]] -} - -@test "$DRIVER: VBoxManage savestate" { - run VBoxManage controlvm $NAME savestate - [ "$status" -eq 0 ] -} - -@test "$DRIVER: machine should show saved after VBoxManage savestate" { - run machine ls - [ "$status" -eq 0 ] - [[ ${lines[1]} == *"$NAME"* ]] - [[ ${lines[1]} == *"Saved"* ]] -} - -@test "$DRIVER: start after saved" { - run machine start $NAME - [ "$status" -eq 0 ] -} - -@test "$DRIVER: machine should show running after start" { - run machine ls - [ "$status" -eq 0 ] - [[ ${lines[1]} == *"Running"* ]] -} diff --git a/vendor/github.com/docker/machine/test/integration/virtualbox/upgrade.bats b/vendor/github.com/docker/machine/test/integration/virtualbox/upgrade.bats deleted file mode 100644 index dc906b77..00000000 --- a/vendor/github.com/docker/machine/test/integration/virtualbox/upgrade.bats +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env bats - -load ${BASE_TEST_DIR}/helpers.bash - -only_if_env DRIVER virtualbox - -use_disposable_machine - -export OLD_ISO_URL="https://github.com/boot2docker/boot2docker/releases/download/v1.4.1/boot2docker.iso" - -@test "$DRIVER: create for upgrade" { - run machine create -d virtualbox --virtualbox-boot2docker-url $OLD_ISO_URL $NAME -} - -@test "$DRIVER: verify that docker version is old" { - # Have to run this over SSH due to client/server mismatch restriction - SERVER_VERSION=$(machine ssh $NAME docker version | grep 'Server version' | awk '{ print $3; }') - [[ "$SERVER_VERSION" == "1.4.1" ]] -} - -@test "$DRIVER: upgrade" { - run machine upgrade $NAME - echo ${output} - [ "$status" -eq 0 ] -} - -@test "$DRIVER: upgrade is correct version" { - SERVER_VERSION=$(docker $(machine config $NAME) version | grep 'Server version' | awk '{ print $3; }') - [[ "$SERVER_VERSION" != "1.4.1" ]] -} diff --git a/vendor/github.com/docker/machine/test/provision/rancheros.bats b/vendor/github.com/docker/machine/test/provision/rancheros.bats deleted file mode 100644 index 62c726f2..00000000 --- a/vendor/github.com/docker/machine/test/provision/rancheros.bats +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env bats - -load ${BASE_TEST_DIR}/helpers.bash - - -# this should move to the makefile - -if [[ "$DRIVER" != "virtualbox" ]]; then - exit 0 -fi - -export RANCHEROS_VERSION="v0.3.1" -export RANCHEROS_ISO="https://github.com/rancherio/os/releases/download/$RANCHEROS_VERSION/machine-rancheros.iso" - -@test "$DRIVER: create with RancherOS ISO" { - VIRTUALBOX_BOOT2DOCKER_URL="$RANCHEROS_ISO" run ${BASE_TEST_DIR}/run-bats.sh ${BASE_TEST_DIR}/core - echo ${output} - [ ${status} -eq 0 ] -} diff --git a/vendor/github.com/docker/machine/test/provision/redhat.bats b/vendor/github.com/docker/machine/test/provision/redhat.bats deleted file mode 100644 index f2b249a6..00000000 --- a/vendor/github.com/docker/machine/test/provision/redhat.bats +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env bats - -load ${BASE_TEST_DIR}/helpers.bash - -# this should move to the makefile - -if [[ "$DRIVER" != "amazonec2" ]]; then - exit 0 -fi - -require_env AWS_VPC_ID -require_env AWS_ACCESS_KEY_ID -require_env AWS_SECRET_ACCESS_KEY - -@test "$DRIVER: create using RedHat AMI" { - # Oh snap, recursive stuff!! - AWS_AMI=ami-12663b7a AWS_SSH_USER=ec2-user run ${BASE_TEST_DIR}/run-bats.sh ${BASE_TEST_DIR}/core - echo ${output} - [ ${status} -eq 0 ] -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/LICENSE b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/LICENSE deleted file mode 100644 index d6456956..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/availabilitysets.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/availabilitysets.go deleted file mode 100644 index d2eb1d39..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/availabilitysets.go +++ /dev/null @@ -1,411 +0,0 @@ -package compute - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// AvailabilitySetsClient is the the Compute Management Client. -type AvailabilitySetsClient struct { - ManagementClient -} - -// NewAvailabilitySetsClient creates an instance of the AvailabilitySetsClient -// client. -func NewAvailabilitySetsClient(subscriptionID string) AvailabilitySetsClient { - return NewAvailabilitySetsClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewAvailabilitySetsClientWithBaseURI creates an instance of the -// AvailabilitySetsClient client. -func NewAvailabilitySetsClientWithBaseURI(baseURI string, subscriptionID string) AvailabilitySetsClient { - return AvailabilitySetsClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// CreateOrUpdate the operation to create or update the availability set. -// -// resourceGroupName is the name of the resource group. name is parameters -// supplied to the Create Availability Set operation. parameters is -// parameters supplied to the Create Availability Set operation. -func (client AvailabilitySetsClient) CreateOrUpdate(resourceGroupName string, name string, parameters AvailabilitySet) (result AvailabilitySet, err error) { - req, err := client.CreateOrUpdatePreparer(resourceGroupName, name, parameters) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "CreateOrUpdate", nil, "Failure preparing request") - } - - resp, err := client.CreateOrUpdateSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "CreateOrUpdate", resp, "Failure sending request") - } - - result, err = client.CreateOrUpdateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "CreateOrUpdate", resp, "Failure responding to request") - } - - return -} - -// CreateOrUpdatePreparer prepares the CreateOrUpdate request. -func (client AvailabilitySetsClient) CreateOrUpdatePreparer(resourceGroupName string, name string, parameters AvailabilitySet) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "name": url.QueryEscape(name), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{name}"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the -// http.Response Body if it receives an error. -func (client AvailabilitySetsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always -// closes the http.Response Body. -func (client AvailabilitySetsClient) CreateOrUpdateResponder(resp *http.Response) (result AvailabilitySet, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// Delete the operation to delete the availability set. -// -// resourceGroupName is the name of the resource group. availabilitySetName is -// the name of the availability set. -func (client AvailabilitySetsClient) Delete(resourceGroupName string, availabilitySetName string) (result autorest.Response, err error) { - req, err := client.DeletePreparer(resourceGroupName, availabilitySetName) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "Delete", nil, "Failure preparing request") - } - - resp, err := client.DeleteSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "Delete", resp, "Failure sending request") - } - - result, err = client.DeleteResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "Delete", resp, "Failure responding to request") - } - - return -} - -// DeletePreparer prepares the Delete request. -func (client AvailabilitySetsClient) DeletePreparer(resourceGroupName string, availabilitySetName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "availabilitySetName": url.QueryEscape(availabilitySetName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteSender sends the Delete request. The method will close the -// http.Response Body if it receives an error. -func (client AvailabilitySetsClient) DeleteSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// DeleteResponder handles the response to the Delete request. The method always -// closes the http.Response Body. -func (client AvailabilitySetsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusNoContent, http.StatusOK), - autorest.ByClosing()) - result.Response = resp - return -} - -// Get the operation to get the availability set. -// -// resourceGroupName is the name of the resource group. availabilitySetName is -// the name of the availability set. -func (client AvailabilitySetsClient) Get(resourceGroupName string, availabilitySetName string) (result AvailabilitySet, err error) { - req, err := client.GetPreparer(resourceGroupName, availabilitySetName) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client AvailabilitySetsClient) GetPreparer(resourceGroupName string, availabilitySetName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "availabilitySetName": url.QueryEscape(availabilitySetName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client AvailabilitySetsClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client AvailabilitySetsClient) GetResponder(resp *http.Response) (result AvailabilitySet, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List the operation to list the availability sets. -// -// resourceGroupName is the name of the resource group. -func (client AvailabilitySetsClient) List(resourceGroupName string) (result AvailabilitySetListResult, err error) { - req, err := client.ListPreparer(resourceGroupName) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client AvailabilitySetsClient) ListPreparer(resourceGroupName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client AvailabilitySetsClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client AvailabilitySetsClient) ListResponder(resp *http.Response) (result AvailabilitySetListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client AvailabilitySetsClient) ListNextResults(lastResults AvailabilitySetListResult) (result AvailabilitySetListResult, err error) { - req, err := lastResults.AvailabilitySetListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "List", resp, "Failure responding to next results request request") - } - - return -} - -// ListAvailableSizes lists virtual-machine-sizes available to be used for an -// availability set. -// -// resourceGroupName is the name of the resource group. availabilitySetName is -// the name of the availability set. -func (client AvailabilitySetsClient) ListAvailableSizes(resourceGroupName string, availabilitySetName string) (result VirtualMachineSizeListResult, err error) { - req, err := client.ListAvailableSizesPreparer(resourceGroupName, availabilitySetName) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "ListAvailableSizes", nil, "Failure preparing request") - } - - resp, err := client.ListAvailableSizesSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "ListAvailableSizes", resp, "Failure sending request") - } - - result, err = client.ListAvailableSizesResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "ListAvailableSizes", resp, "Failure responding to request") - } - - return -} - -// ListAvailableSizesPreparer prepares the ListAvailableSizes request. -func (client AvailabilitySetsClient) ListAvailableSizesPreparer(resourceGroupName string, availabilitySetName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "availabilitySetName": url.QueryEscape(availabilitySetName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}/vmSizes"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListAvailableSizesSender sends the ListAvailableSizes request. The method will close the -// http.Response Body if it receives an error. -func (client AvailabilitySetsClient) ListAvailableSizesSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListAvailableSizesResponder handles the response to the ListAvailableSizes request. The method always -// closes the http.Response Body. -func (client AvailabilitySetsClient) ListAvailableSizesResponder(resp *http.Response) (result VirtualMachineSizeListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListAvailableSizesNextResults retrieves the next set of results, if any. -func (client AvailabilitySetsClient) ListAvailableSizesNextResults(lastResults VirtualMachineSizeListResult) (result VirtualMachineSizeListResult, err error) { - req, err := lastResults.VirtualMachineSizeListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "ListAvailableSizes", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListAvailableSizesSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "ListAvailableSizes", resp, "Failure sending next results request request") - } - - result, err = client.ListAvailableSizesResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "ListAvailableSizes", resp, "Failure responding to next results request request") - } - - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/client.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/client.go deleted file mode 100644 index 5ed123ca..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/client.go +++ /dev/null @@ -1,56 +0,0 @@ -// Package compute implements the Azure ARM Compute service API version -// 2015-06-15. -// -// The Compute Management Client. -package compute - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" -) - -const ( - // APIVersion is the version of the Compute - APIVersion = "2015-06-15" - - // DefaultBaseURI is the default URI used for the service Compute - DefaultBaseURI = "https://management.azure.com" -) - -// ManagementClient is the base client for Compute. -type ManagementClient struct { - autorest.Client - BaseURI string - SubscriptionID string -} - -// New creates an instance of the ManagementClient client. -func New(subscriptionID string) ManagementClient { - return NewWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewWithBaseURI creates an instance of the ManagementClient client. -func NewWithBaseURI(baseURI string, subscriptionID string) ManagementClient { - return ManagementClient{ - Client: autorest.NewClientWithUserAgent(UserAgent()), - BaseURI: baseURI, - SubscriptionID: subscriptionID, - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/models.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/models.go deleted file mode 100644 index 0de60240..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/models.go +++ /dev/null @@ -1,1208 +0,0 @@ -package compute - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/date" - "github.com/Azure/go-autorest/autorest/to" - "net/http" -) - -// CachingTypes enumerates the values for caching types. -type CachingTypes string - -const ( - // None specifies the none state for caching types. - None CachingTypes = "None" - // ReadOnly specifies the read only state for caching types. - ReadOnly CachingTypes = "ReadOnly" - // ReadWrite specifies the read write state for caching types. - ReadWrite CachingTypes = "ReadWrite" -) - -// ComponentNames enumerates the values for component names. -type ComponentNames string - -const ( - // MicrosoftWindowsShellSetup specifies the microsoft windows shell setup - // state for component names. - MicrosoftWindowsShellSetup ComponentNames = "Microsoft-Windows-Shell-Setup" -) - -// DiskCreateOptionTypes enumerates the values for disk create option types. -type DiskCreateOptionTypes string - -const ( - // Attach specifies the attach state for disk create option types. - Attach DiskCreateOptionTypes = "attach" - // Empty specifies the empty state for disk create option types. - Empty DiskCreateOptionTypes = "empty" - // FromImage specifies the from image state for disk create option types. - FromImage DiskCreateOptionTypes = "fromImage" -) - -// OperatingSystemTypes enumerates the values for operating system types. -type OperatingSystemTypes string - -const ( - // Linux specifies the linux state for operating system types. - Linux OperatingSystemTypes = "Linux" - // Windows specifies the windows state for operating system types. - Windows OperatingSystemTypes = "Windows" -) - -// OperationStatus enumerates the values for operation status. -type OperationStatus string - -const ( - // Failed specifies the failed state for operation status. - Failed OperationStatus = "Failed" - // InProgress specifies the in progress state for operation status. - InProgress OperationStatus = "InProgress" - // Succeeded specifies the succeeded state for operation status. - Succeeded OperationStatus = "Succeeded" -) - -// OperationStatusEnum enumerates the values for operation status enum. -type OperationStatusEnum string - -const ( - // OperationStatusEnumFailed specifies the operation status enum failed - // state for operation status enum. - OperationStatusEnumFailed OperationStatusEnum = "Failed" - // OperationStatusEnumInProgress specifies the operation status enum in - // progress state for operation status enum. - OperationStatusEnumInProgress OperationStatusEnum = "InProgress" - // OperationStatusEnumPreempted specifies the operation status enum - // preempted state for operation status enum. - OperationStatusEnumPreempted OperationStatusEnum = "Preempted" - // OperationStatusEnumSucceeded specifies the operation status enum - // succeeded state for operation status enum. - OperationStatusEnumSucceeded OperationStatusEnum = "Succeeded" -) - -// PassNames enumerates the values for pass names. -type PassNames string - -const ( - // OobeSystem specifies the oobe system state for pass names. - OobeSystem PassNames = "oobeSystem" -) - -// ProtocolTypes enumerates the values for protocol types. -type ProtocolTypes string - -const ( - // HTTP specifies the http state for protocol types. - HTTP ProtocolTypes = "Http" - // HTTPS specifies the https state for protocol types. - HTTPS ProtocolTypes = "Https" -) - -// SettingNames enumerates the values for setting names. -type SettingNames string - -const ( - // AutoLogon specifies the auto logon state for setting names. - AutoLogon SettingNames = "AutoLogon" - // FirstLogonCommands specifies the first logon commands state for setting - // names. - FirstLogonCommands SettingNames = "FirstLogonCommands" -) - -// StatusLevelTypes enumerates the values for status level types. -type StatusLevelTypes string - -const ( - // Error specifies the error state for status level types. - Error StatusLevelTypes = "Error" - // Info specifies the info state for status level types. - Info StatusLevelTypes = "Info" - // Warning specifies the warning state for status level types. - Warning StatusLevelTypes = "Warning" -) - -// UpgradeMode enumerates the values for upgrade mode. -type UpgradeMode string - -const ( - // Automatic specifies the automatic state for upgrade mode. - Automatic UpgradeMode = "Automatic" - // Manual specifies the manual state for upgrade mode. - Manual UpgradeMode = "Manual" -) - -// UsageUnit enumerates the values for usage unit. -type UsageUnit string - -const ( - // Count specifies the count state for usage unit. - Count UsageUnit = "Count" -) - -// VirtualMachineScaleSetSkuScaleType enumerates the values for virtual -// machine scale set sku scale type. -type VirtualMachineScaleSetSkuScaleType string - -const ( - // VirtualMachineScaleSetSkuScaleTypeAutomatic specifies the virtual - // machine scale set sku scale type automatic state for virtual machine - // scale set sku scale type. - VirtualMachineScaleSetSkuScaleTypeAutomatic VirtualMachineScaleSetSkuScaleType = "Automatic" - // VirtualMachineScaleSetSkuScaleTypeNone specifies the virtual machine - // scale set sku scale type none state for virtual machine scale set sku - // scale type. - VirtualMachineScaleSetSkuScaleTypeNone VirtualMachineScaleSetSkuScaleType = "None" -) - -// VirtualMachineSizeTypes enumerates the values for virtual machine size -// types. -type VirtualMachineSizeTypes string - -const ( - // BasicA0 specifies the basic a0 state for virtual machine size types. - BasicA0 VirtualMachineSizeTypes = "Basic_A0" - // BasicA1 specifies the basic a1 state for virtual machine size types. - BasicA1 VirtualMachineSizeTypes = "Basic_A1" - // BasicA2 specifies the basic a2 state for virtual machine size types. - BasicA2 VirtualMachineSizeTypes = "Basic_A2" - // BasicA3 specifies the basic a3 state for virtual machine size types. - BasicA3 VirtualMachineSizeTypes = "Basic_A3" - // BasicA4 specifies the basic a4 state for virtual machine size types. - BasicA4 VirtualMachineSizeTypes = "Basic_A4" - // StandardA0 specifies the standard a0 state for virtual machine size - // types. - StandardA0 VirtualMachineSizeTypes = "Standard_A0" - // StandardA1 specifies the standard a1 state for virtual machine size - // types. - StandardA1 VirtualMachineSizeTypes = "Standard_A1" - // StandardA10 specifies the standard a10 state for virtual machine size - // types. - StandardA10 VirtualMachineSizeTypes = "Standard_A10" - // StandardA11 specifies the standard a11 state for virtual machine size - // types. - StandardA11 VirtualMachineSizeTypes = "Standard_A11" - // StandardA2 specifies the standard a2 state for virtual machine size - // types. - StandardA2 VirtualMachineSizeTypes = "Standard_A2" - // StandardA3 specifies the standard a3 state for virtual machine size - // types. - StandardA3 VirtualMachineSizeTypes = "Standard_A3" - // StandardA4 specifies the standard a4 state for virtual machine size - // types. - StandardA4 VirtualMachineSizeTypes = "Standard_A4" - // StandardA5 specifies the standard a5 state for virtual machine size - // types. - StandardA5 VirtualMachineSizeTypes = "Standard_A5" - // StandardA6 specifies the standard a6 state for virtual machine size - // types. - StandardA6 VirtualMachineSizeTypes = "Standard_A6" - // StandardA7 specifies the standard a7 state for virtual machine size - // types. - StandardA7 VirtualMachineSizeTypes = "Standard_A7" - // StandardA8 specifies the standard a8 state for virtual machine size - // types. - StandardA8 VirtualMachineSizeTypes = "Standard_A8" - // StandardA9 specifies the standard a9 state for virtual machine size - // types. - StandardA9 VirtualMachineSizeTypes = "Standard_A9" - // StandardD1 specifies the standard d1 state for virtual machine size - // types. - StandardD1 VirtualMachineSizeTypes = "Standard_D1" - // StandardD11 specifies the standard d11 state for virtual machine size - // types. - StandardD11 VirtualMachineSizeTypes = "Standard_D11" - // StandardD11V2 specifies the standard d11v2 state for virtual machine - // size types. - StandardD11V2 VirtualMachineSizeTypes = "Standard_D11_v2" - // StandardD12 specifies the standard d12 state for virtual machine size - // types. - StandardD12 VirtualMachineSizeTypes = "Standard_D12" - // StandardD12V2 specifies the standard d12v2 state for virtual machine - // size types. - StandardD12V2 VirtualMachineSizeTypes = "Standard_D12_v2" - // StandardD13 specifies the standard d13 state for virtual machine size - // types. - StandardD13 VirtualMachineSizeTypes = "Standard_D13" - // StandardD13V2 specifies the standard d13v2 state for virtual machine - // size types. - StandardD13V2 VirtualMachineSizeTypes = "Standard_D13_v2" - // StandardD14 specifies the standard d14 state for virtual machine size - // types. - StandardD14 VirtualMachineSizeTypes = "Standard_D14" - // StandardD14V2 specifies the standard d14v2 state for virtual machine - // size types. - StandardD14V2 VirtualMachineSizeTypes = "Standard_D14_v2" - // StandardD1V2 specifies the standard d1v2 state for virtual machine size - // types. - StandardD1V2 VirtualMachineSizeTypes = "Standard_D1_v2" - // StandardD2 specifies the standard d2 state for virtual machine size - // types. - StandardD2 VirtualMachineSizeTypes = "Standard_D2" - // StandardD2V2 specifies the standard d2v2 state for virtual machine size - // types. - StandardD2V2 VirtualMachineSizeTypes = "Standard_D2_v2" - // StandardD3 specifies the standard d3 state for virtual machine size - // types. - StandardD3 VirtualMachineSizeTypes = "Standard_D3" - // StandardD3V2 specifies the standard d3v2 state for virtual machine size - // types. - StandardD3V2 VirtualMachineSizeTypes = "Standard_D3_v2" - // StandardD4 specifies the standard d4 state for virtual machine size - // types. - StandardD4 VirtualMachineSizeTypes = "Standard_D4" - // StandardD4V2 specifies the standard d4v2 state for virtual machine size - // types. - StandardD4V2 VirtualMachineSizeTypes = "Standard_D4_v2" - // StandardD5V2 specifies the standard d5v2 state for virtual machine size - // types. - StandardD5V2 VirtualMachineSizeTypes = "Standard_D5_v2" - // StandardDS1 specifies the standard ds1 state for virtual machine size - // types. - StandardDS1 VirtualMachineSizeTypes = "Standard_DS1" - // StandardDS11 specifies the standard ds11 state for virtual machine size - // types. - StandardDS11 VirtualMachineSizeTypes = "Standard_DS11" - // StandardDS12 specifies the standard ds12 state for virtual machine size - // types. - StandardDS12 VirtualMachineSizeTypes = "Standard_DS12" - // StandardDS13 specifies the standard ds13 state for virtual machine size - // types. - StandardDS13 VirtualMachineSizeTypes = "Standard_DS13" - // StandardDS14 specifies the standard ds14 state for virtual machine size - // types. - StandardDS14 VirtualMachineSizeTypes = "Standard_DS14" - // StandardDS2 specifies the standard ds2 state for virtual machine size - // types. - StandardDS2 VirtualMachineSizeTypes = "Standard_DS2" - // StandardDS3 specifies the standard ds3 state for virtual machine size - // types. - StandardDS3 VirtualMachineSizeTypes = "Standard_DS3" - // StandardDS4 specifies the standard ds4 state for virtual machine size - // types. - StandardDS4 VirtualMachineSizeTypes = "Standard_DS4" - // StandardG1 specifies the standard g1 state for virtual machine size - // types. - StandardG1 VirtualMachineSizeTypes = "Standard_G1" - // StandardG2 specifies the standard g2 state for virtual machine size - // types. - StandardG2 VirtualMachineSizeTypes = "Standard_G2" - // StandardG3 specifies the standard g3 state for virtual machine size - // types. - StandardG3 VirtualMachineSizeTypes = "Standard_G3" - // StandardG4 specifies the standard g4 state for virtual machine size - // types. - StandardG4 VirtualMachineSizeTypes = "Standard_G4" - // StandardG5 specifies the standard g5 state for virtual machine size - // types. - StandardG5 VirtualMachineSizeTypes = "Standard_G5" - // StandardGS1 specifies the standard gs1 state for virtual machine size - // types. - StandardGS1 VirtualMachineSizeTypes = "Standard_GS1" - // StandardGS2 specifies the standard gs2 state for virtual machine size - // types. - StandardGS2 VirtualMachineSizeTypes = "Standard_GS2" - // StandardGS3 specifies the standard gs3 state for virtual machine size - // types. - StandardGS3 VirtualMachineSizeTypes = "Standard_GS3" - // StandardGS4 specifies the standard gs4 state for virtual machine size - // types. - StandardGS4 VirtualMachineSizeTypes = "Standard_GS4" - // StandardGS5 specifies the standard gs5 state for virtual machine size - // types. - StandardGS5 VirtualMachineSizeTypes = "Standard_GS5" -) - -// AdditionalUnattendContent is gets or sets additional XML formatted -// information that can be included in the Unattend.xml file, which is used -// by Windows Setup. Contents are defined by setting name, component name, -// and the pass in which the content is a applied. -type AdditionalUnattendContent struct { - PassName PassNames `json:"passName,omitempty"` - ComponentName ComponentNames `json:"componentName,omitempty"` - SettingName SettingNames `json:"settingName,omitempty"` - Content *string `json:"content,omitempty"` -} - -// APIEntityReference is the API entity reference. -type APIEntityReference struct { - ID *string `json:"id,omitempty"` -} - -// APIError is api error. -type APIError struct { - Details *[]APIErrorBase `json:"details,omitempty"` - Innererror *InnerError `json:"innererror,omitempty"` - Code *string `json:"code,omitempty"` - Target *string `json:"target,omitempty"` - Message *string `json:"message,omitempty"` -} - -// APIErrorBase is api error base. -type APIErrorBase struct { - Code *string `json:"code,omitempty"` - Target *string `json:"target,omitempty"` - Message *string `json:"message,omitempty"` -} - -// AvailabilitySet is create or update Availability Set parameters. -type AvailabilitySet struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Type *string `json:"type,omitempty"` - Location *string `json:"location,omitempty"` - Tags *map[string]*string `json:"tags,omitempty"` - Properties *AvailabilitySetProperties `json:"properties,omitempty"` -} - -// AvailabilitySetListResult is the List Availability Set operation response. -type AvailabilitySetListResult struct { - autorest.Response `json:"-"` - Value *[]AvailabilitySet `json:"value,omitempty"` - NextLink *string `json:",omitempty"` -} - -// AvailabilitySetListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client AvailabilitySetListResult) AvailabilitySetListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// AvailabilitySetProperties is the instance view of a resource. -type AvailabilitySetProperties struct { - PlatformUpdateDomainCount *int32 `json:"platformUpdateDomainCount,omitempty"` - PlatformFaultDomainCount *int32 `json:"platformFaultDomainCount,omitempty"` - VirtualMachines *[]SubResource `json:"virtualMachines,omitempty"` - Statuses *[]InstanceViewStatus `json:"statuses,omitempty"` -} - -// BootDiagnostics is describes Boot Diagnostics. -type BootDiagnostics struct { - Enabled *bool `json:"enabled,omitempty"` - StorageURI *string `json:"storageUri,omitempty"` -} - -// BootDiagnosticsInstanceView is the instance view of a virtual machine boot -// diagnostics. -type BootDiagnosticsInstanceView struct { - ConsoleScreenshotBlobURI *string `json:"consoleScreenshotBlobUri,omitempty"` - SerialConsoleLogBlobURI *string `json:"serialConsoleLogBlobUri,omitempty"` -} - -// DataDisk is describes a data disk. -type DataDisk struct { - Lun *int32 `json:"lun,omitempty"` - Name *string `json:"name,omitempty"` - Vhd *VirtualHardDisk `json:"vhd,omitempty"` - Image *VirtualHardDisk `json:"image,omitempty"` - Caching CachingTypes `json:"caching,omitempty"` - CreateOption DiskCreateOptionTypes `json:"createOption,omitempty"` - DiskSizeGB *int32 `json:"diskSizeGB,omitempty"` -} - -// DataDiskImage is contains the data disk images information. -type DataDiskImage struct { - Lun *int32 `json:"lun,omitempty"` -} - -// DeleteOperationResult is the compute long running operation response. -type DeleteOperationResult struct { - OperationID *string `json:"operationId,omitempty"` - Status OperationStatus `json:"status,omitempty"` - StartTime *date.Time `json:"startTime,omitempty"` - EndTime *date.Time `json:"endTime,omitempty"` - Error *APIError `json:"error,omitempty"` -} - -// DiagnosticsProfile is describes a diagnostics profile. -type DiagnosticsProfile struct { - BootDiagnostics *BootDiagnostics `json:"bootDiagnostics,omitempty"` -} - -// DiskEncryptionSettings is describes a Encryption Settings for a Disk -type DiskEncryptionSettings struct { - DiskEncryptionKey *KeyVaultSecretReference `json:"diskEncryptionKey,omitempty"` - KeyEncryptionKey *KeyVaultKeyReference `json:"keyEncryptionKey,omitempty"` -} - -// DiskInstanceView is the instance view of the disk. -type DiskInstanceView struct { - Name *string `json:"name,omitempty"` - Statuses *[]InstanceViewStatus `json:"statuses,omitempty"` -} - -// HardwareProfile is describes a hardware profile. -type HardwareProfile struct { - VMSize VirtualMachineSizeTypes `json:"vmSize,omitempty"` -} - -// ImageReference is the image reference. -type ImageReference struct { - Publisher *string `json:"publisher,omitempty"` - Offer *string `json:"offer,omitempty"` - Sku *string `json:"sku,omitempty"` - Version *string `json:"version,omitempty"` -} - -// InnerError is inner error details. -type InnerError struct { - Exceptiontype *string `json:"exceptiontype,omitempty"` - Errordetail *string `json:"errordetail,omitempty"` -} - -// InstanceViewStatus is instance view status. -type InstanceViewStatus struct { - Code *string `json:"code,omitempty"` - Level StatusLevelTypes `json:"level,omitempty"` - DisplayStatus *string `json:"displayStatus,omitempty"` - Message *string `json:"message,omitempty"` - Time *date.Time `json:"time,omitempty"` -} - -// KeyVaultKeyReference is describes a reference to Key Vault Key -type KeyVaultKeyReference struct { - KeyURL *string `json:"keyUrl,omitempty"` - SourceVault *SubResource `json:"sourceVault,omitempty"` -} - -// KeyVaultSecretReference is describes a reference to Key Vault Secret -type KeyVaultSecretReference struct { - SecretURL *string `json:"secretUrl,omitempty"` - SourceVault *SubResource `json:"sourceVault,omitempty"` -} - -// LinuxConfiguration is describes Windows Configuration of the OS Profile. -type LinuxConfiguration struct { - DisablePasswordAuthentication *bool `json:"disablePasswordAuthentication,omitempty"` - SSH *SSHConfiguration `json:"ssh,omitempty"` -} - -// ListUsagesResult is the List Usages operation response. -type ListUsagesResult struct { - autorest.Response `json:"-"` - Value *[]Usage `json:"value,omitempty"` - NextLink *string `json:",omitempty"` -} - -// ListUsagesResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client ListUsagesResult) ListUsagesResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// ListVirtualMachineImageResource is -type ListVirtualMachineImageResource struct { - autorest.Response `json:"-"` - Value *[]VirtualMachineImageResource `json:"value,omitempty"` -} - -// LongRunningOperationProperties is compute-specific operation properties, -// including output -type LongRunningOperationProperties struct { - Output *map[string]interface{} `json:"output,omitempty"` -} - -// LongRunningOperationResult is the Compute service response for long-running -// operations. -type LongRunningOperationResult struct { - OperationID *string `json:"operationId,omitempty"` - Status OperationStatusEnum `json:"status,omitempty"` - StartTime *date.Time `json:"startTime,omitempty"` - EndTime *date.Time `json:"endTime,omitempty"` - Properties *LongRunningOperationProperties `json:"properties,omitempty"` - Error *APIError `json:"error,omitempty"` -} - -// NetworkInterfaceReference is describes a network interface reference. -type NetworkInterfaceReference struct { - ID *string `json:"id,omitempty"` - Properties *NetworkInterfaceReferenceProperties `json:"properties,omitempty"` -} - -// NetworkInterfaceReferenceProperties is describes a network interface -// reference properties. -type NetworkInterfaceReferenceProperties struct { - Primary *bool `json:"primary,omitempty"` -} - -// NetworkProfile is describes a network profile. -type NetworkProfile struct { - NetworkInterfaces *[]NetworkInterfaceReference `json:"networkInterfaces,omitempty"` -} - -// OSDisk is describes an Operating System disk. -type OSDisk struct { - OsType OperatingSystemTypes `json:"osType,omitempty"` - EncryptionSettings *DiskEncryptionSettings `json:"encryptionSettings,omitempty"` - Name *string `json:"name,omitempty"` - Vhd *VirtualHardDisk `json:"vhd,omitempty"` - Image *VirtualHardDisk `json:"image,omitempty"` - Caching CachingTypes `json:"caching,omitempty"` - CreateOption DiskCreateOptionTypes `json:"createOption,omitempty"` - DiskSizeGB *int32 `json:"diskSizeGB,omitempty"` -} - -// OSDiskImage is contains the os disk image information. -type OSDiskImage struct { - OperatingSystem OperatingSystemTypes `json:"operatingSystem,omitempty"` -} - -// OSProfile is describes an OS profile. -type OSProfile struct { - ComputerName *string `json:"computerName,omitempty"` - AdminUsername *string `json:"adminUsername,omitempty"` - AdminPassword *string `json:"adminPassword,omitempty"` - CustomData *string `json:"customData,omitempty"` - WindowsConfiguration *WindowsConfiguration `json:"windowsConfiguration,omitempty"` - LinuxConfiguration *LinuxConfiguration `json:"linuxConfiguration,omitempty"` - Secrets *[]VaultSecretGroup `json:"secrets,omitempty"` -} - -// Plan is plan for the resource. -type Plan struct { - Name *string `json:"name,omitempty"` - Publisher *string `json:"publisher,omitempty"` - Product *string `json:"product,omitempty"` - PromotionCode *string `json:"promotionCode,omitempty"` -} - -// PurchasePlan is used for establishing the purchase context of any 3rd Party -// artifact through MarketPlace. -type PurchasePlan struct { - Publisher *string `json:"publisher,omitempty"` - Name *string `json:"name,omitempty"` - Product *string `json:"product,omitempty"` -} - -// Resource is -type Resource struct { - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Type *string `json:"type,omitempty"` - Location *string `json:"location,omitempty"` - Tags *map[string]*string `json:"tags,omitempty"` -} - -// Sku is describes a virtual machine scale set sku. -type Sku struct { - Name *string `json:"name,omitempty"` - Tier *string `json:"tier,omitempty"` - Capacity *int64 `json:"capacity,omitempty"` -} - -// SSHConfiguration is sSH configuration for Linux based VMs running on Azure -type SSHConfiguration struct { - PublicKeys *[]SSHPublicKey `json:"publicKeys,omitempty"` -} - -// SSHPublicKey is contains information about SSH certificate public key and -// the path on the Linux VM where the public key is placed. -type SSHPublicKey struct { - Path *string `json:"path,omitempty"` - KeyData *string `json:"keyData,omitempty"` -} - -// StorageProfile is describes a storage profile. -type StorageProfile struct { - ImageReference *ImageReference `json:"imageReference,omitempty"` - OsDisk *OSDisk `json:"osDisk,omitempty"` - DataDisks *[]DataDisk `json:"dataDisks,omitempty"` -} - -// SubResource is -type SubResource struct { - ID *string `json:"id,omitempty"` -} - -// UpgradePolicy is describes an upgrade policy - automatic or manual. -type UpgradePolicy struct { - Mode UpgradeMode `json:"mode,omitempty"` -} - -// Usage is describes Compute Resource Usage. -type Usage struct { - Unit UsageUnit `json:"unit,omitempty"` - CurrentValue *int32 `json:"currentValue,omitempty"` - Limit *int64 `json:"limit,omitempty"` - Name *UsageName `json:"name,omitempty"` -} - -// UsageName is the Usage Names. -type UsageName struct { - Value *string `json:"value,omitempty"` - LocalizedValue *string `json:"localizedValue,omitempty"` -} - -// VaultCertificate is describes a single certificate reference in a Key -// Vault, and where the certificate should reside on the VM. -type VaultCertificate struct { - CertificateURL *string `json:"certificateUrl,omitempty"` - CertificateStore *string `json:"certificateStore,omitempty"` -} - -// VaultSecretGroup is describes a set of certificates which are all in the -// same Key Vault. -type VaultSecretGroup struct { - SourceVault *SubResource `json:"sourceVault,omitempty"` - VaultCertificates *[]VaultCertificate `json:"vaultCertificates,omitempty"` -} - -// VirtualHardDisk is describes the uri of a disk. -type VirtualHardDisk struct { - URI *string `json:"uri,omitempty"` -} - -// VirtualMachine is describes a Virtual Machine. -type VirtualMachine struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Type *string `json:"type,omitempty"` - Location *string `json:"location,omitempty"` - Tags *map[string]*string `json:"tags,omitempty"` - Plan *Plan `json:"plan,omitempty"` - Properties *VirtualMachineProperties `json:"properties,omitempty"` - Resources *[]VirtualMachineExtension `json:"resources,omitempty"` -} - -// VirtualMachineAgentInstanceView is the instance view of the VM Agent -// running on the virtual machine. -type VirtualMachineAgentInstanceView struct { - VMAgentVersion *string `json:"vmAgentVersion,omitempty"` - ExtensionHandlers *[]VirtualMachineExtensionHandlerInstanceView `json:"extensionHandlers,omitempty"` - Statuses *[]InstanceViewStatus `json:"statuses,omitempty"` -} - -// VirtualMachineCaptureParameters is capture Virtual Machine parameters. -type VirtualMachineCaptureParameters struct { - VhdPrefix *string `json:"vhdPrefix,omitempty"` - DestinationContainerName *string `json:"destinationContainerName,omitempty"` - OverwriteVhds *bool `json:"overwriteVhds,omitempty"` -} - -// VirtualMachineCaptureResult is resource Id. -type VirtualMachineCaptureResult struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - Properties *VirtualMachineCaptureResultProperties `json:"properties,omitempty"` -} - -// VirtualMachineCaptureResultProperties is compute-specific operation -// properties, including output -type VirtualMachineCaptureResultProperties struct { - Output *map[string]interface{} `json:"output,omitempty"` -} - -// VirtualMachineExtension is describes a Virtual Machine Extension. -type VirtualMachineExtension struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Type *string `json:"type,omitempty"` - Location *string `json:"location,omitempty"` - Tags *map[string]*string `json:"tags,omitempty"` - Properties *VirtualMachineExtensionProperties `json:"properties,omitempty"` -} - -// VirtualMachineExtensionHandlerInstanceView is the instance view of a -// virtual machine extension handler. -type VirtualMachineExtensionHandlerInstanceView struct { - Type *string `json:"type,omitempty"` - TypeHandlerVersion *string `json:"typeHandlerVersion,omitempty"` - Status *InstanceViewStatus `json:"status,omitempty"` -} - -// VirtualMachineExtensionImage is describes a Virtual Machine Extension Image. -type VirtualMachineExtensionImage struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - Properties *VirtualMachineExtensionImageProperties `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Location *string `json:"location,omitempty"` - Tags *map[string]*string `json:"tags,omitempty"` -} - -// VirtualMachineExtensionImageProperties is describes the properties of a -// Virtual Machine Extension Image. -type VirtualMachineExtensionImageProperties struct { - OperatingSystem *string `json:"operatingSystem,omitempty"` - ComputeRole *string `json:"computeRole,omitempty"` - HandlerSchema *string `json:"handlerSchema,omitempty"` - VMScaleSetEnabled *bool `json:"vmScaleSetEnabled,omitempty"` - SupportsMultipleExtensions *bool `json:"supportsMultipleExtensions,omitempty"` -} - -// VirtualMachineExtensionInstanceView is the instance view of a virtual -// machine extension. -type VirtualMachineExtensionInstanceView struct { - Name *string `json:"name,omitempty"` - Type *string `json:"type,omitempty"` - TypeHandlerVersion *string `json:"typeHandlerVersion,omitempty"` - Substatuses *[]InstanceViewStatus `json:"substatuses,omitempty"` - Statuses *[]InstanceViewStatus `json:"statuses,omitempty"` -} - -// VirtualMachineExtensionProperties is describes the properties of a Virtual -// Machine Extension. -type VirtualMachineExtensionProperties struct { - Publisher *string `json:"publisher,omitempty"` - Type *string `json:"type,omitempty"` - TypeHandlerVersion *string `json:"typeHandlerVersion,omitempty"` - AutoUpgradeMinorVersion *bool `json:"autoUpgradeMinorVersion,omitempty"` - Settings *map[string]interface{} `json:"settings,omitempty"` - ProtectedSettings *map[string]interface{} `json:"protectedSettings,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` - InstanceView *VirtualMachineExtensionInstanceView `json:"instanceView,omitempty"` -} - -// VirtualMachineImage is describes a Virtual Machine Image. -type VirtualMachineImage struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - Properties *VirtualMachineImageProperties `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Location *string `json:"location,omitempty"` - Tags *map[string]*string `json:"tags,omitempty"` -} - -// VirtualMachineImageProperties is describes the properties of a Virtual -// Machine Image. -type VirtualMachineImageProperties struct { - Plan *PurchasePlan `json:"plan,omitempty"` - OsDiskImage *OSDiskImage `json:"osDiskImage,omitempty"` - DataDiskImages *[]DataDiskImage `json:"dataDiskImages,omitempty"` -} - -// VirtualMachineImageResource is virtual machine image resource information. -type VirtualMachineImageResource struct { - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Location *string `json:"location,omitempty"` - Tags *map[string]*string `json:"tags,omitempty"` -} - -// VirtualMachineInstanceView is the instance view of a virtual machine. -type VirtualMachineInstanceView struct { - PlatformUpdateDomain *int32 `json:"platformUpdateDomain,omitempty"` - PlatformFaultDomain *int32 `json:"platformFaultDomain,omitempty"` - RdpThumbPrint *string `json:"rdpThumbPrint,omitempty"` - VMAgent *VirtualMachineAgentInstanceView `json:"vmAgent,omitempty"` - Disks *[]DiskInstanceView `json:"disks,omitempty"` - Extensions *[]VirtualMachineExtensionInstanceView `json:"extensions,omitempty"` - BootDiagnostics *BootDiagnosticsInstanceView `json:"bootDiagnostics,omitempty"` - Statuses *[]InstanceViewStatus `json:"statuses,omitempty"` -} - -// VirtualMachineListResult is the List Virtual Machine operation response. -type VirtualMachineListResult struct { - autorest.Response `json:"-"` - Value *[]VirtualMachine `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// VirtualMachineListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client VirtualMachineListResult) VirtualMachineListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// VirtualMachineProperties is describes the properties of a Virtual Machine. -type VirtualMachineProperties struct { - HardwareProfile *HardwareProfile `json:"hardwareProfile,omitempty"` - StorageProfile *StorageProfile `json:"storageProfile,omitempty"` - OsProfile *OSProfile `json:"osProfile,omitempty"` - NetworkProfile *NetworkProfile `json:"networkProfile,omitempty"` - DiagnosticsProfile *DiagnosticsProfile `json:"diagnosticsProfile,omitempty"` - AvailabilitySet *SubResource `json:"availabilitySet,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` - InstanceView *VirtualMachineInstanceView `json:"instanceView,omitempty"` -} - -// VirtualMachineScaleSet is describes a Virtual Machine Scale Set. -type VirtualMachineScaleSet struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Type *string `json:"type,omitempty"` - Location *string `json:"location,omitempty"` - Tags *map[string]*string `json:"tags,omitempty"` - Sku *Sku `json:"sku,omitempty"` - Properties *VirtualMachineScaleSetProperties `json:"properties,omitempty"` -} - -// VirtualMachineScaleSetExtension is describes a Virtual Machine Scale Set -// Extension. -type VirtualMachineScaleSetExtension struct { - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Properties *VirtualMachineScaleSetExtensionProperties `json:"properties,omitempty"` -} - -// VirtualMachineScaleSetExtensionProfile is describes a virtual machine scale -// set extension profile. -type VirtualMachineScaleSetExtensionProfile struct { - Extensions *[]VirtualMachineScaleSetExtension `json:"extensions,omitempty"` -} - -// VirtualMachineScaleSetExtensionProperties is describes the properties of a -// Virtual Machine Scale Set Extension. -type VirtualMachineScaleSetExtensionProperties struct { - Publisher *string `json:"publisher,omitempty"` - Type *string `json:"type,omitempty"` - TypeHandlerVersion *string `json:"typeHandlerVersion,omitempty"` - AutoUpgradeMinorVersion *bool `json:"autoUpgradeMinorVersion,omitempty"` - Settings *map[string]interface{} `json:"settings,omitempty"` - ProtectedSettings *map[string]interface{} `json:"protectedSettings,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// VirtualMachineScaleSetInstanceView is the instance view of a virtual -// machine scale set. -type VirtualMachineScaleSetInstanceView struct { - autorest.Response `json:"-"` - VirtualMachine *VirtualMachineScaleSetInstanceViewStatusesSummary `json:"virtualMachine,omitempty"` - Extensions *[]VirtualMachineScaleSetVMExtensionsSummary `json:"extensions,omitempty"` - Statuses *[]InstanceViewStatus `json:"statuses,omitempty"` -} - -// VirtualMachineScaleSetInstanceViewStatusesSummary is instance view statuses -// summary for virtual machines of a virtual machine scale set. -type VirtualMachineScaleSetInstanceViewStatusesSummary struct { - StatusesSummary *[]VirtualMachineStatusCodeCount `json:"statusesSummary,omitempty"` -} - -// VirtualMachineScaleSetIPConfiguration is describes a virtual machine scale -// set network profile's IP configuration. -type VirtualMachineScaleSetIPConfiguration struct { - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Properties *VirtualMachineScaleSetIPConfigurationProperties `json:"properties,omitempty"` -} - -// VirtualMachineScaleSetIPConfigurationProperties is describes a virtual -// machine scale set network profile's IP configuration properties. -type VirtualMachineScaleSetIPConfigurationProperties struct { - Subnet *APIEntityReference `json:"subnet,omitempty"` - LoadBalancerBackendAddressPools *[]SubResource `json:"loadBalancerBackendAddressPools,omitempty"` -} - -// VirtualMachineScaleSetListResult is the List Virtual Machine operation -// response. -type VirtualMachineScaleSetListResult struct { - autorest.Response `json:"-"` - Value *[]VirtualMachineScaleSet `json:"value,omitempty"` - NextLink *string `json:",omitempty"` -} - -// VirtualMachineScaleSetListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client VirtualMachineScaleSetListResult) VirtualMachineScaleSetListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// VirtualMachineScaleSetListSkusResult is the Virtual Machine Scale Set List -// Skus operation response. -type VirtualMachineScaleSetListSkusResult struct { - autorest.Response `json:"-"` - Value *[]VirtualMachineScaleSetSku `json:"value,omitempty"` - NextLink *string `json:",omitempty"` -} - -// VirtualMachineScaleSetListSkusResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client VirtualMachineScaleSetListSkusResult) VirtualMachineScaleSetListSkusResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// VirtualMachineScaleSetListWithLinkResult is the List Virtual Machine -// operation response. -type VirtualMachineScaleSetListWithLinkResult struct { - autorest.Response `json:"-"` - Value *[]VirtualMachineScaleSet `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// VirtualMachineScaleSetListWithLinkResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client VirtualMachineScaleSetListWithLinkResult) VirtualMachineScaleSetListWithLinkResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// VirtualMachineScaleSetNetworkConfiguration is describes a virtual machine -// scale set network profile's network configurations. -type VirtualMachineScaleSetNetworkConfiguration struct { - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Properties *VirtualMachineScaleSetNetworkConfigurationProperties `json:"properties,omitempty"` -} - -// VirtualMachineScaleSetNetworkConfigurationProperties is describes a virtual -// machine scale set network profile's IP configuration. -type VirtualMachineScaleSetNetworkConfigurationProperties struct { - Primary *bool `json:"primary,omitempty"` - IPConfigurations *[]VirtualMachineScaleSetIPConfiguration `json:"ipConfigurations,omitempty"` -} - -// VirtualMachineScaleSetNetworkProfile is describes a virtual machine scale -// set network profile. -type VirtualMachineScaleSetNetworkProfile struct { - NetworkInterfaceConfigurations *[]VirtualMachineScaleSetNetworkConfiguration `json:"networkInterfaceConfigurations,omitempty"` -} - -// VirtualMachineScaleSetOSDisk is describes a virtual machine scale set -// operating system disk. -type VirtualMachineScaleSetOSDisk struct { - Name *string `json:"name,omitempty"` - Caching CachingTypes `json:"caching,omitempty"` - CreateOption DiskCreateOptionTypes `json:"createOption,omitempty"` - OsType OperatingSystemTypes `json:"osType,omitempty"` - Image *VirtualHardDisk `json:"image,omitempty"` - VhdContainers *[]string `json:"vhdContainers,omitempty"` -} - -// VirtualMachineScaleSetOSProfile is describes a virtual machine scale set OS -// profile. -type VirtualMachineScaleSetOSProfile struct { - ComputerNamePrefix *string `json:"computerNamePrefix,omitempty"` - AdminUsername *string `json:"adminUsername,omitempty"` - AdminPassword *string `json:"adminPassword,omitempty"` - CustomData *string `json:"customData,omitempty"` - WindowsConfiguration *WindowsConfiguration `json:"windowsConfiguration,omitempty"` - LinuxConfiguration *LinuxConfiguration `json:"linuxConfiguration,omitempty"` - Secrets *[]VaultSecretGroup `json:"secrets,omitempty"` -} - -// VirtualMachineScaleSetProperties is describes the properties of a Virtual -// Machine Scale Set. -type VirtualMachineScaleSetProperties struct { - UpgradePolicy *UpgradePolicy `json:"upgradePolicy,omitempty"` - VirtualMachineProfile *VirtualMachineScaleSetVMProfile `json:"virtualMachineProfile,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// VirtualMachineScaleSetSku is describes an available virtual machine scale -// set sku. -type VirtualMachineScaleSetSku struct { - ResourceType *string `json:"resourceType,omitempty"` - Sku *Sku `json:"sku,omitempty"` - Capacity *VirtualMachineScaleSetSkuCapacity `json:"capacity,omitempty"` -} - -// VirtualMachineScaleSetSkuCapacity is describes scaling information of a sku. -type VirtualMachineScaleSetSkuCapacity struct { - Minimum *int64 `json:"minimum,omitempty"` - Maximum *int64 `json:"maximum,omitempty"` - DefaultCapacity *int64 `json:"defaultCapacity,omitempty"` - ScaleType VirtualMachineScaleSetSkuScaleType `json:"scaleType,omitempty"` -} - -// VirtualMachineScaleSetStorageProfile is describes a virtual machine scale -// set storage profile. -type VirtualMachineScaleSetStorageProfile struct { - ImageReference *ImageReference `json:"imageReference,omitempty"` - OsDisk *VirtualMachineScaleSetOSDisk `json:"osDisk,omitempty"` -} - -// VirtualMachineScaleSetVM is describes a virtual machine scale set virtual -// machine. -type VirtualMachineScaleSetVM struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Type *string `json:"type,omitempty"` - Location *string `json:"location,omitempty"` - Tags *map[string]*string `json:"tags,omitempty"` - InstanceID *string `json:"instanceId,omitempty"` - Sku *Sku `json:"sku,omitempty"` - Properties *VirtualMachineScaleSetVMProperties `json:"properties,omitempty"` - Plan *Plan `json:"plan,omitempty"` - Resources *[]VirtualMachineExtension `json:"resources,omitempty"` -} - -// VirtualMachineScaleSetVMExtensionsSummary is extensions summary for virtual -// machines of a virtual machine scale set. -type VirtualMachineScaleSetVMExtensionsSummary struct { - Name *string `json:"name,omitempty"` - StatusesSummary *[]VirtualMachineStatusCodeCount `json:"statusesSummary,omitempty"` -} - -// VirtualMachineScaleSetVMInstanceIDs is specifies the list of virtual -// machine scale set instance IDs. -type VirtualMachineScaleSetVMInstanceIDs struct { - InstanceIds *[]string `json:"instanceIds,omitempty"` -} - -// VirtualMachineScaleSetVMInstanceRequiredIDs is specifies the list of -// virtual machine scale set instance IDs. -type VirtualMachineScaleSetVMInstanceRequiredIDs struct { - InstanceIds *[]string `json:"instanceIds,omitempty"` -} - -// VirtualMachineScaleSetVMInstanceView is the instance view of a virtual -// machine scale set VM. -type VirtualMachineScaleSetVMInstanceView struct { - autorest.Response `json:"-"` - PlatformUpdateDomain *int32 `json:"platformUpdateDomain,omitempty"` - PlatformFaultDomain *int32 `json:"platformFaultDomain,omitempty"` - RdpThumbPrint *string `json:"rdpThumbPrint,omitempty"` - VMAgent *VirtualMachineAgentInstanceView `json:"vmAgent,omitempty"` - Disks *[]DiskInstanceView `json:"disks,omitempty"` - Extensions *[]VirtualMachineExtensionInstanceView `json:"extensions,omitempty"` - BootDiagnostics *BootDiagnosticsInstanceView `json:"bootDiagnostics,omitempty"` - Statuses *[]InstanceViewStatus `json:"statuses,omitempty"` -} - -// VirtualMachineScaleSetVMListResult is the List Virtual Machine Scale Set -// VMs operation response. -type VirtualMachineScaleSetVMListResult struct { - autorest.Response `json:"-"` - Value *[]VirtualMachineScaleSetVM `json:"value,omitempty"` - NextLink *string `json:",omitempty"` -} - -// VirtualMachineScaleSetVMListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client VirtualMachineScaleSetVMListResult) VirtualMachineScaleSetVMListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// VirtualMachineScaleSetVMProfile is describes a virtual machine scale set -// virtual machine profile. -type VirtualMachineScaleSetVMProfile struct { - OsProfile *VirtualMachineScaleSetOSProfile `json:"osProfile,omitempty"` - StorageProfile *VirtualMachineScaleSetStorageProfile `json:"storageProfile,omitempty"` - NetworkProfile *VirtualMachineScaleSetNetworkProfile `json:"networkProfile,omitempty"` - ExtensionProfile *VirtualMachineScaleSetExtensionProfile `json:"extensionProfile,omitempty"` -} - -// VirtualMachineScaleSetVMProperties is describes the properties of a virtual -// machine scale set virtual machine. -type VirtualMachineScaleSetVMProperties struct { - LatestModelApplied *bool `json:"latestModelApplied,omitempty"` - InstanceView *VirtualMachineInstanceView `json:"instanceView,omitempty"` - HardwareProfile *HardwareProfile `json:"hardwareProfile,omitempty"` - StorageProfile *StorageProfile `json:"storageProfile,omitempty"` - OsProfile *OSProfile `json:"osProfile,omitempty"` - NetworkProfile *NetworkProfile `json:"networkProfile,omitempty"` - DiagnosticsProfile *DiagnosticsProfile `json:"diagnosticsProfile,omitempty"` - AvailabilitySet *SubResource `json:"availabilitySet,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// VirtualMachineSize is describes the properties of a VM size. -type VirtualMachineSize struct { - Name *string `json:"name,omitempty"` - NumberOfCores *int32 `json:"numberOfCores,omitempty"` - OsDiskSizeInMB *int32 `json:"osDiskSizeInMB,omitempty"` - ResourceDiskSizeInMB *int32 `json:"resourceDiskSizeInMB,omitempty"` - MemoryInMB *int32 `json:"memoryInMB,omitempty"` - MaxDataDiskCount *int32 `json:"maxDataDiskCount,omitempty"` -} - -// VirtualMachineSizeListResult is the List Virtual Machine operation response. -type VirtualMachineSizeListResult struct { - autorest.Response `json:"-"` - Value *[]VirtualMachineSize `json:"value,omitempty"` - NextLink *string `json:",omitempty"` -} - -// VirtualMachineSizeListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client VirtualMachineSizeListResult) VirtualMachineSizeListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// VirtualMachineStatusCodeCount is the status code and count of the virtual -// machine scale set instance view status summary. -type VirtualMachineStatusCodeCount struct { - Code *string `json:"code,omitempty"` - Count *int32 `json:"count,omitempty"` -} - -// WindowsConfiguration is describes Windows Configuration of the OS Profile. -type WindowsConfiguration struct { - ProvisionVMAgent *bool `json:"provisionVMAgent,omitempty"` - EnableAutomaticUpdates *bool `json:"enableAutomaticUpdates,omitempty"` - TimeZone *string `json:"timeZone,omitempty"` - AdditionalUnattendContent *[]AdditionalUnattendContent `json:"additionalUnattendContent,omitempty"` - WinRM *WinRMConfiguration `json:"winRM,omitempty"` -} - -// WinRMConfiguration is describes Windows Remote Management configuration of -// the VM -type WinRMConfiguration struct { - Listeners *[]WinRMListener `json:"listeners,omitempty"` -} - -// WinRMListener is describes Protocol and thumbprint of Windows Remote -// Management listener -type WinRMListener struct { - Protocol ProtocolTypes `json:"protocol,omitempty"` - CertificateURL *string `json:"certificateUrl,omitempty"` -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/usageoperations.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/usageoperations.go deleted file mode 100644 index 11a60768..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/usageoperations.go +++ /dev/null @@ -1,129 +0,0 @@ -package compute - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// UsageOperationsClient is the the Compute Management Client. -type UsageOperationsClient struct { - ManagementClient -} - -// NewUsageOperationsClient creates an instance of the UsageOperationsClient -// client. -func NewUsageOperationsClient(subscriptionID string) UsageOperationsClient { - return NewUsageOperationsClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewUsageOperationsClientWithBaseURI creates an instance of the -// UsageOperationsClient client. -func NewUsageOperationsClientWithBaseURI(baseURI string, subscriptionID string) UsageOperationsClient { - return UsageOperationsClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// List lists compute usages for a subscription. -// -// location is the location upon which resource usage is queried. -func (client UsageOperationsClient) List(location string) (result ListUsagesResult, err error) { - req, err := client.ListPreparer(location) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.UsageOperationsClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.UsageOperationsClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.UsageOperationsClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client UsageOperationsClient) ListPreparer(location string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "location": url.QueryEscape(location), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/usages"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client UsageOperationsClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client UsageOperationsClient) ListResponder(resp *http.Response) (result ListUsagesResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client UsageOperationsClient) ListNextResults(lastResults ListUsagesResult) (result ListUsagesResult, err error) { - req, err := lastResults.ListUsagesResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.UsageOperationsClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.UsageOperationsClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.UsageOperationsClient", "List", resp, "Failure responding to next results request request") - } - - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/version.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/version.go deleted file mode 100644 index eef4c7e7..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/version.go +++ /dev/null @@ -1,43 +0,0 @@ -package compute - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "fmt" -) - -const ( - major = "2" - minor = "1" - patch = "1" - // Always begin a "tag" with a dash (as per http://semver.org) - tag = "-beta" - semVerFormat = "%s.%s.%s%s" - userAgentFormat = "Azure-SDK-for-Go/%s arm-%s/%s" -) - -// UserAgent returns the UserAgent string to use when sending http.Requests. -func UserAgent() string { - return fmt.Sprintf(userAgentFormat, Version(), "compute", "2015-06-15") -} - -// Version returns the semantic version (see http://semver.org) of the client. -func Version() string { - return fmt.Sprintf(semVerFormat, major, minor, patch, tag) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachineextensionimages.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachineextensionimages.go deleted file mode 100644 index cf0a5acf..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachineextensionimages.go +++ /dev/null @@ -1,242 +0,0 @@ -package compute - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// VirtualMachineExtensionImagesClient is the the Compute Management Client. -type VirtualMachineExtensionImagesClient struct { - ManagementClient -} - -// NewVirtualMachineExtensionImagesClient creates an instance of the -// VirtualMachineExtensionImagesClient client. -func NewVirtualMachineExtensionImagesClient(subscriptionID string) VirtualMachineExtensionImagesClient { - return NewVirtualMachineExtensionImagesClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewVirtualMachineExtensionImagesClientWithBaseURI creates an instance of -// the VirtualMachineExtensionImagesClient client. -func NewVirtualMachineExtensionImagesClientWithBaseURI(baseURI string, subscriptionID string) VirtualMachineExtensionImagesClient { - return VirtualMachineExtensionImagesClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// Get gets a virtual machine extension image. -// -func (client VirtualMachineExtensionImagesClient) Get(location string, publisherName string, typeParameter string, version string) (result VirtualMachineExtensionImage, err error) { - req, err := client.GetPreparer(location, publisherName, typeParameter, version) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionImagesClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionImagesClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionImagesClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client VirtualMachineExtensionImagesClient) GetPreparer(location string, publisherName string, typeParameter string, version string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "location": url.QueryEscape(location), - "publisherName": url.QueryEscape(publisherName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "type": url.QueryEscape(typeParameter), - "version": url.QueryEscape(version), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmextension/types/{type}/versions/{version}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineExtensionImagesClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client VirtualMachineExtensionImagesClient) GetResponder(resp *http.Response) (result VirtualMachineExtensionImage, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListTypes gets a list of virtual machine extension image types. -// -func (client VirtualMachineExtensionImagesClient) ListTypes(location string, publisherName string) (result ListVirtualMachineImageResource, err error) { - req, err := client.ListTypesPreparer(location, publisherName) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionImagesClient", "ListTypes", nil, "Failure preparing request") - } - - resp, err := client.ListTypesSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionImagesClient", "ListTypes", resp, "Failure sending request") - } - - result, err = client.ListTypesResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionImagesClient", "ListTypes", resp, "Failure responding to request") - } - - return -} - -// ListTypesPreparer prepares the ListTypes request. -func (client VirtualMachineExtensionImagesClient) ListTypesPreparer(location string, publisherName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "location": url.QueryEscape(location), - "publisherName": url.QueryEscape(publisherName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmextension/types"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListTypesSender sends the ListTypes request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineExtensionImagesClient) ListTypesSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListTypesResponder handles the response to the ListTypes request. The method always -// closes the http.Response Body. -func (client VirtualMachineExtensionImagesClient) ListTypesResponder(resp *http.Response) (result ListVirtualMachineImageResource, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result.Value), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListVersions gets a list of virtual machine extension image versions. -// -// filter is the filter to apply on the operation. -func (client VirtualMachineExtensionImagesClient) ListVersions(location string, publisherName string, typeParameter string, filter string, top *int32, orderBy string) (result ListVirtualMachineImageResource, err error) { - req, err := client.ListVersionsPreparer(location, publisherName, typeParameter, filter, top, orderBy) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionImagesClient", "ListVersions", nil, "Failure preparing request") - } - - resp, err := client.ListVersionsSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionImagesClient", "ListVersions", resp, "Failure sending request") - } - - result, err = client.ListVersionsResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionImagesClient", "ListVersions", resp, "Failure responding to request") - } - - return -} - -// ListVersionsPreparer prepares the ListVersions request. -func (client VirtualMachineExtensionImagesClient) ListVersionsPreparer(location string, publisherName string, typeParameter string, filter string, top *int32, orderBy string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "location": url.QueryEscape(location), - "publisherName": url.QueryEscape(publisherName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "type": url.QueryEscape(typeParameter), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - if len(filter) > 0 { - queryParameters["$filter"] = filter - } - if top != nil { - queryParameters["$top"] = top - } - if len(orderBy) > 0 { - queryParameters["$orderBy"] = orderBy - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmextension/types/{type}/versions"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListVersionsSender sends the ListVersions request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineExtensionImagesClient) ListVersionsSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListVersionsResponder handles the response to the ListVersions request. The method always -// closes the http.Response Body. -func (client VirtualMachineExtensionImagesClient) ListVersionsResponder(resp *http.Response) (result ListVirtualMachineImageResource, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result.Value), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachineextensions.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachineextensions.go deleted file mode 100644 index af937c6f..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachineextensions.go +++ /dev/null @@ -1,256 +0,0 @@ -package compute - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// VirtualMachineExtensionsClient is the the Compute Management Client. -type VirtualMachineExtensionsClient struct { - ManagementClient -} - -// NewVirtualMachineExtensionsClient creates an instance of the -// VirtualMachineExtensionsClient client. -func NewVirtualMachineExtensionsClient(subscriptionID string) VirtualMachineExtensionsClient { - return NewVirtualMachineExtensionsClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewVirtualMachineExtensionsClientWithBaseURI creates an instance of the -// VirtualMachineExtensionsClient client. -func NewVirtualMachineExtensionsClientWithBaseURI(baseURI string, subscriptionID string) VirtualMachineExtensionsClient { - return VirtualMachineExtensionsClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// CreateOrUpdate the operation to create or update the extension. This method -// may poll for completion. Polling can be canceled by passing the cancel -// channel argument. The channel will be used to cancel polling and any -// outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. vmName is the name of -// the virtual machine where the extension should be create or updated. -// vmExtensionName is the name of the virtual machine extension. -// extensionParameters is parameters supplied to the Create Virtual Machine -// Extension operation. -func (client VirtualMachineExtensionsClient) CreateOrUpdate(resourceGroupName string, vmName string, vmExtensionName string, extensionParameters VirtualMachineExtension, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.CreateOrUpdatePreparer(resourceGroupName, vmName, vmExtensionName, extensionParameters, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionsClient", "CreateOrUpdate", nil, "Failure preparing request") - } - - resp, err := client.CreateOrUpdateSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionsClient", "CreateOrUpdate", resp, "Failure sending request") - } - - result, err = client.CreateOrUpdateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionsClient", "CreateOrUpdate", resp, "Failure responding to request") - } - - return -} - -// CreateOrUpdatePreparer prepares the CreateOrUpdate request. -func (client VirtualMachineExtensionsClient) CreateOrUpdatePreparer(resourceGroupName string, vmName string, vmExtensionName string, extensionParameters VirtualMachineExtension, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmExtensionName": url.QueryEscape(vmExtensionName), - "vmName": url.QueryEscape(vmName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/extensions/{vmExtensionName}"), - autorest.WithJSON(extensionParameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineExtensionsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always -// closes the http.Response Body. -func (client VirtualMachineExtensionsClient) CreateOrUpdateResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusCreated, http.StatusOK), - autorest.ByClosing()) - result.Response = resp - return -} - -// Delete the operation to delete the extension. This method may poll for -// completion. Polling can be canceled by passing the cancel channel -// argument. The channel will be used to cancel polling and any outstanding -// HTTP requests. -// -// resourceGroupName is the name of the resource group. vmName is the name of -// the virtual machine where the extension should be deleted. vmExtensionName -// is the name of the virtual machine extension. -func (client VirtualMachineExtensionsClient) Delete(resourceGroupName string, vmName string, vmExtensionName string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.DeletePreparer(resourceGroupName, vmName, vmExtensionName, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionsClient", "Delete", nil, "Failure preparing request") - } - - resp, err := client.DeleteSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionsClient", "Delete", resp, "Failure sending request") - } - - result, err = client.DeleteResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionsClient", "Delete", resp, "Failure responding to request") - } - - return -} - -// DeletePreparer prepares the Delete request. -func (client VirtualMachineExtensionsClient) DeletePreparer(resourceGroupName string, vmName string, vmExtensionName string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmExtensionName": url.QueryEscape(vmExtensionName), - "vmName": url.QueryEscape(vmName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/extensions/{vmExtensionName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteSender sends the Delete request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineExtensionsClient) DeleteSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// DeleteResponder handles the response to the Delete request. The method always -// closes the http.Response Body. -func (client VirtualMachineExtensionsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusAccepted, http.StatusNoContent, http.StatusOK), - autorest.ByClosing()) - result.Response = resp - return -} - -// Get the operation to get the extension. -// -// resourceGroupName is the name of the resource group. vmName is the name of -// the virtual machine containing the extension. vmExtensionName is the name -// of the virtual machine extension. expand is the expand expression to apply -// on the operation. -func (client VirtualMachineExtensionsClient) Get(resourceGroupName string, vmName string, vmExtensionName string, expand string) (result VirtualMachineExtension, err error) { - req, err := client.GetPreparer(resourceGroupName, vmName, vmExtensionName, expand) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionsClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionsClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionsClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client VirtualMachineExtensionsClient) GetPreparer(resourceGroupName string, vmName string, vmExtensionName string, expand string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmExtensionName": url.QueryEscape(vmExtensionName), - "vmName": url.QueryEscape(vmName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - if len(expand) > 0 { - queryParameters["$expand"] = expand - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/extensions/{vmExtensionName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineExtensionsClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client VirtualMachineExtensionsClient) GetResponder(resp *http.Response) (result VirtualMachineExtension, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachineimages.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachineimages.go deleted file mode 100644 index 487332eb..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachineimages.go +++ /dev/null @@ -1,368 +0,0 @@ -package compute - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// VirtualMachineImagesClient is the the Compute Management Client. -type VirtualMachineImagesClient struct { - ManagementClient -} - -// NewVirtualMachineImagesClient creates an instance of the -// VirtualMachineImagesClient client. -func NewVirtualMachineImagesClient(subscriptionID string) VirtualMachineImagesClient { - return NewVirtualMachineImagesClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewVirtualMachineImagesClientWithBaseURI creates an instance of the -// VirtualMachineImagesClient client. -func NewVirtualMachineImagesClientWithBaseURI(baseURI string, subscriptionID string) VirtualMachineImagesClient { - return VirtualMachineImagesClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// Get gets a virtual machine image. -// -func (client VirtualMachineImagesClient) Get(location string, publisherName string, offer string, skus string, version string) (result VirtualMachineImage, err error) { - req, err := client.GetPreparer(location, publisherName, offer, skus, version) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client VirtualMachineImagesClient) GetPreparer(location string, publisherName string, offer string, skus string, version string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "location": url.QueryEscape(location), - "offer": url.QueryEscape(offer), - "publisherName": url.QueryEscape(publisherName), - "skus": url.QueryEscape(skus), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "version": url.QueryEscape(version), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmimage/offers/{offer}/skus/{skus}/versions/{version}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineImagesClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client VirtualMachineImagesClient) GetResponder(resp *http.Response) (result VirtualMachineImage, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List gets a list of virtual machine images. -// -// filter is the filter to apply on the operation. -func (client VirtualMachineImagesClient) List(location string, publisherName string, offer string, skus string, filter string, top *int32, orderby string) (result ListVirtualMachineImageResource, err error) { - req, err := client.ListPreparer(location, publisherName, offer, skus, filter, top, orderby) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client VirtualMachineImagesClient) ListPreparer(location string, publisherName string, offer string, skus string, filter string, top *int32, orderby string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "location": url.QueryEscape(location), - "offer": url.QueryEscape(offer), - "publisherName": url.QueryEscape(publisherName), - "skus": url.QueryEscape(skus), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - if len(filter) > 0 { - queryParameters["$filter"] = filter - } - if top != nil { - queryParameters["$top"] = top - } - if len(orderby) > 0 { - queryParameters["$orderby"] = orderby - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmimage/offers/{offer}/skus/{skus}/versions"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineImagesClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client VirtualMachineImagesClient) ListResponder(resp *http.Response) (result ListVirtualMachineImageResource, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result.Value), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListOffers gets a list of virtual machine image offers. -// -func (client VirtualMachineImagesClient) ListOffers(location string, publisherName string) (result ListVirtualMachineImageResource, err error) { - req, err := client.ListOffersPreparer(location, publisherName) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "ListOffers", nil, "Failure preparing request") - } - - resp, err := client.ListOffersSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "ListOffers", resp, "Failure sending request") - } - - result, err = client.ListOffersResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "ListOffers", resp, "Failure responding to request") - } - - return -} - -// ListOffersPreparer prepares the ListOffers request. -func (client VirtualMachineImagesClient) ListOffersPreparer(location string, publisherName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "location": url.QueryEscape(location), - "publisherName": url.QueryEscape(publisherName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmimage/offers"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListOffersSender sends the ListOffers request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineImagesClient) ListOffersSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListOffersResponder handles the response to the ListOffers request. The method always -// closes the http.Response Body. -func (client VirtualMachineImagesClient) ListOffersResponder(resp *http.Response) (result ListVirtualMachineImageResource, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result.Value), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListPublishers gets a list of virtual machine image publishers. -// -func (client VirtualMachineImagesClient) ListPublishers(location string) (result ListVirtualMachineImageResource, err error) { - req, err := client.ListPublishersPreparer(location) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "ListPublishers", nil, "Failure preparing request") - } - - resp, err := client.ListPublishersSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "ListPublishers", resp, "Failure sending request") - } - - result, err = client.ListPublishersResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "ListPublishers", resp, "Failure responding to request") - } - - return -} - -// ListPublishersPreparer prepares the ListPublishers request. -func (client VirtualMachineImagesClient) ListPublishersPreparer(location string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "location": url.QueryEscape(location), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListPublishersSender sends the ListPublishers request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineImagesClient) ListPublishersSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListPublishersResponder handles the response to the ListPublishers request. The method always -// closes the http.Response Body. -func (client VirtualMachineImagesClient) ListPublishersResponder(resp *http.Response) (result ListVirtualMachineImageResource, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result.Value), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListSkus gets a list of virtual machine image skus. -// -func (client VirtualMachineImagesClient) ListSkus(location string, publisherName string, offer string) (result ListVirtualMachineImageResource, err error) { - req, err := client.ListSkusPreparer(location, publisherName, offer) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "ListSkus", nil, "Failure preparing request") - } - - resp, err := client.ListSkusSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "ListSkus", resp, "Failure sending request") - } - - result, err = client.ListSkusResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "ListSkus", resp, "Failure responding to request") - } - - return -} - -// ListSkusPreparer prepares the ListSkus request. -func (client VirtualMachineImagesClient) ListSkusPreparer(location string, publisherName string, offer string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "location": url.QueryEscape(location), - "offer": url.QueryEscape(offer), - "publisherName": url.QueryEscape(publisherName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmimage/offers/{offer}/skus"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSkusSender sends the ListSkus request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineImagesClient) ListSkusSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListSkusResponder handles the response to the ListSkus request. The method always -// closes the http.Response Body. -func (client VirtualMachineImagesClient) ListSkusResponder(resp *http.Response) (result ListVirtualMachineImageResource, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result.Value), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachines.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachines.go deleted file mode 100644 index 37f9f3f8..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachines.go +++ /dev/null @@ -1,916 +0,0 @@ -package compute - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// VirtualMachinesClient is the the Compute Management Client. -type VirtualMachinesClient struct { - ManagementClient -} - -// NewVirtualMachinesClient creates an instance of the VirtualMachinesClient -// client. -func NewVirtualMachinesClient(subscriptionID string) VirtualMachinesClient { - return NewVirtualMachinesClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewVirtualMachinesClientWithBaseURI creates an instance of the -// VirtualMachinesClient client. -func NewVirtualMachinesClientWithBaseURI(baseURI string, subscriptionID string) VirtualMachinesClient { - return VirtualMachinesClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// Capture captures the VM by copying VirtualHardDisks of the VM and outputs a -// template that can be used to create similar VMs. This method may poll for -// completion. Polling can be canceled by passing the cancel channel -// argument. The channel will be used to cancel polling and any outstanding -// HTTP requests. -// -// resourceGroupName is the name of the resource group. vmName is the name of -// the virtual machine. parameters is parameters supplied to the Capture -// Virtual Machine operation. -func (client VirtualMachinesClient) Capture(resourceGroupName string, vmName string, parameters VirtualMachineCaptureParameters, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.CapturePreparer(resourceGroupName, vmName, parameters, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Capture", nil, "Failure preparing request") - } - - resp, err := client.CaptureSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Capture", resp, "Failure sending request") - } - - result, err = client.CaptureResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Capture", resp, "Failure responding to request") - } - - return -} - -// CapturePreparer prepares the Capture request. -func (client VirtualMachinesClient) CapturePreparer(resourceGroupName string, vmName string, parameters VirtualMachineCaptureParameters, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmName": url.QueryEscape(vmName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/capture"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CaptureSender sends the Capture request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachinesClient) CaptureSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// CaptureResponder handles the response to the Capture request. The method always -// closes the http.Response Body. -func (client VirtualMachinesClient) CaptureResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), - autorest.ByClosing()) - result.Response = resp - return -} - -// CreateOrUpdate the operation to create or update a virtual machine. This -// method may poll for completion. Polling can be canceled by passing the -// cancel channel argument. The channel will be used to cancel polling and -// any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. vmName is the name of -// the virtual machine. parameters is parameters supplied to the Create -// Virtual Machine operation. -func (client VirtualMachinesClient) CreateOrUpdate(resourceGroupName string, vmName string, parameters VirtualMachine, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.CreateOrUpdatePreparer(resourceGroupName, vmName, parameters, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "CreateOrUpdate", nil, "Failure preparing request") - } - - resp, err := client.CreateOrUpdateSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "CreateOrUpdate", resp, "Failure sending request") - } - - result, err = client.CreateOrUpdateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "CreateOrUpdate", resp, "Failure responding to request") - } - - return -} - -// CreateOrUpdatePreparer prepares the CreateOrUpdate request. -func (client VirtualMachinesClient) CreateOrUpdatePreparer(resourceGroupName string, vmName string, parameters VirtualMachine, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmName": url.QueryEscape(vmName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachinesClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always -// closes the http.Response Body. -func (client VirtualMachinesClient) CreateOrUpdateResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusCreated, http.StatusOK), - autorest.ByClosing()) - result.Response = resp - return -} - -// Deallocate shuts down the Virtual Machine and releases the compute -// resources. You are not billed for the compute resources that this Virtual -// Machine uses. This method may poll for completion. Polling can be canceled -// by passing the cancel channel argument. The channel will be used to cancel -// polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. vmName is the name of -// the virtual machine. -func (client VirtualMachinesClient) Deallocate(resourceGroupName string, vmName string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.DeallocatePreparer(resourceGroupName, vmName, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Deallocate", nil, "Failure preparing request") - } - - resp, err := client.DeallocateSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Deallocate", resp, "Failure sending request") - } - - result, err = client.DeallocateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Deallocate", resp, "Failure responding to request") - } - - return -} - -// DeallocatePreparer prepares the Deallocate request. -func (client VirtualMachinesClient) DeallocatePreparer(resourceGroupName string, vmName string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmName": url.QueryEscape(vmName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/deallocate"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeallocateSender sends the Deallocate request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachinesClient) DeallocateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// DeallocateResponder handles the response to the Deallocate request. The method always -// closes the http.Response Body. -func (client VirtualMachinesClient) DeallocateResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), - autorest.ByClosing()) - result.Response = resp - return -} - -// Delete the operation to delete a virtual machine. This method may poll for -// completion. Polling can be canceled by passing the cancel channel -// argument. The channel will be used to cancel polling and any outstanding -// HTTP requests. -// -// resourceGroupName is the name of the resource group. vmName is the name of -// the virtual machine. -func (client VirtualMachinesClient) Delete(resourceGroupName string, vmName string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.DeletePreparer(resourceGroupName, vmName, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Delete", nil, "Failure preparing request") - } - - resp, err := client.DeleteSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Delete", resp, "Failure sending request") - } - - result, err = client.DeleteResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Delete", resp, "Failure responding to request") - } - - return -} - -// DeletePreparer prepares the Delete request. -func (client VirtualMachinesClient) DeletePreparer(resourceGroupName string, vmName string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmName": url.QueryEscape(vmName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteSender sends the Delete request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachinesClient) DeleteSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// DeleteResponder handles the response to the Delete request. The method always -// closes the http.Response Body. -func (client VirtualMachinesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), - autorest.ByClosing()) - result.Response = resp - return -} - -// Generalize sets the state of the VM as Generalized. -// -// resourceGroupName is the name of the resource group. vmName is the name of -// the virtual machine. -func (client VirtualMachinesClient) Generalize(resourceGroupName string, vmName string) (result autorest.Response, err error) { - req, err := client.GeneralizePreparer(resourceGroupName, vmName) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Generalize", nil, "Failure preparing request") - } - - resp, err := client.GeneralizeSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Generalize", resp, "Failure sending request") - } - - result, err = client.GeneralizeResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Generalize", resp, "Failure responding to request") - } - - return -} - -// GeneralizePreparer prepares the Generalize request. -func (client VirtualMachinesClient) GeneralizePreparer(resourceGroupName string, vmName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmName": url.QueryEscape(vmName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/generalize"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GeneralizeSender sends the Generalize request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachinesClient) GeneralizeSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GeneralizeResponder handles the response to the Generalize request. The method always -// closes the http.Response Body. -func (client VirtualMachinesClient) GeneralizeResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByClosing()) - result.Response = resp - return -} - -// Get the operation to get a virtual machine. -// -// resourceGroupName is the name of the resource group. vmName is the name of -// the virtual machine. expand is the expand expression to apply on the -// operation. -func (client VirtualMachinesClient) Get(resourceGroupName string, vmName string, expand string) (result VirtualMachine, err error) { - req, err := client.GetPreparer(resourceGroupName, vmName, expand) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client VirtualMachinesClient) GetPreparer(resourceGroupName string, vmName string, expand string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmName": url.QueryEscape(vmName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - if len(expand) > 0 { - queryParameters["$expand"] = expand - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachinesClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client VirtualMachinesClient) GetResponder(resp *http.Response) (result VirtualMachine, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List the operation to list virtual machines under a resource group. -// -// resourceGroupName is the name of the resource group. -func (client VirtualMachinesClient) List(resourceGroupName string) (result VirtualMachineListResult, err error) { - req, err := client.ListPreparer(resourceGroupName) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client VirtualMachinesClient) ListPreparer(resourceGroupName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachinesClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client VirtualMachinesClient) ListResponder(resp *http.Response) (result VirtualMachineListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client VirtualMachinesClient) ListNextResults(lastResults VirtualMachineListResult) (result VirtualMachineListResult, err error) { - req, err := lastResults.VirtualMachineListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "List", resp, "Failure responding to next results request request") - } - - return -} - -// ListAll gets the list of Virtual Machines in the subscription. Use nextLink -// property in the response to get the next page of Virtual Machines. Do this -// till nextLink is not null to fetch all the Virtual Machines. -func (client VirtualMachinesClient) ListAll() (result VirtualMachineListResult, err error) { - req, err := client.ListAllPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "ListAll", nil, "Failure preparing request") - } - - resp, err := client.ListAllSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "ListAll", resp, "Failure sending request") - } - - result, err = client.ListAllResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "ListAll", resp, "Failure responding to request") - } - - return -} - -// ListAllPreparer prepares the ListAll request. -func (client VirtualMachinesClient) ListAllPreparer() (*http.Request, error) { - pathParameters := map[string]interface{}{ - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/virtualMachines"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListAllSender sends the ListAll request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachinesClient) ListAllSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListAllResponder handles the response to the ListAll request. The method always -// closes the http.Response Body. -func (client VirtualMachinesClient) ListAllResponder(resp *http.Response) (result VirtualMachineListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListAllNextResults retrieves the next set of results, if any. -func (client VirtualMachinesClient) ListAllNextResults(lastResults VirtualMachineListResult) (result VirtualMachineListResult, err error) { - req, err := lastResults.VirtualMachineListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "ListAll", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListAllSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "ListAll", resp, "Failure sending next results request request") - } - - result, err = client.ListAllResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "ListAll", resp, "Failure responding to next results request request") - } - - return -} - -// ListAvailableSizes lists virtual-machine-sizes available to be used for a -// virtual machine. -// -// resourceGroupName is the name of the resource group. vmName is the name of -// the virtual machine. -func (client VirtualMachinesClient) ListAvailableSizes(resourceGroupName string, vmName string) (result VirtualMachineSizeListResult, err error) { - req, err := client.ListAvailableSizesPreparer(resourceGroupName, vmName) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "ListAvailableSizes", nil, "Failure preparing request") - } - - resp, err := client.ListAvailableSizesSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "ListAvailableSizes", resp, "Failure sending request") - } - - result, err = client.ListAvailableSizesResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "ListAvailableSizes", resp, "Failure responding to request") - } - - return -} - -// ListAvailableSizesPreparer prepares the ListAvailableSizes request. -func (client VirtualMachinesClient) ListAvailableSizesPreparer(resourceGroupName string, vmName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmName": url.QueryEscape(vmName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/vmSizes"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListAvailableSizesSender sends the ListAvailableSizes request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachinesClient) ListAvailableSizesSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListAvailableSizesResponder handles the response to the ListAvailableSizes request. The method always -// closes the http.Response Body. -func (client VirtualMachinesClient) ListAvailableSizesResponder(resp *http.Response) (result VirtualMachineSizeListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListAvailableSizesNextResults retrieves the next set of results, if any. -func (client VirtualMachinesClient) ListAvailableSizesNextResults(lastResults VirtualMachineSizeListResult) (result VirtualMachineSizeListResult, err error) { - req, err := lastResults.VirtualMachineSizeListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "ListAvailableSizes", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListAvailableSizesSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "ListAvailableSizes", resp, "Failure sending next results request request") - } - - result, err = client.ListAvailableSizesResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "ListAvailableSizes", resp, "Failure responding to next results request request") - } - - return -} - -// PowerOff the operation to power off (stop) a virtual machine. This method -// may poll for completion. Polling can be canceled by passing the cancel -// channel argument. The channel will be used to cancel polling and any -// outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. vmName is the name of -// the virtual machine. -func (client VirtualMachinesClient) PowerOff(resourceGroupName string, vmName string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.PowerOffPreparer(resourceGroupName, vmName, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "PowerOff", nil, "Failure preparing request") - } - - resp, err := client.PowerOffSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "PowerOff", resp, "Failure sending request") - } - - result, err = client.PowerOffResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "PowerOff", resp, "Failure responding to request") - } - - return -} - -// PowerOffPreparer prepares the PowerOff request. -func (client VirtualMachinesClient) PowerOffPreparer(resourceGroupName string, vmName string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmName": url.QueryEscape(vmName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/powerOff"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// PowerOffSender sends the PowerOff request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachinesClient) PowerOffSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// PowerOffResponder handles the response to the PowerOff request. The method always -// closes the http.Response Body. -func (client VirtualMachinesClient) PowerOffResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), - autorest.ByClosing()) - result.Response = resp - return -} - -// Restart the operation to restart a virtual machine. This method may poll -// for completion. Polling can be canceled by passing the cancel channel -// argument. The channel will be used to cancel polling and any outstanding -// HTTP requests. -// -// resourceGroupName is the name of the resource group. vmName is the name of -// the virtual machine. -func (client VirtualMachinesClient) Restart(resourceGroupName string, vmName string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.RestartPreparer(resourceGroupName, vmName, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Restart", nil, "Failure preparing request") - } - - resp, err := client.RestartSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Restart", resp, "Failure sending request") - } - - result, err = client.RestartResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Restart", resp, "Failure responding to request") - } - - return -} - -// RestartPreparer prepares the Restart request. -func (client VirtualMachinesClient) RestartPreparer(resourceGroupName string, vmName string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmName": url.QueryEscape(vmName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/restart"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// RestartSender sends the Restart request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachinesClient) RestartSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// RestartResponder handles the response to the Restart request. The method always -// closes the http.Response Body. -func (client VirtualMachinesClient) RestartResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), - autorest.ByClosing()) - result.Response = resp - return -} - -// Start the operation to start a virtual machine. This method may poll for -// completion. Polling can be canceled by passing the cancel channel -// argument. The channel will be used to cancel polling and any outstanding -// HTTP requests. -// -// resourceGroupName is the name of the resource group. vmName is the name of -// the virtual machine. -func (client VirtualMachinesClient) Start(resourceGroupName string, vmName string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.StartPreparer(resourceGroupName, vmName, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Start", nil, "Failure preparing request") - } - - resp, err := client.StartSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Start", resp, "Failure sending request") - } - - result, err = client.StartResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Start", resp, "Failure responding to request") - } - - return -} - -// StartPreparer prepares the Start request. -func (client VirtualMachinesClient) StartPreparer(resourceGroupName string, vmName string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmName": url.QueryEscape(vmName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/start"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// StartSender sends the Start request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachinesClient) StartSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// StartResponder handles the response to the Start request. The method always -// closes the http.Response Body. -func (client VirtualMachinesClient) StartResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), - autorest.ByClosing()) - result.Response = resp - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinescalesets.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinescalesets.go deleted file mode 100644 index 7fedc275..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinescalesets.go +++ /dev/null @@ -1,1008 +0,0 @@ -package compute - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// VirtualMachineScaleSetsClient is the the Compute Management Client. -type VirtualMachineScaleSetsClient struct { - ManagementClient -} - -// NewVirtualMachineScaleSetsClient creates an instance of the -// VirtualMachineScaleSetsClient client. -func NewVirtualMachineScaleSetsClient(subscriptionID string) VirtualMachineScaleSetsClient { - return NewVirtualMachineScaleSetsClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewVirtualMachineScaleSetsClientWithBaseURI creates an instance of the -// VirtualMachineScaleSetsClient client. -func NewVirtualMachineScaleSetsClientWithBaseURI(baseURI string, subscriptionID string) VirtualMachineScaleSetsClient { - return VirtualMachineScaleSetsClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// CreateOrUpdate the operation to create or update a virtual machine scale -// set. This method may poll for completion. Polling can be canceled by -// passing the cancel channel argument. The channel will be used to cancel -// polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. name is parameters -// supplied to the Create Virtual Machine Scale Set operation. parameters is -// parameters supplied to the Create Virtual Machine Scale Set operation. -func (client VirtualMachineScaleSetsClient) CreateOrUpdate(resourceGroupName string, name string, parameters VirtualMachineScaleSet, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.CreateOrUpdatePreparer(resourceGroupName, name, parameters, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "CreateOrUpdate", nil, "Failure preparing request") - } - - resp, err := client.CreateOrUpdateSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "CreateOrUpdate", resp, "Failure sending request") - } - - result, err = client.CreateOrUpdateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "CreateOrUpdate", resp, "Failure responding to request") - } - - return -} - -// CreateOrUpdatePreparer prepares the CreateOrUpdate request. -func (client VirtualMachineScaleSetsClient) CreateOrUpdatePreparer(resourceGroupName string, name string, parameters VirtualMachineScaleSet, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "name": url.QueryEscape(name), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{name}"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineScaleSetsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always -// closes the http.Response Body. -func (client VirtualMachineScaleSetsClient) CreateOrUpdateResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusCreated, http.StatusOK), - autorest.ByClosing()) - result.Response = resp - return -} - -// Deallocate the operation to deallocate virtual machines in a virtual -// machine scale set. This method may poll for completion. Polling can be -// canceled by passing the cancel channel argument. The channel will be used -// to cancel polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. vmScaleSetName is the -// name of the virtual machine scale set. vmInstanceIDs is the list of -// virtual machine scale set instance IDs. -func (client VirtualMachineScaleSetsClient) Deallocate(resourceGroupName string, vmScaleSetName string, vmInstanceIDs *VirtualMachineScaleSetVMInstanceIDs, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.DeallocatePreparer(resourceGroupName, vmScaleSetName, vmInstanceIDs, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Deallocate", nil, "Failure preparing request") - } - - resp, err := client.DeallocateSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Deallocate", resp, "Failure sending request") - } - - result, err = client.DeallocateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Deallocate", resp, "Failure responding to request") - } - - return -} - -// DeallocatePreparer prepares the Deallocate request. -func (client VirtualMachineScaleSetsClient) DeallocatePreparer(resourceGroupName string, vmScaleSetName string, vmInstanceIDs *VirtualMachineScaleSetVMInstanceIDs, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmScaleSetName": url.QueryEscape(vmScaleSetName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - preparer := autorest.CreatePreparer( - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/deallocate"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) - if vmInstanceIDs != nil { - preparer = autorest.DecoratePreparer(preparer, - autorest.WithJSON(vmInstanceIDs)) - } - return preparer.Prepare(&http.Request{Cancel: cancel}) -} - -// DeallocateSender sends the Deallocate request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineScaleSetsClient) DeallocateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// DeallocateResponder handles the response to the Deallocate request. The method always -// closes the http.Response Body. -func (client VirtualMachineScaleSetsClient) DeallocateResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), - autorest.ByClosing()) - result.Response = resp - return -} - -// Delete the operation to delete a virtual machine scale set. This method may -// poll for completion. Polling can be canceled by passing the cancel channel -// argument. The channel will be used to cancel polling and any outstanding -// HTTP requests. -// -// resourceGroupName is the name of the resource group. vmScaleSetName is the -// name of the virtual machine scale set. -func (client VirtualMachineScaleSetsClient) Delete(resourceGroupName string, vmScaleSetName string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.DeletePreparer(resourceGroupName, vmScaleSetName, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Delete", nil, "Failure preparing request") - } - - resp, err := client.DeleteSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Delete", resp, "Failure sending request") - } - - result, err = client.DeleteResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Delete", resp, "Failure responding to request") - } - - return -} - -// DeletePreparer prepares the Delete request. -func (client VirtualMachineScaleSetsClient) DeletePreparer(resourceGroupName string, vmScaleSetName string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmScaleSetName": url.QueryEscape(vmScaleSetName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteSender sends the Delete request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineScaleSetsClient) DeleteSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// DeleteResponder handles the response to the Delete request. The method always -// closes the http.Response Body. -func (client VirtualMachineScaleSetsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusAccepted, http.StatusOK, http.StatusNoContent), - autorest.ByClosing()) - result.Response = resp - return -} - -// DeleteInstances the operation to delete virtual machines in a virtual -// machine scale set. This method may poll for completion. Polling can be -// canceled by passing the cancel channel argument. The channel will be used -// to cancel polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. vmScaleSetName is the -// name of the virtual machine scale set. vmInstanceIDs is the list of -// virtual machine scale set instance IDs. -func (client VirtualMachineScaleSetsClient) DeleteInstances(resourceGroupName string, vmScaleSetName string, vmInstanceIDs VirtualMachineScaleSetVMInstanceRequiredIDs, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.DeleteInstancesPreparer(resourceGroupName, vmScaleSetName, vmInstanceIDs, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "DeleteInstances", nil, "Failure preparing request") - } - - resp, err := client.DeleteInstancesSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "DeleteInstances", resp, "Failure sending request") - } - - result, err = client.DeleteInstancesResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "DeleteInstances", resp, "Failure responding to request") - } - - return -} - -// DeleteInstancesPreparer prepares the DeleteInstances request. -func (client VirtualMachineScaleSetsClient) DeleteInstancesPreparer(resourceGroupName string, vmScaleSetName string, vmInstanceIDs VirtualMachineScaleSetVMInstanceRequiredIDs, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmScaleSetName": url.QueryEscape(vmScaleSetName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/delete"), - autorest.WithJSON(vmInstanceIDs), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteInstancesSender sends the DeleteInstances request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineScaleSetsClient) DeleteInstancesSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// DeleteInstancesResponder handles the response to the DeleteInstances request. The method always -// closes the http.Response Body. -func (client VirtualMachineScaleSetsClient) DeleteInstancesResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), - autorest.ByClosing()) - result.Response = resp - return -} - -// Get the operation to get a virtual machine scale set. -// -// resourceGroupName is the name of the resource group. vmScaleSetName is the -// name of the virtual machine scale set. -func (client VirtualMachineScaleSetsClient) Get(resourceGroupName string, vmScaleSetName string) (result VirtualMachineScaleSet, err error) { - req, err := client.GetPreparer(resourceGroupName, vmScaleSetName) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client VirtualMachineScaleSetsClient) GetPreparer(resourceGroupName string, vmScaleSetName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmScaleSetName": url.QueryEscape(vmScaleSetName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineScaleSetsClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client VirtualMachineScaleSetsClient) GetResponder(resp *http.Response) (result VirtualMachineScaleSet, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// GetInstanceView the operation to get a virtual machine scale set instance -// view. -// -// resourceGroupName is the name of the resource group. vmScaleSetName is the -// name of the virtual machine scale set. -func (client VirtualMachineScaleSetsClient) GetInstanceView(resourceGroupName string, vmScaleSetName string) (result VirtualMachineScaleSetInstanceView, err error) { - req, err := client.GetInstanceViewPreparer(resourceGroupName, vmScaleSetName) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "GetInstanceView", nil, "Failure preparing request") - } - - resp, err := client.GetInstanceViewSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "GetInstanceView", resp, "Failure sending request") - } - - result, err = client.GetInstanceViewResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "GetInstanceView", resp, "Failure responding to request") - } - - return -} - -// GetInstanceViewPreparer prepares the GetInstanceView request. -func (client VirtualMachineScaleSetsClient) GetInstanceViewPreparer(resourceGroupName string, vmScaleSetName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmScaleSetName": url.QueryEscape(vmScaleSetName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/instanceView"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetInstanceViewSender sends the GetInstanceView request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineScaleSetsClient) GetInstanceViewSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetInstanceViewResponder handles the response to the GetInstanceView request. The method always -// closes the http.Response Body. -func (client VirtualMachineScaleSetsClient) GetInstanceViewResponder(resp *http.Response) (result VirtualMachineScaleSetInstanceView, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List the operation to list virtual machine scale sets under a resource -// group. -// -// resourceGroupName is the name of the resource group. -func (client VirtualMachineScaleSetsClient) List(resourceGroupName string) (result VirtualMachineScaleSetListResult, err error) { - req, err := client.ListPreparer(resourceGroupName) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client VirtualMachineScaleSetsClient) ListPreparer(resourceGroupName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineScaleSetsClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client VirtualMachineScaleSetsClient) ListResponder(resp *http.Response) (result VirtualMachineScaleSetListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client VirtualMachineScaleSetsClient) ListNextResults(lastResults VirtualMachineScaleSetListResult) (result VirtualMachineScaleSetListResult, err error) { - req, err := lastResults.VirtualMachineScaleSetListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "List", resp, "Failure responding to next results request request") - } - - return -} - -// ListAll gets the list of Virtual Machine Scale Sets in the subscription. -// Use nextLink property in the response to get the next page of Virtual -// Machine Scale Sets. Do this till nextLink is not null to fetch all the -// Virtual Machine Scale Sets. -func (client VirtualMachineScaleSetsClient) ListAll() (result VirtualMachineScaleSetListWithLinkResult, err error) { - req, err := client.ListAllPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "ListAll", nil, "Failure preparing request") - } - - resp, err := client.ListAllSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "ListAll", resp, "Failure sending request") - } - - result, err = client.ListAllResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "ListAll", resp, "Failure responding to request") - } - - return -} - -// ListAllPreparer prepares the ListAll request. -func (client VirtualMachineScaleSetsClient) ListAllPreparer() (*http.Request, error) { - pathParameters := map[string]interface{}{ - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/virtualMachineScaleSets"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListAllSender sends the ListAll request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineScaleSetsClient) ListAllSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListAllResponder handles the response to the ListAll request. The method always -// closes the http.Response Body. -func (client VirtualMachineScaleSetsClient) ListAllResponder(resp *http.Response) (result VirtualMachineScaleSetListWithLinkResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListAllNextResults retrieves the next set of results, if any. -func (client VirtualMachineScaleSetsClient) ListAllNextResults(lastResults VirtualMachineScaleSetListWithLinkResult) (result VirtualMachineScaleSetListWithLinkResult, err error) { - req, err := lastResults.VirtualMachineScaleSetListWithLinkResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "ListAll", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListAllSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "ListAll", resp, "Failure sending next results request request") - } - - result, err = client.ListAllResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "ListAll", resp, "Failure responding to next results request request") - } - - return -} - -// ListSkus the operation to list available skus for a virtual machine scale -// set. -// -// resourceGroupName is the name of the resource group. vmScaleSetName is the -// name of the virtual machine scale set. -func (client VirtualMachineScaleSetsClient) ListSkus(resourceGroupName string, vmScaleSetName string) (result VirtualMachineScaleSetListSkusResult, err error) { - req, err := client.ListSkusPreparer(resourceGroupName, vmScaleSetName) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "ListSkus", nil, "Failure preparing request") - } - - resp, err := client.ListSkusSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "ListSkus", resp, "Failure sending request") - } - - result, err = client.ListSkusResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "ListSkus", resp, "Failure responding to request") - } - - return -} - -// ListSkusPreparer prepares the ListSkus request. -func (client VirtualMachineScaleSetsClient) ListSkusPreparer(resourceGroupName string, vmScaleSetName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmScaleSetName": url.QueryEscape(vmScaleSetName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/skus"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSkusSender sends the ListSkus request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineScaleSetsClient) ListSkusSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListSkusResponder handles the response to the ListSkus request. The method always -// closes the http.Response Body. -func (client VirtualMachineScaleSetsClient) ListSkusResponder(resp *http.Response) (result VirtualMachineScaleSetListSkusResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListSkusNextResults retrieves the next set of results, if any. -func (client VirtualMachineScaleSetsClient) ListSkusNextResults(lastResults VirtualMachineScaleSetListSkusResult) (result VirtualMachineScaleSetListSkusResult, err error) { - req, err := lastResults.VirtualMachineScaleSetListSkusResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "ListSkus", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSkusSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "ListSkus", resp, "Failure sending next results request request") - } - - result, err = client.ListSkusResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "ListSkus", resp, "Failure responding to next results request request") - } - - return -} - -// PowerOff the operation to power off (stop) virtual machines in a virtual -// machine scale set. This method may poll for completion. Polling can be -// canceled by passing the cancel channel argument. The channel will be used -// to cancel polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. vmScaleSetName is the -// name of the virtual machine scale set. vmInstanceIDs is the list of -// virtual machine scale set instance IDs. -func (client VirtualMachineScaleSetsClient) PowerOff(resourceGroupName string, vmScaleSetName string, vmInstanceIDs *VirtualMachineScaleSetVMInstanceIDs, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.PowerOffPreparer(resourceGroupName, vmScaleSetName, vmInstanceIDs, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "PowerOff", nil, "Failure preparing request") - } - - resp, err := client.PowerOffSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "PowerOff", resp, "Failure sending request") - } - - result, err = client.PowerOffResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "PowerOff", resp, "Failure responding to request") - } - - return -} - -// PowerOffPreparer prepares the PowerOff request. -func (client VirtualMachineScaleSetsClient) PowerOffPreparer(resourceGroupName string, vmScaleSetName string, vmInstanceIDs *VirtualMachineScaleSetVMInstanceIDs, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmScaleSetName": url.QueryEscape(vmScaleSetName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - preparer := autorest.CreatePreparer( - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/poweroff"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) - if vmInstanceIDs != nil { - preparer = autorest.DecoratePreparer(preparer, - autorest.WithJSON(vmInstanceIDs)) - } - return preparer.Prepare(&http.Request{Cancel: cancel}) -} - -// PowerOffSender sends the PowerOff request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineScaleSetsClient) PowerOffSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// PowerOffResponder handles the response to the PowerOff request. The method always -// closes the http.Response Body. -func (client VirtualMachineScaleSetsClient) PowerOffResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), - autorest.ByClosing()) - result.Response = resp - return -} - -// Restart the operation to restart virtual machines in a virtual machine -// scale set. This method may poll for completion. Polling can be canceled by -// passing the cancel channel argument. The channel will be used to cancel -// polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. vmScaleSetName is the -// name of the virtual machine scale set. vmInstanceIDs is the list of -// virtual machine scale set instance IDs. -func (client VirtualMachineScaleSetsClient) Restart(resourceGroupName string, vmScaleSetName string, vmInstanceIDs *VirtualMachineScaleSetVMInstanceIDs, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.RestartPreparer(resourceGroupName, vmScaleSetName, vmInstanceIDs, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Restart", nil, "Failure preparing request") - } - - resp, err := client.RestartSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Restart", resp, "Failure sending request") - } - - result, err = client.RestartResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Restart", resp, "Failure responding to request") - } - - return -} - -// RestartPreparer prepares the Restart request. -func (client VirtualMachineScaleSetsClient) RestartPreparer(resourceGroupName string, vmScaleSetName string, vmInstanceIDs *VirtualMachineScaleSetVMInstanceIDs, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmScaleSetName": url.QueryEscape(vmScaleSetName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - preparer := autorest.CreatePreparer( - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/restart"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) - if vmInstanceIDs != nil { - preparer = autorest.DecoratePreparer(preparer, - autorest.WithJSON(vmInstanceIDs)) - } - return preparer.Prepare(&http.Request{Cancel: cancel}) -} - -// RestartSender sends the Restart request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineScaleSetsClient) RestartSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// RestartResponder handles the response to the Restart request. The method always -// closes the http.Response Body. -func (client VirtualMachineScaleSetsClient) RestartResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), - autorest.ByClosing()) - result.Response = resp - return -} - -// Start the operation to start virtual machines in a virtual machine scale -// set. This method may poll for completion. Polling can be canceled by -// passing the cancel channel argument. The channel will be used to cancel -// polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. vmScaleSetName is the -// name of the virtual machine scale set. vmInstanceIDs is the list of -// virtual machine scale set instance IDs. -func (client VirtualMachineScaleSetsClient) Start(resourceGroupName string, vmScaleSetName string, vmInstanceIDs *VirtualMachineScaleSetVMInstanceIDs, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.StartPreparer(resourceGroupName, vmScaleSetName, vmInstanceIDs, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Start", nil, "Failure preparing request") - } - - resp, err := client.StartSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Start", resp, "Failure sending request") - } - - result, err = client.StartResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Start", resp, "Failure responding to request") - } - - return -} - -// StartPreparer prepares the Start request. -func (client VirtualMachineScaleSetsClient) StartPreparer(resourceGroupName string, vmScaleSetName string, vmInstanceIDs *VirtualMachineScaleSetVMInstanceIDs, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmScaleSetName": url.QueryEscape(vmScaleSetName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - preparer := autorest.CreatePreparer( - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/start"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) - if vmInstanceIDs != nil { - preparer = autorest.DecoratePreparer(preparer, - autorest.WithJSON(vmInstanceIDs)) - } - return preparer.Prepare(&http.Request{Cancel: cancel}) -} - -// StartSender sends the Start request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineScaleSetsClient) StartSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// StartResponder handles the response to the Start request. The method always -// closes the http.Response Body. -func (client VirtualMachineScaleSetsClient) StartResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), - autorest.ByClosing()) - result.Response = resp - return -} - -// UpdateInstances the operation to manually upgrade virtual machines in a -// virtual machine scale set. This method may poll for completion. Polling -// can be canceled by passing the cancel channel argument. The channel will -// be used to cancel polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. vmScaleSetName is the -// name of the virtual machine scale set. vmInstanceIDs is the list of -// virtual machine scale set instance IDs. -func (client VirtualMachineScaleSetsClient) UpdateInstances(resourceGroupName string, vmScaleSetName string, vmInstanceIDs VirtualMachineScaleSetVMInstanceRequiredIDs, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.UpdateInstancesPreparer(resourceGroupName, vmScaleSetName, vmInstanceIDs, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "UpdateInstances", nil, "Failure preparing request") - } - - resp, err := client.UpdateInstancesSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "UpdateInstances", resp, "Failure sending request") - } - - result, err = client.UpdateInstancesResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "UpdateInstances", resp, "Failure responding to request") - } - - return -} - -// UpdateInstancesPreparer prepares the UpdateInstances request. -func (client VirtualMachineScaleSetsClient) UpdateInstancesPreparer(resourceGroupName string, vmScaleSetName string, vmInstanceIDs VirtualMachineScaleSetVMInstanceRequiredIDs, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmScaleSetName": url.QueryEscape(vmScaleSetName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/manualupgrade"), - autorest.WithJSON(vmInstanceIDs), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// UpdateInstancesSender sends the UpdateInstances request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineScaleSetsClient) UpdateInstancesSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// UpdateInstancesResponder handles the response to the UpdateInstances request. The method always -// closes the http.Response Body. -func (client VirtualMachineScaleSetsClient) UpdateInstancesResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), - autorest.ByClosing()) - result.Response = resp - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinescalesetvms.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinescalesetvms.go deleted file mode 100644 index a301e8f7..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinescalesetvms.go +++ /dev/null @@ -1,626 +0,0 @@ -package compute - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// VirtualMachineScaleSetVMsClient is the the Compute Management Client. -type VirtualMachineScaleSetVMsClient struct { - ManagementClient -} - -// NewVirtualMachineScaleSetVMsClient creates an instance of the -// VirtualMachineScaleSetVMsClient client. -func NewVirtualMachineScaleSetVMsClient(subscriptionID string) VirtualMachineScaleSetVMsClient { - return NewVirtualMachineScaleSetVMsClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewVirtualMachineScaleSetVMsClientWithBaseURI creates an instance of the -// VirtualMachineScaleSetVMsClient client. -func NewVirtualMachineScaleSetVMsClientWithBaseURI(baseURI string, subscriptionID string) VirtualMachineScaleSetVMsClient { - return VirtualMachineScaleSetVMsClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// Deallocate the operation to deallocate a virtual machine scale set. This -// method may poll for completion. Polling can be canceled by passing the -// cancel channel argument. The channel will be used to cancel polling and -// any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. vmScaleSetName is the -// name of the virtual machine scale set. instanceID is the instance id of -// the virtual machine. -func (client VirtualMachineScaleSetVMsClient) Deallocate(resourceGroupName string, vmScaleSetName string, instanceID string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.DeallocatePreparer(resourceGroupName, vmScaleSetName, instanceID, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Deallocate", nil, "Failure preparing request") - } - - resp, err := client.DeallocateSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Deallocate", resp, "Failure sending request") - } - - result, err = client.DeallocateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Deallocate", resp, "Failure responding to request") - } - - return -} - -// DeallocatePreparer prepares the Deallocate request. -func (client VirtualMachineScaleSetVMsClient) DeallocatePreparer(resourceGroupName string, vmScaleSetName string, instanceID string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "instanceId": url.QueryEscape(instanceID), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmScaleSetName": url.QueryEscape(vmScaleSetName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}/deallocate"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeallocateSender sends the Deallocate request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineScaleSetVMsClient) DeallocateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// DeallocateResponder handles the response to the Deallocate request. The method always -// closes the http.Response Body. -func (client VirtualMachineScaleSetVMsClient) DeallocateResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), - autorest.ByClosing()) - result.Response = resp - return -} - -// Delete the operation to delete a virtual machine scale set. This method may -// poll for completion. Polling can be canceled by passing the cancel channel -// argument. The channel will be used to cancel polling and any outstanding -// HTTP requests. -// -// resourceGroupName is the name of the resource group. vmScaleSetName is the -// name of the virtual machine scale set. instanceID is the instance id of -// the virtual machine. -func (client VirtualMachineScaleSetVMsClient) Delete(resourceGroupName string, vmScaleSetName string, instanceID string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.DeletePreparer(resourceGroupName, vmScaleSetName, instanceID, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Delete", nil, "Failure preparing request") - } - - resp, err := client.DeleteSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Delete", resp, "Failure sending request") - } - - result, err = client.DeleteResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Delete", resp, "Failure responding to request") - } - - return -} - -// DeletePreparer prepares the Delete request. -func (client VirtualMachineScaleSetVMsClient) DeletePreparer(resourceGroupName string, vmScaleSetName string, instanceID string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "instanceId": url.QueryEscape(instanceID), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmScaleSetName": url.QueryEscape(vmScaleSetName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteSender sends the Delete request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineScaleSetVMsClient) DeleteSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// DeleteResponder handles the response to the Delete request. The method always -// closes the http.Response Body. -func (client VirtualMachineScaleSetVMsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent, http.StatusAccepted), - autorest.ByClosing()) - result.Response = resp - return -} - -// Get the operation to get a virtual machine scale set virtual machine. -// -// resourceGroupName is the name of the resource group. vmScaleSetName is the -// name of the virtual machine scale set. instanceID is the instance id of -// the virtual machine. -func (client VirtualMachineScaleSetVMsClient) Get(resourceGroupName string, vmScaleSetName string, instanceID string) (result VirtualMachineScaleSetVM, err error) { - req, err := client.GetPreparer(resourceGroupName, vmScaleSetName, instanceID) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client VirtualMachineScaleSetVMsClient) GetPreparer(resourceGroupName string, vmScaleSetName string, instanceID string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "instanceId": url.QueryEscape(instanceID), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmScaleSetName": url.QueryEscape(vmScaleSetName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineScaleSetVMsClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client VirtualMachineScaleSetVMsClient) GetResponder(resp *http.Response) (result VirtualMachineScaleSetVM, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// GetInstanceView the operation to get a virtual machine scale set virtual -// machine. -// -// resourceGroupName is the name of the resource group. vmScaleSetName is the -// name of the virtual machine scale set. instanceID is the instance id of -// the virtual machine. -func (client VirtualMachineScaleSetVMsClient) GetInstanceView(resourceGroupName string, vmScaleSetName string, instanceID string) (result VirtualMachineScaleSetVMInstanceView, err error) { - req, err := client.GetInstanceViewPreparer(resourceGroupName, vmScaleSetName, instanceID) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "GetInstanceView", nil, "Failure preparing request") - } - - resp, err := client.GetInstanceViewSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "GetInstanceView", resp, "Failure sending request") - } - - result, err = client.GetInstanceViewResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "GetInstanceView", resp, "Failure responding to request") - } - - return -} - -// GetInstanceViewPreparer prepares the GetInstanceView request. -func (client VirtualMachineScaleSetVMsClient) GetInstanceViewPreparer(resourceGroupName string, vmScaleSetName string, instanceID string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "instanceId": url.QueryEscape(instanceID), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmScaleSetName": url.QueryEscape(vmScaleSetName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}/instanceView"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetInstanceViewSender sends the GetInstanceView request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineScaleSetVMsClient) GetInstanceViewSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetInstanceViewResponder handles the response to the GetInstanceView request. The method always -// closes the http.Response Body. -func (client VirtualMachineScaleSetVMsClient) GetInstanceViewResponder(resp *http.Response) (result VirtualMachineScaleSetVMInstanceView, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List the operation to list virtual machine scale sets VMs. -// -// resourceGroupName is the name of the resource group. -// virtualMachineScaleSetName is the name of the virtual machine scale set. -// filter is the filter to apply on the operation. selectParameter is the -// list parameters. expand is the expand expression to apply on the -// operation. -func (client VirtualMachineScaleSetVMsClient) List(resourceGroupName string, virtualMachineScaleSetName string, filter string, selectParameter string, expand string) (result VirtualMachineScaleSetVMListResult, err error) { - req, err := client.ListPreparer(resourceGroupName, virtualMachineScaleSetName, filter, selectParameter, expand) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client VirtualMachineScaleSetVMsClient) ListPreparer(resourceGroupName string, virtualMachineScaleSetName string, filter string, selectParameter string, expand string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "virtualMachineScaleSetName": url.QueryEscape(virtualMachineScaleSetName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - if len(filter) > 0 { - queryParameters["$filter"] = filter - } - if len(selectParameter) > 0 { - queryParameters["$select"] = selectParameter - } - if len(expand) > 0 { - queryParameters["$expand"] = expand - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineScaleSetVMsClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client VirtualMachineScaleSetVMsClient) ListResponder(resp *http.Response) (result VirtualMachineScaleSetVMListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client VirtualMachineScaleSetVMsClient) ListNextResults(lastResults VirtualMachineScaleSetVMListResult) (result VirtualMachineScaleSetVMListResult, err error) { - req, err := lastResults.VirtualMachineScaleSetVMListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "List", resp, "Failure responding to next results request request") - } - - return -} - -// PowerOff the operation to power off (stop) a virtual machine scale set. -// This method may poll for completion. Polling can be canceled by passing -// the cancel channel argument. The channel will be used to cancel polling -// and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. vmScaleSetName is the -// name of the virtual machine scale set. instanceID is the instance id of -// the virtual machine. -func (client VirtualMachineScaleSetVMsClient) PowerOff(resourceGroupName string, vmScaleSetName string, instanceID string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.PowerOffPreparer(resourceGroupName, vmScaleSetName, instanceID, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "PowerOff", nil, "Failure preparing request") - } - - resp, err := client.PowerOffSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "PowerOff", resp, "Failure sending request") - } - - result, err = client.PowerOffResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "PowerOff", resp, "Failure responding to request") - } - - return -} - -// PowerOffPreparer prepares the PowerOff request. -func (client VirtualMachineScaleSetVMsClient) PowerOffPreparer(resourceGroupName string, vmScaleSetName string, instanceID string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "instanceId": url.QueryEscape(instanceID), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmScaleSetName": url.QueryEscape(vmScaleSetName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}/poweroff"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// PowerOffSender sends the PowerOff request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineScaleSetVMsClient) PowerOffSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// PowerOffResponder handles the response to the PowerOff request. The method always -// closes the http.Response Body. -func (client VirtualMachineScaleSetVMsClient) PowerOffResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), - autorest.ByClosing()) - result.Response = resp - return -} - -// Restart the operation to restart a virtual machine scale set. This method -// may poll for completion. Polling can be canceled by passing the cancel -// channel argument. The channel will be used to cancel polling and any -// outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. vmScaleSetName is the -// name of the virtual machine scale set. instanceID is the instance id of -// the virtual machine. -func (client VirtualMachineScaleSetVMsClient) Restart(resourceGroupName string, vmScaleSetName string, instanceID string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.RestartPreparer(resourceGroupName, vmScaleSetName, instanceID, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Restart", nil, "Failure preparing request") - } - - resp, err := client.RestartSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Restart", resp, "Failure sending request") - } - - result, err = client.RestartResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Restart", resp, "Failure responding to request") - } - - return -} - -// RestartPreparer prepares the Restart request. -func (client VirtualMachineScaleSetVMsClient) RestartPreparer(resourceGroupName string, vmScaleSetName string, instanceID string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "instanceId": url.QueryEscape(instanceID), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmScaleSetName": url.QueryEscape(vmScaleSetName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}/restart"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// RestartSender sends the Restart request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineScaleSetVMsClient) RestartSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// RestartResponder handles the response to the Restart request. The method always -// closes the http.Response Body. -func (client VirtualMachineScaleSetVMsClient) RestartResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), - autorest.ByClosing()) - result.Response = resp - return -} - -// Start the operation to start a virtual machine scale set. This method may -// poll for completion. Polling can be canceled by passing the cancel channel -// argument. The channel will be used to cancel polling and any outstanding -// HTTP requests. -// -// resourceGroupName is the name of the resource group. vmScaleSetName is the -// name of the virtual machine scale set. instanceID is the instance id of -// the virtual machine. -func (client VirtualMachineScaleSetVMsClient) Start(resourceGroupName string, vmScaleSetName string, instanceID string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.StartPreparer(resourceGroupName, vmScaleSetName, instanceID, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Start", nil, "Failure preparing request") - } - - resp, err := client.StartSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Start", resp, "Failure sending request") - } - - result, err = client.StartResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Start", resp, "Failure responding to request") - } - - return -} - -// StartPreparer prepares the Start request. -func (client VirtualMachineScaleSetVMsClient) StartPreparer(resourceGroupName string, vmScaleSetName string, instanceID string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "instanceId": url.QueryEscape(instanceID), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "vmScaleSetName": url.QueryEscape(vmScaleSetName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}/start"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// StartSender sends the Start request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineScaleSetVMsClient) StartSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// StartResponder handles the response to the Start request. The method always -// closes the http.Response Body. -func (client VirtualMachineScaleSetVMsClient) StartResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), - autorest.ByClosing()) - result.Response = resp - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinesizes.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinesizes.go deleted file mode 100644 index cccba530..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinesizes.go +++ /dev/null @@ -1,129 +0,0 @@ -package compute - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// VirtualMachineSizesClient is the the Compute Management Client. -type VirtualMachineSizesClient struct { - ManagementClient -} - -// NewVirtualMachineSizesClient creates an instance of the -// VirtualMachineSizesClient client. -func NewVirtualMachineSizesClient(subscriptionID string) VirtualMachineSizesClient { - return NewVirtualMachineSizesClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewVirtualMachineSizesClientWithBaseURI creates an instance of the -// VirtualMachineSizesClient client. -func NewVirtualMachineSizesClientWithBaseURI(baseURI string, subscriptionID string) VirtualMachineSizesClient { - return VirtualMachineSizesClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// List lists virtual-machine-sizes available in a location for a subscription. -// -// location is the location upon which virtual-machine-sizes is queried. -func (client VirtualMachineSizesClient) List(location string) (result VirtualMachineSizeListResult, err error) { - req, err := client.ListPreparer(location) - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineSizesClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineSizesClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineSizesClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client VirtualMachineSizesClient) ListPreparer(location string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "location": url.QueryEscape(location), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/vmSizes"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualMachineSizesClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client VirtualMachineSizesClient) ListResponder(resp *http.Response) (result VirtualMachineSizeListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client VirtualMachineSizesClient) ListNextResults(lastResults VirtualMachineSizeListResult) (result VirtualMachineSizeListResult, err error) { - req, err := lastResults.VirtualMachineSizeListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineSizesClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "compute.VirtualMachineSizesClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "compute.VirtualMachineSizesClient", "List", resp, "Failure responding to next results request request") - } - - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/applicationgateways.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/applicationgateways.go deleted file mode 100644 index 92d40233..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/applicationgateways.go +++ /dev/null @@ -1,559 +0,0 @@ -package network - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// ApplicationGatewaysClient is the the Microsoft Azure Network management API -// provides a RESTful set of web services that interact with Microsoft Azure -// Networks service to manage your network resrources. The API has entities -// that capture the relationship between an end user and the Microsoft Azure -// Networks service. -type ApplicationGatewaysClient struct { - ManagementClient -} - -// NewApplicationGatewaysClient creates an instance of the -// ApplicationGatewaysClient client. -func NewApplicationGatewaysClient(subscriptionID string) ApplicationGatewaysClient { - return NewApplicationGatewaysClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewApplicationGatewaysClientWithBaseURI creates an instance of the -// ApplicationGatewaysClient client. -func NewApplicationGatewaysClientWithBaseURI(baseURI string, subscriptionID string) ApplicationGatewaysClient { - return ApplicationGatewaysClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// CreateOrUpdate the Put ApplicationGateway operation creates/updates a -// ApplicationGateway This method may poll for completion. Polling can be -// canceled by passing the cancel channel argument. The channel will be used -// to cancel polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. applicationGatewayName -// is the name of the ApplicationGateway. parameters is parameters supplied -// to the create/delete ApplicationGateway operation -func (client ApplicationGatewaysClient) CreateOrUpdate(resourceGroupName string, applicationGatewayName string, parameters ApplicationGateway, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.CreateOrUpdatePreparer(resourceGroupName, applicationGatewayName, parameters, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "CreateOrUpdate", nil, "Failure preparing request") - } - - resp, err := client.CreateOrUpdateSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "CreateOrUpdate", resp, "Failure sending request") - } - - result, err = client.CreateOrUpdateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "CreateOrUpdate", resp, "Failure responding to request") - } - - return -} - -// CreateOrUpdatePreparer prepares the CreateOrUpdate request. -func (client ApplicationGatewaysClient) CreateOrUpdatePreparer(resourceGroupName string, applicationGatewayName string, parameters ApplicationGateway, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "applicationGatewayName": url.QueryEscape(applicationGatewayName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the -// http.Response Body if it receives an error. -func (client ApplicationGatewaysClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always -// closes the http.Response Body. -func (client ApplicationGatewaysClient) CreateOrUpdateResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusCreated, http.StatusOK), - autorest.ByClosing()) - result.Response = resp - return -} - -// Delete the delete applicationgateway operation deletes the specified -// applicationgateway. This method may poll for completion. Polling can be -// canceled by passing the cancel channel argument. The channel will be used -// to cancel polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. applicationGatewayName -// is the name of the applicationgateway. -func (client ApplicationGatewaysClient) Delete(resourceGroupName string, applicationGatewayName string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.DeletePreparer(resourceGroupName, applicationGatewayName, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Delete", nil, "Failure preparing request") - } - - resp, err := client.DeleteSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Delete", resp, "Failure sending request") - } - - result, err = client.DeleteResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Delete", resp, "Failure responding to request") - } - - return -} - -// DeletePreparer prepares the Delete request. -func (client ApplicationGatewaysClient) DeletePreparer(resourceGroupName string, applicationGatewayName string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "applicationGatewayName": url.QueryEscape(applicationGatewayName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteSender sends the Delete request. The method will close the -// http.Response Body if it receives an error. -func (client ApplicationGatewaysClient) DeleteSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// DeleteResponder handles the response to the Delete request. The method always -// closes the http.Response Body. -func (client ApplicationGatewaysClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusAccepted, http.StatusNoContent, http.StatusOK), - autorest.ByClosing()) - result.Response = resp - return -} - -// Get the Get applicationgateway operation retreives information about the -// specified applicationgateway. -// -// resourceGroupName is the name of the resource group. applicationGatewayName -// is the name of the applicationgateway. -func (client ApplicationGatewaysClient) Get(resourceGroupName string, applicationGatewayName string) (result ApplicationGateway, err error) { - req, err := client.GetPreparer(resourceGroupName, applicationGatewayName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client ApplicationGatewaysClient) GetPreparer(resourceGroupName string, applicationGatewayName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "applicationGatewayName": url.QueryEscape(applicationGatewayName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client ApplicationGatewaysClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client ApplicationGatewaysClient) GetResponder(resp *http.Response) (result ApplicationGateway, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List the List ApplicationGateway opertion retrieves all the -// applicationgateways in a resource group. -// -// resourceGroupName is the name of the resource group. -func (client ApplicationGatewaysClient) List(resourceGroupName string) (result ApplicationGatewayListResult, err error) { - req, err := client.ListPreparer(resourceGroupName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client ApplicationGatewaysClient) ListPreparer(resourceGroupName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client ApplicationGatewaysClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client ApplicationGatewaysClient) ListResponder(resp *http.Response) (result ApplicationGatewayListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client ApplicationGatewaysClient) ListNextResults(lastResults ApplicationGatewayListResult) (result ApplicationGatewayListResult, err error) { - req, err := lastResults.ApplicationGatewayListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "List", resp, "Failure responding to next results request request") - } - - return -} - -// ListAll the List applicationgateway opertion retrieves all the -// applicationgateways in a subscription. -func (client ApplicationGatewaysClient) ListAll() (result ApplicationGatewayListResult, err error) { - req, err := client.ListAllPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAll", nil, "Failure preparing request") - } - - resp, err := client.ListAllSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAll", resp, "Failure sending request") - } - - result, err = client.ListAllResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAll", resp, "Failure responding to request") - } - - return -} - -// ListAllPreparer prepares the ListAll request. -func (client ApplicationGatewaysClient) ListAllPreparer() (*http.Request, error) { - pathParameters := map[string]interface{}{ - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Network/applicationGateways"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListAllSender sends the ListAll request. The method will close the -// http.Response Body if it receives an error. -func (client ApplicationGatewaysClient) ListAllSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListAllResponder handles the response to the ListAll request. The method always -// closes the http.Response Body. -func (client ApplicationGatewaysClient) ListAllResponder(resp *http.Response) (result ApplicationGatewayListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListAllNextResults retrieves the next set of results, if any. -func (client ApplicationGatewaysClient) ListAllNextResults(lastResults ApplicationGatewayListResult) (result ApplicationGatewayListResult, err error) { - req, err := lastResults.ApplicationGatewayListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAll", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListAllSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAll", resp, "Failure sending next results request request") - } - - result, err = client.ListAllResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "ListAll", resp, "Failure responding to next results request request") - } - - return -} - -// Start the Start ApplicationGateway operation starts application gatewayin -// the specified resource group through Network resource provider. This -// method may poll for completion. Polling can be canceled by passing the -// cancel channel argument. The channel will be used to cancel polling and -// any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. applicationGatewayName -// is the name of the application gateway. -func (client ApplicationGatewaysClient) Start(resourceGroupName string, applicationGatewayName string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.StartPreparer(resourceGroupName, applicationGatewayName, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Start", nil, "Failure preparing request") - } - - resp, err := client.StartSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Start", resp, "Failure sending request") - } - - result, err = client.StartResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Start", resp, "Failure responding to request") - } - - return -} - -// StartPreparer prepares the Start request. -func (client ApplicationGatewaysClient) StartPreparer(resourceGroupName string, applicationGatewayName string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "applicationGatewayName": url.QueryEscape(applicationGatewayName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/start"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// StartSender sends the Start request. The method will close the -// http.Response Body if it receives an error. -func (client ApplicationGatewaysClient) StartSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// StartResponder handles the response to the Start request. The method always -// closes the http.Response Body. -func (client ApplicationGatewaysClient) StartResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), - autorest.ByClosing()) - result.Response = resp - return -} - -// Stop the STOP ApplicationGateway operation stops application gatewayin the -// specified resource group through Network resource provider. This method -// may poll for completion. Polling can be canceled by passing the cancel -// channel argument. The channel will be used to cancel polling and any -// outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. applicationGatewayName -// is the name of the application gateway. -func (client ApplicationGatewaysClient) Stop(resourceGroupName string, applicationGatewayName string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.StopPreparer(resourceGroupName, applicationGatewayName, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Stop", nil, "Failure preparing request") - } - - resp, err := client.StopSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Stop", resp, "Failure sending request") - } - - result, err = client.StopResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ApplicationGatewaysClient", "Stop", resp, "Failure responding to request") - } - - return -} - -// StopPreparer prepares the Stop request. -func (client ApplicationGatewaysClient) StopPreparer(resourceGroupName string, applicationGatewayName string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "applicationGatewayName": url.QueryEscape(applicationGatewayName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/stop"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// StopSender sends the Stop request. The method will close the -// http.Response Body if it receives an error. -func (client ApplicationGatewaysClient) StopSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// StopResponder handles the response to the Stop request. The method always -// closes the http.Response Body. -func (client ApplicationGatewaysClient) StopResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), - autorest.ByClosing()) - result.Response = resp - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/client.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/client.go deleted file mode 100644 index ba6a2dac..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/client.go +++ /dev/null @@ -1,130 +0,0 @@ -// Package network implements the Azure ARM Network service API version -// 2015-06-15. -// -// The Microsoft Azure Network management API provides a RESTful set of web -// services that interact with Microsoft Azure Networks service to manage -// your network resrources. The API has entities that capture the -// relationship between an end user and the Microsoft Azure Networks service. -package network - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -const ( - // APIVersion is the version of the Network - APIVersion = "2015-06-15" - - // DefaultBaseURI is the default URI used for the service Network - DefaultBaseURI = "https://management.azure.com" -) - -// ManagementClient is the base client for Network. -type ManagementClient struct { - autorest.Client - BaseURI string - SubscriptionID string -} - -// New creates an instance of the ManagementClient client. -func New(subscriptionID string) ManagementClient { - return NewWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewWithBaseURI creates an instance of the ManagementClient client. -func NewWithBaseURI(baseURI string, subscriptionID string) ManagementClient { - return ManagementClient{ - Client: autorest.NewClientWithUserAgent(UserAgent()), - BaseURI: baseURI, - SubscriptionID: subscriptionID, - } -} - -// CheckDNSNameAvailability checks whether a domain name in the cloudapp.net -// zone is available for use. -// -// location is the location of the domain name domainNameLabel is the domain -// name to be verified. It must conform to the following regular expression: -// ^[a-z][a-z0-9-]{1,61}[a-z0-9]$. -func (client ManagementClient) CheckDNSNameAvailability(location string, domainNameLabel string) (result DNSNameAvailabilityResult, err error) { - req, err := client.CheckDNSNameAvailabilityPreparer(location, domainNameLabel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ManagementClient", "CheckDNSNameAvailability", nil, "Failure preparing request") - } - - resp, err := client.CheckDNSNameAvailabilitySender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.ManagementClient", "CheckDNSNameAvailability", resp, "Failure sending request") - } - - result, err = client.CheckDNSNameAvailabilityResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ManagementClient", "CheckDNSNameAvailability", resp, "Failure responding to request") - } - - return -} - -// CheckDNSNameAvailabilityPreparer prepares the CheckDNSNameAvailability request. -func (client ManagementClient) CheckDNSNameAvailabilityPreparer(location string, domainNameLabel string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "location": url.QueryEscape(location), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - if len(domainNameLabel) > 0 { - queryParameters["domainNameLabel"] = domainNameLabel - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/CheckDnsNameAvailability"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CheckDNSNameAvailabilitySender sends the CheckDNSNameAvailability request. The method will close the -// http.Response Body if it receives an error. -func (client ManagementClient) CheckDNSNameAvailabilitySender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// CheckDNSNameAvailabilityResponder handles the response to the CheckDNSNameAvailability request. The method always -// closes the http.Response Body. -func (client ManagementClient) CheckDNSNameAvailabilityResponder(resp *http.Response) (result DNSNameAvailabilityResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressroutecircuitauthorizations.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressroutecircuitauthorizations.go deleted file mode 100644 index 9d425553..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressroutecircuitauthorizations.go +++ /dev/null @@ -1,347 +0,0 @@ -package network - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// ExpressRouteCircuitAuthorizationsClient is the the Microsoft Azure Network -// management API provides a RESTful set of web services that interact with -// Microsoft Azure Networks service to manage your network resrources. The -// API has entities that capture the relationship between an end user and the -// Microsoft Azure Networks service. -type ExpressRouteCircuitAuthorizationsClient struct { - ManagementClient -} - -// NewExpressRouteCircuitAuthorizationsClient creates an instance of the -// ExpressRouteCircuitAuthorizationsClient client. -func NewExpressRouteCircuitAuthorizationsClient(subscriptionID string) ExpressRouteCircuitAuthorizationsClient { - return NewExpressRouteCircuitAuthorizationsClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewExpressRouteCircuitAuthorizationsClientWithBaseURI creates an instance -// of the ExpressRouteCircuitAuthorizationsClient client. -func NewExpressRouteCircuitAuthorizationsClientWithBaseURI(baseURI string, subscriptionID string) ExpressRouteCircuitAuthorizationsClient { - return ExpressRouteCircuitAuthorizationsClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// CreateOrUpdate the Put Authorization operation creates/updates an -// authorization in thespecified ExpressRouteCircuits This method may poll -// for completion. Polling can be canceled by passing the cancel channel -// argument. The channel will be used to cancel polling and any outstanding -// HTTP requests. -// -// resourceGroupName is the name of the resource group. circuitName is the -// name of the express route circuit. authorizationName is the name of the -// authorization. authorizationParameters is parameters supplied to the -// create/update ExpressRouteCircuitAuthorization operation -func (client ExpressRouteCircuitAuthorizationsClient) CreateOrUpdate(resourceGroupName string, circuitName string, authorizationName string, authorizationParameters ExpressRouteCircuitAuthorization, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.CreateOrUpdatePreparer(resourceGroupName, circuitName, authorizationName, authorizationParameters, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "CreateOrUpdate", nil, "Failure preparing request") - } - - resp, err := client.CreateOrUpdateSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "CreateOrUpdate", resp, "Failure sending request") - } - - result, err = client.CreateOrUpdateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "CreateOrUpdate", resp, "Failure responding to request") - } - - return -} - -// CreateOrUpdatePreparer prepares the CreateOrUpdate request. -func (client ExpressRouteCircuitAuthorizationsClient) CreateOrUpdatePreparer(resourceGroupName string, circuitName string, authorizationName string, authorizationParameters ExpressRouteCircuitAuthorization, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "authorizationName": url.QueryEscape(authorizationName), - "circuitName": url.QueryEscape(circuitName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations/{authorizationName}"), - autorest.WithJSON(authorizationParameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the -// http.Response Body if it receives an error. -func (client ExpressRouteCircuitAuthorizationsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always -// closes the http.Response Body. -func (client ExpressRouteCircuitAuthorizationsClient) CreateOrUpdateResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusCreated, http.StatusOK), - autorest.ByClosing()) - result.Response = resp - return -} - -// Delete the delete authorization operation deletes the specified -// authorization from the specified ExpressRouteCircuit. This method may poll -// for completion. Polling can be canceled by passing the cancel channel -// argument. The channel will be used to cancel polling and any outstanding -// HTTP requests. -// -// resourceGroupName is the name of the resource group. circuitName is the -// name of the express route circuit. authorizationName is the name of the -// authorization. -func (client ExpressRouteCircuitAuthorizationsClient) Delete(resourceGroupName string, circuitName string, authorizationName string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.DeletePreparer(resourceGroupName, circuitName, authorizationName, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "Delete", nil, "Failure preparing request") - } - - resp, err := client.DeleteSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "Delete", resp, "Failure sending request") - } - - result, err = client.DeleteResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "Delete", resp, "Failure responding to request") - } - - return -} - -// DeletePreparer prepares the Delete request. -func (client ExpressRouteCircuitAuthorizationsClient) DeletePreparer(resourceGroupName string, circuitName string, authorizationName string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "authorizationName": url.QueryEscape(authorizationName), - "circuitName": url.QueryEscape(circuitName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations/{authorizationName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteSender sends the Delete request. The method will close the -// http.Response Body if it receives an error. -func (client ExpressRouteCircuitAuthorizationsClient) DeleteSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// DeleteResponder handles the response to the Delete request. The method always -// closes the http.Response Body. -func (client ExpressRouteCircuitAuthorizationsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusAccepted, http.StatusOK, http.StatusNoContent), - autorest.ByClosing()) - result.Response = resp - return -} - -// Get the GET authorization operation retrieves the specified authorization -// from the specified ExpressRouteCircuit. -// -// resourceGroupName is the name of the resource group. circuitName is the -// name of the express route circuit. authorizationName is the name of the -// authorization. -func (client ExpressRouteCircuitAuthorizationsClient) Get(resourceGroupName string, circuitName string, authorizationName string) (result ExpressRouteCircuitAuthorization, err error) { - req, err := client.GetPreparer(resourceGroupName, circuitName, authorizationName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client ExpressRouteCircuitAuthorizationsClient) GetPreparer(resourceGroupName string, circuitName string, authorizationName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "authorizationName": url.QueryEscape(authorizationName), - "circuitName": url.QueryEscape(circuitName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations/{authorizationName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client ExpressRouteCircuitAuthorizationsClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client ExpressRouteCircuitAuthorizationsClient) GetResponder(resp *http.Response) (result ExpressRouteCircuitAuthorization, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List the List authorization operation retrieves all the authorizations in -// an ExpressRouteCircuit. -// -// resourceGroupName is the name of the resource group. circuitName is the -// name of the curcuit. -func (client ExpressRouteCircuitAuthorizationsClient) List(resourceGroupName string, circuitName string) (result AuthorizationListResult, err error) { - req, err := client.ListPreparer(resourceGroupName, circuitName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client ExpressRouteCircuitAuthorizationsClient) ListPreparer(resourceGroupName string, circuitName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "circuitName": url.QueryEscape(circuitName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/authorizations"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client ExpressRouteCircuitAuthorizationsClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client ExpressRouteCircuitAuthorizationsClient) ListResponder(resp *http.Response) (result AuthorizationListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client ExpressRouteCircuitAuthorizationsClient) ListNextResults(lastResults AuthorizationListResult) (result AuthorizationListResult, err error) { - req, err := lastResults.AuthorizationListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitAuthorizationsClient", "List", resp, "Failure responding to next results request request") - } - - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressroutecircuitpeerings.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressroutecircuitpeerings.go deleted file mode 100644 index e6008808..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressroutecircuitpeerings.go +++ /dev/null @@ -1,343 +0,0 @@ -package network - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// ExpressRouteCircuitPeeringsClient is the the Microsoft Azure Network -// management API provides a RESTful set of web services that interact with -// Microsoft Azure Networks service to manage your network resrources. The -// API has entities that capture the relationship between an end user and the -// Microsoft Azure Networks service. -type ExpressRouteCircuitPeeringsClient struct { - ManagementClient -} - -// NewExpressRouteCircuitPeeringsClient creates an instance of the -// ExpressRouteCircuitPeeringsClient client. -func NewExpressRouteCircuitPeeringsClient(subscriptionID string) ExpressRouteCircuitPeeringsClient { - return NewExpressRouteCircuitPeeringsClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewExpressRouteCircuitPeeringsClientWithBaseURI creates an instance of the -// ExpressRouteCircuitPeeringsClient client. -func NewExpressRouteCircuitPeeringsClientWithBaseURI(baseURI string, subscriptionID string) ExpressRouteCircuitPeeringsClient { - return ExpressRouteCircuitPeeringsClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// CreateOrUpdate the Put Pering operation creates/updates an peering in the -// specified ExpressRouteCircuits This method may poll for completion. -// Polling can be canceled by passing the cancel channel argument. The -// channel will be used to cancel polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. circuitName is the -// name of the express route circuit. peeringName is the name of the peering. -// peeringParameters is parameters supplied to the create/update -// ExpressRouteCircuit Peering operation -func (client ExpressRouteCircuitPeeringsClient) CreateOrUpdate(resourceGroupName string, circuitName string, peeringName string, peeringParameters ExpressRouteCircuitPeering, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.CreateOrUpdatePreparer(resourceGroupName, circuitName, peeringName, peeringParameters, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "CreateOrUpdate", nil, "Failure preparing request") - } - - resp, err := client.CreateOrUpdateSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "CreateOrUpdate", resp, "Failure sending request") - } - - result, err = client.CreateOrUpdateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "CreateOrUpdate", resp, "Failure responding to request") - } - - return -} - -// CreateOrUpdatePreparer prepares the CreateOrUpdate request. -func (client ExpressRouteCircuitPeeringsClient) CreateOrUpdatePreparer(resourceGroupName string, circuitName string, peeringName string, peeringParameters ExpressRouteCircuitPeering, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "circuitName": url.QueryEscape(circuitName), - "peeringName": url.QueryEscape(peeringName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}"), - autorest.WithJSON(peeringParameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the -// http.Response Body if it receives an error. -func (client ExpressRouteCircuitPeeringsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always -// closes the http.Response Body. -func (client ExpressRouteCircuitPeeringsClient) CreateOrUpdateResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), - autorest.ByClosing()) - result.Response = resp - return -} - -// Delete the delete peering operation deletes the specified peering from the -// ExpressRouteCircuit. This method may poll for completion. Polling can be -// canceled by passing the cancel channel argument. The channel will be used -// to cancel polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. circuitName is the -// name of the express route circuit. peeringName is the name of the peering. -func (client ExpressRouteCircuitPeeringsClient) Delete(resourceGroupName string, circuitName string, peeringName string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.DeletePreparer(resourceGroupName, circuitName, peeringName, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "Delete", nil, "Failure preparing request") - } - - resp, err := client.DeleteSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "Delete", resp, "Failure sending request") - } - - result, err = client.DeleteResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "Delete", resp, "Failure responding to request") - } - - return -} - -// DeletePreparer prepares the Delete request. -func (client ExpressRouteCircuitPeeringsClient) DeletePreparer(resourceGroupName string, circuitName string, peeringName string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "circuitName": url.QueryEscape(circuitName), - "peeringName": url.QueryEscape(peeringName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteSender sends the Delete request. The method will close the -// http.Response Body if it receives an error. -func (client ExpressRouteCircuitPeeringsClient) DeleteSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// DeleteResponder handles the response to the Delete request. The method always -// closes the http.Response Body. -func (client ExpressRouteCircuitPeeringsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), - autorest.ByClosing()) - result.Response = resp - return -} - -// Get the GET peering operation retrieves the specified authorization from -// the ExpressRouteCircuit. -// -// resourceGroupName is the name of the resource group. circuitName is the -// name of the express route circuit. peeringName is the name of the peering. -func (client ExpressRouteCircuitPeeringsClient) Get(resourceGroupName string, circuitName string, peeringName string) (result ExpressRouteCircuitPeering, err error) { - req, err := client.GetPreparer(resourceGroupName, circuitName, peeringName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client ExpressRouteCircuitPeeringsClient) GetPreparer(resourceGroupName string, circuitName string, peeringName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "circuitName": url.QueryEscape(circuitName), - "peeringName": url.QueryEscape(peeringName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings/{peeringName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client ExpressRouteCircuitPeeringsClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client ExpressRouteCircuitPeeringsClient) GetResponder(resp *http.Response) (result ExpressRouteCircuitPeering, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List the List peering operation retrieves all the peerings in an -// ExpressRouteCircuit. -// -// resourceGroupName is the name of the resource group. circuitName is the -// name of the curcuit. -func (client ExpressRouteCircuitPeeringsClient) List(resourceGroupName string, circuitName string) (result ExpressRouteCircuitPeeringListResult, err error) { - req, err := client.ListPreparer(resourceGroupName, circuitName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client ExpressRouteCircuitPeeringsClient) ListPreparer(resourceGroupName string, circuitName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "circuitName": url.QueryEscape(circuitName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/peerings"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client ExpressRouteCircuitPeeringsClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client ExpressRouteCircuitPeeringsClient) ListResponder(resp *http.Response) (result ExpressRouteCircuitPeeringListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client ExpressRouteCircuitPeeringsClient) ListNextResults(lastResults ExpressRouteCircuitPeeringListResult) (result ExpressRouteCircuitPeeringListResult, err error) { - req, err := lastResults.ExpressRouteCircuitPeeringListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitPeeringsClient", "List", resp, "Failure responding to next results request request") - } - - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressroutecircuits.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressroutecircuits.go deleted file mode 100644 index e896827c..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressroutecircuits.go +++ /dev/null @@ -1,690 +0,0 @@ -package network - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// ExpressRouteCircuitsClient is the the Microsoft Azure Network management -// API provides a RESTful set of web services that interact with Microsoft -// Azure Networks service to manage your network resrources. The API has -// entities that capture the relationship between an end user and the -// Microsoft Azure Networks service. -type ExpressRouteCircuitsClient struct { - ManagementClient -} - -// NewExpressRouteCircuitsClient creates an instance of the -// ExpressRouteCircuitsClient client. -func NewExpressRouteCircuitsClient(subscriptionID string) ExpressRouteCircuitsClient { - return NewExpressRouteCircuitsClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewExpressRouteCircuitsClientWithBaseURI creates an instance of the -// ExpressRouteCircuitsClient client. -func NewExpressRouteCircuitsClientWithBaseURI(baseURI string, subscriptionID string) ExpressRouteCircuitsClient { - return ExpressRouteCircuitsClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// CreateOrUpdate the Put ExpressRouteCircuit operation creates/updates a -// ExpressRouteCircuit This method may poll for completion. Polling can be -// canceled by passing the cancel channel argument. The channel will be used -// to cancel polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. circuitName is the -// name of the circuit. parameters is parameters supplied to the -// create/delete ExpressRouteCircuit operation -func (client ExpressRouteCircuitsClient) CreateOrUpdate(resourceGroupName string, circuitName string, parameters ExpressRouteCircuit, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.CreateOrUpdatePreparer(resourceGroupName, circuitName, parameters, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "CreateOrUpdate", nil, "Failure preparing request") - } - - resp, err := client.CreateOrUpdateSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "CreateOrUpdate", resp, "Failure sending request") - } - - result, err = client.CreateOrUpdateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "CreateOrUpdate", resp, "Failure responding to request") - } - - return -} - -// CreateOrUpdatePreparer prepares the CreateOrUpdate request. -func (client ExpressRouteCircuitsClient) CreateOrUpdatePreparer(resourceGroupName string, circuitName string, parameters ExpressRouteCircuit, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "circuitName": url.QueryEscape(circuitName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the -// http.Response Body if it receives an error. -func (client ExpressRouteCircuitsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always -// closes the http.Response Body. -func (client ExpressRouteCircuitsClient) CreateOrUpdateResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusCreated, http.StatusOK), - autorest.ByClosing()) - result.Response = resp - return -} - -// Delete the delete ExpressRouteCircuit operation deletes the specified -// ExpressRouteCircuit. This method may poll for completion. Polling can be -// canceled by passing the cancel channel argument. The channel will be used -// to cancel polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. circuitName is the -// name of the express route Circuit. -func (client ExpressRouteCircuitsClient) Delete(resourceGroupName string, circuitName string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.DeletePreparer(resourceGroupName, circuitName, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "Delete", nil, "Failure preparing request") - } - - resp, err := client.DeleteSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "Delete", resp, "Failure sending request") - } - - result, err = client.DeleteResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "Delete", resp, "Failure responding to request") - } - - return -} - -// DeletePreparer prepares the Delete request. -func (client ExpressRouteCircuitsClient) DeletePreparer(resourceGroupName string, circuitName string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "circuitName": url.QueryEscape(circuitName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteSender sends the Delete request. The method will close the -// http.Response Body if it receives an error. -func (client ExpressRouteCircuitsClient) DeleteSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// DeleteResponder handles the response to the Delete request. The method always -// closes the http.Response Body. -func (client ExpressRouteCircuitsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusNoContent, http.StatusAccepted, http.StatusOK), - autorest.ByClosing()) - result.Response = resp - return -} - -// Get the Get ExpressRouteCircuit operation retreives information about the -// specified ExpressRouteCircuit. -// -// resourceGroupName is the name of the resource group. circuitName is the -// name of the circuit. -func (client ExpressRouteCircuitsClient) Get(resourceGroupName string, circuitName string) (result ExpressRouteCircuit, err error) { - req, err := client.GetPreparer(resourceGroupName, circuitName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client ExpressRouteCircuitsClient) GetPreparer(resourceGroupName string, circuitName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "circuitName": url.QueryEscape(circuitName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client ExpressRouteCircuitsClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client ExpressRouteCircuitsClient) GetResponder(resp *http.Response) (result ExpressRouteCircuit, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List the List ExpressRouteCircuit opertion retrieves all the -// ExpressRouteCircuits in a resource group. -// -// resourceGroupName is the name of the resource group. -func (client ExpressRouteCircuitsClient) List(resourceGroupName string) (result ExpressRouteCircuitListResult, err error) { - req, err := client.ListPreparer(resourceGroupName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client ExpressRouteCircuitsClient) ListPreparer(resourceGroupName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client ExpressRouteCircuitsClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client ExpressRouteCircuitsClient) ListResponder(resp *http.Response) (result ExpressRouteCircuitListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client ExpressRouteCircuitsClient) ListNextResults(lastResults ExpressRouteCircuitListResult) (result ExpressRouteCircuitListResult, err error) { - req, err := lastResults.ExpressRouteCircuitListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "List", resp, "Failure responding to next results request request") - } - - return -} - -// ListAll the List ExpressRouteCircuit opertion retrieves all the -// ExpressRouteCircuits in a subscription. -func (client ExpressRouteCircuitsClient) ListAll() (result ExpressRouteCircuitListResult, err error) { - req, err := client.ListAllPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListAll", nil, "Failure preparing request") - } - - resp, err := client.ListAllSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListAll", resp, "Failure sending request") - } - - result, err = client.ListAllResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListAll", resp, "Failure responding to request") - } - - return -} - -// ListAllPreparer prepares the ListAll request. -func (client ExpressRouteCircuitsClient) ListAllPreparer() (*http.Request, error) { - pathParameters := map[string]interface{}{ - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteCircuits"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListAllSender sends the ListAll request. The method will close the -// http.Response Body if it receives an error. -func (client ExpressRouteCircuitsClient) ListAllSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListAllResponder handles the response to the ListAll request. The method always -// closes the http.Response Body. -func (client ExpressRouteCircuitsClient) ListAllResponder(resp *http.Response) (result ExpressRouteCircuitListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListAllNextResults retrieves the next set of results, if any. -func (client ExpressRouteCircuitsClient) ListAllNextResults(lastResults ExpressRouteCircuitListResult) (result ExpressRouteCircuitListResult, err error) { - req, err := lastResults.ExpressRouteCircuitListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListAll", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListAllSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListAll", resp, "Failure sending next results request request") - } - - result, err = client.ListAllResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListAll", resp, "Failure responding to next results request request") - } - - return -} - -// ListArpTable the ListArpTable from ExpressRouteCircuit opertion retrieves -// the currently advertised arp table associated with the -// ExpressRouteCircuits in a resource group. -// -// resourceGroupName is the name of the resource group. circuitName is the -// name of the circuit. -func (client ExpressRouteCircuitsClient) ListArpTable(resourceGroupName string, circuitName string) (result ExpressRouteCircuitsArpTableListResult, err error) { - req, err := client.ListArpTablePreparer(resourceGroupName, circuitName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListArpTable", nil, "Failure preparing request") - } - - resp, err := client.ListArpTableSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListArpTable", resp, "Failure sending request") - } - - result, err = client.ListArpTableResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListArpTable", resp, "Failure responding to request") - } - - return -} - -// ListArpTablePreparer prepares the ListArpTable request. -func (client ExpressRouteCircuitsClient) ListArpTablePreparer(resourceGroupName string, circuitName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "circuitName": url.QueryEscape(circuitName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/arpTable"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListArpTableSender sends the ListArpTable request. The method will close the -// http.Response Body if it receives an error. -func (client ExpressRouteCircuitsClient) ListArpTableSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListArpTableResponder handles the response to the ListArpTable request. The method always -// closes the http.Response Body. -func (client ExpressRouteCircuitsClient) ListArpTableResponder(resp *http.Response) (result ExpressRouteCircuitsArpTableListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListArpTableNextResults retrieves the next set of results, if any. -func (client ExpressRouteCircuitsClient) ListArpTableNextResults(lastResults ExpressRouteCircuitsArpTableListResult) (result ExpressRouteCircuitsArpTableListResult, err error) { - req, err := lastResults.ExpressRouteCircuitsArpTableListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListArpTable", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListArpTableSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListArpTable", resp, "Failure sending next results request request") - } - - result, err = client.ListArpTableResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListArpTable", resp, "Failure responding to next results request request") - } - - return -} - -// ListRoutesTable the ListRoutesTable from ExpressRouteCircuit opertion -// retrieves the currently advertised routes table associated with the -// ExpressRouteCircuits in a resource group. -// -// resourceGroupName is the name of the resource group. circuitName is the -// name of the circuit. -func (client ExpressRouteCircuitsClient) ListRoutesTable(resourceGroupName string, circuitName string) (result ExpressRouteCircuitsRoutesTableListResult, err error) { - req, err := client.ListRoutesTablePreparer(resourceGroupName, circuitName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListRoutesTable", nil, "Failure preparing request") - } - - resp, err := client.ListRoutesTableSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListRoutesTable", resp, "Failure sending request") - } - - result, err = client.ListRoutesTableResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListRoutesTable", resp, "Failure responding to request") - } - - return -} - -// ListRoutesTablePreparer prepares the ListRoutesTable request. -func (client ExpressRouteCircuitsClient) ListRoutesTablePreparer(resourceGroupName string, circuitName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "circuitName": url.QueryEscape(circuitName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/routesTable"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListRoutesTableSender sends the ListRoutesTable request. The method will close the -// http.Response Body if it receives an error. -func (client ExpressRouteCircuitsClient) ListRoutesTableSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListRoutesTableResponder handles the response to the ListRoutesTable request. The method always -// closes the http.Response Body. -func (client ExpressRouteCircuitsClient) ListRoutesTableResponder(resp *http.Response) (result ExpressRouteCircuitsRoutesTableListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListRoutesTableNextResults retrieves the next set of results, if any. -func (client ExpressRouteCircuitsClient) ListRoutesTableNextResults(lastResults ExpressRouteCircuitsRoutesTableListResult) (result ExpressRouteCircuitsRoutesTableListResult, err error) { - req, err := lastResults.ExpressRouteCircuitsRoutesTableListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListRoutesTable", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListRoutesTableSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListRoutesTable", resp, "Failure sending next results request request") - } - - result, err = client.ListRoutesTableResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListRoutesTable", resp, "Failure responding to next results request request") - } - - return -} - -// ListStats the Liststats ExpressRouteCircuit opertion retrieves all the -// stats from a ExpressRouteCircuits in a resource group. -// -// resourceGroupName is the name of the resource group. circuitName is the -// name of the loadBalancer. -func (client ExpressRouteCircuitsClient) ListStats(resourceGroupName string, circuitName string) (result ExpressRouteCircuitsStatsListResult, err error) { - req, err := client.ListStatsPreparer(resourceGroupName, circuitName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListStats", nil, "Failure preparing request") - } - - resp, err := client.ListStatsSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListStats", resp, "Failure sending request") - } - - result, err = client.ListStatsResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListStats", resp, "Failure responding to request") - } - - return -} - -// ListStatsPreparer prepares the ListStats request. -func (client ExpressRouteCircuitsClient) ListStatsPreparer(resourceGroupName string, circuitName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "circuitName": url.QueryEscape(circuitName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCircuits/{circuitName}/stats"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListStatsSender sends the ListStats request. The method will close the -// http.Response Body if it receives an error. -func (client ExpressRouteCircuitsClient) ListStatsSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListStatsResponder handles the response to the ListStats request. The method always -// closes the http.Response Body. -func (client ExpressRouteCircuitsClient) ListStatsResponder(resp *http.Response) (result ExpressRouteCircuitsStatsListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListStatsNextResults retrieves the next set of results, if any. -func (client ExpressRouteCircuitsClient) ListStatsNextResults(lastResults ExpressRouteCircuitsStatsListResult) (result ExpressRouteCircuitsStatsListResult, err error) { - req, err := lastResults.ExpressRouteCircuitsStatsListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListStats", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListStatsSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListStats", resp, "Failure sending next results request request") - } - - result, err = client.ListStatsResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ExpressRouteCircuitsClient", "ListStats", resp, "Failure responding to next results request request") - } - - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressrouteserviceproviders.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressrouteserviceproviders.go deleted file mode 100644 index 810243d2..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressrouteserviceproviders.go +++ /dev/null @@ -1,131 +0,0 @@ -package network - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// ExpressRouteServiceProvidersClient is the the Microsoft Azure Network -// management API provides a RESTful set of web services that interact with -// Microsoft Azure Networks service to manage your network resrources. The -// API has entities that capture the relationship between an end user and the -// Microsoft Azure Networks service. -type ExpressRouteServiceProvidersClient struct { - ManagementClient -} - -// NewExpressRouteServiceProvidersClient creates an instance of the -// ExpressRouteServiceProvidersClient client. -func NewExpressRouteServiceProvidersClient(subscriptionID string) ExpressRouteServiceProvidersClient { - return NewExpressRouteServiceProvidersClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewExpressRouteServiceProvidersClientWithBaseURI creates an instance of the -// ExpressRouteServiceProvidersClient client. -func NewExpressRouteServiceProvidersClientWithBaseURI(baseURI string, subscriptionID string) ExpressRouteServiceProvidersClient { - return ExpressRouteServiceProvidersClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// List the List ExpressRouteServiceProvider opertion retrieves all the -// available ExpressRouteServiceProviders. -func (client ExpressRouteServiceProvidersClient) List() (result ExpressRouteServiceProviderListResult, err error) { - req, err := client.ListPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ExpressRouteServiceProvidersClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.ExpressRouteServiceProvidersClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ExpressRouteServiceProvidersClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client ExpressRouteServiceProvidersClient) ListPreparer() (*http.Request, error) { - pathParameters := map[string]interface{}{ - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteServiceProviders"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client ExpressRouteServiceProvidersClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client ExpressRouteServiceProvidersClient) ListResponder(resp *http.Response) (result ExpressRouteServiceProviderListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client ExpressRouteServiceProvidersClient) ListNextResults(lastResults ExpressRouteServiceProviderListResult) (result ExpressRouteServiceProviderListResult, err error) { - req, err := lastResults.ExpressRouteServiceProviderListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.ExpressRouteServiceProvidersClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.ExpressRouteServiceProvidersClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.ExpressRouteServiceProvidersClient", "List", resp, "Failure responding to next results request request") - } - - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/interfaces.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/interfaces.go deleted file mode 100644 index b14b21b2..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/interfaces.go +++ /dev/null @@ -1,679 +0,0 @@ -package network - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// InterfacesClient is the the Microsoft Azure Network management API provides -// a RESTful set of web services that interact with Microsoft Azure Networks -// service to manage your network resrources. The API has entities that -// capture the relationship between an end user and the Microsoft Azure -// Networks service. -type InterfacesClient struct { - ManagementClient -} - -// NewInterfacesClient creates an instance of the InterfacesClient client. -func NewInterfacesClient(subscriptionID string) InterfacesClient { - return NewInterfacesClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewInterfacesClientWithBaseURI creates an instance of the InterfacesClient -// client. -func NewInterfacesClientWithBaseURI(baseURI string, subscriptionID string) InterfacesClient { - return InterfacesClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// CreateOrUpdate the Put NetworkInterface operation creates/updates a -// networkInterface This method may poll for completion. Polling can be -// canceled by passing the cancel channel argument. The channel will be used -// to cancel polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. networkInterfaceName -// is the name of the network interface. parameters is parameters supplied to -// the create/update NetworkInterface operation -func (client InterfacesClient) CreateOrUpdate(resourceGroupName string, networkInterfaceName string, parameters Interface, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.CreateOrUpdatePreparer(resourceGroupName, networkInterfaceName, parameters, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "CreateOrUpdate", nil, "Failure preparing request") - } - - resp, err := client.CreateOrUpdateSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "CreateOrUpdate", resp, "Failure sending request") - } - - result, err = client.CreateOrUpdateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.InterfacesClient", "CreateOrUpdate", resp, "Failure responding to request") - } - - return -} - -// CreateOrUpdatePreparer prepares the CreateOrUpdate request. -func (client InterfacesClient) CreateOrUpdatePreparer(resourceGroupName string, networkInterfaceName string, parameters Interface, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "networkInterfaceName": url.QueryEscape(networkInterfaceName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the -// http.Response Body if it receives an error. -func (client InterfacesClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always -// closes the http.Response Body. -func (client InterfacesClient) CreateOrUpdateResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusCreated, http.StatusOK), - autorest.ByClosing()) - result.Response = resp - return -} - -// Delete the delete netwokInterface operation deletes the specified -// netwokInterface. This method may poll for completion. Polling can be -// canceled by passing the cancel channel argument. The channel will be used -// to cancel polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. networkInterfaceName -// is the name of the network interface. -func (client InterfacesClient) Delete(resourceGroupName string, networkInterfaceName string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.DeletePreparer(resourceGroupName, networkInterfaceName, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "Delete", nil, "Failure preparing request") - } - - resp, err := client.DeleteSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "Delete", resp, "Failure sending request") - } - - result, err = client.DeleteResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.InterfacesClient", "Delete", resp, "Failure responding to request") - } - - return -} - -// DeletePreparer prepares the Delete request. -func (client InterfacesClient) DeletePreparer(resourceGroupName string, networkInterfaceName string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "networkInterfaceName": url.QueryEscape(networkInterfaceName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteSender sends the Delete request. The method will close the -// http.Response Body if it receives an error. -func (client InterfacesClient) DeleteSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// DeleteResponder handles the response to the Delete request. The method always -// closes the http.Response Body. -func (client InterfacesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusNoContent, http.StatusAccepted, http.StatusOK), - autorest.ByClosing()) - result.Response = resp - return -} - -// Get the Get ntework interface operation retreives information about the -// specified network interface. -// -// resourceGroupName is the name of the resource group. networkInterfaceName -// is the name of the network interface. expand is expand references -// resources. -func (client InterfacesClient) Get(resourceGroupName string, networkInterfaceName string, expand string) (result Interface, err error) { - req, err := client.GetPreparer(resourceGroupName, networkInterfaceName, expand) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.InterfacesClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client InterfacesClient) GetPreparer(resourceGroupName string, networkInterfaceName string, expand string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "networkInterfaceName": url.QueryEscape(networkInterfaceName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - if len(expand) > 0 { - queryParameters["$expand"] = expand - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces/{networkInterfaceName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client InterfacesClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client InterfacesClient) GetResponder(resp *http.Response) (result Interface, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// GetVirtualMachineScaleSetNetworkInterface the Get ntework interface -// operation retreives information about the specified network interface in a -// virtual machine scale set. -// -// resourceGroupName is the name of the resource group. -// virtualMachineScaleSetName is the name of the virtual machine scale set. -// virtualmachineIndex is the virtual machine index. networkInterfaceName is -// the name of the network interface. expand is expand references resources. -func (client InterfacesClient) GetVirtualMachineScaleSetNetworkInterface(resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string, networkInterfaceName string, expand string) (result Interface, err error) { - req, err := client.GetVirtualMachineScaleSetNetworkInterfacePreparer(resourceGroupName, virtualMachineScaleSetName, virtualmachineIndex, networkInterfaceName, expand) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "GetVirtualMachineScaleSetNetworkInterface", nil, "Failure preparing request") - } - - resp, err := client.GetVirtualMachineScaleSetNetworkInterfaceSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "GetVirtualMachineScaleSetNetworkInterface", resp, "Failure sending request") - } - - result, err = client.GetVirtualMachineScaleSetNetworkInterfaceResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.InterfacesClient", "GetVirtualMachineScaleSetNetworkInterface", resp, "Failure responding to request") - } - - return -} - -// GetVirtualMachineScaleSetNetworkInterfacePreparer prepares the GetVirtualMachineScaleSetNetworkInterface request. -func (client InterfacesClient) GetVirtualMachineScaleSetNetworkInterfacePreparer(resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string, networkInterfaceName string, expand string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "networkInterfaceName": url.QueryEscape(networkInterfaceName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "virtualmachineIndex": url.QueryEscape(virtualmachineIndex), - "virtualMachineScaleSetName": url.QueryEscape(virtualMachineScaleSetName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - if len(expand) > 0 { - queryParameters["$expand"] = expand - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces/{networkInterfaceName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetVirtualMachineScaleSetNetworkInterfaceSender sends the GetVirtualMachineScaleSetNetworkInterface request. The method will close the -// http.Response Body if it receives an error. -func (client InterfacesClient) GetVirtualMachineScaleSetNetworkInterfaceSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetVirtualMachineScaleSetNetworkInterfaceResponder handles the response to the GetVirtualMachineScaleSetNetworkInterface request. The method always -// closes the http.Response Body. -func (client InterfacesClient) GetVirtualMachineScaleSetNetworkInterfaceResponder(resp *http.Response) (result Interface, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List the List networkInterfaces opertion retrieves all the -// networkInterfaces in a resource group. -// -// resourceGroupName is the name of the resource group. -func (client InterfacesClient) List(resourceGroupName string) (result InterfaceListResult, err error) { - req, err := client.ListPreparer(resourceGroupName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.InterfacesClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client InterfacesClient) ListPreparer(resourceGroupName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkInterfaces"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client InterfacesClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client InterfacesClient) ListResponder(resp *http.Response) (result InterfaceListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client InterfacesClient) ListNextResults(lastResults InterfaceListResult) (result InterfaceListResult, err error) { - req, err := lastResults.InterfaceListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.InterfacesClient", "List", resp, "Failure responding to next results request request") - } - - return -} - -// ListAll the List networkInterfaces opertion retrieves all the -// networkInterfaces in a subscription. -func (client InterfacesClient) ListAll() (result InterfaceListResult, err error) { - req, err := client.ListAllPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "ListAll", nil, "Failure preparing request") - } - - resp, err := client.ListAllSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "ListAll", resp, "Failure sending request") - } - - result, err = client.ListAllResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListAll", resp, "Failure responding to request") - } - - return -} - -// ListAllPreparer prepares the ListAll request. -func (client InterfacesClient) ListAllPreparer() (*http.Request, error) { - pathParameters := map[string]interface{}{ - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkInterfaces"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListAllSender sends the ListAll request. The method will close the -// http.Response Body if it receives an error. -func (client InterfacesClient) ListAllSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListAllResponder handles the response to the ListAll request. The method always -// closes the http.Response Body. -func (client InterfacesClient) ListAllResponder(resp *http.Response) (result InterfaceListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListAllNextResults retrieves the next set of results, if any. -func (client InterfacesClient) ListAllNextResults(lastResults InterfaceListResult) (result InterfaceListResult, err error) { - req, err := lastResults.InterfaceListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "ListAll", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListAllSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "ListAll", resp, "Failure sending next results request request") - } - - result, err = client.ListAllResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListAll", resp, "Failure responding to next results request request") - } - - return -} - -// ListVirtualMachineScaleSetNetworkInterfaces the list network interface -// operation retrieves information about all network interfaces in a virtual -// machine scale set. -// -// resourceGroupName is the name of the resource group. -// virtualMachineScaleSetName is the name of the virtual machine scale set. -func (client InterfacesClient) ListVirtualMachineScaleSetNetworkInterfaces(resourceGroupName string, virtualMachineScaleSetName string) (result InterfaceListResult, err error) { - req, err := client.ListVirtualMachineScaleSetNetworkInterfacesPreparer(resourceGroupName, virtualMachineScaleSetName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetNetworkInterfaces", nil, "Failure preparing request") - } - - resp, err := client.ListVirtualMachineScaleSetNetworkInterfacesSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetNetworkInterfaces", resp, "Failure sending request") - } - - result, err = client.ListVirtualMachineScaleSetNetworkInterfacesResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetNetworkInterfaces", resp, "Failure responding to request") - } - - return -} - -// ListVirtualMachineScaleSetNetworkInterfacesPreparer prepares the ListVirtualMachineScaleSetNetworkInterfaces request. -func (client InterfacesClient) ListVirtualMachineScaleSetNetworkInterfacesPreparer(resourceGroupName string, virtualMachineScaleSetName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "virtualMachineScaleSetName": url.QueryEscape(virtualMachineScaleSetName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/networkInterfaces"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListVirtualMachineScaleSetNetworkInterfacesSender sends the ListVirtualMachineScaleSetNetworkInterfaces request. The method will close the -// http.Response Body if it receives an error. -func (client InterfacesClient) ListVirtualMachineScaleSetNetworkInterfacesSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListVirtualMachineScaleSetNetworkInterfacesResponder handles the response to the ListVirtualMachineScaleSetNetworkInterfaces request. The method always -// closes the http.Response Body. -func (client InterfacesClient) ListVirtualMachineScaleSetNetworkInterfacesResponder(resp *http.Response) (result InterfaceListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListVirtualMachineScaleSetNetworkInterfacesNextResults retrieves the next set of results, if any. -func (client InterfacesClient) ListVirtualMachineScaleSetNetworkInterfacesNextResults(lastResults InterfaceListResult) (result InterfaceListResult, err error) { - req, err := lastResults.InterfaceListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetNetworkInterfaces", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListVirtualMachineScaleSetNetworkInterfacesSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetNetworkInterfaces", resp, "Failure sending next results request request") - } - - result, err = client.ListVirtualMachineScaleSetNetworkInterfacesResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetNetworkInterfaces", resp, "Failure responding to next results request request") - } - - return -} - -// ListVirtualMachineScaleSetVMNetworkInterfaces the list network interface -// operation retrieves information about all network interfaces in a virtual -// machine from a virtual machine scale set. -// -// resourceGroupName is the name of the resource group. -// virtualMachineScaleSetName is the name of the virtual machine scale set. -// virtualmachineIndex is the virtual machine index. -func (client InterfacesClient) ListVirtualMachineScaleSetVMNetworkInterfaces(resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string) (result InterfaceListResult, err error) { - req, err := client.ListVirtualMachineScaleSetVMNetworkInterfacesPreparer(resourceGroupName, virtualMachineScaleSetName, virtualmachineIndex) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetVMNetworkInterfaces", nil, "Failure preparing request") - } - - resp, err := client.ListVirtualMachineScaleSetVMNetworkInterfacesSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetVMNetworkInterfaces", resp, "Failure sending request") - } - - result, err = client.ListVirtualMachineScaleSetVMNetworkInterfacesResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetVMNetworkInterfaces", resp, "Failure responding to request") - } - - return -} - -// ListVirtualMachineScaleSetVMNetworkInterfacesPreparer prepares the ListVirtualMachineScaleSetVMNetworkInterfaces request. -func (client InterfacesClient) ListVirtualMachineScaleSetVMNetworkInterfacesPreparer(resourceGroupName string, virtualMachineScaleSetName string, virtualmachineIndex string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "virtualmachineIndex": url.QueryEscape(virtualmachineIndex), - "virtualMachineScaleSetName": url.QueryEscape(virtualMachineScaleSetName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines/{virtualmachineIndex}/networkInterfaces"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListVirtualMachineScaleSetVMNetworkInterfacesSender sends the ListVirtualMachineScaleSetVMNetworkInterfaces request. The method will close the -// http.Response Body if it receives an error. -func (client InterfacesClient) ListVirtualMachineScaleSetVMNetworkInterfacesSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListVirtualMachineScaleSetVMNetworkInterfacesResponder handles the response to the ListVirtualMachineScaleSetVMNetworkInterfaces request. The method always -// closes the http.Response Body. -func (client InterfacesClient) ListVirtualMachineScaleSetVMNetworkInterfacesResponder(resp *http.Response) (result InterfaceListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListVirtualMachineScaleSetVMNetworkInterfacesNextResults retrieves the next set of results, if any. -func (client InterfacesClient) ListVirtualMachineScaleSetVMNetworkInterfacesNextResults(lastResults InterfaceListResult) (result InterfaceListResult, err error) { - req, err := lastResults.InterfaceListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetVMNetworkInterfaces", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListVirtualMachineScaleSetVMNetworkInterfacesSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetVMNetworkInterfaces", resp, "Failure sending next results request request") - } - - result, err = client.ListVirtualMachineScaleSetVMNetworkInterfacesResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.InterfacesClient", "ListVirtualMachineScaleSetVMNetworkInterfaces", resp, "Failure responding to next results request request") - } - - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/loadbalancers.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/loadbalancers.go deleted file mode 100644 index f74225f8..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/loadbalancers.go +++ /dev/null @@ -1,424 +0,0 @@ -package network - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// LoadBalancersClient is the the Microsoft Azure Network management API -// provides a RESTful set of web services that interact with Microsoft Azure -// Networks service to manage your network resrources. The API has entities -// that capture the relationship between an end user and the Microsoft Azure -// Networks service. -type LoadBalancersClient struct { - ManagementClient -} - -// NewLoadBalancersClient creates an instance of the LoadBalancersClient -// client. -func NewLoadBalancersClient(subscriptionID string) LoadBalancersClient { - return NewLoadBalancersClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewLoadBalancersClientWithBaseURI creates an instance of the -// LoadBalancersClient client. -func NewLoadBalancersClientWithBaseURI(baseURI string, subscriptionID string) LoadBalancersClient { - return LoadBalancersClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// CreateOrUpdate the Put LoadBalancer operation creates/updates a -// LoadBalancer This method may poll for completion. Polling can be canceled -// by passing the cancel channel argument. The channel will be used to cancel -// polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. loadBalancerName is -// the name of the loadBalancer. parameters is parameters supplied to the -// create/delete LoadBalancer operation -func (client LoadBalancersClient) CreateOrUpdate(resourceGroupName string, loadBalancerName string, parameters LoadBalancer, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.CreateOrUpdatePreparer(resourceGroupName, loadBalancerName, parameters, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.LoadBalancersClient", "CreateOrUpdate", nil, "Failure preparing request") - } - - resp, err := client.CreateOrUpdateSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.LoadBalancersClient", "CreateOrUpdate", resp, "Failure sending request") - } - - result, err = client.CreateOrUpdateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "CreateOrUpdate", resp, "Failure responding to request") - } - - return -} - -// CreateOrUpdatePreparer prepares the CreateOrUpdate request. -func (client LoadBalancersClient) CreateOrUpdatePreparer(resourceGroupName string, loadBalancerName string, parameters LoadBalancer, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "loadBalancerName": url.QueryEscape(loadBalancerName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the -// http.Response Body if it receives an error. -func (client LoadBalancersClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always -// closes the http.Response Body. -func (client LoadBalancersClient) CreateOrUpdateResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusCreated, http.StatusOK), - autorest.ByClosing()) - result.Response = resp - return -} - -// Delete the delete loadbalancer operation deletes the specified -// loadbalancer. This method may poll for completion. Polling can be canceled -// by passing the cancel channel argument. The channel will be used to cancel -// polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. loadBalancerName is -// the name of the loadBalancer. -func (client LoadBalancersClient) Delete(resourceGroupName string, loadBalancerName string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.DeletePreparer(resourceGroupName, loadBalancerName, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.LoadBalancersClient", "Delete", nil, "Failure preparing request") - } - - resp, err := client.DeleteSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.LoadBalancersClient", "Delete", resp, "Failure sending request") - } - - result, err = client.DeleteResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "Delete", resp, "Failure responding to request") - } - - return -} - -// DeletePreparer prepares the Delete request. -func (client LoadBalancersClient) DeletePreparer(resourceGroupName string, loadBalancerName string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "loadBalancerName": url.QueryEscape(loadBalancerName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteSender sends the Delete request. The method will close the -// http.Response Body if it receives an error. -func (client LoadBalancersClient) DeleteSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// DeleteResponder handles the response to the Delete request. The method always -// closes the http.Response Body. -func (client LoadBalancersClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusNoContent, http.StatusAccepted, http.StatusOK), - autorest.ByClosing()) - result.Response = resp - return -} - -// Get the Get ntework interface operation retreives information about the -// specified network interface. -// -// resourceGroupName is the name of the resource group. loadBalancerName is -// the name of the loadBalancer. expand is expand references resources. -func (client LoadBalancersClient) Get(resourceGroupName string, loadBalancerName string, expand string) (result LoadBalancer, err error) { - req, err := client.GetPreparer(resourceGroupName, loadBalancerName, expand) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.LoadBalancersClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.LoadBalancersClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client LoadBalancersClient) GetPreparer(resourceGroupName string, loadBalancerName string, expand string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "loadBalancerName": url.QueryEscape(loadBalancerName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - if len(expand) > 0 { - queryParameters["$expand"] = expand - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client LoadBalancersClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client LoadBalancersClient) GetResponder(resp *http.Response) (result LoadBalancer, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List the List loadBalancer opertion retrieves all the loadbalancers in a -// resource group. -// -// resourceGroupName is the name of the resource group. -func (client LoadBalancersClient) List(resourceGroupName string) (result LoadBalancerListResult, err error) { - req, err := client.ListPreparer(resourceGroupName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.LoadBalancersClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.LoadBalancersClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client LoadBalancersClient) ListPreparer(resourceGroupName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client LoadBalancersClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client LoadBalancersClient) ListResponder(resp *http.Response) (result LoadBalancerListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client LoadBalancersClient) ListNextResults(lastResults LoadBalancerListResult) (result LoadBalancerListResult, err error) { - req, err := lastResults.LoadBalancerListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.LoadBalancersClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.LoadBalancersClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "List", resp, "Failure responding to next results request request") - } - - return -} - -// ListAll the List loadBalancer opertion retrieves all the loadbalancers in a -// subscription. -func (client LoadBalancersClient) ListAll() (result LoadBalancerListResult, err error) { - req, err := client.ListAllPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.LoadBalancersClient", "ListAll", nil, "Failure preparing request") - } - - resp, err := client.ListAllSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.LoadBalancersClient", "ListAll", resp, "Failure sending request") - } - - result, err = client.ListAllResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "ListAll", resp, "Failure responding to request") - } - - return -} - -// ListAllPreparer prepares the ListAll request. -func (client LoadBalancersClient) ListAllPreparer() (*http.Request, error) { - pathParameters := map[string]interface{}{ - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Network/loadBalancers"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListAllSender sends the ListAll request. The method will close the -// http.Response Body if it receives an error. -func (client LoadBalancersClient) ListAllSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListAllResponder handles the response to the ListAll request. The method always -// closes the http.Response Body. -func (client LoadBalancersClient) ListAllResponder(resp *http.Response) (result LoadBalancerListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListAllNextResults retrieves the next set of results, if any. -func (client LoadBalancersClient) ListAllNextResults(lastResults LoadBalancerListResult) (result LoadBalancerListResult, err error) { - req, err := lastResults.LoadBalancerListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.LoadBalancersClient", "ListAll", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListAllSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.LoadBalancersClient", "ListAll", resp, "Failure sending next results request request") - } - - result, err = client.ListAllResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "ListAll", resp, "Failure responding to next results request request") - } - - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/localnetworkgateways.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/localnetworkgateways.go deleted file mode 100644 index 2c3c99f0..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/localnetworkgateways.go +++ /dev/null @@ -1,340 +0,0 @@ -package network - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// LocalNetworkGatewaysClient is the the Microsoft Azure Network management -// API provides a RESTful set of web services that interact with Microsoft -// Azure Networks service to manage your network resrources. The API has -// entities that capture the relationship between an end user and the -// Microsoft Azure Networks service. -type LocalNetworkGatewaysClient struct { - ManagementClient -} - -// NewLocalNetworkGatewaysClient creates an instance of the -// LocalNetworkGatewaysClient client. -func NewLocalNetworkGatewaysClient(subscriptionID string) LocalNetworkGatewaysClient { - return NewLocalNetworkGatewaysClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewLocalNetworkGatewaysClientWithBaseURI creates an instance of the -// LocalNetworkGatewaysClient client. -func NewLocalNetworkGatewaysClientWithBaseURI(baseURI string, subscriptionID string) LocalNetworkGatewaysClient { - return LocalNetworkGatewaysClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// CreateOrUpdate the Put LocalNetworkGateway operation creates/updates a -// local network gateway in the specified resource group through Network -// resource provider. This method may poll for completion. Polling can be -// canceled by passing the cancel channel argument. The channel will be used -// to cancel polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. -// localNetworkGatewayName is the name of the local network gateway. -// parameters is parameters supplied to the Begin Create or update Local -// Network Gateway operation through Network resource provider. -func (client LocalNetworkGatewaysClient) CreateOrUpdate(resourceGroupName string, localNetworkGatewayName string, parameters LocalNetworkGateway, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.CreateOrUpdatePreparer(resourceGroupName, localNetworkGatewayName, parameters, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "CreateOrUpdate", nil, "Failure preparing request") - } - - resp, err := client.CreateOrUpdateSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "CreateOrUpdate", resp, "Failure sending request") - } - - result, err = client.CreateOrUpdateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "CreateOrUpdate", resp, "Failure responding to request") - } - - return -} - -// CreateOrUpdatePreparer prepares the CreateOrUpdate request. -func (client LocalNetworkGatewaysClient) CreateOrUpdatePreparer(resourceGroupName string, localNetworkGatewayName string, parameters LocalNetworkGateway, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "localNetworkGatewayName": url.QueryEscape(localNetworkGatewayName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the -// http.Response Body if it receives an error. -func (client LocalNetworkGatewaysClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always -// closes the http.Response Body. -func (client LocalNetworkGatewaysClient) CreateOrUpdateResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusCreated, http.StatusOK), - autorest.ByClosing()) - result.Response = resp - return -} - -// Delete the Delete LocalNetworkGateway operation deletes the specifed local -// network Gateway through Network resource provider. This method may poll -// for completion. Polling can be canceled by passing the cancel channel -// argument. The channel will be used to cancel polling and any outstanding -// HTTP requests. -// -// resourceGroupName is the name of the resource group. -// localNetworkGatewayName is the name of the local network gateway. -func (client LocalNetworkGatewaysClient) Delete(resourceGroupName string, localNetworkGatewayName string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.DeletePreparer(resourceGroupName, localNetworkGatewayName, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "Delete", nil, "Failure preparing request") - } - - resp, err := client.DeleteSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "Delete", resp, "Failure sending request") - } - - result, err = client.DeleteResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "Delete", resp, "Failure responding to request") - } - - return -} - -// DeletePreparer prepares the Delete request. -func (client LocalNetworkGatewaysClient) DeletePreparer(resourceGroupName string, localNetworkGatewayName string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "localNetworkGatewayName": url.QueryEscape(localNetworkGatewayName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteSender sends the Delete request. The method will close the -// http.Response Body if it receives an error. -func (client LocalNetworkGatewaysClient) DeleteSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// DeleteResponder handles the response to the Delete request. The method always -// closes the http.Response Body. -func (client LocalNetworkGatewaysClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusNoContent, http.StatusOK, http.StatusAccepted), - autorest.ByClosing()) - result.Response = resp - return -} - -// Get the Get LocalNetworkGateway operation retrieves information about the -// specified local network gateway through Network resource provider. -// -// resourceGroupName is the name of the resource group. -// localNetworkGatewayName is the name of the local network gateway. -func (client LocalNetworkGatewaysClient) Get(resourceGroupName string, localNetworkGatewayName string) (result LocalNetworkGateway, err error) { - req, err := client.GetPreparer(resourceGroupName, localNetworkGatewayName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client LocalNetworkGatewaysClient) GetPreparer(resourceGroupName string, localNetworkGatewayName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "localNetworkGatewayName": url.QueryEscape(localNetworkGatewayName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client LocalNetworkGatewaysClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client LocalNetworkGatewaysClient) GetResponder(resp *http.Response) (result LocalNetworkGateway, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List the List LocalNetworkGateways opertion retrieves all the local network -// gateways stored. -// -// resourceGroupName is the name of the resource group. -func (client LocalNetworkGatewaysClient) List(resourceGroupName string) (result LocalNetworkGatewayListResult, err error) { - req, err := client.ListPreparer(resourceGroupName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client LocalNetworkGatewaysClient) ListPreparer(resourceGroupName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client LocalNetworkGatewaysClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client LocalNetworkGatewaysClient) ListResponder(resp *http.Response) (result LocalNetworkGatewayListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client LocalNetworkGatewaysClient) ListNextResults(lastResults LocalNetworkGatewayListResult) (result LocalNetworkGatewayListResult, err error) { - req, err := lastResults.LocalNetworkGatewayListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.LocalNetworkGatewaysClient", "List", resp, "Failure responding to next results request request") - } - - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/models.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/models.go deleted file mode 100644 index 9e60cb47..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/models.go +++ /dev/null @@ -1,1855 +0,0 @@ -package network - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/to" - "net/http" -) - -// ApplicationGatewayCookieBasedAffinity enumerates the values for application -// gateway cookie based affinity. -type ApplicationGatewayCookieBasedAffinity string - -const ( - // Disabled specifies the disabled state for application gateway cookie - // based affinity. - Disabled ApplicationGatewayCookieBasedAffinity = "Disabled" - // Enabled specifies the enabled state for application gateway cookie - // based affinity. - Enabled ApplicationGatewayCookieBasedAffinity = "Enabled" -) - -// ApplicationGatewayOperationalState enumerates the values for application -// gateway operational state. -type ApplicationGatewayOperationalState string - -const ( - // Running specifies the running state for application gateway operational - // state. - Running ApplicationGatewayOperationalState = "Running" - // Starting specifies the starting state for application gateway - // operational state. - Starting ApplicationGatewayOperationalState = "Starting" - // Stopped specifies the stopped state for application gateway operational - // state. - Stopped ApplicationGatewayOperationalState = "Stopped" - // Stopping specifies the stopping state for application gateway - // operational state. - Stopping ApplicationGatewayOperationalState = "Stopping" -) - -// ApplicationGatewayProtocol enumerates the values for application gateway -// protocol. -type ApplicationGatewayProtocol string - -const ( - // HTTP specifies the http state for application gateway protocol. - HTTP ApplicationGatewayProtocol = "Http" - // HTTPS specifies the https state for application gateway protocol. - HTTPS ApplicationGatewayProtocol = "Https" -) - -// ApplicationGatewayRequestRoutingRuleType enumerates the values for -// application gateway request routing rule type. -type ApplicationGatewayRequestRoutingRuleType string - -const ( - // Basic specifies the basic state for application gateway request routing - // rule type. - Basic ApplicationGatewayRequestRoutingRuleType = "Basic" - // PathBasedRouting specifies the path based routing state for application - // gateway request routing rule type. - PathBasedRouting ApplicationGatewayRequestRoutingRuleType = "PathBasedRouting" -) - -// ApplicationGatewaySkuName enumerates the values for application gateway sku -// name. -type ApplicationGatewaySkuName string - -const ( - // StandardLarge specifies the standard large state for application - // gateway sku name. - StandardLarge ApplicationGatewaySkuName = "Standard_Large" - // StandardMedium specifies the standard medium state for application - // gateway sku name. - StandardMedium ApplicationGatewaySkuName = "Standard_Medium" - // StandardSmall specifies the standard small state for application - // gateway sku name. - StandardSmall ApplicationGatewaySkuName = "Standard_Small" -) - -// ApplicationGatewayTier enumerates the values for application gateway tier. -type ApplicationGatewayTier string - -const ( - // Standard specifies the standard state for application gateway tier. - Standard ApplicationGatewayTier = "Standard" -) - -// AuthorizationUseStatus enumerates the values for authorization use status. -type AuthorizationUseStatus string - -const ( - // Available specifies the available state for authorization use status. - Available AuthorizationUseStatus = "Available" - // InUse specifies the in use state for authorization use status. - InUse AuthorizationUseStatus = "InUse" -) - -// ExpressRouteCircuitPeeringAdvertisedPublicPrefixState enumerates the values -// for express route circuit peering advertised public prefix state. -type ExpressRouteCircuitPeeringAdvertisedPublicPrefixState string - -const ( - // Configured specifies the configured state for express route circuit - // peering advertised public prefix state. - Configured ExpressRouteCircuitPeeringAdvertisedPublicPrefixState = "Configured" - // Configuring specifies the configuring state for express route circuit - // peering advertised public prefix state. - Configuring ExpressRouteCircuitPeeringAdvertisedPublicPrefixState = "Configuring" - // NotConfigured specifies the not configured state for express route - // circuit peering advertised public prefix state. - NotConfigured ExpressRouteCircuitPeeringAdvertisedPublicPrefixState = "NotConfigured" - // ValidationNeeded specifies the validation needed state for express - // route circuit peering advertised public prefix state. - ValidationNeeded ExpressRouteCircuitPeeringAdvertisedPublicPrefixState = "ValidationNeeded" -) - -// ExpressRouteCircuitPeeringState enumerates the values for express route -// circuit peering state. -type ExpressRouteCircuitPeeringState string - -const ( - // ExpressRouteCircuitPeeringStateDisabled specifies the express route - // circuit peering state disabled state for express route circuit peering - // state. - ExpressRouteCircuitPeeringStateDisabled ExpressRouteCircuitPeeringState = "Disabled" - // ExpressRouteCircuitPeeringStateEnabled specifies the express route - // circuit peering state enabled state for express route circuit peering - // state. - ExpressRouteCircuitPeeringStateEnabled ExpressRouteCircuitPeeringState = "Enabled" -) - -// ExpressRouteCircuitPeeringType enumerates the values for express route -// circuit peering type. -type ExpressRouteCircuitPeeringType string - -const ( - // AzurePrivatePeering specifies the azure private peering state for - // express route circuit peering type. - AzurePrivatePeering ExpressRouteCircuitPeeringType = "AzurePrivatePeering" - // AzurePublicPeering specifies the azure public peering state for express - // route circuit peering type. - AzurePublicPeering ExpressRouteCircuitPeeringType = "AzurePublicPeering" - // MicrosoftPeering specifies the microsoft peering state for express - // route circuit peering type. - MicrosoftPeering ExpressRouteCircuitPeeringType = "MicrosoftPeering" -) - -// ExpressRouteCircuitSkuFamily enumerates the values for express route -// circuit sku family. -type ExpressRouteCircuitSkuFamily string - -const ( - // MeteredData specifies the metered data state for express route circuit - // sku family. - MeteredData ExpressRouteCircuitSkuFamily = "MeteredData" - // UnlimitedData specifies the unlimited data state for express route - // circuit sku family. - UnlimitedData ExpressRouteCircuitSkuFamily = "UnlimitedData" -) - -// ExpressRouteCircuitSkuTier enumerates the values for express route circuit -// sku tier. -type ExpressRouteCircuitSkuTier string - -const ( - // ExpressRouteCircuitSkuTierPremium specifies the express route circuit - // sku tier premium state for express route circuit sku tier. - ExpressRouteCircuitSkuTierPremium ExpressRouteCircuitSkuTier = "Premium" - // ExpressRouteCircuitSkuTierStandard specifies the express route circuit - // sku tier standard state for express route circuit sku tier. - ExpressRouteCircuitSkuTierStandard ExpressRouteCircuitSkuTier = "Standard" -) - -// IPAllocationMethod enumerates the values for ip allocation method. -type IPAllocationMethod string - -const ( - // Dynamic specifies the dynamic state for ip allocation method. - Dynamic IPAllocationMethod = "Dynamic" - // Static specifies the static state for ip allocation method. - Static IPAllocationMethod = "Static" -) - -// LoadDistribution enumerates the values for load distribution. -type LoadDistribution string - -const ( - // Default specifies the default state for load distribution. - Default LoadDistribution = "Default" - // SourceIP specifies the source ip state for load distribution. - SourceIP LoadDistribution = "SourceIP" - // SourceIPProtocol specifies the source ip protocol state for load - // distribution. - SourceIPProtocol LoadDistribution = "SourceIPProtocol" -) - -// OperationStatus enumerates the values for operation status. -type OperationStatus string - -const ( - // Failed specifies the failed state for operation status. - Failed OperationStatus = "Failed" - // InProgress specifies the in progress state for operation status. - InProgress OperationStatus = "InProgress" - // Succeeded specifies the succeeded state for operation status. - Succeeded OperationStatus = "Succeeded" -) - -// ProbeProtocol enumerates the values for probe protocol. -type ProbeProtocol string - -const ( - // ProbeProtocolHTTP specifies the probe protocol http state for probe - // protocol. - ProbeProtocolHTTP ProbeProtocol = "Http" - // ProbeProtocolTCP specifies the probe protocol tcp state for probe - // protocol. - ProbeProtocolTCP ProbeProtocol = "Tcp" -) - -// ProcessorArchitecture enumerates the values for processor architecture. -type ProcessorArchitecture string - -const ( - // Amd64 specifies the amd 64 state for processor architecture. - Amd64 ProcessorArchitecture = "Amd64" - // X86 specifies the x86 state for processor architecture. - X86 ProcessorArchitecture = "X86" -) - -// RouteNextHopType enumerates the values for route next hop type. -type RouteNextHopType string - -const ( - // RouteNextHopTypeInternet specifies the route next hop type internet - // state for route next hop type. - RouteNextHopTypeInternet RouteNextHopType = "Internet" - // RouteNextHopTypeNone specifies the route next hop type none state for - // route next hop type. - RouteNextHopTypeNone RouteNextHopType = "None" - // RouteNextHopTypeVirtualAppliance specifies the route next hop type - // virtual appliance state for route next hop type. - RouteNextHopTypeVirtualAppliance RouteNextHopType = "VirtualAppliance" - // RouteNextHopTypeVirtualNetworkGateway specifies the route next hop type - // virtual network gateway state for route next hop type. - RouteNextHopTypeVirtualNetworkGateway RouteNextHopType = "VirtualNetworkGateway" - // RouteNextHopTypeVnetLocal specifies the route next hop type vnet local - // state for route next hop type. - RouteNextHopTypeVnetLocal RouteNextHopType = "VnetLocal" -) - -// SecurityRuleAccess enumerates the values for security rule access. -type SecurityRuleAccess string - -const ( - // Allow specifies the allow state for security rule access. - Allow SecurityRuleAccess = "Allow" - // Deny specifies the deny state for security rule access. - Deny SecurityRuleAccess = "Deny" -) - -// SecurityRuleDirection enumerates the values for security rule direction. -type SecurityRuleDirection string - -const ( - // Inbound specifies the inbound state for security rule direction. - Inbound SecurityRuleDirection = "Inbound" - // Outbound specifies the outbound state for security rule direction. - Outbound SecurityRuleDirection = "Outbound" -) - -// SecurityRuleProtocol enumerates the values for security rule protocol. -type SecurityRuleProtocol string - -const ( - // Asterisk specifies the asterisk state for security rule protocol. - Asterisk SecurityRuleProtocol = "*" - // TCP specifies the tcp state for security rule protocol. - TCP SecurityRuleProtocol = "Tcp" - // UDP specifies the udp state for security rule protocol. - UDP SecurityRuleProtocol = "Udp" -) - -// ServiceProviderProvisioningState enumerates the values for service provider -// provisioning state. -type ServiceProviderProvisioningState string - -const ( - // Deprovisioning specifies the deprovisioning state for service provider - // provisioning state. - Deprovisioning ServiceProviderProvisioningState = "Deprovisioning" - // NotProvisioned specifies the not provisioned state for service provider - // provisioning state. - NotProvisioned ServiceProviderProvisioningState = "NotProvisioned" - // Provisioned specifies the provisioned state for service provider - // provisioning state. - Provisioned ServiceProviderProvisioningState = "Provisioned" - // Provisioning specifies the provisioning state for service provider - // provisioning state. - Provisioning ServiceProviderProvisioningState = "Provisioning" -) - -// TransportProtocol enumerates the values for transport protocol. -type TransportProtocol string - -const ( - // TransportProtocolTCP specifies the transport protocol tcp state for - // transport protocol. - TransportProtocolTCP TransportProtocol = "Tcp" - // TransportProtocolUDP specifies the transport protocol udp state for - // transport protocol. - TransportProtocolUDP TransportProtocol = "Udp" -) - -// UsageUnit enumerates the values for usage unit. -type UsageUnit string - -const ( - // Count specifies the count state for usage unit. - Count UsageUnit = "Count" -) - -// VirtualNetworkGatewayConnectionStatus enumerates the values for virtual -// network gateway connection status. -type VirtualNetworkGatewayConnectionStatus string - -const ( - // Connected specifies the connected state for virtual network gateway - // connection status. - Connected VirtualNetworkGatewayConnectionStatus = "Connected" - // Connecting specifies the connecting state for virtual network gateway - // connection status. - Connecting VirtualNetworkGatewayConnectionStatus = "Connecting" - // NotConnected specifies the not connected state for virtual network - // gateway connection status. - NotConnected VirtualNetworkGatewayConnectionStatus = "NotConnected" - // Unknown specifies the unknown state for virtual network gateway - // connection status. - Unknown VirtualNetworkGatewayConnectionStatus = "Unknown" -) - -// VirtualNetworkGatewayConnectionType enumerates the values for virtual -// network gateway connection type. -type VirtualNetworkGatewayConnectionType string - -const ( - // ExpressRoute specifies the express route state for virtual network - // gateway connection type. - ExpressRoute VirtualNetworkGatewayConnectionType = "ExpressRoute" - // IPsec specifies the i psec state for virtual network gateway connection - // type. - IPsec VirtualNetworkGatewayConnectionType = "IPsec" - // Vnet2Vnet specifies the vnet 2 vnet state for virtual network gateway - // connection type. - Vnet2Vnet VirtualNetworkGatewayConnectionType = "Vnet2Vnet" - // VPNClient specifies the vpn client state for virtual network gateway - // connection type. - VPNClient VirtualNetworkGatewayConnectionType = "VPNClient" -) - -// VirtualNetworkGatewaySkuName enumerates the values for virtual network -// gateway sku name. -type VirtualNetworkGatewaySkuName string - -const ( - // VirtualNetworkGatewaySkuNameBasic specifies the virtual network gateway - // sku name basic state for virtual network gateway sku name. - VirtualNetworkGatewaySkuNameBasic VirtualNetworkGatewaySkuName = "Basic" - // VirtualNetworkGatewaySkuNameHighPerformance specifies the virtual - // network gateway sku name high performance state for virtual network - // gateway sku name. - VirtualNetworkGatewaySkuNameHighPerformance VirtualNetworkGatewaySkuName = "HighPerformance" - // VirtualNetworkGatewaySkuNameStandard specifies the virtual network - // gateway sku name standard state for virtual network gateway sku name. - VirtualNetworkGatewaySkuNameStandard VirtualNetworkGatewaySkuName = "Standard" -) - -// VirtualNetworkGatewaySkuTier enumerates the values for virtual network -// gateway sku tier. -type VirtualNetworkGatewaySkuTier string - -const ( - // VirtualNetworkGatewaySkuTierBasic specifies the virtual network gateway - // sku tier basic state for virtual network gateway sku tier. - VirtualNetworkGatewaySkuTierBasic VirtualNetworkGatewaySkuTier = "Basic" - // VirtualNetworkGatewaySkuTierHighPerformance specifies the virtual - // network gateway sku tier high performance state for virtual network - // gateway sku tier. - VirtualNetworkGatewaySkuTierHighPerformance VirtualNetworkGatewaySkuTier = "HighPerformance" - // VirtualNetworkGatewaySkuTierStandard specifies the virtual network - // gateway sku tier standard state for virtual network gateway sku tier. - VirtualNetworkGatewaySkuTierStandard VirtualNetworkGatewaySkuTier = "Standard" -) - -// VirtualNetworkGatewayType enumerates the values for virtual network gateway -// type. -type VirtualNetworkGatewayType string - -const ( - // VirtualNetworkGatewayTypeExpressRoute specifies the virtual network - // gateway type express route state for virtual network gateway type. - VirtualNetworkGatewayTypeExpressRoute VirtualNetworkGatewayType = "ExpressRoute" - // VirtualNetworkGatewayTypeVpn specifies the virtual network gateway type - // vpn state for virtual network gateway type. - VirtualNetworkGatewayTypeVpn VirtualNetworkGatewayType = "Vpn" -) - -// VpnType enumerates the values for vpn type. -type VpnType string - -const ( - // PolicyBased specifies the policy based state for vpn type. - PolicyBased VpnType = "PolicyBased" - // RouteBased specifies the route based state for vpn type. - RouteBased VpnType = "RouteBased" -) - -// AddressSpace is addressSpace contains an array of IP address ranges that -// can be used by subnets -type AddressSpace struct { - AddressPrefixes *[]string `json:"addressPrefixes,omitempty"` -} - -// ApplicationGateway is applicationGateways resource -type ApplicationGateway struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Type *string `json:"type,omitempty"` - Location *string `json:"location,omitempty"` - Tags *map[string]*string `json:"tags,omitempty"` - Properties *ApplicationGatewayPropertiesFormat `json:"properties,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// ApplicationGatewayBackendAddress is backend Address of application gateway -type ApplicationGatewayBackendAddress struct { - Fqdn *string `json:"fqdn,omitempty"` - IPAddress *string `json:"ipAddress,omitempty"` -} - -// ApplicationGatewayBackendAddressPool is backend Address Pool of application -// gateway -type ApplicationGatewayBackendAddressPool struct { - ID *string `json:"id,omitempty"` - Properties *ApplicationGatewayBackendAddressPoolPropertiesFormat `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// ApplicationGatewayBackendAddressPoolPropertiesFormat is properties of -// Backend Address Pool of application gateway -type ApplicationGatewayBackendAddressPoolPropertiesFormat struct { - BackendIPConfigurations *[]SubResource `json:"backendIPConfigurations,omitempty"` - BackendAddresses *[]ApplicationGatewayBackendAddress `json:"backendAddresses,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// ApplicationGatewayBackendHTTPSettings is backend address pool settings of -// application gateway -type ApplicationGatewayBackendHTTPSettings struct { - ID *string `json:"id,omitempty"` - Properties *ApplicationGatewayBackendHTTPSettingsPropertiesFormat `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// ApplicationGatewayBackendHTTPSettingsPropertiesFormat is properties of -// Backend address pool settings of application gateway -type ApplicationGatewayBackendHTTPSettingsPropertiesFormat struct { - Port *int32 `json:"port,omitempty"` - Protocol ApplicationGatewayProtocol `json:"protocol,omitempty"` - CookieBasedAffinity ApplicationGatewayCookieBasedAffinity `json:"cookieBasedAffinity,omitempty"` - RequestTimeout *int32 `json:"requestTimeout,omitempty"` - Probe *SubResource `json:"probe,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// ApplicationGatewayFrontendIPConfiguration is frontend IP configuration of -// application gateway -type ApplicationGatewayFrontendIPConfiguration struct { - ID *string `json:"id,omitempty"` - Properties *ApplicationGatewayFrontendIPConfigurationPropertiesFormat `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// ApplicationGatewayFrontendIPConfigurationPropertiesFormat is properties of -// Frontend IP configuration of application gateway -type ApplicationGatewayFrontendIPConfigurationPropertiesFormat struct { - PrivateIPAddress *string `json:"privateIPAddress,omitempty"` - PrivateIPAllocationMethod IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` - Subnet *SubResource `json:"subnet,omitempty"` - PublicIPAddress *SubResource `json:"publicIPAddress,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// ApplicationGatewayFrontendPort is frontend Port of application gateway -type ApplicationGatewayFrontendPort struct { - ID *string `json:"id,omitempty"` - Properties *ApplicationGatewayFrontendPortPropertiesFormat `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// ApplicationGatewayFrontendPortPropertiesFormat is properties of Frontend -// Port of application gateway -type ApplicationGatewayFrontendPortPropertiesFormat struct { - Port *int32 `json:"port,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// ApplicationGatewayHTTPListener is http listener of application gateway -type ApplicationGatewayHTTPListener struct { - ID *string `json:"id,omitempty"` - Properties *ApplicationGatewayHTTPListenerPropertiesFormat `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// ApplicationGatewayHTTPListenerPropertiesFormat is properties of Http -// listener of application gateway -type ApplicationGatewayHTTPListenerPropertiesFormat struct { - FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` - FrontendPort *SubResource `json:"frontendPort,omitempty"` - Protocol ApplicationGatewayProtocol `json:"protocol,omitempty"` - HostName *string `json:"hostName,omitempty"` - SslCertificate *SubResource `json:"sslCertificate,omitempty"` - RequireServerNameIndication *string `json:"requireServerNameIndication,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// ApplicationGatewayIPConfiguration is iP configuration of application gateway -type ApplicationGatewayIPConfiguration struct { - ID *string `json:"id,omitempty"` - Properties *ApplicationGatewayIPConfigurationPropertiesFormat `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// ApplicationGatewayIPConfigurationPropertiesFormat is properties of IP -// configuration of application gateway -type ApplicationGatewayIPConfigurationPropertiesFormat struct { - Subnet *SubResource `json:"subnet,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// ApplicationGatewayListResult is response for ListLoadBalancers Api service -// call -type ApplicationGatewayListResult struct { - autorest.Response `json:"-"` - Value *[]ApplicationGateway `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// ApplicationGatewayListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client ApplicationGatewayListResult) ApplicationGatewayListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// ApplicationGatewayPathRule is path rule of URL path map of application -// gateway -type ApplicationGatewayPathRule struct { - ID *string `json:"id,omitempty"` - Properties *ApplicationGatewayPathRulePropertiesFormat `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// ApplicationGatewayPathRulePropertiesFormat is properties of probe of -// application gateway -type ApplicationGatewayPathRulePropertiesFormat struct { - Paths *[]string `json:"paths,omitempty"` - BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` - BackendHTTPSettings *SubResource `json:"backendHttpSettings,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// ApplicationGatewayProbe is probe of application gateway -type ApplicationGatewayProbe struct { - ID *string `json:"id,omitempty"` - Properties *ApplicationGatewayProbePropertiesFormat `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// ApplicationGatewayProbePropertiesFormat is properties of probe of -// application gateway -type ApplicationGatewayProbePropertiesFormat struct { - Protocol ApplicationGatewayProtocol `json:"protocol,omitempty"` - Host *string `json:"host,omitempty"` - Path *string `json:"path,omitempty"` - Interval *int32 `json:"interval,omitempty"` - Timeout *int32 `json:"timeout,omitempty"` - UnhealthyThreshold *int32 `json:"unhealthyThreshold,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// ApplicationGatewayPropertiesFormat is properties of Application Gateway -type ApplicationGatewayPropertiesFormat struct { - Sku *ApplicationGatewaySku `json:"sku,omitempty"` - OperationalState ApplicationGatewayOperationalState `json:"operationalState,omitempty"` - GatewayIPConfigurations *[]ApplicationGatewayIPConfiguration `json:"gatewayIPConfigurations,omitempty"` - SslCertificates *[]ApplicationGatewaySslCertificate `json:"sslCertificates,omitempty"` - FrontendIPConfigurations *[]ApplicationGatewayFrontendIPConfiguration `json:"frontendIPConfigurations,omitempty"` - FrontendPorts *[]ApplicationGatewayFrontendPort `json:"frontendPorts,omitempty"` - Probes *[]ApplicationGatewayProbe `json:"probes,omitempty"` - BackendAddressPools *[]ApplicationGatewayBackendAddressPool `json:"backendAddressPools,omitempty"` - BackendHTTPSettingsCollection *[]ApplicationGatewayBackendHTTPSettings `json:"backendHttpSettingsCollection,omitempty"` - HTTPListeners *[]ApplicationGatewayHTTPListener `json:"httpListeners,omitempty"` - URLPathMaps *[]ApplicationGatewayURLPathMap `json:"urlPathMaps,omitempty"` - RequestRoutingRules *[]ApplicationGatewayRequestRoutingRule `json:"requestRoutingRules,omitempty"` - ResourceGUID *string `json:"resourceGuid,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// ApplicationGatewayRequestRoutingRule is request routing rule of application -// gateway -type ApplicationGatewayRequestRoutingRule struct { - ID *string `json:"id,omitempty"` - Properties *ApplicationGatewayRequestRoutingRulePropertiesFormat `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// ApplicationGatewayRequestRoutingRulePropertiesFormat is properties of -// Request routing rule of application gateway -type ApplicationGatewayRequestRoutingRulePropertiesFormat struct { - RuleType ApplicationGatewayRequestRoutingRuleType `json:"ruleType,omitempty"` - BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` - BackendHTTPSettings *SubResource `json:"backendHttpSettings,omitempty"` - HTTPListener *SubResource `json:"httpListener,omitempty"` - URLPathMap *SubResource `json:"urlPathMap,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// ApplicationGatewaySku is sKU of application gateway -type ApplicationGatewaySku struct { - Name ApplicationGatewaySkuName `json:"name,omitempty"` - Tier ApplicationGatewayTier `json:"tier,omitempty"` - Capacity *int32 `json:"capacity,omitempty"` -} - -// ApplicationGatewaySslCertificate is sSL certificates of application gateway -type ApplicationGatewaySslCertificate struct { - ID *string `json:"id,omitempty"` - Properties *ApplicationGatewaySslCertificatePropertiesFormat `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// ApplicationGatewaySslCertificatePropertiesFormat is properties of SSL -// certificates of application gateway -type ApplicationGatewaySslCertificatePropertiesFormat struct { - Data *string `json:"data,omitempty"` - Password *string `json:"password,omitempty"` - PublicCertData *string `json:"publicCertData,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// ApplicationGatewayURLPathMap is urlPathMap of application gateway -type ApplicationGatewayURLPathMap struct { - ID *string `json:"id,omitempty"` - Properties *ApplicationGatewayURLPathMapPropertiesFormat `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// ApplicationGatewayURLPathMapPropertiesFormat is properties of probe of -// application gateway -type ApplicationGatewayURLPathMapPropertiesFormat struct { - DefaultBackendAddressPool *SubResource `json:"defaultBackendAddressPool,omitempty"` - DefaultBackendHTTPSettings *SubResource `json:"defaultBackendHttpSettings,omitempty"` - PathRules *[]ApplicationGatewayPathRule `json:"pathRules,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// AuthorizationListResult is response for ListAuthorizations Api service -// callRetrieves all authorizations that belongs to an ExpressRouteCircuit -type AuthorizationListResult struct { - autorest.Response `json:"-"` - Value *[]ExpressRouteCircuitAuthorization `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// AuthorizationListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client AuthorizationListResult) AuthorizationListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// AuthorizationPropertiesFormat is -type AuthorizationPropertiesFormat struct { - AuthorizationKey *string `json:"authorizationKey,omitempty"` - AuthorizationUseStatus AuthorizationUseStatus `json:"authorizationUseStatus,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// AzureAsyncOperationResult is the response body contains the status of the -// specified asynchronous operation, indicating whether it has succeeded, is -// inprogress, or has failed. Note that this status is distinct from the HTTP -// status code returned for the Get Operation Status operation itself. If the -// asynchronous operation succeeded, the response body includes the HTTP -// status code for the successful request. If the asynchronous operation -// failed, the response body includes the HTTP status code for the failed -// request and error information regarding the failure. -type AzureAsyncOperationResult struct { - Status OperationStatus `json:"status,omitempty"` - Error *Error `json:"error,omitempty"` -} - -// BackendAddressPool is pool of backend IP addresseses -type BackendAddressPool struct { - ID *string `json:"id,omitempty"` - Properties *BackendAddressPoolPropertiesFormat `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// BackendAddressPoolPropertiesFormat is properties of BackendAddressPool -type BackendAddressPoolPropertiesFormat struct { - BackendIPConfigurations *[]InterfaceIPConfiguration `json:"backendIPConfigurations,omitempty"` - LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` - OutboundNatRule *SubResource `json:"outboundNatRule,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// ConnectionResetSharedKey is -type ConnectionResetSharedKey struct { - autorest.Response `json:"-"` - KeyLength *int64 `json:"keyLength,omitempty"` -} - -// ConnectionSharedKey is response for GetConnectionSharedKey Api servive call -type ConnectionSharedKey struct { - autorest.Response `json:"-"` - Value *string `json:"value,omitempty"` -} - -// ConnectionSharedKeyResult is response for CheckConnectionSharedKey Api -// servive call -type ConnectionSharedKeyResult struct { - autorest.Response `json:"-"` - Value *string `json:"value,omitempty"` -} - -// DhcpOptions is dHCPOptions contains an array of DNS servers available to -// VMs deployed in the virtual networkStandard DHCP option for a subnet -// overrides VNET DHCP options. -type DhcpOptions struct { - DNSServers *[]string `json:"dnsServers,omitempty"` -} - -// DNSNameAvailabilityResult is response for CheckDnsNameAvailability Api -// servive call -type DNSNameAvailabilityResult struct { - autorest.Response `json:"-"` - Available *bool `json:"available,omitempty"` -} - -// Error is -type Error struct { - Code *string `json:"code,omitempty"` - Message *string `json:"message,omitempty"` - Target *string `json:"target,omitempty"` - Details *[]ErrorDetails `json:"details,omitempty"` - InnerError *string `json:"innerError,omitempty"` -} - -// ErrorDetails is -type ErrorDetails struct { - Code *string `json:"code,omitempty"` - Target *string `json:"target,omitempty"` - Message *string `json:"message,omitempty"` -} - -// ExpressRouteCircuit is expressRouteCircuit resource -type ExpressRouteCircuit struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Type *string `json:"type,omitempty"` - Location *string `json:"location,omitempty"` - Tags *map[string]*string `json:"tags,omitempty"` - Sku *ExpressRouteCircuitSku `json:"sku,omitempty"` - Properties *ExpressRouteCircuitPropertiesFormat `json:"properties,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// ExpressRouteCircuitArpTable is the arp table associated with the -// ExpressRouteCircuit -type ExpressRouteCircuitArpTable struct { - IPAddress *string `json:"ipAddress,omitempty"` - MacAddress *string `json:"macAddress,omitempty"` -} - -// ExpressRouteCircuitAuthorization is authorization in a ExpressRouteCircuit -// resource -type ExpressRouteCircuitAuthorization struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - Properties *AuthorizationPropertiesFormat `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// ExpressRouteCircuitListResult is response for ListExpressRouteCircuit Api -// service call -type ExpressRouteCircuitListResult struct { - autorest.Response `json:"-"` - Value *[]ExpressRouteCircuit `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// ExpressRouteCircuitListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client ExpressRouteCircuitListResult) ExpressRouteCircuitListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// ExpressRouteCircuitPeering is peering in a ExpressRouteCircuit resource -type ExpressRouteCircuitPeering struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - Properties *ExpressRouteCircuitPeeringPropertiesFormat `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// ExpressRouteCircuitPeeringConfig is specfies the peering config -type ExpressRouteCircuitPeeringConfig struct { - AdvertisedPublicPrefixes *[]string `json:"advertisedPublicPrefixes,omitempty"` - AdvertisedPublicPrefixesState ExpressRouteCircuitPeeringAdvertisedPublicPrefixState `json:"advertisedPublicPrefixesState,omitempty"` - CustomerASN *int32 `json:"customerASN,omitempty"` - RoutingRegistryName *string `json:"routingRegistryName,omitempty"` -} - -// ExpressRouteCircuitPeeringListResult is response for ListPeering Api -// service callRetrieves all Peerings that belongs to an ExpressRouteCircuit -type ExpressRouteCircuitPeeringListResult struct { - autorest.Response `json:"-"` - Value *[]ExpressRouteCircuitPeering `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// ExpressRouteCircuitPeeringListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client ExpressRouteCircuitPeeringListResult) ExpressRouteCircuitPeeringListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// ExpressRouteCircuitPeeringPropertiesFormat is -type ExpressRouteCircuitPeeringPropertiesFormat struct { - PeeringType ExpressRouteCircuitPeeringType `json:"peeringType,omitempty"` - State ExpressRouteCircuitPeeringState `json:"state,omitempty"` - AzureASN *int32 `json:"azureASN,omitempty"` - PeerASN *int32 `json:"peerASN,omitempty"` - PrimaryPeerAddressPrefix *string `json:"primaryPeerAddressPrefix,omitempty"` - SecondaryPeerAddressPrefix *string `json:"secondaryPeerAddressPrefix,omitempty"` - PrimaryAzurePort *string `json:"primaryAzurePort,omitempty"` - SecondaryAzurePort *string `json:"secondaryAzurePort,omitempty"` - SharedKey *string `json:"sharedKey,omitempty"` - VlanID *int32 `json:"vlanId,omitempty"` - MicrosoftPeeringConfig *ExpressRouteCircuitPeeringConfig `json:"microsoftPeeringConfig,omitempty"` - Stats *ExpressRouteCircuitStats `json:"stats,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// ExpressRouteCircuitPropertiesFormat is properties of ExpressRouteCircuit -type ExpressRouteCircuitPropertiesFormat struct { - CircuitProvisioningState *string `json:"circuitProvisioningState,omitempty"` - ServiceProviderProvisioningState ServiceProviderProvisioningState `json:"serviceProviderProvisioningState,omitempty"` - Authorizations *[]ExpressRouteCircuitAuthorization `json:"authorizations,omitempty"` - Peerings *[]ExpressRouteCircuitPeering `json:"peerings,omitempty"` - ServiceKey *string `json:"serviceKey,omitempty"` - ServiceProviderNotes *string `json:"serviceProviderNotes,omitempty"` - ServiceProviderProperties *ExpressRouteCircuitServiceProviderProperties `json:"serviceProviderProperties,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// ExpressRouteCircuitRoutesTable is the routes table associated with the -// ExpressRouteCircuit -type ExpressRouteCircuitRoutesTable struct { - AddressPrefix *string `json:"addressPrefix,omitempty"` - NextHopType RouteNextHopType `json:"nextHopType,omitempty"` - NextHopIP *string `json:"nextHopIP,omitempty"` - AsPath *string `json:"asPath,omitempty"` -} - -// ExpressRouteCircuitsArpTableListResult is response for ListArpTable -// associated with the Express Route Circuits Api -type ExpressRouteCircuitsArpTableListResult struct { - autorest.Response `json:"-"` - Value *[]ExpressRouteCircuitArpTable `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// ExpressRouteCircuitsArpTableListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client ExpressRouteCircuitsArpTableListResult) ExpressRouteCircuitsArpTableListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// ExpressRouteCircuitServiceProviderProperties is contains -// ServiceProviderProperties in an ExpressRouteCircuit -type ExpressRouteCircuitServiceProviderProperties struct { - ServiceProviderName *string `json:"serviceProviderName,omitempty"` - PeeringLocation *string `json:"peeringLocation,omitempty"` - BandwidthInMbps *int32 `json:"bandwidthInMbps,omitempty"` -} - -// ExpressRouteCircuitSku is contains sku in an ExpressRouteCircuit -type ExpressRouteCircuitSku struct { - Name *string `json:"name,omitempty"` - Tier ExpressRouteCircuitSkuTier `json:"tier,omitempty"` - Family ExpressRouteCircuitSkuFamily `json:"family,omitempty"` -} - -// ExpressRouteCircuitsRoutesTableListResult is response for ListRoutesTable -// associated with the Express Route Circuits Api -type ExpressRouteCircuitsRoutesTableListResult struct { - autorest.Response `json:"-"` - Value *[]ExpressRouteCircuitRoutesTable `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// ExpressRouteCircuitsRoutesTableListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client ExpressRouteCircuitsRoutesTableListResult) ExpressRouteCircuitsRoutesTableListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// ExpressRouteCircuitsStatsListResult is response for ListStats from Express -// Route Circuits Api service call -type ExpressRouteCircuitsStatsListResult struct { - autorest.Response `json:"-"` - Value *[]ExpressRouteCircuitStats `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// ExpressRouteCircuitsStatsListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client ExpressRouteCircuitsStatsListResult) ExpressRouteCircuitsStatsListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// ExpressRouteCircuitStats is contains Stats associated with the peering -type ExpressRouteCircuitStats struct { - BytesIn *int32 `json:"bytesIn,omitempty"` - BytesOut *int32 `json:"bytesOut,omitempty"` -} - -// ExpressRouteServiceProvider is expressRouteResourceProvider object -type ExpressRouteServiceProvider struct { - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Type *string `json:"type,omitempty"` - Location *string `json:"location,omitempty"` - Tags *map[string]*string `json:"tags,omitempty"` - Properties *ExpressRouteServiceProviderPropertiesFormat `json:"properties,omitempty"` -} - -// ExpressRouteServiceProviderBandwidthsOffered is contains Bandwidths offered -// in ExpressRouteServiceProviders -type ExpressRouteServiceProviderBandwidthsOffered struct { - OfferName *string `json:"offerName,omitempty"` - ValueInMbps *int32 `json:"valueInMbps,omitempty"` -} - -// ExpressRouteServiceProviderListResult is response for -// ListExpressRouteServiceProvider Api service call -type ExpressRouteServiceProviderListResult struct { - autorest.Response `json:"-"` - Value *[]ExpressRouteServiceProvider `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// ExpressRouteServiceProviderListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client ExpressRouteServiceProviderListResult) ExpressRouteServiceProviderListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// ExpressRouteServiceProviderPropertiesFormat is properties of -// ExpressRouteServiceProvider -type ExpressRouteServiceProviderPropertiesFormat struct { - PeeringLocations *[]string `json:"peeringLocations,omitempty"` - BandwidthsOffered *[]ExpressRouteServiceProviderBandwidthsOffered `json:"bandwidthsOffered,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// FrontendIPConfiguration is frontend IP address of the load balancer -type FrontendIPConfiguration struct { - ID *string `json:"id,omitempty"` - Properties *FrontendIPConfigurationPropertiesFormat `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// FrontendIPConfigurationPropertiesFormat is properties of Frontend IP -// Configuration of the load balancer -type FrontendIPConfigurationPropertiesFormat struct { - InboundNatRules *[]SubResource `json:"inboundNatRules,omitempty"` - InboundNatPools *[]SubResource `json:"inboundNatPools,omitempty"` - OutboundNatRules *[]SubResource `json:"outboundNatRules,omitempty"` - LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` - PrivateIPAddress *string `json:"privateIPAddress,omitempty"` - PrivateIPAllocationMethod IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` - Subnet *Subnet `json:"subnet,omitempty"` - PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// InboundNatPool is inbound NAT pool of the loadbalancer -type InboundNatPool struct { - ID *string `json:"id,omitempty"` - Properties *InboundNatPoolPropertiesFormat `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// InboundNatPoolPropertiesFormat is properties of Inbound NAT pool -type InboundNatPoolPropertiesFormat struct { - FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` - Protocol TransportProtocol `json:"protocol,omitempty"` - FrontendPortRangeStart *int32 `json:"frontendPortRangeStart,omitempty"` - FrontendPortRangeEnd *int32 `json:"frontendPortRangeEnd,omitempty"` - BackendPort *int32 `json:"backendPort,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// InboundNatRule is inbound NAT rule of the loadbalancer -type InboundNatRule struct { - ID *string `json:"id,omitempty"` - Properties *InboundNatRulePropertiesFormat `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// InboundNatRulePropertiesFormat is properties of Inbound NAT rule -type InboundNatRulePropertiesFormat struct { - FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` - BackendIPConfiguration *InterfaceIPConfiguration `json:"backendIPConfiguration,omitempty"` - Protocol TransportProtocol `json:"protocol,omitempty"` - FrontendPort *int32 `json:"frontendPort,omitempty"` - BackendPort *int32 `json:"backendPort,omitempty"` - IdleTimeoutInMinutes *int32 `json:"idleTimeoutInMinutes,omitempty"` - EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// Interface is a NetworkInterface in a resource group -type Interface struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Type *string `json:"type,omitempty"` - Location *string `json:"location,omitempty"` - Tags *map[string]*string `json:"tags,omitempty"` - Properties *InterfacePropertiesFormat `json:"properties,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// InterfaceDNSSettings is dns Settings of a network interface -type InterfaceDNSSettings struct { - DNSServers *[]string `json:"dnsServers,omitempty"` - AppliedDNSServers *[]string `json:"appliedDnsServers,omitempty"` - InternalDNSNameLabel *string `json:"internalDnsNameLabel,omitempty"` - InternalFqdn *string `json:"internalFqdn,omitempty"` -} - -// InterfaceIPConfiguration is iPConfiguration in a NetworkInterface -type InterfaceIPConfiguration struct { - ID *string `json:"id,omitempty"` - Properties *InterfaceIPConfigurationPropertiesFormat `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// InterfaceIPConfigurationPropertiesFormat is properties of IPConfiguration -type InterfaceIPConfigurationPropertiesFormat struct { - LoadBalancerBackendAddressPools *[]BackendAddressPool `json:"loadBalancerBackendAddressPools,omitempty"` - LoadBalancerInboundNatRules *[]InboundNatRule `json:"loadBalancerInboundNatRules,omitempty"` - PrivateIPAddress *string `json:"privateIPAddress,omitempty"` - PrivateIPAllocationMethod IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` - Subnet *Subnet `json:"subnet,omitempty"` - PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// InterfaceListResult is response for ListNetworkInterface Api service call -type InterfaceListResult struct { - autorest.Response `json:"-"` - Value *[]Interface `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// InterfaceListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client InterfaceListResult) InterfaceListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// InterfacePropertiesFormat is networkInterface properties. -type InterfacePropertiesFormat struct { - VirtualMachine *SubResource `json:"virtualMachine,omitempty"` - NetworkSecurityGroup *SecurityGroup `json:"networkSecurityGroup,omitempty"` - IPConfigurations *[]InterfaceIPConfiguration `json:"ipConfigurations,omitempty"` - DNSSettings *InterfaceDNSSettings `json:"dnsSettings,omitempty"` - MacAddress *string `json:"macAddress,omitempty"` - Primary *bool `json:"primary,omitempty"` - EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"` - ResourceGUID *string `json:"resourceGuid,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// IPConfiguration is iPConfiguration -type IPConfiguration struct { - ID *string `json:"id,omitempty"` - Properties *IPConfigurationPropertiesFormat `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// IPConfigurationPropertiesFormat is properties of IPConfiguration -type IPConfigurationPropertiesFormat struct { - PrivateIPAddress *string `json:"privateIPAddress,omitempty"` - PrivateIPAllocationMethod IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` - Subnet *Subnet `json:"subnet,omitempty"` - PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// LoadBalancer is loadBalancer resource -type LoadBalancer struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Type *string `json:"type,omitempty"` - Location *string `json:"location,omitempty"` - Tags *map[string]*string `json:"tags,omitempty"` - Properties *LoadBalancerPropertiesFormat `json:"properties,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// LoadBalancerListResult is response for ListLoadBalancers Api service call -type LoadBalancerListResult struct { - autorest.Response `json:"-"` - Value *[]LoadBalancer `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// LoadBalancerListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client LoadBalancerListResult) LoadBalancerListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// LoadBalancerPropertiesFormat is properties of Load Balancer -type LoadBalancerPropertiesFormat struct { - FrontendIPConfigurations *[]FrontendIPConfiguration `json:"frontendIPConfigurations,omitempty"` - BackendAddressPools *[]BackendAddressPool `json:"backendAddressPools,omitempty"` - LoadBalancingRules *[]LoadBalancingRule `json:"loadBalancingRules,omitempty"` - Probes *[]Probe `json:"probes,omitempty"` - InboundNatRules *[]InboundNatRule `json:"inboundNatRules,omitempty"` - InboundNatPools *[]InboundNatPool `json:"inboundNatPools,omitempty"` - OutboundNatRules *[]OutboundNatRule `json:"outboundNatRules,omitempty"` - ResourceGUID *string `json:"resourceGuid,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// LoadBalancingRule is rules of the load balancer -type LoadBalancingRule struct { - ID *string `json:"id,omitempty"` - Properties *LoadBalancingRulePropertiesFormat `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// LoadBalancingRulePropertiesFormat is properties of the load balancer -type LoadBalancingRulePropertiesFormat struct { - FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"` - BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` - Probe *SubResource `json:"probe,omitempty"` - Protocol TransportProtocol `json:"protocol,omitempty"` - LoadDistribution LoadDistribution `json:"loadDistribution,omitempty"` - FrontendPort *int32 `json:"frontendPort,omitempty"` - BackendPort *int32 `json:"backendPort,omitempty"` - IdleTimeoutInMinutes *int32 `json:"idleTimeoutInMinutes,omitempty"` - EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// LocalNetworkGateway is a common class for general resource information -type LocalNetworkGateway struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Type *string `json:"type,omitempty"` - Location *string `json:"location,omitempty"` - Tags *map[string]*string `json:"tags,omitempty"` - Properties *LocalNetworkGatewayPropertiesFormat `json:"properties,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// LocalNetworkGatewayListResult is response for ListLocalNetworkGateways Api -// service call -type LocalNetworkGatewayListResult struct { - autorest.Response `json:"-"` - Value *[]LocalNetworkGateway `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// LocalNetworkGatewayListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client LocalNetworkGatewayListResult) LocalNetworkGatewayListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// LocalNetworkGatewayPropertiesFormat is localNetworkGateway properties -type LocalNetworkGatewayPropertiesFormat struct { - LocalNetworkAddressSpace *AddressSpace `json:"localNetworkAddressSpace,omitempty"` - GatewayIPAddress *string `json:"gatewayIpAddress,omitempty"` - ResourceGUID *string `json:"resourceGuid,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// OutboundNatRule is outbound NAT pool of the loadbalancer -type OutboundNatRule struct { - ID *string `json:"id,omitempty"` - Properties *OutboundNatRulePropertiesFormat `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// OutboundNatRulePropertiesFormat is outbound NAT pool of the loadbalancer -type OutboundNatRulePropertiesFormat struct { - AllocatedOutboundPorts *int32 `json:"allocatedOutboundPorts,omitempty"` - FrontendIPConfigurations *[]SubResource `json:"frontendIPConfigurations,omitempty"` - BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// Probe is load balancer Probe -type Probe struct { - ID *string `json:"id,omitempty"` - Properties *ProbePropertiesFormat `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// ProbePropertiesFormat is -type ProbePropertiesFormat struct { - LoadBalancingRules *[]SubResource `json:"loadBalancingRules,omitempty"` - Protocol ProbeProtocol `json:"protocol,omitempty"` - Port *int32 `json:"port,omitempty"` - IntervalInSeconds *int32 `json:"intervalInSeconds,omitempty"` - NumberOfProbes *int32 `json:"numberOfProbes,omitempty"` - RequestPath *string `json:"requestPath,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// PublicIPAddress is publicIPAddress resource -type PublicIPAddress struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Type *string `json:"type,omitempty"` - Location *string `json:"location,omitempty"` - Tags *map[string]*string `json:"tags,omitempty"` - Properties *PublicIPAddressPropertiesFormat `json:"properties,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// PublicIPAddressDNSSettings is contains FQDN of the DNS record associated -// with the public IP address -type PublicIPAddressDNSSettings struct { - DomainNameLabel *string `json:"domainNameLabel,omitempty"` - Fqdn *string `json:"fqdn,omitempty"` - ReverseFqdn *string `json:"reverseFqdn,omitempty"` -} - -// PublicIPAddressListResult is response for ListPublicIpAddresses Api service -// call -type PublicIPAddressListResult struct { - autorest.Response `json:"-"` - Value *[]PublicIPAddress `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// PublicIPAddressListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client PublicIPAddressListResult) PublicIPAddressListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// PublicIPAddressPropertiesFormat is publicIpAddress properties -type PublicIPAddressPropertiesFormat struct { - PublicIPAllocationMethod IPAllocationMethod `json:"publicIPAllocationMethod,omitempty"` - IPConfiguration *IPConfiguration `json:"ipConfiguration,omitempty"` - DNSSettings *PublicIPAddressDNSSettings `json:"dnsSettings,omitempty"` - IPAddress *string `json:"ipAddress,omitempty"` - IdleTimeoutInMinutes *int32 `json:"idleTimeoutInMinutes,omitempty"` - ResourceGUID *string `json:"resourceGuid,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// Resource is -type Resource struct { - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Type *string `json:"type,omitempty"` - Location *string `json:"location,omitempty"` - Tags *map[string]*string `json:"tags,omitempty"` -} - -// Route is route resource -type Route struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - Properties *RoutePropertiesFormat `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// RouteListResult is response for ListRoute Api servive call -type RouteListResult struct { - autorest.Response `json:"-"` - Value *[]Route `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// RouteListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client RouteListResult) RouteListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// RoutePropertiesFormat is route resource -type RoutePropertiesFormat struct { - AddressPrefix *string `json:"addressPrefix,omitempty"` - NextHopType RouteNextHopType `json:"nextHopType,omitempty"` - NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// RouteTable is routeTable resource -type RouteTable struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Type *string `json:"type,omitempty"` - Location *string `json:"location,omitempty"` - Tags *map[string]*string `json:"tags,omitempty"` - Properties *RouteTablePropertiesFormat `json:"properties,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// RouteTableListResult is response for ListRouteTable Api servive call -type RouteTableListResult struct { - autorest.Response `json:"-"` - Value *[]RouteTable `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// RouteTableListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client RouteTableListResult) RouteTableListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// RouteTablePropertiesFormat is route Table resource -type RouteTablePropertiesFormat struct { - Routes *[]Route `json:"routes,omitempty"` - Subnets *[]Subnet `json:"subnets,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// SecurityGroup is networkSecurityGroup resource -type SecurityGroup struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Type *string `json:"type,omitempty"` - Location *string `json:"location,omitempty"` - Tags *map[string]*string `json:"tags,omitempty"` - Properties *SecurityGroupPropertiesFormat `json:"properties,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// SecurityGroupListResult is response for ListNetworkSecurityGroups Api -// servive call -type SecurityGroupListResult struct { - autorest.Response `json:"-"` - Value *[]SecurityGroup `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// SecurityGroupListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client SecurityGroupListResult) SecurityGroupListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// SecurityGroupPropertiesFormat is network Security Group resource -type SecurityGroupPropertiesFormat struct { - SecurityRules *[]SecurityRule `json:"securityRules,omitempty"` - DefaultSecurityRules *[]SecurityRule `json:"defaultSecurityRules,omitempty"` - NetworkInterfaces *[]Interface `json:"networkInterfaces,omitempty"` - Subnets *[]Subnet `json:"subnets,omitempty"` - ResourceGUID *string `json:"resourceGuid,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// SecurityRule is network security rule -type SecurityRule struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - Properties *SecurityRulePropertiesFormat `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// SecurityRuleListResult is response for ListSecurityRule Api service -// callRetrieves all security rules that belongs to a network security group -type SecurityRuleListResult struct { - autorest.Response `json:"-"` - Value *[]SecurityRule `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// SecurityRuleListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client SecurityRuleListResult) SecurityRuleListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// SecurityRulePropertiesFormat is -type SecurityRulePropertiesFormat struct { - Description *string `json:"description,omitempty"` - Protocol SecurityRuleProtocol `json:"protocol,omitempty"` - SourcePortRange *string `json:"sourcePortRange,omitempty"` - DestinationPortRange *string `json:"destinationPortRange,omitempty"` - SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"` - DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"` - Access SecurityRuleAccess `json:"access,omitempty"` - Priority *int32 `json:"priority,omitempty"` - Direction SecurityRuleDirection `json:"direction,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// String is -type String struct { - autorest.Response `json:"-"` - Value *string `json:"value,omitempty"` -} - -// Subnet is subnet in a VirtualNework resource -type Subnet struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - Properties *SubnetPropertiesFormat `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// SubnetListResult is response for ListSubnets Api service callRetrieves all -// subnet that belongs to a virtual network -type SubnetListResult struct { - autorest.Response `json:"-"` - Value *[]Subnet `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// SubnetListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client SubnetListResult) SubnetListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// SubnetPropertiesFormat is -type SubnetPropertiesFormat struct { - AddressPrefix *string `json:"addressPrefix,omitempty"` - NetworkSecurityGroup *SecurityGroup `json:"networkSecurityGroup,omitempty"` - RouteTable *RouteTable `json:"routeTable,omitempty"` - IPConfigurations *[]IPConfiguration `json:"ipConfigurations,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// SubResource is -type SubResource struct { - ID *string `json:"id,omitempty"` -} - -// Usage is describes Network Resource Usage. -type Usage struct { - Unit UsageUnit `json:"unit,omitempty"` - CurrentValue *int64 `json:"currentValue,omitempty"` - Limit *int64 `json:"limit,omitempty"` - Name *UsageName `json:"name,omitempty"` -} - -// UsageName is the Usage Names. -type UsageName struct { - Value *string `json:"value,omitempty"` - LocalizedValue *string `json:"localizedValue,omitempty"` -} - -// UsagesListResult is the List Usages operation response. -type UsagesListResult struct { - autorest.Response `json:"-"` - Value *[]Usage `json:"value,omitempty"` - NextLink *string `json:",omitempty"` -} - -// UsagesListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client UsagesListResult) UsagesListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// VirtualNetwork is virtual Network resource -type VirtualNetwork struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Type *string `json:"type,omitempty"` - Location *string `json:"location,omitempty"` - Tags *map[string]*string `json:"tags,omitempty"` - Properties *VirtualNetworkPropertiesFormat `json:"properties,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// VirtualNetworkGateway is a common class for general resource information -type VirtualNetworkGateway struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Type *string `json:"type,omitempty"` - Location *string `json:"location,omitempty"` - Tags *map[string]*string `json:"tags,omitempty"` - Properties *VirtualNetworkGatewayPropertiesFormat `json:"properties,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// VirtualNetworkGatewayConnection is a common class for general resource -// information -type VirtualNetworkGatewayConnection struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Type *string `json:"type,omitempty"` - Location *string `json:"location,omitempty"` - Tags *map[string]*string `json:"tags,omitempty"` - Properties *VirtualNetworkGatewayConnectionPropertiesFormat `json:"properties,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// VirtualNetworkGatewayConnectionListResult is response for -// ListVirtualNetworkGatewayConnections Api service call -type VirtualNetworkGatewayConnectionListResult struct { - autorest.Response `json:"-"` - Value *[]VirtualNetworkGatewayConnection `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// VirtualNetworkGatewayConnectionListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client VirtualNetworkGatewayConnectionListResult) VirtualNetworkGatewayConnectionListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// VirtualNetworkGatewayConnectionPropertiesFormat is -// virtualNeworkGatewayConnection properties -type VirtualNetworkGatewayConnectionPropertiesFormat struct { - AuthorizationKey *string `json:"authorizationKey,omitempty"` - VirtualNetworkGateway1 *VirtualNetworkGateway `json:"virtualNetworkGateway1,omitempty"` - VirtualNetworkGateway2 *VirtualNetworkGateway `json:"virtualNetworkGateway2,omitempty"` - LocalNetworkGateway2 *LocalNetworkGateway `json:"localNetworkGateway2,omitempty"` - ConnectionType VirtualNetworkGatewayConnectionType `json:"connectionType,omitempty"` - RoutingWeight *int32 `json:"routingWeight,omitempty"` - SharedKey *string `json:"sharedKey,omitempty"` - ConnectionStatus VirtualNetworkGatewayConnectionStatus `json:"connectionStatus,omitempty"` - EgressBytesTransferred *int64 `json:"egressBytesTransferred,omitempty"` - IngressBytesTransferred *int64 `json:"ingressBytesTransferred,omitempty"` - Peer *SubResource `json:"peer,omitempty"` - ResourceGUID *string `json:"resourceGuid,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// VirtualNetworkGatewayIPConfiguration is ipConfiguration for Virtual network -// gateway -type VirtualNetworkGatewayIPConfiguration struct { - ID *string `json:"id,omitempty"` - Properties *VirtualNetworkGatewayIPConfigurationPropertiesFormat `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// VirtualNetworkGatewayIPConfigurationPropertiesFormat is properties of -// VirtualNetworkGatewayIPConfiguration -type VirtualNetworkGatewayIPConfigurationPropertiesFormat struct { - PrivateIPAddress *string `json:"privateIPAddress,omitempty"` - PrivateIPAllocationMethod IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"` - Subnet *SubResource `json:"subnet,omitempty"` - PublicIPAddress *SubResource `json:"publicIPAddress,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// VirtualNetworkGatewayListResult is response for ListVirtualNetworkGateways -// Api service call -type VirtualNetworkGatewayListResult struct { - autorest.Response `json:"-"` - Value *[]VirtualNetworkGateway `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// VirtualNetworkGatewayListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client VirtualNetworkGatewayListResult) VirtualNetworkGatewayListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// VirtualNetworkGatewayPropertiesFormat is virtualNeworkGateay properties -type VirtualNetworkGatewayPropertiesFormat struct { - IPConfigurations *[]VirtualNetworkGatewayIPConfiguration `json:"ipConfigurations,omitempty"` - GatewayType VirtualNetworkGatewayType `json:"gatewayType,omitempty"` - VpnType VpnType `json:"vpnType,omitempty"` - EnableBgp *bool `json:"enableBgp,omitempty"` - GatewayDefaultSite *SubResource `json:"gatewayDefaultSite,omitempty"` - Sku *VirtualNetworkGatewaySku `json:"sku,omitempty"` - VpnClientConfiguration *VpnClientConfiguration `json:"vpnClientConfiguration,omitempty"` - ResourceGUID *string `json:"resourceGuid,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// VirtualNetworkGatewaySku is virtualNetworkGatewaySku details -type VirtualNetworkGatewaySku struct { - Name VirtualNetworkGatewaySkuName `json:"name,omitempty"` - Tier VirtualNetworkGatewaySkuTier `json:"tier,omitempty"` - Capacity *int32 `json:"capacity,omitempty"` -} - -// VirtualNetworkListResult is response for ListVirtualNetworks Api servive -// call -type VirtualNetworkListResult struct { - autorest.Response `json:"-"` - Value *[]VirtualNetwork `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// VirtualNetworkListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client VirtualNetworkListResult) VirtualNetworkListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// VirtualNetworkPropertiesFormat is -type VirtualNetworkPropertiesFormat struct { - AddressSpace *AddressSpace `json:"addressSpace,omitempty"` - DhcpOptions *DhcpOptions `json:"dhcpOptions,omitempty"` - Subnets *[]Subnet `json:"subnets,omitempty"` - ResourceGUID *string `json:"resourceGuid,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// VpnClientConfiguration is vpnClientConfiguration for P2S client -type VpnClientConfiguration struct { - VpnClientAddressPool *AddressSpace `json:"vpnClientAddressPool,omitempty"` - VpnClientRootCertificates *[]VpnClientRootCertificate `json:"vpnClientRootCertificates,omitempty"` - VpnClientRevokedCertificates *[]VpnClientRevokedCertificate `json:"vpnClientRevokedCertificates,omitempty"` -} - -// VpnClientParameters is vpnClientParameters -type VpnClientParameters struct { - ProcessorArchitecture ProcessorArchitecture `json:"ProcessorArchitecture,omitempty"` -} - -// VpnClientRevokedCertificate is vPN client revoked certificate of virtual -// network gateway -type VpnClientRevokedCertificate struct { - ID *string `json:"id,omitempty"` - Properties *VpnClientRevokedCertificatePropertiesFormat `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// VpnClientRevokedCertificatePropertiesFormat is properties of the revoked -// VPN client certificate of virtual network gateway -type VpnClientRevokedCertificatePropertiesFormat struct { - Thumbprint *string `json:"thumbprint,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// VpnClientRootCertificate is vPN client root certificate of virtual network -// gateway -type VpnClientRootCertificate struct { - ID *string `json:"id,omitempty"` - Properties *VpnClientRootCertificatePropertiesFormat `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` - Etag *string `json:"etag,omitempty"` -} - -// VpnClientRootCertificatePropertiesFormat is properties of SSL certificates -// of application gateway -type VpnClientRootCertificatePropertiesFormat struct { - PublicCertData *string `json:"publicCertData,omitempty"` - ProvisioningState *string `json:"provisioningState,omitempty"` -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/publicipaddresses.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/publicipaddresses.go deleted file mode 100644 index c33d6690..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/publicipaddresses.go +++ /dev/null @@ -1,424 +0,0 @@ -package network - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// PublicIPAddressesClient is the the Microsoft Azure Network management API -// provides a RESTful set of web services that interact with Microsoft Azure -// Networks service to manage your network resrources. The API has entities -// that capture the relationship between an end user and the Microsoft Azure -// Networks service. -type PublicIPAddressesClient struct { - ManagementClient -} - -// NewPublicIPAddressesClient creates an instance of the -// PublicIPAddressesClient client. -func NewPublicIPAddressesClient(subscriptionID string) PublicIPAddressesClient { - return NewPublicIPAddressesClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewPublicIPAddressesClientWithBaseURI creates an instance of the -// PublicIPAddressesClient client. -func NewPublicIPAddressesClientWithBaseURI(baseURI string, subscriptionID string) PublicIPAddressesClient { - return PublicIPAddressesClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// CreateOrUpdate the Put PublicIPAddress operation creates/updates a -// stable/dynamic PublicIP address This method may poll for completion. -// Polling can be canceled by passing the cancel channel argument. The -// channel will be used to cancel polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. publicIPAddressName is -// the name of the publicIpAddress. parameters is parameters supplied to the -// create/update PublicIPAddress operation -func (client PublicIPAddressesClient) CreateOrUpdate(resourceGroupName string, publicIPAddressName string, parameters PublicIPAddress, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.CreateOrUpdatePreparer(resourceGroupName, publicIPAddressName, parameters, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "CreateOrUpdate", nil, "Failure preparing request") - } - - resp, err := client.CreateOrUpdateSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "CreateOrUpdate", resp, "Failure sending request") - } - - result, err = client.CreateOrUpdateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "CreateOrUpdate", resp, "Failure responding to request") - } - - return -} - -// CreateOrUpdatePreparer prepares the CreateOrUpdate request. -func (client PublicIPAddressesClient) CreateOrUpdatePreparer(resourceGroupName string, publicIPAddressName string, parameters PublicIPAddress, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "publicIpAddressName": url.QueryEscape(publicIPAddressName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the -// http.Response Body if it receives an error. -func (client PublicIPAddressesClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always -// closes the http.Response Body. -func (client PublicIPAddressesClient) CreateOrUpdateResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusCreated, http.StatusOK), - autorest.ByClosing()) - result.Response = resp - return -} - -// Delete the delete publicIpAddress operation deletes the specified -// publicIpAddress. This method may poll for completion. Polling can be -// canceled by passing the cancel channel argument. The channel will be used -// to cancel polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. publicIPAddressName is -// the name of the subnet. -func (client PublicIPAddressesClient) Delete(resourceGroupName string, publicIPAddressName string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.DeletePreparer(resourceGroupName, publicIPAddressName, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "Delete", nil, "Failure preparing request") - } - - resp, err := client.DeleteSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "Delete", resp, "Failure sending request") - } - - result, err = client.DeleteResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "Delete", resp, "Failure responding to request") - } - - return -} - -// DeletePreparer prepares the Delete request. -func (client PublicIPAddressesClient) DeletePreparer(resourceGroupName string, publicIPAddressName string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "publicIpAddressName": url.QueryEscape(publicIPAddressName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteSender sends the Delete request. The method will close the -// http.Response Body if it receives an error. -func (client PublicIPAddressesClient) DeleteSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// DeleteResponder handles the response to the Delete request. The method always -// closes the http.Response Body. -func (client PublicIPAddressesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusNoContent, http.StatusAccepted, http.StatusOK), - autorest.ByClosing()) - result.Response = resp - return -} - -// Get the Get publicIpAddress operation retreives information about the -// specified pubicIpAddress -// -// resourceGroupName is the name of the resource group. publicIPAddressName is -// the name of the subnet. expand is expand references resources. -func (client PublicIPAddressesClient) Get(resourceGroupName string, publicIPAddressName string, expand string) (result PublicIPAddress, err error) { - req, err := client.GetPreparer(resourceGroupName, publicIPAddressName, expand) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client PublicIPAddressesClient) GetPreparer(resourceGroupName string, publicIPAddressName string, expand string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "publicIpAddressName": url.QueryEscape(publicIPAddressName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - if len(expand) > 0 { - queryParameters["$expand"] = expand - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses/{publicIpAddressName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client PublicIPAddressesClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client PublicIPAddressesClient) GetResponder(resp *http.Response) (result PublicIPAddress, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List the List publicIpAddress opertion retrieves all the publicIpAddresses -// in a resource group. -// -// resourceGroupName is the name of the resource group. -func (client PublicIPAddressesClient) List(resourceGroupName string) (result PublicIPAddressListResult, err error) { - req, err := client.ListPreparer(resourceGroupName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client PublicIPAddressesClient) ListPreparer(resourceGroupName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPAddresses"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client PublicIPAddressesClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client PublicIPAddressesClient) ListResponder(resp *http.Response) (result PublicIPAddressListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client PublicIPAddressesClient) ListNextResults(lastResults PublicIPAddressListResult) (result PublicIPAddressListResult, err error) { - req, err := lastResults.PublicIPAddressListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "List", resp, "Failure responding to next results request request") - } - - return -} - -// ListAll the List publicIpAddress opertion retrieves all the -// publicIpAddresses in a subscription. -func (client PublicIPAddressesClient) ListAll() (result PublicIPAddressListResult, err error) { - req, err := client.ListAllPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "ListAll", nil, "Failure preparing request") - } - - resp, err := client.ListAllSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "ListAll", resp, "Failure sending request") - } - - result, err = client.ListAllResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "ListAll", resp, "Failure responding to request") - } - - return -} - -// ListAllPreparer prepares the ListAll request. -func (client PublicIPAddressesClient) ListAllPreparer() (*http.Request, error) { - pathParameters := map[string]interface{}{ - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Network/publicIPAddresses"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListAllSender sends the ListAll request. The method will close the -// http.Response Body if it receives an error. -func (client PublicIPAddressesClient) ListAllSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListAllResponder handles the response to the ListAll request. The method always -// closes the http.Response Body. -func (client PublicIPAddressesClient) ListAllResponder(resp *http.Response) (result PublicIPAddressListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListAllNextResults retrieves the next set of results, if any. -func (client PublicIPAddressesClient) ListAllNextResults(lastResults PublicIPAddressListResult) (result PublicIPAddressListResult, err error) { - req, err := lastResults.PublicIPAddressListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "ListAll", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListAllSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "ListAll", resp, "Failure sending next results request request") - } - - result, err = client.ListAllResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.PublicIPAddressesClient", "ListAll", resp, "Failure responding to next results request request") - } - - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/routes.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/routes.go deleted file mode 100644 index 624b26b2..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/routes.go +++ /dev/null @@ -1,340 +0,0 @@ -package network - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// RoutesClient is the the Microsoft Azure Network management API provides a -// RESTful set of web services that interact with Microsoft Azure Networks -// service to manage your network resrources. The API has entities that -// capture the relationship between an end user and the Microsoft Azure -// Networks service. -type RoutesClient struct { - ManagementClient -} - -// NewRoutesClient creates an instance of the RoutesClient client. -func NewRoutesClient(subscriptionID string) RoutesClient { - return NewRoutesClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewRoutesClientWithBaseURI creates an instance of the RoutesClient client. -func NewRoutesClientWithBaseURI(baseURI string, subscriptionID string) RoutesClient { - return RoutesClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// CreateOrUpdate the Put route operation creates/updates a route in the -// specified route table This method may poll for completion. Polling can be -// canceled by passing the cancel channel argument. The channel will be used -// to cancel polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. routeTableName is the -// name of the route table. routeName is the name of the route. -// routeParameters is parameters supplied to the create/update routeoperation -func (client RoutesClient) CreateOrUpdate(resourceGroupName string, routeTableName string, routeName string, routeParameters Route, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.CreateOrUpdatePreparer(resourceGroupName, routeTableName, routeName, routeParameters, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.RoutesClient", "CreateOrUpdate", nil, "Failure preparing request") - } - - resp, err := client.CreateOrUpdateSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.RoutesClient", "CreateOrUpdate", resp, "Failure sending request") - } - - result, err = client.CreateOrUpdateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.RoutesClient", "CreateOrUpdate", resp, "Failure responding to request") - } - - return -} - -// CreateOrUpdatePreparer prepares the CreateOrUpdate request. -func (client RoutesClient) CreateOrUpdatePreparer(resourceGroupName string, routeTableName string, routeName string, routeParameters Route, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "routeName": url.QueryEscape(routeName), - "routeTableName": url.QueryEscape(routeTableName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes/{routeName}"), - autorest.WithJSON(routeParameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the -// http.Response Body if it receives an error. -func (client RoutesClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always -// closes the http.Response Body. -func (client RoutesClient) CreateOrUpdateResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), - autorest.ByClosing()) - result.Response = resp - return -} - -// Delete the delete route operation deletes the specified route from a route -// table. This method may poll for completion. Polling can be canceled by -// passing the cancel channel argument. The channel will be used to cancel -// polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. routeTableName is the -// name of the route table. routeName is the name of the route. -func (client RoutesClient) Delete(resourceGroupName string, routeTableName string, routeName string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.DeletePreparer(resourceGroupName, routeTableName, routeName, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.RoutesClient", "Delete", nil, "Failure preparing request") - } - - resp, err := client.DeleteSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.RoutesClient", "Delete", resp, "Failure sending request") - } - - result, err = client.DeleteResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.RoutesClient", "Delete", resp, "Failure responding to request") - } - - return -} - -// DeletePreparer prepares the Delete request. -func (client RoutesClient) DeletePreparer(resourceGroupName string, routeTableName string, routeName string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "routeName": url.QueryEscape(routeName), - "routeTableName": url.QueryEscape(routeTableName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes/{routeName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteSender sends the Delete request. The method will close the -// http.Response Body if it receives an error. -func (client RoutesClient) DeleteSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// DeleteResponder handles the response to the Delete request. The method always -// closes the http.Response Body. -func (client RoutesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusAccepted, http.StatusOK, http.StatusNoContent), - autorest.ByClosing()) - result.Response = resp - return -} - -// Get the Get route operation retreives information about the specified route -// from the route table. -// -// resourceGroupName is the name of the resource group. routeTableName is the -// name of the route table. routeName is the name of the route. -func (client RoutesClient) Get(resourceGroupName string, routeTableName string, routeName string) (result Route, err error) { - req, err := client.GetPreparer(resourceGroupName, routeTableName, routeName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.RoutesClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.RoutesClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.RoutesClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client RoutesClient) GetPreparer(resourceGroupName string, routeTableName string, routeName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "routeName": url.QueryEscape(routeName), - "routeTableName": url.QueryEscape(routeTableName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes/{routeName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client RoutesClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client RoutesClient) GetResponder(resp *http.Response) (result Route, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List the List network security rule opertion retrieves all the routes in a -// route table. -// -// resourceGroupName is the name of the resource group. routeTableName is the -// name of the route table. -func (client RoutesClient) List(resourceGroupName string, routeTableName string) (result RouteListResult, err error) { - req, err := client.ListPreparer(resourceGroupName, routeTableName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.RoutesClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.RoutesClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.RoutesClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client RoutesClient) ListPreparer(resourceGroupName string, routeTableName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "routeTableName": url.QueryEscape(routeTableName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client RoutesClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client RoutesClient) ListResponder(resp *http.Response) (result RouteListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client RoutesClient) ListNextResults(lastResults RouteListResult) (result RouteListResult, err error) { - req, err := lastResults.RouteListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.RoutesClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.RoutesClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.RoutesClient", "List", resp, "Failure responding to next results request request") - } - - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/routetables.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/routetables.go deleted file mode 100644 index 9008d4e0..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/routetables.go +++ /dev/null @@ -1,421 +0,0 @@ -package network - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// RouteTablesClient is the the Microsoft Azure Network management API -// provides a RESTful set of web services that interact with Microsoft Azure -// Networks service to manage your network resrources. The API has entities -// that capture the relationship between an end user and the Microsoft Azure -// Networks service. -type RouteTablesClient struct { - ManagementClient -} - -// NewRouteTablesClient creates an instance of the RouteTablesClient client. -func NewRouteTablesClient(subscriptionID string) RouteTablesClient { - return NewRouteTablesClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewRouteTablesClientWithBaseURI creates an instance of the -// RouteTablesClient client. -func NewRouteTablesClientWithBaseURI(baseURI string, subscriptionID string) RouteTablesClient { - return RouteTablesClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// CreateOrUpdate the Put RouteTable operation creates/updates a route tablein -// the specified resource group. This method may poll for completion. Polling -// can be canceled by passing the cancel channel argument. The channel will -// be used to cancel polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. routeTableName is the -// name of the route table. parameters is parameters supplied to the -// create/update Route Table operation -func (client RouteTablesClient) CreateOrUpdate(resourceGroupName string, routeTableName string, parameters RouteTable, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.CreateOrUpdatePreparer(resourceGroupName, routeTableName, parameters, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.RouteTablesClient", "CreateOrUpdate", nil, "Failure preparing request") - } - - resp, err := client.CreateOrUpdateSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.RouteTablesClient", "CreateOrUpdate", resp, "Failure sending request") - } - - result, err = client.CreateOrUpdateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "CreateOrUpdate", resp, "Failure responding to request") - } - - return -} - -// CreateOrUpdatePreparer prepares the CreateOrUpdate request. -func (client RouteTablesClient) CreateOrUpdatePreparer(resourceGroupName string, routeTableName string, parameters RouteTable, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "routeTableName": url.QueryEscape(routeTableName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the -// http.Response Body if it receives an error. -func (client RouteTablesClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always -// closes the http.Response Body. -func (client RouteTablesClient) CreateOrUpdateResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), - autorest.ByClosing()) - result.Response = resp - return -} - -// Delete the Delete RouteTable operation deletes the specifed Route Table -// This method may poll for completion. Polling can be canceled by passing -// the cancel channel argument. The channel will be used to cancel polling -// and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. routeTableName is the -// name of the route table. -func (client RouteTablesClient) Delete(resourceGroupName string, routeTableName string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.DeletePreparer(resourceGroupName, routeTableName, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.RouteTablesClient", "Delete", nil, "Failure preparing request") - } - - resp, err := client.DeleteSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.RouteTablesClient", "Delete", resp, "Failure sending request") - } - - result, err = client.DeleteResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "Delete", resp, "Failure responding to request") - } - - return -} - -// DeletePreparer prepares the Delete request. -func (client RouteTablesClient) DeletePreparer(resourceGroupName string, routeTableName string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "routeTableName": url.QueryEscape(routeTableName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteSender sends the Delete request. The method will close the -// http.Response Body if it receives an error. -func (client RouteTablesClient) DeleteSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// DeleteResponder handles the response to the Delete request. The method always -// closes the http.Response Body. -func (client RouteTablesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusNoContent, http.StatusOK, http.StatusAccepted), - autorest.ByClosing()) - result.Response = resp - return -} - -// Get the Get RouteTables operation retrieves information about the specified -// route table. -// -// resourceGroupName is the name of the resource group. routeTableName is the -// name of the route table. expand is expand references resources. -func (client RouteTablesClient) Get(resourceGroupName string, routeTableName string, expand string) (result RouteTable, err error) { - req, err := client.GetPreparer(resourceGroupName, routeTableName, expand) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.RouteTablesClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.RouteTablesClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client RouteTablesClient) GetPreparer(resourceGroupName string, routeTableName string, expand string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "routeTableName": url.QueryEscape(routeTableName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - if len(expand) > 0 { - queryParameters["$expand"] = expand - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client RouteTablesClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client RouteTablesClient) GetResponder(resp *http.Response) (result RouteTable, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List the list RouteTables returns all route tables in a resource group -// -// resourceGroupName is the name of the resource group. -func (client RouteTablesClient) List(resourceGroupName string) (result RouteTableListResult, err error) { - req, err := client.ListPreparer(resourceGroupName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.RouteTablesClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.RouteTablesClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client RouteTablesClient) ListPreparer(resourceGroupName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client RouteTablesClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client RouteTablesClient) ListResponder(resp *http.Response) (result RouteTableListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client RouteTablesClient) ListNextResults(lastResults RouteTableListResult) (result RouteTableListResult, err error) { - req, err := lastResults.RouteTableListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.RouteTablesClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.RouteTablesClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "List", resp, "Failure responding to next results request request") - } - - return -} - -// ListAll the list RouteTables returns all route tables in a subscription -func (client RouteTablesClient) ListAll() (result RouteTableListResult, err error) { - req, err := client.ListAllPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.RouteTablesClient", "ListAll", nil, "Failure preparing request") - } - - resp, err := client.ListAllSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.RouteTablesClient", "ListAll", resp, "Failure sending request") - } - - result, err = client.ListAllResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "ListAll", resp, "Failure responding to request") - } - - return -} - -// ListAllPreparer prepares the ListAll request. -func (client RouteTablesClient) ListAllPreparer() (*http.Request, error) { - pathParameters := map[string]interface{}{ - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Network/routeTables"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListAllSender sends the ListAll request. The method will close the -// http.Response Body if it receives an error. -func (client RouteTablesClient) ListAllSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListAllResponder handles the response to the ListAll request. The method always -// closes the http.Response Body. -func (client RouteTablesClient) ListAllResponder(resp *http.Response) (result RouteTableListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListAllNextResults retrieves the next set of results, if any. -func (client RouteTablesClient) ListAllNextResults(lastResults RouteTableListResult) (result RouteTableListResult, err error) { - req, err := lastResults.RouteTableListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.RouteTablesClient", "ListAll", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListAllSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.RouteTablesClient", "ListAll", resp, "Failure sending next results request request") - } - - result, err = client.ListAllResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.RouteTablesClient", "ListAll", resp, "Failure responding to next results request request") - } - - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/securitygroups.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/securitygroups.go deleted file mode 100644 index 0b834af9..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/securitygroups.go +++ /dev/null @@ -1,427 +0,0 @@ -package network - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// SecurityGroupsClient is the the Microsoft Azure Network management API -// provides a RESTful set of web services that interact with Microsoft Azure -// Networks service to manage your network resrources. The API has entities -// that capture the relationship between an end user and the Microsoft Azure -// Networks service. -type SecurityGroupsClient struct { - ManagementClient -} - -// NewSecurityGroupsClient creates an instance of the SecurityGroupsClient -// client. -func NewSecurityGroupsClient(subscriptionID string) SecurityGroupsClient { - return NewSecurityGroupsClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewSecurityGroupsClientWithBaseURI creates an instance of the -// SecurityGroupsClient client. -func NewSecurityGroupsClientWithBaseURI(baseURI string, subscriptionID string) SecurityGroupsClient { - return SecurityGroupsClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// CreateOrUpdate the Put NetworkSecurityGroup operation creates/updates a -// network security groupin the specified resource group. This method may -// poll for completion. Polling can be canceled by passing the cancel channel -// argument. The channel will be used to cancel polling and any outstanding -// HTTP requests. -// -// resourceGroupName is the name of the resource group. -// networkSecurityGroupName is the name of the network security group. -// parameters is parameters supplied to the create/update Network Security -// Group operation -func (client SecurityGroupsClient) CreateOrUpdate(resourceGroupName string, networkSecurityGroupName string, parameters SecurityGroup, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.CreateOrUpdatePreparer(resourceGroupName, networkSecurityGroupName, parameters, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "CreateOrUpdate", nil, "Failure preparing request") - } - - resp, err := client.CreateOrUpdateSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "CreateOrUpdate", resp, "Failure sending request") - } - - result, err = client.CreateOrUpdateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "CreateOrUpdate", resp, "Failure responding to request") - } - - return -} - -// CreateOrUpdatePreparer prepares the CreateOrUpdate request. -func (client SecurityGroupsClient) CreateOrUpdatePreparer(resourceGroupName string, networkSecurityGroupName string, parameters SecurityGroup, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "networkSecurityGroupName": url.QueryEscape(networkSecurityGroupName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the -// http.Response Body if it receives an error. -func (client SecurityGroupsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always -// closes the http.Response Body. -func (client SecurityGroupsClient) CreateOrUpdateResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusCreated, http.StatusOK), - autorest.ByClosing()) - result.Response = resp - return -} - -// Delete the Delete NetworkSecurityGroup operation deletes the specifed -// network security group This method may poll for completion. Polling can be -// canceled by passing the cancel channel argument. The channel will be used -// to cancel polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. -// networkSecurityGroupName is the name of the network security group. -func (client SecurityGroupsClient) Delete(resourceGroupName string, networkSecurityGroupName string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.DeletePreparer(resourceGroupName, networkSecurityGroupName, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "Delete", nil, "Failure preparing request") - } - - resp, err := client.DeleteSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "Delete", resp, "Failure sending request") - } - - result, err = client.DeleteResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "Delete", resp, "Failure responding to request") - } - - return -} - -// DeletePreparer prepares the Delete request. -func (client SecurityGroupsClient) DeletePreparer(resourceGroupName string, networkSecurityGroupName string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "networkSecurityGroupName": url.QueryEscape(networkSecurityGroupName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteSender sends the Delete request. The method will close the -// http.Response Body if it receives an error. -func (client SecurityGroupsClient) DeleteSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// DeleteResponder handles the response to the Delete request. The method always -// closes the http.Response Body. -func (client SecurityGroupsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusAccepted, http.StatusOK, http.StatusNoContent), - autorest.ByClosing()) - result.Response = resp - return -} - -// Get the Get NetworkSecurityGroups operation retrieves information about the -// specified network security group. -// -// resourceGroupName is the name of the resource group. -// networkSecurityGroupName is the name of the network security group. expand -// is expand references resources. -func (client SecurityGroupsClient) Get(resourceGroupName string, networkSecurityGroupName string, expand string) (result SecurityGroup, err error) { - req, err := client.GetPreparer(resourceGroupName, networkSecurityGroupName, expand) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client SecurityGroupsClient) GetPreparer(resourceGroupName string, networkSecurityGroupName string, expand string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "networkSecurityGroupName": url.QueryEscape(networkSecurityGroupName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - if len(expand) > 0 { - queryParameters["$expand"] = expand - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client SecurityGroupsClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client SecurityGroupsClient) GetResponder(resp *http.Response) (result SecurityGroup, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List the list NetworkSecurityGroups returns all network security groups in -// a resource group -// -// resourceGroupName is the name of the resource group. -func (client SecurityGroupsClient) List(resourceGroupName string) (result SecurityGroupListResult, err error) { - req, err := client.ListPreparer(resourceGroupName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client SecurityGroupsClient) ListPreparer(resourceGroupName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client SecurityGroupsClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client SecurityGroupsClient) ListResponder(resp *http.Response) (result SecurityGroupListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client SecurityGroupsClient) ListNextResults(lastResults SecurityGroupListResult) (result SecurityGroupListResult, err error) { - req, err := lastResults.SecurityGroupListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "List", resp, "Failure responding to next results request request") - } - - return -} - -// ListAll the list NetworkSecurityGroups returns all network security groups -// in a subscription -func (client SecurityGroupsClient) ListAll() (result SecurityGroupListResult, err error) { - req, err := client.ListAllPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "ListAll", nil, "Failure preparing request") - } - - resp, err := client.ListAllSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "ListAll", resp, "Failure sending request") - } - - result, err = client.ListAllResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "ListAll", resp, "Failure responding to request") - } - - return -} - -// ListAllPreparer prepares the ListAll request. -func (client SecurityGroupsClient) ListAllPreparer() (*http.Request, error) { - pathParameters := map[string]interface{}{ - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Network/networkSecurityGroups"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListAllSender sends the ListAll request. The method will close the -// http.Response Body if it receives an error. -func (client SecurityGroupsClient) ListAllSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListAllResponder handles the response to the ListAll request. The method always -// closes the http.Response Body. -func (client SecurityGroupsClient) ListAllResponder(resp *http.Response) (result SecurityGroupListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListAllNextResults retrieves the next set of results, if any. -func (client SecurityGroupsClient) ListAllNextResults(lastResults SecurityGroupListResult) (result SecurityGroupListResult, err error) { - req, err := lastResults.SecurityGroupListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "ListAll", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListAllSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "ListAll", resp, "Failure sending next results request request") - } - - result, err = client.ListAllResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.SecurityGroupsClient", "ListAll", resp, "Failure responding to next results request request") - } - - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/securityrules.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/securityrules.go deleted file mode 100644 index 8cf5e3cc..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/securityrules.go +++ /dev/null @@ -1,347 +0,0 @@ -package network - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// SecurityRulesClient is the the Microsoft Azure Network management API -// provides a RESTful set of web services that interact with Microsoft Azure -// Networks service to manage your network resrources. The API has entities -// that capture the relationship between an end user and the Microsoft Azure -// Networks service. -type SecurityRulesClient struct { - ManagementClient -} - -// NewSecurityRulesClient creates an instance of the SecurityRulesClient -// client. -func NewSecurityRulesClient(subscriptionID string) SecurityRulesClient { - return NewSecurityRulesClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewSecurityRulesClientWithBaseURI creates an instance of the -// SecurityRulesClient client. -func NewSecurityRulesClientWithBaseURI(baseURI string, subscriptionID string) SecurityRulesClient { - return SecurityRulesClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// CreateOrUpdate the Put network security rule operation creates/updates a -// security rule in the specified network security group This method may poll -// for completion. Polling can be canceled by passing the cancel channel -// argument. The channel will be used to cancel polling and any outstanding -// HTTP requests. -// -// resourceGroupName is the name of the resource group. -// networkSecurityGroupName is the name of the network security group. -// securityRuleName is the name of the security rule. securityRuleParameters -// is parameters supplied to the create/update network security rule -// operation -func (client SecurityRulesClient) CreateOrUpdate(resourceGroupName string, networkSecurityGroupName string, securityRuleName string, securityRuleParameters SecurityRule, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.CreateOrUpdatePreparer(resourceGroupName, networkSecurityGroupName, securityRuleName, securityRuleParameters, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.SecurityRulesClient", "CreateOrUpdate", nil, "Failure preparing request") - } - - resp, err := client.CreateOrUpdateSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.SecurityRulesClient", "CreateOrUpdate", resp, "Failure sending request") - } - - result, err = client.CreateOrUpdateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.SecurityRulesClient", "CreateOrUpdate", resp, "Failure responding to request") - } - - return -} - -// CreateOrUpdatePreparer prepares the CreateOrUpdate request. -func (client SecurityRulesClient) CreateOrUpdatePreparer(resourceGroupName string, networkSecurityGroupName string, securityRuleName string, securityRuleParameters SecurityRule, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "networkSecurityGroupName": url.QueryEscape(networkSecurityGroupName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "securityRuleName": url.QueryEscape(securityRuleName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules/{securityRuleName}"), - autorest.WithJSON(securityRuleParameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the -// http.Response Body if it receives an error. -func (client SecurityRulesClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always -// closes the http.Response Body. -func (client SecurityRulesClient) CreateOrUpdateResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), - autorest.ByClosing()) - result.Response = resp - return -} - -// Delete the delete network security rule operation deletes the specified -// network security rule. This method may poll for completion. Polling can be -// canceled by passing the cancel channel argument. The channel will be used -// to cancel polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. -// networkSecurityGroupName is the name of the network security group. -// securityRuleName is the name of the security rule. -func (client SecurityRulesClient) Delete(resourceGroupName string, networkSecurityGroupName string, securityRuleName string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.DeletePreparer(resourceGroupName, networkSecurityGroupName, securityRuleName, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.SecurityRulesClient", "Delete", nil, "Failure preparing request") - } - - resp, err := client.DeleteSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.SecurityRulesClient", "Delete", resp, "Failure sending request") - } - - result, err = client.DeleteResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.SecurityRulesClient", "Delete", resp, "Failure responding to request") - } - - return -} - -// DeletePreparer prepares the Delete request. -func (client SecurityRulesClient) DeletePreparer(resourceGroupName string, networkSecurityGroupName string, securityRuleName string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "networkSecurityGroupName": url.QueryEscape(networkSecurityGroupName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "securityRuleName": url.QueryEscape(securityRuleName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules/{securityRuleName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteSender sends the Delete request. The method will close the -// http.Response Body if it receives an error. -func (client SecurityRulesClient) DeleteSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// DeleteResponder handles the response to the Delete request. The method always -// closes the http.Response Body. -func (client SecurityRulesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusNoContent, http.StatusAccepted, http.StatusOK), - autorest.ByClosing()) - result.Response = resp - return -} - -// Get the Get NetworkSecurityRule operation retreives information about the -// specified network security rule. -// -// resourceGroupName is the name of the resource group. -// networkSecurityGroupName is the name of the network security group. -// securityRuleName is the name of the security rule. -func (client SecurityRulesClient) Get(resourceGroupName string, networkSecurityGroupName string, securityRuleName string) (result SecurityRule, err error) { - req, err := client.GetPreparer(resourceGroupName, networkSecurityGroupName, securityRuleName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.SecurityRulesClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.SecurityRulesClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.SecurityRulesClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client SecurityRulesClient) GetPreparer(resourceGroupName string, networkSecurityGroupName string, securityRuleName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "networkSecurityGroupName": url.QueryEscape(networkSecurityGroupName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "securityRuleName": url.QueryEscape(securityRuleName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules/{securityRuleName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client SecurityRulesClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client SecurityRulesClient) GetResponder(resp *http.Response) (result SecurityRule, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List the List network security rule opertion retrieves all the security -// rules in a network security group. -// -// resourceGroupName is the name of the resource group. -// networkSecurityGroupName is the name of the network security group. -func (client SecurityRulesClient) List(resourceGroupName string, networkSecurityGroupName string) (result SecurityRuleListResult, err error) { - req, err := client.ListPreparer(resourceGroupName, networkSecurityGroupName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.SecurityRulesClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.SecurityRulesClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.SecurityRulesClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client SecurityRulesClient) ListPreparer(resourceGroupName string, networkSecurityGroupName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "networkSecurityGroupName": url.QueryEscape(networkSecurityGroupName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkSecurityGroups/{networkSecurityGroupName}/securityRules"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client SecurityRulesClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client SecurityRulesClient) ListResponder(resp *http.Response) (result SecurityRuleListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client SecurityRulesClient) ListNextResults(lastResults SecurityRuleListResult) (result SecurityRuleListResult, err error) { - req, err := lastResults.SecurityRuleListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.SecurityRulesClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.SecurityRulesClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.SecurityRulesClient", "List", resp, "Failure responding to next results request request") - } - - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/subnets.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/subnets.go deleted file mode 100644 index 1c75a276..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/subnets.go +++ /dev/null @@ -1,345 +0,0 @@ -package network - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// SubnetsClient is the the Microsoft Azure Network management API provides a -// RESTful set of web services that interact with Microsoft Azure Networks -// service to manage your network resrources. The API has entities that -// capture the relationship between an end user and the Microsoft Azure -// Networks service. -type SubnetsClient struct { - ManagementClient -} - -// NewSubnetsClient creates an instance of the SubnetsClient client. -func NewSubnetsClient(subscriptionID string) SubnetsClient { - return NewSubnetsClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewSubnetsClientWithBaseURI creates an instance of the SubnetsClient client. -func NewSubnetsClientWithBaseURI(baseURI string, subscriptionID string) SubnetsClient { - return SubnetsClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// CreateOrUpdate the Put Subnet operation creates/updates a subnet in -// thespecified virtual network This method may poll for completion. Polling -// can be canceled by passing the cancel channel argument. The channel will -// be used to cancel polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. virtualNetworkName is -// the name of the virtual network. subnetName is the name of the subnet. -// subnetParameters is parameters supplied to the create/update Subnet -// operation -func (client SubnetsClient) CreateOrUpdate(resourceGroupName string, virtualNetworkName string, subnetName string, subnetParameters Subnet, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.CreateOrUpdatePreparer(resourceGroupName, virtualNetworkName, subnetName, subnetParameters, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.SubnetsClient", "CreateOrUpdate", nil, "Failure preparing request") - } - - resp, err := client.CreateOrUpdateSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.SubnetsClient", "CreateOrUpdate", resp, "Failure sending request") - } - - result, err = client.CreateOrUpdateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.SubnetsClient", "CreateOrUpdate", resp, "Failure responding to request") - } - - return -} - -// CreateOrUpdatePreparer prepares the CreateOrUpdate request. -func (client SubnetsClient) CreateOrUpdatePreparer(resourceGroupName string, virtualNetworkName string, subnetName string, subnetParameters Subnet, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subnetName": url.QueryEscape(subnetName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "virtualNetworkName": url.QueryEscape(virtualNetworkName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualnetworks/{virtualNetworkName}/subnets/{subnetName}"), - autorest.WithJSON(subnetParameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the -// http.Response Body if it receives an error. -func (client SubnetsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always -// closes the http.Response Body. -func (client SubnetsClient) CreateOrUpdateResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), - autorest.ByClosing()) - result.Response = resp - return -} - -// Delete the delete subnet operation deletes the specified subnet. This -// method may poll for completion. Polling can be canceled by passing the -// cancel channel argument. The channel will be used to cancel polling and -// any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. virtualNetworkName is -// the name of the virtual network. subnetName is the name of the subnet. -func (client SubnetsClient) Delete(resourceGroupName string, virtualNetworkName string, subnetName string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.DeletePreparer(resourceGroupName, virtualNetworkName, subnetName, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.SubnetsClient", "Delete", nil, "Failure preparing request") - } - - resp, err := client.DeleteSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.SubnetsClient", "Delete", resp, "Failure sending request") - } - - result, err = client.DeleteResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.SubnetsClient", "Delete", resp, "Failure responding to request") - } - - return -} - -// DeletePreparer prepares the Delete request. -func (client SubnetsClient) DeletePreparer(resourceGroupName string, virtualNetworkName string, subnetName string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subnetName": url.QueryEscape(subnetName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "virtualNetworkName": url.QueryEscape(virtualNetworkName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualnetworks/{virtualNetworkName}/subnets/{subnetName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteSender sends the Delete request. The method will close the -// http.Response Body if it receives an error. -func (client SubnetsClient) DeleteSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// DeleteResponder handles the response to the Delete request. The method always -// closes the http.Response Body. -func (client SubnetsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent, http.StatusAccepted), - autorest.ByClosing()) - result.Response = resp - return -} - -// Get the Get subnet operation retreives information about the specified -// subnet. -// -// resourceGroupName is the name of the resource group. virtualNetworkName is -// the name of the virtual network. subnetName is the name of the subnet. -// expand is expand references resources. -func (client SubnetsClient) Get(resourceGroupName string, virtualNetworkName string, subnetName string, expand string) (result Subnet, err error) { - req, err := client.GetPreparer(resourceGroupName, virtualNetworkName, subnetName, expand) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.SubnetsClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.SubnetsClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.SubnetsClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client SubnetsClient) GetPreparer(resourceGroupName string, virtualNetworkName string, subnetName string, expand string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subnetName": url.QueryEscape(subnetName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "virtualNetworkName": url.QueryEscape(virtualNetworkName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - if len(expand) > 0 { - queryParameters["$expand"] = expand - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualnetworks/{virtualNetworkName}/subnets/{subnetName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client SubnetsClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client SubnetsClient) GetResponder(resp *http.Response) (result Subnet, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List the List subnets opertion retrieves all the subnets in a virtual -// network. -// -// resourceGroupName is the name of the resource group. virtualNetworkName is -// the name of the virtual network. -func (client SubnetsClient) List(resourceGroupName string, virtualNetworkName string) (result SubnetListResult, err error) { - req, err := client.ListPreparer(resourceGroupName, virtualNetworkName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.SubnetsClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.SubnetsClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.SubnetsClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client SubnetsClient) ListPreparer(resourceGroupName string, virtualNetworkName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "virtualNetworkName": url.QueryEscape(virtualNetworkName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualnetworks/{virtualNetworkName}/subnets"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client SubnetsClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client SubnetsClient) ListResponder(resp *http.Response) (result SubnetListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client SubnetsClient) ListNextResults(lastResults SubnetListResult) (result SubnetListResult, err error) { - req, err := lastResults.SubnetListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.SubnetsClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.SubnetsClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.SubnetsClient", "List", resp, "Failure responding to next results request request") - } - - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/usages.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/usages.go deleted file mode 100644 index 3b2236ca..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/usages.go +++ /dev/null @@ -1,131 +0,0 @@ -package network - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// UsagesClient is the the Microsoft Azure Network management API provides a -// RESTful set of web services that interact with Microsoft Azure Networks -// service to manage your network resrources. The API has entities that -// capture the relationship between an end user and the Microsoft Azure -// Networks service. -type UsagesClient struct { - ManagementClient -} - -// NewUsagesClient creates an instance of the UsagesClient client. -func NewUsagesClient(subscriptionID string) UsagesClient { - return NewUsagesClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewUsagesClientWithBaseURI creates an instance of the UsagesClient client. -func NewUsagesClientWithBaseURI(baseURI string, subscriptionID string) UsagesClient { - return UsagesClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// List lists compute usages for a subscription. -// -// location is the location upon which resource usage is queried. -func (client UsagesClient) List(location string) (result UsagesListResult, err error) { - req, err := client.ListPreparer(location) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.UsagesClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.UsagesClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.UsagesClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client UsagesClient) ListPreparer(location string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "location": url.QueryEscape(location), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/usages"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client UsagesClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client UsagesClient) ListResponder(resp *http.Response) (result UsagesListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client UsagesClient) ListNextResults(lastResults UsagesListResult) (result UsagesListResult, err error) { - req, err := lastResults.UsagesListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.UsagesClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.UsagesClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.UsagesClient", "List", resp, "Failure responding to next results request request") - } - - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/version.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/version.go deleted file mode 100644 index 16e3c74f..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/version.go +++ /dev/null @@ -1,43 +0,0 @@ -package network - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "fmt" -) - -const ( - major = "2" - minor = "1" - patch = "1" - // Always begin a "tag" with a dash (as per http://semver.org) - tag = "-beta" - semVerFormat = "%s.%s.%s%s" - userAgentFormat = "Azure-SDK-for-Go/%s arm-%s/%s" -) - -// UserAgent returns the UserAgent string to use when sending http.Requests. -func UserAgent() string { - return fmt.Sprintf(userAgentFormat, Version(), "network", "2015-06-15") -} - -// Version returns the semantic version (see http://semver.org) of the client. -func Version() string { - return fmt.Sprintf(semVerFormat, major, minor, patch, tag) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/virtualnetworkgatewayconnections.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/virtualnetworkgatewayconnections.go deleted file mode 100644 index 2094cb2e..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/virtualnetworkgatewayconnections.go +++ /dev/null @@ -1,560 +0,0 @@ -package network - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// VirtualNetworkGatewayConnectionsClient is the the Microsoft Azure Network -// management API provides a RESTful set of web services that interact with -// Microsoft Azure Networks service to manage your network resrources. The -// API has entities that capture the relationship between an end user and the -// Microsoft Azure Networks service. -type VirtualNetworkGatewayConnectionsClient struct { - ManagementClient -} - -// NewVirtualNetworkGatewayConnectionsClient creates an instance of the -// VirtualNetworkGatewayConnectionsClient client. -func NewVirtualNetworkGatewayConnectionsClient(subscriptionID string) VirtualNetworkGatewayConnectionsClient { - return NewVirtualNetworkGatewayConnectionsClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewVirtualNetworkGatewayConnectionsClientWithBaseURI creates an instance of -// the VirtualNetworkGatewayConnectionsClient client. -func NewVirtualNetworkGatewayConnectionsClientWithBaseURI(baseURI string, subscriptionID string) VirtualNetworkGatewayConnectionsClient { - return VirtualNetworkGatewayConnectionsClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// CreateOrUpdate the Put VirtualNetworkGatewayConnection operation -// creates/updates a virtual network gateway connection in the specified -// resource group through Network resource provider. This method may poll for -// completion. Polling can be canceled by passing the cancel channel -// argument. The channel will be used to cancel polling and any outstanding -// HTTP requests. -// -// resourceGroupName is the name of the resource group. -// virtualNetworkGatewayConnectionName is the name of the virtual network -// gateway conenction. parameters is parameters supplied to the Begin Create -// or update Virtual Network Gateway connection operation through Network -// resource provider. -func (client VirtualNetworkGatewayConnectionsClient) CreateOrUpdate(resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters VirtualNetworkGatewayConnection, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.CreateOrUpdatePreparer(resourceGroupName, virtualNetworkGatewayConnectionName, parameters, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "CreateOrUpdate", nil, "Failure preparing request") - } - - resp, err := client.CreateOrUpdateSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "CreateOrUpdate", resp, "Failure sending request") - } - - result, err = client.CreateOrUpdateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "CreateOrUpdate", resp, "Failure responding to request") - } - - return -} - -// CreateOrUpdatePreparer prepares the CreateOrUpdate request. -func (client VirtualNetworkGatewayConnectionsClient) CreateOrUpdatePreparer(resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters VirtualNetworkGatewayConnection, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "virtualNetworkGatewayConnectionName": url.QueryEscape(virtualNetworkGatewayConnectionName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualNetworkGatewayConnectionsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always -// closes the http.Response Body. -func (client VirtualNetworkGatewayConnectionsClient) CreateOrUpdateResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), - autorest.ByClosing()) - result.Response = resp - return -} - -// Delete the Delete VirtualNetworkGatewayConnection operation deletes the -// specifed virtual network Gateway connection through Network resource -// provider. This method may poll for completion. Polling can be canceled by -// passing the cancel channel argument. The channel will be used to cancel -// polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. -// virtualNetworkGatewayConnectionName is the name of the virtual network -// gateway connection. -func (client VirtualNetworkGatewayConnectionsClient) Delete(resourceGroupName string, virtualNetworkGatewayConnectionName string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.DeletePreparer(resourceGroupName, virtualNetworkGatewayConnectionName, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "Delete", nil, "Failure preparing request") - } - - resp, err := client.DeleteSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "Delete", resp, "Failure sending request") - } - - result, err = client.DeleteResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "Delete", resp, "Failure responding to request") - } - - return -} - -// DeletePreparer prepares the Delete request. -func (client VirtualNetworkGatewayConnectionsClient) DeletePreparer(resourceGroupName string, virtualNetworkGatewayConnectionName string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "virtualNetworkGatewayConnectionName": url.QueryEscape(virtualNetworkGatewayConnectionName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteSender sends the Delete request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualNetworkGatewayConnectionsClient) DeleteSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// DeleteResponder handles the response to the Delete request. The method always -// closes the http.Response Body. -func (client VirtualNetworkGatewayConnectionsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), - autorest.ByClosing()) - result.Response = resp - return -} - -// Get the Get VirtualNetworkGatewayConnection operation retrieves information -// about the specified virtual network gateway connection through Network -// resource provider. -// -// resourceGroupName is the name of the resource group. -// virtualNetworkGatewayConnectionName is the name of the virtual network -// gateway connection. -func (client VirtualNetworkGatewayConnectionsClient) Get(resourceGroupName string, virtualNetworkGatewayConnectionName string) (result VirtualNetworkGatewayConnection, err error) { - req, err := client.GetPreparer(resourceGroupName, virtualNetworkGatewayConnectionName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client VirtualNetworkGatewayConnectionsClient) GetPreparer(resourceGroupName string, virtualNetworkGatewayConnectionName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "virtualNetworkGatewayConnectionName": url.QueryEscape(virtualNetworkGatewayConnectionName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualNetworkGatewayConnectionsClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client VirtualNetworkGatewayConnectionsClient) GetResponder(resp *http.Response) (result VirtualNetworkGatewayConnection, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// GetSharedKey the Get VirtualNetworkGatewayConnectionSharedKey operation -// retrieves information about the specified virtual network gateway -// connection shared key through Network resource provider. -// -// resourceGroupName is the name of the resource group. -// connectionSharedKeyName is the virtual network gateway connection shared -// key name. -func (client VirtualNetworkGatewayConnectionsClient) GetSharedKey(resourceGroupName string, connectionSharedKeyName string) (result ConnectionSharedKeyResult, err error) { - req, err := client.GetSharedKeyPreparer(resourceGroupName, connectionSharedKeyName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "GetSharedKey", nil, "Failure preparing request") - } - - resp, err := client.GetSharedKeySender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "GetSharedKey", resp, "Failure sending request") - } - - result, err = client.GetSharedKeyResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "GetSharedKey", resp, "Failure responding to request") - } - - return -} - -// GetSharedKeyPreparer prepares the GetSharedKey request. -func (client VirtualNetworkGatewayConnectionsClient) GetSharedKeyPreparer(resourceGroupName string, connectionSharedKeyName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "connectionSharedKeyName": url.QueryEscape(connectionSharedKeyName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{connectionSharedKeyName}/sharedkey"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSharedKeySender sends the GetSharedKey request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualNetworkGatewayConnectionsClient) GetSharedKeySender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetSharedKeyResponder handles the response to the GetSharedKey request. The method always -// closes the http.Response Body. -func (client VirtualNetworkGatewayConnectionsClient) GetSharedKeyResponder(resp *http.Response) (result ConnectionSharedKeyResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List the List VirtualNetworkGatewayConnections operation retrieves all the -// virtual network gateways connections created. -// -// resourceGroupName is the name of the resource group. -func (client VirtualNetworkGatewayConnectionsClient) List(resourceGroupName string) (result VirtualNetworkGatewayConnectionListResult, err error) { - req, err := client.ListPreparer(resourceGroupName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client VirtualNetworkGatewayConnectionsClient) ListPreparer(resourceGroupName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualNetworkGatewayConnectionsClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client VirtualNetworkGatewayConnectionsClient) ListResponder(resp *http.Response) (result VirtualNetworkGatewayConnectionListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client VirtualNetworkGatewayConnectionsClient) ListNextResults(lastResults VirtualNetworkGatewayConnectionListResult) (result VirtualNetworkGatewayConnectionListResult, err error) { - req, err := lastResults.VirtualNetworkGatewayConnectionListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "List", resp, "Failure responding to next results request request") - } - - return -} - -// ResetSharedKey the VirtualNetworkGatewayConnectionResetSharedKey operation -// resets the virtual network gateway connection shared key for passed -// virtual network gateway connection in the specified resource group through -// Network resource provider. This method may poll for completion. Polling -// can be canceled by passing the cancel channel argument. The channel will -// be used to cancel polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. -// virtualNetworkGatewayConnectionName is the virtual network gateway -// connection reset shared key Name. parameters is parameters supplied to the -// Begin Reset Virtual Network Gateway connection shared key operation -// through Network resource provider. -func (client VirtualNetworkGatewayConnectionsClient) ResetSharedKey(resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters ConnectionResetSharedKey, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.ResetSharedKeyPreparer(resourceGroupName, virtualNetworkGatewayConnectionName, parameters, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "ResetSharedKey", nil, "Failure preparing request") - } - - resp, err := client.ResetSharedKeySender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "ResetSharedKey", resp, "Failure sending request") - } - - result, err = client.ResetSharedKeyResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "ResetSharedKey", resp, "Failure responding to request") - } - - return -} - -// ResetSharedKeyPreparer prepares the ResetSharedKey request. -func (client VirtualNetworkGatewayConnectionsClient) ResetSharedKeyPreparer(resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters ConnectionResetSharedKey, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "virtualNetworkGatewayConnectionName": url.QueryEscape(virtualNetworkGatewayConnectionName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/sharedkey/reset"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ResetSharedKeySender sends the ResetSharedKey request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualNetworkGatewayConnectionsClient) ResetSharedKeySender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// ResetSharedKeyResponder handles the response to the ResetSharedKey request. The method always -// closes the http.Response Body. -func (client VirtualNetworkGatewayConnectionsClient) ResetSharedKeyResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), - autorest.ByClosing()) - result.Response = resp - return -} - -// SetSharedKey the Put VirtualNetworkGatewayConnectionSharedKey operation -// sets the virtual network gateway connection shared key for passed virtual -// network gateway connection in the specified resource group through Network -// resource provider. This method may poll for completion. Polling can be -// canceled by passing the cancel channel argument. The channel will be used -// to cancel polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. -// virtualNetworkGatewayConnectionName is the virtual network gateway -// connection name. parameters is parameters supplied to the Begin Set -// Virtual Network Gateway conection Shared key operation throughNetwork -// resource provider. -func (client VirtualNetworkGatewayConnectionsClient) SetSharedKey(resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters ConnectionSharedKey, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.SetSharedKeyPreparer(resourceGroupName, virtualNetworkGatewayConnectionName, parameters, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "SetSharedKey", nil, "Failure preparing request") - } - - resp, err := client.SetSharedKeySender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "SetSharedKey", resp, "Failure sending request") - } - - result, err = client.SetSharedKeyResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewayConnectionsClient", "SetSharedKey", resp, "Failure responding to request") - } - - return -} - -// SetSharedKeyPreparer prepares the SetSharedKey request. -func (client VirtualNetworkGatewayConnectionsClient) SetSharedKeyPreparer(resourceGroupName string, virtualNetworkGatewayConnectionName string, parameters ConnectionSharedKey, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "virtualNetworkGatewayConnectionName": url.QueryEscape(virtualNetworkGatewayConnectionName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/connections/{virtualNetworkGatewayConnectionName}/sharedkey"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// SetSharedKeySender sends the SetSharedKey request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualNetworkGatewayConnectionsClient) SetSharedKeySender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// SetSharedKeyResponder handles the response to the SetSharedKey request. The method always -// closes the http.Response Body. -func (client VirtualNetworkGatewayConnectionsClient) SetSharedKeyResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusCreated, http.StatusOK), - autorest.ByClosing()) - result.Response = resp - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/virtualnetworkgateways.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/virtualnetworkgateways.go deleted file mode 100644 index 2649c4eb..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/virtualnetworkgateways.go +++ /dev/null @@ -1,481 +0,0 @@ -package network - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// VirtualNetworkGatewaysClient is the the Microsoft Azure Network management -// API provides a RESTful set of web services that interact with Microsoft -// Azure Networks service to manage your network resrources. The API has -// entities that capture the relationship between an end user and the -// Microsoft Azure Networks service. -type VirtualNetworkGatewaysClient struct { - ManagementClient -} - -// NewVirtualNetworkGatewaysClient creates an instance of the -// VirtualNetworkGatewaysClient client. -func NewVirtualNetworkGatewaysClient(subscriptionID string) VirtualNetworkGatewaysClient { - return NewVirtualNetworkGatewaysClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewVirtualNetworkGatewaysClientWithBaseURI creates an instance of the -// VirtualNetworkGatewaysClient client. -func NewVirtualNetworkGatewaysClientWithBaseURI(baseURI string, subscriptionID string) VirtualNetworkGatewaysClient { - return VirtualNetworkGatewaysClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// CreateOrUpdate the Put VirtualNetworkGateway operation creates/updates a -// virtual network gateway in the specified resource group through Network -// resource provider. This method may poll for completion. Polling can be -// canceled by passing the cancel channel argument. The channel will be used -// to cancel polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. -// virtualNetworkGatewayName is the name of the virtual network gateway. -// parameters is parameters supplied to the Begin Create or update Virtual -// Network Gateway operation through Network resource provider. -func (client VirtualNetworkGatewaysClient) CreateOrUpdate(resourceGroupName string, virtualNetworkGatewayName string, parameters VirtualNetworkGateway, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.CreateOrUpdatePreparer(resourceGroupName, virtualNetworkGatewayName, parameters, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "CreateOrUpdate", nil, "Failure preparing request") - } - - resp, err := client.CreateOrUpdateSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "CreateOrUpdate", resp, "Failure sending request") - } - - result, err = client.CreateOrUpdateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "CreateOrUpdate", resp, "Failure responding to request") - } - - return -} - -// CreateOrUpdatePreparer prepares the CreateOrUpdate request. -func (client VirtualNetworkGatewaysClient) CreateOrUpdatePreparer(resourceGroupName string, virtualNetworkGatewayName string, parameters VirtualNetworkGateway, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "virtualNetworkGatewayName": url.QueryEscape(virtualNetworkGatewayName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualnetworkgateways/{virtualNetworkGatewayName}"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualNetworkGatewaysClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always -// closes the http.Response Body. -func (client VirtualNetworkGatewaysClient) CreateOrUpdateResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), - autorest.ByClosing()) - result.Response = resp - return -} - -// Delete the Delete VirtualNetworkGateway operation deletes the specifed -// virtual network Gateway through Network resource provider. This method may -// poll for completion. Polling can be canceled by passing the cancel channel -// argument. The channel will be used to cancel polling and any outstanding -// HTTP requests. -// -// resourceGroupName is the name of the resource group. -// virtualNetworkGatewayName is the name of the virtual network gateway. -func (client VirtualNetworkGatewaysClient) Delete(resourceGroupName string, virtualNetworkGatewayName string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.DeletePreparer(resourceGroupName, virtualNetworkGatewayName, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Delete", nil, "Failure preparing request") - } - - resp, err := client.DeleteSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Delete", resp, "Failure sending request") - } - - result, err = client.DeleteResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Delete", resp, "Failure responding to request") - } - - return -} - -// DeletePreparer prepares the Delete request. -func (client VirtualNetworkGatewaysClient) DeletePreparer(resourceGroupName string, virtualNetworkGatewayName string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "virtualNetworkGatewayName": url.QueryEscape(virtualNetworkGatewayName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualnetworkgateways/{virtualNetworkGatewayName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteSender sends the Delete request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualNetworkGatewaysClient) DeleteSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// DeleteResponder handles the response to the Delete request. The method always -// closes the http.Response Body. -func (client VirtualNetworkGatewaysClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusNoContent, http.StatusAccepted, http.StatusOK), - autorest.ByClosing()) - result.Response = resp - return -} - -// Generatevpnclientpackage the Generatevpnclientpackage operation generates -// Vpn client package for P2S client of the virtual network gateway in the -// specified resource group through Network resource provider. -// -// resourceGroupName is the name of the resource group. -// virtualNetworkGatewayName is the name of the virtual network gateway. -// parameters is parameters supplied to the Begin Generating Virtual Network -// Gateway Vpn client package operation through Network resource provider. -func (client VirtualNetworkGatewaysClient) Generatevpnclientpackage(resourceGroupName string, virtualNetworkGatewayName string, parameters VpnClientParameters) (result String, err error) { - req, err := client.GeneratevpnclientpackagePreparer(resourceGroupName, virtualNetworkGatewayName, parameters) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Generatevpnclientpackage", nil, "Failure preparing request") - } - - resp, err := client.GeneratevpnclientpackageSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Generatevpnclientpackage", resp, "Failure sending request") - } - - result, err = client.GeneratevpnclientpackageResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Generatevpnclientpackage", resp, "Failure responding to request") - } - - return -} - -// GeneratevpnclientpackagePreparer prepares the Generatevpnclientpackage request. -func (client VirtualNetworkGatewaysClient) GeneratevpnclientpackagePreparer(resourceGroupName string, virtualNetworkGatewayName string, parameters VpnClientParameters) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "virtualNetworkGatewayName": url.QueryEscape(virtualNetworkGatewayName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualnetworkgateways/{virtualNetworkGatewayName}/generatevpnclientpackage"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GeneratevpnclientpackageSender sends the Generatevpnclientpackage request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualNetworkGatewaysClient) GeneratevpnclientpackageSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GeneratevpnclientpackageResponder handles the response to the Generatevpnclientpackage request. The method always -// closes the http.Response Body. -func (client VirtualNetworkGatewaysClient) GeneratevpnclientpackageResponder(resp *http.Response) (result String, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), - autorest.ByUnmarshallingJSON(&result.Value), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// Get the Get VirtualNetworkGateway operation retrieves information about the -// specified virtual network gateway through Network resource provider. -// -// resourceGroupName is the name of the resource group. -// virtualNetworkGatewayName is the name of the virtual network gateway. -func (client VirtualNetworkGatewaysClient) Get(resourceGroupName string, virtualNetworkGatewayName string) (result VirtualNetworkGateway, err error) { - req, err := client.GetPreparer(resourceGroupName, virtualNetworkGatewayName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client VirtualNetworkGatewaysClient) GetPreparer(resourceGroupName string, virtualNetworkGatewayName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "virtualNetworkGatewayName": url.QueryEscape(virtualNetworkGatewayName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualnetworkgateways/{virtualNetworkGatewayName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualNetworkGatewaysClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client VirtualNetworkGatewaysClient) GetResponder(resp *http.Response) (result VirtualNetworkGateway, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List the List VirtualNetworkGateways opertion retrieves all the virtual -// network gateways stored. -// -// resourceGroupName is the name of the resource group. -func (client VirtualNetworkGatewaysClient) List(resourceGroupName string) (result VirtualNetworkGatewayListResult, err error) { - req, err := client.ListPreparer(resourceGroupName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client VirtualNetworkGatewaysClient) ListPreparer(resourceGroupName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworkGateways"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualNetworkGatewaysClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client VirtualNetworkGatewaysClient) ListResponder(resp *http.Response) (result VirtualNetworkGatewayListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client VirtualNetworkGatewaysClient) ListNextResults(lastResults VirtualNetworkGatewayListResult) (result VirtualNetworkGatewayListResult, err error) { - req, err := lastResults.VirtualNetworkGatewayListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "List", resp, "Failure responding to next results request request") - } - - return -} - -// Reset the Reset VirtualNetworkGateway operation resets the primary of the -// virtual network gateway in the specified resource group through Network -// resource provider. This method may poll for completion. Polling can be -// canceled by passing the cancel channel argument. The channel will be used -// to cancel polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. -// virtualNetworkGatewayName is the name of the virtual network gateway. -// parameters is parameters supplied to the Begin Reset Virtual Network -// Gateway operation through Network resource provider. -func (client VirtualNetworkGatewaysClient) Reset(resourceGroupName string, virtualNetworkGatewayName string, parameters VirtualNetworkGateway, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.ResetPreparer(resourceGroupName, virtualNetworkGatewayName, parameters, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Reset", nil, "Failure preparing request") - } - - resp, err := client.ResetSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Reset", resp, "Failure sending request") - } - - result, err = client.ResetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.VirtualNetworkGatewaysClient", "Reset", resp, "Failure responding to request") - } - - return -} - -// ResetPreparer prepares the Reset request. -func (client VirtualNetworkGatewaysClient) ResetPreparer(resourceGroupName string, virtualNetworkGatewayName string, parameters VirtualNetworkGateway, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "virtualNetworkGatewayName": url.QueryEscape(virtualNetworkGatewayName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualnetworkgateways/{virtualNetworkGatewayName}/reset"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ResetSender sends the Reset request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualNetworkGatewaysClient) ResetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// ResetResponder handles the response to the Reset request. The method always -// closes the http.Response Body. -func (client VirtualNetworkGatewaysClient) ResetResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusAccepted, http.StatusOK), - autorest.ByClosing()) - result.Response = resp - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/virtualnetworks.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/virtualnetworks.go deleted file mode 100644 index bb50a7f0..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/network/virtualnetworks.go +++ /dev/null @@ -1,425 +0,0 @@ -package network - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// VirtualNetworksClient is the the Microsoft Azure Network management API -// provides a RESTful set of web services that interact with Microsoft Azure -// Networks service to manage your network resrources. The API has entities -// that capture the relationship between an end user and the Microsoft Azure -// Networks service. -type VirtualNetworksClient struct { - ManagementClient -} - -// NewVirtualNetworksClient creates an instance of the VirtualNetworksClient -// client. -func NewVirtualNetworksClient(subscriptionID string) VirtualNetworksClient { - return NewVirtualNetworksClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewVirtualNetworksClientWithBaseURI creates an instance of the -// VirtualNetworksClient client. -func NewVirtualNetworksClientWithBaseURI(baseURI string, subscriptionID string) VirtualNetworksClient { - return VirtualNetworksClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// CreateOrUpdate the Put VirtualNetwork operation creates/updates a virtual -// network in the specified resource group. This method may poll for -// completion. Polling can be canceled by passing the cancel channel -// argument. The channel will be used to cancel polling and any outstanding -// HTTP requests. -// -// resourceGroupName is the name of the resource group. virtualNetworkName is -// the name of the virtual network. parameters is parameters supplied to the -// create/update Virtual Network operation -func (client VirtualNetworksClient) CreateOrUpdate(resourceGroupName string, virtualNetworkName string, parameters VirtualNetwork, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.CreateOrUpdatePreparer(resourceGroupName, virtualNetworkName, parameters, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "CreateOrUpdate", nil, "Failure preparing request") - } - - resp, err := client.CreateOrUpdateSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "CreateOrUpdate", resp, "Failure sending request") - } - - result, err = client.CreateOrUpdateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "CreateOrUpdate", resp, "Failure responding to request") - } - - return -} - -// CreateOrUpdatePreparer prepares the CreateOrUpdate request. -func (client VirtualNetworksClient) CreateOrUpdatePreparer(resourceGroupName string, virtualNetworkName string, parameters VirtualNetwork, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "virtualNetworkName": url.QueryEscape(virtualNetworkName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualnetworks/{virtualNetworkName}"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualNetworksClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always -// closes the http.Response Body. -func (client VirtualNetworksClient) CreateOrUpdateResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), - autorest.ByClosing()) - result.Response = resp - return -} - -// Delete the Delete VirtualNetwork operation deletes the specifed virtual -// network This method may poll for completion. Polling can be canceled by -// passing the cancel channel argument. The channel will be used to cancel -// polling and any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. virtualNetworkName is -// the name of the virtual network. -func (client VirtualNetworksClient) Delete(resourceGroupName string, virtualNetworkName string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.DeletePreparer(resourceGroupName, virtualNetworkName, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "Delete", nil, "Failure preparing request") - } - - resp, err := client.DeleteSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "Delete", resp, "Failure sending request") - } - - result, err = client.DeleteResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "Delete", resp, "Failure responding to request") - } - - return -} - -// DeletePreparer prepares the Delete request. -func (client VirtualNetworksClient) DeletePreparer(resourceGroupName string, virtualNetworkName string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "virtualNetworkName": url.QueryEscape(virtualNetworkName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualnetworks/{virtualNetworkName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteSender sends the Delete request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualNetworksClient) DeleteSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// DeleteResponder handles the response to the Delete request. The method always -// closes the http.Response Body. -func (client VirtualNetworksClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusAccepted, http.StatusNoContent, http.StatusOK), - autorest.ByClosing()) - result.Response = resp - return -} - -// Get the Get VirtualNetwork operation retrieves information about the -// specified virtual network. -// -// resourceGroupName is the name of the resource group. virtualNetworkName is -// the name of the virtual network. expand is expand references resources. -func (client VirtualNetworksClient) Get(resourceGroupName string, virtualNetworkName string, expand string) (result VirtualNetwork, err error) { - req, err := client.GetPreparer(resourceGroupName, virtualNetworkName, expand) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client VirtualNetworksClient) GetPreparer(resourceGroupName string, virtualNetworkName string, expand string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "virtualNetworkName": url.QueryEscape(virtualNetworkName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - if len(expand) > 0 { - queryParameters["$expand"] = expand - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualnetworks/{virtualNetworkName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualNetworksClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client VirtualNetworksClient) GetResponder(resp *http.Response) (result VirtualNetwork, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List the list VirtualNetwork returns all Virtual Networks in a resource -// group -// -// resourceGroupName is the name of the resource group. -func (client VirtualNetworksClient) List(resourceGroupName string) (result VirtualNetworkListResult, err error) { - req, err := client.ListPreparer(resourceGroupName) - if err != nil { - return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client VirtualNetworksClient) ListPreparer(resourceGroupName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualnetworks"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualNetworksClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client VirtualNetworksClient) ListResponder(resp *http.Response) (result VirtualNetworkListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client VirtualNetworksClient) ListNextResults(lastResults VirtualNetworkListResult) (result VirtualNetworkListResult, err error) { - req, err := lastResults.VirtualNetworkListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "List", resp, "Failure responding to next results request request") - } - - return -} - -// ListAll the list VirtualNetwork returns all Virtual Networks in a -// subscription -func (client VirtualNetworksClient) ListAll() (result VirtualNetworkListResult, err error) { - req, err := client.ListAllPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "ListAll", nil, "Failure preparing request") - } - - resp, err := client.ListAllSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "ListAll", resp, "Failure sending request") - } - - result, err = client.ListAllResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "ListAll", resp, "Failure responding to request") - } - - return -} - -// ListAllPreparer prepares the ListAll request. -func (client VirtualNetworksClient) ListAllPreparer() (*http.Request, error) { - pathParameters := map[string]interface{}{ - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Network/virtualnetworks"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListAllSender sends the ListAll request. The method will close the -// http.Response Body if it receives an error. -func (client VirtualNetworksClient) ListAllSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListAllResponder handles the response to the ListAll request. The method always -// closes the http.Response Body. -func (client VirtualNetworksClient) ListAllResponder(resp *http.Response) (result VirtualNetworkListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListAllNextResults retrieves the next set of results, if any. -func (client VirtualNetworksClient) ListAllNextResults(lastResults VirtualNetworkListResult) (result VirtualNetworkListResult, err error) { - req, err := lastResults.VirtualNetworkListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "ListAll", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListAllSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "ListAll", resp, "Failure sending next results request request") - } - - result, err = client.ListAllResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "network.VirtualNetworksClient", "ListAll", resp, "Failure responding to next results request request") - } - - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/client.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/client.go deleted file mode 100644 index 687c905e..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/client.go +++ /dev/null @@ -1,495 +0,0 @@ -// Package resources implements the Azure ARM Resources service API version -// 2015-11-01. -// -package resources - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -const ( - // APIVersion is the version of the Resources - APIVersion = "2015-11-01" - - // DefaultBaseURI is the default URI used for the service Resources - DefaultBaseURI = "https://management.azure.com" -) - -// ManagementClient is the base client for Resources. -type ManagementClient struct { - autorest.Client - BaseURI string - SubscriptionID string -} - -// New creates an instance of the ManagementClient client. -func New(subscriptionID string) ManagementClient { - return NewWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewWithBaseURI creates an instance of the ManagementClient client. -func NewWithBaseURI(baseURI string, subscriptionID string) ManagementClient { - return ManagementClient{ - Client: autorest.NewClientWithUserAgent(UserAgent()), - BaseURI: baseURI, - SubscriptionID: subscriptionID, - } -} - -// CheckExistence checks whether resource exists. -// -// resourceGroupName is the name of the resource group. The name is case -// insensitive. resourceProviderNamespace is resource identity. -// parentResourcePath is resource identity. resourceType is resource -// identity. resourceName is resource identity. -func (client ManagementClient) CheckExistence(resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, apiVersion string) (result autorest.Response, err error) { - req, err := client.CheckExistencePreparer(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.ManagementClient", "CheckExistence", nil, "Failure preparing request") - } - - resp, err := client.CheckExistenceSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "resources.ManagementClient", "CheckExistence", resp, "Failure sending request") - } - - result, err = client.CheckExistenceResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.ManagementClient", "CheckExistence", resp, "Failure responding to request") - } - - return -} - -// CheckExistencePreparer prepares the CheckExistence request. -func (client ManagementClient) CheckExistencePreparer(resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, apiVersion string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "parentResourcePath": parentResourcePath, - "resourceGroupName": url.QueryEscape(resourceGroupName), - "resourceName": url.QueryEscape(resourceName), - "resourceProviderNamespace": url.QueryEscape(resourceProviderNamespace), - "resourceType": resourceType, - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsHead(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CheckExistenceSender sends the CheckExistence request. The method will close the -// http.Response Body if it receives an error. -func (client ManagementClient) CheckExistenceSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// CheckExistenceResponder handles the response to the CheckExistence request. The method always -// closes the http.Response Body. -func (client ManagementClient) CheckExistenceResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent, http.StatusNotFound), - autorest.ByClosing()) - result.Response = resp - return -} - -// CreateOrUpdate create a resource. -// -// resourceGroupName is the name of the resource group. The name is case -// insensitive. resourceProviderNamespace is resource identity. -// parentResourcePath is resource identity. resourceType is resource -// identity. resourceName is resource identity. parameters is create or -// update resource parameters. -func (client ManagementClient) CreateOrUpdate(resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, apiVersion string, parameters GenericResource) (result GenericResource, err error) { - req, err := client.CreateOrUpdatePreparer(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion, parameters) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.ManagementClient", "CreateOrUpdate", nil, "Failure preparing request") - } - - resp, err := client.CreateOrUpdateSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.ManagementClient", "CreateOrUpdate", resp, "Failure sending request") - } - - result, err = client.CreateOrUpdateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.ManagementClient", "CreateOrUpdate", resp, "Failure responding to request") - } - - return -} - -// CreateOrUpdatePreparer prepares the CreateOrUpdate request. -func (client ManagementClient) CreateOrUpdatePreparer(resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, apiVersion string, parameters GenericResource) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "parentResourcePath": parentResourcePath, - "resourceGroupName": url.QueryEscape(resourceGroupName), - "resourceName": url.QueryEscape(resourceName), - "resourceProviderNamespace": url.QueryEscape(resourceProviderNamespace), - "resourceType": resourceType, - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the -// http.Response Body if it receives an error. -func (client ManagementClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always -// closes the http.Response Body. -func (client ManagementClient) CreateOrUpdateResponder(resp *http.Response) (result GenericResource, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusCreated, http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// Delete delete resource and all of its resources. -// -// resourceGroupName is the name of the resource group. The name is case -// insensitive. resourceProviderNamespace is resource identity. -// parentResourcePath is resource identity. resourceType is resource -// identity. resourceName is resource identity. -func (client ManagementClient) Delete(resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, apiVersion string) (result autorest.Response, err error) { - req, err := client.DeletePreparer(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.ManagementClient", "Delete", nil, "Failure preparing request") - } - - resp, err := client.DeleteSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "resources.ManagementClient", "Delete", resp, "Failure sending request") - } - - result, err = client.DeleteResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.ManagementClient", "Delete", resp, "Failure responding to request") - } - - return -} - -// DeletePreparer prepares the Delete request. -func (client ManagementClient) DeletePreparer(resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, apiVersion string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "parentResourcePath": parentResourcePath, - "resourceGroupName": url.QueryEscape(resourceGroupName), - "resourceName": url.QueryEscape(resourceName), - "resourceProviderNamespace": url.QueryEscape(resourceProviderNamespace), - "resourceType": resourceType, - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteSender sends the Delete request. The method will close the -// http.Response Body if it receives an error. -func (client ManagementClient) DeleteSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// DeleteResponder handles the response to the Delete request. The method always -// closes the http.Response Body. -func (client ManagementClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent, http.StatusAccepted), - autorest.ByClosing()) - result.Response = resp - return -} - -// Get returns a resource belonging to a resource group. -// -// resourceGroupName is the name of the resource group. The name is case -// insensitive. resourceProviderNamespace is resource identity. -// parentResourcePath is resource identity. resourceType is resource -// identity. resourceName is resource identity. -func (client ManagementClient) Get(resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, apiVersion string) (result GenericResource, err error) { - req, err := client.GetPreparer(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.ManagementClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.ManagementClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.ManagementClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client ManagementClient) GetPreparer(resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, apiVersion string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "parentResourcePath": parentResourcePath, - "resourceGroupName": url.QueryEscape(resourceGroupName), - "resourceName": url.QueryEscape(resourceName), - "resourceProviderNamespace": url.QueryEscape(resourceProviderNamespace), - "resourceType": resourceType, - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client ManagementClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client ManagementClient) GetResponder(resp *http.Response) (result GenericResource, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List get all of the resources under a subscription. -// -// filter is the filter to apply on the operation. top is query parameters. If -// null is passed returns all resource groups. -func (client ManagementClient) List(filter string, top *int32) (result ResourceListResult, err error) { - req, err := client.ListPreparer(filter, top) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.ManagementClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.ManagementClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.ManagementClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client ManagementClient) ListPreparer(filter string, top *int32) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - if len(filter) > 0 { - queryParameters["$filter"] = filter - } - if top != nil { - queryParameters["$top"] = top - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resources"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client ManagementClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client ManagementClient) ListResponder(resp *http.Response) (result ResourceListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client ManagementClient) ListNextResults(lastResults ResourceListResult) (result ResourceListResult, err error) { - req, err := lastResults.ResourceListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.ManagementClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.ManagementClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.ManagementClient", "List", resp, "Failure responding to next results request request") - } - - return -} - -// MoveResources begin moving resources.To determine whether the operation has -// finished processing the request, call GetLongRunningOperationStatus. This -// method may poll for completion. Polling can be canceled by passing the -// cancel channel argument. The channel will be used to cancel polling and -// any outstanding HTTP requests. -// -// sourceResourceGroupName is source resource group name. parameters is move -// resources' parameters. -func (client ManagementClient) MoveResources(sourceResourceGroupName string, parameters MoveInfo, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.MoveResourcesPreparer(sourceResourceGroupName, parameters, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.ManagementClient", "MoveResources", nil, "Failure preparing request") - } - - resp, err := client.MoveResourcesSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "resources.ManagementClient", "MoveResources", resp, "Failure sending request") - } - - result, err = client.MoveResourcesResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.ManagementClient", "MoveResources", resp, "Failure responding to request") - } - - return -} - -// MoveResourcesPreparer prepares the MoveResources request. -func (client ManagementClient) MoveResourcesPreparer(sourceResourceGroupName string, parameters MoveInfo, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "sourceResourceGroupName": url.QueryEscape(sourceResourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{sourceResourceGroupName}/moveResources"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// MoveResourcesSender sends the MoveResources request. The method will close the -// http.Response Body if it receives an error. -func (client ManagementClient) MoveResourcesSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// MoveResourcesResponder handles the response to the MoveResources request. The method always -// closes the http.Response Body. -func (client ManagementClient) MoveResourcesResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), - autorest.ByClosing()) - result.Response = resp - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/deploymentoperations.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/deploymentoperations.go deleted file mode 100644 index abdcf3f2..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/deploymentoperations.go +++ /dev/null @@ -1,202 +0,0 @@ -package resources - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// DeploymentOperationsClient is the client for the DeploymentOperations -// methods of the Resources service. -type DeploymentOperationsClient struct { - ManagementClient -} - -// NewDeploymentOperationsClient creates an instance of the -// DeploymentOperationsClient client. -func NewDeploymentOperationsClient(subscriptionID string) DeploymentOperationsClient { - return NewDeploymentOperationsClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewDeploymentOperationsClientWithBaseURI creates an instance of the -// DeploymentOperationsClient client. -func NewDeploymentOperationsClientWithBaseURI(baseURI string, subscriptionID string) DeploymentOperationsClient { - return DeploymentOperationsClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// Get get a list of deployments operations. -// -// resourceGroupName is the name of the resource group. The name is case -// insensitive. deploymentName is the name of the deployment. operationID is -// operation Id. -func (client DeploymentOperationsClient) Get(resourceGroupName string, deploymentName string, operationID string) (result DeploymentOperation, err error) { - req, err := client.GetPreparer(resourceGroupName, deploymentName, operationID) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client DeploymentOperationsClient) GetPreparer(resourceGroupName string, deploymentName string, operationID string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "deploymentName": url.QueryEscape(deploymentName), - "operationId": url.QueryEscape(operationID), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/deployments/{deploymentName}/operations/{operationId}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client DeploymentOperationsClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client DeploymentOperationsClient) GetResponder(resp *http.Response) (result DeploymentOperation, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List gets a list of deployments operations. -// -// resourceGroupName is the name of the resource group. The name is case -// insensitive. deploymentName is the name of the deployment. top is query -// parameters. -func (client DeploymentOperationsClient) List(resourceGroupName string, deploymentName string, top *int32) (result DeploymentOperationsListResult, err error) { - req, err := client.ListPreparer(resourceGroupName, deploymentName, top) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client DeploymentOperationsClient) ListPreparer(resourceGroupName string, deploymentName string, top *int32) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "deploymentName": url.QueryEscape(deploymentName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - if top != nil { - queryParameters["$top"] = top - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/deployments/{deploymentName}/operations"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client DeploymentOperationsClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client DeploymentOperationsClient) ListResponder(resp *http.Response) (result DeploymentOperationsListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client DeploymentOperationsClient) ListNextResults(lastResults DeploymentOperationsListResult) (result DeploymentOperationsListResult, err error) { - req, err := lastResults.DeploymentOperationsListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.DeploymentOperationsClient", "List", resp, "Failure responding to next results request request") - } - - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/deployments.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/deployments.go deleted file mode 100644 index 4f61041d..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/deployments.go +++ /dev/null @@ -1,532 +0,0 @@ -package resources - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// DeploymentsClient is the client for the Deployments methods of the -// Resources service. -type DeploymentsClient struct { - ManagementClient -} - -// NewDeploymentsClient creates an instance of the DeploymentsClient client. -func NewDeploymentsClient(subscriptionID string) DeploymentsClient { - return NewDeploymentsClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewDeploymentsClientWithBaseURI creates an instance of the -// DeploymentsClient client. -func NewDeploymentsClientWithBaseURI(baseURI string, subscriptionID string) DeploymentsClient { - return DeploymentsClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// Cancel cancel a currently running template deployment. -// -// resourceGroupName is the name of the resource group. The name is case -// insensitive. deploymentName is the name of the deployment. -func (client DeploymentsClient) Cancel(resourceGroupName string, deploymentName string) (result autorest.Response, err error) { - req, err := client.CancelPreparer(resourceGroupName, deploymentName) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Cancel", nil, "Failure preparing request") - } - - resp, err := client.CancelSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Cancel", resp, "Failure sending request") - } - - result, err = client.CancelResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Cancel", resp, "Failure responding to request") - } - - return -} - -// CancelPreparer prepares the Cancel request. -func (client DeploymentsClient) CancelPreparer(resourceGroupName string, deploymentName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "deploymentName": url.QueryEscape(deploymentName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CancelSender sends the Cancel request. The method will close the -// http.Response Body if it receives an error. -func (client DeploymentsClient) CancelSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// CancelResponder handles the response to the Cancel request. The method always -// closes the http.Response Body. -func (client DeploymentsClient) CancelResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent), - autorest.ByClosing()) - result.Response = resp - return -} - -// CheckExistence checks whether deployment exists. -// -// resourceGroupName is the name of the resource group to check. The name is -// case insensitive. deploymentName is the name of the deployment. -func (client DeploymentsClient) CheckExistence(resourceGroupName string, deploymentName string) (result autorest.Response, err error) { - req, err := client.CheckExistencePreparer(resourceGroupName, deploymentName) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CheckExistence", nil, "Failure preparing request") - } - - resp, err := client.CheckExistenceSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CheckExistence", resp, "Failure sending request") - } - - result, err = client.CheckExistenceResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CheckExistence", resp, "Failure responding to request") - } - - return -} - -// CheckExistencePreparer prepares the CheckExistence request. -func (client DeploymentsClient) CheckExistencePreparer(resourceGroupName string, deploymentName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "deploymentName": url.QueryEscape(deploymentName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsHead(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CheckExistenceSender sends the CheckExistence request. The method will close the -// http.Response Body if it receives an error. -func (client DeploymentsClient) CheckExistenceSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// CheckExistenceResponder handles the response to the CheckExistence request. The method always -// closes the http.Response Body. -func (client DeploymentsClient) CheckExistenceResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent, http.StatusNotFound), - autorest.ByClosing()) - result.Response = resp - return -} - -// CreateOrUpdate create a named template deployment using a template. This -// method may poll for completion. Polling can be canceled by passing the -// cancel channel argument. The channel will be used to cancel polling and -// any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. The name is case -// insensitive. deploymentName is the name of the deployment. parameters is -// additional parameters supplied to the operation. -func (client DeploymentsClient) CreateOrUpdate(resourceGroupName string, deploymentName string, parameters Deployment, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.CreateOrUpdatePreparer(resourceGroupName, deploymentName, parameters, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CreateOrUpdate", nil, "Failure preparing request") - } - - resp, err := client.CreateOrUpdateSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CreateOrUpdate", resp, "Failure sending request") - } - - result, err = client.CreateOrUpdateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "CreateOrUpdate", resp, "Failure responding to request") - } - - return -} - -// CreateOrUpdatePreparer prepares the CreateOrUpdate request. -func (client DeploymentsClient) CreateOrUpdatePreparer(resourceGroupName string, deploymentName string, parameters Deployment, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "deploymentName": url.QueryEscape(deploymentName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the -// http.Response Body if it receives an error. -func (client DeploymentsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always -// closes the http.Response Body. -func (client DeploymentsClient) CreateOrUpdateResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), - autorest.ByClosing()) - result.Response = resp - return -} - -// Delete begin deleting deployment.To determine whether the operation has -// finished processing the request, call GetLongRunningOperationStatus. This -// method may poll for completion. Polling can be canceled by passing the -// cancel channel argument. The channel will be used to cancel polling and -// any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group. The name is case -// insensitive. deploymentName is the name of the deployment to be deleted. -func (client DeploymentsClient) Delete(resourceGroupName string, deploymentName string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.DeletePreparer(resourceGroupName, deploymentName, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Delete", nil, "Failure preparing request") - } - - resp, err := client.DeleteSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Delete", resp, "Failure sending request") - } - - result, err = client.DeleteResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Delete", resp, "Failure responding to request") - } - - return -} - -// DeletePreparer prepares the Delete request. -func (client DeploymentsClient) DeletePreparer(resourceGroupName string, deploymentName string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "deploymentName": url.QueryEscape(deploymentName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteSender sends the Delete request. The method will close the -// http.Response Body if it receives an error. -func (client DeploymentsClient) DeleteSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// DeleteResponder handles the response to the Delete request. The method always -// closes the http.Response Body. -func (client DeploymentsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), - autorest.ByClosing()) - result.Response = resp - return -} - -// Get get a deployment. -// -// resourceGroupName is the name of the resource group to get. The name is -// case insensitive. deploymentName is the name of the deployment. -func (client DeploymentsClient) Get(resourceGroupName string, deploymentName string) (result DeploymentExtended, err error) { - req, err := client.GetPreparer(resourceGroupName, deploymentName) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client DeploymentsClient) GetPreparer(resourceGroupName string, deploymentName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "deploymentName": url.QueryEscape(deploymentName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client DeploymentsClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client DeploymentsClient) GetResponder(resp *http.Response) (result DeploymentExtended, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List get a list of deployments. -// -// resourceGroupName is the name of the resource group to filter by. The name -// is case insensitive. filter is the filter to apply on the operation. top -// is query parameters. If null is passed returns all deployments. -func (client DeploymentsClient) List(resourceGroupName string, filter string, top *int32) (result DeploymentListResult, err error) { - req, err := client.ListPreparer(resourceGroupName, filter, top) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.DeploymentsClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.DeploymentsClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client DeploymentsClient) ListPreparer(resourceGroupName string, filter string, top *int32) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - if len(filter) > 0 { - queryParameters["$filter"] = filter - } - if top != nil { - queryParameters["$top"] = top - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client DeploymentsClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client DeploymentsClient) ListResponder(resp *http.Response) (result DeploymentListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client DeploymentsClient) ListNextResults(lastResults DeploymentListResult) (result DeploymentListResult, err error) { - req, err := lastResults.DeploymentListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.DeploymentsClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.DeploymentsClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "List", resp, "Failure responding to next results request request") - } - - return -} - -// Validate validate a deployment template. -// -// resourceGroupName is the name of the resource group. The name is case -// insensitive. deploymentName is the name of the deployment. parameters is -// deployment to validate. -func (client DeploymentsClient) Validate(resourceGroupName string, deploymentName string, parameters Deployment) (result DeploymentValidateResult, err error) { - req, err := client.ValidatePreparer(resourceGroupName, deploymentName, parameters) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Validate", nil, "Failure preparing request") - } - - resp, err := client.ValidateSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Validate", resp, "Failure sending request") - } - - result, err = client.ValidateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.DeploymentsClient", "Validate", resp, "Failure responding to request") - } - - return -} - -// ValidatePreparer prepares the Validate request. -func (client DeploymentsClient) ValidatePreparer(resourceGroupName string, deploymentName string, parameters Deployment) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "deploymentName": url.QueryEscape(deploymentName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/validate"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ValidateSender sends the Validate request. The method will close the -// http.Response Body if it receives an error. -func (client DeploymentsClient) ValidateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ValidateResponder handles the response to the Validate request. The method always -// closes the http.Response Body. -func (client DeploymentsClient) ValidateResponder(resp *http.Response) (result DeploymentValidateResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusBadRequest), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/groups.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/groups.go deleted file mode 100644 index aa874d97..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/groups.go +++ /dev/null @@ -1,553 +0,0 @@ -package resources - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// GroupsClient is the client for the Groups methods of the Resources service. -type GroupsClient struct { - ManagementClient -} - -// NewGroupsClient creates an instance of the GroupsClient client. -func NewGroupsClient(subscriptionID string) GroupsClient { - return NewGroupsClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewGroupsClientWithBaseURI creates an instance of the GroupsClient client. -func NewGroupsClientWithBaseURI(baseURI string, subscriptionID string) GroupsClient { - return GroupsClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// CheckExistence checks whether resource group exists. -// -// resourceGroupName is the name of the resource group to check. The name is -// case insensitive. -func (client GroupsClient) CheckExistence(resourceGroupName string) (result autorest.Response, err error) { - req, err := client.CheckExistencePreparer(resourceGroupName) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.GroupsClient", "CheckExistence", nil, "Failure preparing request") - } - - resp, err := client.CheckExistenceSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "resources.GroupsClient", "CheckExistence", resp, "Failure sending request") - } - - result, err = client.CheckExistenceResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.GroupsClient", "CheckExistence", resp, "Failure responding to request") - } - - return -} - -// CheckExistencePreparer prepares the CheckExistence request. -func (client GroupsClient) CheckExistencePreparer(resourceGroupName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsHead(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CheckExistenceSender sends the CheckExistence request. The method will close the -// http.Response Body if it receives an error. -func (client GroupsClient) CheckExistenceSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// CheckExistenceResponder handles the response to the CheckExistence request. The method always -// closes the http.Response Body. -func (client GroupsClient) CheckExistenceResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent, http.StatusNotFound), - autorest.ByClosing()) - result.Response = resp - return -} - -// CreateOrUpdate create a resource group. -// -// resourceGroupName is the name of the resource group to be created or -// updated. parameters is parameters supplied to the create or update -// resource group service operation. -func (client GroupsClient) CreateOrUpdate(resourceGroupName string, parameters ResourceGroup) (result ResourceGroup, err error) { - req, err := client.CreateOrUpdatePreparer(resourceGroupName, parameters) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.GroupsClient", "CreateOrUpdate", nil, "Failure preparing request") - } - - resp, err := client.CreateOrUpdateSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.GroupsClient", "CreateOrUpdate", resp, "Failure sending request") - } - - result, err = client.CreateOrUpdateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.GroupsClient", "CreateOrUpdate", resp, "Failure responding to request") - } - - return -} - -// CreateOrUpdatePreparer prepares the CreateOrUpdate request. -func (client GroupsClient) CreateOrUpdatePreparer(resourceGroupName string, parameters ResourceGroup) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the -// http.Response Body if it receives an error. -func (client GroupsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always -// closes the http.Response Body. -func (client GroupsClient) CreateOrUpdateResponder(resp *http.Response) (result ResourceGroup, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusCreated, http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// Delete begin deleting resource group.To determine whether the operation has -// finished processing the request, call GetLongRunningOperationStatus. This -// method may poll for completion. Polling can be canceled by passing the -// cancel channel argument. The channel will be used to cancel polling and -// any outstanding HTTP requests. -// -// resourceGroupName is the name of the resource group to be deleted. The name -// is case insensitive. -func (client GroupsClient) Delete(resourceGroupName string, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.DeletePreparer(resourceGroupName, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.GroupsClient", "Delete", nil, "Failure preparing request") - } - - resp, err := client.DeleteSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "resources.GroupsClient", "Delete", resp, "Failure sending request") - } - - result, err = client.DeleteResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.GroupsClient", "Delete", resp, "Failure responding to request") - } - - return -} - -// DeletePreparer prepares the Delete request. -func (client GroupsClient) DeletePreparer(resourceGroupName string, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteSender sends the Delete request. The method will close the -// http.Response Body if it receives an error. -func (client GroupsClient) DeleteSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// DeleteResponder handles the response to the Delete request. The method always -// closes the http.Response Body. -func (client GroupsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusAccepted, http.StatusOK), - autorest.ByClosing()) - result.Response = resp - return -} - -// Get get a resource group. -// -// resourceGroupName is the name of the resource group to get. The name is -// case insensitive. -func (client GroupsClient) Get(resourceGroupName string) (result ResourceGroup, err error) { - req, err := client.GetPreparer(resourceGroupName) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.GroupsClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.GroupsClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.GroupsClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client GroupsClient) GetPreparer(resourceGroupName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client GroupsClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client GroupsClient) GetResponder(resp *http.Response) (result ResourceGroup, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List gets a collection of resource groups. -// -// filter is the filter to apply on the operation. top is query parameters. If -// null is passed returns all resource groups. -func (client GroupsClient) List(filter string, top *int32) (result ResourceGroupListResult, err error) { - req, err := client.ListPreparer(filter, top) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.GroupsClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.GroupsClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.GroupsClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client GroupsClient) ListPreparer(filter string, top *int32) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - if len(filter) > 0 { - queryParameters["$filter"] = filter - } - if top != nil { - queryParameters["$top"] = top - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourcegroups"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client GroupsClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client GroupsClient) ListResponder(resp *http.Response) (result ResourceGroupListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client GroupsClient) ListNextResults(lastResults ResourceGroupListResult) (result ResourceGroupListResult, err error) { - req, err := lastResults.ResourceGroupListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.GroupsClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.GroupsClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.GroupsClient", "List", resp, "Failure responding to next results request request") - } - - return -} - -// ListResources get all of the resources under a subscription. -// -// resourceGroupName is query parameters. If null is passed returns all -// resource groups. filter is the filter to apply on the operation. top is -// query parameters. If null is passed returns all resource groups. -func (client GroupsClient) ListResources(resourceGroupName string, filter string, top *int32) (result ResourceListResult, err error) { - req, err := client.ListResourcesPreparer(resourceGroupName, filter, top) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.GroupsClient", "ListResources", nil, "Failure preparing request") - } - - resp, err := client.ListResourcesSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.GroupsClient", "ListResources", resp, "Failure sending request") - } - - result, err = client.ListResourcesResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.GroupsClient", "ListResources", resp, "Failure responding to request") - } - - return -} - -// ListResourcesPreparer prepares the ListResources request. -func (client GroupsClient) ListResourcesPreparer(resourceGroupName string, filter string, top *int32) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - if len(filter) > 0 { - queryParameters["$filter"] = filter - } - if top != nil { - queryParameters["$top"] = top - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/resources"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListResourcesSender sends the ListResources request. The method will close the -// http.Response Body if it receives an error. -func (client GroupsClient) ListResourcesSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResourcesResponder handles the response to the ListResources request. The method always -// closes the http.Response Body. -func (client GroupsClient) ListResourcesResponder(resp *http.Response) (result ResourceListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListResourcesNextResults retrieves the next set of results, if any. -func (client GroupsClient) ListResourcesNextResults(lastResults ResourceListResult) (result ResourceListResult, err error) { - req, err := lastResults.ResourceListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.GroupsClient", "ListResources", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListResourcesSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.GroupsClient", "ListResources", resp, "Failure sending next results request request") - } - - result, err = client.ListResourcesResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.GroupsClient", "ListResources", resp, "Failure responding to next results request request") - } - - return -} - -// Patch resource groups can be updated through a simple PATCH operation to a -// group address. The format of the request is the same as that for creating -// a resource groups, though if a field is unspecified current value will be -// carried over. -// -// resourceGroupName is the name of the resource group to be created or -// updated. The name is case insensitive. parameters is parameters supplied -// to the update state resource group service operation. -func (client GroupsClient) Patch(resourceGroupName string, parameters ResourceGroup) (result ResourceGroup, err error) { - req, err := client.PatchPreparer(resourceGroupName, parameters) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.GroupsClient", "Patch", nil, "Failure preparing request") - } - - resp, err := client.PatchSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.GroupsClient", "Patch", resp, "Failure sending request") - } - - result, err = client.PatchResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.GroupsClient", "Patch", resp, "Failure responding to request") - } - - return -} - -// PatchPreparer prepares the Patch request. -func (client GroupsClient) PatchPreparer(resourceGroupName string, parameters ResourceGroup) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsPatch(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// PatchSender sends the Patch request. The method will close the -// http.Response Body if it receives an error. -func (client GroupsClient) PatchSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// PatchResponder handles the response to the Patch request. The method always -// closes the http.Response Body. -func (client GroupsClient) PatchResponder(resp *http.Response) (result ResourceGroup, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/models.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/models.go deleted file mode 100644 index dddb3ada..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/models.go +++ /dev/null @@ -1,460 +0,0 @@ -package resources - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/date" - "github.com/Azure/go-autorest/autorest/to" - "net/http" -) - -// DeploymentMode enumerates the values for deployment mode. -type DeploymentMode string - -const ( - // Complete specifies the complete state for deployment mode. - Complete DeploymentMode = "Complete" - // Incremental specifies the incremental state for deployment mode. - Incremental DeploymentMode = "Incremental" -) - -// BasicDependency is deployment dependency information. -type BasicDependency struct { - ID *string `json:"id,omitempty"` - ResourceType *string `json:"resourceType,omitempty"` - ResourceName *string `json:"resourceName,omitempty"` -} - -// Dependency is deployment dependency information. -type Dependency struct { - DependsOn *[]BasicDependency `json:"dependsOn,omitempty"` - ID *string `json:"id,omitempty"` - ResourceType *string `json:"resourceType,omitempty"` - ResourceName *string `json:"resourceName,omitempty"` -} - -// Deployment is deployment operation parameters. -type Deployment struct { - Properties *DeploymentProperties `json:"properties,omitempty"` -} - -// DeploymentExtended is deployment information. -type DeploymentExtended struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Properties *DeploymentPropertiesExtended `json:"properties,omitempty"` -} - -// DeploymentExtendedFilter is deployment filter. -type DeploymentExtendedFilter struct { - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// DeploymentListResult is list of deployments. -type DeploymentListResult struct { - autorest.Response `json:"-"` - Value *[]DeploymentExtended `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// DeploymentListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client DeploymentListResult) DeploymentListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// DeploymentOperation is deployment operation information. -type DeploymentOperation struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - OperationID *string `json:"operationId,omitempty"` - Properties *DeploymentOperationProperties `json:"properties,omitempty"` -} - -// DeploymentOperationProperties is deployment operation properties. -type DeploymentOperationProperties struct { - ProvisioningState *string `json:"provisioningState,omitempty"` - Timestamp *date.Time `json:"timestamp,omitempty"` - StatusCode *string `json:"statusCode,omitempty"` - StatusMessage *map[string]interface{} `json:"statusMessage,omitempty"` - TargetResource *TargetResource `json:"targetResource,omitempty"` -} - -// DeploymentOperationsListResult is list of deployment operations. -type DeploymentOperationsListResult struct { - autorest.Response `json:"-"` - Value *[]DeploymentOperation `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// DeploymentOperationsListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client DeploymentOperationsListResult) DeploymentOperationsListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// DeploymentProperties is deployment properties. -type DeploymentProperties struct { - Template *map[string]interface{} `json:"template,omitempty"` - TemplateLink *TemplateLink `json:"templateLink,omitempty"` - Parameters *map[string]interface{} `json:"parameters,omitempty"` - ParametersLink *ParametersLink `json:"parametersLink,omitempty"` - Mode DeploymentMode `json:"mode,omitempty"` -} - -// DeploymentPropertiesExtended is deployment properties with additional -// details. -type DeploymentPropertiesExtended struct { - ProvisioningState *string `json:"provisioningState,omitempty"` - CorrelationID *string `json:"correlationId,omitempty"` - Timestamp *date.Time `json:"timestamp,omitempty"` - Outputs *map[string]interface{} `json:"outputs,omitempty"` - Providers *[]Provider `json:"providers,omitempty"` - Dependencies *[]Dependency `json:"dependencies,omitempty"` - Template *map[string]interface{} `json:"template,omitempty"` - TemplateLink *TemplateLink `json:"templateLink,omitempty"` - Parameters *map[string]interface{} `json:"parameters,omitempty"` - ParametersLink *ParametersLink `json:"parametersLink,omitempty"` - Mode DeploymentMode `json:"mode,omitempty"` -} - -// DeploymentValidateResult is information from validate template deployment -// response. -type DeploymentValidateResult struct { - autorest.Response `json:"-"` - Error *ResourceManagementErrorWithDetails `json:"error,omitempty"` - Properties *DeploymentPropertiesExtended `json:"properties,omitempty"` -} - -// GenericResource is resource information. -type GenericResource struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Type *string `json:"type,omitempty"` - Location *string `json:"location,omitempty"` - Tags *map[string]*string `json:"tags,omitempty"` - Plan *Plan `json:"plan,omitempty"` - Properties *map[string]interface{} `json:"properties,omitempty"` -} - -// GenericResourceFilter is resource filter. -type GenericResourceFilter struct { - ResourceType *string `json:"resourceType,omitempty"` - Tagname *string `json:"tagname,omitempty"` - Tagvalue *string `json:"tagvalue,omitempty"` -} - -// MoveInfo is parameters of move resources. -type MoveInfo struct { - Resources *[]string `json:"resources,omitempty"` - TargetResourceGroup *string `json:"targetResourceGroup,omitempty"` -} - -// ParametersLink is entity representing the reference to the deployment -// paramaters. -type ParametersLink struct { - URI *string `json:"uri,omitempty"` - ContentVersion *string `json:"contentVersion,omitempty"` -} - -// Plan is plan for the resource. -type Plan struct { - Name *string `json:"name,omitempty"` - Publisher *string `json:"publisher,omitempty"` - Product *string `json:"product,omitempty"` - PromotionCode *string `json:"promotionCode,omitempty"` -} - -// PolicyAssignment is policy assignment. -type PolicyAssignment struct { - autorest.Response `json:"-"` - Properties *PolicyAssignmentProperties `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` -} - -// PolicyAssignmentListResult is policy assignment list operation result. -type PolicyAssignmentListResult struct { - autorest.Response `json:"-"` - Value *[]PolicyAssignment `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// PolicyAssignmentListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client PolicyAssignmentListResult) PolicyAssignmentListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// PolicyAssignmentProperties is policy Assignment properties. -type PolicyAssignmentProperties struct { - Scope *string `json:"scope,omitempty"` - DisplayName *string `json:"displayName,omitempty"` - PolicyDefinitionID *string `json:"policyDefinitionId,omitempty"` -} - -// PolicyDefinition is policy definition. -type PolicyDefinition struct { - autorest.Response `json:"-"` - Properties *PolicyDefinitionProperties `json:"properties,omitempty"` - Name *string `json:"name,omitempty"` -} - -// PolicyDefinitionProperties is policy definition properties. -type PolicyDefinitionProperties struct { - Description *string `json:"description,omitempty"` - DisplayName *string `json:"displayName,omitempty"` - PolicyRule *map[string]interface{} `json:"policyRule,omitempty"` -} - -// Provider is resource provider information. -type Provider struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - Namespace *string `json:"namespace,omitempty"` - RegistrationState *string `json:"registrationState,omitempty"` - ResourceTypes *[]ProviderResourceType `json:"resourceTypes,omitempty"` -} - -// ProviderListResult is list of resource providers. -type ProviderListResult struct { - autorest.Response `json:"-"` - Value *[]Provider `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// ProviderListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client ProviderListResult) ProviderListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// ProviderResourceType is resource type managed by the resource provider. -type ProviderResourceType struct { - ResourceType *string `json:"resourceType,omitempty"` - Locations *[]string `json:"locations,omitempty"` - APIVersions *[]string `json:"apiVersions,omitempty"` - Properties *map[string]*string `json:"properties,omitempty"` -} - -// Resource is -type Resource struct { - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Type *string `json:"type,omitempty"` - Location *string `json:"location,omitempty"` - Tags *map[string]*string `json:"tags,omitempty"` -} - -// ResourceGroup is resource group information. -type ResourceGroup struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Properties *ResourceGroupProperties `json:"properties,omitempty"` - Location *string `json:"location,omitempty"` - Tags *map[string]*string `json:"tags,omitempty"` -} - -// ResourceGroupFilter is resource group filter. -type ResourceGroupFilter struct { - TagName *string `json:"tagName,omitempty"` - TagValue *string `json:"tagValue,omitempty"` -} - -// ResourceGroupListResult is list of resource groups. -type ResourceGroupListResult struct { - autorest.Response `json:"-"` - Value *[]ResourceGroup `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// ResourceGroupListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client ResourceGroupListResult) ResourceGroupListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// ResourceGroupProperties is the resource group properties. -type ResourceGroupProperties struct { - ProvisioningState *string `json:"provisioningState,omitempty"` -} - -// ResourceListResult is list of resource groups. -type ResourceListResult struct { - autorest.Response `json:"-"` - Value *[]GenericResource `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// ResourceListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client ResourceListResult) ResourceListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// ResourceManagementError is -type ResourceManagementError struct { - Code *string `json:"code,omitempty"` - Message *string `json:"message,omitempty"` - Target *string `json:"target,omitempty"` -} - -// ResourceManagementErrorWithDetails is -type ResourceManagementErrorWithDetails struct { - Code *string `json:"code,omitempty"` - Message *string `json:"message,omitempty"` - Target *string `json:"target,omitempty"` - Details *[]ResourceManagementError `json:"details,omitempty"` -} - -// ResourceProviderOperationDefinition is resource provider operation -// information. -type ResourceProviderOperationDefinition struct { - Name *string `json:"name,omitempty"` - Display *ResourceProviderOperationDisplayProperties `json:"display,omitempty"` -} - -// ResourceProviderOperationDetailListResult is list of resource provider -// operations. -type ResourceProviderOperationDetailListResult struct { - autorest.Response `json:"-"` - Value *[]ResourceProviderOperationDefinition `json:"value,omitempty"` - NextLink *string `json:",omitempty"` -} - -// ResourceProviderOperationDetailListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client ResourceProviderOperationDetailListResult) ResourceProviderOperationDetailListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// ResourceProviderOperationDisplayProperties is resource provider operation's -// display properties. -type ResourceProviderOperationDisplayProperties struct { - Publisher *string `json:"publisher,omitempty"` - Provider *string `json:"provider,omitempty"` - Resource *string `json:"resource,omitempty"` - Operation *string `json:"operation,omitempty"` - Description *string `json:"description,omitempty"` -} - -// SubResource is -type SubResource struct { - ID *string `json:"id,omitempty"` -} - -// TagCount is tag count. -type TagCount struct { - Type *string `json:"type,omitempty"` - Value *string `json:"value,omitempty"` -} - -// TagDetails is tag details. -type TagDetails struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - TagName *string `json:"tagName,omitempty"` - Count *TagCount `json:"count,omitempty"` - Values *[]TagValue `json:"values,omitempty"` -} - -// TagsListResult is list of subscription tags. -type TagsListResult struct { - autorest.Response `json:"-"` - Value *[]TagDetails `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// TagsListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client TagsListResult) TagsListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// TagValue is tag information. -type TagValue struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - TagValueProperty *string `json:"tagValue,omitempty"` - Count *TagCount `json:"count,omitempty"` -} - -// TargetResource is target resource. -type TargetResource struct { - ID *string `json:"id,omitempty"` - ResourceName *string `json:"resourceName,omitempty"` - ResourceType *string `json:"resourceType,omitempty"` -} - -// TemplateLink is entity representing the reference to the template. -type TemplateLink struct { - URI *string `json:"uri,omitempty"` - ContentVersion *string `json:"contentVersion,omitempty"` -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/policyassignments.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/policyassignments.go deleted file mode 100644 index 7233c2bd..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/policyassignments.go +++ /dev/null @@ -1,786 +0,0 @@ -package resources - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// PolicyAssignmentsClient is the client for the PolicyAssignments methods of -// the Resources service. -type PolicyAssignmentsClient struct { - ManagementClient -} - -// NewPolicyAssignmentsClient creates an instance of the -// PolicyAssignmentsClient client. -func NewPolicyAssignmentsClient(subscriptionID string) PolicyAssignmentsClient { - return NewPolicyAssignmentsClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewPolicyAssignmentsClientWithBaseURI creates an instance of the -// PolicyAssignmentsClient client. -func NewPolicyAssignmentsClientWithBaseURI(baseURI string, subscriptionID string) PolicyAssignmentsClient { - return PolicyAssignmentsClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// Create create policy assignment. -// -// scope is scope. policyAssignmentName is policy assignment name. parameters -// is policy assignment. -func (client PolicyAssignmentsClient) Create(scope string, policyAssignmentName string, parameters PolicyAssignment) (result PolicyAssignment, err error) { - req, err := client.CreatePreparer(scope, policyAssignmentName, parameters) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "Create", nil, "Failure preparing request") - } - - resp, err := client.CreateSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "Create", resp, "Failure sending request") - } - - result, err = client.CreateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "Create", resp, "Failure responding to request") - } - - return -} - -// CreatePreparer prepares the Create request. -func (client PolicyAssignmentsClient) CreatePreparer(scope string, policyAssignmentName string, parameters PolicyAssignment) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "policyAssignmentName": url.QueryEscape(policyAssignmentName), - "scope": scope, - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateSender sends the Create request. The method will close the -// http.Response Body if it receives an error. -func (client PolicyAssignmentsClient) CreateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// CreateResponder handles the response to the Create request. The method always -// closes the http.Response Body. -func (client PolicyAssignmentsClient) CreateResponder(resp *http.Response) (result PolicyAssignment, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// CreateByID create policy assignment by Id. -// -// policyAssignmentID is policy assignment Id parameters is policy assignment. -func (client PolicyAssignmentsClient) CreateByID(policyAssignmentID string, parameters PolicyAssignment) (result PolicyAssignment, err error) { - req, err := client.CreateByIDPreparer(policyAssignmentID, parameters) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "CreateByID", nil, "Failure preparing request") - } - - resp, err := client.CreateByIDSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "CreateByID", resp, "Failure sending request") - } - - result, err = client.CreateByIDResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "CreateByID", resp, "Failure responding to request") - } - - return -} - -// CreateByIDPreparer prepares the CreateByID request. -func (client PolicyAssignmentsClient) CreateByIDPreparer(policyAssignmentID string, parameters PolicyAssignment) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "policyAssignmentId": policyAssignmentID, - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/{policyAssignmentId}"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateByIDSender sends the CreateByID request. The method will close the -// http.Response Body if it receives an error. -func (client PolicyAssignmentsClient) CreateByIDSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// CreateByIDResponder handles the response to the CreateByID request. The method always -// closes the http.Response Body. -func (client PolicyAssignmentsClient) CreateByIDResponder(resp *http.Response) (result PolicyAssignment, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// Delete delete policy assignment. -// -// scope is scope. policyAssignmentName is policy assignment name. -func (client PolicyAssignmentsClient) Delete(scope string, policyAssignmentName string) (result PolicyAssignment, err error) { - req, err := client.DeletePreparer(scope, policyAssignmentName) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "Delete", nil, "Failure preparing request") - } - - resp, err := client.DeleteSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "Delete", resp, "Failure sending request") - } - - result, err = client.DeleteResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "Delete", resp, "Failure responding to request") - } - - return -} - -// DeletePreparer prepares the Delete request. -func (client PolicyAssignmentsClient) DeletePreparer(scope string, policyAssignmentName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "policyAssignmentName": url.QueryEscape(policyAssignmentName), - "scope": scope, - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteSender sends the Delete request. The method will close the -// http.Response Body if it receives an error. -func (client PolicyAssignmentsClient) DeleteSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// DeleteResponder handles the response to the Delete request. The method always -// closes the http.Response Body. -func (client PolicyAssignmentsClient) DeleteResponder(resp *http.Response) (result PolicyAssignment, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// DeleteByID delete policy assignment. -// -// policyAssignmentID is policy assignment Id -func (client PolicyAssignmentsClient) DeleteByID(policyAssignmentID string) (result PolicyAssignment, err error) { - req, err := client.DeleteByIDPreparer(policyAssignmentID) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "DeleteByID", nil, "Failure preparing request") - } - - resp, err := client.DeleteByIDSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "DeleteByID", resp, "Failure sending request") - } - - result, err = client.DeleteByIDResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "DeleteByID", resp, "Failure responding to request") - } - - return -} - -// DeleteByIDPreparer prepares the DeleteByID request. -func (client PolicyAssignmentsClient) DeleteByIDPreparer(policyAssignmentID string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "policyAssignmentId": policyAssignmentID, - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/{policyAssignmentId}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteByIDSender sends the DeleteByID request. The method will close the -// http.Response Body if it receives an error. -func (client PolicyAssignmentsClient) DeleteByIDSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// DeleteByIDResponder handles the response to the DeleteByID request. The method always -// closes the http.Response Body. -func (client PolicyAssignmentsClient) DeleteByIDResponder(resp *http.Response) (result PolicyAssignment, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// Get get single policy assignment. -// -// scope is scope. policyAssignmentName is policy assignment name. -func (client PolicyAssignmentsClient) Get(scope string, policyAssignmentName string) (result PolicyAssignment, err error) { - req, err := client.GetPreparer(scope, policyAssignmentName) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client PolicyAssignmentsClient) GetPreparer(scope string, policyAssignmentName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "policyAssignmentName": url.QueryEscape(policyAssignmentName), - "scope": scope, - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client PolicyAssignmentsClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client PolicyAssignmentsClient) GetResponder(resp *http.Response) (result PolicyAssignment, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// GetByID get single policy assignment. -// -// policyAssignmentID is policy assignment Id -func (client PolicyAssignmentsClient) GetByID(policyAssignmentID string) (result PolicyAssignment, err error) { - req, err := client.GetByIDPreparer(policyAssignmentID) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "GetByID", nil, "Failure preparing request") - } - - resp, err := client.GetByIDSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "GetByID", resp, "Failure sending request") - } - - result, err = client.GetByIDResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "GetByID", resp, "Failure responding to request") - } - - return -} - -// GetByIDPreparer prepares the GetByID request. -func (client PolicyAssignmentsClient) GetByIDPreparer(policyAssignmentID string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "policyAssignmentId": policyAssignmentID, - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/{policyAssignmentId}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetByIDSender sends the GetByID request. The method will close the -// http.Response Body if it receives an error. -func (client PolicyAssignmentsClient) GetByIDSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetByIDResponder handles the response to the GetByID request. The method always -// closes the http.Response Body. -func (client PolicyAssignmentsClient) GetByIDResponder(resp *http.Response) (result PolicyAssignment, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List gets policy assignments of the subscription. -// -// filter is the filter to apply on the operation. -func (client PolicyAssignmentsClient) List(filter string) (result PolicyAssignmentListResult, err error) { - req, err := client.ListPreparer(filter) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client PolicyAssignmentsClient) ListPreparer(filter string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - if len(filter) > 0 { - queryParameters["$filter"] = filter - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policyAssignments"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client PolicyAssignmentsClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client PolicyAssignmentsClient) ListResponder(resp *http.Response) (result PolicyAssignmentListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client PolicyAssignmentsClient) ListNextResults(lastResults PolicyAssignmentListResult) (result PolicyAssignmentListResult, err error) { - req, err := lastResults.PolicyAssignmentListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "List", resp, "Failure responding to next results request request") - } - - return -} - -// ListForResource gets policy assignments of the resource. -// -// resourceGroupName is the name of the resource group. -// resourceProviderNamespace is the name of the resource provider. -// parentResourcePath is the parent resource path. resourceType is the -// resource type. resourceName is the resource name. filter is the filter to -// apply on the operation. -func (client PolicyAssignmentsClient) ListForResource(resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, filter string) (result PolicyAssignmentListResult, err error) { - req, err := client.ListForResourcePreparer(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, filter) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "ListForResource", nil, "Failure preparing request") - } - - resp, err := client.ListForResourceSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "ListForResource", resp, "Failure sending request") - } - - result, err = client.ListForResourceResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "ListForResource", resp, "Failure responding to request") - } - - return -} - -// ListForResourcePreparer prepares the ListForResource request. -func (client PolicyAssignmentsClient) ListForResourcePreparer(resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, filter string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "parentResourcePath": url.QueryEscape(parentResourcePath), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "resourceName": url.QueryEscape(resourceName), - "resourceProviderNamespace": url.QueryEscape(resourceProviderNamespace), - "resourceType": url.QueryEscape(resourceType), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - if len(filter) > 0 { - queryParameters["$filter"] = filter - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}providers/Microsoft.Authorization/policyAssignments"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListForResourceSender sends the ListForResource request. The method will close the -// http.Response Body if it receives an error. -func (client PolicyAssignmentsClient) ListForResourceSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListForResourceResponder handles the response to the ListForResource request. The method always -// closes the http.Response Body. -func (client PolicyAssignmentsClient) ListForResourceResponder(resp *http.Response) (result PolicyAssignmentListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListForResourceNextResults retrieves the next set of results, if any. -func (client PolicyAssignmentsClient) ListForResourceNextResults(lastResults PolicyAssignmentListResult) (result PolicyAssignmentListResult, err error) { - req, err := lastResults.PolicyAssignmentListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "ListForResource", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListForResourceSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "ListForResource", resp, "Failure sending next results request request") - } - - result, err = client.ListForResourceResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "ListForResource", resp, "Failure responding to next results request request") - } - - return -} - -// ListForResourceGroup gets policy assignments of the resource group. -// -// resourceGroupName is resource group name. filter is the filter to apply on -// the operation. -func (client PolicyAssignmentsClient) ListForResourceGroup(resourceGroupName string, filter string) (result PolicyAssignmentListResult, err error) { - req, err := client.ListForResourceGroupPreparer(resourceGroupName, filter) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "ListForResourceGroup", nil, "Failure preparing request") - } - - resp, err := client.ListForResourceGroupSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "ListForResourceGroup", resp, "Failure sending request") - } - - result, err = client.ListForResourceGroupResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "ListForResourceGroup", resp, "Failure responding to request") - } - - return -} - -// ListForResourceGroupPreparer prepares the ListForResourceGroup request. -func (client PolicyAssignmentsClient) ListForResourceGroupPreparer(resourceGroupName string, filter string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - if len(filter) > 0 { - queryParameters["$filter"] = filter - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListForResourceGroupSender sends the ListForResourceGroup request. The method will close the -// http.Response Body if it receives an error. -func (client PolicyAssignmentsClient) ListForResourceGroupSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListForResourceGroupResponder handles the response to the ListForResourceGroup request. The method always -// closes the http.Response Body. -func (client PolicyAssignmentsClient) ListForResourceGroupResponder(resp *http.Response) (result PolicyAssignmentListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListForResourceGroupNextResults retrieves the next set of results, if any. -func (client PolicyAssignmentsClient) ListForResourceGroupNextResults(lastResults PolicyAssignmentListResult) (result PolicyAssignmentListResult, err error) { - req, err := lastResults.PolicyAssignmentListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "ListForResourceGroup", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListForResourceGroupSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "ListForResourceGroup", resp, "Failure sending next results request request") - } - - result, err = client.ListForResourceGroupResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "ListForResourceGroup", resp, "Failure responding to next results request request") - } - - return -} - -// ListForScope gets policy assignments of the scope. -// -// scope is scope. filter is the filter to apply on the operation. -func (client PolicyAssignmentsClient) ListForScope(scope string, filter string) (result PolicyAssignmentListResult, err error) { - req, err := client.ListForScopePreparer(scope, filter) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "ListForScope", nil, "Failure preparing request") - } - - resp, err := client.ListForScopeSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "ListForScope", resp, "Failure sending request") - } - - result, err = client.ListForScopeResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "ListForScope", resp, "Failure responding to request") - } - - return -} - -// ListForScopePreparer prepares the ListForScope request. -func (client PolicyAssignmentsClient) ListForScopePreparer(scope string, filter string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "scope": scope, - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - if len(filter) > 0 { - queryParameters["$filter"] = filter - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/{scope}/providers/Microsoft.Authorization/policyAssignments"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListForScopeSender sends the ListForScope request. The method will close the -// http.Response Body if it receives an error. -func (client PolicyAssignmentsClient) ListForScopeSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListForScopeResponder handles the response to the ListForScope request. The method always -// closes the http.Response Body. -func (client PolicyAssignmentsClient) ListForScopeResponder(resp *http.Response) (result PolicyAssignmentListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListForScopeNextResults retrieves the next set of results, if any. -func (client PolicyAssignmentsClient) ListForScopeNextResults(lastResults PolicyAssignmentListResult) (result PolicyAssignmentListResult, err error) { - req, err := lastResults.PolicyAssignmentListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "ListForScope", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListForScopeSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "ListForScope", resp, "Failure sending next results request request") - } - - result, err = client.ListForScopeResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.PolicyAssignmentsClient", "ListForScope", resp, "Failure responding to next results request request") - } - - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/policydefinitions.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/policydefinitions.go deleted file mode 100644 index 0251447e..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/policydefinitions.go +++ /dev/null @@ -1,231 +0,0 @@ -package resources - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// PolicyDefinitionsClient is the client for the PolicyDefinitions methods of -// the Resources service. -type PolicyDefinitionsClient struct { - ManagementClient -} - -// NewPolicyDefinitionsClient creates an instance of the -// PolicyDefinitionsClient client. -func NewPolicyDefinitionsClient(subscriptionID string) PolicyDefinitionsClient { - return NewPolicyDefinitionsClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewPolicyDefinitionsClientWithBaseURI creates an instance of the -// PolicyDefinitionsClient client. -func NewPolicyDefinitionsClientWithBaseURI(baseURI string, subscriptionID string) PolicyDefinitionsClient { - return PolicyDefinitionsClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// CreateOrUpdate create or update policy definition. -// -// policyDefinitionName is the policy definition name. parameters is the -// policy definition properties -func (client PolicyDefinitionsClient) CreateOrUpdate(policyDefinitionName string, parameters PolicyDefinition) (result PolicyDefinition, err error) { - req, err := client.CreateOrUpdatePreparer(policyDefinitionName, parameters) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.PolicyDefinitionsClient", "CreateOrUpdate", nil, "Failure preparing request") - } - - resp, err := client.CreateOrUpdateSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.PolicyDefinitionsClient", "CreateOrUpdate", resp, "Failure sending request") - } - - result, err = client.CreateOrUpdateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.PolicyDefinitionsClient", "CreateOrUpdate", resp, "Failure responding to request") - } - - return -} - -// CreateOrUpdatePreparer prepares the CreateOrUpdate request. -func (client PolicyDefinitionsClient) CreateOrUpdatePreparer(policyDefinitionName string, parameters PolicyDefinition) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "policyDefinitionName": url.QueryEscape(policyDefinitionName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policydefinitions/{policyDefinitionName}"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the -// http.Response Body if it receives an error. -func (client PolicyDefinitionsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always -// closes the http.Response Body. -func (client PolicyDefinitionsClient) CreateOrUpdateResponder(resp *http.Response) (result PolicyDefinition, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// Delete deletes policy definition. -// -// policyDefinitionName is the policy definition name. -func (client PolicyDefinitionsClient) Delete(policyDefinitionName string) (result autorest.Response, err error) { - req, err := client.DeletePreparer(policyDefinitionName) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.PolicyDefinitionsClient", "Delete", nil, "Failure preparing request") - } - - resp, err := client.DeleteSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "resources.PolicyDefinitionsClient", "Delete", resp, "Failure sending request") - } - - result, err = client.DeleteResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.PolicyDefinitionsClient", "Delete", resp, "Failure responding to request") - } - - return -} - -// DeletePreparer prepares the Delete request. -func (client PolicyDefinitionsClient) DeletePreparer(policyDefinitionName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "policyDefinitionName": url.QueryEscape(policyDefinitionName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policydefinitions/{policyDefinitionName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteSender sends the Delete request. The method will close the -// http.Response Body if it receives an error. -func (client PolicyDefinitionsClient) DeleteSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// DeleteResponder handles the response to the Delete request. The method always -// closes the http.Response Body. -func (client PolicyDefinitionsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByClosing()) - result.Response = resp - return -} - -// Get gets policy definition. -// -// policyDefinitionName is the policy definition name. -func (client PolicyDefinitionsClient) Get(policyDefinitionName string) (result PolicyDefinition, err error) { - req, err := client.GetPreparer(policyDefinitionName) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.PolicyDefinitionsClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.PolicyDefinitionsClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.PolicyDefinitionsClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client PolicyDefinitionsClient) GetPreparer(policyDefinitionName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "policyDefinitionName": url.QueryEscape(policyDefinitionName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policydefinitions/{policyDefinitionName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client PolicyDefinitionsClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client PolicyDefinitionsClient) GetResponder(resp *http.Response) (result PolicyDefinition, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/provideroperationdetails.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/provideroperationdetails.go deleted file mode 100644 index 8b6f05a1..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/provideroperationdetails.go +++ /dev/null @@ -1,130 +0,0 @@ -package resources - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// ProviderOperationDetailsClient is the client for the -// ProviderOperationDetails methods of the Resources service. -type ProviderOperationDetailsClient struct { - ManagementClient -} - -// NewProviderOperationDetailsClient creates an instance of the -// ProviderOperationDetailsClient client. -func NewProviderOperationDetailsClient(subscriptionID string) ProviderOperationDetailsClient { - return NewProviderOperationDetailsClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewProviderOperationDetailsClientWithBaseURI creates an instance of the -// ProviderOperationDetailsClient client. -func NewProviderOperationDetailsClientWithBaseURI(baseURI string, subscriptionID string) ProviderOperationDetailsClient { - return ProviderOperationDetailsClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// List gets a list of resource providers. -// -// resourceProviderNamespace is resource identity. -func (client ProviderOperationDetailsClient) List(resourceProviderNamespace string, apiVersion string) (result ResourceProviderOperationDetailListResult, err error) { - req, err := client.ListPreparer(resourceProviderNamespace, apiVersion) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.ProviderOperationDetailsClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.ProviderOperationDetailsClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.ProviderOperationDetailsClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client ProviderOperationDetailsClient) ListPreparer(resourceProviderNamespace string, apiVersion string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceProviderNamespace": url.QueryEscape(resourceProviderNamespace), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/providers/{resourceProviderNamespace}/operations"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client ProviderOperationDetailsClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client ProviderOperationDetailsClient) ListResponder(resp *http.Response) (result ResourceProviderOperationDetailListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client ProviderOperationDetailsClient) ListNextResults(lastResults ResourceProviderOperationDetailListResult) (result ResourceProviderOperationDetailListResult, err error) { - req, err := lastResults.ResourceProviderOperationDetailListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.ProviderOperationDetailsClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.ProviderOperationDetailsClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.ProviderOperationDetailsClient", "List", resp, "Failure responding to next results request request") - } - - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/providers.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/providers.go deleted file mode 100644 index 0e870919..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/providers.go +++ /dev/null @@ -1,317 +0,0 @@ -package resources - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// ProvidersClient is the client for the Providers methods of the Resources -// service. -type ProvidersClient struct { - ManagementClient -} - -// NewProvidersClient creates an instance of the ProvidersClient client. -func NewProvidersClient(subscriptionID string) ProvidersClient { - return NewProvidersClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewProvidersClientWithBaseURI creates an instance of the ProvidersClient -// client. -func NewProvidersClientWithBaseURI(baseURI string, subscriptionID string) ProvidersClient { - return ProvidersClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// Get gets a resource provider. -// -// resourceProviderNamespace is namespace of the resource provider. -func (client ProvidersClient) Get(resourceProviderNamespace string) (result Provider, err error) { - req, err := client.GetPreparer(resourceProviderNamespace) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.ProvidersClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.ProvidersClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client ProvidersClient) GetPreparer(resourceProviderNamespace string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceProviderNamespace": url.QueryEscape(resourceProviderNamespace), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client ProvidersClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client ProvidersClient) GetResponder(resp *http.Response) (result Provider, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List gets a list of resource providers. -// -// top is query parameters. If null is passed returns all deployments. -func (client ProvidersClient) List(top *int32) (result ProviderListResult, err error) { - req, err := client.ListPreparer(top) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.ProvidersClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.ProvidersClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client ProvidersClient) ListPreparer(top *int32) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - if top != nil { - queryParameters["$top"] = top - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client ProvidersClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client ProvidersClient) ListResponder(resp *http.Response) (result ProviderListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client ProvidersClient) ListNextResults(lastResults ProviderListResult) (result ProviderListResult, err error) { - req, err := lastResults.ProviderListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.ProvidersClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.ProvidersClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "List", resp, "Failure responding to next results request request") - } - - return -} - -// Register registers provider to be used with a subscription. -// -// resourceProviderNamespace is namespace of the resource provider. -func (client ProvidersClient) Register(resourceProviderNamespace string) (result Provider, err error) { - req, err := client.RegisterPreparer(resourceProviderNamespace) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.ProvidersClient", "Register", nil, "Failure preparing request") - } - - resp, err := client.RegisterSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.ProvidersClient", "Register", resp, "Failure sending request") - } - - result, err = client.RegisterResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "Register", resp, "Failure responding to request") - } - - return -} - -// RegisterPreparer prepares the Register request. -func (client ProvidersClient) RegisterPreparer(resourceProviderNamespace string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceProviderNamespace": url.QueryEscape(resourceProviderNamespace), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/register"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// RegisterSender sends the Register request. The method will close the -// http.Response Body if it receives an error. -func (client ProvidersClient) RegisterSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// RegisterResponder handles the response to the Register request. The method always -// closes the http.Response Body. -func (client ProvidersClient) RegisterResponder(resp *http.Response) (result Provider, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// Unregister unregisters provider from a subscription. -// -// resourceProviderNamespace is namespace of the resource provider. -func (client ProvidersClient) Unregister(resourceProviderNamespace string) (result Provider, err error) { - req, err := client.UnregisterPreparer(resourceProviderNamespace) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.ProvidersClient", "Unregister", nil, "Failure preparing request") - } - - resp, err := client.UnregisterSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.ProvidersClient", "Unregister", resp, "Failure sending request") - } - - result, err = client.UnregisterResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.ProvidersClient", "Unregister", resp, "Failure responding to request") - } - - return -} - -// UnregisterPreparer prepares the Unregister request. -func (client ProvidersClient) UnregisterPreparer(resourceProviderNamespace string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceProviderNamespace": url.QueryEscape(resourceProviderNamespace), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/unregister"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// UnregisterSender sends the Unregister request. The method will close the -// http.Response Body if it receives an error. -func (client ProvidersClient) UnregisterSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// UnregisterResponder handles the response to the Unregister request. The method always -// closes the http.Response Body. -func (client ProvidersClient) UnregisterResponder(resp *http.Response) (result Provider, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/resources.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/resources.go deleted file mode 100644 index 3a1e2c01..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/resources.go +++ /dev/null @@ -1,478 +0,0 @@ -package resources - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// Client is the client for the Resources methods of the Resources service. -type Client struct { - ManagementClient -} - -// NewClient creates an instance of the Client client. -func NewClient(subscriptionID string) Client { - return NewClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewClientWithBaseURI creates an instance of the Client client. -func NewClientWithBaseURI(baseURI string, subscriptionID string) Client { - return Client{NewWithBaseURI(baseURI, subscriptionID)} -} - -// CheckExistence checks whether resource exists. -// -// resourceGroupName is the name of the resource group. The name is case -// insensitive. resourceProviderNamespace is resource identity. -// parentResourcePath is resource identity. resourceType is resource -// identity. resourceName is resource identity. -func (client Client) CheckExistence(resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, apiVersion string) (result autorest.Response, err error) { - req, err := client.CheckExistencePreparer(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.Client", "CheckExistence", nil, "Failure preparing request") - } - - resp, err := client.CheckExistenceSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "resources.Client", "CheckExistence", resp, "Failure sending request") - } - - result, err = client.CheckExistenceResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.Client", "CheckExistence", resp, "Failure responding to request") - } - - return -} - -// CheckExistencePreparer prepares the CheckExistence request. -func (client Client) CheckExistencePreparer(resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, apiVersion string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "parentResourcePath": parentResourcePath, - "resourceGroupName": url.QueryEscape(resourceGroupName), - "resourceName": url.QueryEscape(resourceName), - "resourceProviderNamespace": url.QueryEscape(resourceProviderNamespace), - "resourceType": resourceType, - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsHead(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CheckExistenceSender sends the CheckExistence request. The method will close the -// http.Response Body if it receives an error. -func (client Client) CheckExistenceSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// CheckExistenceResponder handles the response to the CheckExistence request. The method always -// closes the http.Response Body. -func (client Client) CheckExistenceResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent, http.StatusNotFound), - autorest.ByClosing()) - result.Response = resp - return -} - -// CreateOrUpdate create a resource. -// -// resourceGroupName is the name of the resource group. The name is case -// insensitive. resourceProviderNamespace is resource identity. -// parentResourcePath is resource identity. resourceType is resource -// identity. resourceName is resource identity. parameters is create or -// update resource parameters. -func (client Client) CreateOrUpdate(resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, apiVersion string, parameters GenericResource) (result GenericResource, err error) { - req, err := client.CreateOrUpdatePreparer(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion, parameters) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.Client", "CreateOrUpdate", nil, "Failure preparing request") - } - - resp, err := client.CreateOrUpdateSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.Client", "CreateOrUpdate", resp, "Failure sending request") - } - - result, err = client.CreateOrUpdateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.Client", "CreateOrUpdate", resp, "Failure responding to request") - } - - return -} - -// CreateOrUpdatePreparer prepares the CreateOrUpdate request. -func (client Client) CreateOrUpdatePreparer(resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, apiVersion string, parameters GenericResource) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "parentResourcePath": parentResourcePath, - "resourceGroupName": url.QueryEscape(resourceGroupName), - "resourceName": url.QueryEscape(resourceName), - "resourceProviderNamespace": url.QueryEscape(resourceProviderNamespace), - "resourceType": resourceType, - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the -// http.Response Body if it receives an error. -func (client Client) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always -// closes the http.Response Body. -func (client Client) CreateOrUpdateResponder(resp *http.Response) (result GenericResource, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusCreated, http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// Delete delete resource and all of its resources. -// -// resourceGroupName is the name of the resource group. The name is case -// insensitive. resourceProviderNamespace is resource identity. -// parentResourcePath is resource identity. resourceType is resource -// identity. resourceName is resource identity. -func (client Client) Delete(resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, apiVersion string) (result autorest.Response, err error) { - req, err := client.DeletePreparer(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.Client", "Delete", nil, "Failure preparing request") - } - - resp, err := client.DeleteSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "resources.Client", "Delete", resp, "Failure sending request") - } - - result, err = client.DeleteResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.Client", "Delete", resp, "Failure responding to request") - } - - return -} - -// DeletePreparer prepares the Delete request. -func (client Client) DeletePreparer(resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, apiVersion string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "parentResourcePath": parentResourcePath, - "resourceGroupName": url.QueryEscape(resourceGroupName), - "resourceName": url.QueryEscape(resourceName), - "resourceProviderNamespace": url.QueryEscape(resourceProviderNamespace), - "resourceType": resourceType, - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteSender sends the Delete request. The method will close the -// http.Response Body if it receives an error. -func (client Client) DeleteSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// DeleteResponder handles the response to the Delete request. The method always -// closes the http.Response Body. -func (client Client) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent, http.StatusAccepted), - autorest.ByClosing()) - result.Response = resp - return -} - -// Get returns a resource belonging to a resource group. -// -// resourceGroupName is the name of the resource group. The name is case -// insensitive. resourceProviderNamespace is resource identity. -// parentResourcePath is resource identity. resourceType is resource -// identity. resourceName is resource identity. -func (client Client) Get(resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, apiVersion string) (result GenericResource, err error) { - req, err := client.GetPreparer(resourceGroupName, resourceProviderNamespace, parentResourcePath, resourceType, resourceName, apiVersion) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.Client", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.Client", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.Client", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client Client) GetPreparer(resourceGroupName string, resourceProviderNamespace string, parentResourcePath string, resourceType string, resourceName string, apiVersion string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "parentResourcePath": parentResourcePath, - "resourceGroupName": url.QueryEscape(resourceGroupName), - "resourceName": url.QueryEscape(resourceName), - "resourceProviderNamespace": url.QueryEscape(resourceProviderNamespace), - "resourceType": resourceType, - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client Client) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client Client) GetResponder(resp *http.Response) (result GenericResource, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List get all of the resources under a subscription. -// -// filter is the filter to apply on the operation. top is query parameters. If -// null is passed returns all resource groups. -func (client Client) List(filter string, top *int32) (result ResourceListResult, err error) { - req, err := client.ListPreparer(filter, top) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.Client", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.Client", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.Client", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client Client) ListPreparer(filter string, top *int32) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - if len(filter) > 0 { - queryParameters["$filter"] = filter - } - if top != nil { - queryParameters["$top"] = top - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resources"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client Client) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client Client) ListResponder(resp *http.Response) (result ResourceListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client Client) ListNextResults(lastResults ResourceListResult) (result ResourceListResult, err error) { - req, err := lastResults.ResourceListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.Client", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.Client", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.Client", "List", resp, "Failure responding to next results request request") - } - - return -} - -// MoveResources begin moving resources.To determine whether the operation has -// finished processing the request, call GetLongRunningOperationStatus. This -// method may poll for completion. Polling can be canceled by passing the -// cancel channel argument. The channel will be used to cancel polling and -// any outstanding HTTP requests. -// -// sourceResourceGroupName is source resource group name. parameters is move -// resources' parameters. -func (client Client) MoveResources(sourceResourceGroupName string, parameters MoveInfo, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.MoveResourcesPreparer(sourceResourceGroupName, parameters, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.Client", "MoveResources", nil, "Failure preparing request") - } - - resp, err := client.MoveResourcesSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "resources.Client", "MoveResources", resp, "Failure sending request") - } - - result, err = client.MoveResourcesResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.Client", "MoveResources", resp, "Failure responding to request") - } - - return -} - -// MoveResourcesPreparer prepares the MoveResources request. -func (client Client) MoveResourcesPreparer(sourceResourceGroupName string, parameters MoveInfo, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "sourceResourceGroupName": url.QueryEscape(sourceResourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{sourceResourceGroupName}/moveResources"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// MoveResourcesSender sends the MoveResources request. The method will close the -// http.Response Body if it receives an error. -func (client Client) MoveResourcesSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// MoveResourcesResponder handles the response to the MoveResources request. The method always -// closes the http.Response Body. -func (client Client) MoveResourcesResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), - autorest.ByClosing()) - result.Response = resp - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/tags.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/tags.go deleted file mode 100644 index 7e599280..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/tags.go +++ /dev/null @@ -1,372 +0,0 @@ -package resources - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// TagsClient is the client for the Tags methods of the Resources service. -type TagsClient struct { - ManagementClient -} - -// NewTagsClient creates an instance of the TagsClient client. -func NewTagsClient(subscriptionID string) TagsClient { - return NewTagsClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewTagsClientWithBaseURI creates an instance of the TagsClient client. -func NewTagsClientWithBaseURI(baseURI string, subscriptionID string) TagsClient { - return TagsClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// CreateOrUpdate create a subscription resource tag. -// -// tagName is the name of the tag. -func (client TagsClient) CreateOrUpdate(tagName string) (result TagDetails, err error) { - req, err := client.CreateOrUpdatePreparer(tagName) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.TagsClient", "CreateOrUpdate", nil, "Failure preparing request") - } - - resp, err := client.CreateOrUpdateSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.TagsClient", "CreateOrUpdate", resp, "Failure sending request") - } - - result, err = client.CreateOrUpdateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.TagsClient", "CreateOrUpdate", resp, "Failure responding to request") - } - - return -} - -// CreateOrUpdatePreparer prepares the CreateOrUpdate request. -func (client TagsClient) CreateOrUpdatePreparer(tagName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "tagName": url.QueryEscape(tagName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/tagNames/{tagName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the -// http.Response Body if it receives an error. -func (client TagsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always -// closes the http.Response Body. -func (client TagsClient) CreateOrUpdateResponder(resp *http.Response) (result TagDetails, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// CreateOrUpdateValue create a subscription resource tag value. -// -// tagName is the name of the tag. tagValue is the value of the tag. -func (client TagsClient) CreateOrUpdateValue(tagName string, tagValue string) (result TagValue, err error) { - req, err := client.CreateOrUpdateValuePreparer(tagName, tagValue) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.TagsClient", "CreateOrUpdateValue", nil, "Failure preparing request") - } - - resp, err := client.CreateOrUpdateValueSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.TagsClient", "CreateOrUpdateValue", resp, "Failure sending request") - } - - result, err = client.CreateOrUpdateValueResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.TagsClient", "CreateOrUpdateValue", resp, "Failure responding to request") - } - - return -} - -// CreateOrUpdateValuePreparer prepares the CreateOrUpdateValue request. -func (client TagsClient) CreateOrUpdateValuePreparer(tagName string, tagValue string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "tagName": url.QueryEscape(tagName), - "tagValue": url.QueryEscape(tagValue), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/tagNames/{tagName}/tagValues/{tagValue}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateOrUpdateValueSender sends the CreateOrUpdateValue request. The method will close the -// http.Response Body if it receives an error. -func (client TagsClient) CreateOrUpdateValueSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// CreateOrUpdateValueResponder handles the response to the CreateOrUpdateValue request. The method always -// closes the http.Response Body. -func (client TagsClient) CreateOrUpdateValueResponder(resp *http.Response) (result TagValue, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// Delete delete a subscription resource tag. -// -// tagName is the name of the tag. -func (client TagsClient) Delete(tagName string) (result autorest.Response, err error) { - req, err := client.DeletePreparer(tagName) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.TagsClient", "Delete", nil, "Failure preparing request") - } - - resp, err := client.DeleteSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "resources.TagsClient", "Delete", resp, "Failure sending request") - } - - result, err = client.DeleteResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.TagsClient", "Delete", resp, "Failure responding to request") - } - - return -} - -// DeletePreparer prepares the Delete request. -func (client TagsClient) DeletePreparer(tagName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "tagName": url.QueryEscape(tagName), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/tagNames/{tagName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteSender sends the Delete request. The method will close the -// http.Response Body if it receives an error. -func (client TagsClient) DeleteSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// DeleteResponder handles the response to the Delete request. The method always -// closes the http.Response Body. -func (client TagsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent), - autorest.ByClosing()) - result.Response = resp - return -} - -// DeleteValue delete a subscription resource tag value. -// -// tagName is the name of the tag. tagValue is the value of the tag. -func (client TagsClient) DeleteValue(tagName string, tagValue string) (result autorest.Response, err error) { - req, err := client.DeleteValuePreparer(tagName, tagValue) - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.TagsClient", "DeleteValue", nil, "Failure preparing request") - } - - resp, err := client.DeleteValueSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "resources.TagsClient", "DeleteValue", resp, "Failure sending request") - } - - result, err = client.DeleteValueResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.TagsClient", "DeleteValue", resp, "Failure responding to request") - } - - return -} - -// DeleteValuePreparer prepares the DeleteValue request. -func (client TagsClient) DeleteValuePreparer(tagName string, tagValue string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "subscriptionId": url.QueryEscape(client.SubscriptionID), - "tagName": url.QueryEscape(tagName), - "tagValue": url.QueryEscape(tagValue), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/tagNames/{tagName}/tagValues/{tagValue}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteValueSender sends the DeleteValue request. The method will close the -// http.Response Body if it receives an error. -func (client TagsClient) DeleteValueSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// DeleteValueResponder handles the response to the DeleteValue request. The method always -// closes the http.Response Body. -func (client TagsClient) DeleteValueResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent), - autorest.ByClosing()) - result.Response = resp - return -} - -// List get a list of subscription resource tags. -func (client TagsClient) List() (result TagsListResult, err error) { - req, err := client.ListPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.TagsClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.TagsClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.TagsClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client TagsClient) ListPreparer() (*http.Request, error) { - pathParameters := map[string]interface{}{ - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/tagNames"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client TagsClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client TagsClient) ListResponder(resp *http.Response) (result TagsListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client TagsClient) ListNextResults(lastResults TagsListResult) (result TagsListResult, err error) { - req, err := lastResults.TagsListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "resources.TagsClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "resources.TagsClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "resources.TagsClient", "List", resp, "Failure responding to next results request request") - } - - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/version.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/version.go deleted file mode 100644 index 9e7e9f1e..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/resources/version.go +++ /dev/null @@ -1,43 +0,0 @@ -package resources - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "fmt" -) - -const ( - major = "2" - minor = "1" - patch = "1" - // Always begin a "tag" with a dash (as per http://semver.org) - tag = "-beta" - semVerFormat = "%s.%s.%s%s" - userAgentFormat = "Azure-SDK-for-Go/%s arm-%s/%s" -) - -// UserAgent returns the UserAgent string to use when sending http.Requests. -func UserAgent() string { - return fmt.Sprintf(userAgentFormat, Version(), "resources", "2015-11-01") -} - -// Version returns the semantic version (see http://semver.org) of the client. -func Version() string { - return fmt.Sprintf(semVerFormat, major, minor, patch, tag) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/subscriptions/client.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/subscriptions/client.go deleted file mode 100644 index 5952ed76..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/subscriptions/client.go +++ /dev/null @@ -1,282 +0,0 @@ -// Package subscriptions implements the Azure ARM Subscriptions service API -// version 2015-11-01. -// -package subscriptions - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -const ( - // APIVersion is the version of the Subscriptions - APIVersion = "2015-11-01" - - // DefaultBaseURI is the default URI used for the service Subscriptions - DefaultBaseURI = "https://management.azure.com" -) - -// ManagementClient is the base client for Subscriptions. -type ManagementClient struct { - autorest.Client - BaseURI string - SubscriptionID string -} - -// New creates an instance of the ManagementClient client. -func New(subscriptionID string) ManagementClient { - return NewWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewWithBaseURI creates an instance of the ManagementClient client. -func NewWithBaseURI(baseURI string, subscriptionID string) ManagementClient { - return ManagementClient{ - Client: autorest.NewClientWithUserAgent(UserAgent()), - BaseURI: baseURI, - SubscriptionID: subscriptionID, - } -} - -// Get gets details about particular subscription. -// -// subscriptionID is id of the subscription. -func (client ManagementClient) Get(subscriptionID string) (result Subscription, err error) { - req, err := client.GetPreparer(subscriptionID) - if err != nil { - return result, autorest.NewErrorWithError(err, "subscriptions.ManagementClient", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "subscriptions.ManagementClient", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "subscriptions.ManagementClient", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client ManagementClient) GetPreparer(subscriptionID string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "subscriptionId": url.QueryEscape(subscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client ManagementClient) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client ManagementClient) GetResponder(resp *http.Response) (result Subscription, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List gets a list of the subscriptionIds. -func (client ManagementClient) List() (result SubscriptionListResult, err error) { - req, err := client.ListPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "subscriptions.ManagementClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "subscriptions.ManagementClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "subscriptions.ManagementClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client ManagementClient) ListPreparer() (*http.Request, error) { - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions"), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client ManagementClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client ManagementClient) ListResponder(resp *http.Response) (result SubscriptionListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client ManagementClient) ListNextResults(lastResults SubscriptionListResult) (result SubscriptionListResult, err error) { - req, err := lastResults.SubscriptionListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "subscriptions.ManagementClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "subscriptions.ManagementClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "subscriptions.ManagementClient", "List", resp, "Failure responding to next results request request") - } - - return -} - -// ListLocations gets a list of the subscription locations. -// -// subscriptionID is id of the subscription -func (client ManagementClient) ListLocations(subscriptionID string) (result LocationListResult, err error) { - req, err := client.ListLocationsPreparer(subscriptionID) - if err != nil { - return result, autorest.NewErrorWithError(err, "subscriptions.ManagementClient", "ListLocations", nil, "Failure preparing request") - } - - resp, err := client.ListLocationsSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "subscriptions.ManagementClient", "ListLocations", resp, "Failure sending request") - } - - result, err = client.ListLocationsResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "subscriptions.ManagementClient", "ListLocations", resp, "Failure responding to request") - } - - return -} - -// ListLocationsPreparer prepares the ListLocations request. -func (client ManagementClient) ListLocationsPreparer(subscriptionID string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "subscriptionId": url.QueryEscape(subscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/locations"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListLocationsSender sends the ListLocations request. The method will close the -// http.Response Body if it receives an error. -func (client ManagementClient) ListLocationsSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListLocationsResponder handles the response to the ListLocations request. The method always -// closes the http.Response Body. -func (client ManagementClient) ListLocationsResponder(resp *http.Response) (result LocationListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListLocationsNextResults retrieves the next set of results, if any. -func (client ManagementClient) ListLocationsNextResults(lastResults LocationListResult) (result LocationListResult, err error) { - req, err := lastResults.LocationListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "subscriptions.ManagementClient", "ListLocations", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListLocationsSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "subscriptions.ManagementClient", "ListLocations", resp, "Failure sending next results request request") - } - - result, err = client.ListLocationsResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "subscriptions.ManagementClient", "ListLocations", resp, "Failure responding to next results request request") - } - - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/subscriptions/models.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/subscriptions/models.go deleted file mode 100644 index 31533da0..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/subscriptions/models.go +++ /dev/null @@ -1,107 +0,0 @@ -package subscriptions - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/to" - "net/http" -) - -// Location is location information. -type Location struct { - ID *string `json:"id,omitempty"` - SubscriptionID *string `json:"subscriptionId,omitempty"` - Name *string `json:"name,omitempty"` - DisplayName *string `json:"displayName,omitempty"` - Latitude *string `json:"latitude,omitempty"` - Longitude *string `json:"longitude,omitempty"` -} - -// LocationListResult is location list operation response. -type LocationListResult struct { - autorest.Response `json:"-"` - Value *[]Location `json:"value,omitempty"` - NextLink *string `json:",omitempty"` -} - -// LocationListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client LocationListResult) LocationListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// Subscription is subscription information. -type Subscription struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - SubscriptionID *string `json:"subscriptionId,omitempty"` - DisplayName *string `json:"displayName,omitempty"` - State *string `json:"state,omitempty"` -} - -// SubscriptionListResult is subscription list operation response. -type SubscriptionListResult struct { - autorest.Response `json:"-"` - Value *[]Subscription `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// SubscriptionListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client SubscriptionListResult) SubscriptionListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} - -// TenantIDDescription is tenant Id information -type TenantIDDescription struct { - ID *string `json:"id,omitempty"` - TenantID *string `json:"tenantId,omitempty"` -} - -// TenantListResult is tenant Ids information. -type TenantListResult struct { - autorest.Response `json:"-"` - Value *[]TenantIDDescription `json:"value,omitempty"` - NextLink *string `json:"nextLink,omitempty"` -} - -// TenantListResultPreparer prepares a request to retrieve the next set of results. It returns -// nil if no more results exist. -func (client TenantListResult) TenantListResultPreparer() (*http.Request, error) { - if client.NextLink == nil || len(to.String(client.NextLink)) <= 0 { - return nil, nil - } - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(to.String(client.NextLink))) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/subscriptions/subscriptions.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/subscriptions/subscriptions.go deleted file mode 100644 index fe3c255f..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/subscriptions/subscriptions.go +++ /dev/null @@ -1,266 +0,0 @@ -package subscriptions - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// Client is the client for the Subscriptions methods of the Subscriptions -// service. -type Client struct { - ManagementClient -} - -// NewClient creates an instance of the Client client. -func NewClient(subscriptionID string) Client { - return NewClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewClientWithBaseURI creates an instance of the Client client. -func NewClientWithBaseURI(baseURI string, subscriptionID string) Client { - return Client{NewWithBaseURI(baseURI, subscriptionID)} -} - -// Get gets details about particular subscription. -// -// subscriptionID is id of the subscription. -func (client Client) Get(subscriptionID string) (result Subscription, err error) { - req, err := client.GetPreparer(subscriptionID) - if err != nil { - return result, autorest.NewErrorWithError(err, "subscriptions.Client", "Get", nil, "Failure preparing request") - } - - resp, err := client.GetSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "subscriptions.Client", "Get", resp, "Failure sending request") - } - - result, err = client.GetResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "subscriptions.Client", "Get", resp, "Failure responding to request") - } - - return -} - -// GetPreparer prepares the Get request. -func (client Client) GetPreparer(subscriptionID string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "subscriptionId": url.QueryEscape(subscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetSender sends the Get request. The method will close the -// http.Response Body if it receives an error. -func (client Client) GetSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetResponder handles the response to the Get request. The method always -// closes the http.Response Body. -func (client Client) GetResponder(resp *http.Response) (result Subscription, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List gets a list of the subscriptionIds. -func (client Client) List() (result SubscriptionListResult, err error) { - req, err := client.ListPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "subscriptions.Client", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "subscriptions.Client", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "subscriptions.Client", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client Client) ListPreparer() (*http.Request, error) { - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions"), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client Client) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client Client) ListResponder(resp *http.Response) (result SubscriptionListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client Client) ListNextResults(lastResults SubscriptionListResult) (result SubscriptionListResult, err error) { - req, err := lastResults.SubscriptionListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "subscriptions.Client", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "subscriptions.Client", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "subscriptions.Client", "List", resp, "Failure responding to next results request request") - } - - return -} - -// ListLocations gets a list of the subscription locations. -// -// subscriptionID is id of the subscription -func (client Client) ListLocations(subscriptionID string) (result LocationListResult, err error) { - req, err := client.ListLocationsPreparer(subscriptionID) - if err != nil { - return result, autorest.NewErrorWithError(err, "subscriptions.Client", "ListLocations", nil, "Failure preparing request") - } - - resp, err := client.ListLocationsSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "subscriptions.Client", "ListLocations", resp, "Failure sending request") - } - - result, err = client.ListLocationsResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "subscriptions.Client", "ListLocations", resp, "Failure responding to request") - } - - return -} - -// ListLocationsPreparer prepares the ListLocations request. -func (client Client) ListLocationsPreparer(subscriptionID string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "subscriptionId": url.QueryEscape(subscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/locations"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListLocationsSender sends the ListLocations request. The method will close the -// http.Response Body if it receives an error. -func (client Client) ListLocationsSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListLocationsResponder handles the response to the ListLocations request. The method always -// closes the http.Response Body. -func (client Client) ListLocationsResponder(resp *http.Response) (result LocationListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListLocationsNextResults retrieves the next set of results, if any. -func (client Client) ListLocationsNextResults(lastResults LocationListResult) (result LocationListResult, err error) { - req, err := lastResults.LocationListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "subscriptions.Client", "ListLocations", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListLocationsSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "subscriptions.Client", "ListLocations", resp, "Failure sending next results request request") - } - - result, err = client.ListLocationsResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "subscriptions.Client", "ListLocations", resp, "Failure responding to next results request request") - } - - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/subscriptions/tenants.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/subscriptions/tenants.go deleted file mode 100644 index 136133a1..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/subscriptions/tenants.go +++ /dev/null @@ -1,119 +0,0 @@ -package subscriptions - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" -) - -// TenantsClient is the client for the Tenants methods of the Subscriptions -// service. -type TenantsClient struct { - ManagementClient -} - -// NewTenantsClient creates an instance of the TenantsClient client. -func NewTenantsClient(subscriptionID string) TenantsClient { - return NewTenantsClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewTenantsClientWithBaseURI creates an instance of the TenantsClient client. -func NewTenantsClientWithBaseURI(baseURI string, subscriptionID string) TenantsClient { - return TenantsClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// List gets a list of the tenantIds. -func (client TenantsClient) List() (result TenantListResult, err error) { - req, err := client.ListPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "subscriptions.TenantsClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "subscriptions.TenantsClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "subscriptions.TenantsClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client TenantsClient) ListPreparer() (*http.Request, error) { - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/tenants"), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client TenantsClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client TenantsClient) ListResponder(resp *http.Response) (result TenantListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListNextResults retrieves the next set of results, if any. -func (client TenantsClient) ListNextResults(lastResults TenantListResult) (result TenantListResult, err error) { - req, err := lastResults.TenantListResultPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "subscriptions.TenantsClient", "List", nil, "Failure preparing next results request request") - } - if req == nil { - return - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "subscriptions.TenantsClient", "List", resp, "Failure sending next results request request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "subscriptions.TenantsClient", "List", resp, "Failure responding to next results request request") - } - - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/subscriptions/version.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/subscriptions/version.go deleted file mode 100644 index 257916f8..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/resources/subscriptions/version.go +++ /dev/null @@ -1,43 +0,0 @@ -package subscriptions - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "fmt" -) - -const ( - major = "2" - minor = "1" - patch = "1" - // Always begin a "tag" with a dash (as per http://semver.org) - tag = "-beta" - semVerFormat = "%s.%s.%s%s" - userAgentFormat = "Azure-SDK-for-Go/%s arm-%s/%s" -) - -// UserAgent returns the UserAgent string to use when sending http.Requests. -func UserAgent() string { - return fmt.Sprintf(userAgentFormat, Version(), "subscriptions", "2015-11-01") -} - -// Version returns the semantic version (see http://semver.org) of the client. -func Version() string { - return fmt.Sprintf(semVerFormat, major, minor, patch, tag) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/accounts.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/accounts.go deleted file mode 100644 index 4aef6a56..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/accounts.go +++ /dev/null @@ -1,653 +0,0 @@ -package storage - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// AccountsClient is the the Storage Management Client. -type AccountsClient struct { - ManagementClient -} - -// NewAccountsClient creates an instance of the AccountsClient client. -func NewAccountsClient(subscriptionID string) AccountsClient { - return NewAccountsClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewAccountsClientWithBaseURI creates an instance of the AccountsClient -// client. -func NewAccountsClientWithBaseURI(baseURI string, subscriptionID string) AccountsClient { - return AccountsClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// CheckNameAvailability checks that account name is valid and is not in use. -// -// accountName is the name of the storage account within the specified -// resource group. Storage account names must be between 3 and 24 characters -// in length and use numbers and lower-case letters only. -func (client AccountsClient) CheckNameAvailability(accountName AccountCheckNameAvailabilityParameters) (result CheckNameAvailabilityResult, err error) { - req, err := client.CheckNameAvailabilityPreparer(accountName) - if err != nil { - return result, autorest.NewErrorWithError(err, "storage.AccountsClient", "CheckNameAvailability", nil, "Failure preparing request") - } - - resp, err := client.CheckNameAvailabilitySender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "storage.AccountsClient", "CheckNameAvailability", resp, "Failure sending request") - } - - result, err = client.CheckNameAvailabilityResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "storage.AccountsClient", "CheckNameAvailability", resp, "Failure responding to request") - } - - return -} - -// CheckNameAvailabilityPreparer prepares the CheckNameAvailability request. -func (client AccountsClient) CheckNameAvailabilityPreparer(accountName AccountCheckNameAvailabilityParameters) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Storage/checkNameAvailability"), - autorest.WithJSON(accountName), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CheckNameAvailabilitySender sends the CheckNameAvailability request. The method will close the -// http.Response Body if it receives an error. -func (client AccountsClient) CheckNameAvailabilitySender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// CheckNameAvailabilityResponder handles the response to the CheckNameAvailability request. The method always -// closes the http.Response Body. -func (client AccountsClient) CheckNameAvailabilityResponder(resp *http.Response) (result CheckNameAvailabilityResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// Create asynchronously creates a new storage account with the specified -// parameters. Existing accounts cannot be updated with this API and should -// instead use the Update Storage Account API. If an account is already -// created and subsequent PUT request is issued with exact same set of -// properties, then HTTP 200 would be returned. This method may poll for -// completion. Polling can be canceled by passing the cancel channel -// argument. The channel will be used to cancel polling and any outstanding -// HTTP requests. -// -// resourceGroupName is the name of the resource group within the user's -// subscription. accountName is the name of the storage account within the -// specified resource group. Storage account names must be between 3 and 24 -// characters in length and use numbers and lower-case letters only. -// parameters is the parameters to provide for the created account. -func (client AccountsClient) Create(resourceGroupName string, accountName string, parameters AccountCreateParameters, cancel <-chan struct{}) (result autorest.Response, err error) { - req, err := client.CreatePreparer(resourceGroupName, accountName, parameters, cancel) - if err != nil { - return result, autorest.NewErrorWithError(err, "storage.AccountsClient", "Create", nil, "Failure preparing request") - } - - resp, err := client.CreateSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "storage.AccountsClient", "Create", resp, "Failure sending request") - } - - result, err = client.CreateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "storage.AccountsClient", "Create", resp, "Failure responding to request") - } - - return -} - -// CreatePreparer prepares the Create request. -func (client AccountsClient) CreatePreparer(resourceGroupName string, accountName string, parameters AccountCreateParameters, cancel <-chan struct{}) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "accountName": url.QueryEscape(accountName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{Cancel: cancel}, - autorest.AsJSON(), - autorest.AsPut(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// CreateSender sends the Create request. The method will close the -// http.Response Body if it receives an error. -func (client AccountsClient) CreateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, - req, - azure.DoPollForAsynchronous(client.PollingDelay)) -} - -// CreateResponder handles the response to the Create request. The method always -// closes the http.Response Body. -func (client AccountsClient) CreateResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), - autorest.ByClosing()) - result.Response = resp - return -} - -// Delete deletes a storage account in Microsoft Azure. -// -// resourceGroupName is the name of the resource group within the user's -// subscription. accountName is the name of the storage account within the -// specified resource group. Storage account names must be between 3 and 24 -// characters in length and use numbers and lower-case letters only. -func (client AccountsClient) Delete(resourceGroupName string, accountName string) (result autorest.Response, err error) { - req, err := client.DeletePreparer(resourceGroupName, accountName) - if err != nil { - return result, autorest.NewErrorWithError(err, "storage.AccountsClient", "Delete", nil, "Failure preparing request") - } - - resp, err := client.DeleteSender(req) - if err != nil { - result.Response = resp - return result, autorest.NewErrorWithError(err, "storage.AccountsClient", "Delete", resp, "Failure sending request") - } - - result, err = client.DeleteResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "storage.AccountsClient", "Delete", resp, "Failure responding to request") - } - - return -} - -// DeletePreparer prepares the Delete request. -func (client AccountsClient) DeletePreparer(resourceGroupName string, accountName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "accountName": url.QueryEscape(accountName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsDelete(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// DeleteSender sends the Delete request. The method will close the -// http.Response Body if it receives an error. -func (client AccountsClient) DeleteSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// DeleteResponder handles the response to the Delete request. The method always -// closes the http.Response Body. -func (client AccountsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent), - autorest.ByClosing()) - result.Response = resp - return -} - -// GetProperties returns the properties for the specified storage account -// including but not limited to name, account type, location, and account -// status. The ListKeys operation should be used to retrieve storage keys. -// -// resourceGroupName is the name of the resource group within the user's -// subscription. accountName is the name of the storage account within the -// specified resource group. Storage account names must be between 3 and 24 -// characters in length and use numbers and lower-case letters only. -func (client AccountsClient) GetProperties(resourceGroupName string, accountName string) (result Account, err error) { - req, err := client.GetPropertiesPreparer(resourceGroupName, accountName) - if err != nil { - return result, autorest.NewErrorWithError(err, "storage.AccountsClient", "GetProperties", nil, "Failure preparing request") - } - - resp, err := client.GetPropertiesSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "storage.AccountsClient", "GetProperties", resp, "Failure sending request") - } - - result, err = client.GetPropertiesResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "storage.AccountsClient", "GetProperties", resp, "Failure responding to request") - } - - return -} - -// GetPropertiesPreparer prepares the GetProperties request. -func (client AccountsClient) GetPropertiesPreparer(resourceGroupName string, accountName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "accountName": url.QueryEscape(accountName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// GetPropertiesSender sends the GetProperties request. The method will close the -// http.Response Body if it receives an error. -func (client AccountsClient) GetPropertiesSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// GetPropertiesResponder handles the response to the GetProperties request. The method always -// closes the http.Response Body. -func (client AccountsClient) GetPropertiesResponder(resp *http.Response) (result Account, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// List lists all the storage accounts available under the subscription. Note -// that storage keys are not returned; use the ListKeys operation for this. -func (client AccountsClient) List() (result AccountListResult, err error) { - req, err := client.ListPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "storage.AccountsClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "storage.AccountsClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "storage.AccountsClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client AccountsClient) ListPreparer() (*http.Request, error) { - pathParameters := map[string]interface{}{ - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Storage/storageAccounts"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client AccountsClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client AccountsClient) ListResponder(resp *http.Response) (result AccountListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListByResourceGroup lists all the storage accounts available under the -// given resource group. Note that storage keys are not returned; use the -// ListKeys operation for this. -// -// resourceGroupName is the name of the resource group within the user's -// subscription. -func (client AccountsClient) ListByResourceGroup(resourceGroupName string) (result AccountListResult, err error) { - req, err := client.ListByResourceGroupPreparer(resourceGroupName) - if err != nil { - return result, autorest.NewErrorWithError(err, "storage.AccountsClient", "ListByResourceGroup", nil, "Failure preparing request") - } - - resp, err := client.ListByResourceGroupSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "storage.AccountsClient", "ListByResourceGroup", resp, "Failure sending request") - } - - result, err = client.ListByResourceGroupResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "storage.AccountsClient", "ListByResourceGroup", resp, "Failure responding to request") - } - - return -} - -// ListByResourceGroupPreparer prepares the ListByResourceGroup request. -func (client AccountsClient) ListByResourceGroupPreparer(resourceGroupName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the -// http.Response Body if it receives an error. -func (client AccountsClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always -// closes the http.Response Body. -func (client AccountsClient) ListByResourceGroupResponder(resp *http.Response) (result AccountListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// ListKeys lists the access keys for the specified storage account. -// -// resourceGroupName is the name of the resource group. accountName is the -// name of the storage account. -func (client AccountsClient) ListKeys(resourceGroupName string, accountName string) (result AccountKeys, err error) { - req, err := client.ListKeysPreparer(resourceGroupName, accountName) - if err != nil { - return result, autorest.NewErrorWithError(err, "storage.AccountsClient", "ListKeys", nil, "Failure preparing request") - } - - resp, err := client.ListKeysSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "storage.AccountsClient", "ListKeys", resp, "Failure sending request") - } - - result, err = client.ListKeysResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "storage.AccountsClient", "ListKeys", resp, "Failure responding to request") - } - - return -} - -// ListKeysPreparer prepares the ListKeys request. -func (client AccountsClient) ListKeysPreparer(resourceGroupName string, accountName string) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "accountName": url.QueryEscape(accountName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/listKeys"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListKeysSender sends the ListKeys request. The method will close the -// http.Response Body if it receives an error. -func (client AccountsClient) ListKeysSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListKeysResponder handles the response to the ListKeys request. The method always -// closes the http.Response Body. -func (client AccountsClient) ListKeysResponder(resp *http.Response) (result AccountKeys, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// RegenerateKey regenerates the access keys for the specified storage account. -// -// resourceGroupName is the name of the resource group within the user's -// subscription. accountName is the name of the storage account within the -// specified resource group. Storage account names must be between 3 and 24 -// characters in length and use numbers and lower-case letters only. -// regenerateKey is specifies name of the key which should be regenerated. -// key1 or key2 for the default keys -func (client AccountsClient) RegenerateKey(resourceGroupName string, accountName string, regenerateKey AccountRegenerateKeyParameters) (result AccountKeys, err error) { - req, err := client.RegenerateKeyPreparer(resourceGroupName, accountName, regenerateKey) - if err != nil { - return result, autorest.NewErrorWithError(err, "storage.AccountsClient", "RegenerateKey", nil, "Failure preparing request") - } - - resp, err := client.RegenerateKeySender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "storage.AccountsClient", "RegenerateKey", resp, "Failure sending request") - } - - result, err = client.RegenerateKeyResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "storage.AccountsClient", "RegenerateKey", resp, "Failure responding to request") - } - - return -} - -// RegenerateKeyPreparer prepares the RegenerateKey request. -func (client AccountsClient) RegenerateKeyPreparer(resourceGroupName string, accountName string, regenerateKey AccountRegenerateKeyParameters) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "accountName": url.QueryEscape(accountName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsPost(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/regenerateKey"), - autorest.WithJSON(regenerateKey), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// RegenerateKeySender sends the RegenerateKey request. The method will close the -// http.Response Body if it receives an error. -func (client AccountsClient) RegenerateKeySender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// RegenerateKeyResponder handles the response to the RegenerateKey request. The method always -// closes the http.Response Body. -func (client AccountsClient) RegenerateKeyResponder(resp *http.Response) (result AccountKeys, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} - -// Update updates the account type or tags for a storage account. It can also -// be used to add a custom domain (note that custom domains cannot be added -// via the Create operation). Only one custom domain is supported per storage -// account. In order to replace a custom domain, the old value must be -// cleared before a new value may be set. To clear a custom domain, simply -// update the custom domain with empty string. Then call update again with -// the new cutsom domain name. The update API can only be used to update one -// of tags, accountType, or customDomain per call. To update multiple of -// these properties, call the API multiple times with one change per call. -// This call does not change the storage keys for the account. If you want to -// change storage account keys, use the RegenerateKey operation. The location -// and name of the storage account cannot be changed after creation. -// -// resourceGroupName is the name of the resource group within the user's -// subscription. accountName is the name of the storage account within the -// specified resource group. Storage account names must be between 3 and 24 -// characters in length and use numbers and lower-case letters only. -// parameters is the parameters to update on the account. Note that only one -// property can be changed at a time using this API. -func (client AccountsClient) Update(resourceGroupName string, accountName string, parameters AccountUpdateParameters) (result Account, err error) { - req, err := client.UpdatePreparer(resourceGroupName, accountName, parameters) - if err != nil { - return result, autorest.NewErrorWithError(err, "storage.AccountsClient", "Update", nil, "Failure preparing request") - } - - resp, err := client.UpdateSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "storage.AccountsClient", "Update", resp, "Failure sending request") - } - - result, err = client.UpdateResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "storage.AccountsClient", "Update", resp, "Failure responding to request") - } - - return -} - -// UpdatePreparer prepares the Update request. -func (client AccountsClient) UpdatePreparer(resourceGroupName string, accountName string, parameters AccountUpdateParameters) (*http.Request, error) { - pathParameters := map[string]interface{}{ - "accountName": url.QueryEscape(accountName), - "resourceGroupName": url.QueryEscape(resourceGroupName), - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsPatch(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}"), - autorest.WithJSON(parameters), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// UpdateSender sends the Update request. The method will close the -// http.Response Body if it receives an error. -func (client AccountsClient) UpdateSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// UpdateResponder handles the response to the Update request. The method always -// closes the http.Response Body. -func (client AccountsClient) UpdateResponder(resp *http.Response) (result Account, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/client.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/client.go deleted file mode 100644 index f1de4c26..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/client.go +++ /dev/null @@ -1,56 +0,0 @@ -// Package storage implements the Azure ARM Storage service API version -// 2015-06-15. -// -// The Storage Management Client. -package storage - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" -) - -const ( - // APIVersion is the version of the Storage - APIVersion = "2015-06-15" - - // DefaultBaseURI is the default URI used for the service Storage - DefaultBaseURI = "https://management.azure.com" -) - -// ManagementClient is the base client for Storage. -type ManagementClient struct { - autorest.Client - BaseURI string - SubscriptionID string -} - -// New creates an instance of the ManagementClient client. -func New(subscriptionID string) ManagementClient { - return NewWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewWithBaseURI creates an instance of the ManagementClient client. -func NewWithBaseURI(baseURI string, subscriptionID string) ManagementClient { - return ManagementClient{ - Client: autorest.NewClientWithUserAgent(UserAgent()), - BaseURI: baseURI, - SubscriptionID: subscriptionID, - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/models.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/models.go deleted file mode 100644 index 2b15a054..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/models.go +++ /dev/null @@ -1,217 +0,0 @@ -package storage - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/date" -) - -// AccountStatus enumerates the values for account status. -type AccountStatus string - -const ( - // Available specifies the available state for account status. - Available AccountStatus = "Available" - // Unavailable specifies the unavailable state for account status. - Unavailable AccountStatus = "Unavailable" -) - -// AccountType enumerates the values for account type. -type AccountType string - -const ( - // PremiumLRS specifies the premium lrs state for account type. - PremiumLRS AccountType = "Premium_LRS" - // StandardGRS specifies the standard grs state for account type. - StandardGRS AccountType = "Standard_GRS" - // StandardLRS specifies the standard lrs state for account type. - StandardLRS AccountType = "Standard_LRS" - // StandardRAGRS specifies the standard ragrs state for account type. - StandardRAGRS AccountType = "Standard_RAGRS" - // StandardZRS specifies the standard zrs state for account type. - StandardZRS AccountType = "Standard_ZRS" -) - -// ProvisioningState enumerates the values for provisioning state. -type ProvisioningState string - -const ( - // Creating specifies the creating state for provisioning state. - Creating ProvisioningState = "Creating" - // ResolvingDNS specifies the resolving dns state for provisioning state. - ResolvingDNS ProvisioningState = "ResolvingDNS" - // Succeeded specifies the succeeded state for provisioning state. - Succeeded ProvisioningState = "Succeeded" -) - -// Reason enumerates the values for reason. -type Reason string - -const ( - // AccountNameInvalid specifies the account name invalid state for reason. - AccountNameInvalid Reason = "AccountNameInvalid" - // AlreadyExists specifies the already exists state for reason. - AlreadyExists Reason = "AlreadyExists" -) - -// UsageUnit enumerates the values for usage unit. -type UsageUnit string - -const ( - // Bytes specifies the bytes state for usage unit. - Bytes UsageUnit = "Bytes" - // BytesPerSecond specifies the bytes per second state for usage unit. - BytesPerSecond UsageUnit = "BytesPerSecond" - // Count specifies the count state for usage unit. - Count UsageUnit = "Count" - // CountsPerSecond specifies the counts per second state for usage unit. - CountsPerSecond UsageUnit = "CountsPerSecond" - // Percent specifies the percent state for usage unit. - Percent UsageUnit = "Percent" - // Seconds specifies the seconds state for usage unit. - Seconds UsageUnit = "Seconds" -) - -// Account is the storage account. -type Account struct { - autorest.Response `json:"-"` - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Type *string `json:"type,omitempty"` - Location *string `json:"location,omitempty"` - Tags *map[string]*string `json:"tags,omitempty"` - Properties *AccountProperties `json:"properties,omitempty"` -} - -// AccountCheckNameAvailabilityParameters is -type AccountCheckNameAvailabilityParameters struct { - Name *string `json:"name,omitempty"` - Type *string `json:"type,omitempty"` -} - -// AccountCreateParameters is the parameters to provide for the account. -type AccountCreateParameters struct { - Location *string `json:"location,omitempty"` - Tags *map[string]*string `json:"tags,omitempty"` - Properties *AccountPropertiesCreateParameters `json:"properties,omitempty"` -} - -// AccountKeys is the access keys for the storage account. -type AccountKeys struct { - autorest.Response `json:"-"` - Key1 *string `json:"key1,omitempty"` - Key2 *string `json:"key2,omitempty"` -} - -// AccountListResult is the list storage accounts operation response. -type AccountListResult struct { - autorest.Response `json:"-"` - Value *[]Account `json:"value,omitempty"` -} - -// AccountProperties is -type AccountProperties struct { - ProvisioningState ProvisioningState `json:"provisioningState,omitempty"` - AccountType AccountType `json:"accountType,omitempty"` - PrimaryEndpoints *Endpoints `json:"primaryEndpoints,omitempty"` - PrimaryLocation *string `json:"primaryLocation,omitempty"` - StatusOfPrimary AccountStatus `json:"statusOfPrimary,omitempty"` - LastGeoFailoverTime *date.Time `json:"lastGeoFailoverTime,omitempty"` - SecondaryLocation *string `json:"secondaryLocation,omitempty"` - StatusOfSecondary AccountStatus `json:"statusOfSecondary,omitempty"` - CreationTime *date.Time `json:"creationTime,omitempty"` - CustomDomain *CustomDomain `json:"customDomain,omitempty"` - SecondaryEndpoints *Endpoints `json:"secondaryEndpoints,omitempty"` -} - -// AccountPropertiesCreateParameters is -type AccountPropertiesCreateParameters struct { - AccountType AccountType `json:"accountType,omitempty"` -} - -// AccountPropertiesUpdateParameters is -type AccountPropertiesUpdateParameters struct { - AccountType AccountType `json:"accountType,omitempty"` - CustomDomain *CustomDomain `json:"customDomain,omitempty"` -} - -// AccountRegenerateKeyParameters is -type AccountRegenerateKeyParameters struct { - KeyName *string `json:"keyName,omitempty"` -} - -// AccountUpdateParameters is the parameters to update on the account. -type AccountUpdateParameters struct { - Tags *map[string]*string `json:"tags,omitempty"` - Properties *AccountPropertiesUpdateParameters `json:"properties,omitempty"` -} - -// CheckNameAvailabilityResult is the CheckNameAvailability operation response. -type CheckNameAvailabilityResult struct { - autorest.Response `json:"-"` - NameAvailable *bool `json:"nameAvailable,omitempty"` - Reason Reason `json:"reason,omitempty"` - Message *string `json:"message,omitempty"` -} - -// CustomDomain is the custom domain assigned to this storage account. This -// can be set via Update. -type CustomDomain struct { - Name *string `json:"name,omitempty"` - UseSubDomain *bool `json:"useSubDomain,omitempty"` -} - -// Endpoints is the URIs that are used to perform a retrieval of a public -// blob, queue or table object. -type Endpoints struct { - Blob *string `json:"blob,omitempty"` - Queue *string `json:"queue,omitempty"` - Table *string `json:"table,omitempty"` - File *string `json:"file,omitempty"` -} - -// Resource is -type Resource struct { - ID *string `json:"id,omitempty"` - Name *string `json:"name,omitempty"` - Type *string `json:"type,omitempty"` - Location *string `json:"location,omitempty"` - Tags *map[string]*string `json:"tags,omitempty"` -} - -// Usage is describes Storage Resource Usage. -type Usage struct { - Unit UsageUnit `json:"unit,omitempty"` - CurrentValue *int32 `json:"currentValue,omitempty"` - Limit *int32 `json:"limit,omitempty"` - Name *UsageName `json:"name,omitempty"` -} - -// UsageListResult is the List Usages operation response. -type UsageListResult struct { - autorest.Response `json:"-"` - Value *[]Usage `json:"value,omitempty"` -} - -// UsageName is the Usage Names. -type UsageName struct { - Value *string `json:"value,omitempty"` - LocalizedValue *string `json:"localizedValue,omitempty"` -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/usageoperations.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/usageoperations.go deleted file mode 100644 index 7b5bbe0b..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/usageoperations.go +++ /dev/null @@ -1,103 +0,0 @@ -package storage - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/azure" - "net/http" - "net/url" -) - -// UsageOperationsClient is the the Storage Management Client. -type UsageOperationsClient struct { - ManagementClient -} - -// NewUsageOperationsClient creates an instance of the UsageOperationsClient -// client. -func NewUsageOperationsClient(subscriptionID string) UsageOperationsClient { - return NewUsageOperationsClientWithBaseURI(DefaultBaseURI, subscriptionID) -} - -// NewUsageOperationsClientWithBaseURI creates an instance of the -// UsageOperationsClient client. -func NewUsageOperationsClientWithBaseURI(baseURI string, subscriptionID string) UsageOperationsClient { - return UsageOperationsClient{NewWithBaseURI(baseURI, subscriptionID)} -} - -// List gets the current usage count and the limit for the resources under the -// subscription. -func (client UsageOperationsClient) List() (result UsageListResult, err error) { - req, err := client.ListPreparer() - if err != nil { - return result, autorest.NewErrorWithError(err, "storage.UsageOperationsClient", "List", nil, "Failure preparing request") - } - - resp, err := client.ListSender(req) - if err != nil { - result.Response = autorest.Response{Response: resp} - return result, autorest.NewErrorWithError(err, "storage.UsageOperationsClient", "List", resp, "Failure sending request") - } - - result, err = client.ListResponder(resp) - if err != nil { - err = autorest.NewErrorWithError(err, "storage.UsageOperationsClient", "List", resp, "Failure responding to request") - } - - return -} - -// ListPreparer prepares the List request. -func (client UsageOperationsClient) ListPreparer() (*http.Request, error) { - pathParameters := map[string]interface{}{ - "subscriptionId": url.QueryEscape(client.SubscriptionID), - } - - queryParameters := map[string]interface{}{ - "api-version": APIVersion, - } - - return autorest.Prepare(&http.Request{}, - autorest.AsJSON(), - autorest.AsGet(), - autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/subscriptions/{subscriptionId}/providers/Microsoft.Storage/usages"), - autorest.WithPathParameters(pathParameters), - autorest.WithQueryParameters(queryParameters)) -} - -// ListSender sends the List request. The method will close the -// http.Response Body if it receives an error. -func (client UsageOperationsClient) ListSender(req *http.Request) (*http.Response, error) { - return autorest.SendWithSender(client, req) -} - -// ListResponder handles the response to the List request. The method always -// closes the http.Response Body. -func (client UsageOperationsClient) ListResponder(resp *http.Response) (result UsageListResult, err error) { - err = autorest.Respond( - resp, - client.ByInspecting(), - azure.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&result), - autorest.ByClosing()) - result.Response = autorest.Response{Response: resp} - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/version.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/version.go deleted file mode 100644 index 3432c57e..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/version.go +++ /dev/null @@ -1,43 +0,0 @@ -package storage - -// Copyright (c) Microsoft and contributors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Code generated by Microsoft (R) AutoRest Code Generator 0.14.0.0 -// Changes may cause incorrect behavior and will be lost if the code is -// regenerated. - -import ( - "fmt" -) - -const ( - major = "2" - minor = "1" - patch = "1" - // Always begin a "tag" with a dash (as per http://semver.org) - tag = "-beta" - semVerFormat = "%s.%s.%s%s" - userAgentFormat = "Azure-SDK-for-Go/%s arm-%s/%s" -) - -// UserAgent returns the UserAgent string to use when sending http.Requests. -func UserAgent() string { - return fmt.Sprintf(userAgentFormat, Version(), "storage", "2015-06-15") -} - -// Version returns the semantic version (see http://semver.org) of the client. -func Version() string { - return fmt.Sprintf(semVerFormat, major, minor, patch, tag) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/storage/blob.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/storage/blob.go deleted file mode 100644 index 47e8091c..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/storage/blob.go +++ /dev/null @@ -1,1021 +0,0 @@ -package storage - -import ( - "bytes" - "encoding/xml" - "errors" - "fmt" - "io" - "net/http" - "net/url" - "strconv" - "strings" - "time" -) - -// BlobStorageClient contains operations for Microsoft Azure Blob Storage -// Service. -type BlobStorageClient struct { - client Client -} - -// A Container is an entry in ContainerListResponse. -type Container struct { - Name string `xml:"Name"` - Properties ContainerProperties `xml:"Properties"` - // TODO (ahmetalpbalkan) Metadata -} - -// ContainerProperties contains various properties of a container returned from -// various endpoints like ListContainers. -type ContainerProperties struct { - LastModified string `xml:"Last-Modified"` - Etag string `xml:"Etag"` - LeaseStatus string `xml:"LeaseStatus"` - LeaseState string `xml:"LeaseState"` - LeaseDuration string `xml:"LeaseDuration"` - // TODO (ahmetalpbalkan) remaining fields -} - -// ContainerListResponse contains the response fields from -// ListContainers call. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179352.aspx -type ContainerListResponse struct { - XMLName xml.Name `xml:"EnumerationResults"` - Xmlns string `xml:"xmlns,attr"` - Prefix string `xml:"Prefix"` - Marker string `xml:"Marker"` - NextMarker string `xml:"NextMarker"` - MaxResults int64 `xml:"MaxResults"` - Containers []Container `xml:"Containers>Container"` -} - -// A Blob is an entry in BlobListResponse. -type Blob struct { - Name string `xml:"Name"` - Properties BlobProperties `xml:"Properties"` - // TODO (ahmetalpbalkan) Metadata -} - -// BlobProperties contains various properties of a blob -// returned in various endpoints like ListBlobs or GetBlobProperties. -type BlobProperties struct { - LastModified string `xml:"Last-Modified"` - Etag string `xml:"Etag"` - ContentMD5 string `xml:"Content-MD5"` - ContentLength int64 `xml:"Content-Length"` - ContentType string `xml:"Content-Type"` - ContentEncoding string `xml:"Content-Encoding"` - BlobType BlobType `xml:"x-ms-blob-blob-type"` - SequenceNumber int64 `xml:"x-ms-blob-sequence-number"` - CopyID string `xml:"CopyId"` - CopyStatus string `xml:"CopyStatus"` - CopySource string `xml:"CopySource"` - CopyProgress string `xml:"CopyProgress"` - CopyCompletionTime string `xml:"CopyCompletionTime"` - CopyStatusDescription string `xml:"CopyStatusDescription"` -} - -// BlobListResponse contains the response fields from ListBlobs call. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd135734.aspx -type BlobListResponse struct { - XMLName xml.Name `xml:"EnumerationResults"` - Xmlns string `xml:"xmlns,attr"` - Prefix string `xml:"Prefix"` - Marker string `xml:"Marker"` - NextMarker string `xml:"NextMarker"` - MaxResults int64 `xml:"MaxResults"` - Blobs []Blob `xml:"Blobs>Blob"` - - // BlobPrefix is used to traverse blobs as if it were a file system. - // It is returned if ListBlobsParameters.Delimiter is specified. - // The list here can be thought of as "folders" that may contain - // other folders or blobs. - BlobPrefixes []string `xml:"Blobs>BlobPrefix>Name"` - - // Delimiter is used to traverse blobs as if it were a file system. - // It is returned if ListBlobsParameters.Delimiter is specified. - Delimiter string `xml:"Delimiter"` -} - -// ListContainersParameters defines the set of customizable parameters to make a -// List Containers call. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179352.aspx -type ListContainersParameters struct { - Prefix string - Marker string - Include string - MaxResults uint - Timeout uint -} - -func (p ListContainersParameters) getParameters() url.Values { - out := url.Values{} - - if p.Prefix != "" { - out.Set("prefix", p.Prefix) - } - if p.Marker != "" { - out.Set("marker", p.Marker) - } - if p.Include != "" { - out.Set("include", p.Include) - } - if p.MaxResults != 0 { - out.Set("maxresults", fmt.Sprintf("%v", p.MaxResults)) - } - if p.Timeout != 0 { - out.Set("timeout", fmt.Sprintf("%v", p.Timeout)) - } - - return out -} - -// ListBlobsParameters defines the set of customizable -// parameters to make a List Blobs call. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd135734.aspx -type ListBlobsParameters struct { - Prefix string - Delimiter string - Marker string - Include string - MaxResults uint - Timeout uint -} - -func (p ListBlobsParameters) getParameters() url.Values { - out := url.Values{} - - if p.Prefix != "" { - out.Set("prefix", p.Prefix) - } - if p.Delimiter != "" { - out.Set("delimiter", p.Delimiter) - } - if p.Marker != "" { - out.Set("marker", p.Marker) - } - if p.Include != "" { - out.Set("include", p.Include) - } - if p.MaxResults != 0 { - out.Set("maxresults", fmt.Sprintf("%v", p.MaxResults)) - } - if p.Timeout != 0 { - out.Set("timeout", fmt.Sprintf("%v", p.Timeout)) - } - - return out -} - -// BlobType defines the type of the Azure Blob. -type BlobType string - -// Types of page blobs -const ( - BlobTypeBlock BlobType = "BlockBlob" - BlobTypePage BlobType = "PageBlob" - BlobTypeAppend BlobType = "AppendBlob" -) - -// PageWriteType defines the type updates that are going to be -// done on the page blob. -type PageWriteType string - -// Types of operations on page blobs -const ( - PageWriteTypeUpdate PageWriteType = "update" - PageWriteTypeClear PageWriteType = "clear" -) - -const ( - blobCopyStatusPending = "pending" - blobCopyStatusSuccess = "success" - blobCopyStatusAborted = "aborted" - blobCopyStatusFailed = "failed" -) - -// BlockListType is used to filter out types of blocks in a Get Blocks List call -// for a block blob. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179400.aspx for all -// block types. -type BlockListType string - -// Filters for listing blocks in block blobs -const ( - BlockListTypeAll BlockListType = "all" - BlockListTypeCommitted BlockListType = "committed" - BlockListTypeUncommitted BlockListType = "uncommitted" -) - -// ContainerAccessType defines the access level to the container from a public -// request. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179468.aspx and "x-ms- -// blob-public-access" header. -type ContainerAccessType string - -// Access options for containers -const ( - ContainerAccessTypePrivate ContainerAccessType = "" - ContainerAccessTypeBlob ContainerAccessType = "blob" - ContainerAccessTypeContainer ContainerAccessType = "container" -) - -// Maximum sizes (per REST API) for various concepts -const ( - MaxBlobBlockSize = 4 * 1024 * 1024 - MaxBlobPageSize = 4 * 1024 * 1024 -) - -// BlockStatus defines states a block for a block blob can -// be in. -type BlockStatus string - -// List of statuses that can be used to refer to a block in a block list -const ( - BlockStatusUncommitted BlockStatus = "Uncommitted" - BlockStatusCommitted BlockStatus = "Committed" - BlockStatusLatest BlockStatus = "Latest" -) - -// Block is used to create Block entities for Put Block List -// call. -type Block struct { - ID string - Status BlockStatus -} - -// BlockListResponse contains the response fields from Get Block List call. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179400.aspx -type BlockListResponse struct { - XMLName xml.Name `xml:"BlockList"` - CommittedBlocks []BlockResponse `xml:"CommittedBlocks>Block"` - UncommittedBlocks []BlockResponse `xml:"UncommittedBlocks>Block"` -} - -// BlockResponse contains the block information returned -// in the GetBlockListCall. -type BlockResponse struct { - Name string `xml:"Name"` - Size int64 `xml:"Size"` -} - -// GetPageRangesResponse contains the reponse fields from -// Get Page Ranges call. -// -// See https://msdn.microsoft.com/en-us/library/azure/ee691973.aspx -type GetPageRangesResponse struct { - XMLName xml.Name `xml:"PageList"` - PageList []PageRange `xml:"PageRange"` -} - -// PageRange contains information about a page of a page blob from -// Get Pages Range call. -// -// See https://msdn.microsoft.com/en-us/library/azure/ee691973.aspx -type PageRange struct { - Start int64 `xml:"Start"` - End int64 `xml:"End"` -} - -var ( - errBlobCopyAborted = errors.New("storage: blob copy is aborted") - errBlobCopyIDMismatch = errors.New("storage: blob copy id is a mismatch") -) - -// ListContainers returns the list of containers in a storage account along with -// pagination token and other response details. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179352.aspx -func (b BlobStorageClient) ListContainers(params ListContainersParameters) (ContainerListResponse, error) { - q := mergeParams(params.getParameters(), url.Values{"comp": {"list"}}) - uri := b.client.getEndpoint(blobServiceName, "", q) - headers := b.client.getStandardHeaders() - - var out ContainerListResponse - resp, err := b.client.exec("GET", uri, headers, nil) - if err != nil { - return out, err - } - defer resp.body.Close() - - err = xmlUnmarshal(resp.body, &out) - return out, err -} - -// CreateContainer creates a blob container within the storage account -// with given name and access level. Returns error if container already exists. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179468.aspx -func (b BlobStorageClient) CreateContainer(name string, access ContainerAccessType) error { - resp, err := b.createContainer(name, access) - if err != nil { - return err - } - defer resp.body.Close() - return checkRespCode(resp.statusCode, []int{http.StatusCreated}) -} - -// CreateContainerIfNotExists creates a blob container if it does not exist. Returns -// true if container is newly created or false if container already exists. -func (b BlobStorageClient) CreateContainerIfNotExists(name string, access ContainerAccessType) (bool, error) { - resp, err := b.createContainer(name, access) - if resp != nil { - defer resp.body.Close() - if resp.statusCode == http.StatusCreated || resp.statusCode == http.StatusConflict { - return resp.statusCode == http.StatusCreated, nil - } - } - return false, err -} - -func (b BlobStorageClient) createContainer(name string, access ContainerAccessType) (*storageResponse, error) { - verb := "PUT" - uri := b.client.getEndpoint(blobServiceName, pathForContainer(name), url.Values{"restype": {"container"}}) - - headers := b.client.getStandardHeaders() - if access != "" { - headers["x-ms-blob-public-access"] = string(access) - } - return b.client.exec(verb, uri, headers, nil) -} - -// ContainerExists returns true if a container with given name exists -// on the storage account, otherwise returns false. -func (b BlobStorageClient) ContainerExists(name string) (bool, error) { - verb := "HEAD" - uri := b.client.getEndpoint(blobServiceName, pathForContainer(name), url.Values{"restype": {"container"}}) - headers := b.client.getStandardHeaders() - - resp, err := b.client.exec(verb, uri, headers, nil) - if resp != nil { - defer resp.body.Close() - if resp.statusCode == http.StatusOK || resp.statusCode == http.StatusNotFound { - return resp.statusCode == http.StatusOK, nil - } - } - return false, err -} - -// DeleteContainer deletes the container with given name on the storage -// account. If the container does not exist returns error. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179408.aspx -func (b BlobStorageClient) DeleteContainer(name string) error { - resp, err := b.deleteContainer(name) - if err != nil { - return err - } - defer resp.body.Close() - return checkRespCode(resp.statusCode, []int{http.StatusAccepted}) -} - -// DeleteContainerIfExists deletes the container with given name on the storage -// account if it exists. Returns true if container is deleted with this call, or -// false if the container did not exist at the time of the Delete Container -// operation. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179408.aspx -func (b BlobStorageClient) DeleteContainerIfExists(name string) (bool, error) { - resp, err := b.deleteContainer(name) - if resp != nil { - defer resp.body.Close() - if resp.statusCode == http.StatusAccepted || resp.statusCode == http.StatusNotFound { - return resp.statusCode == http.StatusAccepted, nil - } - } - return false, err -} - -func (b BlobStorageClient) deleteContainer(name string) (*storageResponse, error) { - verb := "DELETE" - uri := b.client.getEndpoint(blobServiceName, pathForContainer(name), url.Values{"restype": {"container"}}) - - headers := b.client.getStandardHeaders() - return b.client.exec(verb, uri, headers, nil) -} - -// ListBlobs returns an object that contains list of blobs in the container, -// pagination token and other information in the response of List Blobs call. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd135734.aspx -func (b BlobStorageClient) ListBlobs(container string, params ListBlobsParameters) (BlobListResponse, error) { - q := mergeParams(params.getParameters(), url.Values{ - "restype": {"container"}, - "comp": {"list"}}) - uri := b.client.getEndpoint(blobServiceName, pathForContainer(container), q) - headers := b.client.getStandardHeaders() - - var out BlobListResponse - resp, err := b.client.exec("GET", uri, headers, nil) - if err != nil { - return out, err - } - defer resp.body.Close() - - err = xmlUnmarshal(resp.body, &out) - return out, err -} - -// BlobExists returns true if a blob with given name exists on the specified -// container of the storage account. -func (b BlobStorageClient) BlobExists(container, name string) (bool, error) { - verb := "HEAD" - uri := b.client.getEndpoint(blobServiceName, pathForBlob(container, name), url.Values{}) - - headers := b.client.getStandardHeaders() - resp, err := b.client.exec(verb, uri, headers, nil) - if resp != nil { - defer resp.body.Close() - if resp.statusCode == http.StatusOK || resp.statusCode == http.StatusNotFound { - return resp.statusCode == http.StatusOK, nil - } - } - return false, err -} - -// GetBlobURL gets the canonical URL to the blob with the specified name in the -// specified container. This method does not create a publicly accessible URL if -// the blob or container is private and this method does not check if the blob -// exists. -func (b BlobStorageClient) GetBlobURL(container, name string) string { - if container == "" { - container = "$root" - } - return b.client.getEndpoint(blobServiceName, pathForBlob(container, name), url.Values{}) -} - -// GetBlob returns a stream to read the blob. Caller must call Close() the -// reader to close on the underlying connection. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179440.aspx -func (b BlobStorageClient) GetBlob(container, name string) (io.ReadCloser, error) { - resp, err := b.getBlobRange(container, name, "") - if err != nil { - return nil, err - } - - if err := checkRespCode(resp.statusCode, []int{http.StatusOK}); err != nil { - return nil, err - } - return resp.body, nil -} - -// GetBlobRange reads the specified range of a blob to a stream. The bytesRange -// string must be in a format like "0-", "10-100" as defined in HTTP 1.1 spec. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179440.aspx -func (b BlobStorageClient) GetBlobRange(container, name, bytesRange string) (io.ReadCloser, error) { - resp, err := b.getBlobRange(container, name, bytesRange) - if err != nil { - return nil, err - } - - if err := checkRespCode(resp.statusCode, []int{http.StatusPartialContent}); err != nil { - return nil, err - } - return resp.body, nil -} - -func (b BlobStorageClient) getBlobRange(container, name, bytesRange string) (*storageResponse, error) { - verb := "GET" - uri := b.client.getEndpoint(blobServiceName, pathForBlob(container, name), url.Values{}) - - headers := b.client.getStandardHeaders() - if bytesRange != "" { - headers["Range"] = fmt.Sprintf("bytes=%s", bytesRange) - } - resp, err := b.client.exec(verb, uri, headers, nil) - if err != nil { - return nil, err - } - return resp, err -} - -// GetBlobProperties provides various information about the specified -// blob. See https://msdn.microsoft.com/en-us/library/azure/dd179394.aspx -func (b BlobStorageClient) GetBlobProperties(container, name string) (*BlobProperties, error) { - verb := "HEAD" - uri := b.client.getEndpoint(blobServiceName, pathForBlob(container, name), url.Values{}) - - headers := b.client.getStandardHeaders() - resp, err := b.client.exec(verb, uri, headers, nil) - if err != nil { - return nil, err - } - defer resp.body.Close() - - if err := checkRespCode(resp.statusCode, []int{http.StatusOK}); err != nil { - return nil, err - } - - var contentLength int64 - contentLengthStr := resp.headers.Get("Content-Length") - if contentLengthStr != "" { - contentLength, err = strconv.ParseInt(contentLengthStr, 0, 64) - if err != nil { - return nil, err - } - } - - var sequenceNum int64 - sequenceNumStr := resp.headers.Get("x-ms-blob-sequence-number") - if sequenceNumStr != "" { - sequenceNum, err = strconv.ParseInt(sequenceNumStr, 0, 64) - if err != nil { - return nil, err - } - } - - return &BlobProperties{ - LastModified: resp.headers.Get("Last-Modified"), - Etag: resp.headers.Get("Etag"), - ContentMD5: resp.headers.Get("Content-MD5"), - ContentLength: contentLength, - ContentEncoding: resp.headers.Get("Content-Encoding"), - SequenceNumber: sequenceNum, - CopyCompletionTime: resp.headers.Get("x-ms-copy-completion-time"), - CopyStatusDescription: resp.headers.Get("x-ms-copy-status-description"), - CopyID: resp.headers.Get("x-ms-copy-id"), - CopyProgress: resp.headers.Get("x-ms-copy-progress"), - CopySource: resp.headers.Get("x-ms-copy-source"), - CopyStatus: resp.headers.Get("x-ms-copy-status"), - BlobType: BlobType(resp.headers.Get("x-ms-blob-type")), - }, nil -} - -// SetBlobMetadata replaces the metadata for the specified blob. -// -// Some keys may be converted to Camel-Case before sending. All keys -// are returned in lower case by GetBlobMetadata. HTTP header names -// are case-insensitive so case munging should not matter to other -// applications either. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179414.aspx -func (b BlobStorageClient) SetBlobMetadata(container, name string, metadata map[string]string) error { - params := url.Values{"comp": {"metadata"}} - uri := b.client.getEndpoint(blobServiceName, pathForBlob(container, name), params) - headers := b.client.getStandardHeaders() - for k, v := range metadata { - headers[userDefinedMetadataHeaderPrefix+k] = v - } - - resp, err := b.client.exec("PUT", uri, headers, nil) - if err != nil { - return err - } - defer resp.body.Close() - - return checkRespCode(resp.statusCode, []int{http.StatusOK}) -} - -// GetBlobMetadata returns all user-defined metadata for the specified blob. -// -// All metadata keys will be returned in lower case. (HTTP header -// names are case-insensitive.) -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179414.aspx -func (b BlobStorageClient) GetBlobMetadata(container, name string) (map[string]string, error) { - params := url.Values{"comp": {"metadata"}} - uri := b.client.getEndpoint(blobServiceName, pathForBlob(container, name), params) - headers := b.client.getStandardHeaders() - - resp, err := b.client.exec("GET", uri, headers, nil) - if err != nil { - return nil, err - } - defer resp.body.Close() - - if err := checkRespCode(resp.statusCode, []int{http.StatusOK}); err != nil { - return nil, err - } - - metadata := make(map[string]string) - for k, v := range resp.headers { - // Can't trust CanonicalHeaderKey() to munge case - // reliably. "_" is allowed in identifiers: - // https://msdn.microsoft.com/en-us/library/azure/dd179414.aspx - // https://msdn.microsoft.com/library/aa664670(VS.71).aspx - // http://tools.ietf.org/html/rfc7230#section-3.2 - // ...but "_" is considered invalid by - // CanonicalMIMEHeaderKey in - // https://golang.org/src/net/textproto/reader.go?s=14615:14659#L542 - // so k can be "X-Ms-Meta-Foo" or "x-ms-meta-foo_bar". - k = strings.ToLower(k) - if len(v) == 0 || !strings.HasPrefix(k, strings.ToLower(userDefinedMetadataHeaderPrefix)) { - continue - } - // metadata["foo"] = content of the last X-Ms-Meta-Foo header - k = k[len(userDefinedMetadataHeaderPrefix):] - metadata[k] = v[len(v)-1] - } - return metadata, nil -} - -// CreateBlockBlob initializes an empty block blob with no blocks. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179451.aspx -func (b BlobStorageClient) CreateBlockBlob(container, name string) error { - return b.CreateBlockBlobFromReader(container, name, 0, nil, nil) -} - -// CreateBlockBlobFromReader initializes a block blob using data from -// reader. Size must be the number of bytes read from reader. To -// create an empty blob, use size==0 and reader==nil. -// -// The API rejects requests with size > 64 MiB (but this limit is not -// checked by the SDK). To write a larger blob, use CreateBlockBlob, -// PutBlock, and PutBlockList. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179451.aspx -func (b BlobStorageClient) CreateBlockBlobFromReader(container, name string, size uint64, blob io.Reader, extraHeaders map[string]string) error { - path := fmt.Sprintf("%s/%s", container, name) - uri := b.client.getEndpoint(blobServiceName, path, url.Values{}) - headers := b.client.getStandardHeaders() - headers["x-ms-blob-type"] = string(BlobTypeBlock) - headers["Content-Length"] = fmt.Sprintf("%d", size) - - for k, v := range extraHeaders { - headers[k] = v - } - - resp, err := b.client.exec("PUT", uri, headers, blob) - if err != nil { - return err - } - defer resp.body.Close() - return checkRespCode(resp.statusCode, []int{http.StatusCreated}) -} - -// PutBlock saves the given data chunk to the specified block blob with -// given ID. -// -// The API rejects chunks larger than 4 MiB (but this limit is not -// checked by the SDK). -// -// See https://msdn.microsoft.com/en-us/library/azure/dd135726.aspx -func (b BlobStorageClient) PutBlock(container, name, blockID string, chunk []byte) error { - return b.PutBlockWithLength(container, name, blockID, uint64(len(chunk)), bytes.NewReader(chunk), nil) -} - -// PutBlockWithLength saves the given data stream of exactly specified size to -// the block blob with given ID. It is an alternative to PutBlocks where data -// comes as stream but the length is known in advance. -// -// The API rejects requests with size > 4 MiB (but this limit is not -// checked by the SDK). -// -// See https://msdn.microsoft.com/en-us/library/azure/dd135726.aspx -func (b BlobStorageClient) PutBlockWithLength(container, name, blockID string, size uint64, blob io.Reader, extraHeaders map[string]string) error { - uri := b.client.getEndpoint(blobServiceName, pathForBlob(container, name), url.Values{"comp": {"block"}, "blockid": {blockID}}) - headers := b.client.getStandardHeaders() - headers["x-ms-blob-type"] = string(BlobTypeBlock) - headers["Content-Length"] = fmt.Sprintf("%v", size) - - for k, v := range extraHeaders { - headers[k] = v - } - - resp, err := b.client.exec("PUT", uri, headers, blob) - if err != nil { - return err - } - - defer resp.body.Close() - return checkRespCode(resp.statusCode, []int{http.StatusCreated}) -} - -// PutBlockList saves list of blocks to the specified block blob. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179467.aspx -func (b BlobStorageClient) PutBlockList(container, name string, blocks []Block) error { - blockListXML := prepareBlockListRequest(blocks) - - uri := b.client.getEndpoint(blobServiceName, pathForBlob(container, name), url.Values{"comp": {"blocklist"}}) - headers := b.client.getStandardHeaders() - headers["Content-Length"] = fmt.Sprintf("%v", len(blockListXML)) - - resp, err := b.client.exec("PUT", uri, headers, strings.NewReader(blockListXML)) - if err != nil { - return err - } - defer resp.body.Close() - return checkRespCode(resp.statusCode, []int{http.StatusCreated}) -} - -// GetBlockList retrieves list of blocks in the specified block blob. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179400.aspx -func (b BlobStorageClient) GetBlockList(container, name string, blockType BlockListType) (BlockListResponse, error) { - params := url.Values{"comp": {"blocklist"}, "blocklisttype": {string(blockType)}} - uri := b.client.getEndpoint(blobServiceName, pathForBlob(container, name), params) - headers := b.client.getStandardHeaders() - - var out BlockListResponse - resp, err := b.client.exec("GET", uri, headers, nil) - if err != nil { - return out, err - } - defer resp.body.Close() - - err = xmlUnmarshal(resp.body, &out) - return out, err -} - -// PutPageBlob initializes an empty page blob with specified name and maximum -// size in bytes (size must be aligned to a 512-byte boundary). A page blob must -// be created using this method before writing pages. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179451.aspx -func (b BlobStorageClient) PutPageBlob(container, name string, size int64, extraHeaders map[string]string) error { - path := fmt.Sprintf("%s/%s", container, name) - uri := b.client.getEndpoint(blobServiceName, path, url.Values{}) - headers := b.client.getStandardHeaders() - headers["x-ms-blob-type"] = string(BlobTypePage) - headers["x-ms-blob-content-length"] = fmt.Sprintf("%v", size) - - for k, v := range extraHeaders { - headers[k] = v - } - - resp, err := b.client.exec("PUT", uri, headers, nil) - if err != nil { - return err - } - defer resp.body.Close() - - return checkRespCode(resp.statusCode, []int{http.StatusCreated}) -} - -// PutPage writes a range of pages to a page blob or clears the given range. -// In case of 'clear' writes, given chunk is discarded. Ranges must be aligned -// with 512-byte boundaries and chunk must be of size multiplies by 512. -// -// See https://msdn.microsoft.com/en-us/library/ee691975.aspx -func (b BlobStorageClient) PutPage(container, name string, startByte, endByte int64, writeType PageWriteType, chunk []byte, extraHeaders map[string]string) error { - path := fmt.Sprintf("%s/%s", container, name) - uri := b.client.getEndpoint(blobServiceName, path, url.Values{"comp": {"page"}}) - headers := b.client.getStandardHeaders() - headers["x-ms-blob-type"] = string(BlobTypePage) - headers["x-ms-page-write"] = string(writeType) - headers["x-ms-range"] = fmt.Sprintf("bytes=%v-%v", startByte, endByte) - for k, v := range extraHeaders { - headers[k] = v - } - var contentLength int64 - var data io.Reader - if writeType == PageWriteTypeClear { - contentLength = 0 - data = bytes.NewReader([]byte{}) - } else { - contentLength = int64(len(chunk)) - data = bytes.NewReader(chunk) - } - headers["Content-Length"] = fmt.Sprintf("%v", contentLength) - - resp, err := b.client.exec("PUT", uri, headers, data) - if err != nil { - return err - } - defer resp.body.Close() - - return checkRespCode(resp.statusCode, []int{http.StatusCreated}) -} - -// GetPageRanges returns the list of valid page ranges for a page blob. -// -// See https://msdn.microsoft.com/en-us/library/azure/ee691973.aspx -func (b BlobStorageClient) GetPageRanges(container, name string) (GetPageRangesResponse, error) { - path := fmt.Sprintf("%s/%s", container, name) - uri := b.client.getEndpoint(blobServiceName, path, url.Values{"comp": {"pagelist"}}) - headers := b.client.getStandardHeaders() - - var out GetPageRangesResponse - resp, err := b.client.exec("GET", uri, headers, nil) - if err != nil { - return out, err - } - defer resp.body.Close() - - if err := checkRespCode(resp.statusCode, []int{http.StatusOK}); err != nil { - return out, err - } - err = xmlUnmarshal(resp.body, &out) - return out, err -} - -// PutAppendBlob initializes an empty append blob with specified name. An -// append blob must be created using this method before appending blocks. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179451.aspx -func (b BlobStorageClient) PutAppendBlob(container, name string, extraHeaders map[string]string) error { - path := fmt.Sprintf("%s/%s", container, name) - uri := b.client.getEndpoint(blobServiceName, path, url.Values{}) - headers := b.client.getStandardHeaders() - headers["x-ms-blob-type"] = string(BlobTypeAppend) - - for k, v := range extraHeaders { - headers[k] = v - } - - resp, err := b.client.exec("PUT", uri, headers, nil) - if err != nil { - return err - } - defer resp.body.Close() - - return checkRespCode(resp.statusCode, []int{http.StatusCreated}) -} - -// AppendBlock appends a block to an append blob. -// -// See https://msdn.microsoft.com/en-us/library/azure/mt427365.aspx -func (b BlobStorageClient) AppendBlock(container, name string, chunk []byte, extraHeaders map[string]string) error { - path := fmt.Sprintf("%s/%s", container, name) - uri := b.client.getEndpoint(blobServiceName, path, url.Values{"comp": {"appendblock"}}) - headers := b.client.getStandardHeaders() - headers["x-ms-blob-type"] = string(BlobTypeAppend) - headers["Content-Length"] = fmt.Sprintf("%v", len(chunk)) - - for k, v := range extraHeaders { - headers[k] = v - } - - resp, err := b.client.exec("PUT", uri, headers, bytes.NewReader(chunk)) - if err != nil { - return err - } - defer resp.body.Close() - - return checkRespCode(resp.statusCode, []int{http.StatusCreated}) -} - -// CopyBlob starts a blob copy operation and waits for the operation to -// complete. sourceBlob parameter must be a canonical URL to the blob (can be -// obtained using GetBlobURL method.) There is no SLA on blob copy and therefore -// this helper method works faster on smaller files. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd894037.aspx -func (b BlobStorageClient) CopyBlob(container, name, sourceBlob string) error { - copyID, err := b.startBlobCopy(container, name, sourceBlob) - if err != nil { - return err - } - - return b.waitForBlobCopy(container, name, copyID) -} - -func (b BlobStorageClient) startBlobCopy(container, name, sourceBlob string) (string, error) { - uri := b.client.getEndpoint(blobServiceName, pathForBlob(container, name), url.Values{}) - - headers := b.client.getStandardHeaders() - headers["x-ms-copy-source"] = sourceBlob - - resp, err := b.client.exec("PUT", uri, headers, nil) - if err != nil { - return "", err - } - defer resp.body.Close() - - if err := checkRespCode(resp.statusCode, []int{http.StatusAccepted, http.StatusCreated}); err != nil { - return "", err - } - - copyID := resp.headers.Get("x-ms-copy-id") - if copyID == "" { - return "", errors.New("Got empty copy id header") - } - return copyID, nil -} - -func (b BlobStorageClient) waitForBlobCopy(container, name, copyID string) error { - for { - props, err := b.GetBlobProperties(container, name) - if err != nil { - return err - } - - if props.CopyID != copyID { - return errBlobCopyIDMismatch - } - - switch props.CopyStatus { - case blobCopyStatusSuccess: - return nil - case blobCopyStatusPending: - continue - case blobCopyStatusAborted: - return errBlobCopyAborted - case blobCopyStatusFailed: - return fmt.Errorf("storage: blob copy failed. Id=%s Description=%s", props.CopyID, props.CopyStatusDescription) - default: - return fmt.Errorf("storage: unhandled blob copy status: '%s'", props.CopyStatus) - } - } -} - -// DeleteBlob deletes the given blob from the specified container. -// If the blob does not exists at the time of the Delete Blob operation, it -// returns error. See https://msdn.microsoft.com/en-us/library/azure/dd179413.aspx -func (b BlobStorageClient) DeleteBlob(container, name string, extraHeaders map[string]string) error { - resp, err := b.deleteBlob(container, name, extraHeaders) - if err != nil { - return err - } - defer resp.body.Close() - return checkRespCode(resp.statusCode, []int{http.StatusAccepted}) -} - -// DeleteBlobIfExists deletes the given blob from the specified container If the -// blob is deleted with this call, returns true. Otherwise returns false. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179413.aspx -func (b BlobStorageClient) DeleteBlobIfExists(container, name string, extraHeaders map[string]string) (bool, error) { - resp, err := b.deleteBlob(container, name, extraHeaders) - if resp != nil && (resp.statusCode == http.StatusAccepted || resp.statusCode == http.StatusNotFound) { - return resp.statusCode == http.StatusAccepted, nil - } - defer resp.body.Close() - return false, err -} - -func (b BlobStorageClient) deleteBlob(container, name string, extraHeaders map[string]string) (*storageResponse, error) { - verb := "DELETE" - uri := b.client.getEndpoint(blobServiceName, pathForBlob(container, name), url.Values{}) - headers := b.client.getStandardHeaders() - for k, v := range extraHeaders { - headers[k] = v - } - - return b.client.exec(verb, uri, headers, nil) -} - -// helper method to construct the path to a container given its name -func pathForContainer(name string) string { - return fmt.Sprintf("/%s", name) -} - -// helper method to construct the path to a blob given its container and blob -// name -func pathForBlob(container, name string) string { - return fmt.Sprintf("/%s/%s", container, name) -} - -// GetBlobSASURI creates an URL to the specified blob which contains the Shared -// Access Signature with specified permissions and expiration time. -// -// See https://msdn.microsoft.com/en-us/library/azure/ee395415.aspx -func (b BlobStorageClient) GetBlobSASURI(container, name string, expiry time.Time, permissions string) (string, error) { - var ( - signedPermissions = permissions - blobURL = b.GetBlobURL(container, name) - ) - canonicalizedResource, err := b.client.buildCanonicalizedResource(blobURL) - if err != nil { - return "", err - } - signedExpiry := expiry.UTC().Format(time.RFC3339) - signedResource := "b" - - stringToSign, err := blobSASStringToSign(b.client.apiVersion, canonicalizedResource, signedExpiry, signedPermissions) - if err != nil { - return "", err - } - - sig := b.client.computeHmac256(stringToSign) - sasParams := url.Values{ - "sv": {b.client.apiVersion}, - "se": {signedExpiry}, - "sr": {signedResource}, - "sp": {signedPermissions}, - "sig": {sig}, - } - - sasURL, err := url.Parse(blobURL) - if err != nil { - return "", err - } - sasURL.RawQuery = sasParams.Encode() - return sasURL.String(), nil -} - -func blobSASStringToSign(signedVersion, canonicalizedResource, signedExpiry, signedPermissions string) (string, error) { - var signedStart, signedIdentifier, rscc, rscd, rsce, rscl, rsct string - - if signedVersion >= "2015-02-21" { - canonicalizedResource = "/blob" + canonicalizedResource - } - - // reference: http://msdn.microsoft.com/en-us/library/azure/dn140255.aspx - if signedVersion >= "2013-08-15" { - return fmt.Sprintf("%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s", signedPermissions, signedStart, signedExpiry, canonicalizedResource, signedIdentifier, signedVersion, rscc, rscd, rsce, rscl, rsct), nil - } - return "", errors.New("storage: not implemented SAS for versions earlier than 2013-08-15") -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/storage/client.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/storage/client.go deleted file mode 100644 index 4a0dc5b3..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/storage/client.go +++ /dev/null @@ -1,400 +0,0 @@ -// Package storage provides clients for Microsoft Azure Storage Services. -package storage - -import ( - "bytes" - "encoding/base64" - "encoding/xml" - "errors" - "fmt" - "io" - "io/ioutil" - "net/http" - "net/url" - "regexp" - "sort" - "strconv" - "strings" -) - -const ( - // DefaultBaseURL is the domain name used for storage requests when a - // default client is created. - DefaultBaseURL = "core.windows.net" - - // DefaultAPIVersion is the Azure Storage API version string used when a - // basic client is created. - DefaultAPIVersion = "2015-02-21" - - defaultUseHTTPS = true - - blobServiceName = "blob" - tableServiceName = "table" - queueServiceName = "queue" - fileServiceName = "file" -) - -// Client is the object that needs to be constructed to perform -// operations on the storage account. -type Client struct { - // HTTPClient is the http.Client used to initiate API - // requests. If it is nil, http.DefaultClient is used. - HTTPClient *http.Client - - accountName string - accountKey []byte - useHTTPS bool - baseURL string - apiVersion string -} - -type storageResponse struct { - statusCode int - headers http.Header - body io.ReadCloser -} - -// AzureStorageServiceError contains fields of the error response from -// Azure Storage Service REST API. See https://msdn.microsoft.com/en-us/library/azure/dd179382.aspx -// Some fields might be specific to certain calls. -type AzureStorageServiceError struct { - Code string `xml:"Code"` - Message string `xml:"Message"` - AuthenticationErrorDetail string `xml:"AuthenticationErrorDetail"` - QueryParameterName string `xml:"QueryParameterName"` - QueryParameterValue string `xml:"QueryParameterValue"` - Reason string `xml:"Reason"` - StatusCode int - RequestID string -} - -// UnexpectedStatusCodeError is returned when a storage service responds with neither an error -// nor with an HTTP status code indicating success. -type UnexpectedStatusCodeError struct { - allowed []int - got int -} - -func (e UnexpectedStatusCodeError) Error() string { - s := func(i int) string { return fmt.Sprintf("%d %s", i, http.StatusText(i)) } - - got := s(e.got) - expected := []string{} - for _, v := range e.allowed { - expected = append(expected, s(v)) - } - return fmt.Sprintf("storage: status code from service response is %s; was expecting %s", got, strings.Join(expected, " or ")) -} - -// Got is the actual status code returned by Azure. -func (e UnexpectedStatusCodeError) Got() int { - return e.got -} - -// NewBasicClient constructs a Client with given storage service name and -// key. -func NewBasicClient(accountName, accountKey string) (Client, error) { - return NewClient(accountName, accountKey, DefaultBaseURL, DefaultAPIVersion, defaultUseHTTPS) -} - -// NewClient constructs a Client. This should be used if the caller wants -// to specify whether to use HTTPS, a specific REST API version or a custom -// storage endpoint than Azure Public Cloud. -func NewClient(accountName, accountKey, blobServiceBaseURL, apiVersion string, useHTTPS bool) (Client, error) { - var c Client - if accountName == "" { - return c, fmt.Errorf("azure: account name required") - } else if accountKey == "" { - return c, fmt.Errorf("azure: account key required") - } else if blobServiceBaseURL == "" { - return c, fmt.Errorf("azure: base storage service url required") - } - - key, err := base64.StdEncoding.DecodeString(accountKey) - if err != nil { - return c, err - } - - return Client{ - accountName: accountName, - accountKey: key, - useHTTPS: useHTTPS, - baseURL: blobServiceBaseURL, - apiVersion: apiVersion, - }, nil -} - -func (c Client) getBaseURL(service string) string { - scheme := "http" - if c.useHTTPS { - scheme = "https" - } - - host := fmt.Sprintf("%s.%s.%s", c.accountName, service, c.baseURL) - - u := &url.URL{ - Scheme: scheme, - Host: host} - return u.String() -} - -func (c Client) getEndpoint(service, path string, params url.Values) string { - u, err := url.Parse(c.getBaseURL(service)) - if err != nil { - // really should not be happening - panic(err) - } - - if path == "" { - path = "/" // API doesn't accept path segments not starting with '/' - } - - u.Path = path - u.RawQuery = params.Encode() - return u.String() -} - -// GetBlobService returns a BlobStorageClient which can operate on the blob -// service of the storage account. -func (c Client) GetBlobService() BlobStorageClient { - return BlobStorageClient{c} -} - -// GetQueueService returns a QueueServiceClient which can operate on the queue -// service of the storage account. -func (c Client) GetQueueService() QueueServiceClient { - return QueueServiceClient{c} -} - -// GetFileService returns a FileServiceClient which can operate on the file -// service of the storage account. -func (c Client) GetFileService() FileServiceClient { - return FileServiceClient{c} -} - -func (c Client) createAuthorizationHeader(canonicalizedString string) string { - signature := c.computeHmac256(canonicalizedString) - return fmt.Sprintf("%s %s:%s", "SharedKey", c.accountName, signature) -} - -func (c Client) getAuthorizationHeader(verb, url string, headers map[string]string) (string, error) { - canonicalizedResource, err := c.buildCanonicalizedResource(url) - if err != nil { - return "", err - } - - canonicalizedString := c.buildCanonicalizedString(verb, headers, canonicalizedResource) - return c.createAuthorizationHeader(canonicalizedString), nil -} - -func (c Client) getStandardHeaders() map[string]string { - return map[string]string{ - "x-ms-version": c.apiVersion, - "x-ms-date": currentTimeRfc1123Formatted(), - } -} - -func (c Client) buildCanonicalizedHeader(headers map[string]string) string { - cm := make(map[string]string) - - for k, v := range headers { - headerName := strings.TrimSpace(strings.ToLower(k)) - match, _ := regexp.MatchString("x-ms-", headerName) - if match { - cm[headerName] = v - } - } - - if len(cm) == 0 { - return "" - } - - keys := make([]string, 0, len(cm)) - for key := range cm { - keys = append(keys, key) - } - - sort.Strings(keys) - - ch := "" - - for i, key := range keys { - if i == len(keys)-1 { - ch += fmt.Sprintf("%s:%s", key, cm[key]) - } else { - ch += fmt.Sprintf("%s:%s\n", key, cm[key]) - } - } - return ch -} - -func (c Client) buildCanonicalizedResource(uri string) (string, error) { - errMsg := "buildCanonicalizedResource error: %s" - u, err := url.Parse(uri) - if err != nil { - return "", fmt.Errorf(errMsg, err.Error()) - } - - cr := "/" + c.accountName - if len(u.Path) > 0 { - cr += u.Path - } - - params, err := url.ParseQuery(u.RawQuery) - if err != nil { - return "", fmt.Errorf(errMsg, err.Error()) - } - - if len(params) > 0 { - cr += "\n" - keys := make([]string, 0, len(params)) - for key := range params { - keys = append(keys, key) - } - - sort.Strings(keys) - - for i, key := range keys { - if len(params[key]) > 1 { - sort.Strings(params[key]) - } - - if i == len(keys)-1 { - cr += fmt.Sprintf("%s:%s", key, strings.Join(params[key], ",")) - } else { - cr += fmt.Sprintf("%s:%s\n", key, strings.Join(params[key], ",")) - } - } - } - return cr, nil -} - -func (c Client) buildCanonicalizedString(verb string, headers map[string]string, canonicalizedResource string) string { - contentLength := headers["Content-Length"] - if contentLength == "0" { - contentLength = "" - } - canonicalizedString := fmt.Sprintf("%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s", - verb, - headers["Content-Encoding"], - headers["Content-Language"], - contentLength, - headers["Content-MD5"], - headers["Content-Type"], - headers["Date"], - headers["If-Modified-Since"], - headers["If-Match"], - headers["If-None-Match"], - headers["If-Unmodified-Since"], - headers["Range"], - c.buildCanonicalizedHeader(headers), - canonicalizedResource) - - return canonicalizedString -} - -func (c Client) exec(verb, url string, headers map[string]string, body io.Reader) (*storageResponse, error) { - authHeader, err := c.getAuthorizationHeader(verb, url, headers) - if err != nil { - return nil, err - } - headers["Authorization"] = authHeader - - if err != nil { - return nil, err - } - - req, err := http.NewRequest(verb, url, body) - if err != nil { - return nil, errors.New("azure/storage: error creating request: " + err.Error()) - } - - if clstr, ok := headers["Content-Length"]; ok { - // content length header is being signed, but completely ignored by golang. - // instead we have to use the ContentLength property on the request struct - // (see https://golang.org/src/net/http/request.go?s=18140:18370#L536 and - // https://golang.org/src/net/http/transfer.go?s=1739:2467#L49) - req.ContentLength, err = strconv.ParseInt(clstr, 10, 64) - if err != nil { - return nil, err - } - } - for k, v := range headers { - req.Header.Add(k, v) - } - - httpClient := c.HTTPClient - if httpClient == nil { - httpClient = http.DefaultClient - } - resp, err := httpClient.Do(req) - if err != nil { - return nil, err - } - - statusCode := resp.StatusCode - if statusCode >= 400 && statusCode <= 505 { - var respBody []byte - respBody, err = readResponseBody(resp) - if err != nil { - return nil, err - } - - if len(respBody) == 0 { - // no error in response body - err = fmt.Errorf("storage: service returned without a response body (%s)", resp.Status) - } else { - // response contains storage service error object, unmarshal - storageErr, errIn := serviceErrFromXML(respBody, resp.StatusCode, resp.Header.Get("x-ms-request-id")) - if err != nil { // error unmarshaling the error response - err = errIn - } - err = storageErr - } - return &storageResponse{ - statusCode: resp.StatusCode, - headers: resp.Header, - body: ioutil.NopCloser(bytes.NewReader(respBody)), /* restore the body */ - }, err - } - - return &storageResponse{ - statusCode: resp.StatusCode, - headers: resp.Header, - body: resp.Body}, nil -} - -func readResponseBody(resp *http.Response) ([]byte, error) { - defer resp.Body.Close() - out, err := ioutil.ReadAll(resp.Body) - if err == io.EOF { - err = nil - } - return out, err -} - -func serviceErrFromXML(body []byte, statusCode int, requestID string) (AzureStorageServiceError, error) { - var storageErr AzureStorageServiceError - if err := xml.Unmarshal(body, &storageErr); err != nil { - return storageErr, err - } - storageErr.StatusCode = statusCode - storageErr.RequestID = requestID - return storageErr, nil -} - -func (e AzureStorageServiceError) Error() string { - return fmt.Sprintf("storage: service returned error: StatusCode=%d, ErrorCode=%s, ErrorMessage=%s, RequestId=%s, QueryParameterName=%s, QueryParameterValue=%s", - e.StatusCode, e.Code, e.Message, e.RequestID, e.QueryParameterName, e.QueryParameterValue) -} - -// checkRespCode returns UnexpectedStatusError if the given response code is not -// one of the allowed status codes; otherwise nil. -func checkRespCode(respCode int, allowed []int) error { - for _, v := range allowed { - if respCode == v { - return nil - } - } - return UnexpectedStatusCodeError{allowed, respCode} -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/storage/file.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/storage/file.go deleted file mode 100644 index ede4e21b..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/storage/file.go +++ /dev/null @@ -1,91 +0,0 @@ -package storage - -import ( - "fmt" - "net/http" - "net/url" -) - -// FileServiceClient contains operations for Microsoft Azure File Service. -type FileServiceClient struct { - client Client -} - -// pathForFileShare returns the URL path segment for a File Share resource -func pathForFileShare(name string) string { - return fmt.Sprintf("/%s", name) -} - -// CreateShare operation creates a new share under the specified account. If the -// share with the same name already exists, the operation fails. -// -// See https://msdn.microsoft.com/en-us/library/azure/dn167008.aspx -func (f FileServiceClient) CreateShare(name string) error { - resp, err := f.createShare(name) - if err != nil { - return err - } - defer resp.body.Close() - return checkRespCode(resp.statusCode, []int{http.StatusCreated}) -} - -// CreateShareIfNotExists creates a new share under the specified account if -// it does not exist. Returns true if container is newly created or false if -// container already exists. -// -// See https://msdn.microsoft.com/en-us/library/azure/dn167008.aspx -func (f FileServiceClient) CreateShareIfNotExists(name string) (bool, error) { - resp, err := f.createShare(name) - if resp != nil { - defer resp.body.Close() - if resp.statusCode == http.StatusCreated || resp.statusCode == http.StatusConflict { - return resp.statusCode == http.StatusCreated, nil - } - } - return false, err -} - -// CreateShare creates a Azure File Share and returns its response -func (f FileServiceClient) createShare(name string) (*storageResponse, error) { - uri := f.client.getEndpoint(fileServiceName, pathForFileShare(name), url.Values{"restype": {"share"}}) - headers := f.client.getStandardHeaders() - return f.client.exec("PUT", uri, headers, nil) -} - -// DeleteShare operation marks the specified share for deletion. The share -// and any files contained within it are later deleted during garbage -// collection. -// -// See https://msdn.microsoft.com/en-us/library/azure/dn689090.aspx -func (f FileServiceClient) DeleteShare(name string) error { - resp, err := f.deleteShare(name) - if err != nil { - return err - } - defer resp.body.Close() - return checkRespCode(resp.statusCode, []int{http.StatusAccepted}) -} - -// DeleteShareIfExists operation marks the specified share for deletion if it -// exists. The share and any files contained within it are later deleted during -// garbage collection. Returns true if share existed and deleted with this call, -// false otherwise. -// -// See https://msdn.microsoft.com/en-us/library/azure/dn689090.aspx -func (f FileServiceClient) DeleteShareIfExists(name string) (bool, error) { - resp, err := f.deleteShare(name) - if resp != nil { - defer resp.body.Close() - if resp.statusCode == http.StatusAccepted || resp.statusCode == http.StatusNotFound { - return resp.statusCode == http.StatusAccepted, nil - } - } - return false, err -} - -// deleteShare makes the call to Delete Share operation endpoint and returns -// the response -func (f FileServiceClient) deleteShare(name string) (*storageResponse, error) { - uri := f.client.getEndpoint(fileServiceName, pathForFileShare(name), url.Values{"restype": {"share"}}) - return f.client.exec("DELETE", uri, f.client.getStandardHeaders(), nil) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/storage/queue.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/storage/queue.go deleted file mode 100644 index 3ecf4aca..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/storage/queue.go +++ /dev/null @@ -1,306 +0,0 @@ -package storage - -import ( - "encoding/xml" - "fmt" - "net/http" - "net/url" - "strconv" - "strings" -) - -const ( - // casing is per Golang's http.Header canonicalizing the header names. - approximateMessagesCountHeader = "X-Ms-Approximate-Messages-Count" - userDefinedMetadataHeaderPrefix = "X-Ms-Meta-" -) - -// QueueServiceClient contains operations for Microsoft Azure Queue Storage -// Service. -type QueueServiceClient struct { - client Client -} - -func pathForQueue(queue string) string { return fmt.Sprintf("/%s", queue) } -func pathForQueueMessages(queue string) string { return fmt.Sprintf("/%s/messages", queue) } -func pathForMessage(queue, name string) string { return fmt.Sprintf("/%s/messages/%s", queue, name) } - -type putMessageRequest struct { - XMLName xml.Name `xml:"QueueMessage"` - MessageText string `xml:"MessageText"` -} - -// PutMessageParameters is the set of options can be specified for Put Messsage -// operation. A zero struct does not use any preferences for the request. -type PutMessageParameters struct { - VisibilityTimeout int - MessageTTL int -} - -func (p PutMessageParameters) getParameters() url.Values { - out := url.Values{} - if p.VisibilityTimeout != 0 { - out.Set("visibilitytimeout", strconv.Itoa(p.VisibilityTimeout)) - } - if p.MessageTTL != 0 { - out.Set("messagettl", strconv.Itoa(p.MessageTTL)) - } - return out -} - -// GetMessagesParameters is the set of options can be specified for Get -// Messsages operation. A zero struct does not use any preferences for the -// request. -type GetMessagesParameters struct { - NumOfMessages int - VisibilityTimeout int -} - -func (p GetMessagesParameters) getParameters() url.Values { - out := url.Values{} - if p.NumOfMessages != 0 { - out.Set("numofmessages", strconv.Itoa(p.NumOfMessages)) - } - if p.VisibilityTimeout != 0 { - out.Set("visibilitytimeout", strconv.Itoa(p.VisibilityTimeout)) - } - return out -} - -// PeekMessagesParameters is the set of options can be specified for Peek -// Messsage operation. A zero struct does not use any preferences for the -// request. -type PeekMessagesParameters struct { - NumOfMessages int -} - -func (p PeekMessagesParameters) getParameters() url.Values { - out := url.Values{"peekonly": {"true"}} // Required for peek operation - if p.NumOfMessages != 0 { - out.Set("numofmessages", strconv.Itoa(p.NumOfMessages)) - } - return out -} - -// GetMessagesResponse represents a response returned from Get Messages -// operation. -type GetMessagesResponse struct { - XMLName xml.Name `xml:"QueueMessagesList"` - QueueMessagesList []GetMessageResponse `xml:"QueueMessage"` -} - -// GetMessageResponse represents a QueueMessage object returned from Get -// Messages operation response. -type GetMessageResponse struct { - MessageID string `xml:"MessageId"` - InsertionTime string `xml:"InsertionTime"` - ExpirationTime string `xml:"ExpirationTime"` - PopReceipt string `xml:"PopReceipt"` - TimeNextVisible string `xml:"TimeNextVisible"` - DequeueCount int `xml:"DequeueCount"` - MessageText string `xml:"MessageText"` -} - -// PeekMessagesResponse represents a response returned from Get Messages -// operation. -type PeekMessagesResponse struct { - XMLName xml.Name `xml:"QueueMessagesList"` - QueueMessagesList []PeekMessageResponse `xml:"QueueMessage"` -} - -// PeekMessageResponse represents a QueueMessage object returned from Peek -// Messages operation response. -type PeekMessageResponse struct { - MessageID string `xml:"MessageId"` - InsertionTime string `xml:"InsertionTime"` - ExpirationTime string `xml:"ExpirationTime"` - DequeueCount int `xml:"DequeueCount"` - MessageText string `xml:"MessageText"` -} - -// QueueMetadataResponse represents user defined metadata and queue -// properties on a specific queue. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179384.aspx -type QueueMetadataResponse struct { - ApproximateMessageCount int - UserDefinedMetadata map[string]string -} - -// SetMetadata operation sets user-defined metadata on the specified queue. -// Metadata is associated with the queue as name-value pairs. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179348.aspx -func (c QueueServiceClient) SetMetadata(name string, metadata map[string]string) error { - uri := c.client.getEndpoint(queueServiceName, pathForQueue(name), url.Values{"comp": []string{"metadata"}}) - headers := c.client.getStandardHeaders() - for k, v := range metadata { - headers[userDefinedMetadataHeaderPrefix+k] = v - } - - resp, err := c.client.exec("PUT", uri, headers, nil) - if err != nil { - return err - } - defer resp.body.Close() - - return checkRespCode(resp.statusCode, []int{http.StatusNoContent}) -} - -// GetMetadata operation retrieves user-defined metadata and queue -// properties on the specified queue. Metadata is associated with -// the queue as name-values pairs. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179384.aspx -// -// Because the way Golang's http client (and http.Header in particular) -// canonicalize header names, the returned metadata names would always -// be all lower case. -func (c QueueServiceClient) GetMetadata(name string) (QueueMetadataResponse, error) { - qm := QueueMetadataResponse{} - qm.UserDefinedMetadata = make(map[string]string) - uri := c.client.getEndpoint(queueServiceName, pathForQueue(name), url.Values{"comp": []string{"metadata"}}) - headers := c.client.getStandardHeaders() - resp, err := c.client.exec("GET", uri, headers, nil) - if err != nil { - return qm, err - } - defer resp.body.Close() - - for k, v := range resp.headers { - if len(v) != 1 { - return qm, fmt.Errorf("Unexpected number of values (%d) in response header '%s'", len(v), k) - } - - value := v[0] - - if k == approximateMessagesCountHeader { - qm.ApproximateMessageCount, err = strconv.Atoi(value) - if err != nil { - return qm, fmt.Errorf("Unexpected value in response header '%s': '%s' ", k, value) - } - } else if strings.HasPrefix(k, userDefinedMetadataHeaderPrefix) { - name := strings.TrimPrefix(k, userDefinedMetadataHeaderPrefix) - qm.UserDefinedMetadata[strings.ToLower(name)] = value - } - } - - return qm, checkRespCode(resp.statusCode, []int{http.StatusOK}) -} - -// CreateQueue operation creates a queue under the given account. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179342.aspx -func (c QueueServiceClient) CreateQueue(name string) error { - uri := c.client.getEndpoint(queueServiceName, pathForQueue(name), url.Values{}) - headers := c.client.getStandardHeaders() - resp, err := c.client.exec("PUT", uri, headers, nil) - if err != nil { - return err - } - defer resp.body.Close() - return checkRespCode(resp.statusCode, []int{http.StatusCreated}) -} - -// DeleteQueue operation permanently deletes the specified queue. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179436.aspx -func (c QueueServiceClient) DeleteQueue(name string) error { - uri := c.client.getEndpoint(queueServiceName, pathForQueue(name), url.Values{}) - resp, err := c.client.exec("DELETE", uri, c.client.getStandardHeaders(), nil) - if err != nil { - return err - } - defer resp.body.Close() - return checkRespCode(resp.statusCode, []int{http.StatusNoContent}) -} - -// QueueExists returns true if a queue with given name exists. -func (c QueueServiceClient) QueueExists(name string) (bool, error) { - uri := c.client.getEndpoint(queueServiceName, pathForQueue(name), url.Values{"comp": {"metadata"}}) - resp, err := c.client.exec("GET", uri, c.client.getStandardHeaders(), nil) - if resp != nil && (resp.statusCode == http.StatusOK || resp.statusCode == http.StatusNotFound) { - return resp.statusCode == http.StatusOK, nil - } - - return false, err -} - -// PutMessage operation adds a new message to the back of the message queue. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179346.aspx -func (c QueueServiceClient) PutMessage(queue string, message string, params PutMessageParameters) error { - uri := c.client.getEndpoint(queueServiceName, pathForQueueMessages(queue), params.getParameters()) - req := putMessageRequest{MessageText: message} - body, nn, err := xmlMarshal(req) - if err != nil { - return err - } - headers := c.client.getStandardHeaders() - headers["Content-Length"] = strconv.Itoa(nn) - resp, err := c.client.exec("POST", uri, headers, body) - if err != nil { - return err - } - defer resp.body.Close() - return checkRespCode(resp.statusCode, []int{http.StatusCreated}) -} - -// ClearMessages operation deletes all messages from the specified queue. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179454.aspx -func (c QueueServiceClient) ClearMessages(queue string) error { - uri := c.client.getEndpoint(queueServiceName, pathForQueueMessages(queue), url.Values{}) - resp, err := c.client.exec("DELETE", uri, c.client.getStandardHeaders(), nil) - if err != nil { - return err - } - defer resp.body.Close() - return checkRespCode(resp.statusCode, []int{http.StatusNoContent}) -} - -// GetMessages operation retrieves one or more messages from the front of the -// queue. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179474.aspx -func (c QueueServiceClient) GetMessages(queue string, params GetMessagesParameters) (GetMessagesResponse, error) { - var r GetMessagesResponse - uri := c.client.getEndpoint(queueServiceName, pathForQueueMessages(queue), params.getParameters()) - resp, err := c.client.exec("GET", uri, c.client.getStandardHeaders(), nil) - if err != nil { - return r, err - } - defer resp.body.Close() - err = xmlUnmarshal(resp.body, &r) - return r, err -} - -// PeekMessages retrieves one or more messages from the front of the queue, but -// does not alter the visibility of the message. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179472.aspx -func (c QueueServiceClient) PeekMessages(queue string, params PeekMessagesParameters) (PeekMessagesResponse, error) { - var r PeekMessagesResponse - uri := c.client.getEndpoint(queueServiceName, pathForQueueMessages(queue), params.getParameters()) - resp, err := c.client.exec("GET", uri, c.client.getStandardHeaders(), nil) - if err != nil { - return r, err - } - defer resp.body.Close() - err = xmlUnmarshal(resp.body, &r) - return r, err -} - -// DeleteMessage operation deletes the specified message. -// -// See https://msdn.microsoft.com/en-us/library/azure/dd179347.aspx -func (c QueueServiceClient) DeleteMessage(queue, messageID, popReceipt string) error { - uri := c.client.getEndpoint(queueServiceName, pathForMessage(queue, messageID), url.Values{ - "popreceipt": {popReceipt}}) - resp, err := c.client.exec("DELETE", uri, c.client.getStandardHeaders(), nil) - if err != nil { - return err - } - defer resp.body.Close() - return checkRespCode(resp.statusCode, []int{http.StatusNoContent}) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/storage/util.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/storage/util.go deleted file mode 100644 index 33155af7..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/azure-sdk-for-go/storage/util.go +++ /dev/null @@ -1,71 +0,0 @@ -package storage - -import ( - "bytes" - "crypto/hmac" - "crypto/sha256" - "encoding/base64" - "encoding/xml" - "fmt" - "io" - "io/ioutil" - "net/http" - "net/url" - "time" -) - -func (c Client) computeHmac256(message string) string { - h := hmac.New(sha256.New, c.accountKey) - h.Write([]byte(message)) - return base64.StdEncoding.EncodeToString(h.Sum(nil)) -} - -func currentTimeRfc1123Formatted() string { - return timeRfc1123Formatted(time.Now().UTC()) -} - -func timeRfc1123Formatted(t time.Time) string { - return t.Format(http.TimeFormat) -} - -func mergeParams(v1, v2 url.Values) url.Values { - out := url.Values{} - for k, v := range v1 { - out[k] = v - } - for k, v := range v2 { - vals, ok := out[k] - if ok { - vals = append(vals, v...) - out[k] = vals - } else { - out[k] = v - } - } - return out -} - -func prepareBlockListRequest(blocks []Block) string { - s := `` - for _, v := range blocks { - s += fmt.Sprintf("<%s>%s", v.Status, v.ID, v.Status) - } - s += `` - return s -} - -func xmlUnmarshal(body io.Reader, v interface{}) error { - data, err := ioutil.ReadAll(body) - if err != nil { - return err - } - return xml.Unmarshal(data, v) -} - -func xmlMarshal(v interface{}) (io.Reader, int, error) { - b, err := xml.Marshal(v) - if err != nil { - return nil, 0, err - } - return bytes.NewReader(b), len(b), nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/LICENSE b/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/LICENSE deleted file mode 100644 index b9d6a27e..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/LICENSE +++ /dev/null @@ -1,191 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - Copyright 2015 Microsoft Corporation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/autorest.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/autorest.go deleted file mode 100644 index 9804f401..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/autorest.go +++ /dev/null @@ -1,114 +0,0 @@ -/* -Package autorest implements an HTTP request pipeline suitable for use across multiple go-routines -and provides the shared routines relied on by AutoRest (see https://github.com/Azure/autorest/) -generated Go code. - -The package breaks sending and responding to HTTP requests into three phases: Preparing, Sending, -and Responding. A typical pattern is: - - req, err := Prepare(&http.Request{}, - token.WithAuthorization()) - - resp, err := Send(req, - WithLogging(logger), - DoErrorIfStatusCode(http.StatusInternalServerError), - DoCloseIfError(), - DoRetryForAttempts(5, time.Second)) - - err = Respond(resp, - ByClosing()) - -Each phase relies on decorators to modify and / or manage processing. Decorators may first modify -and then pass the data along, pass the data first and then modify the result, or wrap themselves -around passing the data (such as a logger might do). Decorators run in the order provided. For -example, the following: - - req, err := Prepare(&http.Request{}, - WithBaseURL("https://microsoft.com/"), - WithPath("a"), - WithPath("b"), - WithPath("c")) - -will set the URL to: - - https://microsoft.com/a/b/c - -Preparers and Responders may be shared and re-used (assuming the underlying decorators support -sharing and re-use). Performant use is obtained by creating one or more Preparers and Responders -shared among multiple go-routines, and a single Sender shared among multiple sending go-routines, -all bound together by means of input / output channels. - -Decorators hold their passed state within a closure (such as the path components in the example -above). Be careful to share Preparers and Responders only in a context where such held state -applies. For example, it may not make sense to share a Preparer that applies a query string from a -fixed set of values. Similarly, sharing a Responder that reads the response body into a passed -struct (e.g., ByUnmarshallingJson) is likely incorrect. - -Lastly, the Swagger specification (https://swagger.io) that drives AutoRest -(https://github.com/Azure/autorest/) precisely defines two date forms: date and date-time. The -github.com/Azure/go-autorest/autorest/date package provides time.Time derivations to ensure -correct parsing and formatting. - -Errors raised by autorest objects and methods will conform to the autorest.Error interface. - -See the included examples for more detail. For details on the suggested use of this package by -generated clients, see the Client described below. -*/ -package autorest - -import ( - "net/http" - "time" -) - -const ( - // HeaderLocation specifies the HTTP Location header. - HeaderLocation = "Location" - - // HeaderRetryAfter specifies the HTTP Retry-After header. - HeaderRetryAfter = "Retry-After" -) - -// ResponseHasStatusCode returns true if the status code in the HTTP Response is in the passed set -// and false otherwise. -func ResponseHasStatusCode(resp *http.Response, codes ...int) bool { - return containsInt(codes, resp.StatusCode) -} - -// GetLocation retrieves the URL from the Location header of the passed response. -func GetLocation(resp *http.Response) string { - return resp.Header.Get(HeaderLocation) -} - -// GetRetryAfter extracts the retry delay from the Retry-After header of the passed response. If -// the header is absent or is malformed, it will return the supplied default delay time.Duration. -func GetRetryAfter(resp *http.Response, defaultDelay time.Duration) time.Duration { - retry := resp.Header.Get(HeaderRetryAfter) - if retry == "" { - return defaultDelay - } - - d, err := time.ParseDuration(retry + "s") - if err != nil { - return defaultDelay - } - - return d -} - -// NewPollingRequest allocates and returns a new http.Request to poll for the passed response. -func NewPollingRequest(resp *http.Response, cancel <-chan struct{}) (*http.Request, error) { - location := GetLocation(resp) - if location == "" { - return nil, NewErrorWithResponse("autorest", "NewPollingRequest", resp, "Location header missing from response that requires polling") - } - - req, err := Prepare(&http.Request{Cancel: cancel}, - AsGet(), - WithBaseURL(location)) - if err != nil { - return nil, NewErrorWithError(err, "autorest", "NewPollingRequest", nil, "Failure creating poll request to %s", location) - } - - return req, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/azure/async.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/azure/async.go deleted file mode 100644 index 14752775..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/azure/async.go +++ /dev/null @@ -1,302 +0,0 @@ -package azure - -import ( - "bytes" - "fmt" - "github.com/Azure/go-autorest/autorest" - "github.com/Azure/go-autorest/autorest/date" - "io/ioutil" - "net/http" - "strings" - "time" -) - -const ( - headerAsyncOperation = "Azure-AsyncOperation" -) - -const ( - methodDelete = "DELETE" - methodPatch = "PATCH" - methodPost = "POST" - methodPut = "PUT" - methodGet = "GET" - - operationInProgress string = "InProgress" - operationCanceled string = "Canceled" - operationFailed string = "Failed" - operationSucceeded string = "Succeeded" -) - -// DoPollForAsynchronous returns a SendDecorator that polls if the http.Response is for an Azure -// long-running operation. It will delay between requests for the duration specified in the -// RetryAfter header or, if the header is absent, the passed delay. Polling may be canceled by -// closing the optional channel on the http.Request. -func DoPollForAsynchronous(delay time.Duration) autorest.SendDecorator { - return func(s autorest.Sender) autorest.Sender { - return autorest.SenderFunc(func(r *http.Request) (resp *http.Response, err error) { - resp, err = s.Do(r) - if err != nil { - return resp, err - } - - ps := pollingState{} - for err == nil { - err = updatePollingState(resp, &ps) - if err != nil { - break - } - if ps.hasTerminated() { - if !ps.hasSucceeded() { - err = ps - } - break - } - - r, err = newPollingRequest(resp, ps) - if err != nil { - return resp, err - } - - resp, err = autorest.SendWithSender(s, r, - autorest.AfterDelay(autorest.GetRetryAfter(resp, delay))) - } - - return resp, err - }) - } -} - -func getAsyncOperation(resp *http.Response) string { - return resp.Header.Get(http.CanonicalHeaderKey(headerAsyncOperation)) -} - -func hasSucceeded(state string) bool { - return state == operationSucceeded -} - -func hasTerminated(state string) bool { - switch state { - case operationCanceled, operationFailed, operationSucceeded: - return true - default: - return false - } -} - -func hasFailed(state string) bool { - return state == operationFailed -} - -type provisioningTracker interface { - state() string - hasSucceeded() bool - hasTerminated() bool -} - -type operationResource struct { - // Note: - // The specification states services should return the "id" field. However some return it as - // "operationId". - ID string `json:"id"` - OperationID string `json:"operationId"` - Name string `json:"name"` - Status string `json:"status"` - Properties map[string]interface{} `json:"properties"` - OperationError ServiceError `json:"error"` - StartTime date.Time `json:"startTime"` - EndTime date.Time `json:"endTime"` - PercentComplete float64 `json:"percentComplete"` -} - -func (or operationResource) state() string { - return or.Status -} - -func (or operationResource) hasSucceeded() bool { - return hasSucceeded(or.state()) -} - -func (or operationResource) hasTerminated() bool { - return hasTerminated(or.state()) -} - -type provisioningProperties struct { - ProvisioningState string `json:"provisioningState"` -} - -type provisioningStatus struct { - Properties provisioningProperties `json:"properties,omitempty"` - ProvisioningError ServiceError `json:"error,omitempty"` -} - -func (ps provisioningStatus) state() string { - return ps.Properties.ProvisioningState -} - -func (ps provisioningStatus) hasSucceeded() bool { - return hasSucceeded(ps.state()) -} - -func (ps provisioningStatus) hasTerminated() bool { - return hasTerminated(ps.state()) -} - -func (ps provisioningStatus) hasProvisioningError() bool { - return ps.ProvisioningError != ServiceError{} -} - -type pollingResponseFormat string - -const ( - usesOperationResponse pollingResponseFormat = "OperationResponse" - usesProvisioningStatus pollingResponseFormat = "ProvisioningStatus" - formatIsUnknown pollingResponseFormat = "" -) - -type pollingState struct { - responseFormat pollingResponseFormat - uri string - state string - code string - message string -} - -func (ps pollingState) hasSucceeded() bool { - return hasSucceeded(ps.state) -} - -func (ps pollingState) hasTerminated() bool { - return hasTerminated(ps.state) -} - -func (ps pollingState) hasFailed() bool { - return hasFailed(ps.state) -} - -func (ps pollingState) Error() string { - return fmt.Sprintf("Long running operation terminated with status '%s': Code=%q Message=%q", ps.state, ps.code, ps.message) -} - -// updatePollingState maps the operation status -- retrieved from either a provisioningState -// field, the status field of an OperationResource, or inferred from the HTTP status code -- -// into a well-known states. Since the process begins from the initial request, the state -// always comes from either a the provisioningState returned or is inferred from the HTTP -// status code. Subsequent requests will read an Azure OperationResource object if the -// service initially returned the Azure-AsyncOperation header. The responseFormat field notes -// the expected response format. -func updatePollingState(resp *http.Response, ps *pollingState) error { - // Determine the response shape - // -- The first response will always be a provisioningStatus response; only the polling requests, - // depending on the header returned, may be something otherwise. - var pt provisioningTracker - if ps.responseFormat == usesOperationResponse { - pt = &operationResource{} - } else { - pt = &provisioningStatus{} - } - - // If this is the first request (that is, the polling response shape is unknown), determine how - // to poll and what to expect - if ps.responseFormat == formatIsUnknown { - req := resp.Request - if req == nil { - return autorest.NewError("azure", "updatePollingState", "Azure Polling Error - Original HTTP request is missing") - } - - // Prefer the Azure-AsyncOperation header - ps.uri = getAsyncOperation(resp) - if ps.uri != "" { - ps.responseFormat = usesOperationResponse - } else { - ps.responseFormat = usesProvisioningStatus - } - - // Else, use the Location header - if ps.uri == "" { - ps.uri = autorest.GetLocation(resp) - } - - // Lastly, requests against an existing resource, use the last request URI - if ps.uri == "" { - m := strings.ToUpper(req.Method) - if m == methodPatch || m == methodPut || m == methodGet { - ps.uri = req.URL.String() - } - } - - if ps.uri == "" { - return autorest.NewError("azure", "updatePollingState", "Azure Polling Error - Unable to obtain polling URI for %s %s", req.Method, req.RequestURI) - } - } - - // Read and interpret the response (saving the Body in case no polling is necessary) - b := &bytes.Buffer{} - err := autorest.Respond(resp, - autorest.ByCopying(b), - autorest.ByUnmarshallingJSON(pt), - autorest.ByClosing()) - resp.Body = ioutil.NopCloser(b) - if err != nil { - return err - } - - // Interpret the results - // -- Terminal states apply regardless - // -- Unknown states are per-service inprogress states - // -- Otherwise, infer state from HTTP status code - if pt.hasTerminated() { - ps.state = pt.state() - } else if pt.state() != "" { - ps.state = operationInProgress - } else { - switch resp.StatusCode { - case http.StatusAccepted: - ps.state = operationInProgress - - case http.StatusNoContent, http.StatusCreated, http.StatusOK: - ps.state = operationSucceeded - - default: - ps.state = operationFailed - } - } - - // For failed operation, check for error code and message in - // -- Operation resource - // -- Response - // -- Otherwise, Unknown - if ps.hasFailed() { - if ps.responseFormat == usesOperationResponse { - or := pt.(*operationResource) - ps.code = or.OperationError.Code - ps.message = or.OperationError.Message - } else { - p := pt.(*provisioningStatus) - if p.hasProvisioningError() { - ps.code = p.ProvisioningError.Code - ps.message = p.ProvisioningError.Message - } else { - ps.code = "Unknown" - ps.message = "None" - } - } - } - return nil -} - -func newPollingRequest(resp *http.Response, ps pollingState) (*http.Request, error) { - req := resp.Request - if req == nil { - return nil, autorest.NewError("azure", "newPollingRequest", "Azure Polling Error - Original HTTP request is missing") - } - - reqPoll, err := autorest.Prepare(&http.Request{Cancel: req.Cancel}, - autorest.AsGet(), - autorest.WithBaseURL(ps.uri)) - if err != nil { - return nil, autorest.NewErrorWithError(err, "azure", "newPollingRequest", nil, "Failure creating poll request to %s", ps.uri) - } - - return reqPoll, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/azure/azure.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/azure/azure.go deleted file mode 100644 index 75b3aac7..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/azure/azure.go +++ /dev/null @@ -1,165 +0,0 @@ -/* -Package azure provides Azure-specific implementations used with AutoRest. - -See the included examples for more detail. -*/ -package azure - -import ( - "fmt" - "io/ioutil" - "net/http" - "strconv" - - "github.com/Azure/go-autorest/autorest" -) - -const ( - // HeaderClientID is the Azure extension header to set a user-specified request ID. - HeaderClientID = "x-ms-client-request-id" - - // HeaderReturnClientID is the Azure extension header to set if the user-specified request ID - // should be included in the response. - HeaderReturnClientID = "x-ms-return-client-request-id" - - // HeaderRequestID is the Azure extension header of the service generated request ID returned - // in the response. - HeaderRequestID = "x-ms-request-id" -) - -// ServiceError encapsulates the error response from an Azure service. -type ServiceError struct { - Code string `json:"code"` - Message string `json:"message"` -} - -func (se ServiceError) Error() string { - return fmt.Sprintf("Azure Error: Code=%q Message=%q", se.Code, se.Message) -} - -// RequestError describes an error response returned by Azure service. -type RequestError struct { - autorest.DetailedError - - // The error returned by the Azure service. - ServiceError *ServiceError `json:"error"` - - // The request id (from the x-ms-request-id-header) of the request. - RequestID string -} - -// Error returns a human-friendly error message from service error. -func (e RequestError) Error() string { - return fmt.Sprintf("azure: Service returned an error. Code=%q Message=%q Status=%d", - e.ServiceError.Code, e.ServiceError.Message, e.StatusCode) -} - -// IsAzureError returns true if the passed error is an Azure Service error; false otherwise. -func IsAzureError(e error) bool { - _, ok := e.(*RequestError) - return ok -} - -// NewErrorWithError creates a new Error conforming object from the -// passed packageType, method, statusCode of the given resp (UndefinedStatusCode -// if resp is nil), message, and original error. message is treated as a format -// string to which the optional args apply. -func NewErrorWithError(original error, packageType string, method string, resp *http.Response, message string, args ...interface{}) RequestError { - if v, ok := original.(*RequestError); ok { - return *v - } - - statusCode := autorest.UndefinedStatusCode - if resp != nil { - statusCode = resp.StatusCode - } - return RequestError{ - DetailedError: autorest.DetailedError{ - Original: original, - PackageType: packageType, - Method: method, - StatusCode: statusCode, - Message: fmt.Sprintf(message, args...), - }, - } -} - -// WithReturningClientID returns a PrepareDecorator that adds an HTTP extension header of -// x-ms-client-request-id whose value is the passed, undecorated UUID (e.g., -// "0F39878C-5F76-4DB8-A25D-61D2C193C3CA"). It also sets the x-ms-return-client-request-id -// header to true such that UUID accompanies the http.Response. -func WithReturningClientID(uuid string) autorest.PrepareDecorator { - preparer := autorest.CreatePreparer( - WithClientID(uuid), - WithReturnClientID(true)) - - return func(p autorest.Preparer) autorest.Preparer { - return autorest.PreparerFunc(func(r *http.Request) (*http.Request, error) { - r, err := p.Prepare(r) - if err != nil { - return r, err - } - return preparer.Prepare(r) - }) - } -} - -// WithClientID returns a PrepareDecorator that adds an HTTP extension header of -// x-ms-client-request-id whose value is passed, undecorated UUID (e.g., -// "0F39878C-5F76-4DB8-A25D-61D2C193C3CA"). -func WithClientID(uuid string) autorest.PrepareDecorator { - return autorest.WithHeader(HeaderClientID, uuid) -} - -// WithReturnClientID returns a PrepareDecorator that adds an HTTP extension header of -// x-ms-return-client-request-id whose boolean value indicates if the value of the -// x-ms-client-request-id header should be included in the http.Response. -func WithReturnClientID(b bool) autorest.PrepareDecorator { - return autorest.WithHeader(HeaderReturnClientID, strconv.FormatBool(b)) -} - -// ExtractClientID extracts the client identifier from the x-ms-client-request-id header set on the -// http.Request sent to the service (and returned in the http.Response) -func ExtractClientID(resp *http.Response) string { - return autorest.ExtractHeaderValue(HeaderClientID, resp) -} - -// ExtractRequestID extracts the Azure server generated request identifier from the -// x-ms-request-id header. -func ExtractRequestID(resp *http.Response) string { - return autorest.ExtractHeaderValue(HeaderRequestID, resp) -} - -// WithErrorUnlessStatusCode returns a RespondDecorator that emits an -// azure.RequestError by reading the response body unless the response HTTP status code -// is among the set passed. -// -// If there is a chance service may return responses other than the Azure error -// format and the response cannot be parsed into an error, a decoding error will -// be returned containing the response body. In any case, the Responder will -// return an error if the status code is not satisfied. -// -// If this Responder returns an error, the response body will be replaced with -// an in-memory reader, which needs no further closing. -func WithErrorUnlessStatusCode(codes ...int) autorest.RespondDecorator { - return func(r autorest.Responder) autorest.Responder { - return autorest.ResponderFunc(func(resp *http.Response) error { - err := r.Respond(resp) - if err == nil && !autorest.ResponseHasStatusCode(resp, codes...) { - var e RequestError - defer resp.Body.Close() - - b, decodeErr := autorest.CopyAndDecode(autorest.EncodedAsJSON, resp.Body, &e) - resp.Body = ioutil.NopCloser(&b) // replace body with in-memory reader - if decodeErr != nil || e.ServiceError == nil { - return fmt.Errorf("autorest/azure: error response cannot be parsed: %q error: %v", b.String(), err) - } - - e.RequestID = ExtractRequestID(resp) - e.StatusCode = resp.StatusCode - err = &e - } - return err - }) - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/azure/config.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/azure/config.go deleted file mode 100644 index bea30b0d..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/azure/config.go +++ /dev/null @@ -1,13 +0,0 @@ -package azure - -import ( - "net/url" -) - -// OAuthConfig represents the endpoints needed -// in OAuth operations -type OAuthConfig struct { - AuthorizeEndpoint url.URL - TokenEndpoint url.URL - DeviceCodeEndpoint url.URL -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/azure/devicetoken.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/azure/devicetoken.go deleted file mode 100644 index e1d5498a..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/azure/devicetoken.go +++ /dev/null @@ -1,193 +0,0 @@ -package azure - -/* - This file is largely based on rjw57/oauth2device's code, with the follow differences: - * scope -> resource, and only allow a single one - * receive "Message" in the DeviceCode struct and show it to users as the prompt - * azure-xplat-cli has the following behavior that this emulates: - - does not send client_secret during the token exchange - - sends resource again in the token exchange request -*/ - -import ( - "fmt" - "net/http" - "net/url" - "time" - - "github.com/Azure/go-autorest/autorest" -) - -const ( - logPrefix = "autorest/azure/devicetoken:" -) - -var ( - // ErrDeviceGeneric represents an unknown error from the token endpoint when using device flow - ErrDeviceGeneric = fmt.Errorf("%s Error while retrieving OAuth token: Unknown Error", logPrefix) - - // ErrDeviceAccessDenied represents an access denied error from the token endpoint when using device flow - ErrDeviceAccessDenied = fmt.Errorf("%s Error while retrieving OAuth token: Access Denied", logPrefix) - - // ErrDeviceAuthorizationPending represents the server waiting on the user to complete the device flow - ErrDeviceAuthorizationPending = fmt.Errorf("%s Error while retrieving OAuth token: Authorization Pending", logPrefix) - - // ErrDeviceCodeExpired represents the server timing out and expiring the code during device flow - ErrDeviceCodeExpired = fmt.Errorf("%s Error while retrieving OAuth token: Code Expired", logPrefix) - - // ErrDeviceSlowDown represents the service telling us we're polling too often during device flow - ErrDeviceSlowDown = fmt.Errorf("%s Error while retrieving OAuth token: Slow Down", logPrefix) - - errCodeSendingFails = "Error occurred while sending request for Device Authorization Code" - errCodeHandlingFails = "Error occurred while handling response from the Device Endpoint" - errTokenSendingFails = "Error occurred while sending request with device code for a token" - errTokenHandlingFails = "Error occurred while handling response from the Token Endpoint (during device flow)" -) - -// DeviceCode is the object returned by the device auth endpoint -// It contains information to instruct the user to complete the auth flow -type DeviceCode struct { - DeviceCode *string `json:"device_code,omitempty"` - UserCode *string `json:"user_code,omitempty"` - VerificationURL *string `json:"verification_url,omitempty"` - ExpiresIn *int64 `json:"expires_in,string,omitempty"` - Interval *int64 `json:"interval,string,omitempty"` - - Message *string `json:"message"` // Azure specific - Resource string // store the following, stored when initiating, used when exchanging - OAuthConfig OAuthConfig - ClientID string -} - -// TokenError is the object returned by the token exchange endpoint -// when something is amiss -type TokenError struct { - Error *string `json:"error,omitempty"` - ErrorCodes []int `json:"error_codes,omitempty"` - ErrorDescription *string `json:"error_description,omitempty"` - Timestamp *string `json:"timestamp,omitempty"` - TraceID *string `json:"trace_id,omitempty"` -} - -// DeviceToken is the object return by the token exchange endpoint -// It can either look like a Token or an ErrorToken, so put both here -// and check for presence of "Error" to know if we are in error state -type deviceToken struct { - Token - TokenError -} - -// InitiateDeviceAuth initiates a device auth flow. It returns a DeviceCode -// that can be used with CheckForUserCompletion or WaitForUserCompletion. -func InitiateDeviceAuth(client *autorest.Client, oauthConfig OAuthConfig, clientID, resource string) (*DeviceCode, error) { - req, _ := autorest.Prepare( - &http.Request{}, - autorest.AsPost(), - autorest.AsFormURLEncoded(), - autorest.WithBaseURL(oauthConfig.DeviceCodeEndpoint.String()), - autorest.WithFormData(url.Values{ - "client_id": []string{clientID}, - "resource": []string{resource}, - }), - ) - - resp, err := autorest.SendWithSender(client, req) - if err != nil { - return nil, fmt.Errorf("%s %s: %s", logPrefix, errCodeSendingFails, err) - } - - var code DeviceCode - err = autorest.Respond( - resp, - autorest.WithErrorUnlessStatusCode(http.StatusOK), - autorest.ByUnmarshallingJSON(&code), - autorest.ByClosing()) - if err != nil { - return nil, fmt.Errorf("%s %s: %s", logPrefix, errCodeHandlingFails, err) - } - - code.ClientID = clientID - code.Resource = resource - code.OAuthConfig = oauthConfig - - return &code, nil -} - -// CheckForUserCompletion takes a DeviceCode and checks with the Azure AD OAuth endpoint -// to see if the device flow has: been completed, timed out, or otherwise failed -func CheckForUserCompletion(client *autorest.Client, code *DeviceCode) (*Token, error) { - req, _ := autorest.Prepare( - &http.Request{}, - autorest.AsPost(), - autorest.AsFormURLEncoded(), - autorest.WithBaseURL(code.OAuthConfig.TokenEndpoint.String()), - autorest.WithFormData(url.Values{ - "client_id": []string{code.ClientID}, - "code": []string{*code.DeviceCode}, - "grant_type": []string{OAuthGrantTypeDeviceCode}, - "resource": []string{code.Resource}, - }), - ) - - resp, err := autorest.SendWithSender(client, req) - if err != nil { - return nil, fmt.Errorf("%s %s: %s", logPrefix, errTokenSendingFails, err) - } - - var token deviceToken - err = autorest.Respond( - resp, - autorest.WithErrorUnlessStatusCode(http.StatusOK, http.StatusBadRequest), - autorest.ByUnmarshallingJSON(&token), - autorest.ByClosing()) - if err != nil { - return nil, fmt.Errorf("%s %s: %s", logPrefix, errTokenHandlingFails, err) - } - - if token.Error == nil { - return &token.Token, nil - } - - switch *token.Error { - case "authorization_pending": - return nil, ErrDeviceAuthorizationPending - case "slow_down": - return nil, ErrDeviceSlowDown - case "access_denied": - return nil, ErrDeviceAccessDenied - case "code_expired": - return nil, ErrDeviceCodeExpired - default: - return nil, ErrDeviceGeneric - } -} - -// WaitForUserCompletion calls CheckForUserCompletion repeatedly until a token is granted or an error state occurs. -// This prevents the user from looping and checking against 'ErrDeviceAuthorizationPending'. -func WaitForUserCompletion(client *autorest.Client, code *DeviceCode) (*Token, error) { - intervalDuration := time.Duration(*code.Interval) * time.Second - waitDuration := intervalDuration - - for { - token, err := CheckForUserCompletion(client, code) - - if err == nil { - return token, nil - } - - switch err { - case ErrDeviceSlowDown: - waitDuration += waitDuration - case ErrDeviceAuthorizationPending: - // noop - default: // everything else is "fatal" to us - return nil, err - } - - if waitDuration > (intervalDuration * 3) { - return nil, fmt.Errorf("%s Error waiting for user to complete device flow. Server told us to slow_down too much", logPrefix) - } - - time.Sleep(waitDuration) - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/azure/environments.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/azure/environments.go deleted file mode 100644 index 25e77a31..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/azure/environments.go +++ /dev/null @@ -1,111 +0,0 @@ -package azure - -import ( - "fmt" - "net/url" -) - -const ( - activeDirectoryAPIVersion = "1.0" -) - -// Environment represents a set of endpoints for each of Azure's Clouds. -type Environment struct { - Name string - ManagementPortalURL string - PublishSettingsURL string - ServiceManagementEndpoint string - ResourceManagerEndpoint string - ActiveDirectoryEndpoint string - GalleryEndpoint string - KeyVaultEndpoint string - GraphEndpoint string - StorageEndpointSuffix string - SQLDatabaseDNSSuffix string - TrafficManagerDNSSuffix string - KeyVaultDNSSuffix string - ServiceBusEndpointSuffix string -} - -var ( - // PublicCloud is the default public Azure cloud environment - PublicCloud = Environment{ - Name: "AzurePublicCloud", - ManagementPortalURL: "https://manage.windowsazure.com/", - PublishSettingsURL: "https://manage.windowsazure.com/publishsettings/index", - ServiceManagementEndpoint: "https://management.core.windows.net/", - ResourceManagerEndpoint: "https://management.azure.com/", - ActiveDirectoryEndpoint: "https://login.microsoftonline.com/", - GalleryEndpoint: "https://gallery.azure.com/", - KeyVaultEndpoint: "https://vault.azure.net/", - GraphEndpoint: "https://graph.windows.net/", - StorageEndpointSuffix: "core.windows.net", - SQLDatabaseDNSSuffix: "database.windows.net", - TrafficManagerDNSSuffix: "trafficmanager.net", - KeyVaultDNSSuffix: "vault.azure.net", - ServiceBusEndpointSuffix: "servicebus.azure.com", - } - - // USGovernmentCloud is the cloud environment for the US Government - USGovernmentCloud = Environment{ - Name: "AzureUSGovernmentCloud", - ManagementPortalURL: "https://manage.windowsazure.us/", - PublishSettingsURL: "https://manage.windowsazure.us/publishsettings/index", - ServiceManagementEndpoint: "https://management.core.usgovcloudapi.net/", - ResourceManagerEndpoint: "https://management.usgovcloudapi.net", - ActiveDirectoryEndpoint: "https://login.microsoftonline.com/", - GalleryEndpoint: "https://gallery.usgovcloudapi.net/", - KeyVaultEndpoint: "https://vault.azure.net/", - GraphEndpoint: "https://graph.usgovcloudapi.net/", - StorageEndpointSuffix: "core.usgovcloudapi.net", - SQLDatabaseDNSSuffix: "database.usgovcloudapi.net", - TrafficManagerDNSSuffix: "trafficmanager.net", - KeyVaultDNSSuffix: "vault.azure.net", - ServiceBusEndpointSuffix: "servicebus.usgovcloudapi.net", - } - - // ChinaCloud is the cloud environment operated in China - ChinaCloud = Environment{ - Name: "AzureChinaCloud", - ManagementPortalURL: "https://manage.chinacloudapi.com/", - PublishSettingsURL: "https://manage.chinacloudapi.com/publishsettings/index", - ServiceManagementEndpoint: "https://management.core.chinacloudapi.cn/", - ResourceManagerEndpoint: "https://management.chinacloudapi.cn/", - ActiveDirectoryEndpoint: "https://login.chinacloudapi.cn/?api-version=1.0", - GalleryEndpoint: "https://gallery.chinacloudapi.cn/", - KeyVaultEndpoint: "https://vault.azure.net/", - GraphEndpoint: "https://graph.chinacloudapi.cn/", - StorageEndpointSuffix: "core.chinacloudapi.cn", - SQLDatabaseDNSSuffix: "database.chinacloudapi.cn", - TrafficManagerDNSSuffix: "trafficmanager.cn", - KeyVaultDNSSuffix: "vault.azure.net", - ServiceBusEndpointSuffix: "servicebus.chinacloudapi.net", - } -) - -// OAuthConfigForTenant returns an OAuthConfig with tenant specific urls -func (env Environment) OAuthConfigForTenant(tenantID string) (*OAuthConfig, error) { - template := "%s/oauth2/%s?api-version=%s" - u, err := url.Parse(env.ActiveDirectoryEndpoint) - if err != nil { - return nil, err - } - authorizeURL, err := u.Parse(fmt.Sprintf(template, tenantID, "authorize", activeDirectoryAPIVersion)) - if err != nil { - return nil, err - } - tokenURL, err := u.Parse(fmt.Sprintf(template, tenantID, "token", activeDirectoryAPIVersion)) - if err != nil { - return nil, err - } - deviceCodeURL, err := u.Parse(fmt.Sprintf(template, tenantID, "devicecode", activeDirectoryAPIVersion)) - if err != nil { - return nil, err - } - - return &OAuthConfig{ - AuthorizeEndpoint: *authorizeURL, - TokenEndpoint: *tokenURL, - DeviceCodeEndpoint: *deviceCodeURL, - }, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/azure/persist.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/azure/persist.go deleted file mode 100644 index db8bdce4..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/azure/persist.go +++ /dev/null @@ -1,58 +0,0 @@ -package azure - -import ( - "encoding/json" - "fmt" - "io/ioutil" - "os" - "path/filepath" -) - -// LoadToken restores a Token object from a file located at 'path'. -func LoadToken(path string) (*Token, error) { - file, err := os.Open(path) - if err != nil { - return nil, fmt.Errorf("failed to open file (%s) while loading token: %v", path, err) - } - - var token Token - - dec := json.NewDecoder(file) - if err = dec.Decode(&token); err != nil { - return nil, fmt.Errorf("failed to decode contents of file (%s) into Token representation: %v", path, err) - } - return &token, nil -} - -// SaveToken persists an oauth token at the given location on disk. -// It moves the new file into place so it can safely be used to replace an existing file -// that maybe accessed by multiple processes. -func SaveToken(path string, mode os.FileMode, token Token) error { - dir := filepath.Dir(path) - err := os.MkdirAll(dir, os.ModePerm) - if err != nil { - return fmt.Errorf("failed to create directory (%s) to store token in: %v", dir, err) - } - - newFile, err := ioutil.TempFile(dir, "token") - if err != nil { - return fmt.Errorf("failed to create the temp file to write the token: %v", err) - } - tempPath := newFile.Name() - - if err := json.NewEncoder(newFile).Encode(token); err != nil { - return fmt.Errorf("failed to encode token to file (%s) while saving token: %v", tempPath, err) - } - if err := newFile.Close(); err != nil { - return fmt.Errorf("failed to close temp file %s: %v", tempPath, err) - } - - // Atomic replace to avoid multi-writer file corruptions - if err := os.Rename(tempPath, path); err != nil { - return fmt.Errorf("failed to move temporary token to desired output location. src=%s dst=%s: %v", tempPath, path, err) - } - if err := os.Chmod(path, mode); err != nil { - return fmt.Errorf("failed to chmod the token file %s: %v", path, err) - } - return nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/azure/token.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/azure/token.go deleted file mode 100644 index 239fb36a..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/azure/token.go +++ /dev/null @@ -1,363 +0,0 @@ -package azure - -import ( - "crypto/rand" - "crypto/rsa" - "crypto/sha1" - "crypto/x509" - "encoding/base64" - "fmt" - "net/http" - "net/url" - "strconv" - "time" - - "github.com/Azure/go-autorest/autorest" - "github.com/dgrijalva/jwt-go" -) - -const ( - defaultRefresh = 5 * time.Minute - tokenBaseDate = "1970-01-01T00:00:00Z" - - // OAuthGrantTypeDeviceCode is the "grant_type" identifier used in device flow - OAuthGrantTypeDeviceCode = "device_code" - - // OAuthGrantTypeClientCredentials is the "grant_type" identifier used in credential flows - OAuthGrantTypeClientCredentials = "client_credentials" - - // OAuthGrantTypeRefreshToken is the "grant_type" identifier used in refresh token flows - OAuthGrantTypeRefreshToken = "refresh_token" -) - -var expirationBase time.Time - -func init() { - expirationBase, _ = time.Parse(time.RFC3339, tokenBaseDate) -} - -// TokenRefreshCallback is the type representing callbacks that will be called after -// a successful token refresh -type TokenRefreshCallback func(Token) error - -// Token encapsulates the access token used to authorize Azure requests. -type Token struct { - AccessToken string `json:"access_token"` - RefreshToken string `json:"refresh_token"` - - ExpiresIn string `json:"expires_in"` - ExpiresOn string `json:"expires_on"` - NotBefore string `json:"not_before"` - - Resource string `json:"resource"` - Type string `json:"token_type"` -} - -// Expires returns the time.Time when the Token expires. -func (t Token) Expires() time.Time { - s, err := strconv.Atoi(t.ExpiresOn) - if err != nil { - s = -3600 - } - return expirationBase.Add(time.Duration(s) * time.Second).UTC() -} - -// IsExpired returns true if the Token is expired, false otherwise. -func (t Token) IsExpired() bool { - return t.WillExpireIn(0) -} - -// WillExpireIn returns true if the Token will expire after the passed time.Duration interval -// from now, false otherwise. -func (t Token) WillExpireIn(d time.Duration) bool { - return !t.Expires().After(time.Now().Add(d)) -} - -// WithAuthorization returns a PrepareDecorator that adds an HTTP Authorization header whose -// value is "Bearer " followed by the AccessToken of the Token. -func (t *Token) WithAuthorization() autorest.PrepareDecorator { - return func(p autorest.Preparer) autorest.Preparer { - return autorest.PreparerFunc(func(r *http.Request) (*http.Request, error) { - return (autorest.WithBearerAuthorization(t.AccessToken)(p)).Prepare(r) - }) - } -} - -// ServicePrincipalNoSecret represents a secret type that contains no secret -// meaning it is not valid for fetching a fresh token. This is used by Manual -type ServicePrincipalNoSecret struct { -} - -// SetAuthenticationValues is a method of the interface ServicePrincipalSecret -// It only returns an error for the ServicePrincipalNoSecret type -func (noSecret *ServicePrincipalNoSecret) SetAuthenticationValues(spt *ServicePrincipalToken, v *url.Values) error { - return fmt.Errorf("Manually created ServicePrincipalToken does not contain secret material to retrieve a new access token.") -} - -// ServicePrincipalSecret is an interface that allows various secret mechanism to fill the form -// that is submitted when acquiring an oAuth token. -type ServicePrincipalSecret interface { - SetAuthenticationValues(spt *ServicePrincipalToken, values *url.Values) error -} - -// ServicePrincipalTokenSecret implements ServicePrincipalSecret for client_secret type authorization. -type ServicePrincipalTokenSecret struct { - ClientSecret string -} - -// SetAuthenticationValues is a method of the interface ServicePrincipalSecret. -// It will populate the form submitted during oAuth Token Acquisition using the client_secret. -func (tokenSecret *ServicePrincipalTokenSecret) SetAuthenticationValues(spt *ServicePrincipalToken, v *url.Values) error { - v.Set("client_secret", tokenSecret.ClientSecret) - return nil -} - -// ServicePrincipalCertificateSecret implements ServicePrincipalSecret for generic RSA cert auth with signed JWTs. -type ServicePrincipalCertificateSecret struct { - Certificate *x509.Certificate - PrivateKey *rsa.PrivateKey -} - -// SignJwt returns the JWT signed with the certificate's private key. -func (secret *ServicePrincipalCertificateSecret) SignJwt(spt *ServicePrincipalToken) (string, error) { - hasher := sha1.New() - _, err := hasher.Write(secret.Certificate.Raw) - if err != nil { - return "", err - } - - thumbprint := base64.URLEncoding.EncodeToString(hasher.Sum(nil)) - - // The jti (JWT ID) claim provides a unique identifier for the JWT. - jti := make([]byte, 20) - _, err = rand.Read(jti) - if err != nil { - return "", err - } - - token := jwt.New(jwt.SigningMethodRS256) - token.Header["x5t"] = thumbprint - token.Claims = map[string]interface{}{ - "aud": spt.oauthConfig.TokenEndpoint, - "iss": spt.clientID, - "sub": spt.clientID, - "jti": base64.URLEncoding.EncodeToString(jti), - "nbf": time.Now().Unix(), - "exp": time.Now().Add(time.Hour * 24).Unix(), - } - - signedString, err := token.SignedString(secret.PrivateKey) - return signedString, nil -} - -// SetAuthenticationValues is a method of the interface ServicePrincipalSecret. -// It will populate the form submitted during oAuth Token Acquisition using a JWT signed with a certificate. -func (secret *ServicePrincipalCertificateSecret) SetAuthenticationValues(spt *ServicePrincipalToken, v *url.Values) error { - jwt, err := secret.SignJwt(spt) - if err != nil { - return err - } - - v.Set("client_assertion", jwt) - v.Set("client_assertion_type", "urn:ietf:params:oauth:client-assertion-type:jwt-bearer") - return nil -} - -// ServicePrincipalToken encapsulates a Token created for a Service Principal. -type ServicePrincipalToken struct { - Token - - secret ServicePrincipalSecret - oauthConfig OAuthConfig - clientID string - resource string - autoRefresh bool - refreshWithin time.Duration - sender autorest.Sender - - refreshCallbacks []TokenRefreshCallback -} - -// NewServicePrincipalTokenWithSecret create a ServicePrincipalToken using the supplied ServicePrincipalSecret implementation. -func NewServicePrincipalTokenWithSecret(oauthConfig OAuthConfig, id string, resource string, secret ServicePrincipalSecret, callbacks ...TokenRefreshCallback) (*ServicePrincipalToken, error) { - spt := &ServicePrincipalToken{ - oauthConfig: oauthConfig, - secret: secret, - clientID: id, - resource: resource, - autoRefresh: true, - refreshWithin: defaultRefresh, - sender: &http.Client{}, - refreshCallbacks: callbacks, - } - return spt, nil -} - -// NewServicePrincipalTokenFromManualToken creates a ServicePrincipalToken using the supplied token -func NewServicePrincipalTokenFromManualToken(oauthConfig OAuthConfig, clientID string, resource string, token Token, callbacks ...TokenRefreshCallback) (*ServicePrincipalToken, error) { - spt, err := NewServicePrincipalTokenWithSecret( - oauthConfig, - clientID, - resource, - &ServicePrincipalNoSecret{}, - callbacks...) - if err != nil { - return nil, err - } - - spt.Token = token - - return spt, nil -} - -// NewServicePrincipalToken creates a ServicePrincipalToken from the supplied Service Principal -// credentials scoped to the named resource. -func NewServicePrincipalToken(oauthConfig OAuthConfig, clientID string, secret string, resource string, callbacks ...TokenRefreshCallback) (*ServicePrincipalToken, error) { - return NewServicePrincipalTokenWithSecret( - oauthConfig, - clientID, - resource, - &ServicePrincipalTokenSecret{ - ClientSecret: secret, - }, - callbacks..., - ) -} - -// NewServicePrincipalTokenFromCertificate create a ServicePrincipalToken from the supplied pkcs12 bytes. -func NewServicePrincipalTokenFromCertificate(oauthConfig OAuthConfig, clientID string, certificate *x509.Certificate, privateKey *rsa.PrivateKey, resource string, callbacks ...TokenRefreshCallback) (*ServicePrincipalToken, error) { - return NewServicePrincipalTokenWithSecret( - oauthConfig, - clientID, - resource, - &ServicePrincipalCertificateSecret{ - PrivateKey: privateKey, - Certificate: certificate, - }, - callbacks..., - ) -} - -// EnsureFresh will refresh the token if it will expire within the refresh window (as set by -// RefreshWithin). -func (spt *ServicePrincipalToken) EnsureFresh() error { - if spt.WillExpireIn(spt.refreshWithin) { - return spt.Refresh() - } - return nil -} - -// InvokeRefreshCallbacks calls any TokenRefreshCallbacks that were added to the SPT during initialization -func (spt *ServicePrincipalToken) InvokeRefreshCallbacks(token Token) error { - if spt.refreshCallbacks != nil { - for _, callback := range spt.refreshCallbacks { - err := callback(spt.Token) - if err != nil { - return autorest.NewErrorWithError(err, - "azure.ServicePrincipalToken", "InvokeRefreshCallbacks", nil, "A TokenRefreshCallback handler returned an error") - } - } - } - return nil -} - -// Refresh obtains a fresh token for the Service Principal. -func (spt *ServicePrincipalToken) Refresh() error { - return spt.refreshInternal(spt.resource) -} - -// RefreshExchange refreshes the token, but for a different resource. -func (spt *ServicePrincipalToken) RefreshExchange(resource string) error { - return spt.refreshInternal(resource) -} - -func (spt *ServicePrincipalToken) refreshInternal(resource string) error { - v := url.Values{} - v.Set("client_id", spt.clientID) - v.Set("resource", resource) - - if spt.RefreshToken != "" { - v.Set("grant_type", OAuthGrantTypeRefreshToken) - v.Set("refresh_token", spt.RefreshToken) - } else { - v.Set("grant_type", OAuthGrantTypeClientCredentials) - err := spt.secret.SetAuthenticationValues(spt, &v) - if err != nil { - return err - } - } - - req, _ := autorest.Prepare(&http.Request{}, - autorest.AsPost(), - autorest.AsFormURLEncoded(), - autorest.WithBaseURL(spt.oauthConfig.TokenEndpoint.String()), - autorest.WithFormData(v)) - - resp, err := autorest.SendWithSender(spt.sender, req) - if err != nil { - return autorest.NewErrorWithError(err, - "azure.ServicePrincipalToken", "Refresh", resp, "Failure sending request for Service Principal %s", - spt.clientID) - } - - var newToken Token - err = autorest.Respond(resp, - autorest.WithErrorUnlessOK(), - autorest.ByUnmarshallingJSON(&newToken), - autorest.ByClosing()) - if err != nil { - return autorest.NewErrorWithError(err, - "azure.ServicePrincipalToken", "Refresh", resp, "Failure handling response to Service Principal %s request", - spt.clientID) - } - - spt.Token = newToken - - err = spt.InvokeRefreshCallbacks(newToken) - if err != nil { - // its already wrapped inside InvokeRefreshCallbacks - return err - } - - return nil -} - -// SetAutoRefresh enables or disables automatic refreshing of stale tokens. -func (spt *ServicePrincipalToken) SetAutoRefresh(autoRefresh bool) { - spt.autoRefresh = autoRefresh -} - -// SetRefreshWithin sets the interval within which if the token will expire, EnsureFresh will -// refresh the token. -func (spt *ServicePrincipalToken) SetRefreshWithin(d time.Duration) { - spt.refreshWithin = d - return -} - -// SetSender sets the autorest.Sender used when obtaining the Service Principal token. An -// undecorated http.Client is used by default. -func (spt *ServicePrincipalToken) SetSender(s autorest.Sender) { - spt.sender = s -} - -// WithAuthorization returns a PrepareDecorator that adds an HTTP Authorization header whose -// value is "Bearer " followed by the AccessToken of the ServicePrincipalToken. -// -// By default, the token will automatically refresh if nearly expired (as determined by the -// RefreshWithin interval). Use the AutoRefresh method to enable or disable automatically refreshing -// tokens. -func (spt *ServicePrincipalToken) WithAuthorization() autorest.PrepareDecorator { - return func(p autorest.Preparer) autorest.Preparer { - return autorest.PreparerFunc(func(r *http.Request) (*http.Request, error) { - if spt.autoRefresh { - err := spt.EnsureFresh() - if err != nil { - return r, autorest.NewErrorWithError(err, - "azure.ServicePrincipalToken", "WithAuthorization", nil, "Failed to refresh Service Principal Token for request to %s", - r.URL) - } - } - return (autorest.WithBearerAuthorization(spt.AccessToken)(p)).Prepare(r) - }) - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/client.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/client.go deleted file mode 100644 index ce156f74..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/client.go +++ /dev/null @@ -1,190 +0,0 @@ -package autorest - -import ( - "bytes" - "fmt" - "io" - "io/ioutil" - "log" - "net/http" - "time" -) - -const ( - // DefaultPollingDelay is a reasonable delay between polling requests. - DefaultPollingDelay = 60 * time.Second - - // DefaultPollingDuration is a reasonable total polling duration. - DefaultPollingDuration = 15 * time.Minute -) - -const ( - requestFormat = `HTTP Request Begin =================================================== -%s -===================================================== HTTP Request End -` - responseFormat = `HTTP Response Begin =================================================== -%s -===================================================== HTTP Response End -` -) - -// Response serves as the base for all responses from generated clients. It provides access to the -// last http.Response. -type Response struct { - *http.Response `json:"-"` -} - -// LoggingInspector implements request and response inspectors that log the full request and -// response to a supplied log. -type LoggingInspector struct { - Logger *log.Logger -} - -// WithInspection returns a PrepareDecorator that emits the http.Request to the supplied logger. The -// body is restored after being emitted. -// -// Note: Since it reads the entire Body, this decorator should not be used where body streaming is -// important. It is best used to trace JSON or similar body values. -func (li LoggingInspector) WithInspection() PrepareDecorator { - return func(p Preparer) Preparer { - return PreparerFunc(func(r *http.Request) (*http.Request, error) { - var body, b bytes.Buffer - - defer r.Body.Close() - - r.Body = ioutil.NopCloser(io.TeeReader(r.Body, &body)) - if err := r.Write(&b); err != nil { - return nil, fmt.Errorf("Failed to write response: %v", err) - } - - li.Logger.Printf(requestFormat, b.String()) - - r.Body = ioutil.NopCloser(&body) - return p.Prepare(r) - }) - } -} - -// ByInspecting returns a RespondDecorator that emits the http.Response to the supplied logger. The -// body is restored after being emitted. -// -// Note: Since it reads the entire Body, this decorator should not be used where body streaming is -// important. It is best used to trace JSON or similar body values. -func (li LoggingInspector) ByInspecting() RespondDecorator { - return func(r Responder) Responder { - return ResponderFunc(func(resp *http.Response) error { - var body, b bytes.Buffer - - defer resp.Body.Close() - - resp.Body = ioutil.NopCloser(io.TeeReader(resp.Body, &body)) - if err := resp.Write(&b); err != nil { - return fmt.Errorf("Failed to write response: %v", err) - } - - li.Logger.Printf(responseFormat, b.String()) - - resp.Body = ioutil.NopCloser(&body) - return r.Respond(resp) - }) - } -} - -// Client is the base for autorest generated clients. It provides default, "do nothing" -// implementations of an Authorizer, RequestInspector, and ResponseInspector. It also returns the -// standard, undecorated http.Client as a default Sender. -// -// Generated clients should also use Error (see NewError and NewErrorWithError) for errors and -// return responses that compose with Response. -// -// Most customization of generated clients is best achieved by supplying a custom Authorizer, custom -// RequestInspector, and / or custom ResponseInspector. Users may log requests, implement circuit -// breakers (see https://msdn.microsoft.com/en-us/library/dn589784.aspx) or otherwise influence -// sending the request by providing a decorated Sender. -type Client struct { - Authorizer Authorizer - Sender Sender - RequestInspector PrepareDecorator - ResponseInspector RespondDecorator - - // PollingDelay sets the polling frequency used in absence of a Retry-After HTTP header - PollingDelay time.Duration - - // PollingDuration sets the maximum polling time after which an error is returned. - PollingDuration time.Duration - - // UserAgent, if not empty, will be set as the HTTP User-Agent header on all requests sent - // through the Do method. - UserAgent string -} - -// NewClientWithUserAgent returns an instance of a Client with the UserAgent set to the passed -// string. -func NewClientWithUserAgent(ua string) Client { - c := Client{PollingDelay: DefaultPollingDelay, PollingDuration: DefaultPollingDuration} - c.UserAgent = ua - return c -} - -// Do implements the Sender interface by invoking the active Sender after applying authorization. -// If Sender is not set, it uses a new instance of http.Client. In both cases it will, if UserAgent -// is set, apply set the User-Agent header. -func (c Client) Do(r *http.Request) (*http.Response, error) { - if r.UserAgent() == "" { - r, _ = Prepare(r, - WithUserAgent(c.UserAgent)) - } - r, err := Prepare(r, - c.WithInspection(), - c.WithAuthorization()) - if err != nil { - return nil, NewErrorWithError(err, "autorest/Client", "Do", nil, "Preparing request failed") - } - - resp, err := c.sender().Do(r) - Respond(resp, - c.ByInspecting()) - - return resp, err -} - -// sender returns the Sender to which to send requests. -func (c Client) sender() Sender { - if c.Sender == nil { - return http.DefaultClient - } - return c.Sender -} - -// WithAuthorization is a convenience method that returns the WithAuthorization PrepareDecorator -// from the current Authorizer. If not Authorizer is set, it uses the NullAuthorizer. -func (c Client) WithAuthorization() PrepareDecorator { - return c.authorizer().WithAuthorization() -} - -// authorizer returns the Authorizer to use. -func (c Client) authorizer() Authorizer { - if c.Authorizer == nil { - return NullAuthorizer{} - } - return c.Authorizer -} - -// WithInspection is a convenience method that passes the request to the supplied RequestInspector, -// if present, or returns the WithNothing PrepareDecorator otherwise. -func (c Client) WithInspection() PrepareDecorator { - if c.RequestInspector == nil { - return WithNothing() - } - return c.RequestInspector -} - -// ByInspecting is a convenience method that passes the response to the supplied ResponseInspector, -// if present, or returns the ByIgnoring RespondDecorator otherwise. -func (c Client) ByInspecting() RespondDecorator { - if c.ResponseInspector == nil { - return ByIgnoring() - } - return c.ResponseInspector -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/date/date.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/date/date.go deleted file mode 100644 index 80ca60e9..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/date/date.go +++ /dev/null @@ -1,82 +0,0 @@ -/* -Package date provides time.Time derivatives that conform to the Swagger.io (https://swagger.io/) -defined date formats: Date and DateTime. Both types may, in most cases, be used in lieu of -time.Time types. And both convert to time.Time through a ToTime method. -*/ -package date - -import ( - "fmt" - "time" -) - -const ( - fullDate = "2006-01-02" - fullDateJSON = `"2006-01-02"` - dateFormat = "%04d-%02d-%02d" - jsonFormat = `"%04d-%02d-%02d"` -) - -// Date defines a type similar to time.Time but assumes a layout of RFC3339 full-date (i.e., -// 2006-01-02). -type Date struct { - time.Time -} - -// ParseDate create a new Date from the passed string. -func ParseDate(date string) (d Date, err error) { - return parseDate(date, fullDate) -} - -func parseDate(date string, format string) (Date, error) { - d, err := time.Parse(format, date) - return Date{Time: d}, err -} - -// MarshalBinary preserves the Date as a byte array conforming to RFC3339 full-date (i.e., -// 2006-01-02). -func (d Date) MarshalBinary() ([]byte, error) { - return d.MarshalText() -} - -// UnmarshalBinary reconstitutes a Date saved as a byte array conforming to RFC3339 full-date (i.e., -// 2006-01-02). -func (d *Date) UnmarshalBinary(data []byte) error { - return d.UnmarshalText(data) -} - -// MarshalJSON preserves the Date as a JSON string conforming to RFC3339 full-date (i.e., -// 2006-01-02). -func (d Date) MarshalJSON() (json []byte, err error) { - return []byte(fmt.Sprintf(jsonFormat, d.Year(), d.Month(), d.Day())), nil -} - -// UnmarshalJSON reconstitutes the Date from a JSON string conforming to RFC3339 full-date (i.e., -// 2006-01-02). -func (d *Date) UnmarshalJSON(data []byte) (err error) { - d.Time, err = time.Parse(fullDateJSON, string(data)) - return err -} - -// MarshalText preserves the Date as a byte array conforming to RFC3339 full-date (i.e., -// 2006-01-02). -func (d Date) MarshalText() (text []byte, err error) { - return []byte(fmt.Sprintf(dateFormat, d.Year(), d.Month(), d.Day())), nil -} - -// UnmarshalText reconstitutes a Date saved as a byte array conforming to RFC3339 full-date (i.e., -// 2006-01-02). -func (d *Date) UnmarshalText(data []byte) (err error) { - d.Time, err = time.Parse(fullDate, string(data)) - return err -} - -// String returns the Date formatted as an RFC3339 full-date string (i.e., 2006-01-02). -func (d Date) String() string { - return fmt.Sprintf(dateFormat, d.Year(), d.Month(), d.Day()) -} - -// ToTime returns a Date as a time.Time -func (d Date) ToTime() time.Time { - return d.Time -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/date/time.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/date/time.go deleted file mode 100644 index fd3c5854..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/date/time.go +++ /dev/null @@ -1,70 +0,0 @@ -package date - -import ( - "time" -) - -const ( - rfc3339JSON = `"` + time.RFC3339Nano + `"` - rfc3339 = time.RFC3339Nano -) - -// Time defines a type similar to time.Time but assumes a layout of RFC3339 date-time (i.e., -// 2006-01-02T15:04:05Z). -type Time struct { - time.Time -} - -// MarshalBinary preserves the Time as a byte array conforming to RFC3339 date-time (i.e., -// 2006-01-02T15:04:05Z). -func (t Time) MarshalBinary() ([]byte, error) { - return t.Time.MarshalText() -} - -// UnmarshalBinary reconstitutes a Time saved as a byte array conforming to RFC3339 date-time -// (i.e., 2006-01-02T15:04:05Z). -func (t *Time) UnmarshalBinary(data []byte) error { - return t.UnmarshalText(data) -} - -// MarshalJSON preserves the Time as a JSON string conforming to RFC3339 date-time (i.e., -// 2006-01-02T15:04:05Z). -func (t Time) MarshalJSON() (json []byte, err error) { - return t.Time.MarshalJSON() -} - -// UnmarshalJSON reconstitutes the Time from a JSON string conforming to RFC3339 date-time -// (i.e., 2006-01-02T15:04:05Z). -func (t *Time) UnmarshalJSON(data []byte) (err error) { - t.Time, err = ParseTime(rfc3339JSON, string(data)) - return err -} - -// MarshalText preserves the Time as a byte array conforming to RFC3339 date-time (i.e., -// 2006-01-02T15:04:05Z). -func (t Time) MarshalText() (text []byte, err error) { - return t.Time.MarshalText() -} - -// UnmarshalText reconstitutes a Time saved as a byte array conforming to RFC3339 date-time -// (i.e., 2006-01-02T15:04:05Z). -func (t *Time) UnmarshalText(data []byte) (err error) { - t.Time, err = ParseTime(rfc3339, string(data)) - return err -} - -// String returns the Time formatted as an RFC3339 date-time string (i.e., -// 2006-01-02T15:04:05Z). -func (t Time) String() string { - // Note: time.Time.String does not return an RFC3339 compliant string, time.Time.MarshalText does. - b, err := t.MarshalText() - if err != nil { - return "" - } - return string(b) -} - -// ToTime returns a Time as a time.Time -func (t Time) ToTime() time.Time { - return t.Time -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/date/timerfc1123.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/date/timerfc1123.go deleted file mode 100644 index 11995fb9..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/date/timerfc1123.go +++ /dev/null @@ -1,86 +0,0 @@ -package date - -import ( - "errors" - "time" -) - -const ( - rfc1123JSON = `"` + time.RFC1123 + `"` - rfc1123 = time.RFC1123 -) - -// TimeRFC1123 defines a type similar to time.Time but assumes a layout of RFC1123 date-time (i.e., -// Mon, 02 Jan 2006 15:04:05 MST). -type TimeRFC1123 struct { - time.Time -} - -// UnmarshalJSON reconstitutes the Time from a JSON string conforming to RFC1123 date-time -// (i.e., Mon, 02 Jan 2006 15:04:05 MST). -func (t *TimeRFC1123) UnmarshalJSON(data []byte) (err error) { - t.Time, err = ParseTime(rfc1123JSON, string(data)) - if err != nil { - return err - } - return nil -} - -// MarshalJSON preserves the Time as a JSON string conforming to RFC1123 date-time (i.e., -// Mon, 02 Jan 2006 15:04:05 MST). -func (t TimeRFC1123) MarshalJSON() ([]byte, error) { - if y := t.Year(); y < 0 || y >= 10000 { - return nil, errors.New("Time.MarshalJSON: year outside of range [0,9999]") - } - b := []byte(t.Format(rfc1123JSON)) - return b, nil -} - -// MarshalText preserves the Time as a byte array conforming to RFC1123 date-time (i.e., -// Mon, 02 Jan 2006 15:04:05 MST). -func (t TimeRFC1123) MarshalText() ([]byte, error) { - if y := t.Year(); y < 0 || y >= 10000 { - return nil, errors.New("Time.MarshalText: year outside of range [0,9999]") - } - - b := []byte(t.Format(rfc1123)) - return b, nil -} - -// UnmarshalText reconstitutes a Time saved as a byte array conforming to RFC1123 date-time -// (i.e., Mon, 02 Jan 2006 15:04:05 MST). -func (t *TimeRFC1123) UnmarshalText(data []byte) (err error) { - t.Time, err = ParseTime(rfc1123, string(data)) - if err != nil { - return err - } - return nil -} - -// MarshalBinary preserves the Time as a byte array conforming to RFC1123 date-time (i.e., -// Mon, 02 Jan 2006 15:04:05 MST). -func (t TimeRFC1123) MarshalBinary() ([]byte, error) { - return t.MarshalText() -} - -// UnmarshalBinary reconstitutes a Time saved as a byte array conforming to RFC1123 date-time -// (i.e., Mon, 02 Jan 2006 15:04:05 MST). -func (t *TimeRFC1123) UnmarshalBinary(data []byte) error { - return t.UnmarshalText(data) -} - -// ToTime returns a Time as a time.Time -func (t TimeRFC1123) ToTime() time.Time { - return t.Time -} - -// String returns the Time formatted as an RFC1123 date-time string (i.e., -// Mon, 02 Jan 2006 15:04:05 MST). -func (t TimeRFC1123) String() string { - // Note: time.Time.String does not return an RFC1123 compliant string, time.Time.MarshalText does. - b, err := t.MarshalText() - if err != nil { - return "" - } - return string(b) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/date/utility.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/date/utility.go deleted file mode 100644 index 207b1a24..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/date/utility.go +++ /dev/null @@ -1,11 +0,0 @@ -package date - -import ( - "strings" - "time" -) - -// ParseTime to parse Time string to specified format. -func ParseTime(format string, t string) (d time.Time, err error) { - return time.Parse(format, strings.ToUpper(t)) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/error.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/error.go deleted file mode 100644 index da49b12c..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/error.go +++ /dev/null @@ -1,77 +0,0 @@ -package autorest - -import ( - "fmt" - "net/http" -) - -const ( - // UndefinedStatusCode is used when HTTP status code is not available for an error. - UndefinedStatusCode = 0 -) - -// DetailedError encloses a error with details of the package, method, and associated HTTP -// status code (if any). -type DetailedError struct { - Original error - - // PackageType is the package type of the object emitting the error. For types, the value - // matches that produced the the '%T' format specifier of the fmt package. For other elements, - // such as functions, it is just the package name (e.g., "autorest"). - PackageType string - - // Method is the name of the method raising the error. - Method string - - // StatusCode is the HTTP Response StatusCode (if non-zero) that led to the error. - StatusCode int - - // Message is the error message. - Message string -} - -// NewError creates a new Error conforming object from the passed packageType, method, and -// message. message is treated as a format string to which the optional args apply. -func NewError(packageType string, method string, message string, args ...interface{}) DetailedError { - return NewErrorWithError(nil, packageType, method, nil, message, args...) -} - -// NewErrorWithResponse creates a new Error conforming object from the passed -// packageType, method, statusCode of the given resp (UndefinedStatusCode if -// resp is nil), and message. message is treated as a format string to which the -// optional args apply. -func NewErrorWithResponse(packageType string, method string, resp *http.Response, message string, args ...interface{}) DetailedError { - return NewErrorWithError(nil, packageType, method, resp, message, args...) -} - -// NewErrorWithError creates a new Error conforming object from the -// passed packageType, method, statusCode of the given resp (UndefinedStatusCode -// if resp is nil), message, and original error. message is treated as a format -// string to which the optional args apply. -func NewErrorWithError(original error, packageType string, method string, resp *http.Response, message string, args ...interface{}) DetailedError { - if v, ok := original.(DetailedError); ok { - return v - } - - statusCode := UndefinedStatusCode - if resp != nil { - statusCode = resp.StatusCode - } - - return DetailedError{ - Original: original, - PackageType: packageType, - Method: method, - StatusCode: statusCode, - Message: fmt.Sprintf(message, args...), - } -} - -// Error returns a formatted containing all available details (i.e., PackageType, Method, -// StatusCode, Message, and original error (if any)). -func (e DetailedError) Error() string { - if e.Original == nil { - return fmt.Sprintf("%s#%s: %s: StatusCode=%d", e.PackageType, e.Method, e.Message, e.StatusCode) - } - return fmt.Sprintf("%s#%s: %s: StatusCode=%d -- Original Error: %v", e.PackageType, e.Method, e.Message, e.StatusCode, e.Original) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/preparer.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/preparer.go deleted file mode 100644 index c0735f07..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/preparer.go +++ /dev/null @@ -1,360 +0,0 @@ -package autorest - -import ( - "bytes" - "encoding/json" - "fmt" - "io/ioutil" - "net/http" - "net/url" - "strings" -) - -const ( - mimeTypeJSON = "application/json" - mimeTypeFormPost = "application/x-www-form-urlencoded" - - headerAuthorization = "Authorization" - headerContentType = "Content-Type" - headerUserAgent = "User-Agent" -) - -// Preparer is the interface that wraps the Prepare method. -// -// Prepare accepts and possibly modifies an http.Request (e.g., adding Headers). Implementations -// must ensure to not share or hold per-invocation state since Preparers may be shared and re-used. -type Preparer interface { - Prepare(*http.Request) (*http.Request, error) -} - -// PreparerFunc is a method that implements the Preparer interface. -type PreparerFunc func(*http.Request) (*http.Request, error) - -// Prepare implements the Preparer interface on PreparerFunc. -func (pf PreparerFunc) Prepare(r *http.Request) (*http.Request, error) { - return pf(r) -} - -// PrepareDecorator takes and possibly decorates, by wrapping, a Preparer. Decorators may affect the -// http.Request and pass it along or, first, pass the http.Request along then affect the result. -type PrepareDecorator func(Preparer) Preparer - -// CreatePreparer creates, decorates, and returns a Preparer. -// Without decorators, the returned Preparer returns the passed http.Request unmodified. -// Preparers are safe to share and re-use. -func CreatePreparer(decorators ...PrepareDecorator) Preparer { - return DecoratePreparer( - Preparer(PreparerFunc(func(r *http.Request) (*http.Request, error) { return r, nil })), - decorators...) -} - -// DecoratePreparer accepts a Preparer and a, possibly empty, set of PrepareDecorators, which it -// applies to the Preparer. Decorators are applied in the order received, but their affect upon the -// request depends on whether they are a pre-decorator (change the http.Request and then pass it -// along) or a post-decorator (pass the http.Request along and alter it on return). -func DecoratePreparer(p Preparer, decorators ...PrepareDecorator) Preparer { - for _, decorate := range decorators { - p = decorate(p) - } - return p -} - -// Prepare accepts an http.Request and a, possibly empty, set of PrepareDecorators. -// It creates a Preparer from the decorators which it then applies to the passed http.Request. -func Prepare(r *http.Request, decorators ...PrepareDecorator) (*http.Request, error) { - if r == nil { - return nil, NewError("autorest", "Prepare", "Invoked without an http.Request") - } - return CreatePreparer(decorators...).Prepare(r) -} - -// WithNothing returns a "do nothing" PrepareDecorator that makes no changes to the passed -// http.Request. -func WithNothing() PrepareDecorator { - return func(p Preparer) Preparer { - return PreparerFunc(func(r *http.Request) (*http.Request, error) { - return p.Prepare(r) - }) - } -} - -// WithHeader returns a PrepareDecorator that sets the specified HTTP header of the http.Request to -// the passed value. It canonicalizes the passed header name (via http.CanonicalHeaderKey) before -// adding the header. -func WithHeader(header string, value string) PrepareDecorator { - return func(p Preparer) Preparer { - return PreparerFunc(func(r *http.Request) (*http.Request, error) { - r, err := p.Prepare(r) - if err == nil { - if r.Header == nil { - r.Header = make(http.Header) - } - r.Header.Set(http.CanonicalHeaderKey(header), value) - } - return r, err - }) - } -} - -// WithBearerAuthorization returns a PrepareDecorator that adds an HTTP Authorization header whose -// value is "Bearer " followed by the supplied token. -func WithBearerAuthorization(token string) PrepareDecorator { - return WithHeader(headerAuthorization, fmt.Sprintf("Bearer %s", token)) -} - -// AsContentType returns a PrepareDecorator that adds an HTTP Content-Type header whose value -// is the passed contentType. -func AsContentType(contentType string) PrepareDecorator { - return WithHeader(headerContentType, contentType) -} - -// WithUserAgent returns a PrepareDecorator that adds an HTTP User-Agent header whose value is the -// passed string. -func WithUserAgent(ua string) PrepareDecorator { - return WithHeader(headerUserAgent, ua) -} - -// AsFormURLEncoded returns a PrepareDecorator that adds an HTTP Content-Type header whose value is -// "application/x-www-form-urlencoded". -func AsFormURLEncoded() PrepareDecorator { - return AsContentType(mimeTypeFormPost) -} - -// AsJSON returns a PrepareDecorator that adds an HTTP Content-Type header whose value is -// "application/json". -func AsJSON() PrepareDecorator { - return AsContentType(mimeTypeJSON) -} - -// WithMethod returns a PrepareDecorator that sets the HTTP method of the passed request. The -// decorator does not validate that the passed method string is a known HTTP method. -func WithMethod(method string) PrepareDecorator { - return func(p Preparer) Preparer { - return PreparerFunc(func(r *http.Request) (*http.Request, error) { - r.Method = method - return p.Prepare(r) - }) - } -} - -// AsDelete returns a PrepareDecorator that sets the HTTP method to DELETE. -func AsDelete() PrepareDecorator { return WithMethod("DELETE") } - -// AsGet returns a PrepareDecorator that sets the HTTP method to GET. -func AsGet() PrepareDecorator { return WithMethod("GET") } - -// AsHead returns a PrepareDecorator that sets the HTTP method to HEAD. -func AsHead() PrepareDecorator { return WithMethod("HEAD") } - -// AsOptions returns a PrepareDecorator that sets the HTTP method to OPTIONS. -func AsOptions() PrepareDecorator { return WithMethod("OPTIONS") } - -// AsPatch returns a PrepareDecorator that sets the HTTP method to PATCH. -func AsPatch() PrepareDecorator { return WithMethod("PATCH") } - -// AsPost returns a PrepareDecorator that sets the HTTP method to POST. -func AsPost() PrepareDecorator { return WithMethod("POST") } - -// AsPut returns a PrepareDecorator that sets the HTTP method to PUT. -func AsPut() PrepareDecorator { return WithMethod("PUT") } - -// WithBaseURL returns a PrepareDecorator that populates the http.Request with a url.URL constructed -// from the supplied baseUrl. -func WithBaseURL(baseURL string) PrepareDecorator { - return func(p Preparer) Preparer { - return PreparerFunc(func(r *http.Request) (*http.Request, error) { - r, err := p.Prepare(r) - if err == nil { - var u *url.URL - u, err = url.Parse(baseURL) - if u.Scheme == "" { - err = fmt.Errorf("autorest: No scheme detected in URL %s", baseURL) - } - if err == nil { - r.URL = u - } - } - return r, err - }) - } -} - -// WithFormData returns a PrepareDecoratore that "URL encodes" (e.g., bar=baz&foo=quux) into the -// http.Request body. -func WithFormData(v url.Values) PrepareDecorator { - return func(p Preparer) Preparer { - return PreparerFunc(func(r *http.Request) (*http.Request, error) { - r, err := p.Prepare(r) - if err == nil { - s := v.Encode() - r.ContentLength = int64(len(s)) - r.Body = ioutil.NopCloser(strings.NewReader(s)) - } - return r, err - }) - } -} - -// WithBool returns a PrepareDecorator that encodes the passed bool into the body of the request -// and sets the Content-Length header. -func WithBool(v bool) PrepareDecorator { - return WithString(fmt.Sprintf("%v", v)) -} - -// WithFloat32 returns a PrepareDecorator that encodes the passed float32 into the body of the -// request and sets the Content-Length header. -func WithFloat32(v float32) PrepareDecorator { - return WithString(fmt.Sprintf("%v", v)) -} - -// WithFloat64 returns a PrepareDecorator that encodes the passed float64 into the body of the -// request and sets the Content-Length header. -func WithFloat64(v float64) PrepareDecorator { - return WithString(fmt.Sprintf("%v", v)) -} - -// WithInt32 returns a PrepareDecorator that encodes the passed int32 into the body of the request -// and sets the Content-Length header. -func WithInt32(v int32) PrepareDecorator { - return WithString(fmt.Sprintf("%v", v)) -} - -// WithInt64 returns a PrepareDecorator that encodes the passed int64 into the body of the request -// and sets the Content-Length header. -func WithInt64(v int64) PrepareDecorator { - return WithString(fmt.Sprintf("%v", v)) -} - -// WithString returns a PrepareDecorator that encodes the passed string into the body of the request -// and sets the Content-Length header. -func WithString(v string) PrepareDecorator { - return func(p Preparer) Preparer { - return PreparerFunc(func(r *http.Request) (*http.Request, error) { - r, err := p.Prepare(r) - if err == nil { - r.ContentLength = int64(len(v)) - r.Body = ioutil.NopCloser(strings.NewReader(v)) - } - return r, err - }) - } -} - -// WithJSON returns a PrepareDecorator that encodes the data passed as JSON into the body of the -// request and sets the Content-Length header. -func WithJSON(v interface{}) PrepareDecorator { - return func(p Preparer) Preparer { - return PreparerFunc(func(r *http.Request) (*http.Request, error) { - r, err := p.Prepare(r) - if err == nil { - b, err := json.Marshal(v) - if err == nil { - r.ContentLength = int64(len(b)) - r.Body = ioutil.NopCloser(bytes.NewReader(b)) - } - } - return r, err - }) - } -} - -// WithPath returns a PrepareDecorator that adds the supplied path to the request URL. If the path -// is absolute (that is, it begins with a "/"), it replaces the existing path. -func WithPath(path string) PrepareDecorator { - return func(p Preparer) Preparer { - return PreparerFunc(func(r *http.Request) (*http.Request, error) { - r, err := p.Prepare(r) - if err == nil { - if r.URL == nil { - return r, NewError("autorest", "WithPath", "Invoked with a nil URL") - } - u := r.URL - u.Path = strings.TrimRight(u.Path, "/") - if strings.HasPrefix(path, "/") { - u.Path = path - } else { - u.Path += "/" + path - } - } - return r, err - }) - } -} - -// WithEscapedPathParameters returns a PrepareDecorator that replaces brace-enclosed keys within the -// request path (i.e., http.Request.URL.Path) with the corresponding values from the passed map. The -// values will be escaped (aka URL encoded) before insertion into the path. -func WithEscapedPathParameters(pathParameters map[string]interface{}) PrepareDecorator { - parameters := escapeValueStrings(ensureValueStrings(pathParameters)) - return func(p Preparer) Preparer { - return PreparerFunc(func(r *http.Request) (*http.Request, error) { - r, err := p.Prepare(r) - if err == nil { - if r.URL == nil { - return r, NewError("autorest", "WithEscapedPathParameters", "Invoked with a nil URL") - } - for key, value := range parameters { - r.URL.Path = strings.Replace(r.URL.Path, "{"+key+"}", value, -1) - } - } - return r, err - }) - } -} - -// WithPathParameters returns a PrepareDecorator that replaces brace-enclosed keys within the -// request path (i.e., http.Request.URL.Path) with the corresponding values from the passed map. -func WithPathParameters(pathParameters map[string]interface{}) PrepareDecorator { - parameters := ensureValueStrings(pathParameters) - return func(p Preparer) Preparer { - return PreparerFunc(func(r *http.Request) (*http.Request, error) { - r, err := p.Prepare(r) - if err == nil { - if r.URL == nil { - return r, NewError("autorest", "WithPathParameters", "Invoked with a nil URL") - } - for key, value := range parameters { - r.URL.Path = strings.Replace(r.URL.Path, "{"+key+"}", value, -1) - } - } - return r, err - }) - } -} - -// WithQueryParameters returns a PrepareDecorators that encodes and applies the query parameters -// given in the supplied map (i.e., key=value). -func WithQueryParameters(queryParameters map[string]interface{}) PrepareDecorator { - parameters := ensureValueStrings(queryParameters) - return func(p Preparer) Preparer { - return PreparerFunc(func(r *http.Request) (*http.Request, error) { - r, err := p.Prepare(r) - if err == nil { - if r.URL == nil { - return r, NewError("autorest", "WithQueryParameters", "Invoked with a nil URL") - } - v := r.URL.Query() - for key, value := range parameters { - v.Add(key, value) - } - r.URL.RawQuery = v.Encode() - } - return r, err - }) - } -} - -// Authorizer is the interface that provides a PrepareDecorator used to supply request -// authorization. Most often, the Authorizer decorator runs last so it has access to the full -// state of the formed HTTP request. -type Authorizer interface { - WithAuthorization() PrepareDecorator -} - -// NullAuthorizer implements a default, "do nothing" Authorizer. -type NullAuthorizer struct{} - -// WithAuthorization returns a PrepareDecorator that does nothing. -func (na NullAuthorizer) WithAuthorization() PrepareDecorator { - return WithNothing() -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/responder.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/responder.go deleted file mode 100644 index e377ad48..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/responder.go +++ /dev/null @@ -1,208 +0,0 @@ -package autorest - -import ( - "bytes" - "encoding/json" - "encoding/xml" - "fmt" - "io/ioutil" - "net/http" - "strings" -) - -// Responder is the interface that wraps the Respond method. -// -// Respond accepts and reacts to an http.Response. Implementations must ensure to not share or hold -// state since Responders may be shared and re-used. -type Responder interface { - Respond(*http.Response) error -} - -// ResponderFunc is a method that implements the Responder interface. -type ResponderFunc func(*http.Response) error - -// Respond implements the Responder interface on ResponderFunc. -func (rf ResponderFunc) Respond(r *http.Response) error { - return rf(r) -} - -// RespondDecorator takes and possibly decorates, by wrapping, a Responder. Decorators may react to -// the http.Response and pass it along or, first, pass the http.Response along then react. -type RespondDecorator func(Responder) Responder - -// CreateResponder creates, decorates, and returns a Responder. Without decorators, the returned -// Responder returns the passed http.Response unmodified. Responders may or may not be safe to share -// and re-used: It depends on the applied decorators. For example, a standard decorator that closes -// the response body is fine to share whereas a decorator that reads the body into a passed struct -// is not. -// -// To prevent memory leaks, ensure that at least one Responder closes the response body. -func CreateResponder(decorators ...RespondDecorator) Responder { - return DecorateResponder( - Responder(ResponderFunc(func(r *http.Response) error { return nil })), - decorators...) -} - -// DecorateResponder accepts a Responder and a, possibly empty, set of RespondDecorators, which it -// applies to the Responder. Decorators are applied in the order received, but their affect upon the -// request depends on whether they are a pre-decorator (react to the http.Response and then pass it -// along) or a post-decorator (pass the http.Response along and then react). -func DecorateResponder(r Responder, decorators ...RespondDecorator) Responder { - for _, decorate := range decorators { - r = decorate(r) - } - return r -} - -// Respond accepts an http.Response and a, possibly empty, set of RespondDecorators. -// It creates a Responder from the decorators it then applies to the passed http.Response. -func Respond(r *http.Response, decorators ...RespondDecorator) error { - if r == nil { - return nil - } - return CreateResponder(decorators...).Respond(r) -} - -// ByIgnoring returns a RespondDecorator that ignores the passed http.Response passing it unexamined -// to the next RespondDecorator. -func ByIgnoring() RespondDecorator { - return func(r Responder) Responder { - return ResponderFunc(func(resp *http.Response) error { - return r.Respond(resp) - }) - } -} - -// ByCopying copies the contents of the http.Response Body into the passed bytes.Buffer as -// the Body is read. -func ByCopying(b *bytes.Buffer) RespondDecorator { - return func(r Responder) Responder { - return ResponderFunc(func(resp *http.Response) error { - err := r.Respond(resp) - if err == nil && resp != nil && resp.Body != nil { - resp.Body = TeeReadCloser(resp.Body, b) - } - return err - }) - } -} - -// ByClosing returns a RespondDecorator that first invokes the passed Responder after which it -// closes the response body. Since the passed Responder is invoked prior to closing the response -// body, the decorator may occur anywhere within the set. -func ByClosing() RespondDecorator { - return func(r Responder) Responder { - return ResponderFunc(func(resp *http.Response) error { - err := r.Respond(resp) - if resp != nil && resp.Body != nil { - if err := resp.Body.Close(); err != nil { - return fmt.Errorf("Error closing the response body: %v", err) - } - } - return err - }) - } -} - -// ByClosingIfError returns a RespondDecorator that first invokes the passed Responder after which -// it closes the response if the passed Responder returns an error and the response body exists. -func ByClosingIfError() RespondDecorator { - return func(r Responder) Responder { - return ResponderFunc(func(resp *http.Response) error { - err := r.Respond(resp) - if err != nil && resp != nil && resp.Body != nil { - if err := resp.Body.Close(); err != nil { - return fmt.Errorf("Error closing the response body: %v", err) - } - } - return err - }) - } -} - -// ByUnmarshallingJSON returns a RespondDecorator that decodes a JSON document returned in the -// response Body into the value pointed to by v. -func ByUnmarshallingJSON(v interface{}) RespondDecorator { - return func(r Responder) Responder { - return ResponderFunc(func(resp *http.Response) error { - err := r.Respond(resp) - if err == nil { - b, errInner := ioutil.ReadAll(resp.Body) - if errInner != nil { - err = fmt.Errorf("Error occurred reading http.Response#Body - Error = '%v'", errInner) - } else if len(strings.Trim(string(b), " ")) > 0 { - errInner = json.Unmarshal(b, v) - if errInner != nil { - err = fmt.Errorf("Error occurred unmarshalling JSON - Error = '%v' JSON = '%s'", errInner, string(b)) - } - } - } - return err - }) - } -} - -// ByUnmarshallingXML returns a RespondDecorator that decodes a XML document returned in the -// response Body into the value pointed to by v. -func ByUnmarshallingXML(v interface{}) RespondDecorator { - return func(r Responder) Responder { - return ResponderFunc(func(resp *http.Response) error { - err := r.Respond(resp) - if err == nil { - b, errInner := ioutil.ReadAll(resp.Body) - if errInner != nil { - err = fmt.Errorf("Error occurred reading http.Response#Body - Error = '%v'", errInner) - } else { - errInner = xml.Unmarshal(b, v) - if errInner != nil { - err = fmt.Errorf("Error occurred unmarshalling Xml - Error = '%v' Xml = '%s'", errInner, string(b)) - } - } - } - return err - }) - } -} - -// WithErrorUnlessStatusCode returns a RespondDecorator that emits an error unless the response -// StatusCode is among the set passed. Since these are artificial errors, the response body -// may still require closing. -func WithErrorUnlessStatusCode(codes ...int) RespondDecorator { - return func(r Responder) Responder { - return ResponderFunc(func(resp *http.Response) error { - err := r.Respond(resp) - if err == nil && !ResponseHasStatusCode(resp, codes...) { - err = NewErrorWithResponse("autorest", "WithErrorUnlessStatusCode", resp, "%v %v failed with %s", - resp.Request.Method, - resp.Request.URL, - resp.Status) - } - return err - }) - } -} - -// WithErrorUnlessOK returns a RespondDecorator that emits an error if the response StatusCode is -// anything other than HTTP 200. -func WithErrorUnlessOK() RespondDecorator { - return WithErrorUnlessStatusCode(http.StatusOK) -} - -// ExtractHeader extracts all values of the specified header from the http.Response. It returns an -// empty string slice if the passed http.Response is nil or the header does not exist. -func ExtractHeader(header string, resp *http.Response) []string { - if resp != nil && resp.Header != nil { - return resp.Header[http.CanonicalHeaderKey(header)] - } - return nil -} - -// ExtractHeaderValue extracts the first value of the specified header from the http.Response. It -// returns an empty string if the passed http.Response is nil or the header does not exist. -func ExtractHeaderValue(header string, resp *http.Response) string { - h := ExtractHeader(header, resp) - if len(h) > 0 { - return h[0] - } - return "" -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/sender.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/sender.go deleted file mode 100644 index b646a483..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/sender.go +++ /dev/null @@ -1,234 +0,0 @@ -package autorest - -import ( - "fmt" - "log" - "math" - "net/http" - "time" -) - -// Sender is the interface that wraps the Do method to send HTTP requests. -// -// The standard http.Client conforms to this interface. -type Sender interface { - Do(*http.Request) (*http.Response, error) -} - -// SenderFunc is a method that implements the Sender interface. -type SenderFunc func(*http.Request) (*http.Response, error) - -// Do implements the Sender interface on SenderFunc. -func (sf SenderFunc) Do(r *http.Request) (*http.Response, error) { - return sf(r) -} - -// SendDecorator takes and possibily decorates, by wrapping, a Sender. Decorators may affect the -// http.Request and pass it along or, first, pass the http.Request along then react to the -// http.Response result. -type SendDecorator func(Sender) Sender - -// CreateSender creates, decorates, and returns, as a Sender, the default http.Client. -func CreateSender(decorators ...SendDecorator) Sender { - return DecorateSender(&http.Client{}, decorators...) -} - -// DecorateSender accepts a Sender and a, possibly empty, set of SendDecorators, which is applies to -// the Sender. Decorators are applied in the order received, but their affect upon the request -// depends on whether they are a pre-decorator (change the http.Request and then pass it along) or a -// post-decorator (pass the http.Request along and react to the results in http.Response). -func DecorateSender(s Sender, decorators ...SendDecorator) Sender { - for _, decorate := range decorators { - s = decorate(s) - } - return s -} - -// Send sends, by means of the default http.Client, the passed http.Request, returning the -// http.Response and possible error. It also accepts a, possibly empty, set of SendDecorators which -// it will apply the http.Client before invoking the Do method. -// -// Send is a convenience method and not recommended for production. Advanced users should use -// SendWithSender, passing and sharing their own Sender (e.g., instance of http.Client). -// -// Send will not poll or retry requests. -func Send(r *http.Request, decorators ...SendDecorator) (*http.Response, error) { - return SendWithSender(&http.Client{}, r, decorators...) -} - -// SendWithSender sends the passed http.Request, through the provided Sender, returning the -// http.Response and possible error. It also accepts a, possibly empty, set of SendDecorators which -// it will apply the http.Client before invoking the Do method. -// -// SendWithSender will not poll or retry requests. -func SendWithSender(s Sender, r *http.Request, decorators ...SendDecorator) (*http.Response, error) { - return DecorateSender(s, decorators...).Do(r) -} - -// AfterDelay returns a SendDecorator that delays for the passed time.Duration before -// invoking the Sender. The delay may be terminated by closing the optional channel on the -// http.Request. If canceled, no further Senders are invoked. -func AfterDelay(d time.Duration) SendDecorator { - return func(s Sender) Sender { - return SenderFunc(func(r *http.Request) (*http.Response, error) { - if !DelayForBackoff(d, 1, r.Cancel) { - return nil, fmt.Errorf("autorest: AfterDelay canceled before full delay") - } - return s.Do(r) - }) - } -} - -// AsIs returns a SendDecorator that invokes the passed Sender without modifying the http.Request. -func AsIs() SendDecorator { - return func(s Sender) Sender { - return SenderFunc(func(r *http.Request) (*http.Response, error) { - return s.Do(r) - }) - } -} - -// DoCloseIfError returns a SendDecorator that first invokes the passed Sender after which -// it closes the response if the passed Sender returns an error and the response body exists. -func DoCloseIfError() SendDecorator { - return func(s Sender) Sender { - return SenderFunc(func(r *http.Request) (*http.Response, error) { - resp, err := s.Do(r) - if err != nil { - Respond(resp, ByClosing()) - } - return resp, err - }) - } -} - -// DoErrorIfStatusCode returns a SendDecorator that emits an error if the response StatusCode is -// among the set passed. Since these are artificial errors, the response body may still require -// closing. -func DoErrorIfStatusCode(codes ...int) SendDecorator { - return func(s Sender) Sender { - return SenderFunc(func(r *http.Request) (*http.Response, error) { - resp, err := s.Do(r) - if err == nil && ResponseHasStatusCode(resp, codes...) { - err = NewErrorWithResponse("autorest", "DoErrorIfStatusCode", resp, "%v %v failed with %s", - resp.Request.Method, - resp.Request.URL, - resp.Status) - } - return resp, err - }) - } -} - -// DoErrorUnlessStatusCode returns a SendDecorator that emits an error unless the response -// StatusCode is among the set passed. Since these are artificial errors, the response body -// may still require closing. -func DoErrorUnlessStatusCode(codes ...int) SendDecorator { - return func(s Sender) Sender { - return SenderFunc(func(r *http.Request) (*http.Response, error) { - resp, err := s.Do(r) - if err == nil && !ResponseHasStatusCode(resp, codes...) { - err = NewErrorWithResponse("autorest", "DoErrorUnlessStatusCode", resp, "%v %v failed with %s", - resp.Request.Method, - resp.Request.URL, - resp.Status) - } - return resp, err - }) - } -} - -// DoPollForStatusCodes returns a SendDecorator that polls if the http.Response contains one of the -// passed status codes. It expects the http.Response to contain a Location header providing the -// URL at which to poll (using GET) and will poll until the time passed is equal to or greater than -// the supplied duration. It will delay between requests for the duration specified in the -// RetryAfter header or, if the header is absent, the passed delay. Polling may be canceled by -// closing the optional channel on the http.Request. -func DoPollForStatusCodes(duration time.Duration, delay time.Duration, codes ...int) SendDecorator { - return func(s Sender) Sender { - return SenderFunc(func(r *http.Request) (resp *http.Response, err error) { - resp, err = s.Do(r) - - if err == nil && ResponseHasStatusCode(resp, codes...) { - r, err = NewPollingRequest(resp, r.Cancel) - - for err == nil && ResponseHasStatusCode(resp, codes...) { - Respond(resp, - ByClosing()) - resp, err = SendWithSender(s, r, - AfterDelay(GetRetryAfter(resp, delay))) - } - } - - return resp, err - }) - } -} - -// DoRetryForAttempts returns a SendDecorator that retries a failed request for up to the specified -// number of attempts, exponentially backing off between requests using the supplied backoff -// time.Duration (which may be zero). Retrying may be canceled by closing the optional channel on -// the http.Request. -func DoRetryForAttempts(attempts int, backoff time.Duration) SendDecorator { - return func(s Sender) Sender { - return SenderFunc(func(r *http.Request) (resp *http.Response, err error) { - for attempt := 0; attempt < attempts; attempt++ { - resp, err = s.Do(r) - if err == nil { - return resp, err - } - DelayForBackoff(backoff, attempt, r.Cancel) - } - return resp, err - }) - } -} - -// DoRetryForDuration returns a SendDecorator that retries the request until the total time is equal -// to or greater than the specified duration, exponentially backing off between requests using the -// supplied backoff time.Duration (which may be zero). Retrying may be canceled by closing the -// optional channel on the http.Request. -func DoRetryForDuration(d time.Duration, backoff time.Duration) SendDecorator { - return func(s Sender) Sender { - return SenderFunc(func(r *http.Request) (resp *http.Response, err error) { - end := time.Now().Add(d) - for attempt := 0; time.Now().Before(end); attempt++ { - resp, err = s.Do(r) - if err == nil { - return resp, err - } - DelayForBackoff(backoff, attempt, r.Cancel) - } - return resp, err - }) - } -} - -// WithLogging returns a SendDecorator that implements simple before and after logging of the -// request. -func WithLogging(logger *log.Logger) SendDecorator { - return func(s Sender) Sender { - return SenderFunc(func(r *http.Request) (*http.Response, error) { - logger.Printf("Sending %s %s", r.Method, r.URL) - resp, err := s.Do(r) - if err != nil { - logger.Printf("%s %s received error '%v'", r.Method, r.URL, err) - } else { - logger.Printf("%s %s received %s", r.Method, r.URL, resp.Status) - } - return resp, err - }) - } -} - -// DelayForBackoff invokes time.After for the supplied backoff duration raised to the power of -// passed attempt (i.e., an exponential backoff delay). Backoff may be zero. The delay may be -// canceled by closing the passed channel. If terminated early, returns false. -func DelayForBackoff(backoff time.Duration, attempt int, cancel <-chan struct{}) bool { - select { - case <-time.After(time.Duration(math.Pow(float64(backoff), float64(attempt)))): - return true - case <-cancel: - return false - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/to/convert.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/to/convert.go deleted file mode 100644 index 7b180b86..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/to/convert.go +++ /dev/null @@ -1,133 +0,0 @@ -/* -Package to provides helpers to ease working with pointer values of marshalled structures. -*/ -package to - -// String returns a string value for the passed string pointer. It returns the empty string if the -// pointer is nil. -func String(s *string) string { - if s != nil { - return *s - } - return "" -} - -// StringPtr returns a pointer to the passed string. -func StringPtr(s string) *string { - return &s -} - -// StringSlice returns a string slice value for the passed string slice pointer. It returns a nil -// slice if the pointer is nil. -func StringSlice(s *[]string) []string { - if s != nil { - return *s - } - return nil -} - -// StringSlicePtr returns a pointer to the passed string slice. -func StringSlicePtr(s []string) *[]string { - return &s -} - -// StringMap returns a map of strings built from the map of string pointers. The empty string is -// used for nil pointers. -func StringMap(msp map[string]*string) map[string]string { - ms := make(map[string]string, len(msp)) - for k, sp := range msp { - if sp != nil { - ms[k] = *sp - } else { - ms[k] = "" - } - } - return ms -} - -// StringMapPtr returns a pointer to a map of string pointers built from the passed map of strings. -func StringMapPtr(ms map[string]string) *map[string]*string { - msp := make(map[string]*string, len(ms)) - for k, s := range ms { - msp[k] = StringPtr(s) - } - return &msp -} - -// Bool returns a bool value for the passed bool pointer. It returns false if the pointer is nil. -func Bool(b *bool) bool { - if b != nil { - return *b - } - return false -} - -// BoolPtr returns a pointer to the passed bool. -func BoolPtr(b bool) *bool { - return &b -} - -// Int returns an int value for the passed int pointer. It returns 0 if the pointer is nil. -func Int(i *int) int { - if i != nil { - return *i - } - return 0 -} - -// IntPtr returns a pointer to the passed int. -func IntPtr(i int) *int { - return &i -} - -// Int32 returns an int value for the passed int pointer. It returns 0 if the pointer is nil. -func Int32(i *int32) int32 { - if i != nil { - return *i - } - return 0 -} - -// Int32Ptr returns a pointer to the passed int32. -func Int32Ptr(i int32) *int32 { - return &i -} - -// Int64 returns an int value for the passed int pointer. It returns 0 if the pointer is nil. -func Int64(i *int64) int64 { - if i != nil { - return *i - } - return 0 -} - -// Int64Ptr returns a pointer to the passed int64. -func Int64Ptr(i int64) *int64 { - return &i -} - -// Float32 returns an int value for the passed int pointer. It returns 0.0 if the pointer is nil. -func Float32(i *float32) float32 { - if i != nil { - return *i - } - return 0.0 -} - -// Float32Ptr returns a pointer to the passed float32. -func Float32Ptr(i float32) *float32 { - return &i -} - -// Float64 returns an int value for the passed int pointer. It returns 0.0 if the pointer is nil. -func Float64(i *float64) float64 { - if i != nil { - return *i - } - return 0.0 -} - -// Float64Ptr returns a pointer to the passed float64. -func Float64Ptr(i float64) *float64 { - return &i -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/utility.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/utility.go deleted file mode 100644 index 96ac7797..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/utility.go +++ /dev/null @@ -1,103 +0,0 @@ -package autorest - -import ( - "bytes" - "encoding/json" - "encoding/xml" - "fmt" - "io" - "net/url" -) - -// EncodedAs is a series of constants specifying various data encodings -type EncodedAs string - -const ( - // EncodedAsJSON states that data is encoded as JSON - EncodedAsJSON EncodedAs = "JSON" - - // EncodedAsXML states that data is encoded as Xml - EncodedAsXML EncodedAs = "XML" -) - -// Decoder defines the decoding method json.Decoder and xml.Decoder share -type Decoder interface { - Decode(v interface{}) error -} - -// NewDecoder creates a new decoder appropriate to the passed encoding. -// encodedAs specifies the type of encoding and r supplies the io.Reader containing the -// encoded data. -func NewDecoder(encodedAs EncodedAs, r io.Reader) Decoder { - if encodedAs == EncodedAsJSON { - return json.NewDecoder(r) - } else if encodedAs == EncodedAsXML { - return xml.NewDecoder(r) - } - return nil -} - -// CopyAndDecode decodes the data from the passed io.Reader while making a copy. Having a copy -// is especially useful if there is a chance the data will fail to decode. -// encodedAs specifies the expected encoding, r provides the io.Reader to the data, and v -// is the decoding destination. -func CopyAndDecode(encodedAs EncodedAs, r io.Reader, v interface{}) (bytes.Buffer, error) { - b := bytes.Buffer{} - return b, NewDecoder(encodedAs, io.TeeReader(r, &b)).Decode(v) -} - -// TeeReadCloser returns a ReadCloser that writes to w what it reads from rc. -// It utilizes io.TeeReader to copy the data read and has the same behavior when reading. -// Further, when it is closed, it ensures that rc is closed as well. -func TeeReadCloser(rc io.ReadCloser, w io.Writer) io.ReadCloser { - return &teeReadCloser{rc, io.TeeReader(rc, w)} -} - -type teeReadCloser struct { - rc io.ReadCloser - r io.Reader -} - -func (t *teeReadCloser) Read(p []byte) (int, error) { - return t.r.Read(p) -} - -func (t *teeReadCloser) Close() error { - return t.rc.Close() -} - -func containsInt(ints []int, n int) bool { - for _, i := range ints { - if i == n { - return true - } - } - return false -} - -func escapeValueStrings(m map[string]string) map[string]string { - for key, value := range m { - m[key] = url.QueryEscape(value) - } - return m -} - -func ensureValueStrings(mapOfInterface map[string]interface{}) map[string]string { - mapOfStrings := make(map[string]string) - for key, value := range mapOfInterface { - mapOfStrings[key] = ensureValueString(value) - } - return mapOfStrings -} - -func ensureValueString(value interface{}) string { - if value == nil { - return "" - } - switch v := value.(type) { - case string: - return v - default: - return fmt.Sprintf("%v", v) - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/version.go b/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/version.go deleted file mode 100644 index 8031a332..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/Azure/go-autorest/autorest/version.go +++ /dev/null @@ -1,18 +0,0 @@ -package autorest - -import ( - "fmt" -) - -const ( - major = "7" - minor = "0" - patch = "0" - tag = "" - semVerFormat = "%s.%s.%s%s" -) - -// Version returns the semantic version (see http://semver.org). -func Version() string { - return fmt.Sprintf(semVerFormat, major, minor, patch, tag) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/LICENSE.txt b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/LICENSE.txt deleted file mode 100644 index d6456956..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/LICENSE.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/NOTICE.txt b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/NOTICE.txt deleted file mode 100644 index 5f14d116..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/NOTICE.txt +++ /dev/null @@ -1,3 +0,0 @@ -AWS SDK for Go -Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. -Copyright 2014-2015 Stripe, Inc. diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/awserr/error.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/awserr/error.go deleted file mode 100644 index a52743be..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/awserr/error.go +++ /dev/null @@ -1,105 +0,0 @@ -// Package awserr represents API error interface accessors for the SDK. -package awserr - -// An Error wraps lower level errors with code, message and an original error. -// The underlying concrete error type may also satisfy other interfaces which -// can be to used to obtain more specific information about the error. -// -// Calling Error() or String() will always include the full information about -// an error based on its underlying type. -// -// Example: -// -// output, err := s3manage.Upload(svc, input, opts) -// if err != nil { -// if awsErr, ok := err.(awserr.Error); ok { -// // Get error details -// log.Println("Error:", err.Code(), err.Message()) -// -// // Prints out full error message, including original error if there was one. -// log.Println("Error:", err.Error()) -// -// // Get original error -// if origErr := err.Err(); origErr != nil { -// // operate on original error. -// } -// } else { -// fmt.Println(err.Error()) -// } -// } -// -type Error interface { - // Satisfy the generic error interface. - error - - // Returns the short phrase depicting the classification of the error. - Code() string - - // Returns the error details message. - Message() string - - // Returns the original error if one was set. Nil is returned if not set. - OrigErr() error -} - -// New returns an Error object described by the code, message, and origErr. -// -// If origErr satisfies the Error interface it will not be wrapped within a new -// Error object and will instead be returned. -func New(code, message string, origErr error) Error { - if e, ok := origErr.(Error); ok && e != nil { - return e - } - return newBaseError(code, message, origErr) -} - -// A RequestFailure is an interface to extract request failure information from -// an Error such as the request ID of the failed request returned by a service. -// RequestFailures may not always have a requestID value if the request failed -// prior to reaching the service such as a connection error. -// -// Example: -// -// output, err := s3manage.Upload(svc, input, opts) -// if err != nil { -// if reqerr, ok := err.(RequestFailure); ok { -// log.Printf("Request failed", reqerr.Code(), reqerr.Message(), reqerr.RequestID()) -// } else { -// log.Printf("Error:", err.Error() -// } -// } -// -// Combined with awserr.Error: -// -// output, err := s3manage.Upload(svc, input, opts) -// if err != nil { -// if awsErr, ok := err.(awserr.Error); ok { -// // Generic AWS Error with Code, Message, and original error (if any) -// fmt.Println(awsErr.Code(), awsErr.Message(), awsErr.OrigErr()) -// -// if reqErr, ok := err.(awserr.RequestFailure); ok { -// // A service error occurred -// fmt.Println(reqErr.StatusCode(), reqErr.RequestID()) -// } -// } else { -// fmt.Println(err.Error()) -// } -// } -// -type RequestFailure interface { - Error - - // The status code of the HTTP response. - StatusCode() int - - // The request ID returned by the service for a request failure. This will - // be empty if no request ID is available such as the request failed due - // to a connection error. - RequestID() string -} - -// NewRequestFailure returns a new request error wrapper for the given Error -// provided. -func NewRequestFailure(err Error, statusCode int, reqID string) RequestFailure { - return newRequestError(err, statusCode, reqID) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/awserr/types.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/awserr/types.go deleted file mode 100644 index 003a6e80..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/awserr/types.go +++ /dev/null @@ -1,135 +0,0 @@ -package awserr - -import "fmt" - -// SprintError returns a string of the formatted error code. -// -// Both extra and origErr are optional. If they are included their lines -// will be added, but if they are not included their lines will be ignored. -func SprintError(code, message, extra string, origErr error) string { - msg := fmt.Sprintf("%s: %s", code, message) - if extra != "" { - msg = fmt.Sprintf("%s\n\t%s", msg, extra) - } - if origErr != nil { - msg = fmt.Sprintf("%s\ncaused by: %s", msg, origErr.Error()) - } - return msg -} - -// A baseError wraps the code and message which defines an error. It also -// can be used to wrap an original error object. -// -// Should be used as the root for errors satisfying the awserr.Error. Also -// for any error which does not fit into a specific error wrapper type. -type baseError struct { - // Classification of error - code string - - // Detailed information about error - message string - - // Optional original error this error is based off of. Allows building - // chained errors. - origErr error -} - -// newBaseError returns an error object for the code, message, and err. -// -// code is a short no whitespace phrase depicting the classification of -// the error that is being created. -// -// message is the free flow string containing detailed information about the error. -// -// origErr is the error object which will be nested under the new error to be returned. -func newBaseError(code, message string, origErr error) *baseError { - return &baseError{ - code: code, - message: message, - origErr: origErr, - } -} - -// Error returns the string representation of the error. -// -// See ErrorWithExtra for formatting. -// -// Satisfies the error interface. -func (b baseError) Error() string { - return SprintError(b.code, b.message, "", b.origErr) -} - -// String returns the string representation of the error. -// Alias for Error to satisfy the stringer interface. -func (b baseError) String() string { - return b.Error() -} - -// Code returns the short phrase depicting the classification of the error. -func (b baseError) Code() string { - return b.code -} - -// Message returns the error details message. -func (b baseError) Message() string { - return b.message -} - -// OrigErr returns the original error if one was set. Nil is returned if no error -// was set. -func (b baseError) OrigErr() error { - return b.origErr -} - -// So that the Error interface type can be included as an anonymous field -// in the requestError struct and not conflict with the error.Error() method. -type awsError Error - -// A requestError wraps a request or service error. -// -// Composed of baseError for code, message, and original error. -type requestError struct { - awsError - statusCode int - requestID string -} - -// newRequestError returns a wrapped error with additional information for request -// status code, and service requestID. -// -// Should be used to wrap all request which involve service requests. Even if -// the request failed without a service response, but had an HTTP status code -// that may be meaningful. -// -// Also wraps original errors via the baseError. -func newRequestError(err Error, statusCode int, requestID string) *requestError { - return &requestError{ - awsError: err, - statusCode: statusCode, - requestID: requestID, - } -} - -// Error returns the string representation of the error. -// Satisfies the error interface. -func (r requestError) Error() string { - extra := fmt.Sprintf("status code: %d, request id: %s", - r.statusCode, r.requestID) - return SprintError(r.Code(), r.Message(), extra, r.OrigErr()) -} - -// String returns the string representation of the error. -// Alias for Error to satisfy the stringer interface. -func (r requestError) String() string { - return r.Error() -} - -// StatusCode returns the wrapped status code for the error -func (r requestError) StatusCode() int { - return r.statusCode -} - -// RequestID returns the wrapped requestID -func (r requestError) RequestID() string { - return r.requestID -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/awsutil/copy.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/awsutil/copy.go deleted file mode 100644 index 8429470b..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/awsutil/copy.go +++ /dev/null @@ -1,100 +0,0 @@ -package awsutil - -import ( - "io" - "reflect" -) - -// Copy deeply copies a src structure to dst. Useful for copying request and -// response structures. -// -// Can copy between structs of different type, but will only copy fields which -// are assignable, and exist in both structs. Fields which are not assignable, -// or do not exist in both structs are ignored. -func Copy(dst, src interface{}) { - dstval := reflect.ValueOf(dst) - if !dstval.IsValid() { - panic("Copy dst cannot be nil") - } - - rcopy(dstval, reflect.ValueOf(src), true) -} - -// CopyOf returns a copy of src while also allocating the memory for dst. -// src must be a pointer type or this operation will fail. -func CopyOf(src interface{}) (dst interface{}) { - dsti := reflect.New(reflect.TypeOf(src).Elem()) - dst = dsti.Interface() - rcopy(dsti, reflect.ValueOf(src), true) - return -} - -// rcopy performs a recursive copy of values from the source to destination. -// -// root is used to skip certain aspects of the copy which are not valid -// for the root node of a object. -func rcopy(dst, src reflect.Value, root bool) { - if !src.IsValid() { - return - } - - switch src.Kind() { - case reflect.Ptr: - if _, ok := src.Interface().(io.Reader); ok { - if dst.Kind() == reflect.Ptr && dst.Elem().CanSet() { - dst.Elem().Set(src) - } else if dst.CanSet() { - dst.Set(src) - } - } else { - e := src.Type().Elem() - if dst.CanSet() && !src.IsNil() { - dst.Set(reflect.New(e)) - } - if src.Elem().IsValid() { - // Keep the current root state since the depth hasn't changed - rcopy(dst.Elem(), src.Elem(), root) - } - } - case reflect.Struct: - t := dst.Type() - for i := 0; i < t.NumField(); i++ { - name := t.Field(i).Name - srcVal := src.FieldByName(name) - dstVal := dst.FieldByName(name) - if srcVal.IsValid() && dstVal.CanSet() { - rcopy(dstVal, srcVal, false) - } - } - case reflect.Slice: - if src.IsNil() { - break - } - - s := reflect.MakeSlice(src.Type(), src.Len(), src.Cap()) - dst.Set(s) - for i := 0; i < src.Len(); i++ { - rcopy(dst.Index(i), src.Index(i), false) - } - case reflect.Map: - if src.IsNil() { - break - } - - s := reflect.MakeMap(src.Type()) - dst.Set(s) - for _, k := range src.MapKeys() { - v := src.MapIndex(k) - v2 := reflect.New(v.Type()).Elem() - rcopy(v2, v, false) - dst.SetMapIndex(k, v2) - } - default: - // Assign the value if possible. If its not assignable, the value would - // need to be converted and the impact of that may be unexpected, or is - // not compatible with the dst type. - if src.Type().AssignableTo(dst.Type()) { - dst.Set(src) - } - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/awsutil/equal.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/awsutil/equal.go deleted file mode 100644 index 59fa4a55..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/awsutil/equal.go +++ /dev/null @@ -1,27 +0,0 @@ -package awsutil - -import ( - "reflect" -) - -// DeepEqual returns if the two values are deeply equal like reflect.DeepEqual. -// In addition to this, this method will also dereference the input values if -// possible so the DeepEqual performed will not fail if one parameter is a -// pointer and the other is not. -// -// DeepEqual will not perform indirection of nested values of the input parameters. -func DeepEqual(a, b interface{}) bool { - ra := reflect.Indirect(reflect.ValueOf(a)) - rb := reflect.Indirect(reflect.ValueOf(b)) - - if raValid, rbValid := ra.IsValid(), rb.IsValid(); !raValid && !rbValid { - // If the elements are both nil, and of the same type the are equal - // If they are of different types they are not equal - return reflect.TypeOf(a) == reflect.TypeOf(b) - } else if raValid != rbValid { - // Both values must be valid to be equal - return false - } - - return reflect.DeepEqual(ra.Interface(), rb.Interface()) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/awsutil/path_value.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/awsutil/path_value.go deleted file mode 100644 index 4d2a01e8..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/awsutil/path_value.go +++ /dev/null @@ -1,222 +0,0 @@ -package awsutil - -import ( - "reflect" - "regexp" - "strconv" - "strings" - - "github.com/jmespath/go-jmespath" -) - -var indexRe = regexp.MustCompile(`(.+)\[(-?\d+)?\]$`) - -// rValuesAtPath returns a slice of values found in value v. The values -// in v are explored recursively so all nested values are collected. -func rValuesAtPath(v interface{}, path string, createPath, caseSensitive, nilTerm bool) []reflect.Value { - pathparts := strings.Split(path, "||") - if len(pathparts) > 1 { - for _, pathpart := range pathparts { - vals := rValuesAtPath(v, pathpart, createPath, caseSensitive, nilTerm) - if len(vals) > 0 { - return vals - } - } - return nil - } - - values := []reflect.Value{reflect.Indirect(reflect.ValueOf(v))} - components := strings.Split(path, ".") - for len(values) > 0 && len(components) > 0 { - var index *int64 - var indexStar bool - c := strings.TrimSpace(components[0]) - if c == "" { // no actual component, illegal syntax - return nil - } else if caseSensitive && c != "*" && strings.ToLower(c[0:1]) == c[0:1] { - // TODO normalize case for user - return nil // don't support unexported fields - } - - // parse this component - if m := indexRe.FindStringSubmatch(c); m != nil { - c = m[1] - if m[2] == "" { - index = nil - indexStar = true - } else { - i, _ := strconv.ParseInt(m[2], 10, 32) - index = &i - indexStar = false - } - } - - nextvals := []reflect.Value{} - for _, value := range values { - // pull component name out of struct member - if value.Kind() != reflect.Struct { - continue - } - - if c == "*" { // pull all members - for i := 0; i < value.NumField(); i++ { - if f := reflect.Indirect(value.Field(i)); f.IsValid() { - nextvals = append(nextvals, f) - } - } - continue - } - - value = value.FieldByNameFunc(func(name string) bool { - if c == name { - return true - } else if !caseSensitive && strings.ToLower(name) == strings.ToLower(c) { - return true - } - return false - }) - - if nilTerm && value.Kind() == reflect.Ptr && len(components[1:]) == 0 { - if !value.IsNil() { - value.Set(reflect.Zero(value.Type())) - } - return []reflect.Value{value} - } - - if createPath && value.Kind() == reflect.Ptr && value.IsNil() { - // TODO if the value is the terminus it should not be created - // if the value to be set to its position is nil. - value.Set(reflect.New(value.Type().Elem())) - value = value.Elem() - } else { - value = reflect.Indirect(value) - } - - if value.Kind() == reflect.Slice || value.Kind() == reflect.Map { - if !createPath && value.IsNil() { - value = reflect.ValueOf(nil) - } - } - - if value.IsValid() { - nextvals = append(nextvals, value) - } - } - values = nextvals - - if indexStar || index != nil { - nextvals = []reflect.Value{} - for _, value := range values { - value := reflect.Indirect(value) - if value.Kind() != reflect.Slice { - continue - } - - if indexStar { // grab all indices - for i := 0; i < value.Len(); i++ { - idx := reflect.Indirect(value.Index(i)) - if idx.IsValid() { - nextvals = append(nextvals, idx) - } - } - continue - } - - // pull out index - i := int(*index) - if i >= value.Len() { // check out of bounds - if createPath { - // TODO resize slice - } else { - continue - } - } else if i < 0 { // support negative indexing - i = value.Len() + i - } - value = reflect.Indirect(value.Index(i)) - - if value.Kind() == reflect.Slice || value.Kind() == reflect.Map { - if !createPath && value.IsNil() { - value = reflect.ValueOf(nil) - } - } - - if value.IsValid() { - nextvals = append(nextvals, value) - } - } - values = nextvals - } - - components = components[1:] - } - return values -} - -// ValuesAtPath returns a list of values at the case insensitive lexical -// path inside of a structure. -func ValuesAtPath(i interface{}, path string) ([]interface{}, error) { - result, err := jmespath.Search(path, i) - if err != nil { - return nil, err - } - - v := reflect.ValueOf(result) - if !v.IsValid() || (v.Kind() == reflect.Ptr && v.IsNil()) { - return nil, nil - } - if s, ok := result.([]interface{}); ok { - return s, err - } - if v.Kind() == reflect.Map && v.Len() == 0 { - return nil, nil - } - if v.Kind() == reflect.Slice { - out := make([]interface{}, v.Len()) - for i := 0; i < v.Len(); i++ { - out[i] = v.Index(i).Interface() - } - return out, nil - } - - return []interface{}{result}, nil -} - -// SetValueAtPath sets a value at the case insensitive lexical path inside -// of a structure. -func SetValueAtPath(i interface{}, path string, v interface{}) { - if rvals := rValuesAtPath(i, path, true, false, v == nil); rvals != nil { - for _, rval := range rvals { - if rval.Kind() == reflect.Ptr && rval.IsNil() { - continue - } - setValue(rval, v) - } - } -} - -func setValue(dstVal reflect.Value, src interface{}) { - if dstVal.Kind() == reflect.Ptr { - dstVal = reflect.Indirect(dstVal) - } - srcVal := reflect.ValueOf(src) - - if !srcVal.IsValid() { // src is literal nil - if dstVal.CanAddr() { - // Convert to pointer so that pointer's value can be nil'ed - // dstVal = dstVal.Addr() - } - dstVal.Set(reflect.Zero(dstVal.Type())) - - } else if srcVal.Kind() == reflect.Ptr { - if srcVal.IsNil() { - srcVal = reflect.Zero(dstVal.Type()) - } else { - srcVal = reflect.ValueOf(src).Elem() - } - dstVal.Set(srcVal) - } else { - dstVal.Set(srcVal) - } - -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/awsutil/prettify.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/awsutil/prettify.go deleted file mode 100644 index 0de3eaa0..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/awsutil/prettify.go +++ /dev/null @@ -1,103 +0,0 @@ -package awsutil - -import ( - "bytes" - "fmt" - "io" - "reflect" - "strings" -) - -// Prettify returns the string representation of a value. -func Prettify(i interface{}) string { - var buf bytes.Buffer - prettify(reflect.ValueOf(i), 0, &buf) - return buf.String() -} - -// prettify will recursively walk value v to build a textual -// representation of the value. -func prettify(v reflect.Value, indent int, buf *bytes.Buffer) { - for v.Kind() == reflect.Ptr { - v = v.Elem() - } - - switch v.Kind() { - case reflect.Struct: - strtype := v.Type().String() - if strtype == "time.Time" { - fmt.Fprintf(buf, "%s", v.Interface()) - break - } else if strings.HasPrefix(strtype, "io.") { - buf.WriteString("") - break - } - - buf.WriteString("{\n") - - names := []string{} - for i := 0; i < v.Type().NumField(); i++ { - name := v.Type().Field(i).Name - f := v.Field(i) - if name[0:1] == strings.ToLower(name[0:1]) { - continue // ignore unexported fields - } - if (f.Kind() == reflect.Ptr || f.Kind() == reflect.Slice || f.Kind() == reflect.Map) && f.IsNil() { - continue // ignore unset fields - } - names = append(names, name) - } - - for i, n := range names { - val := v.FieldByName(n) - buf.WriteString(strings.Repeat(" ", indent+2)) - buf.WriteString(n + ": ") - prettify(val, indent+2, buf) - - if i < len(names)-1 { - buf.WriteString(",\n") - } - } - - buf.WriteString("\n" + strings.Repeat(" ", indent) + "}") - case reflect.Slice: - nl, id, id2 := "", "", "" - if v.Len() > 3 { - nl, id, id2 = "\n", strings.Repeat(" ", indent), strings.Repeat(" ", indent+2) - } - buf.WriteString("[" + nl) - for i := 0; i < v.Len(); i++ { - buf.WriteString(id2) - prettify(v.Index(i), indent+2, buf) - - if i < v.Len()-1 { - buf.WriteString("," + nl) - } - } - - buf.WriteString(nl + id + "]") - case reflect.Map: - buf.WriteString("{\n") - - for i, k := range v.MapKeys() { - buf.WriteString(strings.Repeat(" ", indent+2)) - buf.WriteString(k.String() + ": ") - prettify(v.MapIndex(k), indent+2, buf) - - if i < v.Len()-1 { - buf.WriteString(",\n") - } - } - - buf.WriteString("\n" + strings.Repeat(" ", indent) + "}") - default: - format := "%v" - switch v.Interface().(type) { - case string: - format = "%q" - case io.ReadSeeker, io.Reader: - format = "buffer(%p)" - } - fmt.Fprintf(buf, format, v.Interface()) - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/awsutil/string_value.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/awsutil/string_value.go deleted file mode 100644 index b6432f1a..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/awsutil/string_value.go +++ /dev/null @@ -1,89 +0,0 @@ -package awsutil - -import ( - "bytes" - "fmt" - "reflect" - "strings" -) - -// StringValue returns the string representation of a value. -func StringValue(i interface{}) string { - var buf bytes.Buffer - stringValue(reflect.ValueOf(i), 0, &buf) - return buf.String() -} - -func stringValue(v reflect.Value, indent int, buf *bytes.Buffer) { - for v.Kind() == reflect.Ptr { - v = v.Elem() - } - - switch v.Kind() { - case reflect.Struct: - buf.WriteString("{\n") - - names := []string{} - for i := 0; i < v.Type().NumField(); i++ { - name := v.Type().Field(i).Name - f := v.Field(i) - if name[0:1] == strings.ToLower(name[0:1]) { - continue // ignore unexported fields - } - if (f.Kind() == reflect.Ptr || f.Kind() == reflect.Slice) && f.IsNil() { - continue // ignore unset fields - } - names = append(names, name) - } - - for i, n := range names { - val := v.FieldByName(n) - buf.WriteString(strings.Repeat(" ", indent+2)) - buf.WriteString(n + ": ") - stringValue(val, indent+2, buf) - - if i < len(names)-1 { - buf.WriteString(",\n") - } - } - - buf.WriteString("\n" + strings.Repeat(" ", indent) + "}") - case reflect.Slice: - nl, id, id2 := "", "", "" - if v.Len() > 3 { - nl, id, id2 = "\n", strings.Repeat(" ", indent), strings.Repeat(" ", indent+2) - } - buf.WriteString("[" + nl) - for i := 0; i < v.Len(); i++ { - buf.WriteString(id2) - stringValue(v.Index(i), indent+2, buf) - - if i < v.Len()-1 { - buf.WriteString("," + nl) - } - } - - buf.WriteString(nl + id + "]") - case reflect.Map: - buf.WriteString("{\n") - - for i, k := range v.MapKeys() { - buf.WriteString(strings.Repeat(" ", indent+2)) - buf.WriteString(k.String() + ": ") - stringValue(v.MapIndex(k), indent+2, buf) - - if i < v.Len()-1 { - buf.WriteString(",\n") - } - } - - buf.WriteString("\n" + strings.Repeat(" ", indent) + "}") - default: - format := "%v" - switch v.Interface().(type) { - case string: - format = "%q" - } - fmt.Fprintf(buf, format, v.Interface()) - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/client/client.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/client/client.go deleted file mode 100644 index e639ce04..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/client/client.go +++ /dev/null @@ -1,120 +0,0 @@ -package client - -import ( - "fmt" - "io/ioutil" - "net/http/httputil" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/client/metadata" - "github.com/aws/aws-sdk-go/aws/request" -) - -// A Config provides configuration to a service client instance. -type Config struct { - Config *aws.Config - Handlers request.Handlers - Endpoint, SigningRegion string -} - -// ConfigProvider provides a generic way for a service client to receive -// the ClientConfig without circular dependencies. -type ConfigProvider interface { - ClientConfig(serviceName string, cfgs ...*aws.Config) Config -} - -// A Client implements the base client request and response handling -// used by all service clients. -type Client struct { - request.Retryer - metadata.ClientInfo - - Config aws.Config - Handlers request.Handlers -} - -// New will return a pointer to a new initialized service client. -func New(cfg aws.Config, info metadata.ClientInfo, handlers request.Handlers, options ...func(*Client)) *Client { - svc := &Client{ - Config: cfg, - ClientInfo: info, - Handlers: handlers, - } - - switch retryer, ok := cfg.Retryer.(request.Retryer); { - case ok: - svc.Retryer = retryer - case cfg.Retryer != nil && cfg.Logger != nil: - s := fmt.Sprintf("WARNING: %T does not implement request.Retryer; using DefaultRetryer instead", cfg.Retryer) - cfg.Logger.Log(s) - fallthrough - default: - maxRetries := aws.IntValue(cfg.MaxRetries) - if cfg.MaxRetries == nil || maxRetries == aws.UseServiceDefaultRetries { - maxRetries = 3 - } - svc.Retryer = DefaultRetryer{NumMaxRetries: maxRetries} - } - - svc.AddDebugHandlers() - - for _, option := range options { - option(svc) - } - - return svc -} - -// NewRequest returns a new Request pointer for the service API -// operation and parameters. -func (c *Client) NewRequest(operation *request.Operation, params interface{}, data interface{}) *request.Request { - return request.New(c.Config, c.ClientInfo, c.Handlers, c.Retryer, operation, params, data) -} - -// AddDebugHandlers injects debug logging handlers into the service to log request -// debug information. -func (c *Client) AddDebugHandlers() { - if !c.Config.LogLevel.AtLeast(aws.LogDebug) { - return - } - - c.Handlers.Send.PushFront(logRequest) - c.Handlers.Send.PushBack(logResponse) -} - -const logReqMsg = `DEBUG: Request %s/%s Details: ----[ REQUEST POST-SIGN ]----------------------------- -%s ------------------------------------------------------` - -func logRequest(r *request.Request) { - logBody := r.Config.LogLevel.Matches(aws.LogDebugWithHTTPBody) - dumpedBody, _ := httputil.DumpRequestOut(r.HTTPRequest, logBody) - - if logBody { - // Reset the request body because dumpRequest will re-wrap the r.HTTPRequest's - // Body as a NoOpCloser and will not be reset after read by the HTTP - // client reader. - r.Body.Seek(r.BodyStart, 0) - r.HTTPRequest.Body = ioutil.NopCloser(r.Body) - } - - r.Config.Logger.Log(fmt.Sprintf(logReqMsg, r.ClientInfo.ServiceName, r.Operation.Name, string(dumpedBody))) -} - -const logRespMsg = `DEBUG: Response %s/%s Details: ----[ RESPONSE ]-------------------------------------- -%s ------------------------------------------------------` - -func logResponse(r *request.Request) { - var msg = "no reponse data" - if r.HTTPResponse != nil { - logBody := r.Config.LogLevel.Matches(aws.LogDebugWithHTTPBody) - dumpedBody, _ := httputil.DumpResponse(r.HTTPResponse, logBody) - msg = string(dumpedBody) - } else if r.Error != nil { - msg = r.Error.Error() - } - r.Config.Logger.Log(fmt.Sprintf(logRespMsg, r.ClientInfo.ServiceName, r.Operation.Name, msg)) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/client/default_retryer.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/client/default_retryer.go deleted file mode 100644 index 24d39ce5..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/client/default_retryer.go +++ /dev/null @@ -1,45 +0,0 @@ -package client - -import ( - "math" - "math/rand" - "time" - - "github.com/aws/aws-sdk-go/aws/request" -) - -// DefaultRetryer implements basic retry logic using exponential backoff for -// most services. If you want to implement custom retry logic, implement the -// request.Retryer interface or create a structure type that composes this -// struct and override the specific methods. For example, to override only -// the MaxRetries method: -// -// type retryer struct { -// service.DefaultRetryer -// } -// -// // This implementation always has 100 max retries -// func (d retryer) MaxRetries() uint { return 100 } -type DefaultRetryer struct { - NumMaxRetries int -} - -// MaxRetries returns the number of maximum returns the service will use to make -// an individual API request. -func (d DefaultRetryer) MaxRetries() int { - return d.NumMaxRetries -} - -// RetryRules returns the delay duration before retrying this request again -func (d DefaultRetryer) RetryRules(r *request.Request) time.Duration { - delay := int(math.Pow(2, float64(r.RetryCount))) * (rand.Intn(30) + 30) - return time.Duration(delay) * time.Millisecond -} - -// ShouldRetry returns if the request should be retried. -func (d DefaultRetryer) ShouldRetry(r *request.Request) bool { - if r.HTTPResponse.StatusCode >= 500 { - return true - } - return r.IsErrorRetryable() -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/client/metadata/client_info.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/client/metadata/client_info.go deleted file mode 100644 index 4778056d..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/client/metadata/client_info.go +++ /dev/null @@ -1,12 +0,0 @@ -package metadata - -// ClientInfo wraps immutable data from the client.Client structure. -type ClientInfo struct { - ServiceName string - APIVersion string - Endpoint string - SigningName string - SigningRegion string - JSONVersion string - TargetPrefix string -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/config.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/config.go deleted file mode 100644 index 75fcc828..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/config.go +++ /dev/null @@ -1,270 +0,0 @@ -package aws - -import ( - "net/http" - "time" - - "github.com/aws/aws-sdk-go/aws/credentials" -) - -// UseServiceDefaultRetries instructs the config to use the service's own default -// number of retries. This will be the default action if Config.MaxRetries -// is nil also. -const UseServiceDefaultRetries = -1 - -// RequestRetryer is an alias for a type that implements the request.Retryer interface. -type RequestRetryer interface{} - -// A Config provides service configuration for service clients. By default, -// all clients will use the {defaults.DefaultConfig} structure. -type Config struct { - // The credentials object to use when signing requests. Defaults to - // a chain of credential providers to search for credentials in environment - // variables, shared credential file, and EC2 Instance Roles. - Credentials *credentials.Credentials - - // An optional endpoint URL (hostname only or fully qualified URI) - // that overrides the default generated endpoint for a client. Set this - // to `""` to use the default generated endpoint. - // - // @note You must still provide a `Region` value when specifying an - // endpoint for a client. - Endpoint *string - - // The region to send requests to. This parameter is required and must - // be configured globally or on a per-client basis unless otherwise - // noted. A full list of regions is found in the "Regions and Endpoints" - // document. - // - // @see http://docs.aws.amazon.com/general/latest/gr/rande.html - // AWS Regions and Endpoints - Region *string - - // Set this to `true` to disable SSL when sending requests. Defaults - // to `false`. - DisableSSL *bool - - // The HTTP client to use when sending requests. Defaults to - // `http.DefaultClient`. - HTTPClient *http.Client - - // An integer value representing the logging level. The default log level - // is zero (LogOff), which represents no logging. To enable logging set - // to a LogLevel Value. - LogLevel *LogLevelType - - // The logger writer interface to write logging messages to. Defaults to - // standard out. - Logger Logger - - // The maximum number of times that a request will be retried for failures. - // Defaults to -1, which defers the max retry setting to the service specific - // configuration. - MaxRetries *int - - // Retryer guides how HTTP requests should be retried in case of recoverable failures. - // - // When nil or the value does not implement the request.Retryer interface, - // the request.DefaultRetryer will be used. - // - // When both Retryer and MaxRetries are non-nil, the former is used and - // the latter ignored. - // - // To set the Retryer field in a type-safe manner and with chaining, use - // the request.WithRetryer helper function: - // - // cfg := request.WithRetryer(aws.NewConfig(), myRetryer) - // - Retryer RequestRetryer - - // Disables semantic parameter validation, which validates input for missing - // required fields and/or other semantic request input errors. - DisableParamValidation *bool - - // Disables the computation of request and response checksums, e.g., - // CRC32 checksums in Amazon DynamoDB. - DisableComputeChecksums *bool - - // Set this to `true` to force the request to use path-style addressing, - // i.e., `http://s3.amazonaws.com/BUCKET/KEY`. By default, the S3 client will - // use virtual hosted bucket addressing when possible - // (`http://BUCKET.s3.amazonaws.com/KEY`). - // - // @note This configuration option is specific to the Amazon S3 service. - // @see http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html - // Amazon S3: Virtual Hosting of Buckets - S3ForcePathStyle *bool - - SleepDelay func(time.Duration) -} - -// NewConfig returns a new Config pointer that can be chained with builder methods to -// set multiple configuration values inline without using pointers. -// -// svc := s3.New(aws.NewConfig().WithRegion("us-west-2").WithMaxRetries(10)) -// -func NewConfig() *Config { - return &Config{} -} - -// WithCredentials sets a config Credentials value returning a Config pointer -// for chaining. -func (c *Config) WithCredentials(creds *credentials.Credentials) *Config { - c.Credentials = creds - return c -} - -// WithEndpoint sets a config Endpoint value returning a Config pointer for -// chaining. -func (c *Config) WithEndpoint(endpoint string) *Config { - c.Endpoint = &endpoint - return c -} - -// WithRegion sets a config Region value returning a Config pointer for -// chaining. -func (c *Config) WithRegion(region string) *Config { - c.Region = ®ion - return c -} - -// WithDisableSSL sets a config DisableSSL value returning a Config pointer -// for chaining. -func (c *Config) WithDisableSSL(disable bool) *Config { - c.DisableSSL = &disable - return c -} - -// WithHTTPClient sets a config HTTPClient value returning a Config pointer -// for chaining. -func (c *Config) WithHTTPClient(client *http.Client) *Config { - c.HTTPClient = client - return c -} - -// WithMaxRetries sets a config MaxRetries value returning a Config pointer -// for chaining. -func (c *Config) WithMaxRetries(max int) *Config { - c.MaxRetries = &max - return c -} - -// WithDisableParamValidation sets a config DisableParamValidation value -// returning a Config pointer for chaining. -func (c *Config) WithDisableParamValidation(disable bool) *Config { - c.DisableParamValidation = &disable - return c -} - -// WithDisableComputeChecksums sets a config DisableComputeChecksums value -// returning a Config pointer for chaining. -func (c *Config) WithDisableComputeChecksums(disable bool) *Config { - c.DisableComputeChecksums = &disable - return c -} - -// WithLogLevel sets a config LogLevel value returning a Config pointer for -// chaining. -func (c *Config) WithLogLevel(level LogLevelType) *Config { - c.LogLevel = &level - return c -} - -// WithLogger sets a config Logger value returning a Config pointer for -// chaining. -func (c *Config) WithLogger(logger Logger) *Config { - c.Logger = logger - return c -} - -// WithS3ForcePathStyle sets a config S3ForcePathStyle value returning a Config -// pointer for chaining. -func (c *Config) WithS3ForcePathStyle(force bool) *Config { - c.S3ForcePathStyle = &force - return c -} - -// WithSleepDelay overrides the function used to sleep while waiting for the -// next retry. Defaults to time.Sleep. -func (c *Config) WithSleepDelay(fn func(time.Duration)) *Config { - c.SleepDelay = fn - return c -} - -// MergeIn merges the passed in configs into the existing config object. -func (c *Config) MergeIn(cfgs ...*Config) { - for _, other := range cfgs { - mergeInConfig(c, other) - } -} - -func mergeInConfig(dst *Config, other *Config) { - if other == nil { - return - } - - if other.Credentials != nil { - dst.Credentials = other.Credentials - } - - if other.Endpoint != nil { - dst.Endpoint = other.Endpoint - } - - if other.Region != nil { - dst.Region = other.Region - } - - if other.DisableSSL != nil { - dst.DisableSSL = other.DisableSSL - } - - if other.HTTPClient != nil { - dst.HTTPClient = other.HTTPClient - } - - if other.LogLevel != nil { - dst.LogLevel = other.LogLevel - } - - if other.Logger != nil { - dst.Logger = other.Logger - } - - if other.MaxRetries != nil { - dst.MaxRetries = other.MaxRetries - } - - if other.Retryer != nil { - dst.Retryer = other.Retryer - } - - if other.DisableParamValidation != nil { - dst.DisableParamValidation = other.DisableParamValidation - } - - if other.DisableComputeChecksums != nil { - dst.DisableComputeChecksums = other.DisableComputeChecksums - } - - if other.S3ForcePathStyle != nil { - dst.S3ForcePathStyle = other.S3ForcePathStyle - } - - if other.SleepDelay != nil { - dst.SleepDelay = other.SleepDelay - } -} - -// Copy will return a shallow copy of the Config object. If any additional -// configurations are provided they will be merged into the new config returned. -func (c *Config) Copy(cfgs ...*Config) *Config { - dst := &Config{} - dst.MergeIn(c) - - for _, cfg := range cfgs { - dst.MergeIn(cfg) - } - - return dst -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/convert_types.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/convert_types.go deleted file mode 100644 index d6a7b08d..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/convert_types.go +++ /dev/null @@ -1,357 +0,0 @@ -package aws - -import "time" - -// String returns a pointer to of the string value passed in. -func String(v string) *string { - return &v -} - -// StringValue returns the value of the string pointer passed in or -// "" if the pointer is nil. -func StringValue(v *string) string { - if v != nil { - return *v - } - return "" -} - -// StringSlice converts a slice of string values into a slice of -// string pointers -func StringSlice(src []string) []*string { - dst := make([]*string, len(src)) - for i := 0; i < len(src); i++ { - dst[i] = &(src[i]) - } - return dst -} - -// StringValueSlice converts a slice of string pointers into a slice of -// string values -func StringValueSlice(src []*string) []string { - dst := make([]string, len(src)) - for i := 0; i < len(src); i++ { - if src[i] != nil { - dst[i] = *(src[i]) - } - } - return dst -} - -// StringMap converts a string map of string values into a string -// map of string pointers -func StringMap(src map[string]string) map[string]*string { - dst := make(map[string]*string) - for k, val := range src { - v := val - dst[k] = &v - } - return dst -} - -// StringValueMap converts a string map of string pointers into a string -// map of string values -func StringValueMap(src map[string]*string) map[string]string { - dst := make(map[string]string) - for k, val := range src { - if val != nil { - dst[k] = *val - } - } - return dst -} - -// Bool returns a pointer to of the bool value passed in. -func Bool(v bool) *bool { - return &v -} - -// BoolValue returns the value of the bool pointer passed in or -// false if the pointer is nil. -func BoolValue(v *bool) bool { - if v != nil { - return *v - } - return false -} - -// BoolSlice converts a slice of bool values into a slice of -// bool pointers -func BoolSlice(src []bool) []*bool { - dst := make([]*bool, len(src)) - for i := 0; i < len(src); i++ { - dst[i] = &(src[i]) - } - return dst -} - -// BoolValueSlice converts a slice of bool pointers into a slice of -// bool values -func BoolValueSlice(src []*bool) []bool { - dst := make([]bool, len(src)) - for i := 0; i < len(src); i++ { - if src[i] != nil { - dst[i] = *(src[i]) - } - } - return dst -} - -// BoolMap converts a string map of bool values into a string -// map of bool pointers -func BoolMap(src map[string]bool) map[string]*bool { - dst := make(map[string]*bool) - for k, val := range src { - v := val - dst[k] = &v - } - return dst -} - -// BoolValueMap converts a string map of bool pointers into a string -// map of bool values -func BoolValueMap(src map[string]*bool) map[string]bool { - dst := make(map[string]bool) - for k, val := range src { - if val != nil { - dst[k] = *val - } - } - return dst -} - -// Int returns a pointer to of the int value passed in. -func Int(v int) *int { - return &v -} - -// IntValue returns the value of the int pointer passed in or -// 0 if the pointer is nil. -func IntValue(v *int) int { - if v != nil { - return *v - } - return 0 -} - -// IntSlice converts a slice of int values into a slice of -// int pointers -func IntSlice(src []int) []*int { - dst := make([]*int, len(src)) - for i := 0; i < len(src); i++ { - dst[i] = &(src[i]) - } - return dst -} - -// IntValueSlice converts a slice of int pointers into a slice of -// int values -func IntValueSlice(src []*int) []int { - dst := make([]int, len(src)) - for i := 0; i < len(src); i++ { - if src[i] != nil { - dst[i] = *(src[i]) - } - } - return dst -} - -// IntMap converts a string map of int values into a string -// map of int pointers -func IntMap(src map[string]int) map[string]*int { - dst := make(map[string]*int) - for k, val := range src { - v := val - dst[k] = &v - } - return dst -} - -// IntValueMap converts a string map of int pointers into a string -// map of int values -func IntValueMap(src map[string]*int) map[string]int { - dst := make(map[string]int) - for k, val := range src { - if val != nil { - dst[k] = *val - } - } - return dst -} - -// Int64 returns a pointer to of the int64 value passed in. -func Int64(v int64) *int64 { - return &v -} - -// Int64Value returns the value of the int64 pointer passed in or -// 0 if the pointer is nil. -func Int64Value(v *int64) int64 { - if v != nil { - return *v - } - return 0 -} - -// Int64Slice converts a slice of int64 values into a slice of -// int64 pointers -func Int64Slice(src []int64) []*int64 { - dst := make([]*int64, len(src)) - for i := 0; i < len(src); i++ { - dst[i] = &(src[i]) - } - return dst -} - -// Int64ValueSlice converts a slice of int64 pointers into a slice of -// int64 values -func Int64ValueSlice(src []*int64) []int64 { - dst := make([]int64, len(src)) - for i := 0; i < len(src); i++ { - if src[i] != nil { - dst[i] = *(src[i]) - } - } - return dst -} - -// Int64Map converts a string map of int64 values into a string -// map of int64 pointers -func Int64Map(src map[string]int64) map[string]*int64 { - dst := make(map[string]*int64) - for k, val := range src { - v := val - dst[k] = &v - } - return dst -} - -// Int64ValueMap converts a string map of int64 pointers into a string -// map of int64 values -func Int64ValueMap(src map[string]*int64) map[string]int64 { - dst := make(map[string]int64) - for k, val := range src { - if val != nil { - dst[k] = *val - } - } - return dst -} - -// Float64 returns a pointer to of the float64 value passed in. -func Float64(v float64) *float64 { - return &v -} - -// Float64Value returns the value of the float64 pointer passed in or -// 0 if the pointer is nil. -func Float64Value(v *float64) float64 { - if v != nil { - return *v - } - return 0 -} - -// Float64Slice converts a slice of float64 values into a slice of -// float64 pointers -func Float64Slice(src []float64) []*float64 { - dst := make([]*float64, len(src)) - for i := 0; i < len(src); i++ { - dst[i] = &(src[i]) - } - return dst -} - -// Float64ValueSlice converts a slice of float64 pointers into a slice of -// float64 values -func Float64ValueSlice(src []*float64) []float64 { - dst := make([]float64, len(src)) - for i := 0; i < len(src); i++ { - if src[i] != nil { - dst[i] = *(src[i]) - } - } - return dst -} - -// Float64Map converts a string map of float64 values into a string -// map of float64 pointers -func Float64Map(src map[string]float64) map[string]*float64 { - dst := make(map[string]*float64) - for k, val := range src { - v := val - dst[k] = &v - } - return dst -} - -// Float64ValueMap converts a string map of float64 pointers into a string -// map of float64 values -func Float64ValueMap(src map[string]*float64) map[string]float64 { - dst := make(map[string]float64) - for k, val := range src { - if val != nil { - dst[k] = *val - } - } - return dst -} - -// Time returns a pointer to of the time.Time value passed in. -func Time(v time.Time) *time.Time { - return &v -} - -// TimeValue returns the value of the time.Time pointer passed in or -// time.Time{} if the pointer is nil. -func TimeValue(v *time.Time) time.Time { - if v != nil { - return *v - } - return time.Time{} -} - -// TimeSlice converts a slice of time.Time values into a slice of -// time.Time pointers -func TimeSlice(src []time.Time) []*time.Time { - dst := make([]*time.Time, len(src)) - for i := 0; i < len(src); i++ { - dst[i] = &(src[i]) - } - return dst -} - -// TimeValueSlice converts a slice of time.Time pointers into a slice of -// time.Time values -func TimeValueSlice(src []*time.Time) []time.Time { - dst := make([]time.Time, len(src)) - for i := 0; i < len(src); i++ { - if src[i] != nil { - dst[i] = *(src[i]) - } - } - return dst -} - -// TimeMap converts a string map of time.Time values into a string -// map of time.Time pointers -func TimeMap(src map[string]time.Time) map[string]*time.Time { - dst := make(map[string]*time.Time) - for k, val := range src { - v := val - dst[k] = &v - } - return dst -} - -// TimeValueMap converts a string map of time.Time pointers into a string -// map of time.Time values -func TimeValueMap(src map[string]*time.Time) map[string]time.Time { - dst := make(map[string]time.Time) - for k, val := range src { - if val != nil { - dst[k] = *val - } - } - return dst -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go deleted file mode 100644 index 1d3e656f..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go +++ /dev/null @@ -1,139 +0,0 @@ -package corehandlers - -import ( - "bytes" - "fmt" - "io" - "io/ioutil" - "net/http" - "net/url" - "regexp" - "runtime" - "strconv" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/awserr" - "github.com/aws/aws-sdk-go/aws/request" -) - -// Interface for matching types which also have a Len method. -type lener interface { - Len() int -} - -// BuildContentLengthHandler builds the content length of a request based on the body, -// or will use the HTTPRequest.Header's "Content-Length" if defined. If unable -// to determine request body length and no "Content-Length" was specified it will panic. -var BuildContentLengthHandler = request.NamedHandler{Name: "core.BuildContentLengthHandler", Fn: func(r *request.Request) { - if slength := r.HTTPRequest.Header.Get("Content-Length"); slength != "" { - length, _ := strconv.ParseInt(slength, 10, 64) - r.HTTPRequest.ContentLength = length - return - } - - var length int64 - switch body := r.Body.(type) { - case nil: - length = 0 - case lener: - length = int64(body.Len()) - case io.Seeker: - r.BodyStart, _ = body.Seek(0, 1) - end, _ := body.Seek(0, 2) - body.Seek(r.BodyStart, 0) // make sure to seek back to original location - length = end - r.BodyStart - default: - panic("Cannot get length of body, must provide `ContentLength`") - } - - r.HTTPRequest.ContentLength = length - r.HTTPRequest.Header.Set("Content-Length", fmt.Sprintf("%d", length)) -}} - -// SDKVersionUserAgentHandler is a request handler for adding the SDK Version to the user agent. -var SDKVersionUserAgentHandler = request.NamedHandler{ - Name: "core.SDKVersionUserAgentHandler", - Fn: request.MakeAddToUserAgentHandler(aws.SDKName, aws.SDKVersion, - runtime.Version(), runtime.GOOS, runtime.GOARCH), -} - -var reStatusCode = regexp.MustCompile(`^(\d{3})`) - -// SendHandler is a request handler to send service request using HTTP client. -var SendHandler = request.NamedHandler{Name: "core.SendHandler", Fn: func(r *request.Request) { - var err error - r.HTTPResponse, err = r.Config.HTTPClient.Do(r.HTTPRequest) - if err != nil { - // Capture the case where url.Error is returned for error processing - // response. e.g. 301 without location header comes back as string - // error and r.HTTPResponse is nil. Other url redirect errors will - // comeback in a similar method. - if e, ok := err.(*url.Error); ok && e.Err != nil { - if s := reStatusCode.FindStringSubmatch(e.Err.Error()); s != nil { - code, _ := strconv.ParseInt(s[1], 10, 64) - r.HTTPResponse = &http.Response{ - StatusCode: int(code), - Status: http.StatusText(int(code)), - Body: ioutil.NopCloser(bytes.NewReader([]byte{})), - } - return - } - } - if r.HTTPResponse == nil { - // Add a dummy request response object to ensure the HTTPResponse - // value is consistent. - r.HTTPResponse = &http.Response{ - StatusCode: int(0), - Status: http.StatusText(int(0)), - Body: ioutil.NopCloser(bytes.NewReader([]byte{})), - } - } - // Catch all other request errors. - r.Error = awserr.New("RequestError", "send request failed", err) - r.Retryable = aws.Bool(true) // network errors are retryable - } -}} - -// ValidateResponseHandler is a request handler to validate service response. -var ValidateResponseHandler = request.NamedHandler{Name: "core.ValidateResponseHandler", Fn: func(r *request.Request) { - if r.HTTPResponse.StatusCode == 0 || r.HTTPResponse.StatusCode >= 300 { - // this may be replaced by an UnmarshalError handler - r.Error = awserr.New("UnknownError", "unknown error", nil) - } -}} - -// AfterRetryHandler performs final checks to determine if the request should -// be retried and how long to delay. -var AfterRetryHandler = request.NamedHandler{Name: "core.AfterRetryHandler", Fn: func(r *request.Request) { - // If one of the other handlers already set the retry state - // we don't want to override it based on the service's state - if r.Retryable == nil { - r.Retryable = aws.Bool(r.ShouldRetry(r)) - } - - if r.WillRetry() { - r.RetryDelay = r.RetryRules(r) - r.Config.SleepDelay(r.RetryDelay) - - // when the expired token exception occurs the credentials - // need to be expired locally so that the next request to - // get credentials will trigger a credentials refresh. - if r.IsErrorExpired() { - r.Config.Credentials.Expire() - } - - r.RetryCount++ - r.Error = nil - } -}} - -// ValidateEndpointHandler is a request handler to validate a request had the -// appropriate Region and Endpoint set. Will set r.Error if the endpoint or -// region is not valid. -var ValidateEndpointHandler = request.NamedHandler{Name: "core.ValidateEndpointHandler", Fn: func(r *request.Request) { - if r.ClientInfo.SigningRegion == "" && aws.StringValue(r.Config.Region) == "" { - r.Error = aws.ErrMissingRegion - } else if r.ClientInfo.Endpoint == "" { - r.Error = aws.ErrMissingEndpoint - } -}} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/param_validator.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/param_validator.go deleted file mode 100644 index 3b53f5e0..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/param_validator.go +++ /dev/null @@ -1,144 +0,0 @@ -package corehandlers - -import ( - "fmt" - "reflect" - "strconv" - "strings" - - "github.com/aws/aws-sdk-go/aws/awserr" - "github.com/aws/aws-sdk-go/aws/request" -) - -// ValidateParametersHandler is a request handler to validate the input parameters. -// Validating parameters only has meaning if done prior to the request being sent. -var ValidateParametersHandler = request.NamedHandler{Name: "core.ValidateParametersHandler", Fn: func(r *request.Request) { - if r.ParamsFilled() { - v := validator{errors: []string{}} - v.validateAny(reflect.ValueOf(r.Params), "") - - if count := len(v.errors); count > 0 { - format := "%d validation errors:\n- %s" - msg := fmt.Sprintf(format, count, strings.Join(v.errors, "\n- ")) - r.Error = awserr.New("InvalidParameter", msg, nil) - } - } -}} - -// A validator validates values. Collects validations errors which occurs. -type validator struct { - errors []string -} - -// validateAny will validate any struct, slice or map type. All validations -// are also performed recursively for nested types. -func (v *validator) validateAny(value reflect.Value, path string) { - value = reflect.Indirect(value) - if !value.IsValid() { - return - } - - switch value.Kind() { - case reflect.Struct: - v.validateStruct(value, path) - case reflect.Slice: - for i := 0; i < value.Len(); i++ { - v.validateAny(value.Index(i), path+fmt.Sprintf("[%d]", i)) - } - case reflect.Map: - for _, n := range value.MapKeys() { - v.validateAny(value.MapIndex(n), path+fmt.Sprintf("[%q]", n.String())) - } - } -} - -// validateStruct will validate the struct value's fields. If the structure has -// nested types those types will be validated also. -func (v *validator) validateStruct(value reflect.Value, path string) { - prefix := "." - if path == "" { - prefix = "" - } - - for i := 0; i < value.Type().NumField(); i++ { - f := value.Type().Field(i) - if strings.ToLower(f.Name[0:1]) == f.Name[0:1] { - continue - } - fvalue := value.FieldByName(f.Name) - - err := validateField(f, fvalue, validateFieldRequired, validateFieldMin) - if err != nil { - v.errors = append(v.errors, fmt.Sprintf("%s: %s", err.Error(), path+prefix+f.Name)) - continue - } - - v.validateAny(fvalue, path+prefix+f.Name) - } -} - -type validatorFunc func(f reflect.StructField, fvalue reflect.Value) error - -func validateField(f reflect.StructField, fvalue reflect.Value, funcs ...validatorFunc) error { - for _, fn := range funcs { - if err := fn(f, fvalue); err != nil { - return err - } - } - return nil -} - -// Validates that a field has a valid value provided for required fields. -func validateFieldRequired(f reflect.StructField, fvalue reflect.Value) error { - if f.Tag.Get("required") == "" { - return nil - } - - switch fvalue.Kind() { - case reflect.Ptr, reflect.Slice, reflect.Map: - if fvalue.IsNil() { - return fmt.Errorf("missing required parameter") - } - default: - if !fvalue.IsValid() { - return fmt.Errorf("missing required parameter") - } - } - return nil -} - -// Validates that if a value is provided for a field, that value must be at -// least a minimum length. -func validateFieldMin(f reflect.StructField, fvalue reflect.Value) error { - minStr := f.Tag.Get("min") - if minStr == "" { - return nil - } - min, _ := strconv.ParseInt(minStr, 10, 64) - - kind := fvalue.Kind() - if kind == reflect.Ptr { - if fvalue.IsNil() { - return nil - } - fvalue = fvalue.Elem() - } - - switch fvalue.Kind() { - case reflect.String: - if int64(fvalue.Len()) < min { - return fmt.Errorf("field too short, minimum length %d", min) - } - case reflect.Slice, reflect.Map: - if fvalue.IsNil() { - return nil - } - if int64(fvalue.Len()) < min { - return fmt.Errorf("field too short, minimum length %d", min) - } - - // TODO min can also apply to number minimum value. - - } - return nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/credentials/chain_provider.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/credentials/chain_provider.go deleted file mode 100644 index 115b4073..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/credentials/chain_provider.go +++ /dev/null @@ -1,87 +0,0 @@ -package credentials - -import ( - "github.com/aws/aws-sdk-go/aws/awserr" -) - -var ( - // ErrNoValidProvidersFoundInChain Is returned when there are no valid - // providers in the ChainProvider. - // - // @readonly - ErrNoValidProvidersFoundInChain = awserr.New("NoCredentialProviders", "no valid providers in chain", nil) -) - -// A ChainProvider will search for a provider which returns credentials -// and cache that provider until Retrieve is called again. -// -// The ChainProvider provides a way of chaining multiple providers together -// which will pick the first available using priority order of the Providers -// in the list. -// -// If none of the Providers retrieve valid credentials Value, ChainProvider's -// Retrieve() will return the error ErrNoValidProvidersFoundInChain. -// -// If a Provider is found which returns valid credentials Value ChainProvider -// will cache that Provider for all calls to IsExpired(), until Retrieve is -// called again. -// -// Example of ChainProvider to be used with an EnvProvider and EC2RoleProvider. -// In this example EnvProvider will first check if any credentials are available -// vai the environment variables. If there are none ChainProvider will check -// the next Provider in the list, EC2RoleProvider in this case. If EC2RoleProvider -// does not return any credentials ChainProvider will return the error -// ErrNoValidProvidersFoundInChain -// -// creds := NewChainCredentials( -// []Provider{ -// &EnvProvider{}, -// &EC2RoleProvider{ -// Client: ec2metadata.New(sess), -// }, -// }) -// -// // Usage of ChainCredentials with aws.Config -// svc := ec2.New(&aws.Config{Credentials: creds}) -// -type ChainProvider struct { - Providers []Provider - curr Provider -} - -// NewChainCredentials returns a pointer to a new Credentials object -// wrapping a chain of providers. -func NewChainCredentials(providers []Provider) *Credentials { - return NewCredentials(&ChainProvider{ - Providers: append([]Provider{}, providers...), - }) -} - -// Retrieve returns the credentials value or error if no provider returned -// without error. -// -// If a provider is found it will be cached and any calls to IsExpired() -// will return the expired state of the cached provider. -func (c *ChainProvider) Retrieve() (Value, error) { - for _, p := range c.Providers { - if creds, err := p.Retrieve(); err == nil { - c.curr = p - return creds, nil - } - } - c.curr = nil - - // TODO better error reporting. maybe report error for each failed retrieve? - - return Value{}, ErrNoValidProvidersFoundInChain -} - -// IsExpired will returned the expired state of the currently cached provider -// if there is one. If there is no current provider, true will be returned. -func (c *ChainProvider) IsExpired() bool { - if c.curr != nil { - return c.curr.IsExpired() - } - - return true -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go deleted file mode 100644 index 5dd71f02..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go +++ /dev/null @@ -1,220 +0,0 @@ -// Package credentials provides credential retrieval and management -// -// The Credentials is the primary method of getting access to and managing -// credentials Values. Using dependency injection retrieval of the credential -// values is handled by a object which satisfies the Provider interface. -// -// By default the Credentials.Get() will cache the successful result of a -// Provider's Retrieve() until Provider.IsExpired() returns true. At which -// point Credentials will call Provider's Retrieve() to get new credential Value. -// -// The Provider is responsible for determining when credentials Value have expired. -// It is also important to note that Credentials will always call Retrieve the -// first time Credentials.Get() is called. -// -// Example of using the environment variable credentials. -// -// creds := NewEnvCredentials() -// -// // Retrieve the credentials value -// credValue, err := creds.Get() -// if err != nil { -// // handle error -// } -// -// Example of forcing credentials to expire and be refreshed on the next Get(). -// This may be helpful to proactively expire credentials and refresh them sooner -// than they would naturally expire on their own. -// -// creds := NewCredentials(&EC2RoleProvider{}) -// creds.Expire() -// credsValue, err := creds.Get() -// // New credentials will be retrieved instead of from cache. -// -// -// Custom Provider -// -// Each Provider built into this package also provides a helper method to generate -// a Credentials pointer setup with the provider. To use a custom Provider just -// create a type which satisfies the Provider interface and pass it to the -// NewCredentials method. -// -// type MyProvider struct{} -// func (m *MyProvider) Retrieve() (Value, error) {...} -// func (m *MyProvider) IsExpired() bool {...} -// -// creds := NewCredentials(&MyProvider{}) -// credValue, err := creds.Get() -// -package credentials - -import ( - "sync" - "time" -) - -// AnonymousCredentials is an empty Credential object that can be used as -// dummy placeholder credentials for requests that do not need signed. -// -// This Credentials can be used to configure a service to not sign requests -// when making service API calls. For example, when accessing public -// s3 buckets. -// -// svc := s3.New(&aws.Config{Credentials: AnonymousCredentials}) -// // Access public S3 buckets. -// -// @readonly -var AnonymousCredentials = NewStaticCredentials("", "", "") - -// A Value is the AWS credentials value for individual credential fields. -type Value struct { - // AWS Access key ID - AccessKeyID string - - // AWS Secret Access Key - SecretAccessKey string - - // AWS Session Token - SessionToken string -} - -// A Provider is the interface for any component which will provide credentials -// Value. A provider is required to manage its own Expired state, and what to -// be expired means. -// -// The Provider should not need to implement its own mutexes, because -// that will be managed by Credentials. -type Provider interface { - // Refresh returns nil if it successfully retrieved the value. - // Error is returned if the value were not obtainable, or empty. - Retrieve() (Value, error) - - // IsExpired returns if the credentials are no longer valid, and need - // to be retrieved. - IsExpired() bool -} - -// A Expiry provides shared expiration logic to be used by credentials -// providers to implement expiry functionality. -// -// The best method to use this struct is as an anonymous field within the -// provider's struct. -// -// Example: -// type EC2RoleProvider struct { -// Expiry -// ... -// } -type Expiry struct { - // The date/time when to expire on - expiration time.Time - - // If set will be used by IsExpired to determine the current time. - // Defaults to time.Now if CurrentTime is not set. Available for testing - // to be able to mock out the current time. - CurrentTime func() time.Time -} - -// SetExpiration sets the expiration IsExpired will check when called. -// -// If window is greater than 0 the expiration time will be reduced by the -// window value. -// -// Using a window is helpful to trigger credentials to expire sooner than -// the expiration time given to ensure no requests are made with expired -// tokens. -func (e *Expiry) SetExpiration(expiration time.Time, window time.Duration) { - e.expiration = expiration - if window > 0 { - e.expiration = e.expiration.Add(-window) - } -} - -// IsExpired returns if the credentials are expired. -func (e *Expiry) IsExpired() bool { - if e.CurrentTime == nil { - e.CurrentTime = time.Now - } - return e.expiration.Before(e.CurrentTime()) -} - -// A Credentials provides synchronous safe retrieval of AWS credentials Value. -// Credentials will cache the credentials value until they expire. Once the value -// expires the next Get will attempt to retrieve valid credentials. -// -// Credentials is safe to use across multiple goroutines and will manage the -// synchronous state so the Providers do not need to implement their own -// synchronization. -// -// The first Credentials.Get() will always call Provider.Retrieve() to get the -// first instance of the credentials Value. All calls to Get() after that -// will return the cached credentials Value until IsExpired() returns true. -type Credentials struct { - creds Value - forceRefresh bool - m sync.Mutex - - provider Provider -} - -// NewCredentials returns a pointer to a new Credentials with the provider set. -func NewCredentials(provider Provider) *Credentials { - return &Credentials{ - provider: provider, - forceRefresh: true, - } -} - -// Get returns the credentials value, or error if the credentials Value failed -// to be retrieved. -// -// Will return the cached credentials Value if it has not expired. If the -// credentials Value has expired the Provider's Retrieve() will be called -// to refresh the credentials. -// -// If Credentials.Expire() was called the credentials Value will be force -// expired, and the next call to Get() will cause them to be refreshed. -func (c *Credentials) Get() (Value, error) { - c.m.Lock() - defer c.m.Unlock() - - if c.isExpired() { - creds, err := c.provider.Retrieve() - if err != nil { - return Value{}, err - } - c.creds = creds - c.forceRefresh = false - } - - return c.creds, nil -} - -// Expire expires the credentials and forces them to be retrieved on the -// next call to Get(). -// -// This will override the Provider's expired state, and force Credentials -// to call the Provider's Retrieve(). -func (c *Credentials) Expire() { - c.m.Lock() - defer c.m.Unlock() - - c.forceRefresh = true -} - -// IsExpired returns if the credentials are no longer valid, and need -// to be retrieved. -// -// If the Credentials were forced to be expired with Expire() this will -// reflect that override. -func (c *Credentials) IsExpired() bool { - c.m.Lock() - defer c.m.Unlock() - - return c.isExpired() -} - -// isExpired helper method wrapping the definition of expired credentials. -func (c *Credentials) isExpired() bool { - return c.forceRefresh || c.provider.IsExpired() -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds/ec2_role_provider.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds/ec2_role_provider.go deleted file mode 100644 index 04c8921a..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds/ec2_role_provider.go +++ /dev/null @@ -1,174 +0,0 @@ -package ec2rolecreds - -import ( - "bufio" - "encoding/json" - "fmt" - "path" - "strings" - "time" - - "github.com/aws/aws-sdk-go/aws/awserr" - "github.com/aws/aws-sdk-go/aws/client" - "github.com/aws/aws-sdk-go/aws/credentials" - "github.com/aws/aws-sdk-go/aws/ec2metadata" -) - -// A EC2RoleProvider retrieves credentials from the EC2 service, and keeps track if -// those credentials are expired. -// -// Example how to configure the EC2RoleProvider with custom http Client, Endpoint -// or ExpiryWindow -// -// p := &ec2rolecreds.EC2RoleProvider{ -// // Pass in a custom timeout to be used when requesting -// // IAM EC2 Role credentials. -// Client: ec2metadata.New(sess, aws.Config{ -// HTTPClient: &http.Client{Timeout: 10 * time.Second}, -// }), -// -// // Do not use early expiry of credentials. If a non zero value is -// // specified the credentials will be expired early -// ExpiryWindow: 0, -// } -type EC2RoleProvider struct { - credentials.Expiry - - // Required EC2Metadata client to use when connecting to EC2 metadata service. - Client *ec2metadata.EC2Metadata - - // ExpiryWindow will allow the credentials to trigger refreshing prior to - // the credentials actually expiring. This is beneficial so race conditions - // with expiring credentials do not cause request to fail unexpectedly - // due to ExpiredTokenException exceptions. - // - // So a ExpiryWindow of 10s would cause calls to IsExpired() to return true - // 10 seconds before the credentials are actually expired. - // - // If ExpiryWindow is 0 or less it will be ignored. - ExpiryWindow time.Duration -} - -// NewCredentials returns a pointer to a new Credentials object wrapping -// the EC2RoleProvider. Takes a ConfigProvider to create a EC2Metadata client. -// The ConfigProvider is satisfied by the session.Session type. -func NewCredentials(c client.ConfigProvider, options ...func(*EC2RoleProvider)) *credentials.Credentials { - p := &EC2RoleProvider{ - Client: ec2metadata.New(c), - } - - for _, option := range options { - option(p) - } - - return credentials.NewCredentials(p) -} - -// NewCredentialsWithClient returns a pointer to a new Credentials object wrapping -// the EC2RoleProvider. Takes a EC2Metadata client to use when connecting to EC2 -// metadata service. -func NewCredentialsWithClient(client *ec2metadata.EC2Metadata, options ...func(*EC2RoleProvider)) *credentials.Credentials { - p := &EC2RoleProvider{ - Client: client, - } - - for _, option := range options { - option(p) - } - - return credentials.NewCredentials(p) -} - -// Retrieve retrieves credentials from the EC2 service. -// Error will be returned if the request fails, or unable to extract -// the desired credentials. -func (m *EC2RoleProvider) Retrieve() (credentials.Value, error) { - credsList, err := requestCredList(m.Client) - if err != nil { - return credentials.Value{}, err - } - - if len(credsList) == 0 { - return credentials.Value{}, awserr.New("EmptyEC2RoleList", "empty EC2 Role list", nil) - } - credsName := credsList[0] - - roleCreds, err := requestCred(m.Client, credsName) - if err != nil { - return credentials.Value{}, err - } - - m.SetExpiration(roleCreds.Expiration, m.ExpiryWindow) - - return credentials.Value{ - AccessKeyID: roleCreds.AccessKeyID, - SecretAccessKey: roleCreds.SecretAccessKey, - SessionToken: roleCreds.Token, - }, nil -} - -// A ec2RoleCredRespBody provides the shape for unmarshalling credential -// request responses. -type ec2RoleCredRespBody struct { - // Success State - Expiration time.Time - AccessKeyID string - SecretAccessKey string - Token string - - // Error state - Code string - Message string -} - -const iamSecurityCredsPath = "/iam/security-credentials" - -// requestCredList requests a list of credentials from the EC2 service. -// If there are no credentials, or there is an error making or receiving the request -func requestCredList(client *ec2metadata.EC2Metadata) ([]string, error) { - resp, err := client.GetMetadata(iamSecurityCredsPath) - if err != nil { - return nil, awserr.New("EC2RoleRequestError", "failed to list EC2 Roles", err) - } - - credsList := []string{} - s := bufio.NewScanner(strings.NewReader(resp)) - for s.Scan() { - credsList = append(credsList, s.Text()) - } - - if err := s.Err(); err != nil { - return nil, awserr.New("SerializationError", "failed to read list of EC2 Roles", err) - } - - return credsList, nil -} - -// requestCred requests the credentials for a specific credentials from the EC2 service. -// -// If the credentials cannot be found, or there is an error reading the response -// and error will be returned. -func requestCred(client *ec2metadata.EC2Metadata, credsName string) (ec2RoleCredRespBody, error) { - resp, err := client.GetMetadata(path.Join(iamSecurityCredsPath, credsName)) - if err != nil { - return ec2RoleCredRespBody{}, - awserr.New("EC2RoleRequestError", - fmt.Sprintf("failed to get %s EC2 Role credentials", credsName), - err) - } - - respCreds := ec2RoleCredRespBody{} - if err := json.NewDecoder(strings.NewReader(resp)).Decode(&respCreds); err != nil { - return ec2RoleCredRespBody{}, - awserr.New("SerializationError", - fmt.Sprintf("failed to decode %s EC2 Role credentials", credsName), - err) - } - - if respCreds.Code != "Success" { - // If an error code was returned something failed requesting the role. - return ec2RoleCredRespBody{}, awserr.New(respCreds.Code, respCreds.Message, nil) - } - - return respCreds, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/credentials/env_provider.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/credentials/env_provider.go deleted file mode 100644 index 043e861d..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/credentials/env_provider.go +++ /dev/null @@ -1,73 +0,0 @@ -package credentials - -import ( - "os" - - "github.com/aws/aws-sdk-go/aws/awserr" -) - -var ( - // ErrAccessKeyIDNotFound is returned when the AWS Access Key ID can't be - // found in the process's environment. - // - // @readonly - ErrAccessKeyIDNotFound = awserr.New("EnvAccessKeyNotFound", "AWS_ACCESS_KEY_ID or AWS_ACCESS_KEY not found in environment", nil) - - // ErrSecretAccessKeyNotFound is returned when the AWS Secret Access Key - // can't be found in the process's environment. - // - // @readonly - ErrSecretAccessKeyNotFound = awserr.New("EnvSecretNotFound", "AWS_SECRET_ACCESS_KEY or AWS_SECRET_KEY not found in environment", nil) -) - -// A EnvProvider retrieves credentials from the environment variables of the -// running process. Environment credentials never expire. -// -// Environment variables used: -// -// * Access Key ID: AWS_ACCESS_KEY_ID or AWS_ACCESS_KEY -// * Secret Access Key: AWS_SECRET_ACCESS_KEY or AWS_SECRET_KEY -type EnvProvider struct { - retrieved bool -} - -// NewEnvCredentials returns a pointer to a new Credentials object -// wrapping the environment variable provider. -func NewEnvCredentials() *Credentials { - return NewCredentials(&EnvProvider{}) -} - -// Retrieve retrieves the keys from the environment. -func (e *EnvProvider) Retrieve() (Value, error) { - e.retrieved = false - - id := os.Getenv("AWS_ACCESS_KEY_ID") - if id == "" { - id = os.Getenv("AWS_ACCESS_KEY") - } - - secret := os.Getenv("AWS_SECRET_ACCESS_KEY") - if secret == "" { - secret = os.Getenv("AWS_SECRET_KEY") - } - - if id == "" { - return Value{}, ErrAccessKeyIDNotFound - } - - if secret == "" { - return Value{}, ErrSecretAccessKeyNotFound - } - - e.retrieved = true - return Value{ - AccessKeyID: id, - SecretAccessKey: secret, - SessionToken: os.Getenv("AWS_SESSION_TOKEN"), - }, nil -} - -// IsExpired returns if the credentials have been retrieved. -func (e *EnvProvider) IsExpired() bool { - return !e.retrieved -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/credentials/example.ini b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/credentials/example.ini deleted file mode 100644 index 7fc91d9d..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/credentials/example.ini +++ /dev/null @@ -1,12 +0,0 @@ -[default] -aws_access_key_id = accessKey -aws_secret_access_key = secret -aws_session_token = token - -[no_token] -aws_access_key_id = accessKey -aws_secret_access_key = secret - -[with_colon] -aws_access_key_id: accessKey -aws_secret_access_key: secret diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/credentials/shared_credentials_provider.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/credentials/shared_credentials_provider.go deleted file mode 100644 index 09bd00a9..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/credentials/shared_credentials_provider.go +++ /dev/null @@ -1,147 +0,0 @@ -package credentials - -import ( - "fmt" - "os" - "path/filepath" - - "github.com/go-ini/ini" - - "github.com/aws/aws-sdk-go/aws/awserr" -) - -var ( - // ErrSharedCredentialsHomeNotFound is emitted when the user directory cannot be found. - // - // @readonly - ErrSharedCredentialsHomeNotFound = awserr.New("UserHomeNotFound", "user home directory not found.", nil) -) - -// A SharedCredentialsProvider retrieves credentials from the current user's home -// directory, and keeps track if those credentials are expired. -// -// Profile ini file example: $HOME/.aws/credentials -type SharedCredentialsProvider struct { - // Path to the shared credentials file. - // - // If empty will look for "AWS_SHARED_CREDENTIALS_FILE" env variable. If the - // env value is empty will default to current user's home directory. - // Linux/OSX: "$HOME/.aws/credentials" - // Windows: "%USERPROFILE%\.aws\credentials" - Filename string - - // AWS Profile to extract credentials from the shared credentials file. If empty - // will default to environment variable "AWS_PROFILE" or "default" if - // environment variable is also not set. - Profile string - - // retrieved states if the credentials have been successfully retrieved. - retrieved bool -} - -// NewSharedCredentials returns a pointer to a new Credentials object -// wrapping the Profile file provider. -func NewSharedCredentials(filename, profile string) *Credentials { - return NewCredentials(&SharedCredentialsProvider{ - Filename: filename, - Profile: profile, - }) -} - -// Retrieve reads and extracts the shared credentials from the current -// users home directory. -func (p *SharedCredentialsProvider) Retrieve() (Value, error) { - p.retrieved = false - - filename, err := p.filename() - if err != nil { - return Value{}, err - } - - creds, err := loadProfile(filename, p.profile()) - if err != nil { - return Value{}, err - } - - p.retrieved = true - return creds, nil -} - -// IsExpired returns if the shared credentials have expired. -func (p *SharedCredentialsProvider) IsExpired() bool { - return !p.retrieved -} - -// loadProfiles loads from the file pointed to by shared credentials filename for profile. -// The credentials retrieved from the profile will be returned or error. Error will be -// returned if it fails to read from the file, or the data is invalid. -func loadProfile(filename, profile string) (Value, error) { - config, err := ini.Load(filename) - if err != nil { - return Value{}, awserr.New("SharedCredsLoad", "failed to load shared credentials file", err) - } - iniProfile, err := config.GetSection(profile) - if err != nil { - return Value{}, awserr.New("SharedCredsLoad", "failed to get profile", err) - } - - id, err := iniProfile.GetKey("aws_access_key_id") - if err != nil { - return Value{}, awserr.New("SharedCredsAccessKey", - fmt.Sprintf("shared credentials %s in %s did not contain aws_access_key_id", profile, filename), - err) - } - - secret, err := iniProfile.GetKey("aws_secret_access_key") - if err != nil { - return Value{}, awserr.New("SharedCredsSecret", - fmt.Sprintf("shared credentials %s in %s did not contain aws_secret_access_key", profile, filename), - nil) - } - - // Default to empty string if not found - token := iniProfile.Key("aws_session_token") - - return Value{ - AccessKeyID: id.String(), - SecretAccessKey: secret.String(), - SessionToken: token.String(), - }, nil -} - -// filename returns the filename to use to read AWS shared credentials. -// -// Will return an error if the user's home directory path cannot be found. -func (p *SharedCredentialsProvider) filename() (string, error) { - if p.Filename == "" { - if p.Filename = os.Getenv("AWS_SHARED_CREDENTIALS_FILE"); p.Filename != "" { - return p.Filename, nil - } - - homeDir := os.Getenv("HOME") // *nix - if homeDir == "" { // Windows - homeDir = os.Getenv("USERPROFILE") - } - if homeDir == "" { - return "", ErrSharedCredentialsHomeNotFound - } - - p.Filename = filepath.Join(homeDir, ".aws", "credentials") - } - - return p.Filename, nil -} - -// profile returns the AWS shared credentials profile. If empty will read -// environment variable "AWS_PROFILE". If that is not set profile will -// return "default". -func (p *SharedCredentialsProvider) profile() string { - if p.Profile == "" { - p.Profile = os.Getenv("AWS_PROFILE") - } - if p.Profile == "" { - p.Profile = "default" - } - - return p.Profile -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/credentials/static_provider.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/credentials/static_provider.go deleted file mode 100644 index 530a9ac2..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/credentials/static_provider.go +++ /dev/null @@ -1,44 +0,0 @@ -package credentials - -import ( - "github.com/aws/aws-sdk-go/aws/awserr" -) - -var ( - // ErrStaticCredentialsEmpty is emitted when static credentials are empty. - // - // @readonly - ErrStaticCredentialsEmpty = awserr.New("EmptyStaticCreds", "static credentials are empty", nil) -) - -// A StaticProvider is a set of credentials which are set pragmatically, -// and will never expire. -type StaticProvider struct { - Value -} - -// NewStaticCredentials returns a pointer to a new Credentials object -// wrapping a static credentials value provider. -func NewStaticCredentials(id, secret, token string) *Credentials { - return NewCredentials(&StaticProvider{Value: Value{ - AccessKeyID: id, - SecretAccessKey: secret, - SessionToken: token, - }}) -} - -// Retrieve returns the credentials or error if the credentials are invalid. -func (s *StaticProvider) Retrieve() (Value, error) { - if s.AccessKeyID == "" || s.SecretAccessKey == "" { - return Value{}, ErrStaticCredentialsEmpty - } - - return s.Value, nil -} - -// IsExpired returns if the credentials are expired. -// -// For StaticProvider, the credentials never expired. -func (s *StaticProvider) IsExpired() bool { - return false -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/defaults/defaults.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/defaults/defaults.go deleted file mode 100644 index 50f831c8..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/defaults/defaults.go +++ /dev/null @@ -1,95 +0,0 @@ -// Package defaults is a collection of helpers to retrieve the SDK's default -// configuration and handlers. -// -// Generally this package shouldn't be used directly, but session.Session -// instead. This package is useful when you need to reset the defaults -// of a session or service client to the SDK defaults before setting -// additional parameters. -package defaults - -import ( - "net/http" - "os" - "time" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/corehandlers" - "github.com/aws/aws-sdk-go/aws/credentials" - "github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds" - "github.com/aws/aws-sdk-go/aws/ec2metadata" - "github.com/aws/aws-sdk-go/aws/request" - "github.com/aws/aws-sdk-go/private/endpoints" -) - -// A Defaults provides a collection of default values for SDK clients. -type Defaults struct { - Config *aws.Config - Handlers request.Handlers -} - -// Get returns the SDK's default values with Config and handlers pre-configured. -func Get() Defaults { - cfg := Config() - handlers := Handlers() - cfg.Credentials = CredChain(cfg, handlers) - - return Defaults{ - Config: cfg, - Handlers: handlers, - } -} - -// Config returns the default configuration without credentials. -// To retrieve a config with credentials also included use -// `defaults.Get().Config` instead. -// -// Generally you shouldn't need to use this method directly, but -// is available if you need to reset the configuration of an -// existing service client or session. -func Config() *aws.Config { - return aws.NewConfig(). - WithCredentials(credentials.AnonymousCredentials). - WithRegion(os.Getenv("AWS_REGION")). - WithHTTPClient(http.DefaultClient). - WithMaxRetries(aws.UseServiceDefaultRetries). - WithLogger(aws.NewDefaultLogger()). - WithLogLevel(aws.LogOff). - WithSleepDelay(time.Sleep) -} - -// Handlers returns the default request handlers. -// -// Generally you shouldn't need to use this method directly, but -// is available if you need to reset the request handlers of an -// existing service client or session. -func Handlers() request.Handlers { - var handlers request.Handlers - - handlers.Validate.PushBackNamed(corehandlers.ValidateEndpointHandler) - handlers.Build.PushBackNamed(corehandlers.SDKVersionUserAgentHandler) - handlers.Sign.PushBackNamed(corehandlers.BuildContentLengthHandler) - handlers.Send.PushBackNamed(corehandlers.SendHandler) - handlers.AfterRetry.PushBackNamed(corehandlers.AfterRetryHandler) - handlers.ValidateResponse.PushBackNamed(corehandlers.ValidateResponseHandler) - - return handlers -} - -// CredChain returns the default credential chain. -// -// Generally you shouldn't need to use this method directly, but -// is available if you need to reset the credentials of an -// existing service client or session's Config. -func CredChain(cfg *aws.Config, handlers request.Handlers) *credentials.Credentials { - endpoint, signingRegion := endpoints.EndpointForRegion(ec2metadata.ServiceName, *cfg.Region, true) - - return credentials.NewChainCredentials( - []credentials.Provider{ - &credentials.EnvProvider{}, - &credentials.SharedCredentialsProvider{Filename: "", Profile: ""}, - &ec2rolecreds.EC2RoleProvider{ - Client: ec2metadata.NewClient(*cfg, handlers, endpoint, signingRegion), - ExpiryWindow: 5 * time.Minute, - }, - }) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/api.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/api.go deleted file mode 100644 index e5137ca1..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/api.go +++ /dev/null @@ -1,43 +0,0 @@ -package ec2metadata - -import ( - "path" - - "github.com/aws/aws-sdk-go/aws/request" -) - -// GetMetadata uses the path provided to request -func (c *EC2Metadata) GetMetadata(p string) (string, error) { - op := &request.Operation{ - Name: "GetMetadata", - HTTPMethod: "GET", - HTTPPath: path.Join("/", "meta-data", p), - } - - output := &metadataOutput{} - req := c.NewRequest(op, nil, output) - - return output.Content, req.Send() -} - -// Region returns the region the instance is running in. -func (c *EC2Metadata) Region() (string, error) { - resp, err := c.GetMetadata("placement/availability-zone") - if err != nil { - return "", err - } - - // returns region without the suffix. Eg: us-west-2a becomes us-west-2 - return resp[:len(resp)-1], nil -} - -// Available returns if the application has access to the EC2 Metadata service. -// Can be used to determine if application is running within an EC2 Instance and -// the metadata service is available. -func (c *EC2Metadata) Available() bool { - if _, err := c.GetMetadata("instance-id"); err != nil { - return false - } - - return true -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go deleted file mode 100644 index f0dc331e..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go +++ /dev/null @@ -1,116 +0,0 @@ -// Package ec2metadata provides the client for making API calls to the -// EC2 Metadata service. -package ec2metadata - -import ( - "io/ioutil" - "net" - "net/http" - "time" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/awserr" - "github.com/aws/aws-sdk-go/aws/client" - "github.com/aws/aws-sdk-go/aws/client/metadata" - "github.com/aws/aws-sdk-go/aws/request" -) - -// ServiceName is the name of the service. -const ServiceName = "ec2metadata" - -// A EC2Metadata is an EC2 Metadata service Client. -type EC2Metadata struct { - *client.Client -} - -// New creates a new instance of the EC2Metadata client with a session. -// This client is safe to use across multiple goroutines. -// -// Example: -// // Create a EC2Metadata client from just a session. -// svc := ec2metadata.New(mySession) -// -// // Create a EC2Metadata client with additional configuration -// svc := ec2metadata.New(mySession, aws.NewConfig().WithLogLevel(aws.LogDebugHTTPBody)) -func New(p client.ConfigProvider, cfgs ...*aws.Config) *EC2Metadata { - c := p.ClientConfig(ServiceName, cfgs...) - return NewClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion) -} - -// NewClient returns a new EC2Metadata client. Should be used to create -// a client when not using a session. Generally using just New with a session -// is preferred. -func NewClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string, opts ...func(*client.Client)) *EC2Metadata { - // If the default http client is provided, replace it with a custom - // client using default timeouts. - if cfg.HTTPClient == http.DefaultClient { - cfg.HTTPClient = &http.Client{ - Transport: &http.Transport{ - Proxy: http.ProxyFromEnvironment, - Dial: (&net.Dialer{ - // use a shorter timeout than default because the metadata - // service is local if it is running, and to fail faster - // if not running on an ec2 instance. - Timeout: 5 * time.Second, - KeepAlive: 30 * time.Second, - }).Dial, - TLSHandshakeTimeout: 10 * time.Second, - }, - } - } - - svc := &EC2Metadata{ - Client: client.New( - cfg, - metadata.ClientInfo{ - ServiceName: ServiceName, - Endpoint: endpoint, - APIVersion: "latest", - }, - handlers, - ), - } - - svc.Handlers.Unmarshal.PushBack(unmarshalHandler) - svc.Handlers.UnmarshalError.PushBack(unmarshalError) - svc.Handlers.Validate.Clear() - svc.Handlers.Validate.PushBack(validateEndpointHandler) - - // Add additional options to the service config - for _, option := range opts { - option(svc.Client) - } - - return svc -} - -type metadataOutput struct { - Content string -} - -func unmarshalHandler(r *request.Request) { - defer r.HTTPResponse.Body.Close() - b, err := ioutil.ReadAll(r.HTTPResponse.Body) - if err != nil { - r.Error = awserr.New("SerializationError", "unable to unmarshal EC2 metadata respose", err) - } - - data := r.Data.(*metadataOutput) - data.Content = string(b) -} - -func unmarshalError(r *request.Request) { - defer r.HTTPResponse.Body.Close() - _, err := ioutil.ReadAll(r.HTTPResponse.Body) - if err != nil { - r.Error = awserr.New("SerializationError", "unable to unmarshal EC2 metadata error respose", err) - } - - // TODO extract the error... -} - -func validateEndpointHandler(r *request.Request) { - if r.ClientInfo.Endpoint == "" { - r.Error = aws.ErrMissingEndpoint - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/errors.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/errors.go deleted file mode 100644 index 57663616..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/errors.go +++ /dev/null @@ -1,17 +0,0 @@ -package aws - -import "github.com/aws/aws-sdk-go/aws/awserr" - -var ( - // ErrMissingRegion is an error that is returned if region configuration is - // not found. - // - // @readonly - ErrMissingRegion = awserr.New("MissingRegion", "could not find region configuration", nil) - - // ErrMissingEndpoint is an error that is returned if an endpoint cannot be - // resolved for a service. - // - // @readonly - ErrMissingEndpoint = awserr.New("MissingEndpoint", "'Endpoint' configuration is required for this service", nil) -) diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/logger.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/logger.go deleted file mode 100644 index f5369487..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/logger.go +++ /dev/null @@ -1,98 +0,0 @@ -package aws - -import ( - "log" - "os" -) - -// A LogLevelType defines the level logging should be performed at. Used to instruct -// the SDK which statements should be logged. -type LogLevelType uint - -// LogLevel returns the pointer to a LogLevel. Should be used to workaround -// not being able to take the address of a non-composite literal. -func LogLevel(l LogLevelType) *LogLevelType { - return &l -} - -// Value returns the LogLevel value or the default value LogOff if the LogLevel -// is nil. Safe to use on nil value LogLevelTypes. -func (l *LogLevelType) Value() LogLevelType { - if l != nil { - return *l - } - return LogOff -} - -// Matches returns true if the v LogLevel is enabled by this LogLevel. Should be -// used with logging sub levels. Is safe to use on nil value LogLevelTypes. If -// LogLevel is nill, will default to LogOff comparison. -func (l *LogLevelType) Matches(v LogLevelType) bool { - c := l.Value() - return c&v == v -} - -// AtLeast returns true if this LogLevel is at least high enough to satisfies v. -// Is safe to use on nil value LogLevelTypes. If LogLevel is nill, will default -// to LogOff comparison. -func (l *LogLevelType) AtLeast(v LogLevelType) bool { - c := l.Value() - return c >= v -} - -const ( - // LogOff states that no logging should be performed by the SDK. This is the - // default state of the SDK, and should be use to disable all logging. - LogOff LogLevelType = iota * 0x1000 - - // LogDebug state that debug output should be logged by the SDK. This should - // be used to inspect request made and responses received. - LogDebug -) - -// Debug Logging Sub Levels -const ( - // LogDebugWithSigning states that the SDK should log request signing and - // presigning events. This should be used to log the signing details of - // requests for debugging. Will also enable LogDebug. - LogDebugWithSigning LogLevelType = LogDebug | (1 << iota) - - // LogDebugWithHTTPBody states the SDK should log HTTP request and response - // HTTP bodys in addition to the headers and path. This should be used to - // see the body content of requests and responses made while using the SDK - // Will also enable LogDebug. - LogDebugWithHTTPBody - - // LogDebugWithRequestRetries states the SDK should log when service requests will - // be retried. This should be used to log when you want to log when service - // requests are being retried. Will also enable LogDebug. - LogDebugWithRequestRetries - - // LogDebugWithRequestErrors states the SDK should log when service requests fail - // to build, send, validate, or unmarshal. - LogDebugWithRequestErrors -) - -// A Logger is a minimalistic interface for the SDK to log messages to. Should -// be used to provide custom logging writers for the SDK to use. -type Logger interface { - Log(...interface{}) -} - -// NewDefaultLogger returns a Logger which will write log messages to stdout, and -// use same formatting runes as the stdlib log.Logger -func NewDefaultLogger() Logger { - return &defaultLogger{ - logger: log.New(os.Stdout, "", log.LstdFlags), - } -} - -// A defaultLogger provides a minimalistic logger satisfying the Logger interface. -type defaultLogger struct { - logger *log.Logger -} - -// Log logs the parameters to the stdlib logger. See log.Println. -func (l defaultLogger) Log(args ...interface{}) { - l.logger.Println(args...) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/request/handlers.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/request/handlers.go deleted file mode 100644 index 3e90a797..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/request/handlers.go +++ /dev/null @@ -1,140 +0,0 @@ -package request - -import ( - "fmt" - "strings" -) - -// A Handlers provides a collection of request handlers for various -// stages of handling requests. -type Handlers struct { - Validate HandlerList - Build HandlerList - Sign HandlerList - Send HandlerList - ValidateResponse HandlerList - Unmarshal HandlerList - UnmarshalMeta HandlerList - UnmarshalError HandlerList - Retry HandlerList - AfterRetry HandlerList -} - -// Copy returns of this handler's lists. -func (h *Handlers) Copy() Handlers { - return Handlers{ - Validate: h.Validate.copy(), - Build: h.Build.copy(), - Sign: h.Sign.copy(), - Send: h.Send.copy(), - ValidateResponse: h.ValidateResponse.copy(), - Unmarshal: h.Unmarshal.copy(), - UnmarshalError: h.UnmarshalError.copy(), - UnmarshalMeta: h.UnmarshalMeta.copy(), - Retry: h.Retry.copy(), - AfterRetry: h.AfterRetry.copy(), - } -} - -// Clear removes callback functions for all handlers -func (h *Handlers) Clear() { - h.Validate.Clear() - h.Build.Clear() - h.Send.Clear() - h.Sign.Clear() - h.Unmarshal.Clear() - h.UnmarshalMeta.Clear() - h.UnmarshalError.Clear() - h.ValidateResponse.Clear() - h.Retry.Clear() - h.AfterRetry.Clear() -} - -// A HandlerList manages zero or more handlers in a list. -type HandlerList struct { - list []NamedHandler -} - -// A NamedHandler is a struct that contains a name and function callback. -type NamedHandler struct { - Name string - Fn func(*Request) -} - -// copy creates a copy of the handler list. -func (l *HandlerList) copy() HandlerList { - var n HandlerList - n.list = append([]NamedHandler{}, l.list...) - return n -} - -// Clear clears the handler list. -func (l *HandlerList) Clear() { - l.list = []NamedHandler{} -} - -// Len returns the number of handlers in the list. -func (l *HandlerList) Len() int { - return len(l.list) -} - -// PushBack pushes handler f to the back of the handler list. -func (l *HandlerList) PushBack(f func(*Request)) { - l.list = append(l.list, NamedHandler{"__anonymous", f}) -} - -// PushFront pushes handler f to the front of the handler list. -func (l *HandlerList) PushFront(f func(*Request)) { - l.list = append([]NamedHandler{{"__anonymous", f}}, l.list...) -} - -// PushBackNamed pushes named handler f to the back of the handler list. -func (l *HandlerList) PushBackNamed(n NamedHandler) { - l.list = append(l.list, n) -} - -// PushFrontNamed pushes named handler f to the front of the handler list. -func (l *HandlerList) PushFrontNamed(n NamedHandler) { - l.list = append([]NamedHandler{n}, l.list...) -} - -// Remove removes a NamedHandler n -func (l *HandlerList) Remove(n NamedHandler) { - newlist := []NamedHandler{} - for _, m := range l.list { - if m.Name != n.Name { - newlist = append(newlist, m) - } - } - l.list = newlist -} - -// Run executes all handlers in the list with a given request object. -func (l *HandlerList) Run(r *Request) { - for _, f := range l.list { - f.Fn(r) - } -} - -// MakeAddToUserAgentHandler will add the name/version pair to the User-Agent request -// header. If the extra parameters are provided they will be added as metadata to the -// name/version pair resulting in the following format. -// "name/version (extra0; extra1; ...)" -// The user agent part will be concatenated with this current request's user agent string. -func MakeAddToUserAgentHandler(name, version string, extra ...string) func(*Request) { - ua := fmt.Sprintf("%s/%s", name, version) - if len(extra) > 0 { - ua += fmt.Sprintf(" (%s)", strings.Join(extra, "; ")) - } - return func(r *Request) { - AddToUserAgent(r, ua) - } -} - -// MakeAddToUserAgentFreeFormHandler adds the input to the User-Agent request header. -// The input string will be concatenated with the current request's user agent string. -func MakeAddToUserAgentFreeFormHandler(s string) func(*Request) { - return func(r *Request) { - AddToUserAgent(r, s) - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/request/request.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/request/request.go deleted file mode 100644 index 3735d7fa..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/request/request.go +++ /dev/null @@ -1,279 +0,0 @@ -package request - -import ( - "bytes" - "fmt" - "io" - "io/ioutil" - "net/http" - "net/url" - "reflect" - "strings" - "time" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/client/metadata" -) - -// A Request is the service request to be made. -type Request struct { - Config aws.Config - ClientInfo metadata.ClientInfo - Handlers Handlers - - Retryer - Time time.Time - ExpireTime time.Duration - Operation *Operation - HTTPRequest *http.Request - HTTPResponse *http.Response - Body io.ReadSeeker - BodyStart int64 // offset from beginning of Body that the request body starts - Params interface{} - Error error - Data interface{} - RequestID string - RetryCount int - Retryable *bool - RetryDelay time.Duration - - built bool -} - -// An Operation is the service API operation to be made. -type Operation struct { - Name string - HTTPMethod string - HTTPPath string - *Paginator -} - -// Paginator keeps track of pagination configuration for an API operation. -type Paginator struct { - InputTokens []string - OutputTokens []string - LimitToken string - TruncationToken string -} - -// New returns a new Request pointer for the service API -// operation and parameters. -// -// Params is any value of input parameters to be the request payload. -// Data is pointer value to an object which the request's response -// payload will be deserialized to. -func New(cfg aws.Config, clientInfo metadata.ClientInfo, handlers Handlers, - retryer Retryer, operation *Operation, params interface{}, data interface{}) *Request { - - method := operation.HTTPMethod - if method == "" { - method = "POST" - } - p := operation.HTTPPath - if p == "" { - p = "/" - } - - httpReq, _ := http.NewRequest(method, "", nil) - httpReq.URL, _ = url.Parse(clientInfo.Endpoint + p) - - r := &Request{ - Config: cfg, - ClientInfo: clientInfo, - Handlers: handlers.Copy(), - - Retryer: retryer, - Time: time.Now(), - ExpireTime: 0, - Operation: operation, - HTTPRequest: httpReq, - Body: nil, - Params: params, - Error: nil, - Data: data, - } - r.SetBufferBody([]byte{}) - - return r -} - -// WillRetry returns if the request's can be retried. -func (r *Request) WillRetry() bool { - return r.Error != nil && aws.BoolValue(r.Retryable) && r.RetryCount < r.MaxRetries() -} - -// ParamsFilled returns if the request's parameters have been populated -// and the parameters are valid. False is returned if no parameters are -// provided or invalid. -func (r *Request) ParamsFilled() bool { - return r.Params != nil && reflect.ValueOf(r.Params).Elem().IsValid() -} - -// DataFilled returns true if the request's data for response deserialization -// target has been set and is a valid. False is returned if data is not -// set, or is invalid. -func (r *Request) DataFilled() bool { - return r.Data != nil && reflect.ValueOf(r.Data).Elem().IsValid() -} - -// SetBufferBody will set the request's body bytes that will be sent to -// the service API. -func (r *Request) SetBufferBody(buf []byte) { - r.SetReaderBody(bytes.NewReader(buf)) -} - -// SetStringBody sets the body of the request to be backed by a string. -func (r *Request) SetStringBody(s string) { - r.SetReaderBody(strings.NewReader(s)) -} - -// SetReaderBody will set the request's body reader. -func (r *Request) SetReaderBody(reader io.ReadSeeker) { - r.HTTPRequest.Body = ioutil.NopCloser(reader) - r.Body = reader -} - -// Presign returns the request's signed URL. Error will be returned -// if the signing fails. -func (r *Request) Presign(expireTime time.Duration) (string, error) { - r.ExpireTime = expireTime - r.Sign() - if r.Error != nil { - return "", r.Error - } - return r.HTTPRequest.URL.String(), nil -} - -func debugLogReqError(r *Request, stage string, retrying bool, err error) { - if !r.Config.LogLevel.Matches(aws.LogDebugWithRequestErrors) { - return - } - - retryStr := "not retrying" - if retrying { - retryStr = "will retry" - } - - r.Config.Logger.Log(fmt.Sprintf("DEBUG: %s %s/%s failed, %s, error %v", - stage, r.ClientInfo.ServiceName, r.Operation.Name, retryStr, err)) -} - -// Build will build the request's object so it can be signed and sent -// to the service. Build will also validate all the request's parameters. -// Anny additional build Handlers set on this request will be run -// in the order they were set. -// -// The request will only be built once. Multiple calls to build will have -// no effect. -// -// If any Validate or Build errors occur the build will stop and the error -// which occurred will be returned. -func (r *Request) Build() error { - if !r.built { - r.Error = nil - r.Handlers.Validate.Run(r) - if r.Error != nil { - debugLogReqError(r, "Validate Request", false, r.Error) - return r.Error - } - r.Handlers.Build.Run(r) - r.built = true - } - - return r.Error -} - -// Sign will sign the request retuning error if errors are encountered. -// -// Send will build the request prior to signing. All Sign Handlers will -// be executed in the order they were set. -func (r *Request) Sign() error { - r.Build() - if r.Error != nil { - debugLogReqError(r, "Build Request", false, r.Error) - return r.Error - } - - r.Handlers.Sign.Run(r) - return r.Error -} - -// Send will send the request returning error if errors are encountered. -// -// Send will sign the request prior to sending. All Send Handlers will -// be executed in the order they were set. -func (r *Request) Send() error { - for { - r.Sign() - if r.Error != nil { - return r.Error - } - - if aws.BoolValue(r.Retryable) { - if r.Config.LogLevel.Matches(aws.LogDebugWithRequestRetries) { - r.Config.Logger.Log(fmt.Sprintf("DEBUG: Retrying Request %s/%s, attempt %d", - r.ClientInfo.ServiceName, r.Operation.Name, r.RetryCount)) - } - - // Re-seek the body back to the original point in for a retry so that - // send will send the body's contents again in the upcoming request. - r.Body.Seek(r.BodyStart, 0) - r.HTTPRequest.Body = ioutil.NopCloser(r.Body) - } - r.Retryable = nil - - r.Handlers.Send.Run(r) - if r.Error != nil { - err := r.Error - r.Handlers.Retry.Run(r) - r.Handlers.AfterRetry.Run(r) - if r.Error != nil { - debugLogReqError(r, "Send Request", false, r.Error) - return r.Error - } - debugLogReqError(r, "Send Request", true, err) - continue - } - - r.Handlers.UnmarshalMeta.Run(r) - r.Handlers.ValidateResponse.Run(r) - if r.Error != nil { - err := r.Error - r.Handlers.UnmarshalError.Run(r) - r.Handlers.Retry.Run(r) - r.Handlers.AfterRetry.Run(r) - if r.Error != nil { - debugLogReqError(r, "Validate Response", false, r.Error) - return r.Error - } - debugLogReqError(r, "Validate Response", true, err) - continue - } - - r.Handlers.Unmarshal.Run(r) - if r.Error != nil { - err := r.Error - r.Handlers.Retry.Run(r) - r.Handlers.AfterRetry.Run(r) - if r.Error != nil { - debugLogReqError(r, "Unmarshal Response", false, r.Error) - return r.Error - } - debugLogReqError(r, "Unmarshal Response", true, err) - continue - } - - break - } - - return nil -} - -// AddToUserAgent adds the string to the end of the request's current user agent. -func AddToUserAgent(r *Request, s string) { - curUA := r.HTTPRequest.Header.Get("User-Agent") - if len(curUA) > 0 { - s = curUA + " " + s - } - r.HTTPRequest.Header.Set("User-Agent", s) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/request/request_pagination.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/request/request_pagination.go deleted file mode 100644 index 2939ec47..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/request/request_pagination.go +++ /dev/null @@ -1,104 +0,0 @@ -package request - -import ( - "reflect" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/awsutil" -) - -//type Paginater interface { -// HasNextPage() bool -// NextPage() *Request -// EachPage(fn func(data interface{}, isLastPage bool) (shouldContinue bool)) error -//} - -// HasNextPage returns true if this request has more pages of data available. -func (r *Request) HasNextPage() bool { - return len(r.nextPageTokens()) > 0 -} - -// nextPageTokens returns the tokens to use when asking for the next page of -// data. -func (r *Request) nextPageTokens() []interface{} { - if r.Operation.Paginator == nil { - return nil - } - - if r.Operation.TruncationToken != "" { - tr, _ := awsutil.ValuesAtPath(r.Data, r.Operation.TruncationToken) - if len(tr) == 0 { - return nil - } - - switch v := tr[0].(type) { - case *bool: - if !aws.BoolValue(v) { - return nil - } - case bool: - if v == false { - return nil - } - } - } - - tokens := []interface{}{} - tokenAdded := false - for _, outToken := range r.Operation.OutputTokens { - v, _ := awsutil.ValuesAtPath(r.Data, outToken) - if len(v) > 0 { - tokens = append(tokens, v[0]) - tokenAdded = true - } else { - tokens = append(tokens, nil) - } - } - if !tokenAdded { - return nil - } - - return tokens -} - -// NextPage returns a new Request that can be executed to return the next -// page of result data. Call .Send() on this request to execute it. -func (r *Request) NextPage() *Request { - tokens := r.nextPageTokens() - if len(tokens) == 0 { - return nil - } - - data := reflect.New(reflect.TypeOf(r.Data).Elem()).Interface() - nr := New(r.Config, r.ClientInfo, r.Handlers, r.Retryer, r.Operation, awsutil.CopyOf(r.Params), data) - for i, intok := range nr.Operation.InputTokens { - awsutil.SetValueAtPath(nr.Params, intok, tokens[i]) - } - return nr -} - -// EachPage iterates over each page of a paginated request object. The fn -// parameter should be a function with the following sample signature: -// -// func(page *T, lastPage bool) bool { -// return true // return false to stop iterating -// } -// -// Where "T" is the structure type matching the output structure of the given -// operation. For example, a request object generated by -// DynamoDB.ListTablesRequest() would expect to see dynamodb.ListTablesOutput -// as the structure "T". The lastPage value represents whether the page is -// the last page of data or not. The return value of this function should -// return true to keep iterating or false to stop. -func (r *Request) EachPage(fn func(data interface{}, isLastPage bool) (shouldContinue bool)) error { - for page := r; page != nil; page = page.NextPage() { - if err := page.Send(); err != nil { - return err - } - if getNextPage := fn(page.Data, !page.HasNextPage()); !getNextPage { - return page.Error - } - } - - return nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/request/retryer.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/request/retryer.go deleted file mode 100644 index ab6fff5a..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/request/retryer.go +++ /dev/null @@ -1,82 +0,0 @@ -package request - -import ( - "time" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/awserr" -) - -// Retryer is an interface to control retry logic for a given service. -// The default implementation used by most services is the service.DefaultRetryer -// structure, which contains basic retry logic using exponential backoff. -type Retryer interface { - RetryRules(*Request) time.Duration - ShouldRetry(*Request) bool - MaxRetries() int -} - -// WithRetryer sets a config Retryer value to the given Config returning it -// for chaining. -func WithRetryer(cfg *aws.Config, retryer Retryer) *aws.Config { - cfg.Retryer = retryer - return cfg -} - -// retryableCodes is a collection of service response codes which are retry-able -// without any further action. -var retryableCodes = map[string]struct{}{ - "RequestError": {}, - "RequestTimeout": {}, - "ProvisionedThroughputExceededException": {}, - "Throttling": {}, - "ThrottlingException": {}, - "RequestLimitExceeded": {}, - "RequestThrottled": {}, - "LimitExceededException": {}, // Deleting 10+ DynamoDb tables at once - "TooManyRequestsException": {}, // Lambda functions -} - -// credsExpiredCodes is a collection of error codes which signify the credentials -// need to be refreshed. Expired tokens require refreshing of credentials, and -// resigning before the request can be retried. -var credsExpiredCodes = map[string]struct{}{ - "ExpiredToken": {}, - "ExpiredTokenException": {}, - "RequestExpired": {}, // EC2 Only -} - -func isCodeRetryable(code string) bool { - if _, ok := retryableCodes[code]; ok { - return true - } - - return isCodeExpiredCreds(code) -} - -func isCodeExpiredCreds(code string) bool { - _, ok := credsExpiredCodes[code] - return ok -} - -// IsErrorRetryable returns whether the error is retryable, based on its Code. -// Returns false if the request has no Error set. -func (r *Request) IsErrorRetryable() bool { - if r.Error != nil { - if err, ok := r.Error.(awserr.Error); ok { - return isCodeRetryable(err.Code()) - } - } - return false -} - -// IsErrorExpired returns whether the error code is a credential expiry error. -// Returns false if the request has no Error set. -func (r *Request) IsErrorExpired() bool { - if r.Error != nil { - if err, ok := r.Error.(awserr.Error); ok { - return isCodeExpiredCreds(err.Code()) - } - } - return false -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/session/session.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/session/session.go deleted file mode 100644 index 6a0f371a..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/session/session.go +++ /dev/null @@ -1,111 +0,0 @@ -// Package session provides a way to create service clients with shared configuration -// and handlers. -// -// Generally this package should be used instead of the `defaults` package. -// -// A session should be used to share configurations and request handlers between multiple -// service clients. When service clients need specific configuration aws.Config can be -// used to provide additional configuration directly to the service client. -package session - -import ( - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/client" - "github.com/aws/aws-sdk-go/aws/corehandlers" - "github.com/aws/aws-sdk-go/aws/defaults" - "github.com/aws/aws-sdk-go/aws/request" - "github.com/aws/aws-sdk-go/private/endpoints" -) - -// A Session provides a central location to create service clients from and -// store configurations and request handlers for those services. -// -// Sessions are safe to create service clients concurrently, but it is not safe -// to mutate the session concurrently. -type Session struct { - Config *aws.Config - Handlers request.Handlers -} - -// New creates a new instance of the handlers merging in the provided Configs -// on top of the SDK's default configurations. Once the session is created it -// can be mutated to modify Configs or Handlers. The session is safe to be read -// concurrently, but it should not be written to concurrently. -// -// Example: -// // Create a session with the default config and request handlers. -// sess := session.New() -// -// // Create a session with a custom region -// sess := session.New(&aws.Config{Region: aws.String("us-east-1")}) -// -// // Create a session, and add additional handlers for all service -// // clients created with the session to inherit. Adds logging handler. -// sess := session.New() -// sess.Handlers.Send.PushFront(func(r *request.Request) { -// // Log every request made and its payload -// logger.Println("Request: %s/%s, Payload: %s", r.ClientInfo.ServiceName, r.Operation, r.Params) -// }) -// -// // Create a S3 client instance from a session -// sess := session.New() -// svc := s3.New(sess) -func New(cfgs ...*aws.Config) *Session { - def := defaults.Get() - s := &Session{ - Config: def.Config, - Handlers: def.Handlers, - } - s.Config.MergeIn(cfgs...) - - initHandlers(s) - - return s -} - -func initHandlers(s *Session) { - // Add the Validate parameter handler if it is not disabled. - s.Handlers.Validate.Remove(corehandlers.ValidateParametersHandler) - if !aws.BoolValue(s.Config.DisableParamValidation) { - s.Handlers.Validate.PushBackNamed(corehandlers.ValidateParametersHandler) - } -} - -// Copy creates and returns a copy of the current session, coping the config -// and handlers. If any additional configs are provided they will be merged -// on top of the session's copied config. -// -// Example: -// // Create a copy of the current session, configured for the us-west-2 region. -// sess.Copy(&aws.Config{Region: aws.String("us-west-2"}) -func (s *Session) Copy(cfgs ...*aws.Config) *Session { - newSession := &Session{ - Config: s.Config.Copy(cfgs...), - Handlers: s.Handlers.Copy(), - } - - initHandlers(newSession) - - return newSession -} - -// ClientConfig satisfies the client.ConfigProvider interface and is used to -// configure the service client instances. Passing the Session to the service -// client's constructor (New) will use this method to configure the client. -// -// Example: -// sess := session.New() -// s3.New(sess) -func (s *Session) ClientConfig(serviceName string, cfgs ...*aws.Config) client.Config { - s = s.Copy(cfgs...) - endpoint, signingRegion := endpoints.NormalizeEndpoint( - aws.StringValue(s.Config.Endpoint), serviceName, - aws.StringValue(s.Config.Region), aws.BoolValue(s.Config.DisableSSL)) - - return client.Config{ - Config: s.Config, - Handlers: s.Handlers, - Endpoint: endpoint, - SigningRegion: signingRegion, - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/types.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/types.go deleted file mode 100644 index 0f067c57..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/types.go +++ /dev/null @@ -1,88 +0,0 @@ -package aws - -import ( - "io" - "sync" -) - -// ReadSeekCloser wraps a io.Reader returning a ReaderSeekerCloser -func ReadSeekCloser(r io.Reader) ReaderSeekerCloser { - return ReaderSeekerCloser{r} -} - -// ReaderSeekerCloser represents a reader that can also delegate io.Seeker and -// io.Closer interfaces to the underlying object if they are available. -type ReaderSeekerCloser struct { - r io.Reader -} - -// Read reads from the reader up to size of p. The number of bytes read, and -// error if it occurred will be returned. -// -// If the reader is not an io.Reader zero bytes read, and nil error will be returned. -// -// Performs the same functionality as io.Reader Read -func (r ReaderSeekerCloser) Read(p []byte) (int, error) { - switch t := r.r.(type) { - case io.Reader: - return t.Read(p) - } - return 0, nil -} - -// Seek sets the offset for the next Read to offset, interpreted according to -// whence: 0 means relative to the origin of the file, 1 means relative to the -// current offset, and 2 means relative to the end. Seek returns the new offset -// and an error, if any. -// -// If the ReaderSeekerCloser is not an io.Seeker nothing will be done. -func (r ReaderSeekerCloser) Seek(offset int64, whence int) (int64, error) { - switch t := r.r.(type) { - case io.Seeker: - return t.Seek(offset, whence) - } - return int64(0), nil -} - -// Close closes the ReaderSeekerCloser. -// -// If the ReaderSeekerCloser is not an io.Closer nothing will be done. -func (r ReaderSeekerCloser) Close() error { - switch t := r.r.(type) { - case io.Closer: - return t.Close() - } - return nil -} - -// A WriteAtBuffer provides a in memory buffer supporting the io.WriterAt interface -// Can be used with the s3manager.Downloader to download content to a buffer -// in memory. Safe to use concurrently. -type WriteAtBuffer struct { - buf []byte - m sync.Mutex -} - -// WriteAt writes a slice of bytes to a buffer starting at the position provided -// The number of bytes written will be returned, or error. Can overwrite previous -// written slices if the write ats overlap. -func (b *WriteAtBuffer) WriteAt(p []byte, pos int64) (n int, err error) { - b.m.Lock() - defer b.m.Unlock() - - expLen := pos + int64(len(p)) - if int64(len(b.buf)) < expLen { - newBuf := make([]byte, expLen) - copy(newBuf, b.buf) - b.buf = newBuf - } - copy(b.buf[pos:], p) - return len(p), nil -} - -// Bytes returns a slice of bytes written to the buffer. -func (b *WriteAtBuffer) Bytes() []byte { - b.m.Lock() - defer b.m.Unlock() - return b.buf[:len(b.buf):len(b.buf)] -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/version.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/version.go deleted file mode 100644 index 668e406e..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/aws/version.go +++ /dev/null @@ -1,8 +0,0 @@ -// Package aws provides core functionality for making requests to AWS services. -package aws - -// SDKName is the name of this AWS SDK -const SDKName = "aws-sdk-go" - -// SDKVersion is the version of this SDK -const SDKVersion = "1.0.2" diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/endpoints/endpoints.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/endpoints/endpoints.go deleted file mode 100644 index 2b279e65..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/endpoints/endpoints.go +++ /dev/null @@ -1,65 +0,0 @@ -// Package endpoints validates regional endpoints for services. -package endpoints - -//go:generate go run ../model/cli/gen-endpoints/main.go endpoints.json endpoints_map.go -//go:generate gofmt -s -w endpoints_map.go - -import ( - "fmt" - "regexp" - "strings" -) - -// NormalizeEndpoint takes and endpoint and service API information to return a -// normalized endpoint and signing region. If the endpoint is not an empty string -// the service name and region will be used to look up the service's API endpoint. -// If the endpoint is provided the scheme will be added if it is not present. -func NormalizeEndpoint(endpoint, serviceName, region string, disableSSL bool) (normEndpoint, signingRegion string) { - if endpoint == "" { - return EndpointForRegion(serviceName, region, disableSSL) - } - - return AddScheme(endpoint, disableSSL), "" -} - -// EndpointForRegion returns an endpoint and its signing region for a service and region. -// if the service and region pair are not found endpoint and signingRegion will be empty. -func EndpointForRegion(svcName, region string, disableSSL bool) (endpoint, signingRegion string) { - derivedKeys := []string{ - region + "/" + svcName, - region + "/*", - "*/" + svcName, - "*/*", - } - - for _, key := range derivedKeys { - if val, ok := endpointsMap.Endpoints[key]; ok { - ep := val.Endpoint - ep = strings.Replace(ep, "{region}", region, -1) - ep = strings.Replace(ep, "{service}", svcName, -1) - - endpoint = ep - signingRegion = val.SigningRegion - break - } - } - - return AddScheme(endpoint, disableSSL), signingRegion -} - -// Regular expression to determine if the endpoint string is prefixed with a scheme. -var schemeRE = regexp.MustCompile("^([^:]+)://") - -// AddScheme adds the HTTP or HTTPS schemes to a endpoint URL if there is no -// scheme. If disableSSL is true HTTP will be added instead of the default HTTPS. -func AddScheme(endpoint string, disableSSL bool) string { - if endpoint != "" && !schemeRE.MatchString(endpoint) { - scheme := "https" - if disableSSL { - scheme = "http" - } - endpoint = fmt.Sprintf("%s://%s", scheme, endpoint) - } - - return endpoint -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/endpoints/endpoints.json b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/endpoints/endpoints.json deleted file mode 100644 index ea819b1e..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/endpoints/endpoints.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "version": 2, - "endpoints": { - "*/*": { - "endpoint": "{service}.{region}.amazonaws.com" - }, - "cn-north-1/*": { - "endpoint": "{service}.{region}.amazonaws.com.cn", - "signatureVersion": "v4" - }, - "us-gov-west-1/iam": { - "endpoint": "iam.us-gov.amazonaws.com" - }, - "us-gov-west-1/sts": { - "endpoint": "sts.us-gov-west-1.amazonaws.com" - }, - "us-gov-west-1/s3": { - "endpoint": "s3-{region}.amazonaws.com" - }, - "*/cloudfront": { - "endpoint": "cloudfront.amazonaws.com", - "signingRegion": "us-east-1" - }, - "*/cloudsearchdomain": { - "endpoint": "", - "signingRegion": "us-east-1" - }, - "*/data.iot": { - "endpoint": "", - "signingRegion": "us-east-1" - }, - "*/ec2metadata": { - "endpoint": "http://169.254.169.254/latest", - "signingRegion": "us-east-1" - }, - "*/iam": { - "endpoint": "iam.amazonaws.com", - "signingRegion": "us-east-1" - }, - "*/importexport": { - "endpoint": "importexport.amazonaws.com", - "signingRegion": "us-east-1" - }, - "*/route53": { - "endpoint": "route53.amazonaws.com", - "signingRegion": "us-east-1" - }, - "*/sts": { - "endpoint": "sts.amazonaws.com", - "signingRegion": "us-east-1" - }, - "*/waf": { - "endpoint": "waf.amazonaws.com", - "signingRegion": "us-east-1" - }, - "us-east-1/sdb": { - "endpoint": "sdb.amazonaws.com", - "signingRegion": "us-east-1" - }, - "us-east-1/s3": { - "endpoint": "s3.amazonaws.com" - }, - "us-west-1/s3": { - "endpoint": "s3-{region}.amazonaws.com" - }, - "us-west-2/s3": { - "endpoint": "s3-{region}.amazonaws.com" - }, - "eu-west-1/s3": { - "endpoint": "s3-{region}.amazonaws.com" - }, - "ap-southeast-1/s3": { - "endpoint": "s3-{region}.amazonaws.com" - }, - "ap-southeast-2/s3": { - "endpoint": "s3-{region}.amazonaws.com" - }, - "ap-northeast-1/s3": { - "endpoint": "s3-{region}.amazonaws.com" - }, - "sa-east-1/s3": { - "endpoint": "s3-{region}.amazonaws.com" - }, - "eu-central-1/s3": { - "endpoint": "{service}.{region}.amazonaws.com", - "signatureVersion": "v4" - } - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/endpoints/endpoints_map.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/endpoints/endpoints_map.go deleted file mode 100644 index 3fab91c7..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/endpoints/endpoints_map.go +++ /dev/null @@ -1,101 +0,0 @@ -package endpoints - -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -type endpointStruct struct { - Version int - Endpoints map[string]endpointEntry -} - -type endpointEntry struct { - Endpoint string - SigningRegion string -} - -var endpointsMap = endpointStruct{ - Version: 2, - Endpoints: map[string]endpointEntry{ - "*/*": { - Endpoint: "{service}.{region}.amazonaws.com", - }, - "*/cloudfront": { - Endpoint: "cloudfront.amazonaws.com", - SigningRegion: "us-east-1", - }, - "*/cloudsearchdomain": { - Endpoint: "", - SigningRegion: "us-east-1", - }, - "*/data.iot": { - Endpoint: "", - SigningRegion: "us-east-1", - }, - "*/ec2metadata": { - Endpoint: "http://169.254.169.254/latest", - SigningRegion: "us-east-1", - }, - "*/iam": { - Endpoint: "iam.amazonaws.com", - SigningRegion: "us-east-1", - }, - "*/importexport": { - Endpoint: "importexport.amazonaws.com", - SigningRegion: "us-east-1", - }, - "*/route53": { - Endpoint: "route53.amazonaws.com", - SigningRegion: "us-east-1", - }, - "*/sts": { - Endpoint: "sts.amazonaws.com", - SigningRegion: "us-east-1", - }, - "*/waf": { - Endpoint: "waf.amazonaws.com", - SigningRegion: "us-east-1", - }, - "ap-northeast-1/s3": { - Endpoint: "s3-{region}.amazonaws.com", - }, - "ap-southeast-1/s3": { - Endpoint: "s3-{region}.amazonaws.com", - }, - "ap-southeast-2/s3": { - Endpoint: "s3-{region}.amazonaws.com", - }, - "cn-north-1/*": { - Endpoint: "{service}.{region}.amazonaws.com.cn", - }, - "eu-central-1/s3": { - Endpoint: "{service}.{region}.amazonaws.com", - }, - "eu-west-1/s3": { - Endpoint: "s3-{region}.amazonaws.com", - }, - "sa-east-1/s3": { - Endpoint: "s3-{region}.amazonaws.com", - }, - "us-east-1/s3": { - Endpoint: "s3.amazonaws.com", - }, - "us-east-1/sdb": { - Endpoint: "sdb.amazonaws.com", - SigningRegion: "us-east-1", - }, - "us-gov-west-1/iam": { - Endpoint: "iam.us-gov.amazonaws.com", - }, - "us-gov-west-1/s3": { - Endpoint: "s3-{region}.amazonaws.com", - }, - "us-gov-west-1/sts": { - Endpoint: "sts.us-gov-west-1.amazonaws.com", - }, - "us-west-1/s3": { - Endpoint: "s3-{region}.amazonaws.com", - }, - "us-west-2/s3": { - Endpoint: "s3-{region}.amazonaws.com", - }, - }, -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/ec2query/build.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/ec2query/build.go deleted file mode 100644 index 0ead0126..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/ec2query/build.go +++ /dev/null @@ -1,32 +0,0 @@ -// Package ec2query provides serialisation of AWS EC2 requests and responses. -package ec2query - -//go:generate go run ../../../models/protocol_tests/generate.go ../../../models/protocol_tests/input/ec2.json build_test.go - -import ( - "net/url" - - "github.com/aws/aws-sdk-go/aws/awserr" - "github.com/aws/aws-sdk-go/aws/request" - "github.com/aws/aws-sdk-go/private/protocol/query/queryutil" -) - -// Build builds a request for the EC2 protocol. -func Build(r *request.Request) { - body := url.Values{ - "Action": {r.Operation.Name}, - "Version": {r.ClientInfo.APIVersion}, - } - if err := queryutil.Parse(body, r.Params, true); err != nil { - r.Error = awserr.New("SerializationError", "failed encoding EC2 Query request", err) - } - - if r.ExpireTime == 0 { - r.HTTPRequest.Method = "POST" - r.HTTPRequest.Header.Set("Content-Type", "application/x-www-form-urlencoded; charset=utf-8") - r.SetBufferBody([]byte(body.Encode())) - } else { // This is a pre-signed request - r.HTTPRequest.Method = "GET" - r.HTTPRequest.URL.RawQuery = body.Encode() - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/ec2query/unmarshal.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/ec2query/unmarshal.go deleted file mode 100644 index 658190f7..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/ec2query/unmarshal.go +++ /dev/null @@ -1,54 +0,0 @@ -package ec2query - -//go:generate go run ../../../models/protocol_tests/generate.go ../../../models/protocol_tests/output/ec2.json unmarshal_test.go - -import ( - "encoding/xml" - "io" - - "github.com/aws/aws-sdk-go/aws/awserr" - "github.com/aws/aws-sdk-go/aws/request" - "github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil" -) - -// Unmarshal unmarshals a response body for the EC2 protocol. -func Unmarshal(r *request.Request) { - defer r.HTTPResponse.Body.Close() - if r.DataFilled() { - decoder := xml.NewDecoder(r.HTTPResponse.Body) - err := xmlutil.UnmarshalXML(r.Data, decoder, "") - if err != nil { - r.Error = awserr.New("SerializationError", "failed decoding EC2 Query response", err) - return - } - } -} - -// UnmarshalMeta unmarshals response headers for the EC2 protocol. -func UnmarshalMeta(r *request.Request) { - // TODO implement unmarshaling of request IDs -} - -type xmlErrorResponse struct { - XMLName xml.Name `xml:"Response"` - Code string `xml:"Errors>Error>Code"` - Message string `xml:"Errors>Error>Message"` - RequestID string `xml:"RequestId"` -} - -// UnmarshalError unmarshals a response error for the EC2 protocol. -func UnmarshalError(r *request.Request) { - defer r.HTTPResponse.Body.Close() - - resp := &xmlErrorResponse{} - err := xml.NewDecoder(r.HTTPResponse.Body).Decode(resp) - if err != nil && err != io.EOF { - r.Error = awserr.New("SerializationError", "failed decoding EC2 Query error response", err) - } else { - r.Error = awserr.NewRequestFailure( - awserr.New(resp.Code, resp.Message, nil), - r.HTTPResponse.StatusCode, - resp.RequestID, - ) - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/query/queryutil/queryutil.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/query/queryutil/queryutil.go deleted file mode 100644 index 4afa4cf0..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/query/queryutil/queryutil.go +++ /dev/null @@ -1,223 +0,0 @@ -package queryutil - -import ( - "encoding/base64" - "fmt" - "net/url" - "reflect" - "sort" - "strconv" - "strings" - "time" -) - -// Parse parses an object i and fills a url.Values object. The isEC2 flag -// indicates if this is the EC2 Query sub-protocol. -func Parse(body url.Values, i interface{}, isEC2 bool) error { - q := queryParser{isEC2: isEC2} - return q.parseValue(body, reflect.ValueOf(i), "", "") -} - -func elemOf(value reflect.Value) reflect.Value { - for value.Kind() == reflect.Ptr { - value = value.Elem() - } - return value -} - -type queryParser struct { - isEC2 bool -} - -func (q *queryParser) parseValue(v url.Values, value reflect.Value, prefix string, tag reflect.StructTag) error { - value = elemOf(value) - - // no need to handle zero values - if !value.IsValid() { - return nil - } - - t := tag.Get("type") - if t == "" { - switch value.Kind() { - case reflect.Struct: - t = "structure" - case reflect.Slice: - t = "list" - case reflect.Map: - t = "map" - } - } - - switch t { - case "structure": - return q.parseStruct(v, value, prefix) - case "list": - return q.parseList(v, value, prefix, tag) - case "map": - return q.parseMap(v, value, prefix, tag) - default: - return q.parseScalar(v, value, prefix, tag) - } -} - -func (q *queryParser) parseStruct(v url.Values, value reflect.Value, prefix string) error { - if !value.IsValid() { - return nil - } - - t := value.Type() - for i := 0; i < value.NumField(); i++ { - if c := t.Field(i).Name[0:1]; strings.ToLower(c) == c { - continue // ignore unexported fields - } - - elemValue := elemOf(value.Field(i)) - field := t.Field(i) - var name string - - if q.isEC2 { - name = field.Tag.Get("queryName") - } - if name == "" { - if field.Tag.Get("flattened") != "" && field.Tag.Get("locationNameList") != "" { - name = field.Tag.Get("locationNameList") - } else if locName := field.Tag.Get("locationName"); locName != "" { - name = locName - } - if name != "" && q.isEC2 { - name = strings.ToUpper(name[0:1]) + name[1:] - } - } - if name == "" { - name = field.Name - } - - if prefix != "" { - name = prefix + "." + name - } - - if err := q.parseValue(v, elemValue, name, field.Tag); err != nil { - return err - } - } - return nil -} - -func (q *queryParser) parseList(v url.Values, value reflect.Value, prefix string, tag reflect.StructTag) error { - // If it's empty, generate an empty value - if !value.IsNil() && value.Len() == 0 { - v.Set(prefix, "") - return nil - } - - // check for unflattened list member - if !q.isEC2 && tag.Get("flattened") == "" { - prefix += ".member" - } - - for i := 0; i < value.Len(); i++ { - slicePrefix := prefix - if slicePrefix == "" { - slicePrefix = strconv.Itoa(i + 1) - } else { - slicePrefix = slicePrefix + "." + strconv.Itoa(i+1) - } - if err := q.parseValue(v, value.Index(i), slicePrefix, ""); err != nil { - return err - } - } - return nil -} - -func (q *queryParser) parseMap(v url.Values, value reflect.Value, prefix string, tag reflect.StructTag) error { - // If it's empty, generate an empty value - if !value.IsNil() && value.Len() == 0 { - v.Set(prefix, "") - return nil - } - - // check for unflattened list member - if !q.isEC2 && tag.Get("flattened") == "" { - prefix += ".entry" - } - - // sort keys for improved serialization consistency. - // this is not strictly necessary for protocol support. - mapKeyValues := value.MapKeys() - mapKeys := map[string]reflect.Value{} - mapKeyNames := make([]string, len(mapKeyValues)) - for i, mapKey := range mapKeyValues { - name := mapKey.String() - mapKeys[name] = mapKey - mapKeyNames[i] = name - } - sort.Strings(mapKeyNames) - - for i, mapKeyName := range mapKeyNames { - mapKey := mapKeys[mapKeyName] - mapValue := value.MapIndex(mapKey) - - kname := tag.Get("locationNameKey") - if kname == "" { - kname = "key" - } - vname := tag.Get("locationNameValue") - if vname == "" { - vname = "value" - } - - // serialize key - var keyName string - if prefix == "" { - keyName = strconv.Itoa(i+1) + "." + kname - } else { - keyName = prefix + "." + strconv.Itoa(i+1) + "." + kname - } - - if err := q.parseValue(v, mapKey, keyName, ""); err != nil { - return err - } - - // serialize value - var valueName string - if prefix == "" { - valueName = strconv.Itoa(i+1) + "." + vname - } else { - valueName = prefix + "." + strconv.Itoa(i+1) + "." + vname - } - - if err := q.parseValue(v, mapValue, valueName, ""); err != nil { - return err - } - } - - return nil -} - -func (q *queryParser) parseScalar(v url.Values, r reflect.Value, name string, tag reflect.StructTag) error { - switch value := r.Interface().(type) { - case string: - v.Set(name, value) - case []byte: - if !r.IsNil() { - v.Set(name, base64.StdEncoding.EncodeToString(value)) - } - case bool: - v.Set(name, strconv.FormatBool(value)) - case int64: - v.Set(name, strconv.FormatInt(value, 10)) - case int: - v.Set(name, strconv.Itoa(value)) - case float64: - v.Set(name, strconv.FormatFloat(value, 'f', -1, 64)) - case float32: - v.Set(name, strconv.FormatFloat(float64(value), 'f', -1, 32)) - case time.Time: - const ISO8601UTC = "2006-01-02T15:04:05Z" - v.Set(name, value.UTC().Format(ISO8601UTC)) - default: - return fmt.Errorf("unsupported value for param %s: %v (%s)", name, r.Interface(), r.Type().Name()) - } - return nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/build.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/build.go deleted file mode 100644 index 87352bc6..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/build.go +++ /dev/null @@ -1,254 +0,0 @@ -// Package rest provides RESTful serialization of AWS requests and responses. -package rest - -import ( - "bytes" - "encoding/base64" - "fmt" - "io" - "net/http" - "net/url" - "path" - "reflect" - "strconv" - "strings" - "time" - - "github.com/aws/aws-sdk-go/aws/awserr" - "github.com/aws/aws-sdk-go/aws/request" -) - -// RFC822 returns an RFC822 formatted timestamp for AWS protocols -const RFC822 = "Mon, 2 Jan 2006 15:04:05 GMT" - -// Whether the byte value can be sent without escaping in AWS URLs -var noEscape [256]bool - -var errValueNotSet = fmt.Errorf("value not set") - -func init() { - for i := 0; i < len(noEscape); i++ { - // AWS expects every character except these to be escaped - noEscape[i] = (i >= 'A' && i <= 'Z') || - (i >= 'a' && i <= 'z') || - (i >= '0' && i <= '9') || - i == '-' || - i == '.' || - i == '_' || - i == '~' - } -} - -// Build builds the REST component of a service request. -func Build(r *request.Request) { - if r.ParamsFilled() { - v := reflect.ValueOf(r.Params).Elem() - buildLocationElements(r, v) - buildBody(r, v) - } -} - -func buildLocationElements(r *request.Request, v reflect.Value) { - query := r.HTTPRequest.URL.Query() - - for i := 0; i < v.NumField(); i++ { - m := v.Field(i) - if n := v.Type().Field(i).Name; n[0:1] == strings.ToLower(n[0:1]) { - continue - } - - if m.IsValid() { - field := v.Type().Field(i) - name := field.Tag.Get("locationName") - if name == "" { - name = field.Name - } - if m.Kind() == reflect.Ptr { - m = m.Elem() - } - if !m.IsValid() { - continue - } - - var err error - switch field.Tag.Get("location") { - case "headers": // header maps - err = buildHeaderMap(&r.HTTPRequest.Header, m, field.Tag.Get("locationName")) - case "header": - err = buildHeader(&r.HTTPRequest.Header, m, name) - case "uri": - err = buildURI(r.HTTPRequest.URL, m, name) - case "querystring": - err = buildQueryString(query, m, name) - } - r.Error = err - } - if r.Error != nil { - return - } - } - - r.HTTPRequest.URL.RawQuery = query.Encode() - updatePath(r.HTTPRequest.URL, r.HTTPRequest.URL.Path) -} - -func buildBody(r *request.Request, v reflect.Value) { - if field, ok := v.Type().FieldByName("SDKShapeTraits"); ok { - if payloadName := field.Tag.Get("payload"); payloadName != "" { - pfield, _ := v.Type().FieldByName(payloadName) - if ptag := pfield.Tag.Get("type"); ptag != "" && ptag != "structure" { - payload := reflect.Indirect(v.FieldByName(payloadName)) - if payload.IsValid() && payload.Interface() != nil { - switch reader := payload.Interface().(type) { - case io.ReadSeeker: - r.SetReaderBody(reader) - case []byte: - r.SetBufferBody(reader) - case string: - r.SetStringBody(reader) - default: - r.Error = awserr.New("SerializationError", - "failed to encode REST request", - fmt.Errorf("unknown payload type %s", payload.Type())) - } - } - } - } - } -} - -func buildHeader(header *http.Header, v reflect.Value, name string) error { - str, err := convertType(v) - if err == errValueNotSet { - return nil - } else if err != nil { - return awserr.New("SerializationError", "failed to encode REST request", err) - } - - header.Add(name, str) - - return nil -} - -func buildHeaderMap(header *http.Header, v reflect.Value, prefix string) error { - for _, key := range v.MapKeys() { - str, err := convertType(v.MapIndex(key)) - if err == errValueNotSet { - continue - } else if err != nil { - return awserr.New("SerializationError", "failed to encode REST request", err) - - } - - header.Add(prefix+key.String(), str) - } - return nil -} - -func buildURI(u *url.URL, v reflect.Value, name string) error { - value, err := convertType(v) - if err == errValueNotSet { - return nil - } else if err != nil { - return awserr.New("SerializationError", "failed to encode REST request", err) - } - - uri := u.Path - uri = strings.Replace(uri, "{"+name+"}", EscapePath(value, true), -1) - uri = strings.Replace(uri, "{"+name+"+}", EscapePath(value, false), -1) - u.Path = uri - - return nil -} - -func buildQueryString(query url.Values, v reflect.Value, name string) error { - switch value := v.Interface().(type) { - case []*string: - for _, item := range value { - query.Add(name, *item) - } - case map[string]*string: - for key, item := range value { - query.Add(key, *item) - } - case map[string][]*string: - for key, items := range value { - for _, item := range items { - query.Add(key, *item) - } - } - default: - str, err := convertType(v) - if err == errValueNotSet { - return nil - } else if err != nil { - return awserr.New("SerializationError", "failed to encode REST request", err) - } - query.Set(name, str) - } - - return nil -} - -func updatePath(url *url.URL, urlPath string) { - scheme, query := url.Scheme, url.RawQuery - - hasSlash := strings.HasSuffix(urlPath, "/") - - // clean up path - urlPath = path.Clean(urlPath) - if hasSlash && !strings.HasSuffix(urlPath, "/") { - urlPath += "/" - } - - // get formatted URL minus scheme so we can build this into Opaque - url.Scheme, url.Path, url.RawQuery = "", "", "" - s := url.String() - url.Scheme = scheme - url.RawQuery = query - - // build opaque URI - url.Opaque = s + urlPath -} - -// EscapePath escapes part of a URL path in Amazon style -func EscapePath(path string, encodeSep bool) string { - var buf bytes.Buffer - for i := 0; i < len(path); i++ { - c := path[i] - if noEscape[c] || (c == '/' && !encodeSep) { - buf.WriteByte(c) - } else { - buf.WriteByte('%') - buf.WriteString(strings.ToUpper(strconv.FormatUint(uint64(c), 16))) - } - } - return buf.String() -} - -func convertType(v reflect.Value) (string, error) { - v = reflect.Indirect(v) - if !v.IsValid() { - return "", errValueNotSet - } - - var str string - switch value := v.Interface().(type) { - case string: - str = value - case []byte: - str = base64.StdEncoding.EncodeToString(value) - case bool: - str = strconv.FormatBool(value) - case int64: - str = strconv.FormatInt(value, 10) - case float64: - str = strconv.FormatFloat(value, 'f', -1, 64) - case time.Time: - str = value.UTC().Format(RFC822) - default: - err := fmt.Errorf("Unsupported value for param %v (%s)", v.Interface(), v.Type()) - return "", err - } - return str, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/payload.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/payload.go deleted file mode 100644 index 1f603bb7..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/payload.go +++ /dev/null @@ -1,45 +0,0 @@ -package rest - -import "reflect" - -// PayloadMember returns the payload field member of i if there is one, or nil. -func PayloadMember(i interface{}) interface{} { - if i == nil { - return nil - } - - v := reflect.ValueOf(i).Elem() - if !v.IsValid() { - return nil - } - if field, ok := v.Type().FieldByName("SDKShapeTraits"); ok { - if payloadName := field.Tag.Get("payload"); payloadName != "" { - field, _ := v.Type().FieldByName(payloadName) - if field.Tag.Get("type") != "structure" { - return nil - } - - payload := v.FieldByName(payloadName) - if payload.IsValid() || (payload.Kind() == reflect.Ptr && !payload.IsNil()) { - return payload.Interface() - } - } - } - return nil -} - -// PayloadType returns the type of a payload field member of i if there is one, or "". -func PayloadType(i interface{}) string { - v := reflect.Indirect(reflect.ValueOf(i)) - if !v.IsValid() { - return "" - } - if field, ok := v.Type().FieldByName("SDKShapeTraits"); ok { - if payloadName := field.Tag.Get("payload"); payloadName != "" { - if member, ok := v.Type().FieldByName(payloadName); ok { - return member.Tag.Get("type") - } - } - } - return "" -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/unmarshal.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/unmarshal.go deleted file mode 100644 index 06d9accb..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/rest/unmarshal.go +++ /dev/null @@ -1,183 +0,0 @@ -package rest - -import ( - "encoding/base64" - "fmt" - "io/ioutil" - "net/http" - "reflect" - "strconv" - "strings" - "time" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/awserr" - "github.com/aws/aws-sdk-go/aws/request" -) - -// Unmarshal unmarshals the REST component of a response in a REST service. -func Unmarshal(r *request.Request) { - if r.DataFilled() { - v := reflect.Indirect(reflect.ValueOf(r.Data)) - unmarshalBody(r, v) - } -} - -// UnmarshalMeta unmarshals the REST metadata of a response in a REST service -func UnmarshalMeta(r *request.Request) { - r.RequestID = r.HTTPResponse.Header.Get("X-Amzn-Requestid") - if r.DataFilled() { - v := reflect.Indirect(reflect.ValueOf(r.Data)) - unmarshalLocationElements(r, v) - } -} - -func unmarshalBody(r *request.Request, v reflect.Value) { - if field, ok := v.Type().FieldByName("SDKShapeTraits"); ok { - if payloadName := field.Tag.Get("payload"); payloadName != "" { - pfield, _ := v.Type().FieldByName(payloadName) - if ptag := pfield.Tag.Get("type"); ptag != "" && ptag != "structure" { - payload := v.FieldByName(payloadName) - if payload.IsValid() { - switch payload.Interface().(type) { - case []byte: - b, err := ioutil.ReadAll(r.HTTPResponse.Body) - if err != nil { - r.Error = awserr.New("SerializationError", "failed to decode REST response", err) - } else { - payload.Set(reflect.ValueOf(b)) - } - case *string: - b, err := ioutil.ReadAll(r.HTTPResponse.Body) - if err != nil { - r.Error = awserr.New("SerializationError", "failed to decode REST response", err) - } else { - str := string(b) - payload.Set(reflect.ValueOf(&str)) - } - default: - switch payload.Type().String() { - case "io.ReadSeeker": - payload.Set(reflect.ValueOf(aws.ReadSeekCloser(r.HTTPResponse.Body))) - case "aws.ReadSeekCloser", "io.ReadCloser": - payload.Set(reflect.ValueOf(r.HTTPResponse.Body)) - default: - r.Error = awserr.New("SerializationError", - "failed to decode REST response", - fmt.Errorf("unknown payload type %s", payload.Type())) - } - } - } - } - } - } -} - -func unmarshalLocationElements(r *request.Request, v reflect.Value) { - for i := 0; i < v.NumField(); i++ { - m, field := v.Field(i), v.Type().Field(i) - if n := field.Name; n[0:1] == strings.ToLower(n[0:1]) { - continue - } - - if m.IsValid() { - name := field.Tag.Get("locationName") - if name == "" { - name = field.Name - } - - switch field.Tag.Get("location") { - case "statusCode": - unmarshalStatusCode(m, r.HTTPResponse.StatusCode) - case "header": - err := unmarshalHeader(m, r.HTTPResponse.Header.Get(name)) - if err != nil { - r.Error = awserr.New("SerializationError", "failed to decode REST response", err) - break - } - case "headers": - prefix := field.Tag.Get("locationName") - err := unmarshalHeaderMap(m, r.HTTPResponse.Header, prefix) - if err != nil { - r.Error = awserr.New("SerializationError", "failed to decode REST response", err) - break - } - } - } - if r.Error != nil { - return - } - } -} - -func unmarshalStatusCode(v reflect.Value, statusCode int) { - if !v.IsValid() { - return - } - - switch v.Interface().(type) { - case *int64: - s := int64(statusCode) - v.Set(reflect.ValueOf(&s)) - } -} - -func unmarshalHeaderMap(r reflect.Value, headers http.Header, prefix string) error { - switch r.Interface().(type) { - case map[string]*string: // we only support string map value types - out := map[string]*string{} - for k, v := range headers { - k = http.CanonicalHeaderKey(k) - if strings.HasPrefix(strings.ToLower(k), strings.ToLower(prefix)) { - out[k[len(prefix):]] = &v[0] - } - } - r.Set(reflect.ValueOf(out)) - } - return nil -} - -func unmarshalHeader(v reflect.Value, header string) error { - if !v.IsValid() || (header == "" && v.Elem().Kind() != reflect.String) { - return nil - } - - switch v.Interface().(type) { - case *string: - v.Set(reflect.ValueOf(&header)) - case []byte: - b, err := base64.StdEncoding.DecodeString(header) - if err != nil { - return err - } - v.Set(reflect.ValueOf(&b)) - case *bool: - b, err := strconv.ParseBool(header) - if err != nil { - return err - } - v.Set(reflect.ValueOf(&b)) - case *int64: - i, err := strconv.ParseInt(header, 10, 64) - if err != nil { - return err - } - v.Set(reflect.ValueOf(&i)) - case *float64: - f, err := strconv.ParseFloat(header, 64) - if err != nil { - return err - } - v.Set(reflect.ValueOf(&f)) - case *time.Time: - t, err := time.Parse(RFC822, header) - if err != nil { - return err - } - v.Set(reflect.ValueOf(&t)) - default: - err := fmt.Errorf("Unsupported value for param %v (%s)", v.Interface(), v.Type()) - return err - } - return nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/build.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/build.go deleted file mode 100644 index d3db2502..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/build.go +++ /dev/null @@ -1,287 +0,0 @@ -// Package xmlutil provides XML serialisation of AWS requests and responses. -package xmlutil - -import ( - "encoding/base64" - "encoding/xml" - "fmt" - "reflect" - "sort" - "strconv" - "strings" - "time" -) - -// BuildXML will serialize params into an xml.Encoder. -// Error will be returned if the serialization of any of the params or nested values fails. -func BuildXML(params interface{}, e *xml.Encoder) error { - b := xmlBuilder{encoder: e, namespaces: map[string]string{}} - root := NewXMLElement(xml.Name{}) - if err := b.buildValue(reflect.ValueOf(params), root, ""); err != nil { - return err - } - for _, c := range root.Children { - for _, v := range c { - return StructToXML(e, v, false) - } - } - return nil -} - -// Returns the reflection element of a value, if it is a pointer. -func elemOf(value reflect.Value) reflect.Value { - for value.Kind() == reflect.Ptr { - value = value.Elem() - } - return value -} - -// A xmlBuilder serializes values from Go code to XML -type xmlBuilder struct { - encoder *xml.Encoder - namespaces map[string]string -} - -// buildValue generic XMLNode builder for any type. Will build value for their specific type -// struct, list, map, scalar. -// -// Also takes a "type" tag value to set what type a value should be converted to XMLNode as. If -// type is not provided reflect will be used to determine the value's type. -func (b *xmlBuilder) buildValue(value reflect.Value, current *XMLNode, tag reflect.StructTag) error { - value = elemOf(value) - if !value.IsValid() { // no need to handle zero values - return nil - } else if tag.Get("location") != "" { // don't handle non-body location values - return nil - } - - t := tag.Get("type") - if t == "" { - switch value.Kind() { - case reflect.Struct: - t = "structure" - case reflect.Slice: - t = "list" - case reflect.Map: - t = "map" - } - } - - switch t { - case "structure": - if field, ok := value.Type().FieldByName("SDKShapeTraits"); ok { - tag = tag + reflect.StructTag(" ") + field.Tag - } - return b.buildStruct(value, current, tag) - case "list": - return b.buildList(value, current, tag) - case "map": - return b.buildMap(value, current, tag) - default: - return b.buildScalar(value, current, tag) - } -} - -// buildStruct adds a struct and its fields to the current XMLNode. All fields any any nested -// types are converted to XMLNodes also. -func (b *xmlBuilder) buildStruct(value reflect.Value, current *XMLNode, tag reflect.StructTag) error { - if !value.IsValid() { - return nil - } - - fieldAdded := false - - // unwrap payloads - if payload := tag.Get("payload"); payload != "" { - field, _ := value.Type().FieldByName(payload) - tag = field.Tag - value = elemOf(value.FieldByName(payload)) - - if !value.IsValid() { - return nil - } - } - - child := NewXMLElement(xml.Name{Local: tag.Get("locationName")}) - - // there is an xmlNamespace associated with this struct - if prefix, uri := tag.Get("xmlPrefix"), tag.Get("xmlURI"); uri != "" { - ns := xml.Attr{ - Name: xml.Name{Local: "xmlns"}, - Value: uri, - } - if prefix != "" { - b.namespaces[prefix] = uri // register the namespace - ns.Name.Local = "xmlns:" + prefix - } - - child.Attr = append(child.Attr, ns) - } - - t := value.Type() - for i := 0; i < value.NumField(); i++ { - if c := t.Field(i).Name[0:1]; strings.ToLower(c) == c { - continue // ignore unexported fields - } - - member := elemOf(value.Field(i)) - field := t.Field(i) - mTag := field.Tag - - if mTag.Get("location") != "" { // skip non-body members - continue - } - - memberName := mTag.Get("locationName") - if memberName == "" { - memberName = field.Name - mTag = reflect.StructTag(string(mTag) + ` locationName:"` + memberName + `"`) - } - if err := b.buildValue(member, child, mTag); err != nil { - return err - } - - fieldAdded = true - } - - if fieldAdded { // only append this child if we have one ore more valid members - current.AddChild(child) - } - - return nil -} - -// buildList adds the value's list items to the current XMLNode as children nodes. All -// nested values in the list are converted to XMLNodes also. -func (b *xmlBuilder) buildList(value reflect.Value, current *XMLNode, tag reflect.StructTag) error { - if value.IsNil() { // don't build omitted lists - return nil - } - - // check for unflattened list member - flattened := tag.Get("flattened") != "" - - xname := xml.Name{Local: tag.Get("locationName")} - if flattened { - for i := 0; i < value.Len(); i++ { - child := NewXMLElement(xname) - current.AddChild(child) - if err := b.buildValue(value.Index(i), child, ""); err != nil { - return err - } - } - } else { - list := NewXMLElement(xname) - current.AddChild(list) - - for i := 0; i < value.Len(); i++ { - iname := tag.Get("locationNameList") - if iname == "" { - iname = "member" - } - - child := NewXMLElement(xml.Name{Local: iname}) - list.AddChild(child) - if err := b.buildValue(value.Index(i), child, ""); err != nil { - return err - } - } - } - - return nil -} - -// buildMap adds the value's key/value pairs to the current XMLNode as children nodes. All -// nested values in the map are converted to XMLNodes also. -// -// Error will be returned if it is unable to build the map's values into XMLNodes -func (b *xmlBuilder) buildMap(value reflect.Value, current *XMLNode, tag reflect.StructTag) error { - if value.IsNil() { // don't build omitted maps - return nil - } - - maproot := NewXMLElement(xml.Name{Local: tag.Get("locationName")}) - current.AddChild(maproot) - current = maproot - - kname, vname := "key", "value" - if n := tag.Get("locationNameKey"); n != "" { - kname = n - } - if n := tag.Get("locationNameValue"); n != "" { - vname = n - } - - // sorting is not required for compliance, but it makes testing easier - keys := make([]string, value.Len()) - for i, k := range value.MapKeys() { - keys[i] = k.String() - } - sort.Strings(keys) - - for _, k := range keys { - v := value.MapIndex(reflect.ValueOf(k)) - - mapcur := current - if tag.Get("flattened") == "" { // add "entry" tag to non-flat maps - child := NewXMLElement(xml.Name{Local: "entry"}) - mapcur.AddChild(child) - mapcur = child - } - - kchild := NewXMLElement(xml.Name{Local: kname}) - kchild.Text = k - vchild := NewXMLElement(xml.Name{Local: vname}) - mapcur.AddChild(kchild) - mapcur.AddChild(vchild) - - if err := b.buildValue(v, vchild, ""); err != nil { - return err - } - } - - return nil -} - -// buildScalar will convert the value into a string and append it as a attribute or child -// of the current XMLNode. -// -// The value will be added as an attribute if tag contains a "xmlAttribute" attribute value. -// -// Error will be returned if the value type is unsupported. -func (b *xmlBuilder) buildScalar(value reflect.Value, current *XMLNode, tag reflect.StructTag) error { - var str string - switch converted := value.Interface().(type) { - case string: - str = converted - case []byte: - if !value.IsNil() { - str = base64.StdEncoding.EncodeToString(converted) - } - case bool: - str = strconv.FormatBool(converted) - case int64: - str = strconv.FormatInt(converted, 10) - case int: - str = strconv.Itoa(converted) - case float64: - str = strconv.FormatFloat(converted, 'f', -1, 64) - case float32: - str = strconv.FormatFloat(float64(converted), 'f', -1, 32) - case time.Time: - const ISO8601UTC = "2006-01-02T15:04:05Z" - str = converted.UTC().Format(ISO8601UTC) - default: - return fmt.Errorf("unsupported value for param %s: %v (%s)", - tag.Get("locationName"), value.Interface(), value.Type().Name()) - } - - xname := xml.Name{Local: tag.Get("locationName")} - if tag.Get("xmlAttribute") != "" { // put into current node's attribute list - attr := xml.Attr{Name: xname, Value: str} - current.Attr = append(current.Attr, attr) - } else { // regular text node - current.AddChild(&XMLNode{Name: xname, Text: str}) - } - return nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/unmarshal.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/unmarshal.go deleted file mode 100644 index 5e4fe210..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/unmarshal.go +++ /dev/null @@ -1,260 +0,0 @@ -package xmlutil - -import ( - "encoding/base64" - "encoding/xml" - "fmt" - "io" - "reflect" - "strconv" - "strings" - "time" -) - -// UnmarshalXML deserializes an xml.Decoder into the container v. V -// needs to match the shape of the XML expected to be decoded. -// If the shape doesn't match unmarshaling will fail. -func UnmarshalXML(v interface{}, d *xml.Decoder, wrapper string) error { - n, _ := XMLToStruct(d, nil) - if n.Children != nil { - for _, root := range n.Children { - for _, c := range root { - if wrappedChild, ok := c.Children[wrapper]; ok { - c = wrappedChild[0] // pull out wrapped element - } - - err := parse(reflect.ValueOf(v), c, "") - if err != nil { - if err == io.EOF { - return nil - } - return err - } - } - } - return nil - } - return nil -} - -// parse deserializes any value from the XMLNode. The type tag is used to infer the type, or reflect -// will be used to determine the type from r. -func parse(r reflect.Value, node *XMLNode, tag reflect.StructTag) error { - rtype := r.Type() - if rtype.Kind() == reflect.Ptr { - rtype = rtype.Elem() // check kind of actual element type - } - - t := tag.Get("type") - if t == "" { - switch rtype.Kind() { - case reflect.Struct: - t = "structure" - case reflect.Slice: - t = "list" - case reflect.Map: - t = "map" - } - } - - switch t { - case "structure": - if field, ok := rtype.FieldByName("SDKShapeTraits"); ok { - tag = field.Tag - } - return parseStruct(r, node, tag) - case "list": - return parseList(r, node, tag) - case "map": - return parseMap(r, node, tag) - default: - return parseScalar(r, node, tag) - } -} - -// parseStruct deserializes a structure and its fields from an XMLNode. Any nested -// types in the structure will also be deserialized. -func parseStruct(r reflect.Value, node *XMLNode, tag reflect.StructTag) error { - t := r.Type() - if r.Kind() == reflect.Ptr { - if r.IsNil() { // create the structure if it's nil - s := reflect.New(r.Type().Elem()) - r.Set(s) - r = s - } - - r = r.Elem() - t = t.Elem() - } - - // unwrap any payloads - if payload := tag.Get("payload"); payload != "" { - field, _ := t.FieldByName(payload) - return parseStruct(r.FieldByName(payload), node, field.Tag) - } - - for i := 0; i < t.NumField(); i++ { - field := t.Field(i) - if c := field.Name[0:1]; strings.ToLower(c) == c { - continue // ignore unexported fields - } - - // figure out what this field is called - name := field.Name - if field.Tag.Get("flattened") != "" && field.Tag.Get("locationNameList") != "" { - name = field.Tag.Get("locationNameList") - } else if locName := field.Tag.Get("locationName"); locName != "" { - name = locName - } - - // try to find the field by name in elements - elems := node.Children[name] - - if elems == nil { // try to find the field in attributes - for _, a := range node.Attr { - if name == a.Name.Local { - // turn this into a text node for de-serializing - elems = []*XMLNode{{Text: a.Value}} - } - } - } - - member := r.FieldByName(field.Name) - for _, elem := range elems { - err := parse(member, elem, field.Tag) - if err != nil { - return err - } - } - } - return nil -} - -// parseList deserializes a list of values from an XML node. Each list entry -// will also be deserialized. -func parseList(r reflect.Value, node *XMLNode, tag reflect.StructTag) error { - t := r.Type() - - if tag.Get("flattened") == "" { // look at all item entries - mname := "member" - if name := tag.Get("locationNameList"); name != "" { - mname = name - } - - if Children, ok := node.Children[mname]; ok { - if r.IsNil() { - r.Set(reflect.MakeSlice(t, len(Children), len(Children))) - } - - for i, c := range Children { - err := parse(r.Index(i), c, "") - if err != nil { - return err - } - } - } - } else { // flattened list means this is a single element - if r.IsNil() { - r.Set(reflect.MakeSlice(t, 0, 0)) - } - - childR := reflect.Zero(t.Elem()) - r.Set(reflect.Append(r, childR)) - err := parse(r.Index(r.Len()-1), node, "") - if err != nil { - return err - } - } - - return nil -} - -// parseMap deserializes a map from an XMLNode. The direct children of the XMLNode -// will also be deserialized as map entries. -func parseMap(r reflect.Value, node *XMLNode, tag reflect.StructTag) error { - if r.IsNil() { - r.Set(reflect.MakeMap(r.Type())) - } - - if tag.Get("flattened") == "" { // look at all child entries - for _, entry := range node.Children["entry"] { - parseMapEntry(r, entry, tag) - } - } else { // this element is itself an entry - parseMapEntry(r, node, tag) - } - - return nil -} - -// parseMapEntry deserializes a map entry from a XML node. -func parseMapEntry(r reflect.Value, node *XMLNode, tag reflect.StructTag) error { - kname, vname := "key", "value" - if n := tag.Get("locationNameKey"); n != "" { - kname = n - } - if n := tag.Get("locationNameValue"); n != "" { - vname = n - } - - keys, ok := node.Children[kname] - values := node.Children[vname] - if ok { - for i, key := range keys { - keyR := reflect.ValueOf(key.Text) - value := values[i] - valueR := reflect.New(r.Type().Elem()).Elem() - - parse(valueR, value, "") - r.SetMapIndex(keyR, valueR) - } - } - return nil -} - -// parseScaller deserializes an XMLNode value into a concrete type based on the -// interface type of r. -// -// Error is returned if the deserialization fails due to invalid type conversion, -// or unsupported interface type. -func parseScalar(r reflect.Value, node *XMLNode, tag reflect.StructTag) error { - switch r.Interface().(type) { - case *string: - r.Set(reflect.ValueOf(&node.Text)) - return nil - case []byte: - b, err := base64.StdEncoding.DecodeString(node.Text) - if err != nil { - return err - } - r.Set(reflect.ValueOf(b)) - case *bool: - v, err := strconv.ParseBool(node.Text) - if err != nil { - return err - } - r.Set(reflect.ValueOf(&v)) - case *int64: - v, err := strconv.ParseInt(node.Text, 10, 64) - if err != nil { - return err - } - r.Set(reflect.ValueOf(&v)) - case *float64: - v, err := strconv.ParseFloat(node.Text, 64) - if err != nil { - return err - } - r.Set(reflect.ValueOf(&v)) - case *time.Time: - const ISO8601UTC = "2006-01-02T15:04:05Z" - t, err := time.Parse(ISO8601UTC, node.Text) - if err != nil { - return err - } - r.Set(reflect.ValueOf(&t)) - default: - return fmt.Errorf("unsupported value: %v (%s)", r.Interface(), r.Type()) - } - return nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/xml_to_struct.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/xml_to_struct.go deleted file mode 100644 index 72c198a9..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/xml_to_struct.go +++ /dev/null @@ -1,105 +0,0 @@ -package xmlutil - -import ( - "encoding/xml" - "io" - "sort" -) - -// A XMLNode contains the values to be encoded or decoded. -type XMLNode struct { - Name xml.Name `json:",omitempty"` - Children map[string][]*XMLNode `json:",omitempty"` - Text string `json:",omitempty"` - Attr []xml.Attr `json:",omitempty"` -} - -// NewXMLElement returns a pointer to a new XMLNode initialized to default values. -func NewXMLElement(name xml.Name) *XMLNode { - return &XMLNode{ - Name: name, - Children: map[string][]*XMLNode{}, - Attr: []xml.Attr{}, - } -} - -// AddChild adds child to the XMLNode. -func (n *XMLNode) AddChild(child *XMLNode) { - if _, ok := n.Children[child.Name.Local]; !ok { - n.Children[child.Name.Local] = []*XMLNode{} - } - n.Children[child.Name.Local] = append(n.Children[child.Name.Local], child) -} - -// XMLToStruct converts a xml.Decoder stream to XMLNode with nested values. -func XMLToStruct(d *xml.Decoder, s *xml.StartElement) (*XMLNode, error) { - out := &XMLNode{} - for { - tok, err := d.Token() - if tok == nil || err == io.EOF { - break - } - if err != nil { - return out, err - } - - switch typed := tok.(type) { - case xml.CharData: - out.Text = string(typed.Copy()) - case xml.StartElement: - el := typed.Copy() - out.Attr = el.Attr - if out.Children == nil { - out.Children = map[string][]*XMLNode{} - } - - name := typed.Name.Local - slice := out.Children[name] - if slice == nil { - slice = []*XMLNode{} - } - node, e := XMLToStruct(d, &el) - if e != nil { - return out, e - } - node.Name = typed.Name - slice = append(slice, node) - out.Children[name] = slice - case xml.EndElement: - if s != nil && s.Name.Local == typed.Name.Local { // matching end token - return out, nil - } - } - } - return out, nil -} - -// StructToXML writes an XMLNode to a xml.Encoder as tokens. -func StructToXML(e *xml.Encoder, node *XMLNode, sorted bool) error { - e.EncodeToken(xml.StartElement{Name: node.Name, Attr: node.Attr}) - - if node.Text != "" { - e.EncodeToken(xml.CharData([]byte(node.Text))) - } else if sorted { - sortedNames := []string{} - for k := range node.Children { - sortedNames = append(sortedNames, k) - } - sort.Strings(sortedNames) - - for _, k := range sortedNames { - for _, v := range node.Children[k] { - StructToXML(e, v, sorted) - } - } - } else { - for _, c := range node.Children { - for _, v := range c { - StructToXML(e, v, sorted) - } - } - } - - e.EncodeToken(xml.EndElement{Name: node.Name}) - return e.Flush() -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/signer/v4/v4.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/signer/v4/v4.go deleted file mode 100644 index dc176f31..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/signer/v4/v4.go +++ /dev/null @@ -1,365 +0,0 @@ -// Package v4 implements signing for AWS V4 signer -package v4 - -import ( - "crypto/hmac" - "crypto/sha256" - "encoding/hex" - "fmt" - "io" - "net/http" - "net/url" - "sort" - "strconv" - "strings" - "time" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/credentials" - "github.com/aws/aws-sdk-go/aws/request" - "github.com/aws/aws-sdk-go/private/protocol/rest" -) - -const ( - authHeaderPrefix = "AWS4-HMAC-SHA256" - timeFormat = "20060102T150405Z" - shortTimeFormat = "20060102" -) - -var ignoredHeaders = map[string]bool{ - "Authorization": true, - "Content-Type": true, - "Content-Length": true, - "User-Agent": true, -} - -type signer struct { - Request *http.Request - Time time.Time - ExpireTime time.Duration - ServiceName string - Region string - CredValues credentials.Value - Credentials *credentials.Credentials - Query url.Values - Body io.ReadSeeker - Debug aws.LogLevelType - Logger aws.Logger - - isPresign bool - formattedTime string - formattedShortTime string - - signedHeaders string - canonicalHeaders string - canonicalString string - credentialString string - stringToSign string - signature string - authorization string -} - -// Sign requests with signature version 4. -// -// Will sign the requests with the service config's Credentials object -// Signing is skipped if the credentials is the credentials.AnonymousCredentials -// object. -func Sign(req *request.Request) { - // If the request does not need to be signed ignore the signing of the - // request if the AnonymousCredentials object is used. - if req.Config.Credentials == credentials.AnonymousCredentials { - return - } - - region := req.ClientInfo.SigningRegion - if region == "" { - region = aws.StringValue(req.Config.Region) - } - - name := req.ClientInfo.SigningName - if name == "" { - name = req.ClientInfo.ServiceName - } - - s := signer{ - Request: req.HTTPRequest, - Time: req.Time, - ExpireTime: req.ExpireTime, - Query: req.HTTPRequest.URL.Query(), - Body: req.Body, - ServiceName: name, - Region: region, - Credentials: req.Config.Credentials, - Debug: req.Config.LogLevel.Value(), - Logger: req.Config.Logger, - } - - req.Error = s.sign() -} - -func (v4 *signer) sign() error { - if v4.ExpireTime != 0 { - v4.isPresign = true - } - - if v4.isRequestSigned() { - if !v4.Credentials.IsExpired() { - // If the request is already signed, and the credentials have not - // expired yet ignore the signing request. - return nil - } - - // The credentials have expired for this request. The current signing - // is invalid, and needs to be request because the request will fail. - if v4.isPresign { - v4.removePresign() - // Update the request's query string to ensure the values stays in - // sync in the case retrieving the new credentials fails. - v4.Request.URL.RawQuery = v4.Query.Encode() - } - } - - var err error - v4.CredValues, err = v4.Credentials.Get() - if err != nil { - return err - } - - if v4.isPresign { - v4.Query.Set("X-Amz-Algorithm", authHeaderPrefix) - if v4.CredValues.SessionToken != "" { - v4.Query.Set("X-Amz-Security-Token", v4.CredValues.SessionToken) - } else { - v4.Query.Del("X-Amz-Security-Token") - } - } else if v4.CredValues.SessionToken != "" { - v4.Request.Header.Set("X-Amz-Security-Token", v4.CredValues.SessionToken) - } - - v4.build() - - if v4.Debug.Matches(aws.LogDebugWithSigning) { - v4.logSigningInfo() - } - - return nil -} - -const logSignInfoMsg = `DEBUG: Request Signiture: ----[ CANONICAL STRING ]----------------------------- -%s ----[ STRING TO SIGN ]-------------------------------- -%s%s ------------------------------------------------------` -const logSignedURLMsg = ` ----[ SIGNED URL ]------------------------------------ -%s` - -func (v4 *signer) logSigningInfo() { - signedURLMsg := "" - if v4.isPresign { - signedURLMsg = fmt.Sprintf(logSignedURLMsg, v4.Request.URL.String()) - } - msg := fmt.Sprintf(logSignInfoMsg, v4.canonicalString, v4.stringToSign, signedURLMsg) - v4.Logger.Log(msg) -} - -func (v4 *signer) build() { - v4.buildTime() // no depends - v4.buildCredentialString() // no depends - if v4.isPresign { - v4.buildQuery() // no depends - } - v4.buildCanonicalHeaders() // depends on cred string - v4.buildCanonicalString() // depends on canon headers / signed headers - v4.buildStringToSign() // depends on canon string - v4.buildSignature() // depends on string to sign - - if v4.isPresign { - v4.Request.URL.RawQuery += "&X-Amz-Signature=" + v4.signature - } else { - parts := []string{ - authHeaderPrefix + " Credential=" + v4.CredValues.AccessKeyID + "/" + v4.credentialString, - "SignedHeaders=" + v4.signedHeaders, - "Signature=" + v4.signature, - } - v4.Request.Header.Set("Authorization", strings.Join(parts, ", ")) - } -} - -func (v4 *signer) buildTime() { - v4.formattedTime = v4.Time.UTC().Format(timeFormat) - v4.formattedShortTime = v4.Time.UTC().Format(shortTimeFormat) - - if v4.isPresign { - duration := int64(v4.ExpireTime / time.Second) - v4.Query.Set("X-Amz-Date", v4.formattedTime) - v4.Query.Set("X-Amz-Expires", strconv.FormatInt(duration, 10)) - } else { - v4.Request.Header.Set("X-Amz-Date", v4.formattedTime) - } -} - -func (v4 *signer) buildCredentialString() { - v4.credentialString = strings.Join([]string{ - v4.formattedShortTime, - v4.Region, - v4.ServiceName, - "aws4_request", - }, "/") - - if v4.isPresign { - v4.Query.Set("X-Amz-Credential", v4.CredValues.AccessKeyID+"/"+v4.credentialString) - } -} - -func (v4 *signer) buildQuery() { - for k, h := range v4.Request.Header { - if strings.HasPrefix(http.CanonicalHeaderKey(k), "X-Amz-") { - continue // never hoist x-amz-* headers, they must be signed - } - if _, ok := ignoredHeaders[http.CanonicalHeaderKey(k)]; ok { - continue // never hoist ignored headers - } - - v4.Request.Header.Del(k) - v4.Query.Del(k) - for _, v := range h { - v4.Query.Add(k, v) - } - } -} - -func (v4 *signer) buildCanonicalHeaders() { - var headers []string - headers = append(headers, "host") - for k := range v4.Request.Header { - if _, ok := ignoredHeaders[http.CanonicalHeaderKey(k)]; ok { - continue // ignored header - } - headers = append(headers, strings.ToLower(k)) - } - sort.Strings(headers) - - v4.signedHeaders = strings.Join(headers, ";") - - if v4.isPresign { - v4.Query.Set("X-Amz-SignedHeaders", v4.signedHeaders) - } - - headerValues := make([]string, len(headers)) - for i, k := range headers { - if k == "host" { - headerValues[i] = "host:" + v4.Request.URL.Host - } else { - headerValues[i] = k + ":" + - strings.Join(v4.Request.Header[http.CanonicalHeaderKey(k)], ",") - } - } - - v4.canonicalHeaders = strings.Join(headerValues, "\n") -} - -func (v4 *signer) buildCanonicalString() { - v4.Request.URL.RawQuery = strings.Replace(v4.Query.Encode(), "+", "%20", -1) - uri := v4.Request.URL.Opaque - if uri != "" { - uri = "/" + strings.Join(strings.Split(uri, "/")[3:], "/") - } else { - uri = v4.Request.URL.Path - } - if uri == "" { - uri = "/" - } - - if v4.ServiceName != "s3" { - uri = rest.EscapePath(uri, false) - } - - v4.canonicalString = strings.Join([]string{ - v4.Request.Method, - uri, - v4.Request.URL.RawQuery, - v4.canonicalHeaders + "\n", - v4.signedHeaders, - v4.bodyDigest(), - }, "\n") -} - -func (v4 *signer) buildStringToSign() { - v4.stringToSign = strings.Join([]string{ - authHeaderPrefix, - v4.formattedTime, - v4.credentialString, - hex.EncodeToString(makeSha256([]byte(v4.canonicalString))), - }, "\n") -} - -func (v4 *signer) buildSignature() { - secret := v4.CredValues.SecretAccessKey - date := makeHmac([]byte("AWS4"+secret), []byte(v4.formattedShortTime)) - region := makeHmac(date, []byte(v4.Region)) - service := makeHmac(region, []byte(v4.ServiceName)) - credentials := makeHmac(service, []byte("aws4_request")) - signature := makeHmac(credentials, []byte(v4.stringToSign)) - v4.signature = hex.EncodeToString(signature) -} - -func (v4 *signer) bodyDigest() string { - hash := v4.Request.Header.Get("X-Amz-Content-Sha256") - if hash == "" { - if v4.isPresign && v4.ServiceName == "s3" { - hash = "UNSIGNED-PAYLOAD" - } else if v4.Body == nil { - hash = hex.EncodeToString(makeSha256([]byte{})) - } else { - hash = hex.EncodeToString(makeSha256Reader(v4.Body)) - } - v4.Request.Header.Add("X-Amz-Content-Sha256", hash) - } - return hash -} - -// isRequestSigned returns if the request is currently signed or presigned -func (v4 *signer) isRequestSigned() bool { - if v4.isPresign && v4.Query.Get("X-Amz-Signature") != "" { - return true - } - if v4.Request.Header.Get("Authorization") != "" { - return true - } - - return false -} - -// unsign removes signing flags for both signed and presigned requests. -func (v4 *signer) removePresign() { - v4.Query.Del("X-Amz-Algorithm") - v4.Query.Del("X-Amz-Signature") - v4.Query.Del("X-Amz-Security-Token") - v4.Query.Del("X-Amz-Date") - v4.Query.Del("X-Amz-Expires") - v4.Query.Del("X-Amz-Credential") - v4.Query.Del("X-Amz-SignedHeaders") -} - -func makeHmac(key []byte, data []byte) []byte { - hash := hmac.New(sha256.New, key) - hash.Write(data) - return hash.Sum(nil) -} - -func makeSha256(data []byte) []byte { - hash := sha256.New() - hash.Write(data) - return hash.Sum(nil) -} - -func makeSha256Reader(reader io.ReadSeeker) []byte { - hash := sha256.New() - start, _ := reader.Seek(0, 1) - defer reader.Seek(start, 0) - - io.Copy(hash, reader) - return hash.Sum(nil) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/waiter/waiter.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/waiter/waiter.go deleted file mode 100644 index e5fb1366..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/private/waiter/waiter.go +++ /dev/null @@ -1,136 +0,0 @@ -package waiter - -import ( - "fmt" - "reflect" - "time" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/awserr" - "github.com/aws/aws-sdk-go/aws/awsutil" - "github.com/aws/aws-sdk-go/aws/request" -) - -// A Config provides a collection of configuration values to setup a generated -// waiter code with. -type Config struct { - Name string - Delay int - MaxAttempts int - Operation string - Acceptors []WaitAcceptor -} - -// A WaitAcceptor provides the information needed to wait for an API operation -// to complete. -type WaitAcceptor struct { - Expected interface{} - Matcher string - State string - Argument string -} - -// A Waiter provides waiting for an operation to complete. -type Waiter struct { - Config - Client interface{} - Input interface{} -} - -// Wait waits for an operation to complete, expire max attempts, or fail. Error -// is returned if the operation fails. -func (w *Waiter) Wait() error { - client := reflect.ValueOf(w.Client) - in := reflect.ValueOf(w.Input) - method := client.MethodByName(w.Config.Operation + "Request") - - for i := 0; i < w.MaxAttempts; i++ { - res := method.Call([]reflect.Value{in}) - req := res[0].Interface().(*request.Request) - req.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Waiter")) - - err := req.Send() - for _, a := range w.Acceptors { - if err != nil && a.Matcher != "error" { - // Only matcher error is valid if there is a request error - continue - } - - result := false - var vals []interface{} - switch a.Matcher { - case "pathAll", "path": - // Require all matches to be equal for result to match - vals, _ = awsutil.ValuesAtPath(req.Data, a.Argument) - result = true - for _, val := range vals { - if !awsutil.DeepEqual(val, a.Expected) { - result = false - break - } - } - case "pathAny": - // Only a single match needs to equal for the result to match - vals, _ = awsutil.ValuesAtPath(req.Data, a.Argument) - for _, val := range vals { - if awsutil.DeepEqual(val, a.Expected) { - result = true - break - } - } - case "status": - s := a.Expected.(int) - result = s == req.HTTPResponse.StatusCode - case "error": - if aerr, ok := err.(awserr.Error); ok { - result = aerr.Code() == a.Expected.(string) - } - case "pathList": - // ignored matcher - default: - logf(client, "WARNING: Waiter for %s encountered unexpected matcher: %s", - w.Config.Operation, a.Matcher) - } - - if !result { - // If there was no matching result found there is nothing more to do - // for this response, retry the request. - continue - } - - switch a.State { - case "success": - // waiter completed - return nil - case "failure": - // Waiter failure state triggered - return awserr.New("ResourceNotReady", - fmt.Sprintf("failed waiting for successful resource state"), err) - case "retry": - // clear the error and retry the operation - err = nil - default: - logf(client, "WARNING: Waiter for %s encountered unexpected state: %s", - w.Config.Operation, a.State) - } - } - if err != nil { - return err - } - - time.Sleep(time.Second * time.Duration(w.Delay)) - } - - return awserr.New("ResourceNotReady", - fmt.Sprintf("exceeded %d wait attempts", w.MaxAttempts), nil) -} - -func logf(client reflect.Value, msg string, args ...interface{}) { - cfgVal := client.FieldByName("Config") - if !cfgVal.IsValid() { - return - } - if cfg, ok := cfgVal.Interface().(*aws.Config); ok && cfg.Logger != nil { - cfg.Logger.Log(fmt.Sprintf(msg, args...)) - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go deleted file mode 100644 index 084d4d57..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go +++ /dev/null @@ -1,25609 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package ec2 provides a client for Amazon Elastic Compute Cloud. -package ec2 - -import ( - "time" - - "github.com/aws/aws-sdk-go/aws/awsutil" - "github.com/aws/aws-sdk-go/aws/request" -) - -const opAcceptVpcPeeringConnection = "AcceptVpcPeeringConnection" - -// AcceptVpcPeeringConnectionRequest generates a request for the AcceptVpcPeeringConnection operation. -func (c *EC2) AcceptVpcPeeringConnectionRequest(input *AcceptVpcPeeringConnectionInput) (req *request.Request, output *AcceptVpcPeeringConnectionOutput) { - op := &request.Operation{ - Name: opAcceptVpcPeeringConnection, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &AcceptVpcPeeringConnectionInput{} - } - - req = c.newRequest(op, input, output) - output = &AcceptVpcPeeringConnectionOutput{} - req.Data = output - return -} - -// Accept a VPC peering connection request. To accept a request, the VPC peering -// connection must be in the pending-acceptance state, and you must be the owner -// of the peer VPC. Use the DescribeVpcPeeringConnections request to view your -// outstanding VPC peering connection requests. -func (c *EC2) AcceptVpcPeeringConnection(input *AcceptVpcPeeringConnectionInput) (*AcceptVpcPeeringConnectionOutput, error) { - req, out := c.AcceptVpcPeeringConnectionRequest(input) - err := req.Send() - return out, err -} - -const opAllocateAddress = "AllocateAddress" - -// AllocateAddressRequest generates a request for the AllocateAddress operation. -func (c *EC2) AllocateAddressRequest(input *AllocateAddressInput) (req *request.Request, output *AllocateAddressOutput) { - op := &request.Operation{ - Name: opAllocateAddress, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &AllocateAddressInput{} - } - - req = c.newRequest(op, input, output) - output = &AllocateAddressOutput{} - req.Data = output - return -} - -// Acquires an Elastic IP address. -// -// An Elastic IP address is for use either in the EC2-Classic platform or in -// a VPC. For more information, see Elastic IP Addresses (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) AllocateAddress(input *AllocateAddressInput) (*AllocateAddressOutput, error) { - req, out := c.AllocateAddressRequest(input) - err := req.Send() - return out, err -} - -const opAllocateHosts = "AllocateHosts" - -// AllocateHostsRequest generates a request for the AllocateHosts operation. -func (c *EC2) AllocateHostsRequest(input *AllocateHostsInput) (req *request.Request, output *AllocateHostsOutput) { - op := &request.Operation{ - Name: opAllocateHosts, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &AllocateHostsInput{} - } - - req = c.newRequest(op, input, output) - output = &AllocateHostsOutput{} - req.Data = output - return -} - -// Allocates a Dedicated host to your account. At minimum you need to specify -// the instance size type, Availability Zone, and quantity of hosts you want -// to allocate. -func (c *EC2) AllocateHosts(input *AllocateHostsInput) (*AllocateHostsOutput, error) { - req, out := c.AllocateHostsRequest(input) - err := req.Send() - return out, err -} - -const opAssignPrivateIpAddresses = "AssignPrivateIpAddresses" - -// AssignPrivateIpAddressesRequest generates a request for the AssignPrivateIpAddresses operation. -func (c *EC2) AssignPrivateIpAddressesRequest(input *AssignPrivateIpAddressesInput) (req *request.Request, output *AssignPrivateIpAddressesOutput) { - op := &request.Operation{ - Name: opAssignPrivateIpAddresses, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &AssignPrivateIpAddressesInput{} - } - - req = c.newRequest(op, input, output) - output = &AssignPrivateIpAddressesOutput{} - req.Data = output - return -} - -// Assigns one or more secondary private IP addresses to the specified network -// interface. You can specify one or more specific secondary IP addresses, or -// you can specify the number of secondary IP addresses to be automatically -// assigned within the subnet's CIDR block range. The number of secondary IP -// addresses that you can assign to an instance varies by instance type. For -// information about instance types, see Instance Types (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) -// in the Amazon Elastic Compute Cloud User Guide. For more information about -// Elastic IP addresses, see Elastic IP Addresses (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html) -// in the Amazon Elastic Compute Cloud User Guide. -// -// AssignPrivateIpAddresses is available only in EC2-VPC. -func (c *EC2) AssignPrivateIpAddresses(input *AssignPrivateIpAddressesInput) (*AssignPrivateIpAddressesOutput, error) { - req, out := c.AssignPrivateIpAddressesRequest(input) - err := req.Send() - return out, err -} - -const opAssociateAddress = "AssociateAddress" - -// AssociateAddressRequest generates a request for the AssociateAddress operation. -func (c *EC2) AssociateAddressRequest(input *AssociateAddressInput) (req *request.Request, output *AssociateAddressOutput) { - op := &request.Operation{ - Name: opAssociateAddress, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &AssociateAddressInput{} - } - - req = c.newRequest(op, input, output) - output = &AssociateAddressOutput{} - req.Data = output - return -} - -// Associates an Elastic IP address with an instance or a network interface. -// -// An Elastic IP address is for use in either the EC2-Classic platform or in -// a VPC. For more information, see Elastic IP Addresses (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html) -// in the Amazon Elastic Compute Cloud User Guide. -// -// [EC2-Classic, VPC in an EC2-VPC-only account] If the Elastic IP address -// is already associated with a different instance, it is disassociated from -// that instance and associated with the specified instance. -// -// [VPC in an EC2-Classic account] If you don't specify a private IP address, -// the Elastic IP address is associated with the primary IP address. If the -// Elastic IP address is already associated with a different instance or a network -// interface, you get an error unless you allow reassociation. -// -// This is an idempotent operation. If you perform the operation more than -// once, Amazon EC2 doesn't return an error. -func (c *EC2) AssociateAddress(input *AssociateAddressInput) (*AssociateAddressOutput, error) { - req, out := c.AssociateAddressRequest(input) - err := req.Send() - return out, err -} - -const opAssociateDhcpOptions = "AssociateDhcpOptions" - -// AssociateDhcpOptionsRequest generates a request for the AssociateDhcpOptions operation. -func (c *EC2) AssociateDhcpOptionsRequest(input *AssociateDhcpOptionsInput) (req *request.Request, output *AssociateDhcpOptionsOutput) { - op := &request.Operation{ - Name: opAssociateDhcpOptions, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &AssociateDhcpOptionsInput{} - } - - req = c.newRequest(op, input, output) - output = &AssociateDhcpOptionsOutput{} - req.Data = output - return -} - -// Associates a set of DHCP options (that you've previously created) with the -// specified VPC, or associates no DHCP options with the VPC. -// -// After you associate the options with the VPC, any existing instances and -// all new instances that you launch in that VPC use the options. You don't -// need to restart or relaunch the instances. They automatically pick up the -// changes within a few hours, depending on how frequently the instance renews -// its DHCP lease. You can explicitly renew the lease using the operating system -// on the instance. -// -// For more information, see DHCP Options Sets (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_DHCP_Options.html) -// in the Amazon Virtual Private Cloud User Guide. -func (c *EC2) AssociateDhcpOptions(input *AssociateDhcpOptionsInput) (*AssociateDhcpOptionsOutput, error) { - req, out := c.AssociateDhcpOptionsRequest(input) - err := req.Send() - return out, err -} - -const opAssociateRouteTable = "AssociateRouteTable" - -// AssociateRouteTableRequest generates a request for the AssociateRouteTable operation. -func (c *EC2) AssociateRouteTableRequest(input *AssociateRouteTableInput) (req *request.Request, output *AssociateRouteTableOutput) { - op := &request.Operation{ - Name: opAssociateRouteTable, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &AssociateRouteTableInput{} - } - - req = c.newRequest(op, input, output) - output = &AssociateRouteTableOutput{} - req.Data = output - return -} - -// Associates a subnet with a route table. The subnet and route table must be -// in the same VPC. This association causes traffic originating from the subnet -// to be routed according to the routes in the route table. The action returns -// an association ID, which you need in order to disassociate the route table -// from the subnet later. A route table can be associated with multiple subnets. -// -// For more information about route tables, see Route Tables (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html) -// in the Amazon Virtual Private Cloud User Guide. -func (c *EC2) AssociateRouteTable(input *AssociateRouteTableInput) (*AssociateRouteTableOutput, error) { - req, out := c.AssociateRouteTableRequest(input) - err := req.Send() - return out, err -} - -const opAttachClassicLinkVpc = "AttachClassicLinkVpc" - -// AttachClassicLinkVpcRequest generates a request for the AttachClassicLinkVpc operation. -func (c *EC2) AttachClassicLinkVpcRequest(input *AttachClassicLinkVpcInput) (req *request.Request, output *AttachClassicLinkVpcOutput) { - op := &request.Operation{ - Name: opAttachClassicLinkVpc, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &AttachClassicLinkVpcInput{} - } - - req = c.newRequest(op, input, output) - output = &AttachClassicLinkVpcOutput{} - req.Data = output - return -} - -// Links an EC2-Classic instance to a ClassicLink-enabled VPC through one or -// more of the VPC's security groups. You cannot link an EC2-Classic instance -// to more than one VPC at a time. You can only link an instance that's in the -// running state. An instance is automatically unlinked from a VPC when it's -// stopped - you can link it to the VPC again when you restart it. -// -// After you've linked an instance, you cannot change the VPC security groups -// that are associated with it. To change the security groups, you must first -// unlink the instance, and then link it again. -// -// Linking your instance to a VPC is sometimes referred to as attaching your -// instance. -func (c *EC2) AttachClassicLinkVpc(input *AttachClassicLinkVpcInput) (*AttachClassicLinkVpcOutput, error) { - req, out := c.AttachClassicLinkVpcRequest(input) - err := req.Send() - return out, err -} - -const opAttachInternetGateway = "AttachInternetGateway" - -// AttachInternetGatewayRequest generates a request for the AttachInternetGateway operation. -func (c *EC2) AttachInternetGatewayRequest(input *AttachInternetGatewayInput) (req *request.Request, output *AttachInternetGatewayOutput) { - op := &request.Operation{ - Name: opAttachInternetGateway, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &AttachInternetGatewayInput{} - } - - req = c.newRequest(op, input, output) - output = &AttachInternetGatewayOutput{} - req.Data = output - return -} - -// Attaches an Internet gateway to a VPC, enabling connectivity between the -// Internet and the VPC. For more information about your VPC and Internet gateway, -// see the Amazon Virtual Private Cloud User Guide (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/). -func (c *EC2) AttachInternetGateway(input *AttachInternetGatewayInput) (*AttachInternetGatewayOutput, error) { - req, out := c.AttachInternetGatewayRequest(input) - err := req.Send() - return out, err -} - -const opAttachNetworkInterface = "AttachNetworkInterface" - -// AttachNetworkInterfaceRequest generates a request for the AttachNetworkInterface operation. -func (c *EC2) AttachNetworkInterfaceRequest(input *AttachNetworkInterfaceInput) (req *request.Request, output *AttachNetworkInterfaceOutput) { - op := &request.Operation{ - Name: opAttachNetworkInterface, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &AttachNetworkInterfaceInput{} - } - - req = c.newRequest(op, input, output) - output = &AttachNetworkInterfaceOutput{} - req.Data = output - return -} - -// Attaches a network interface to an instance. -func (c *EC2) AttachNetworkInterface(input *AttachNetworkInterfaceInput) (*AttachNetworkInterfaceOutput, error) { - req, out := c.AttachNetworkInterfaceRequest(input) - err := req.Send() - return out, err -} - -const opAttachVolume = "AttachVolume" - -// AttachVolumeRequest generates a request for the AttachVolume operation. -func (c *EC2) AttachVolumeRequest(input *AttachVolumeInput) (req *request.Request, output *VolumeAttachment) { - op := &request.Operation{ - Name: opAttachVolume, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &AttachVolumeInput{} - } - - req = c.newRequest(op, input, output) - output = &VolumeAttachment{} - req.Data = output - return -} - -// Attaches an EBS volume to a running or stopped instance and exposes it to -// the instance with the specified device name. -// -// Encrypted EBS volumes may only be attached to instances that support Amazon -// EBS encryption. For more information, see Amazon EBS Encryption (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html) -// in the Amazon Elastic Compute Cloud User Guide. -// -// For a list of supported device names, see Attaching an EBS Volume to an -// Instance (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-attaching-volume.html). -// Any device names that aren't reserved for instance store volumes can be used -// for EBS volumes. For more information, see Amazon EC2 Instance Store (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html) -// in the Amazon Elastic Compute Cloud User Guide. -// -// If a volume has an AWS Marketplace product code: -// -// The volume can be attached only to a stopped instance. AWS Marketplace -// product codes are copied from the volume to the instance. You must be subscribed -// to the product. The instance type and operating system of the instance must -// support the product. For example, you can't detach a volume from a Windows -// instance and attach it to a Linux instance. For an overview of the AWS Marketplace, -// see Introducing AWS Marketplace (https://aws.amazon.com/marketplace/help/200900000). -// -// For more information about EBS volumes, see Attaching Amazon EBS Volumes -// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-attaching-volume.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) AttachVolume(input *AttachVolumeInput) (*VolumeAttachment, error) { - req, out := c.AttachVolumeRequest(input) - err := req.Send() - return out, err -} - -const opAttachVpnGateway = "AttachVpnGateway" - -// AttachVpnGatewayRequest generates a request for the AttachVpnGateway operation. -func (c *EC2) AttachVpnGatewayRequest(input *AttachVpnGatewayInput) (req *request.Request, output *AttachVpnGatewayOutput) { - op := &request.Operation{ - Name: opAttachVpnGateway, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &AttachVpnGatewayInput{} - } - - req = c.newRequest(op, input, output) - output = &AttachVpnGatewayOutput{} - req.Data = output - return -} - -// Attaches a virtual private gateway to a VPC. For more information, see Adding -// a Hardware Virtual Private Gateway to Your VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html) -// in the Amazon Virtual Private Cloud User Guide. -func (c *EC2) AttachVpnGateway(input *AttachVpnGatewayInput) (*AttachVpnGatewayOutput, error) { - req, out := c.AttachVpnGatewayRequest(input) - err := req.Send() - return out, err -} - -const opAuthorizeSecurityGroupEgress = "AuthorizeSecurityGroupEgress" - -// AuthorizeSecurityGroupEgressRequest generates a request for the AuthorizeSecurityGroupEgress operation. -func (c *EC2) AuthorizeSecurityGroupEgressRequest(input *AuthorizeSecurityGroupEgressInput) (req *request.Request, output *AuthorizeSecurityGroupEgressOutput) { - op := &request.Operation{ - Name: opAuthorizeSecurityGroupEgress, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &AuthorizeSecurityGroupEgressInput{} - } - - req = c.newRequest(op, input, output) - output = &AuthorizeSecurityGroupEgressOutput{} - req.Data = output - return -} - -// Adds one or more egress rules to a security group for use with a VPC. Specifically, -// this action permits instances to send traffic to one or more destination -// CIDR IP address ranges, or to one or more destination security groups for -// the same VPC. -// -// You can have up to 50 rules per security group (covering both ingress and -// egress rules). -// -// A security group is for use with instances either in the EC2-Classic platform -// or in a specific VPC. This action doesn't apply to security groups for use -// in EC2-Classic. For more information, see Security Groups for Your VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html) -// in the Amazon Virtual Private Cloud User Guide. -// -// Each rule consists of the protocol (for example, TCP), plus either a CIDR -// range or a source group. For the TCP and UDP protocols, you must also specify -// the destination port or port range. For the ICMP protocol, you must also -// specify the ICMP type and code. You can use -1 for the type or code to mean -// all types or all codes. -// -// Rule changes are propagated to affected instances as quickly as possible. -// However, a small delay might occur. -func (c *EC2) AuthorizeSecurityGroupEgress(input *AuthorizeSecurityGroupEgressInput) (*AuthorizeSecurityGroupEgressOutput, error) { - req, out := c.AuthorizeSecurityGroupEgressRequest(input) - err := req.Send() - return out, err -} - -const opAuthorizeSecurityGroupIngress = "AuthorizeSecurityGroupIngress" - -// AuthorizeSecurityGroupIngressRequest generates a request for the AuthorizeSecurityGroupIngress operation. -func (c *EC2) AuthorizeSecurityGroupIngressRequest(input *AuthorizeSecurityGroupIngressInput) (req *request.Request, output *AuthorizeSecurityGroupIngressOutput) { - op := &request.Operation{ - Name: opAuthorizeSecurityGroupIngress, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &AuthorizeSecurityGroupIngressInput{} - } - - req = c.newRequest(op, input, output) - output = &AuthorizeSecurityGroupIngressOutput{} - req.Data = output - return -} - -// Adds one or more ingress rules to a security group. -// -// EC2-Classic: You can have up to 100 rules per group. -// -// EC2-VPC: You can have up to 50 rules per group (covering both ingress and -// egress rules). -// -// Rule changes are propagated to instances within the security group as quickly -// as possible. However, a small delay might occur. -// -// [EC2-Classic] This action gives one or more CIDR IP address ranges permission -// to access a security group in your account, or gives one or more security -// groups (called the source groups) permission to access a security group for -// your account. A source group can be for your own AWS account, or another. -// -// [EC2-VPC] This action gives one or more CIDR IP address ranges permission -// to access a security group in your VPC, or gives one or more other security -// groups (called the source groups) permission to access a security group for -// your VPC. The security groups must all be for the same VPC. -func (c *EC2) AuthorizeSecurityGroupIngress(input *AuthorizeSecurityGroupIngressInput) (*AuthorizeSecurityGroupIngressOutput, error) { - req, out := c.AuthorizeSecurityGroupIngressRequest(input) - err := req.Send() - return out, err -} - -const opBundleInstance = "BundleInstance" - -// BundleInstanceRequest generates a request for the BundleInstance operation. -func (c *EC2) BundleInstanceRequest(input *BundleInstanceInput) (req *request.Request, output *BundleInstanceOutput) { - op := &request.Operation{ - Name: opBundleInstance, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &BundleInstanceInput{} - } - - req = c.newRequest(op, input, output) - output = &BundleInstanceOutput{} - req.Data = output - return -} - -// Bundles an Amazon instance store-backed Windows instance. -// -// During bundling, only the root device volume (C:\) is bundled. Data on other -// instance store volumes is not preserved. -// -// This action is not applicable for Linux/Unix instances or Windows instances -// that are backed by Amazon EBS. -// -// For more information, see Creating an Instance Store-Backed Windows AMI -// (http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/Creating_InstanceStoreBacked_WinAMI.html). -func (c *EC2) BundleInstance(input *BundleInstanceInput) (*BundleInstanceOutput, error) { - req, out := c.BundleInstanceRequest(input) - err := req.Send() - return out, err -} - -const opCancelBundleTask = "CancelBundleTask" - -// CancelBundleTaskRequest generates a request for the CancelBundleTask operation. -func (c *EC2) CancelBundleTaskRequest(input *CancelBundleTaskInput) (req *request.Request, output *CancelBundleTaskOutput) { - op := &request.Operation{ - Name: opCancelBundleTask, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CancelBundleTaskInput{} - } - - req = c.newRequest(op, input, output) - output = &CancelBundleTaskOutput{} - req.Data = output - return -} - -// Cancels a bundling operation for an instance store-backed Windows instance. -func (c *EC2) CancelBundleTask(input *CancelBundleTaskInput) (*CancelBundleTaskOutput, error) { - req, out := c.CancelBundleTaskRequest(input) - err := req.Send() - return out, err -} - -const opCancelConversionTask = "CancelConversionTask" - -// CancelConversionTaskRequest generates a request for the CancelConversionTask operation. -func (c *EC2) CancelConversionTaskRequest(input *CancelConversionTaskInput) (req *request.Request, output *CancelConversionTaskOutput) { - op := &request.Operation{ - Name: opCancelConversionTask, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CancelConversionTaskInput{} - } - - req = c.newRequest(op, input, output) - output = &CancelConversionTaskOutput{} - req.Data = output - return -} - -// Cancels an active conversion task. The task can be the import of an instance -// or volume. The action removes all artifacts of the conversion, including -// a partially uploaded volume or instance. If the conversion is complete or -// is in the process of transferring the final disk image, the command fails -// and returns an exception. -// -// For more information, see Using the Command Line Tools to Import Your Virtual -// Machine to Amazon EC2 (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UploadingYourInstancesandVolumes.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) CancelConversionTask(input *CancelConversionTaskInput) (*CancelConversionTaskOutput, error) { - req, out := c.CancelConversionTaskRequest(input) - err := req.Send() - return out, err -} - -const opCancelExportTask = "CancelExportTask" - -// CancelExportTaskRequest generates a request for the CancelExportTask operation. -func (c *EC2) CancelExportTaskRequest(input *CancelExportTaskInput) (req *request.Request, output *CancelExportTaskOutput) { - op := &request.Operation{ - Name: opCancelExportTask, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CancelExportTaskInput{} - } - - req = c.newRequest(op, input, output) - output = &CancelExportTaskOutput{} - req.Data = output - return -} - -// Cancels an active export task. The request removes all artifacts of the export, -// including any partially-created Amazon S3 objects. If the export task is -// complete or is in the process of transferring the final disk image, the command -// fails and returns an error. -func (c *EC2) CancelExportTask(input *CancelExportTaskInput) (*CancelExportTaskOutput, error) { - req, out := c.CancelExportTaskRequest(input) - err := req.Send() - return out, err -} - -const opCancelImportTask = "CancelImportTask" - -// CancelImportTaskRequest generates a request for the CancelImportTask operation. -func (c *EC2) CancelImportTaskRequest(input *CancelImportTaskInput) (req *request.Request, output *CancelImportTaskOutput) { - op := &request.Operation{ - Name: opCancelImportTask, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CancelImportTaskInput{} - } - - req = c.newRequest(op, input, output) - output = &CancelImportTaskOutput{} - req.Data = output - return -} - -// Cancels an in-process import virtual machine or import snapshot task. -func (c *EC2) CancelImportTask(input *CancelImportTaskInput) (*CancelImportTaskOutput, error) { - req, out := c.CancelImportTaskRequest(input) - err := req.Send() - return out, err -} - -const opCancelReservedInstancesListing = "CancelReservedInstancesListing" - -// CancelReservedInstancesListingRequest generates a request for the CancelReservedInstancesListing operation. -func (c *EC2) CancelReservedInstancesListingRequest(input *CancelReservedInstancesListingInput) (req *request.Request, output *CancelReservedInstancesListingOutput) { - op := &request.Operation{ - Name: opCancelReservedInstancesListing, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CancelReservedInstancesListingInput{} - } - - req = c.newRequest(op, input, output) - output = &CancelReservedInstancesListingOutput{} - req.Data = output - return -} - -// Cancels the specified Reserved instance listing in the Reserved Instance -// Marketplace. -// -// For more information, see Reserved Instance Marketplace (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) CancelReservedInstancesListing(input *CancelReservedInstancesListingInput) (*CancelReservedInstancesListingOutput, error) { - req, out := c.CancelReservedInstancesListingRequest(input) - err := req.Send() - return out, err -} - -const opCancelSpotFleetRequests = "CancelSpotFleetRequests" - -// CancelSpotFleetRequestsRequest generates a request for the CancelSpotFleetRequests operation. -func (c *EC2) CancelSpotFleetRequestsRequest(input *CancelSpotFleetRequestsInput) (req *request.Request, output *CancelSpotFleetRequestsOutput) { - op := &request.Operation{ - Name: opCancelSpotFleetRequests, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CancelSpotFleetRequestsInput{} - } - - req = c.newRequest(op, input, output) - output = &CancelSpotFleetRequestsOutput{} - req.Data = output - return -} - -// Cancels the specified Spot fleet requests. -// -// After you cancel a Spot fleet request, the Spot fleet launches no new Spot -// instances. You must specify whether the Spot fleet should also terminate -// its Spot instances. If you terminate the instances, the Spot fleet request -// enters the cancelled_terminating state. Otherwise, the Spot fleet request -// enters the cancelled_running state and the instances continue to run until -// they are interrupted or you terminate them manually. -func (c *EC2) CancelSpotFleetRequests(input *CancelSpotFleetRequestsInput) (*CancelSpotFleetRequestsOutput, error) { - req, out := c.CancelSpotFleetRequestsRequest(input) - err := req.Send() - return out, err -} - -const opCancelSpotInstanceRequests = "CancelSpotInstanceRequests" - -// CancelSpotInstanceRequestsRequest generates a request for the CancelSpotInstanceRequests operation. -func (c *EC2) CancelSpotInstanceRequestsRequest(input *CancelSpotInstanceRequestsInput) (req *request.Request, output *CancelSpotInstanceRequestsOutput) { - op := &request.Operation{ - Name: opCancelSpotInstanceRequests, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CancelSpotInstanceRequestsInput{} - } - - req = c.newRequest(op, input, output) - output = &CancelSpotInstanceRequestsOutput{} - req.Data = output - return -} - -// Cancels one or more Spot instance requests. Spot instances are instances -// that Amazon EC2 starts on your behalf when the bid price that you specify -// exceeds the current Spot price. Amazon EC2 periodically sets the Spot price -// based on available Spot instance capacity and current Spot instance requests. -// For more information, see Spot Instance Requests (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html) -// in the Amazon Elastic Compute Cloud User Guide. -// -// Canceling a Spot instance request does not terminate running Spot instances -// associated with the request. -func (c *EC2) CancelSpotInstanceRequests(input *CancelSpotInstanceRequestsInput) (*CancelSpotInstanceRequestsOutput, error) { - req, out := c.CancelSpotInstanceRequestsRequest(input) - err := req.Send() - return out, err -} - -const opConfirmProductInstance = "ConfirmProductInstance" - -// ConfirmProductInstanceRequest generates a request for the ConfirmProductInstance operation. -func (c *EC2) ConfirmProductInstanceRequest(input *ConfirmProductInstanceInput) (req *request.Request, output *ConfirmProductInstanceOutput) { - op := &request.Operation{ - Name: opConfirmProductInstance, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ConfirmProductInstanceInput{} - } - - req = c.newRequest(op, input, output) - output = &ConfirmProductInstanceOutput{} - req.Data = output - return -} - -// Determines whether a product code is associated with an instance. This action -// can only be used by the owner of the product code. It is useful when a product -// code owner needs to verify whether another user's instance is eligible for -// support. -func (c *EC2) ConfirmProductInstance(input *ConfirmProductInstanceInput) (*ConfirmProductInstanceOutput, error) { - req, out := c.ConfirmProductInstanceRequest(input) - err := req.Send() - return out, err -} - -const opCopyImage = "CopyImage" - -// CopyImageRequest generates a request for the CopyImage operation. -func (c *EC2) CopyImageRequest(input *CopyImageInput) (req *request.Request, output *CopyImageOutput) { - op := &request.Operation{ - Name: opCopyImage, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CopyImageInput{} - } - - req = c.newRequest(op, input, output) - output = &CopyImageOutput{} - req.Data = output - return -} - -// Initiates the copy of an AMI from the specified source region to the current -// region. You specify the destination region by using its endpoint when making -// the request. AMIs that use encrypted EBS snapshots cannot be copied with -// this method. -// -// For more information, see Copying AMIs (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/CopyingAMIs.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) CopyImage(input *CopyImageInput) (*CopyImageOutput, error) { - req, out := c.CopyImageRequest(input) - err := req.Send() - return out, err -} - -const opCopySnapshot = "CopySnapshot" - -// CopySnapshotRequest generates a request for the CopySnapshot operation. -func (c *EC2) CopySnapshotRequest(input *CopySnapshotInput) (req *request.Request, output *CopySnapshotOutput) { - op := &request.Operation{ - Name: opCopySnapshot, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CopySnapshotInput{} - } - - req = c.newRequest(op, input, output) - output = &CopySnapshotOutput{} - req.Data = output - return -} - -// Copies a point-in-time snapshot of an EBS volume and stores it in Amazon -// S3. You can copy the snapshot within the same region or from one region to -// another. You can use the snapshot to create EBS volumes or Amazon Machine -// Images (AMIs). The snapshot is copied to the regional endpoint that you send -// the HTTP request to. -// -// Copies of encrypted EBS snapshots remain encrypted. Copies of unencrypted -// snapshots remain unencrypted, unless the Encrypted flag is specified during -// the snapshot copy operation. By default, encrypted snapshot copies use the -// default AWS Key Management Service (AWS KMS) customer master key (CMK); however, -// you can specify a non-default CMK with the KmsKeyId parameter. -// -// For more information, see Copying an Amazon EBS Snapshot (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-copy-snapshot.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) CopySnapshot(input *CopySnapshotInput) (*CopySnapshotOutput, error) { - req, out := c.CopySnapshotRequest(input) - err := req.Send() - return out, err -} - -const opCreateCustomerGateway = "CreateCustomerGateway" - -// CreateCustomerGatewayRequest generates a request for the CreateCustomerGateway operation. -func (c *EC2) CreateCustomerGatewayRequest(input *CreateCustomerGatewayInput) (req *request.Request, output *CreateCustomerGatewayOutput) { - op := &request.Operation{ - Name: opCreateCustomerGateway, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CreateCustomerGatewayInput{} - } - - req = c.newRequest(op, input, output) - output = &CreateCustomerGatewayOutput{} - req.Data = output - return -} - -// Provides information to AWS about your VPN customer gateway device. The customer -// gateway is the appliance at your end of the VPN connection. (The device on -// the AWS side of the VPN connection is the virtual private gateway.) You must -// provide the Internet-routable IP address of the customer gateway's external -// interface. The IP address must be static and may be behind a device performing -// network address translation (NAT). -// -// For devices that use Border Gateway Protocol (BGP), you can also provide -// the device's BGP Autonomous System Number (ASN). You can use an existing -// ASN assigned to your network. If you don't have an ASN already, you can use -// a private ASN (in the 64512 - 65534 range). -// -// Amazon EC2 supports all 2-byte ASN numbers in the range of 1 - 65534, with -// the exception of 7224, which is reserved in the us-east-1 region, and 9059, -// which is reserved in the eu-west-1 region. -// -// For more information about VPN customer gateways, see Adding a Hardware -// Virtual Private Gateway to Your VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html) -// in the Amazon Virtual Private Cloud User Guide. -// -// You cannot create more than one customer gateway with the same VPN type, -// IP address, and BGP ASN parameter values. If you run an identical request -// more than one time, the first request creates the customer gateway, and subsequent -// requests return information about the existing customer gateway. The subsequent -// requests do not create new customer gateway resources. -func (c *EC2) CreateCustomerGateway(input *CreateCustomerGatewayInput) (*CreateCustomerGatewayOutput, error) { - req, out := c.CreateCustomerGatewayRequest(input) - err := req.Send() - return out, err -} - -const opCreateDhcpOptions = "CreateDhcpOptions" - -// CreateDhcpOptionsRequest generates a request for the CreateDhcpOptions operation. -func (c *EC2) CreateDhcpOptionsRequest(input *CreateDhcpOptionsInput) (req *request.Request, output *CreateDhcpOptionsOutput) { - op := &request.Operation{ - Name: opCreateDhcpOptions, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CreateDhcpOptionsInput{} - } - - req = c.newRequest(op, input, output) - output = &CreateDhcpOptionsOutput{} - req.Data = output - return -} - -// Creates a set of DHCP options for your VPC. After creating the set, you must -// associate it with the VPC, causing all existing and new instances that you -// launch in the VPC to use this set of DHCP options. The following are the -// individual DHCP options you can specify. For more information about the options, -// see RFC 2132 (http://www.ietf.org/rfc/rfc2132.txt). -// -// domain-name-servers - The IP addresses of up to four domain name servers, -// or AmazonProvidedDNS. The default DHCP option set specifies AmazonProvidedDNS. -// If specifying more than one domain name server, specify the IP addresses -// in a single parameter, separated by commas. domain-name - If you're using -// AmazonProvidedDNS in us-east-1, specify ec2.internal. If you're using AmazonProvidedDNS -// in another region, specify region.compute.internal (for example, ap-northeast-1.compute.internal). -// Otherwise, specify a domain name (for example, MyCompany.com). Important: -// Some Linux operating systems accept multiple domain names separated by spaces. -// However, Windows and other Linux operating systems treat the value as a single -// domain, which results in unexpected behavior. If your DHCP options set is -// associated with a VPC that has instances with multiple operating systems, -// specify only one domain name. ntp-servers - The IP addresses of up to four -// Network Time Protocol (NTP) servers. netbios-name-servers - The IP addresses -// of up to four NetBIOS name servers. netbios-node-type - The NetBIOS node -// type (1, 2, 4, or 8). We recommend that you specify 2 (broadcast and multicast -// are not currently supported). For more information about these node types, -// see RFC 2132 (http://www.ietf.org/rfc/rfc2132.txt). Your VPC automatically -// starts out with a set of DHCP options that includes only a DNS server that -// we provide (AmazonProvidedDNS). If you create a set of options, and if your -// VPC has an Internet gateway, make sure to set the domain-name-servers option -// either to AmazonProvidedDNS or to a domain name server of your choice. For -// more information about DHCP options, see DHCP Options Sets (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_DHCP_Options.html) -// in the Amazon Virtual Private Cloud User Guide. -func (c *EC2) CreateDhcpOptions(input *CreateDhcpOptionsInput) (*CreateDhcpOptionsOutput, error) { - req, out := c.CreateDhcpOptionsRequest(input) - err := req.Send() - return out, err -} - -const opCreateFlowLogs = "CreateFlowLogs" - -// CreateFlowLogsRequest generates a request for the CreateFlowLogs operation. -func (c *EC2) CreateFlowLogsRequest(input *CreateFlowLogsInput) (req *request.Request, output *CreateFlowLogsOutput) { - op := &request.Operation{ - Name: opCreateFlowLogs, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CreateFlowLogsInput{} - } - - req = c.newRequest(op, input, output) - output = &CreateFlowLogsOutput{} - req.Data = output - return -} - -// Creates one or more flow logs to capture IP traffic for a specific network -// interface, subnet, or VPC. Flow logs are delivered to a specified log group -// in Amazon CloudWatch Logs. If you specify a VPC or subnet in the request, -// a log stream is created in CloudWatch Logs for each network interface in -// the subnet or VPC. Log streams can include information about accepted and -// rejected traffic to a network interface. You can view the data in your log -// streams using Amazon CloudWatch Logs. -// -// In your request, you must also specify an IAM role that has permission to -// publish logs to CloudWatch Logs. -func (c *EC2) CreateFlowLogs(input *CreateFlowLogsInput) (*CreateFlowLogsOutput, error) { - req, out := c.CreateFlowLogsRequest(input) - err := req.Send() - return out, err -} - -const opCreateImage = "CreateImage" - -// CreateImageRequest generates a request for the CreateImage operation. -func (c *EC2) CreateImageRequest(input *CreateImageInput) (req *request.Request, output *CreateImageOutput) { - op := &request.Operation{ - Name: opCreateImage, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CreateImageInput{} - } - - req = c.newRequest(op, input, output) - output = &CreateImageOutput{} - req.Data = output - return -} - -// Creates an Amazon EBS-backed AMI from an Amazon EBS-backed instance that -// is either running or stopped. -// -// If you customized your instance with instance store volumes or EBS volumes -// in addition to the root device volume, the new AMI contains block device -// mapping information for those volumes. When you launch an instance from this -// new AMI, the instance automatically launches with those additional volumes. -// -// For more information, see Creating Amazon EBS-Backed Linux AMIs (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) CreateImage(input *CreateImageInput) (*CreateImageOutput, error) { - req, out := c.CreateImageRequest(input) - err := req.Send() - return out, err -} - -const opCreateInstanceExportTask = "CreateInstanceExportTask" - -// CreateInstanceExportTaskRequest generates a request for the CreateInstanceExportTask operation. -func (c *EC2) CreateInstanceExportTaskRequest(input *CreateInstanceExportTaskInput) (req *request.Request, output *CreateInstanceExportTaskOutput) { - op := &request.Operation{ - Name: opCreateInstanceExportTask, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CreateInstanceExportTaskInput{} - } - - req = c.newRequest(op, input, output) - output = &CreateInstanceExportTaskOutput{} - req.Data = output - return -} - -// Exports a running or stopped instance to an S3 bucket. -// -// For information about the supported operating systems, image formats, and -// known limitations for the types of instances you can export, see Exporting -// EC2 Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ExportingEC2Instances.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) CreateInstanceExportTask(input *CreateInstanceExportTaskInput) (*CreateInstanceExportTaskOutput, error) { - req, out := c.CreateInstanceExportTaskRequest(input) - err := req.Send() - return out, err -} - -const opCreateInternetGateway = "CreateInternetGateway" - -// CreateInternetGatewayRequest generates a request for the CreateInternetGateway operation. -func (c *EC2) CreateInternetGatewayRequest(input *CreateInternetGatewayInput) (req *request.Request, output *CreateInternetGatewayOutput) { - op := &request.Operation{ - Name: opCreateInternetGateway, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CreateInternetGatewayInput{} - } - - req = c.newRequest(op, input, output) - output = &CreateInternetGatewayOutput{} - req.Data = output - return -} - -// Creates an Internet gateway for use with a VPC. After creating the Internet -// gateway, you attach it to a VPC using AttachInternetGateway. -// -// For more information about your VPC and Internet gateway, see the Amazon -// Virtual Private Cloud User Guide (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/). -func (c *EC2) CreateInternetGateway(input *CreateInternetGatewayInput) (*CreateInternetGatewayOutput, error) { - req, out := c.CreateInternetGatewayRequest(input) - err := req.Send() - return out, err -} - -const opCreateKeyPair = "CreateKeyPair" - -// CreateKeyPairRequest generates a request for the CreateKeyPair operation. -func (c *EC2) CreateKeyPairRequest(input *CreateKeyPairInput) (req *request.Request, output *CreateKeyPairOutput) { - op := &request.Operation{ - Name: opCreateKeyPair, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CreateKeyPairInput{} - } - - req = c.newRequest(op, input, output) - output = &CreateKeyPairOutput{} - req.Data = output - return -} - -// Creates a 2048-bit RSA key pair with the specified name. Amazon EC2 stores -// the public key and displays the private key for you to save to a file. The -// private key is returned as an unencrypted PEM encoded PKCS#8 private key. -// If a key with the specified name already exists, Amazon EC2 returns an error. -// -// You can have up to five thousand key pairs per region. -// -// The key pair returned to you is available only in the region in which you -// create it. To create a key pair that is available in all regions, use ImportKeyPair. -// -// For more information about key pairs, see Key Pairs (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) CreateKeyPair(input *CreateKeyPairInput) (*CreateKeyPairOutput, error) { - req, out := c.CreateKeyPairRequest(input) - err := req.Send() - return out, err -} - -const opCreateNetworkAcl = "CreateNetworkAcl" - -// CreateNetworkAclRequest generates a request for the CreateNetworkAcl operation. -func (c *EC2) CreateNetworkAclRequest(input *CreateNetworkAclInput) (req *request.Request, output *CreateNetworkAclOutput) { - op := &request.Operation{ - Name: opCreateNetworkAcl, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CreateNetworkAclInput{} - } - - req = c.newRequest(op, input, output) - output = &CreateNetworkAclOutput{} - req.Data = output - return -} - -// Creates a network ACL in a VPC. Network ACLs provide an optional layer of -// security (in addition to security groups) for the instances in your VPC. -// -// For more information about network ACLs, see Network ACLs (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html) -// in the Amazon Virtual Private Cloud User Guide. -func (c *EC2) CreateNetworkAcl(input *CreateNetworkAclInput) (*CreateNetworkAclOutput, error) { - req, out := c.CreateNetworkAclRequest(input) - err := req.Send() - return out, err -} - -const opCreateNetworkAclEntry = "CreateNetworkAclEntry" - -// CreateNetworkAclEntryRequest generates a request for the CreateNetworkAclEntry operation. -func (c *EC2) CreateNetworkAclEntryRequest(input *CreateNetworkAclEntryInput) (req *request.Request, output *CreateNetworkAclEntryOutput) { - op := &request.Operation{ - Name: opCreateNetworkAclEntry, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CreateNetworkAclEntryInput{} - } - - req = c.newRequest(op, input, output) - output = &CreateNetworkAclEntryOutput{} - req.Data = output - return -} - -// Creates an entry (a rule) in a network ACL with the specified rule number. -// Each network ACL has a set of numbered ingress rules and a separate set of -// numbered egress rules. When determining whether a packet should be allowed -// in or out of a subnet associated with the ACL, we process the entries in -// the ACL according to the rule numbers, in ascending order. Each network ACL -// has a set of ingress rules and a separate set of egress rules. -// -// We recommend that you leave room between the rule numbers (for example, -// 100, 110, 120, ...), and not number them one right after the other (for example, -// 101, 102, 103, ...). This makes it easier to add a rule between existing -// ones without having to renumber the rules. -// -// After you add an entry, you can't modify it; you must either replace it, -// or create an entry and delete the old one. -// -// For more information about network ACLs, see Network ACLs (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html) -// in the Amazon Virtual Private Cloud User Guide. -func (c *EC2) CreateNetworkAclEntry(input *CreateNetworkAclEntryInput) (*CreateNetworkAclEntryOutput, error) { - req, out := c.CreateNetworkAclEntryRequest(input) - err := req.Send() - return out, err -} - -const opCreateNetworkInterface = "CreateNetworkInterface" - -// CreateNetworkInterfaceRequest generates a request for the CreateNetworkInterface operation. -func (c *EC2) CreateNetworkInterfaceRequest(input *CreateNetworkInterfaceInput) (req *request.Request, output *CreateNetworkInterfaceOutput) { - op := &request.Operation{ - Name: opCreateNetworkInterface, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CreateNetworkInterfaceInput{} - } - - req = c.newRequest(op, input, output) - output = &CreateNetworkInterfaceOutput{} - req.Data = output - return -} - -// Creates a network interface in the specified subnet. -// -// For more information about network interfaces, see Elastic Network Interfaces -// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html) in the -// Amazon Elastic Compute Cloud User Guide. -func (c *EC2) CreateNetworkInterface(input *CreateNetworkInterfaceInput) (*CreateNetworkInterfaceOutput, error) { - req, out := c.CreateNetworkInterfaceRequest(input) - err := req.Send() - return out, err -} - -const opCreatePlacementGroup = "CreatePlacementGroup" - -// CreatePlacementGroupRequest generates a request for the CreatePlacementGroup operation. -func (c *EC2) CreatePlacementGroupRequest(input *CreatePlacementGroupInput) (req *request.Request, output *CreatePlacementGroupOutput) { - op := &request.Operation{ - Name: opCreatePlacementGroup, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CreatePlacementGroupInput{} - } - - req = c.newRequest(op, input, output) - output = &CreatePlacementGroupOutput{} - req.Data = output - return -} - -// Creates a placement group that you launch cluster instances into. You must -// give the group a name that's unique within the scope of your account. -// -// For more information about placement groups and cluster instances, see Cluster -// Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using_cluster_computing.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) CreatePlacementGroup(input *CreatePlacementGroupInput) (*CreatePlacementGroupOutput, error) { - req, out := c.CreatePlacementGroupRequest(input) - err := req.Send() - return out, err -} - -const opCreateReservedInstancesListing = "CreateReservedInstancesListing" - -// CreateReservedInstancesListingRequest generates a request for the CreateReservedInstancesListing operation. -func (c *EC2) CreateReservedInstancesListingRequest(input *CreateReservedInstancesListingInput) (req *request.Request, output *CreateReservedInstancesListingOutput) { - op := &request.Operation{ - Name: opCreateReservedInstancesListing, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CreateReservedInstancesListingInput{} - } - - req = c.newRequest(op, input, output) - output = &CreateReservedInstancesListingOutput{} - req.Data = output - return -} - -// Creates a listing for Amazon EC2 Reserved instances to be sold in the Reserved -// Instance Marketplace. You can submit one Reserved instance listing at a time. -// To get a list of your Reserved instances, you can use the DescribeReservedInstances -// operation. -// -// The Reserved Instance Marketplace matches sellers who want to resell Reserved -// instance capacity that they no longer need with buyers who want to purchase -// additional capacity. Reserved instances bought and sold through the Reserved -// Instance Marketplace work like any other Reserved instances. -// -// To sell your Reserved instances, you must first register as a seller in -// the Reserved Instance Marketplace. After completing the registration process, -// you can create a Reserved Instance Marketplace listing of some or all of -// your Reserved Instances, and specify the upfront price to receive for them. -// Your Reserved instance listings then become available for purchase. To view -// the details of your Reserved instance listing, you can use the DescribeReservedInstancesListings -// operation. -// -// For more information, see Reserved Instance Marketplace (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) CreateReservedInstancesListing(input *CreateReservedInstancesListingInput) (*CreateReservedInstancesListingOutput, error) { - req, out := c.CreateReservedInstancesListingRequest(input) - err := req.Send() - return out, err -} - -const opCreateRoute = "CreateRoute" - -// CreateRouteRequest generates a request for the CreateRoute operation. -func (c *EC2) CreateRouteRequest(input *CreateRouteInput) (req *request.Request, output *CreateRouteOutput) { - op := &request.Operation{ - Name: opCreateRoute, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CreateRouteInput{} - } - - req = c.newRequest(op, input, output) - output = &CreateRouteOutput{} - req.Data = output - return -} - -// Creates a route in a route table within a VPC. -// -// You must specify one of the following targets: Internet gateway or virtual -// private gateway, NAT instance, VPC peering connection, or network interface. -// -// When determining how to route traffic, we use the route with the most specific -// match. For example, let's say the traffic is destined for 192.0.2.3, and -// the route table includes the following two routes: -// -// 192.0.2.0/24 (goes to some target A) -// -// 192.0.2.0/28 (goes to some target B) -// -// Both routes apply to the traffic destined for 192.0.2.3. However, the -// second route in the list covers a smaller number of IP addresses and is therefore -// more specific, so we use that route to determine where to target the traffic. -// -// For more information about route tables, see Route Tables (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html) -// in the Amazon Virtual Private Cloud User Guide. -func (c *EC2) CreateRoute(input *CreateRouteInput) (*CreateRouteOutput, error) { - req, out := c.CreateRouteRequest(input) - err := req.Send() - return out, err -} - -const opCreateRouteTable = "CreateRouteTable" - -// CreateRouteTableRequest generates a request for the CreateRouteTable operation. -func (c *EC2) CreateRouteTableRequest(input *CreateRouteTableInput) (req *request.Request, output *CreateRouteTableOutput) { - op := &request.Operation{ - Name: opCreateRouteTable, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CreateRouteTableInput{} - } - - req = c.newRequest(op, input, output) - output = &CreateRouteTableOutput{} - req.Data = output - return -} - -// Creates a route table for the specified VPC. After you create a route table, -// you can add routes and associate the table with a subnet. -// -// For more information about route tables, see Route Tables (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html) -// in the Amazon Virtual Private Cloud User Guide. -func (c *EC2) CreateRouteTable(input *CreateRouteTableInput) (*CreateRouteTableOutput, error) { - req, out := c.CreateRouteTableRequest(input) - err := req.Send() - return out, err -} - -const opCreateSecurityGroup = "CreateSecurityGroup" - -// CreateSecurityGroupRequest generates a request for the CreateSecurityGroup operation. -func (c *EC2) CreateSecurityGroupRequest(input *CreateSecurityGroupInput) (req *request.Request, output *CreateSecurityGroupOutput) { - op := &request.Operation{ - Name: opCreateSecurityGroup, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CreateSecurityGroupInput{} - } - - req = c.newRequest(op, input, output) - output = &CreateSecurityGroupOutput{} - req.Data = output - return -} - -// Creates a security group. -// -// A security group is for use with instances either in the EC2-Classic platform -// or in a specific VPC. For more information, see Amazon EC2 Security Groups -// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html) -// in the Amazon Elastic Compute Cloud User Guide and Security Groups for Your -// VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html) -// in the Amazon Virtual Private Cloud User Guide. -// -// EC2-Classic: You can have up to 500 security groups. -// -// EC2-VPC: You can create up to 100 security groups per VPC. -// -// When you create a security group, you specify a friendly name of your choice. -// You can have a security group for use in EC2-Classic with the same name as -// a security group for use in a VPC. However, you can't have two security groups -// for use in EC2-Classic with the same name or two security groups for use -// in a VPC with the same name. -// -// You have a default security group for use in EC2-Classic and a default security -// group for use in your VPC. If you don't specify a security group when you -// launch an instance, the instance is launched into the appropriate default -// security group. A default security group includes a default rule that grants -// instances unrestricted network access to each other. -// -// You can add or remove rules from your security groups using AuthorizeSecurityGroupIngress, -// AuthorizeSecurityGroupEgress, RevokeSecurityGroupIngress, and RevokeSecurityGroupEgress. -func (c *EC2) CreateSecurityGroup(input *CreateSecurityGroupInput) (*CreateSecurityGroupOutput, error) { - req, out := c.CreateSecurityGroupRequest(input) - err := req.Send() - return out, err -} - -const opCreateSnapshot = "CreateSnapshot" - -// CreateSnapshotRequest generates a request for the CreateSnapshot operation. -func (c *EC2) CreateSnapshotRequest(input *CreateSnapshotInput) (req *request.Request, output *Snapshot) { - op := &request.Operation{ - Name: opCreateSnapshot, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CreateSnapshotInput{} - } - - req = c.newRequest(op, input, output) - output = &Snapshot{} - req.Data = output - return -} - -// Creates a snapshot of an EBS volume and stores it in Amazon S3. You can use -// snapshots for backups, to make copies of EBS volumes, and to save data before -// shutting down an instance. -// -// When a snapshot is created, any AWS Marketplace product codes that are associated -// with the source volume are propagated to the snapshot. -// -// You can take a snapshot of an attached volume that is in use. However, snapshots -// only capture data that has been written to your EBS volume at the time the -// snapshot command is issued; this may exclude any data that has been cached -// by any applications or the operating system. If you can pause any file systems -// on the volume long enough to take a snapshot, your snapshot should be complete. -// However, if you cannot pause all file writes to the volume, you should unmount -// the volume from within the instance, issue the snapshot command, and then -// remount the volume to ensure a consistent and complete snapshot. You may -// remount and use your volume while the snapshot status is pending. -// -// To create a snapshot for EBS volumes that serve as root devices, you should -// stop the instance before taking the snapshot. -// -// Snapshots that are taken from encrypted volumes are automatically encrypted. -// Volumes that are created from encrypted snapshots are also automatically -// encrypted. Your encrypted volumes and any associated snapshots always remain -// protected. -// -// For more information, see Amazon Elastic Block Store (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) -// and Amazon EBS Encryption (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) CreateSnapshot(input *CreateSnapshotInput) (*Snapshot, error) { - req, out := c.CreateSnapshotRequest(input) - err := req.Send() - return out, err -} - -const opCreateSpotDatafeedSubscription = "CreateSpotDatafeedSubscription" - -// CreateSpotDatafeedSubscriptionRequest generates a request for the CreateSpotDatafeedSubscription operation. -func (c *EC2) CreateSpotDatafeedSubscriptionRequest(input *CreateSpotDatafeedSubscriptionInput) (req *request.Request, output *CreateSpotDatafeedSubscriptionOutput) { - op := &request.Operation{ - Name: opCreateSpotDatafeedSubscription, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CreateSpotDatafeedSubscriptionInput{} - } - - req = c.newRequest(op, input, output) - output = &CreateSpotDatafeedSubscriptionOutput{} - req.Data = output - return -} - -// Creates a data feed for Spot instances, enabling you to view Spot instance -// usage logs. You can create one data feed per AWS account. For more information, -// see Spot Instance Data Feed (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-data-feeds.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) CreateSpotDatafeedSubscription(input *CreateSpotDatafeedSubscriptionInput) (*CreateSpotDatafeedSubscriptionOutput, error) { - req, out := c.CreateSpotDatafeedSubscriptionRequest(input) - err := req.Send() - return out, err -} - -const opCreateSubnet = "CreateSubnet" - -// CreateSubnetRequest generates a request for the CreateSubnet operation. -func (c *EC2) CreateSubnetRequest(input *CreateSubnetInput) (req *request.Request, output *CreateSubnetOutput) { - op := &request.Operation{ - Name: opCreateSubnet, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CreateSubnetInput{} - } - - req = c.newRequest(op, input, output) - output = &CreateSubnetOutput{} - req.Data = output - return -} - -// Creates a subnet in an existing VPC. -// -// When you create each subnet, you provide the VPC ID and the CIDR block you -// want for the subnet. After you create a subnet, you can't change its CIDR -// block. The subnet's CIDR block can be the same as the VPC's CIDR block (assuming -// you want only a single subnet in the VPC), or a subset of the VPC's CIDR -// block. If you create more than one subnet in a VPC, the subnets' CIDR blocks -// must not overlap. The smallest subnet (and VPC) you can create uses a /28 -// netmask (16 IP addresses), and the largest uses a /16 netmask (65,536 IP -// addresses). -// -// AWS reserves both the first four and the last IP address in each subnet's -// CIDR block. They're not available for use. -// -// If you add more than one subnet to a VPC, they're set up in a star topology -// with a logical router in the middle. -// -// If you launch an instance in a VPC using an Amazon EBS-backed AMI, the IP -// address doesn't change if you stop and restart the instance (unlike a similar -// instance launched outside a VPC, which gets a new IP address when restarted). -// It's therefore possible to have a subnet with no running instances (they're -// all stopped), but no remaining IP addresses available. -// -// For more information about subnets, see Your VPC and Subnets (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Subnets.html) -// in the Amazon Virtual Private Cloud User Guide. -func (c *EC2) CreateSubnet(input *CreateSubnetInput) (*CreateSubnetOutput, error) { - req, out := c.CreateSubnetRequest(input) - err := req.Send() - return out, err -} - -const opCreateTags = "CreateTags" - -// CreateTagsRequest generates a request for the CreateTags operation. -func (c *EC2) CreateTagsRequest(input *CreateTagsInput) (req *request.Request, output *CreateTagsOutput) { - op := &request.Operation{ - Name: opCreateTags, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CreateTagsInput{} - } - - req = c.newRequest(op, input, output) - output = &CreateTagsOutput{} - req.Data = output - return -} - -// Adds or overwrites one or more tags for the specified Amazon EC2 resource -// or resources. Each resource can have a maximum of 10 tags. Each tag consists -// of a key and optional value. Tag keys must be unique per resource. -// -// For more information about tags, see Tagging Your Resources (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html) -// in the Amazon Elastic Compute Cloud User Guide. For more information about -// creating IAM policies that control users' access to resources based on tags, -// see Supported Resource-Level Permissions for Amazon EC2 API Actions (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-iam-actions-resources.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) CreateTags(input *CreateTagsInput) (*CreateTagsOutput, error) { - req, out := c.CreateTagsRequest(input) - err := req.Send() - return out, err -} - -const opCreateVolume = "CreateVolume" - -// CreateVolumeRequest generates a request for the CreateVolume operation. -func (c *EC2) CreateVolumeRequest(input *CreateVolumeInput) (req *request.Request, output *Volume) { - op := &request.Operation{ - Name: opCreateVolume, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CreateVolumeInput{} - } - - req = c.newRequest(op, input, output) - output = &Volume{} - req.Data = output - return -} - -// Creates an EBS volume that can be attached to an instance in the same Availability -// Zone. The volume is created in the regional endpoint that you send the HTTP -// request to. For more information see Regions and Endpoints (http://docs.aws.amazon.com/general/latest/gr/rande.html). -// -// You can create a new empty volume or restore a volume from an EBS snapshot. -// Any AWS Marketplace product codes from the snapshot are propagated to the -// volume. -// -// You can create encrypted volumes with the Encrypted parameter. Encrypted -// volumes may only be attached to instances that support Amazon EBS encryption. -// Volumes that are created from encrypted snapshots are also automatically -// encrypted. For more information, see Amazon EBS Encryption (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html) -// in the Amazon Elastic Compute Cloud User Guide. -// -// For more information, see Creating or Restoring an Amazon EBS Volume (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-creating-volume.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) CreateVolume(input *CreateVolumeInput) (*Volume, error) { - req, out := c.CreateVolumeRequest(input) - err := req.Send() - return out, err -} - -const opCreateVpc = "CreateVpc" - -// CreateVpcRequest generates a request for the CreateVpc operation. -func (c *EC2) CreateVpcRequest(input *CreateVpcInput) (req *request.Request, output *CreateVpcOutput) { - op := &request.Operation{ - Name: opCreateVpc, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CreateVpcInput{} - } - - req = c.newRequest(op, input, output) - output = &CreateVpcOutput{} - req.Data = output - return -} - -// Creates a VPC with the specified CIDR block. -// -// The smallest VPC you can create uses a /28 netmask (16 IP addresses), and -// the largest uses a /16 netmask (65,536 IP addresses). To help you decide -// how big to make your VPC, see Your VPC and Subnets (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Subnets.html) -// in the Amazon Virtual Private Cloud User Guide. -// -// By default, each instance you launch in the VPC has the default DHCP options, -// which includes only a default DNS server that we provide (AmazonProvidedDNS). -// For more information about DHCP options, see DHCP Options Sets (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_DHCP_Options.html) -// in the Amazon Virtual Private Cloud User Guide. -func (c *EC2) CreateVpc(input *CreateVpcInput) (*CreateVpcOutput, error) { - req, out := c.CreateVpcRequest(input) - err := req.Send() - return out, err -} - -const opCreateVpcEndpoint = "CreateVpcEndpoint" - -// CreateVpcEndpointRequest generates a request for the CreateVpcEndpoint operation. -func (c *EC2) CreateVpcEndpointRequest(input *CreateVpcEndpointInput) (req *request.Request, output *CreateVpcEndpointOutput) { - op := &request.Operation{ - Name: opCreateVpcEndpoint, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CreateVpcEndpointInput{} - } - - req = c.newRequest(op, input, output) - output = &CreateVpcEndpointOutput{} - req.Data = output - return -} - -// Creates a VPC endpoint for a specified AWS service. An endpoint enables you -// to create a private connection between your VPC and another AWS service in -// your account. You can specify an endpoint policy to attach to the endpoint -// that will control access to the service from your VPC. You can also specify -// the VPC route tables that use the endpoint. -// -// Currently, only endpoints to Amazon S3 are supported. -func (c *EC2) CreateVpcEndpoint(input *CreateVpcEndpointInput) (*CreateVpcEndpointOutput, error) { - req, out := c.CreateVpcEndpointRequest(input) - err := req.Send() - return out, err -} - -const opCreateVpcPeeringConnection = "CreateVpcPeeringConnection" - -// CreateVpcPeeringConnectionRequest generates a request for the CreateVpcPeeringConnection operation. -func (c *EC2) CreateVpcPeeringConnectionRequest(input *CreateVpcPeeringConnectionInput) (req *request.Request, output *CreateVpcPeeringConnectionOutput) { - op := &request.Operation{ - Name: opCreateVpcPeeringConnection, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CreateVpcPeeringConnectionInput{} - } - - req = c.newRequest(op, input, output) - output = &CreateVpcPeeringConnectionOutput{} - req.Data = output - return -} - -// Requests a VPC peering connection between two VPCs: a requester VPC that -// you own and a peer VPC with which to create the connection. The peer VPC -// can belong to another AWS account. The requester VPC and peer VPC cannot -// have overlapping CIDR blocks. -// -// The owner of the peer VPC must accept the peering request to activate the -// peering connection. The VPC peering connection request expires after 7 days, -// after which it cannot be accepted or rejected. -// -// A CreateVpcPeeringConnection request between VPCs with overlapping CIDR -// blocks results in the VPC peering connection having a status of failed. -func (c *EC2) CreateVpcPeeringConnection(input *CreateVpcPeeringConnectionInput) (*CreateVpcPeeringConnectionOutput, error) { - req, out := c.CreateVpcPeeringConnectionRequest(input) - err := req.Send() - return out, err -} - -const opCreateVpnConnection = "CreateVpnConnection" - -// CreateVpnConnectionRequest generates a request for the CreateVpnConnection operation. -func (c *EC2) CreateVpnConnectionRequest(input *CreateVpnConnectionInput) (req *request.Request, output *CreateVpnConnectionOutput) { - op := &request.Operation{ - Name: opCreateVpnConnection, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CreateVpnConnectionInput{} - } - - req = c.newRequest(op, input, output) - output = &CreateVpnConnectionOutput{} - req.Data = output - return -} - -// Creates a VPN connection between an existing virtual private gateway and -// a VPN customer gateway. The only supported connection type is ipsec.1. -// -// The response includes information that you need to give to your network -// administrator to configure your customer gateway. -// -// We strongly recommend that you use HTTPS when calling this operation because -// the response contains sensitive cryptographic information for configuring -// your customer gateway. -// -// If you decide to shut down your VPN connection for any reason and later -// create a new VPN connection, you must reconfigure your customer gateway with -// the new information returned from this call. -// -// For more information about VPN connections, see Adding a Hardware Virtual -// Private Gateway to Your VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html) -// in the Amazon Virtual Private Cloud User Guide. -func (c *EC2) CreateVpnConnection(input *CreateVpnConnectionInput) (*CreateVpnConnectionOutput, error) { - req, out := c.CreateVpnConnectionRequest(input) - err := req.Send() - return out, err -} - -const opCreateVpnConnectionRoute = "CreateVpnConnectionRoute" - -// CreateVpnConnectionRouteRequest generates a request for the CreateVpnConnectionRoute operation. -func (c *EC2) CreateVpnConnectionRouteRequest(input *CreateVpnConnectionRouteInput) (req *request.Request, output *CreateVpnConnectionRouteOutput) { - op := &request.Operation{ - Name: opCreateVpnConnectionRoute, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CreateVpnConnectionRouteInput{} - } - - req = c.newRequest(op, input, output) - output = &CreateVpnConnectionRouteOutput{} - req.Data = output - return -} - -// Creates a static route associated with a VPN connection between an existing -// virtual private gateway and a VPN customer gateway. The static route allows -// traffic to be routed from the virtual private gateway to the VPN customer -// gateway. -// -// For more information about VPN connections, see Adding a Hardware Virtual -// Private Gateway to Your VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html) -// in the Amazon Virtual Private Cloud User Guide. -func (c *EC2) CreateVpnConnectionRoute(input *CreateVpnConnectionRouteInput) (*CreateVpnConnectionRouteOutput, error) { - req, out := c.CreateVpnConnectionRouteRequest(input) - err := req.Send() - return out, err -} - -const opCreateVpnGateway = "CreateVpnGateway" - -// CreateVpnGatewayRequest generates a request for the CreateVpnGateway operation. -func (c *EC2) CreateVpnGatewayRequest(input *CreateVpnGatewayInput) (req *request.Request, output *CreateVpnGatewayOutput) { - op := &request.Operation{ - Name: opCreateVpnGateway, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &CreateVpnGatewayInput{} - } - - req = c.newRequest(op, input, output) - output = &CreateVpnGatewayOutput{} - req.Data = output - return -} - -// Creates a virtual private gateway. A virtual private gateway is the endpoint -// on the VPC side of your VPN connection. You can create a virtual private -// gateway before creating the VPC itself. -// -// For more information about virtual private gateways, see Adding a Hardware -// Virtual Private Gateway to Your VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html) -// in the Amazon Virtual Private Cloud User Guide. -func (c *EC2) CreateVpnGateway(input *CreateVpnGatewayInput) (*CreateVpnGatewayOutput, error) { - req, out := c.CreateVpnGatewayRequest(input) - err := req.Send() - return out, err -} - -const opDeleteCustomerGateway = "DeleteCustomerGateway" - -// DeleteCustomerGatewayRequest generates a request for the DeleteCustomerGateway operation. -func (c *EC2) DeleteCustomerGatewayRequest(input *DeleteCustomerGatewayInput) (req *request.Request, output *DeleteCustomerGatewayOutput) { - op := &request.Operation{ - Name: opDeleteCustomerGateway, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DeleteCustomerGatewayInput{} - } - - req = c.newRequest(op, input, output) - output = &DeleteCustomerGatewayOutput{} - req.Data = output - return -} - -// Deletes the specified customer gateway. You must delete the VPN connection -// before you can delete the customer gateway. -func (c *EC2) DeleteCustomerGateway(input *DeleteCustomerGatewayInput) (*DeleteCustomerGatewayOutput, error) { - req, out := c.DeleteCustomerGatewayRequest(input) - err := req.Send() - return out, err -} - -const opDeleteDhcpOptions = "DeleteDhcpOptions" - -// DeleteDhcpOptionsRequest generates a request for the DeleteDhcpOptions operation. -func (c *EC2) DeleteDhcpOptionsRequest(input *DeleteDhcpOptionsInput) (req *request.Request, output *DeleteDhcpOptionsOutput) { - op := &request.Operation{ - Name: opDeleteDhcpOptions, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DeleteDhcpOptionsInput{} - } - - req = c.newRequest(op, input, output) - output = &DeleteDhcpOptionsOutput{} - req.Data = output - return -} - -// Deletes the specified set of DHCP options. You must disassociate the set -// of DHCP options before you can delete it. You can disassociate the set of -// DHCP options by associating either a new set of options or the default set -// of options with the VPC. -func (c *EC2) DeleteDhcpOptions(input *DeleteDhcpOptionsInput) (*DeleteDhcpOptionsOutput, error) { - req, out := c.DeleteDhcpOptionsRequest(input) - err := req.Send() - return out, err -} - -const opDeleteFlowLogs = "DeleteFlowLogs" - -// DeleteFlowLogsRequest generates a request for the DeleteFlowLogs operation. -func (c *EC2) DeleteFlowLogsRequest(input *DeleteFlowLogsInput) (req *request.Request, output *DeleteFlowLogsOutput) { - op := &request.Operation{ - Name: opDeleteFlowLogs, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DeleteFlowLogsInput{} - } - - req = c.newRequest(op, input, output) - output = &DeleteFlowLogsOutput{} - req.Data = output - return -} - -// Deletes one or more flow logs. -func (c *EC2) DeleteFlowLogs(input *DeleteFlowLogsInput) (*DeleteFlowLogsOutput, error) { - req, out := c.DeleteFlowLogsRequest(input) - err := req.Send() - return out, err -} - -const opDeleteInternetGateway = "DeleteInternetGateway" - -// DeleteInternetGatewayRequest generates a request for the DeleteInternetGateway operation. -func (c *EC2) DeleteInternetGatewayRequest(input *DeleteInternetGatewayInput) (req *request.Request, output *DeleteInternetGatewayOutput) { - op := &request.Operation{ - Name: opDeleteInternetGateway, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DeleteInternetGatewayInput{} - } - - req = c.newRequest(op, input, output) - output = &DeleteInternetGatewayOutput{} - req.Data = output - return -} - -// Deletes the specified Internet gateway. You must detach the Internet gateway -// from the VPC before you can delete it. -func (c *EC2) DeleteInternetGateway(input *DeleteInternetGatewayInput) (*DeleteInternetGatewayOutput, error) { - req, out := c.DeleteInternetGatewayRequest(input) - err := req.Send() - return out, err -} - -const opDeleteKeyPair = "DeleteKeyPair" - -// DeleteKeyPairRequest generates a request for the DeleteKeyPair operation. -func (c *EC2) DeleteKeyPairRequest(input *DeleteKeyPairInput) (req *request.Request, output *DeleteKeyPairOutput) { - op := &request.Operation{ - Name: opDeleteKeyPair, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DeleteKeyPairInput{} - } - - req = c.newRequest(op, input, output) - output = &DeleteKeyPairOutput{} - req.Data = output - return -} - -// Deletes the specified key pair, by removing the public key from Amazon EC2. -func (c *EC2) DeleteKeyPair(input *DeleteKeyPairInput) (*DeleteKeyPairOutput, error) { - req, out := c.DeleteKeyPairRequest(input) - err := req.Send() - return out, err -} - -const opDeleteNetworkAcl = "DeleteNetworkAcl" - -// DeleteNetworkAclRequest generates a request for the DeleteNetworkAcl operation. -func (c *EC2) DeleteNetworkAclRequest(input *DeleteNetworkAclInput) (req *request.Request, output *DeleteNetworkAclOutput) { - op := &request.Operation{ - Name: opDeleteNetworkAcl, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DeleteNetworkAclInput{} - } - - req = c.newRequest(op, input, output) - output = &DeleteNetworkAclOutput{} - req.Data = output - return -} - -// Deletes the specified network ACL. You can't delete the ACL if it's associated -// with any subnets. You can't delete the default network ACL. -func (c *EC2) DeleteNetworkAcl(input *DeleteNetworkAclInput) (*DeleteNetworkAclOutput, error) { - req, out := c.DeleteNetworkAclRequest(input) - err := req.Send() - return out, err -} - -const opDeleteNetworkAclEntry = "DeleteNetworkAclEntry" - -// DeleteNetworkAclEntryRequest generates a request for the DeleteNetworkAclEntry operation. -func (c *EC2) DeleteNetworkAclEntryRequest(input *DeleteNetworkAclEntryInput) (req *request.Request, output *DeleteNetworkAclEntryOutput) { - op := &request.Operation{ - Name: opDeleteNetworkAclEntry, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DeleteNetworkAclEntryInput{} - } - - req = c.newRequest(op, input, output) - output = &DeleteNetworkAclEntryOutput{} - req.Data = output - return -} - -// Deletes the specified ingress or egress entry (rule) from the specified network -// ACL. -func (c *EC2) DeleteNetworkAclEntry(input *DeleteNetworkAclEntryInput) (*DeleteNetworkAclEntryOutput, error) { - req, out := c.DeleteNetworkAclEntryRequest(input) - err := req.Send() - return out, err -} - -const opDeleteNetworkInterface = "DeleteNetworkInterface" - -// DeleteNetworkInterfaceRequest generates a request for the DeleteNetworkInterface operation. -func (c *EC2) DeleteNetworkInterfaceRequest(input *DeleteNetworkInterfaceInput) (req *request.Request, output *DeleteNetworkInterfaceOutput) { - op := &request.Operation{ - Name: opDeleteNetworkInterface, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DeleteNetworkInterfaceInput{} - } - - req = c.newRequest(op, input, output) - output = &DeleteNetworkInterfaceOutput{} - req.Data = output - return -} - -// Deletes the specified network interface. You must detach the network interface -// before you can delete it. -func (c *EC2) DeleteNetworkInterface(input *DeleteNetworkInterfaceInput) (*DeleteNetworkInterfaceOutput, error) { - req, out := c.DeleteNetworkInterfaceRequest(input) - err := req.Send() - return out, err -} - -const opDeletePlacementGroup = "DeletePlacementGroup" - -// DeletePlacementGroupRequest generates a request for the DeletePlacementGroup operation. -func (c *EC2) DeletePlacementGroupRequest(input *DeletePlacementGroupInput) (req *request.Request, output *DeletePlacementGroupOutput) { - op := &request.Operation{ - Name: opDeletePlacementGroup, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DeletePlacementGroupInput{} - } - - req = c.newRequest(op, input, output) - output = &DeletePlacementGroupOutput{} - req.Data = output - return -} - -// Deletes the specified placement group. You must terminate all instances in -// the placement group before you can delete the placement group. For more information -// about placement groups and cluster instances, see Cluster Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using_cluster_computing.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) DeletePlacementGroup(input *DeletePlacementGroupInput) (*DeletePlacementGroupOutput, error) { - req, out := c.DeletePlacementGroupRequest(input) - err := req.Send() - return out, err -} - -const opDeleteRoute = "DeleteRoute" - -// DeleteRouteRequest generates a request for the DeleteRoute operation. -func (c *EC2) DeleteRouteRequest(input *DeleteRouteInput) (req *request.Request, output *DeleteRouteOutput) { - op := &request.Operation{ - Name: opDeleteRoute, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DeleteRouteInput{} - } - - req = c.newRequest(op, input, output) - output = &DeleteRouteOutput{} - req.Data = output - return -} - -// Deletes the specified route from the specified route table. -func (c *EC2) DeleteRoute(input *DeleteRouteInput) (*DeleteRouteOutput, error) { - req, out := c.DeleteRouteRequest(input) - err := req.Send() - return out, err -} - -const opDeleteRouteTable = "DeleteRouteTable" - -// DeleteRouteTableRequest generates a request for the DeleteRouteTable operation. -func (c *EC2) DeleteRouteTableRequest(input *DeleteRouteTableInput) (req *request.Request, output *DeleteRouteTableOutput) { - op := &request.Operation{ - Name: opDeleteRouteTable, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DeleteRouteTableInput{} - } - - req = c.newRequest(op, input, output) - output = &DeleteRouteTableOutput{} - req.Data = output - return -} - -// Deletes the specified route table. You must disassociate the route table -// from any subnets before you can delete it. You can't delete the main route -// table. -func (c *EC2) DeleteRouteTable(input *DeleteRouteTableInput) (*DeleteRouteTableOutput, error) { - req, out := c.DeleteRouteTableRequest(input) - err := req.Send() - return out, err -} - -const opDeleteSecurityGroup = "DeleteSecurityGroup" - -// DeleteSecurityGroupRequest generates a request for the DeleteSecurityGroup operation. -func (c *EC2) DeleteSecurityGroupRequest(input *DeleteSecurityGroupInput) (req *request.Request, output *DeleteSecurityGroupOutput) { - op := &request.Operation{ - Name: opDeleteSecurityGroup, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DeleteSecurityGroupInput{} - } - - req = c.newRequest(op, input, output) - output = &DeleteSecurityGroupOutput{} - req.Data = output - return -} - -// Deletes a security group. -// -// If you attempt to delete a security group that is associated with an instance, -// or is referenced by another security group, the operation fails with InvalidGroup.InUse -// in EC2-Classic or DependencyViolation in EC2-VPC. -func (c *EC2) DeleteSecurityGroup(input *DeleteSecurityGroupInput) (*DeleteSecurityGroupOutput, error) { - req, out := c.DeleteSecurityGroupRequest(input) - err := req.Send() - return out, err -} - -const opDeleteSnapshot = "DeleteSnapshot" - -// DeleteSnapshotRequest generates a request for the DeleteSnapshot operation. -func (c *EC2) DeleteSnapshotRequest(input *DeleteSnapshotInput) (req *request.Request, output *DeleteSnapshotOutput) { - op := &request.Operation{ - Name: opDeleteSnapshot, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DeleteSnapshotInput{} - } - - req = c.newRequest(op, input, output) - output = &DeleteSnapshotOutput{} - req.Data = output - return -} - -// Deletes the specified snapshot. -// -// When you make periodic snapshots of a volume, the snapshots are incremental, -// and only the blocks on the device that have changed since your last snapshot -// are saved in the new snapshot. When you delete a snapshot, only the data -// not needed for any other snapshot is removed. So regardless of which prior -// snapshots have been deleted, all active snapshots will have access to all -// the information needed to restore the volume. -// -// You cannot delete a snapshot of the root device of an EBS volume used by -// a registered AMI. You must first de-register the AMI before you can delete -// the snapshot. -// -// For more information, see Deleting an Amazon EBS Snapshot (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-deleting-snapshot.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) DeleteSnapshot(input *DeleteSnapshotInput) (*DeleteSnapshotOutput, error) { - req, out := c.DeleteSnapshotRequest(input) - err := req.Send() - return out, err -} - -const opDeleteSpotDatafeedSubscription = "DeleteSpotDatafeedSubscription" - -// DeleteSpotDatafeedSubscriptionRequest generates a request for the DeleteSpotDatafeedSubscription operation. -func (c *EC2) DeleteSpotDatafeedSubscriptionRequest(input *DeleteSpotDatafeedSubscriptionInput) (req *request.Request, output *DeleteSpotDatafeedSubscriptionOutput) { - op := &request.Operation{ - Name: opDeleteSpotDatafeedSubscription, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DeleteSpotDatafeedSubscriptionInput{} - } - - req = c.newRequest(op, input, output) - output = &DeleteSpotDatafeedSubscriptionOutput{} - req.Data = output - return -} - -// Deletes the data feed for Spot instances. -func (c *EC2) DeleteSpotDatafeedSubscription(input *DeleteSpotDatafeedSubscriptionInput) (*DeleteSpotDatafeedSubscriptionOutput, error) { - req, out := c.DeleteSpotDatafeedSubscriptionRequest(input) - err := req.Send() - return out, err -} - -const opDeleteSubnet = "DeleteSubnet" - -// DeleteSubnetRequest generates a request for the DeleteSubnet operation. -func (c *EC2) DeleteSubnetRequest(input *DeleteSubnetInput) (req *request.Request, output *DeleteSubnetOutput) { - op := &request.Operation{ - Name: opDeleteSubnet, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DeleteSubnetInput{} - } - - req = c.newRequest(op, input, output) - output = &DeleteSubnetOutput{} - req.Data = output - return -} - -// Deletes the specified subnet. You must terminate all running instances in -// the subnet before you can delete the subnet. -func (c *EC2) DeleteSubnet(input *DeleteSubnetInput) (*DeleteSubnetOutput, error) { - req, out := c.DeleteSubnetRequest(input) - err := req.Send() - return out, err -} - -const opDeleteTags = "DeleteTags" - -// DeleteTagsRequest generates a request for the DeleteTags operation. -func (c *EC2) DeleteTagsRequest(input *DeleteTagsInput) (req *request.Request, output *DeleteTagsOutput) { - op := &request.Operation{ - Name: opDeleteTags, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DeleteTagsInput{} - } - - req = c.newRequest(op, input, output) - output = &DeleteTagsOutput{} - req.Data = output - return -} - -// Deletes the specified set of tags from the specified set of resources. This -// call is designed to follow a DescribeTags request. -// -// For more information about tags, see Tagging Your Resources (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) DeleteTags(input *DeleteTagsInput) (*DeleteTagsOutput, error) { - req, out := c.DeleteTagsRequest(input) - err := req.Send() - return out, err -} - -const opDeleteVolume = "DeleteVolume" - -// DeleteVolumeRequest generates a request for the DeleteVolume operation. -func (c *EC2) DeleteVolumeRequest(input *DeleteVolumeInput) (req *request.Request, output *DeleteVolumeOutput) { - op := &request.Operation{ - Name: opDeleteVolume, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DeleteVolumeInput{} - } - - req = c.newRequest(op, input, output) - output = &DeleteVolumeOutput{} - req.Data = output - return -} - -// Deletes the specified EBS volume. The volume must be in the available state -// (not attached to an instance). -// -// The volume may remain in the deleting state for several minutes. -// -// For more information, see Deleting an Amazon EBS Volume (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-deleting-volume.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) DeleteVolume(input *DeleteVolumeInput) (*DeleteVolumeOutput, error) { - req, out := c.DeleteVolumeRequest(input) - err := req.Send() - return out, err -} - -const opDeleteVpc = "DeleteVpc" - -// DeleteVpcRequest generates a request for the DeleteVpc operation. -func (c *EC2) DeleteVpcRequest(input *DeleteVpcInput) (req *request.Request, output *DeleteVpcOutput) { - op := &request.Operation{ - Name: opDeleteVpc, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DeleteVpcInput{} - } - - req = c.newRequest(op, input, output) - output = &DeleteVpcOutput{} - req.Data = output - return -} - -// Deletes the specified VPC. You must detach or delete all gateways and resources -// that are associated with the VPC before you can delete it. For example, you -// must terminate all instances running in the VPC, delete all security groups -// associated with the VPC (except the default one), delete all route tables -// associated with the VPC (except the default one), and so on. -func (c *EC2) DeleteVpc(input *DeleteVpcInput) (*DeleteVpcOutput, error) { - req, out := c.DeleteVpcRequest(input) - err := req.Send() - return out, err -} - -const opDeleteVpcEndpoints = "DeleteVpcEndpoints" - -// DeleteVpcEndpointsRequest generates a request for the DeleteVpcEndpoints operation. -func (c *EC2) DeleteVpcEndpointsRequest(input *DeleteVpcEndpointsInput) (req *request.Request, output *DeleteVpcEndpointsOutput) { - op := &request.Operation{ - Name: opDeleteVpcEndpoints, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DeleteVpcEndpointsInput{} - } - - req = c.newRequest(op, input, output) - output = &DeleteVpcEndpointsOutput{} - req.Data = output - return -} - -// Deletes one or more specified VPC endpoints. Deleting the endpoint also deletes -// the endpoint routes in the route tables that were associated with the endpoint. -func (c *EC2) DeleteVpcEndpoints(input *DeleteVpcEndpointsInput) (*DeleteVpcEndpointsOutput, error) { - req, out := c.DeleteVpcEndpointsRequest(input) - err := req.Send() - return out, err -} - -const opDeleteVpcPeeringConnection = "DeleteVpcPeeringConnection" - -// DeleteVpcPeeringConnectionRequest generates a request for the DeleteVpcPeeringConnection operation. -func (c *EC2) DeleteVpcPeeringConnectionRequest(input *DeleteVpcPeeringConnectionInput) (req *request.Request, output *DeleteVpcPeeringConnectionOutput) { - op := &request.Operation{ - Name: opDeleteVpcPeeringConnection, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DeleteVpcPeeringConnectionInput{} - } - - req = c.newRequest(op, input, output) - output = &DeleteVpcPeeringConnectionOutput{} - req.Data = output - return -} - -// Deletes a VPC peering connection. Either the owner of the requester VPC or -// the owner of the peer VPC can delete the VPC peering connection if it's in -// the active state. The owner of the requester VPC can delete a VPC peering -// connection in the pending-acceptance state. -func (c *EC2) DeleteVpcPeeringConnection(input *DeleteVpcPeeringConnectionInput) (*DeleteVpcPeeringConnectionOutput, error) { - req, out := c.DeleteVpcPeeringConnectionRequest(input) - err := req.Send() - return out, err -} - -const opDeleteVpnConnection = "DeleteVpnConnection" - -// DeleteVpnConnectionRequest generates a request for the DeleteVpnConnection operation. -func (c *EC2) DeleteVpnConnectionRequest(input *DeleteVpnConnectionInput) (req *request.Request, output *DeleteVpnConnectionOutput) { - op := &request.Operation{ - Name: opDeleteVpnConnection, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DeleteVpnConnectionInput{} - } - - req = c.newRequest(op, input, output) - output = &DeleteVpnConnectionOutput{} - req.Data = output - return -} - -// Deletes the specified VPN connection. -// -// If you're deleting the VPC and its associated components, we recommend that -// you detach the virtual private gateway from the VPC and delete the VPC before -// deleting the VPN connection. If you believe that the tunnel credentials for -// your VPN connection have been compromised, you can delete the VPN connection -// and create a new one that has new keys, without needing to delete the VPC -// or virtual private gateway. If you create a new VPN connection, you must -// reconfigure the customer gateway using the new configuration information -// returned with the new VPN connection ID. -func (c *EC2) DeleteVpnConnection(input *DeleteVpnConnectionInput) (*DeleteVpnConnectionOutput, error) { - req, out := c.DeleteVpnConnectionRequest(input) - err := req.Send() - return out, err -} - -const opDeleteVpnConnectionRoute = "DeleteVpnConnectionRoute" - -// DeleteVpnConnectionRouteRequest generates a request for the DeleteVpnConnectionRoute operation. -func (c *EC2) DeleteVpnConnectionRouteRequest(input *DeleteVpnConnectionRouteInput) (req *request.Request, output *DeleteVpnConnectionRouteOutput) { - op := &request.Operation{ - Name: opDeleteVpnConnectionRoute, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DeleteVpnConnectionRouteInput{} - } - - req = c.newRequest(op, input, output) - output = &DeleteVpnConnectionRouteOutput{} - req.Data = output - return -} - -// Deletes the specified static route associated with a VPN connection between -// an existing virtual private gateway and a VPN customer gateway. The static -// route allows traffic to be routed from the virtual private gateway to the -// VPN customer gateway. -func (c *EC2) DeleteVpnConnectionRoute(input *DeleteVpnConnectionRouteInput) (*DeleteVpnConnectionRouteOutput, error) { - req, out := c.DeleteVpnConnectionRouteRequest(input) - err := req.Send() - return out, err -} - -const opDeleteVpnGateway = "DeleteVpnGateway" - -// DeleteVpnGatewayRequest generates a request for the DeleteVpnGateway operation. -func (c *EC2) DeleteVpnGatewayRequest(input *DeleteVpnGatewayInput) (req *request.Request, output *DeleteVpnGatewayOutput) { - op := &request.Operation{ - Name: opDeleteVpnGateway, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DeleteVpnGatewayInput{} - } - - req = c.newRequest(op, input, output) - output = &DeleteVpnGatewayOutput{} - req.Data = output - return -} - -// Deletes the specified virtual private gateway. We recommend that before you -// delete a virtual private gateway, you detach it from the VPC and delete the -// VPN connection. Note that you don't need to delete the virtual private gateway -// if you plan to delete and recreate the VPN connection between your VPC and -// your network. -func (c *EC2) DeleteVpnGateway(input *DeleteVpnGatewayInput) (*DeleteVpnGatewayOutput, error) { - req, out := c.DeleteVpnGatewayRequest(input) - err := req.Send() - return out, err -} - -const opDeregisterImage = "DeregisterImage" - -// DeregisterImageRequest generates a request for the DeregisterImage operation. -func (c *EC2) DeregisterImageRequest(input *DeregisterImageInput) (req *request.Request, output *DeregisterImageOutput) { - op := &request.Operation{ - Name: opDeregisterImage, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DeregisterImageInput{} - } - - req = c.newRequest(op, input, output) - output = &DeregisterImageOutput{} - req.Data = output - return -} - -// Deregisters the specified AMI. After you deregister an AMI, it can't be used -// to launch new instances. -// -// This command does not delete the AMI. -func (c *EC2) DeregisterImage(input *DeregisterImageInput) (*DeregisterImageOutput, error) { - req, out := c.DeregisterImageRequest(input) - err := req.Send() - return out, err -} - -const opDescribeAccountAttributes = "DescribeAccountAttributes" - -// DescribeAccountAttributesRequest generates a request for the DescribeAccountAttributes operation. -func (c *EC2) DescribeAccountAttributesRequest(input *DescribeAccountAttributesInput) (req *request.Request, output *DescribeAccountAttributesOutput) { - op := &request.Operation{ - Name: opDescribeAccountAttributes, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeAccountAttributesInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeAccountAttributesOutput{} - req.Data = output - return -} - -// Describes attributes of your AWS account. The following are the supported -// account attributes: -// -// supported-platforms: Indicates whether your account can launch instances -// into EC2-Classic and EC2-VPC, or only into EC2-VPC. -// -// default-vpc: The ID of the default VPC for your account, or none. -// -// max-instances: The maximum number of On-Demand instances that you can -// run. -// -// vpc-max-security-groups-per-interface: The maximum number of security -// groups that you can assign to a network interface. -// -// max-elastic-ips: The maximum number of Elastic IP addresses that you can -// allocate for use with EC2-Classic. -// -// vpc-max-elastic-ips: The maximum number of Elastic IP addresses that you -// can allocate for use with EC2-VPC. -func (c *EC2) DescribeAccountAttributes(input *DescribeAccountAttributesInput) (*DescribeAccountAttributesOutput, error) { - req, out := c.DescribeAccountAttributesRequest(input) - err := req.Send() - return out, err -} - -const opDescribeAddresses = "DescribeAddresses" - -// DescribeAddressesRequest generates a request for the DescribeAddresses operation. -func (c *EC2) DescribeAddressesRequest(input *DescribeAddressesInput) (req *request.Request, output *DescribeAddressesOutput) { - op := &request.Operation{ - Name: opDescribeAddresses, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeAddressesInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeAddressesOutput{} - req.Data = output - return -} - -// Describes one or more of your Elastic IP addresses. -// -// An Elastic IP address is for use in either the EC2-Classic platform or in -// a VPC. For more information, see Elastic IP Addresses (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) DescribeAddresses(input *DescribeAddressesInput) (*DescribeAddressesOutput, error) { - req, out := c.DescribeAddressesRequest(input) - err := req.Send() - return out, err -} - -const opDescribeAvailabilityZones = "DescribeAvailabilityZones" - -// DescribeAvailabilityZonesRequest generates a request for the DescribeAvailabilityZones operation. -func (c *EC2) DescribeAvailabilityZonesRequest(input *DescribeAvailabilityZonesInput) (req *request.Request, output *DescribeAvailabilityZonesOutput) { - op := &request.Operation{ - Name: opDescribeAvailabilityZones, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeAvailabilityZonesInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeAvailabilityZonesOutput{} - req.Data = output - return -} - -// Describes one or more of the Availability Zones that are available to you. -// The results include zones only for the region you're currently using. If -// there is an event impacting an Availability Zone, you can use this request -// to view the state and any provided message for that Availability Zone. -// -// For more information, see Regions and Availability Zones (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) DescribeAvailabilityZones(input *DescribeAvailabilityZonesInput) (*DescribeAvailabilityZonesOutput, error) { - req, out := c.DescribeAvailabilityZonesRequest(input) - err := req.Send() - return out, err -} - -const opDescribeBundleTasks = "DescribeBundleTasks" - -// DescribeBundleTasksRequest generates a request for the DescribeBundleTasks operation. -func (c *EC2) DescribeBundleTasksRequest(input *DescribeBundleTasksInput) (req *request.Request, output *DescribeBundleTasksOutput) { - op := &request.Operation{ - Name: opDescribeBundleTasks, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeBundleTasksInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeBundleTasksOutput{} - req.Data = output - return -} - -// Describes one or more of your bundling tasks. -// -// Completed bundle tasks are listed for only a limited time. If your bundle -// task is no longer in the list, you can still register an AMI from it. Just -// use RegisterImage with the Amazon S3 bucket name and image manifest name -// you provided to the bundle task. -func (c *EC2) DescribeBundleTasks(input *DescribeBundleTasksInput) (*DescribeBundleTasksOutput, error) { - req, out := c.DescribeBundleTasksRequest(input) - err := req.Send() - return out, err -} - -const opDescribeClassicLinkInstances = "DescribeClassicLinkInstances" - -// DescribeClassicLinkInstancesRequest generates a request for the DescribeClassicLinkInstances operation. -func (c *EC2) DescribeClassicLinkInstancesRequest(input *DescribeClassicLinkInstancesInput) (req *request.Request, output *DescribeClassicLinkInstancesOutput) { - op := &request.Operation{ - Name: opDescribeClassicLinkInstances, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeClassicLinkInstancesInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeClassicLinkInstancesOutput{} - req.Data = output - return -} - -// Describes one or more of your linked EC2-Classic instances. This request -// only returns information about EC2-Classic instances linked to a VPC through -// ClassicLink; you cannot use this request to return information about other -// instances. -func (c *EC2) DescribeClassicLinkInstances(input *DescribeClassicLinkInstancesInput) (*DescribeClassicLinkInstancesOutput, error) { - req, out := c.DescribeClassicLinkInstancesRequest(input) - err := req.Send() - return out, err -} - -const opDescribeConversionTasks = "DescribeConversionTasks" - -// DescribeConversionTasksRequest generates a request for the DescribeConversionTasks operation. -func (c *EC2) DescribeConversionTasksRequest(input *DescribeConversionTasksInput) (req *request.Request, output *DescribeConversionTasksOutput) { - op := &request.Operation{ - Name: opDescribeConversionTasks, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeConversionTasksInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeConversionTasksOutput{} - req.Data = output - return -} - -// Describes one or more of your conversion tasks. For more information, see -// Using the Command Line Tools to Import Your Virtual Machine to Amazon EC2 -// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UploadingYourInstancesandVolumes.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) DescribeConversionTasks(input *DescribeConversionTasksInput) (*DescribeConversionTasksOutput, error) { - req, out := c.DescribeConversionTasksRequest(input) - err := req.Send() - return out, err -} - -const opDescribeCustomerGateways = "DescribeCustomerGateways" - -// DescribeCustomerGatewaysRequest generates a request for the DescribeCustomerGateways operation. -func (c *EC2) DescribeCustomerGatewaysRequest(input *DescribeCustomerGatewaysInput) (req *request.Request, output *DescribeCustomerGatewaysOutput) { - op := &request.Operation{ - Name: opDescribeCustomerGateways, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeCustomerGatewaysInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeCustomerGatewaysOutput{} - req.Data = output - return -} - -// Describes one or more of your VPN customer gateways. -// -// For more information about VPN customer gateways, see Adding a Hardware -// Virtual Private Gateway to Your VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html) -// in the Amazon Virtual Private Cloud User Guide. -func (c *EC2) DescribeCustomerGateways(input *DescribeCustomerGatewaysInput) (*DescribeCustomerGatewaysOutput, error) { - req, out := c.DescribeCustomerGatewaysRequest(input) - err := req.Send() - return out, err -} - -const opDescribeDhcpOptions = "DescribeDhcpOptions" - -// DescribeDhcpOptionsRequest generates a request for the DescribeDhcpOptions operation. -func (c *EC2) DescribeDhcpOptionsRequest(input *DescribeDhcpOptionsInput) (req *request.Request, output *DescribeDhcpOptionsOutput) { - op := &request.Operation{ - Name: opDescribeDhcpOptions, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeDhcpOptionsInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeDhcpOptionsOutput{} - req.Data = output - return -} - -// Describes one or more of your DHCP options sets. -// -// For more information about DHCP options sets, see DHCP Options Sets (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_DHCP_Options.html) -// in the Amazon Virtual Private Cloud User Guide. -func (c *EC2) DescribeDhcpOptions(input *DescribeDhcpOptionsInput) (*DescribeDhcpOptionsOutput, error) { - req, out := c.DescribeDhcpOptionsRequest(input) - err := req.Send() - return out, err -} - -const opDescribeExportTasks = "DescribeExportTasks" - -// DescribeExportTasksRequest generates a request for the DescribeExportTasks operation. -func (c *EC2) DescribeExportTasksRequest(input *DescribeExportTasksInput) (req *request.Request, output *DescribeExportTasksOutput) { - op := &request.Operation{ - Name: opDescribeExportTasks, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeExportTasksInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeExportTasksOutput{} - req.Data = output - return -} - -// Describes one or more of your export tasks. -func (c *EC2) DescribeExportTasks(input *DescribeExportTasksInput) (*DescribeExportTasksOutput, error) { - req, out := c.DescribeExportTasksRequest(input) - err := req.Send() - return out, err -} - -const opDescribeFlowLogs = "DescribeFlowLogs" - -// DescribeFlowLogsRequest generates a request for the DescribeFlowLogs operation. -func (c *EC2) DescribeFlowLogsRequest(input *DescribeFlowLogsInput) (req *request.Request, output *DescribeFlowLogsOutput) { - op := &request.Operation{ - Name: opDescribeFlowLogs, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeFlowLogsInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeFlowLogsOutput{} - req.Data = output - return -} - -// Describes one or more flow logs. To view the information in your flow logs -// (the log streams for the network interfaces), you must use the CloudWatch -// Logs console or the CloudWatch Logs API. -func (c *EC2) DescribeFlowLogs(input *DescribeFlowLogsInput) (*DescribeFlowLogsOutput, error) { - req, out := c.DescribeFlowLogsRequest(input) - err := req.Send() - return out, err -} - -const opDescribeHosts = "DescribeHosts" - -// DescribeHostsRequest generates a request for the DescribeHosts operation. -func (c *EC2) DescribeHostsRequest(input *DescribeHostsInput) (req *request.Request, output *DescribeHostsOutput) { - op := &request.Operation{ - Name: opDescribeHosts, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeHostsInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeHostsOutput{} - req.Data = output - return -} - -// Describes one or more of your Dedicated hosts. -// -// The results describe only the Dedicated hosts in the region you're currently -// using. All listed instances consume capacity on your Dedicated host. Dedicated -// hosts that have recently been released will be listed with the status "released". -func (c *EC2) DescribeHosts(input *DescribeHostsInput) (*DescribeHostsOutput, error) { - req, out := c.DescribeHostsRequest(input) - err := req.Send() - return out, err -} - -const opDescribeIdFormat = "DescribeIdFormat" - -// DescribeIdFormatRequest generates a request for the DescribeIdFormat operation. -func (c *EC2) DescribeIdFormatRequest(input *DescribeIdFormatInput) (req *request.Request, output *DescribeIdFormatOutput) { - op := &request.Operation{ - Name: opDescribeIdFormat, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeIdFormatInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeIdFormatOutput{} - req.Data = output - return -} - -// Important: This command is reserved for future use, and is currently not -// available for you to use. -// -// Describes the ID format settings for your resources, for example, to view -// which resource types are enabled for longer IDs. This request only returns -// information about resource types whose ID formats can be modified; it does -// not return information about other resource types. -// -// The following resource types support longer IDs: instance | reservation. -// -// These settings apply to the IAM user who makes the request; they do not -// apply to the entire AWS account. By default, an IAM user defaults to the -// same settings as the root user, unless they explicitly override the settings -// by running the ModifyIdFormat command. These settings are applied on a per-region -// basis. -func (c *EC2) DescribeIdFormat(input *DescribeIdFormatInput) (*DescribeIdFormatOutput, error) { - req, out := c.DescribeIdFormatRequest(input) - err := req.Send() - return out, err -} - -const opDescribeImageAttribute = "DescribeImageAttribute" - -// DescribeImageAttributeRequest generates a request for the DescribeImageAttribute operation. -func (c *EC2) DescribeImageAttributeRequest(input *DescribeImageAttributeInput) (req *request.Request, output *DescribeImageAttributeOutput) { - op := &request.Operation{ - Name: opDescribeImageAttribute, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeImageAttributeInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeImageAttributeOutput{} - req.Data = output - return -} - -// Describes the specified attribute of the specified AMI. You can specify only -// one attribute at a time. -func (c *EC2) DescribeImageAttribute(input *DescribeImageAttributeInput) (*DescribeImageAttributeOutput, error) { - req, out := c.DescribeImageAttributeRequest(input) - err := req.Send() - return out, err -} - -const opDescribeImages = "DescribeImages" - -// DescribeImagesRequest generates a request for the DescribeImages operation. -func (c *EC2) DescribeImagesRequest(input *DescribeImagesInput) (req *request.Request, output *DescribeImagesOutput) { - op := &request.Operation{ - Name: opDescribeImages, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeImagesInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeImagesOutput{} - req.Data = output - return -} - -// Describes one or more of the images (AMIs, AKIs, and ARIs) available to you. -// Images available to you include public images, private images that you own, -// and private images owned by other AWS accounts but for which you have explicit -// launch permissions. -// -// Deregistered images are included in the returned results for an unspecified -// interval after deregistration. -func (c *EC2) DescribeImages(input *DescribeImagesInput) (*DescribeImagesOutput, error) { - req, out := c.DescribeImagesRequest(input) - err := req.Send() - return out, err -} - -const opDescribeImportImageTasks = "DescribeImportImageTasks" - -// DescribeImportImageTasksRequest generates a request for the DescribeImportImageTasks operation. -func (c *EC2) DescribeImportImageTasksRequest(input *DescribeImportImageTasksInput) (req *request.Request, output *DescribeImportImageTasksOutput) { - op := &request.Operation{ - Name: opDescribeImportImageTasks, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeImportImageTasksInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeImportImageTasksOutput{} - req.Data = output - return -} - -// Displays details about an import virtual machine or import snapshot tasks -// that are already created. -func (c *EC2) DescribeImportImageTasks(input *DescribeImportImageTasksInput) (*DescribeImportImageTasksOutput, error) { - req, out := c.DescribeImportImageTasksRequest(input) - err := req.Send() - return out, err -} - -const opDescribeImportSnapshotTasks = "DescribeImportSnapshotTasks" - -// DescribeImportSnapshotTasksRequest generates a request for the DescribeImportSnapshotTasks operation. -func (c *EC2) DescribeImportSnapshotTasksRequest(input *DescribeImportSnapshotTasksInput) (req *request.Request, output *DescribeImportSnapshotTasksOutput) { - op := &request.Operation{ - Name: opDescribeImportSnapshotTasks, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeImportSnapshotTasksInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeImportSnapshotTasksOutput{} - req.Data = output - return -} - -// Describes your import snapshot tasks. -func (c *EC2) DescribeImportSnapshotTasks(input *DescribeImportSnapshotTasksInput) (*DescribeImportSnapshotTasksOutput, error) { - req, out := c.DescribeImportSnapshotTasksRequest(input) - err := req.Send() - return out, err -} - -const opDescribeInstanceAttribute = "DescribeInstanceAttribute" - -// DescribeInstanceAttributeRequest generates a request for the DescribeInstanceAttribute operation. -func (c *EC2) DescribeInstanceAttributeRequest(input *DescribeInstanceAttributeInput) (req *request.Request, output *DescribeInstanceAttributeOutput) { - op := &request.Operation{ - Name: opDescribeInstanceAttribute, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeInstanceAttributeInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeInstanceAttributeOutput{} - req.Data = output - return -} - -// Describes the specified attribute of the specified instance. You can specify -// only one attribute at a time. Valid attribute values are: instanceType | -// kernel | ramdisk | userData | disableApiTermination | instanceInitiatedShutdownBehavior -// | rootDeviceName | blockDeviceMapping | productCodes | sourceDestCheck | -// groupSet | ebsOptimized | sriovNetSupport -func (c *EC2) DescribeInstanceAttribute(input *DescribeInstanceAttributeInput) (*DescribeInstanceAttributeOutput, error) { - req, out := c.DescribeInstanceAttributeRequest(input) - err := req.Send() - return out, err -} - -const opDescribeInstanceStatus = "DescribeInstanceStatus" - -// DescribeInstanceStatusRequest generates a request for the DescribeInstanceStatus operation. -func (c *EC2) DescribeInstanceStatusRequest(input *DescribeInstanceStatusInput) (req *request.Request, output *DescribeInstanceStatusOutput) { - op := &request.Operation{ - Name: opDescribeInstanceStatus, - HTTPMethod: "POST", - HTTPPath: "/", - Paginator: &request.Paginator{ - InputTokens: []string{"NextToken"}, - OutputTokens: []string{"NextToken"}, - LimitToken: "MaxResults", - TruncationToken: "", - }, - } - - if input == nil { - input = &DescribeInstanceStatusInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeInstanceStatusOutput{} - req.Data = output - return -} - -// Describes the status of one or more instances. -// -// Instance status includes the following components: -// -// Status checks - Amazon EC2 performs status checks on running EC2 instances -// to identify hardware and software issues. For more information, see Status -// Checks for Your Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-system-instance-status-check.html) -// and Troubleshooting Instances with Failed Status Checks (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstances.html) -// in the Amazon Elastic Compute Cloud User Guide. -// -// Scheduled events - Amazon EC2 can schedule events (such as reboot, stop, -// or terminate) for your instances related to hardware issues, software updates, -// or system maintenance. For more information, see Scheduled Events for Your -// Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-instances-status-check_sched.html) -// in the Amazon Elastic Compute Cloud User Guide. -// -// Instance state - You can manage your instances from the moment you launch -// them through their termination. For more information, see Instance Lifecycle -// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) DescribeInstanceStatus(input *DescribeInstanceStatusInput) (*DescribeInstanceStatusOutput, error) { - req, out := c.DescribeInstanceStatusRequest(input) - err := req.Send() - return out, err -} - -func (c *EC2) DescribeInstanceStatusPages(input *DescribeInstanceStatusInput, fn func(p *DescribeInstanceStatusOutput, lastPage bool) (shouldContinue bool)) error { - page, _ := c.DescribeInstanceStatusRequest(input) - page.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Paginator")) - return page.EachPage(func(p interface{}, lastPage bool) bool { - return fn(p.(*DescribeInstanceStatusOutput), lastPage) - }) -} - -const opDescribeInstances = "DescribeInstances" - -// DescribeInstancesRequest generates a request for the DescribeInstances operation. -func (c *EC2) DescribeInstancesRequest(input *DescribeInstancesInput) (req *request.Request, output *DescribeInstancesOutput) { - op := &request.Operation{ - Name: opDescribeInstances, - HTTPMethod: "POST", - HTTPPath: "/", - Paginator: &request.Paginator{ - InputTokens: []string{"NextToken"}, - OutputTokens: []string{"NextToken"}, - LimitToken: "MaxResults", - TruncationToken: "", - }, - } - - if input == nil { - input = &DescribeInstancesInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeInstancesOutput{} - req.Data = output - return -} - -// Describes one or more of your instances. -// -// If you specify one or more instance IDs, Amazon EC2 returns information -// for those instances. If you do not specify instance IDs, Amazon EC2 returns -// information for all relevant instances. If you specify an instance ID that -// is not valid, an error is returned. If you specify an instance that you do -// not own, it is not included in the returned results. -// -// Recently terminated instances might appear in the returned results. This -// interval is usually less than one hour. -func (c *EC2) DescribeInstances(input *DescribeInstancesInput) (*DescribeInstancesOutput, error) { - req, out := c.DescribeInstancesRequest(input) - err := req.Send() - return out, err -} - -func (c *EC2) DescribeInstancesPages(input *DescribeInstancesInput, fn func(p *DescribeInstancesOutput, lastPage bool) (shouldContinue bool)) error { - page, _ := c.DescribeInstancesRequest(input) - page.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Paginator")) - return page.EachPage(func(p interface{}, lastPage bool) bool { - return fn(p.(*DescribeInstancesOutput), lastPage) - }) -} - -const opDescribeInternetGateways = "DescribeInternetGateways" - -// DescribeInternetGatewaysRequest generates a request for the DescribeInternetGateways operation. -func (c *EC2) DescribeInternetGatewaysRequest(input *DescribeInternetGatewaysInput) (req *request.Request, output *DescribeInternetGatewaysOutput) { - op := &request.Operation{ - Name: opDescribeInternetGateways, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeInternetGatewaysInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeInternetGatewaysOutput{} - req.Data = output - return -} - -// Describes one or more of your Internet gateways. -func (c *EC2) DescribeInternetGateways(input *DescribeInternetGatewaysInput) (*DescribeInternetGatewaysOutput, error) { - req, out := c.DescribeInternetGatewaysRequest(input) - err := req.Send() - return out, err -} - -const opDescribeKeyPairs = "DescribeKeyPairs" - -// DescribeKeyPairsRequest generates a request for the DescribeKeyPairs operation. -func (c *EC2) DescribeKeyPairsRequest(input *DescribeKeyPairsInput) (req *request.Request, output *DescribeKeyPairsOutput) { - op := &request.Operation{ - Name: opDescribeKeyPairs, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeKeyPairsInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeKeyPairsOutput{} - req.Data = output - return -} - -// Describes one or more of your key pairs. -// -// For more information about key pairs, see Key Pairs (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) DescribeKeyPairs(input *DescribeKeyPairsInput) (*DescribeKeyPairsOutput, error) { - req, out := c.DescribeKeyPairsRequest(input) - err := req.Send() - return out, err -} - -const opDescribeMovingAddresses = "DescribeMovingAddresses" - -// DescribeMovingAddressesRequest generates a request for the DescribeMovingAddresses operation. -func (c *EC2) DescribeMovingAddressesRequest(input *DescribeMovingAddressesInput) (req *request.Request, output *DescribeMovingAddressesOutput) { - op := &request.Operation{ - Name: opDescribeMovingAddresses, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeMovingAddressesInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeMovingAddressesOutput{} - req.Data = output - return -} - -// Describes your Elastic IP addresses that are being moved to the EC2-VPC platform, -// or that are being restored to the EC2-Classic platform. This request does -// not return information about any other Elastic IP addresses in your account. -func (c *EC2) DescribeMovingAddresses(input *DescribeMovingAddressesInput) (*DescribeMovingAddressesOutput, error) { - req, out := c.DescribeMovingAddressesRequest(input) - err := req.Send() - return out, err -} - -const opDescribeNetworkAcls = "DescribeNetworkAcls" - -// DescribeNetworkAclsRequest generates a request for the DescribeNetworkAcls operation. -func (c *EC2) DescribeNetworkAclsRequest(input *DescribeNetworkAclsInput) (req *request.Request, output *DescribeNetworkAclsOutput) { - op := &request.Operation{ - Name: opDescribeNetworkAcls, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeNetworkAclsInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeNetworkAclsOutput{} - req.Data = output - return -} - -// Describes one or more of your network ACLs. -// -// For more information about network ACLs, see Network ACLs (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html) -// in the Amazon Virtual Private Cloud User Guide. -func (c *EC2) DescribeNetworkAcls(input *DescribeNetworkAclsInput) (*DescribeNetworkAclsOutput, error) { - req, out := c.DescribeNetworkAclsRequest(input) - err := req.Send() - return out, err -} - -const opDescribeNetworkInterfaceAttribute = "DescribeNetworkInterfaceAttribute" - -// DescribeNetworkInterfaceAttributeRequest generates a request for the DescribeNetworkInterfaceAttribute operation. -func (c *EC2) DescribeNetworkInterfaceAttributeRequest(input *DescribeNetworkInterfaceAttributeInput) (req *request.Request, output *DescribeNetworkInterfaceAttributeOutput) { - op := &request.Operation{ - Name: opDescribeNetworkInterfaceAttribute, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeNetworkInterfaceAttributeInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeNetworkInterfaceAttributeOutput{} - req.Data = output - return -} - -// Describes a network interface attribute. You can specify only one attribute -// at a time. -func (c *EC2) DescribeNetworkInterfaceAttribute(input *DescribeNetworkInterfaceAttributeInput) (*DescribeNetworkInterfaceAttributeOutput, error) { - req, out := c.DescribeNetworkInterfaceAttributeRequest(input) - err := req.Send() - return out, err -} - -const opDescribeNetworkInterfaces = "DescribeNetworkInterfaces" - -// DescribeNetworkInterfacesRequest generates a request for the DescribeNetworkInterfaces operation. -func (c *EC2) DescribeNetworkInterfacesRequest(input *DescribeNetworkInterfacesInput) (req *request.Request, output *DescribeNetworkInterfacesOutput) { - op := &request.Operation{ - Name: opDescribeNetworkInterfaces, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeNetworkInterfacesInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeNetworkInterfacesOutput{} - req.Data = output - return -} - -// Describes one or more of your network interfaces. -func (c *EC2) DescribeNetworkInterfaces(input *DescribeNetworkInterfacesInput) (*DescribeNetworkInterfacesOutput, error) { - req, out := c.DescribeNetworkInterfacesRequest(input) - err := req.Send() - return out, err -} - -const opDescribePlacementGroups = "DescribePlacementGroups" - -// DescribePlacementGroupsRequest generates a request for the DescribePlacementGroups operation. -func (c *EC2) DescribePlacementGroupsRequest(input *DescribePlacementGroupsInput) (req *request.Request, output *DescribePlacementGroupsOutput) { - op := &request.Operation{ - Name: opDescribePlacementGroups, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribePlacementGroupsInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribePlacementGroupsOutput{} - req.Data = output - return -} - -// Describes one or more of your placement groups. For more information about -// placement groups and cluster instances, see Cluster Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using_cluster_computing.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) DescribePlacementGroups(input *DescribePlacementGroupsInput) (*DescribePlacementGroupsOutput, error) { - req, out := c.DescribePlacementGroupsRequest(input) - err := req.Send() - return out, err -} - -const opDescribePrefixLists = "DescribePrefixLists" - -// DescribePrefixListsRequest generates a request for the DescribePrefixLists operation. -func (c *EC2) DescribePrefixListsRequest(input *DescribePrefixListsInput) (req *request.Request, output *DescribePrefixListsOutput) { - op := &request.Operation{ - Name: opDescribePrefixLists, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribePrefixListsInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribePrefixListsOutput{} - req.Data = output - return -} - -// Describes available AWS services in a prefix list format, which includes -// the prefix list name and prefix list ID of the service and the IP address -// range for the service. A prefix list ID is required for creating an outbound -// security group rule that allows traffic from a VPC to access an AWS service -// through a VPC endpoint. -func (c *EC2) DescribePrefixLists(input *DescribePrefixListsInput) (*DescribePrefixListsOutput, error) { - req, out := c.DescribePrefixListsRequest(input) - err := req.Send() - return out, err -} - -const opDescribeRegions = "DescribeRegions" - -// DescribeRegionsRequest generates a request for the DescribeRegions operation. -func (c *EC2) DescribeRegionsRequest(input *DescribeRegionsInput) (req *request.Request, output *DescribeRegionsOutput) { - op := &request.Operation{ - Name: opDescribeRegions, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeRegionsInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeRegionsOutput{} - req.Data = output - return -} - -// Describes one or more regions that are currently available to you. -// -// For a list of the regions supported by Amazon EC2, see Regions and Endpoints -// (http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region). -func (c *EC2) DescribeRegions(input *DescribeRegionsInput) (*DescribeRegionsOutput, error) { - req, out := c.DescribeRegionsRequest(input) - err := req.Send() - return out, err -} - -const opDescribeReservedInstances = "DescribeReservedInstances" - -// DescribeReservedInstancesRequest generates a request for the DescribeReservedInstances operation. -func (c *EC2) DescribeReservedInstancesRequest(input *DescribeReservedInstancesInput) (req *request.Request, output *DescribeReservedInstancesOutput) { - op := &request.Operation{ - Name: opDescribeReservedInstances, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeReservedInstancesInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeReservedInstancesOutput{} - req.Data = output - return -} - -// Describes one or more of the Reserved instances that you purchased. -// -// For more information about Reserved instances, see Reserved Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts-on-demand-reserved-instances.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) DescribeReservedInstances(input *DescribeReservedInstancesInput) (*DescribeReservedInstancesOutput, error) { - req, out := c.DescribeReservedInstancesRequest(input) - err := req.Send() - return out, err -} - -const opDescribeReservedInstancesListings = "DescribeReservedInstancesListings" - -// DescribeReservedInstancesListingsRequest generates a request for the DescribeReservedInstancesListings operation. -func (c *EC2) DescribeReservedInstancesListingsRequest(input *DescribeReservedInstancesListingsInput) (req *request.Request, output *DescribeReservedInstancesListingsOutput) { - op := &request.Operation{ - Name: opDescribeReservedInstancesListings, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeReservedInstancesListingsInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeReservedInstancesListingsOutput{} - req.Data = output - return -} - -// Describes your account's Reserved instance listings in the Reserved Instance -// Marketplace. -// -// The Reserved Instance Marketplace matches sellers who want to resell Reserved -// instance capacity that they no longer need with buyers who want to purchase -// additional capacity. Reserved instances bought and sold through the Reserved -// Instance Marketplace work like any other Reserved Instances. -// -// As a seller, you choose to list some or all of your Reserved instances, -// and you specify the upfront price to receive for them. Your Reserved instances -// are then listed in the Reserved Instance Marketplace and are available for -// purchase. -// -// As a buyer, you specify the configuration of the Reserved instance to purchase, -// and the Marketplace matches what you're searching for with what's available. -// The Marketplace first sells the lowest priced Reserved instances to you, -// and continues to sell available Reserved Instance listings to you until your -// demand is met. You are charged based on the total price of all of the listings -// that you purchase. -// -// For more information, see Reserved Instance Marketplace (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) DescribeReservedInstancesListings(input *DescribeReservedInstancesListingsInput) (*DescribeReservedInstancesListingsOutput, error) { - req, out := c.DescribeReservedInstancesListingsRequest(input) - err := req.Send() - return out, err -} - -const opDescribeReservedInstancesModifications = "DescribeReservedInstancesModifications" - -// DescribeReservedInstancesModificationsRequest generates a request for the DescribeReservedInstancesModifications operation. -func (c *EC2) DescribeReservedInstancesModificationsRequest(input *DescribeReservedInstancesModificationsInput) (req *request.Request, output *DescribeReservedInstancesModificationsOutput) { - op := &request.Operation{ - Name: opDescribeReservedInstancesModifications, - HTTPMethod: "POST", - HTTPPath: "/", - Paginator: &request.Paginator{ - InputTokens: []string{"NextToken"}, - OutputTokens: []string{"NextToken"}, - LimitToken: "", - TruncationToken: "", - }, - } - - if input == nil { - input = &DescribeReservedInstancesModificationsInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeReservedInstancesModificationsOutput{} - req.Data = output - return -} - -// Describes the modifications made to your Reserved instances. If no parameter -// is specified, information about all your Reserved Instances modification -// requests is returned. If a modification ID is specified, only information -// about the specific modification is returned. -// -// For more information, see Modifying Reserved Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-modifying.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) DescribeReservedInstancesModifications(input *DescribeReservedInstancesModificationsInput) (*DescribeReservedInstancesModificationsOutput, error) { - req, out := c.DescribeReservedInstancesModificationsRequest(input) - err := req.Send() - return out, err -} - -func (c *EC2) DescribeReservedInstancesModificationsPages(input *DescribeReservedInstancesModificationsInput, fn func(p *DescribeReservedInstancesModificationsOutput, lastPage bool) (shouldContinue bool)) error { - page, _ := c.DescribeReservedInstancesModificationsRequest(input) - page.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Paginator")) - return page.EachPage(func(p interface{}, lastPage bool) bool { - return fn(p.(*DescribeReservedInstancesModificationsOutput), lastPage) - }) -} - -const opDescribeReservedInstancesOfferings = "DescribeReservedInstancesOfferings" - -// DescribeReservedInstancesOfferingsRequest generates a request for the DescribeReservedInstancesOfferings operation. -func (c *EC2) DescribeReservedInstancesOfferingsRequest(input *DescribeReservedInstancesOfferingsInput) (req *request.Request, output *DescribeReservedInstancesOfferingsOutput) { - op := &request.Operation{ - Name: opDescribeReservedInstancesOfferings, - HTTPMethod: "POST", - HTTPPath: "/", - Paginator: &request.Paginator{ - InputTokens: []string{"NextToken"}, - OutputTokens: []string{"NextToken"}, - LimitToken: "MaxResults", - TruncationToken: "", - }, - } - - if input == nil { - input = &DescribeReservedInstancesOfferingsInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeReservedInstancesOfferingsOutput{} - req.Data = output - return -} - -// Describes Reserved instance offerings that are available for purchase. With -// Reserved instances, you purchase the right to launch instances for a period -// of time. During that time period, you do not receive insufficient capacity -// errors, and you pay a lower usage rate than the rate charged for On-Demand -// instances for the actual time used. -// -// For more information, see Reserved Instance Marketplace (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) DescribeReservedInstancesOfferings(input *DescribeReservedInstancesOfferingsInput) (*DescribeReservedInstancesOfferingsOutput, error) { - req, out := c.DescribeReservedInstancesOfferingsRequest(input) - err := req.Send() - return out, err -} - -func (c *EC2) DescribeReservedInstancesOfferingsPages(input *DescribeReservedInstancesOfferingsInput, fn func(p *DescribeReservedInstancesOfferingsOutput, lastPage bool) (shouldContinue bool)) error { - page, _ := c.DescribeReservedInstancesOfferingsRequest(input) - page.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Paginator")) - return page.EachPage(func(p interface{}, lastPage bool) bool { - return fn(p.(*DescribeReservedInstancesOfferingsOutput), lastPage) - }) -} - -const opDescribeRouteTables = "DescribeRouteTables" - -// DescribeRouteTablesRequest generates a request for the DescribeRouteTables operation. -func (c *EC2) DescribeRouteTablesRequest(input *DescribeRouteTablesInput) (req *request.Request, output *DescribeRouteTablesOutput) { - op := &request.Operation{ - Name: opDescribeRouteTables, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeRouteTablesInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeRouteTablesOutput{} - req.Data = output - return -} - -// Describes one or more of your route tables. -// -// Each subnet in your VPC must be associated with a route table. If a subnet -// is not explicitly associated with any route table, it is implicitly associated -// with the main route table. This command does not return the subnet ID for -// implicit associations. -// -// For more information about route tables, see Route Tables (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html) -// in the Amazon Virtual Private Cloud User Guide. -func (c *EC2) DescribeRouteTables(input *DescribeRouteTablesInput) (*DescribeRouteTablesOutput, error) { - req, out := c.DescribeRouteTablesRequest(input) - err := req.Send() - return out, err -} - -const opDescribeSecurityGroups = "DescribeSecurityGroups" - -// DescribeSecurityGroupsRequest generates a request for the DescribeSecurityGroups operation. -func (c *EC2) DescribeSecurityGroupsRequest(input *DescribeSecurityGroupsInput) (req *request.Request, output *DescribeSecurityGroupsOutput) { - op := &request.Operation{ - Name: opDescribeSecurityGroups, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeSecurityGroupsInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeSecurityGroupsOutput{} - req.Data = output - return -} - -// Describes one or more of your security groups. -// -// A security group is for use with instances either in the EC2-Classic platform -// or in a specific VPC. For more information, see Amazon EC2 Security Groups -// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html) -// in the Amazon Elastic Compute Cloud User Guide and Security Groups for Your -// VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html) -// in the Amazon Virtual Private Cloud User Guide. -func (c *EC2) DescribeSecurityGroups(input *DescribeSecurityGroupsInput) (*DescribeSecurityGroupsOutput, error) { - req, out := c.DescribeSecurityGroupsRequest(input) - err := req.Send() - return out, err -} - -const opDescribeSnapshotAttribute = "DescribeSnapshotAttribute" - -// DescribeSnapshotAttributeRequest generates a request for the DescribeSnapshotAttribute operation. -func (c *EC2) DescribeSnapshotAttributeRequest(input *DescribeSnapshotAttributeInput) (req *request.Request, output *DescribeSnapshotAttributeOutput) { - op := &request.Operation{ - Name: opDescribeSnapshotAttribute, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeSnapshotAttributeInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeSnapshotAttributeOutput{} - req.Data = output - return -} - -// Describes the specified attribute of the specified snapshot. You can specify -// only one attribute at a time. -// -// For more information about EBS snapshots, see Amazon EBS Snapshots in the -// Amazon Elastic Compute Cloud User Guide. -func (c *EC2) DescribeSnapshotAttribute(input *DescribeSnapshotAttributeInput) (*DescribeSnapshotAttributeOutput, error) { - req, out := c.DescribeSnapshotAttributeRequest(input) - err := req.Send() - return out, err -} - -const opDescribeSnapshots = "DescribeSnapshots" - -// DescribeSnapshotsRequest generates a request for the DescribeSnapshots operation. -func (c *EC2) DescribeSnapshotsRequest(input *DescribeSnapshotsInput) (req *request.Request, output *DescribeSnapshotsOutput) { - op := &request.Operation{ - Name: opDescribeSnapshots, - HTTPMethod: "POST", - HTTPPath: "/", - Paginator: &request.Paginator{ - InputTokens: []string{"NextToken"}, - OutputTokens: []string{"NextToken"}, - LimitToken: "MaxResults", - TruncationToken: "", - }, - } - - if input == nil { - input = &DescribeSnapshotsInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeSnapshotsOutput{} - req.Data = output - return -} - -// Describes one or more of the EBS snapshots available to you. Available snapshots -// include public snapshots available for any AWS account to launch, private -// snapshots that you own, and private snapshots owned by another AWS account -// but for which you've been given explicit create volume permissions. -// -// The create volume permissions fall into the following categories: -// -// public: The owner of the snapshot granted create volume permissions for -// the snapshot to the all group. All AWS accounts have create volume permissions -// for these snapshots. explicit: The owner of the snapshot granted create volume -// permissions to a specific AWS account. implicit: An AWS account has implicit -// create volume permissions for all snapshots it owns. The list of snapshots -// returned can be modified by specifying snapshot IDs, snapshot owners, or -// AWS accounts with create volume permissions. If no options are specified, -// Amazon EC2 returns all snapshots for which you have create volume permissions. -// -// If you specify one or more snapshot IDs, only snapshots that have the specified -// IDs are returned. If you specify an invalid snapshot ID, an error is returned. -// If you specify a snapshot ID for which you do not have access, it is not -// included in the returned results. -// -// If you specify one or more snapshot owners, only snapshots from the specified -// owners and for which you have access are returned. The results can include -// the AWS account IDs of the specified owners, amazon for snapshots owned by -// Amazon, or self for snapshots that you own. -// -// If you specify a list of restorable users, only snapshots with create snapshot -// permissions for those users are returned. You can specify AWS account IDs -// (if you own the snapshots), self for snapshots for which you own or have -// explicit permissions, or all for public snapshots. -// -// If you are describing a long list of snapshots, you can paginate the output -// to make the list more manageable. The MaxResults parameter sets the maximum -// number of results returned in a single page. If the list of results exceeds -// your MaxResults value, then that number of results is returned along with -// a NextToken value that can be passed to a subsequent DescribeSnapshots request -// to retrieve the remaining results. -// -// For more information about EBS snapshots, see Amazon EBS Snapshots in the -// Amazon Elastic Compute Cloud User Guide. -func (c *EC2) DescribeSnapshots(input *DescribeSnapshotsInput) (*DescribeSnapshotsOutput, error) { - req, out := c.DescribeSnapshotsRequest(input) - err := req.Send() - return out, err -} - -func (c *EC2) DescribeSnapshotsPages(input *DescribeSnapshotsInput, fn func(p *DescribeSnapshotsOutput, lastPage bool) (shouldContinue bool)) error { - page, _ := c.DescribeSnapshotsRequest(input) - page.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Paginator")) - return page.EachPage(func(p interface{}, lastPage bool) bool { - return fn(p.(*DescribeSnapshotsOutput), lastPage) - }) -} - -const opDescribeSpotDatafeedSubscription = "DescribeSpotDatafeedSubscription" - -// DescribeSpotDatafeedSubscriptionRequest generates a request for the DescribeSpotDatafeedSubscription operation. -func (c *EC2) DescribeSpotDatafeedSubscriptionRequest(input *DescribeSpotDatafeedSubscriptionInput) (req *request.Request, output *DescribeSpotDatafeedSubscriptionOutput) { - op := &request.Operation{ - Name: opDescribeSpotDatafeedSubscription, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeSpotDatafeedSubscriptionInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeSpotDatafeedSubscriptionOutput{} - req.Data = output - return -} - -// Describes the data feed for Spot instances. For more information, see Spot -// Instance Data Feed (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-data-feeds.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) DescribeSpotDatafeedSubscription(input *DescribeSpotDatafeedSubscriptionInput) (*DescribeSpotDatafeedSubscriptionOutput, error) { - req, out := c.DescribeSpotDatafeedSubscriptionRequest(input) - err := req.Send() - return out, err -} - -const opDescribeSpotFleetInstances = "DescribeSpotFleetInstances" - -// DescribeSpotFleetInstancesRequest generates a request for the DescribeSpotFleetInstances operation. -func (c *EC2) DescribeSpotFleetInstancesRequest(input *DescribeSpotFleetInstancesInput) (req *request.Request, output *DescribeSpotFleetInstancesOutput) { - op := &request.Operation{ - Name: opDescribeSpotFleetInstances, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeSpotFleetInstancesInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeSpotFleetInstancesOutput{} - req.Data = output - return -} - -// Describes the running instances for the specified Spot fleet. -func (c *EC2) DescribeSpotFleetInstances(input *DescribeSpotFleetInstancesInput) (*DescribeSpotFleetInstancesOutput, error) { - req, out := c.DescribeSpotFleetInstancesRequest(input) - err := req.Send() - return out, err -} - -const opDescribeSpotFleetRequestHistory = "DescribeSpotFleetRequestHistory" - -// DescribeSpotFleetRequestHistoryRequest generates a request for the DescribeSpotFleetRequestHistory operation. -func (c *EC2) DescribeSpotFleetRequestHistoryRequest(input *DescribeSpotFleetRequestHistoryInput) (req *request.Request, output *DescribeSpotFleetRequestHistoryOutput) { - op := &request.Operation{ - Name: opDescribeSpotFleetRequestHistory, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeSpotFleetRequestHistoryInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeSpotFleetRequestHistoryOutput{} - req.Data = output - return -} - -// Describes the events for the specified Spot fleet request during the specified -// time. -// -// Spot fleet events are delayed by up to 30 seconds before they can be described. -// This ensures that you can query by the last evaluated time and not miss a -// recorded event. -func (c *EC2) DescribeSpotFleetRequestHistory(input *DescribeSpotFleetRequestHistoryInput) (*DescribeSpotFleetRequestHistoryOutput, error) { - req, out := c.DescribeSpotFleetRequestHistoryRequest(input) - err := req.Send() - return out, err -} - -const opDescribeSpotFleetRequests = "DescribeSpotFleetRequests" - -// DescribeSpotFleetRequestsRequest generates a request for the DescribeSpotFleetRequests operation. -func (c *EC2) DescribeSpotFleetRequestsRequest(input *DescribeSpotFleetRequestsInput) (req *request.Request, output *DescribeSpotFleetRequestsOutput) { - op := &request.Operation{ - Name: opDescribeSpotFleetRequests, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeSpotFleetRequestsInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeSpotFleetRequestsOutput{} - req.Data = output - return -} - -// Describes your Spot fleet requests. -func (c *EC2) DescribeSpotFleetRequests(input *DescribeSpotFleetRequestsInput) (*DescribeSpotFleetRequestsOutput, error) { - req, out := c.DescribeSpotFleetRequestsRequest(input) - err := req.Send() - return out, err -} - -const opDescribeSpotInstanceRequests = "DescribeSpotInstanceRequests" - -// DescribeSpotInstanceRequestsRequest generates a request for the DescribeSpotInstanceRequests operation. -func (c *EC2) DescribeSpotInstanceRequestsRequest(input *DescribeSpotInstanceRequestsInput) (req *request.Request, output *DescribeSpotInstanceRequestsOutput) { - op := &request.Operation{ - Name: opDescribeSpotInstanceRequests, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeSpotInstanceRequestsInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeSpotInstanceRequestsOutput{} - req.Data = output - return -} - -// Describes the Spot instance requests that belong to your account. Spot instances -// are instances that Amazon EC2 launches when the bid price that you specify -// exceeds the current Spot price. Amazon EC2 periodically sets the Spot price -// based on available Spot instance capacity and current Spot instance requests. -// For more information, see Spot Instance Requests (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html) -// in the Amazon Elastic Compute Cloud User Guide. -// -// You can use DescribeSpotInstanceRequests to find a running Spot instance -// by examining the response. If the status of the Spot instance is fulfilled, -// the instance ID appears in the response and contains the identifier of the -// instance. Alternatively, you can use DescribeInstances with a filter to look -// for instances where the instance lifecycle is spot. -func (c *EC2) DescribeSpotInstanceRequests(input *DescribeSpotInstanceRequestsInput) (*DescribeSpotInstanceRequestsOutput, error) { - req, out := c.DescribeSpotInstanceRequestsRequest(input) - err := req.Send() - return out, err -} - -const opDescribeSpotPriceHistory = "DescribeSpotPriceHistory" - -// DescribeSpotPriceHistoryRequest generates a request for the DescribeSpotPriceHistory operation. -func (c *EC2) DescribeSpotPriceHistoryRequest(input *DescribeSpotPriceHistoryInput) (req *request.Request, output *DescribeSpotPriceHistoryOutput) { - op := &request.Operation{ - Name: opDescribeSpotPriceHistory, - HTTPMethod: "POST", - HTTPPath: "/", - Paginator: &request.Paginator{ - InputTokens: []string{"NextToken"}, - OutputTokens: []string{"NextToken"}, - LimitToken: "MaxResults", - TruncationToken: "", - }, - } - - if input == nil { - input = &DescribeSpotPriceHistoryInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeSpotPriceHistoryOutput{} - req.Data = output - return -} - -// Describes the Spot price history. The prices returned are listed in chronological -// order, from the oldest to the most recent, for up to the past 90 days. For -// more information, see Spot Instance Pricing History (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances-history.html) -// in the Amazon Elastic Compute Cloud User Guide. -// -// When you specify a start and end time, this operation returns the prices -// of the instance types within the time range that you specified and the time -// when the price changed. The price is valid within the time period that you -// specified; the response merely indicates the last time that the price changed. -func (c *EC2) DescribeSpotPriceHistory(input *DescribeSpotPriceHistoryInput) (*DescribeSpotPriceHistoryOutput, error) { - req, out := c.DescribeSpotPriceHistoryRequest(input) - err := req.Send() - return out, err -} - -func (c *EC2) DescribeSpotPriceHistoryPages(input *DescribeSpotPriceHistoryInput, fn func(p *DescribeSpotPriceHistoryOutput, lastPage bool) (shouldContinue bool)) error { - page, _ := c.DescribeSpotPriceHistoryRequest(input) - page.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Paginator")) - return page.EachPage(func(p interface{}, lastPage bool) bool { - return fn(p.(*DescribeSpotPriceHistoryOutput), lastPage) - }) -} - -const opDescribeSubnets = "DescribeSubnets" - -// DescribeSubnetsRequest generates a request for the DescribeSubnets operation. -func (c *EC2) DescribeSubnetsRequest(input *DescribeSubnetsInput) (req *request.Request, output *DescribeSubnetsOutput) { - op := &request.Operation{ - Name: opDescribeSubnets, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeSubnetsInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeSubnetsOutput{} - req.Data = output - return -} - -// Describes one or more of your subnets. -// -// For more information about subnets, see Your VPC and Subnets (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Subnets.html) -// in the Amazon Virtual Private Cloud User Guide. -func (c *EC2) DescribeSubnets(input *DescribeSubnetsInput) (*DescribeSubnetsOutput, error) { - req, out := c.DescribeSubnetsRequest(input) - err := req.Send() - return out, err -} - -const opDescribeTags = "DescribeTags" - -// DescribeTagsRequest generates a request for the DescribeTags operation. -func (c *EC2) DescribeTagsRequest(input *DescribeTagsInput) (req *request.Request, output *DescribeTagsOutput) { - op := &request.Operation{ - Name: opDescribeTags, - HTTPMethod: "POST", - HTTPPath: "/", - Paginator: &request.Paginator{ - InputTokens: []string{"NextToken"}, - OutputTokens: []string{"NextToken"}, - LimitToken: "MaxResults", - TruncationToken: "", - }, - } - - if input == nil { - input = &DescribeTagsInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeTagsOutput{} - req.Data = output - return -} - -// Describes one or more of the tags for your EC2 resources. -// -// For more information about tags, see Tagging Your Resources (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) DescribeTags(input *DescribeTagsInput) (*DescribeTagsOutput, error) { - req, out := c.DescribeTagsRequest(input) - err := req.Send() - return out, err -} - -func (c *EC2) DescribeTagsPages(input *DescribeTagsInput, fn func(p *DescribeTagsOutput, lastPage bool) (shouldContinue bool)) error { - page, _ := c.DescribeTagsRequest(input) - page.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Paginator")) - return page.EachPage(func(p interface{}, lastPage bool) bool { - return fn(p.(*DescribeTagsOutput), lastPage) - }) -} - -const opDescribeVolumeAttribute = "DescribeVolumeAttribute" - -// DescribeVolumeAttributeRequest generates a request for the DescribeVolumeAttribute operation. -func (c *EC2) DescribeVolumeAttributeRequest(input *DescribeVolumeAttributeInput) (req *request.Request, output *DescribeVolumeAttributeOutput) { - op := &request.Operation{ - Name: opDescribeVolumeAttribute, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeVolumeAttributeInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeVolumeAttributeOutput{} - req.Data = output - return -} - -// Describes the specified attribute of the specified volume. You can specify -// only one attribute at a time. -// -// For more information about EBS volumes, see Amazon EBS Volumes in the Amazon -// Elastic Compute Cloud User Guide. -func (c *EC2) DescribeVolumeAttribute(input *DescribeVolumeAttributeInput) (*DescribeVolumeAttributeOutput, error) { - req, out := c.DescribeVolumeAttributeRequest(input) - err := req.Send() - return out, err -} - -const opDescribeVolumeStatus = "DescribeVolumeStatus" - -// DescribeVolumeStatusRequest generates a request for the DescribeVolumeStatus operation. -func (c *EC2) DescribeVolumeStatusRequest(input *DescribeVolumeStatusInput) (req *request.Request, output *DescribeVolumeStatusOutput) { - op := &request.Operation{ - Name: opDescribeVolumeStatus, - HTTPMethod: "POST", - HTTPPath: "/", - Paginator: &request.Paginator{ - InputTokens: []string{"NextToken"}, - OutputTokens: []string{"NextToken"}, - LimitToken: "MaxResults", - TruncationToken: "", - }, - } - - if input == nil { - input = &DescribeVolumeStatusInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeVolumeStatusOutput{} - req.Data = output - return -} - -// Describes the status of the specified volumes. Volume status provides the -// result of the checks performed on your volumes to determine events that can -// impair the performance of your volumes. The performance of a volume can be -// affected if an issue occurs on the volume's underlying host. If the volume's -// underlying host experiences a power outage or system issue, after the system -// is restored, there could be data inconsistencies on the volume. Volume events -// notify you if this occurs. Volume actions notify you if any action needs -// to be taken in response to the event. -// -// The DescribeVolumeStatus operation provides the following information about -// the specified volumes: -// -// Status: Reflects the current status of the volume. The possible values are -// ok, impaired , warning, or insufficient-data. If all checks pass, the overall -// status of the volume is ok. If the check fails, the overall status is impaired. -// If the status is insufficient-data, then the checks may still be taking place -// on your volume at the time. We recommend that you retry the request. For -// more information on volume status, see Monitoring the Status of Your Volumes -// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-volume-status.html). -// -// Events: Reflect the cause of a volume status and may require you to take -// action. For example, if your volume returns an impaired status, then the -// volume event might be potential-data-inconsistency. This means that your -// volume has been affected by an issue with the underlying host, has all I/O -// operations disabled, and may have inconsistent data. -// -// Actions: Reflect the actions you may have to take in response to an event. -// For example, if the status of the volume is impaired and the volume event -// shows potential-data-inconsistency, then the action shows enable-volume-io. -// This means that you may want to enable the I/O operations for the volume -// by calling the EnableVolumeIO action and then check the volume for data consistency. -// -// Volume status is based on the volume status checks, and does not reflect -// the volume state. Therefore, volume status does not indicate volumes in the -// error state (for example, when a volume is incapable of accepting I/O.) -func (c *EC2) DescribeVolumeStatus(input *DescribeVolumeStatusInput) (*DescribeVolumeStatusOutput, error) { - req, out := c.DescribeVolumeStatusRequest(input) - err := req.Send() - return out, err -} - -func (c *EC2) DescribeVolumeStatusPages(input *DescribeVolumeStatusInput, fn func(p *DescribeVolumeStatusOutput, lastPage bool) (shouldContinue bool)) error { - page, _ := c.DescribeVolumeStatusRequest(input) - page.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Paginator")) - return page.EachPage(func(p interface{}, lastPage bool) bool { - return fn(p.(*DescribeVolumeStatusOutput), lastPage) - }) -} - -const opDescribeVolumes = "DescribeVolumes" - -// DescribeVolumesRequest generates a request for the DescribeVolumes operation. -func (c *EC2) DescribeVolumesRequest(input *DescribeVolumesInput) (req *request.Request, output *DescribeVolumesOutput) { - op := &request.Operation{ - Name: opDescribeVolumes, - HTTPMethod: "POST", - HTTPPath: "/", - Paginator: &request.Paginator{ - InputTokens: []string{"NextToken"}, - OutputTokens: []string{"NextToken"}, - LimitToken: "MaxResults", - TruncationToken: "", - }, - } - - if input == nil { - input = &DescribeVolumesInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeVolumesOutput{} - req.Data = output - return -} - -// Describes the specified EBS volumes. -// -// If you are describing a long list of volumes, you can paginate the output -// to make the list more manageable. The MaxResults parameter sets the maximum -// number of results returned in a single page. If the list of results exceeds -// your MaxResults value, then that number of results is returned along with -// a NextToken value that can be passed to a subsequent DescribeVolumes request -// to retrieve the remaining results. -// -// For more information about EBS volumes, see Amazon EBS Volumes in the Amazon -// Elastic Compute Cloud User Guide. -func (c *EC2) DescribeVolumes(input *DescribeVolumesInput) (*DescribeVolumesOutput, error) { - req, out := c.DescribeVolumesRequest(input) - err := req.Send() - return out, err -} - -func (c *EC2) DescribeVolumesPages(input *DescribeVolumesInput, fn func(p *DescribeVolumesOutput, lastPage bool) (shouldContinue bool)) error { - page, _ := c.DescribeVolumesRequest(input) - page.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Paginator")) - return page.EachPage(func(p interface{}, lastPage bool) bool { - return fn(p.(*DescribeVolumesOutput), lastPage) - }) -} - -const opDescribeVpcAttribute = "DescribeVpcAttribute" - -// DescribeVpcAttributeRequest generates a request for the DescribeVpcAttribute operation. -func (c *EC2) DescribeVpcAttributeRequest(input *DescribeVpcAttributeInput) (req *request.Request, output *DescribeVpcAttributeOutput) { - op := &request.Operation{ - Name: opDescribeVpcAttribute, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeVpcAttributeInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeVpcAttributeOutput{} - req.Data = output - return -} - -// Describes the specified attribute of the specified VPC. You can specify only -// one attribute at a time. -func (c *EC2) DescribeVpcAttribute(input *DescribeVpcAttributeInput) (*DescribeVpcAttributeOutput, error) { - req, out := c.DescribeVpcAttributeRequest(input) - err := req.Send() - return out, err -} - -const opDescribeVpcClassicLink = "DescribeVpcClassicLink" - -// DescribeVpcClassicLinkRequest generates a request for the DescribeVpcClassicLink operation. -func (c *EC2) DescribeVpcClassicLinkRequest(input *DescribeVpcClassicLinkInput) (req *request.Request, output *DescribeVpcClassicLinkOutput) { - op := &request.Operation{ - Name: opDescribeVpcClassicLink, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeVpcClassicLinkInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeVpcClassicLinkOutput{} - req.Data = output - return -} - -// Describes the ClassicLink status of one or more VPCs. -func (c *EC2) DescribeVpcClassicLink(input *DescribeVpcClassicLinkInput) (*DescribeVpcClassicLinkOutput, error) { - req, out := c.DescribeVpcClassicLinkRequest(input) - err := req.Send() - return out, err -} - -const opDescribeVpcEndpointServices = "DescribeVpcEndpointServices" - -// DescribeVpcEndpointServicesRequest generates a request for the DescribeVpcEndpointServices operation. -func (c *EC2) DescribeVpcEndpointServicesRequest(input *DescribeVpcEndpointServicesInput) (req *request.Request, output *DescribeVpcEndpointServicesOutput) { - op := &request.Operation{ - Name: opDescribeVpcEndpointServices, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeVpcEndpointServicesInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeVpcEndpointServicesOutput{} - req.Data = output - return -} - -// Describes all supported AWS services that can be specified when creating -// a VPC endpoint. -func (c *EC2) DescribeVpcEndpointServices(input *DescribeVpcEndpointServicesInput) (*DescribeVpcEndpointServicesOutput, error) { - req, out := c.DescribeVpcEndpointServicesRequest(input) - err := req.Send() - return out, err -} - -const opDescribeVpcEndpoints = "DescribeVpcEndpoints" - -// DescribeVpcEndpointsRequest generates a request for the DescribeVpcEndpoints operation. -func (c *EC2) DescribeVpcEndpointsRequest(input *DescribeVpcEndpointsInput) (req *request.Request, output *DescribeVpcEndpointsOutput) { - op := &request.Operation{ - Name: opDescribeVpcEndpoints, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeVpcEndpointsInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeVpcEndpointsOutput{} - req.Data = output - return -} - -// Describes one or more of your VPC endpoints. -func (c *EC2) DescribeVpcEndpoints(input *DescribeVpcEndpointsInput) (*DescribeVpcEndpointsOutput, error) { - req, out := c.DescribeVpcEndpointsRequest(input) - err := req.Send() - return out, err -} - -const opDescribeVpcPeeringConnections = "DescribeVpcPeeringConnections" - -// DescribeVpcPeeringConnectionsRequest generates a request for the DescribeVpcPeeringConnections operation. -func (c *EC2) DescribeVpcPeeringConnectionsRequest(input *DescribeVpcPeeringConnectionsInput) (req *request.Request, output *DescribeVpcPeeringConnectionsOutput) { - op := &request.Operation{ - Name: opDescribeVpcPeeringConnections, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeVpcPeeringConnectionsInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeVpcPeeringConnectionsOutput{} - req.Data = output - return -} - -// Describes one or more of your VPC peering connections. -func (c *EC2) DescribeVpcPeeringConnections(input *DescribeVpcPeeringConnectionsInput) (*DescribeVpcPeeringConnectionsOutput, error) { - req, out := c.DescribeVpcPeeringConnectionsRequest(input) - err := req.Send() - return out, err -} - -const opDescribeVpcs = "DescribeVpcs" - -// DescribeVpcsRequest generates a request for the DescribeVpcs operation. -func (c *EC2) DescribeVpcsRequest(input *DescribeVpcsInput) (req *request.Request, output *DescribeVpcsOutput) { - op := &request.Operation{ - Name: opDescribeVpcs, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeVpcsInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeVpcsOutput{} - req.Data = output - return -} - -// Describes one or more of your VPCs. -func (c *EC2) DescribeVpcs(input *DescribeVpcsInput) (*DescribeVpcsOutput, error) { - req, out := c.DescribeVpcsRequest(input) - err := req.Send() - return out, err -} - -const opDescribeVpnConnections = "DescribeVpnConnections" - -// DescribeVpnConnectionsRequest generates a request for the DescribeVpnConnections operation. -func (c *EC2) DescribeVpnConnectionsRequest(input *DescribeVpnConnectionsInput) (req *request.Request, output *DescribeVpnConnectionsOutput) { - op := &request.Operation{ - Name: opDescribeVpnConnections, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeVpnConnectionsInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeVpnConnectionsOutput{} - req.Data = output - return -} - -// Describes one or more of your VPN connections. -// -// For more information about VPN connections, see Adding a Hardware Virtual -// Private Gateway to Your VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html) -// in the Amazon Virtual Private Cloud User Guide. -func (c *EC2) DescribeVpnConnections(input *DescribeVpnConnectionsInput) (*DescribeVpnConnectionsOutput, error) { - req, out := c.DescribeVpnConnectionsRequest(input) - err := req.Send() - return out, err -} - -const opDescribeVpnGateways = "DescribeVpnGateways" - -// DescribeVpnGatewaysRequest generates a request for the DescribeVpnGateways operation. -func (c *EC2) DescribeVpnGatewaysRequest(input *DescribeVpnGatewaysInput) (req *request.Request, output *DescribeVpnGatewaysOutput) { - op := &request.Operation{ - Name: opDescribeVpnGateways, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DescribeVpnGatewaysInput{} - } - - req = c.newRequest(op, input, output) - output = &DescribeVpnGatewaysOutput{} - req.Data = output - return -} - -// Describes one or more of your virtual private gateways. -// -// For more information about virtual private gateways, see Adding an IPsec -// Hardware VPN to Your VPC (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html) -// in the Amazon Virtual Private Cloud User Guide. -func (c *EC2) DescribeVpnGateways(input *DescribeVpnGatewaysInput) (*DescribeVpnGatewaysOutput, error) { - req, out := c.DescribeVpnGatewaysRequest(input) - err := req.Send() - return out, err -} - -const opDetachClassicLinkVpc = "DetachClassicLinkVpc" - -// DetachClassicLinkVpcRequest generates a request for the DetachClassicLinkVpc operation. -func (c *EC2) DetachClassicLinkVpcRequest(input *DetachClassicLinkVpcInput) (req *request.Request, output *DetachClassicLinkVpcOutput) { - op := &request.Operation{ - Name: opDetachClassicLinkVpc, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DetachClassicLinkVpcInput{} - } - - req = c.newRequest(op, input, output) - output = &DetachClassicLinkVpcOutput{} - req.Data = output - return -} - -// Unlinks (detaches) a linked EC2-Classic instance from a VPC. After the instance -// has been unlinked, the VPC security groups are no longer associated with -// it. An instance is automatically unlinked from a VPC when it's stopped. -func (c *EC2) DetachClassicLinkVpc(input *DetachClassicLinkVpcInput) (*DetachClassicLinkVpcOutput, error) { - req, out := c.DetachClassicLinkVpcRequest(input) - err := req.Send() - return out, err -} - -const opDetachInternetGateway = "DetachInternetGateway" - -// DetachInternetGatewayRequest generates a request for the DetachInternetGateway operation. -func (c *EC2) DetachInternetGatewayRequest(input *DetachInternetGatewayInput) (req *request.Request, output *DetachInternetGatewayOutput) { - op := &request.Operation{ - Name: opDetachInternetGateway, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DetachInternetGatewayInput{} - } - - req = c.newRequest(op, input, output) - output = &DetachInternetGatewayOutput{} - req.Data = output - return -} - -// Detaches an Internet gateway from a VPC, disabling connectivity between the -// Internet and the VPC. The VPC must not contain any running instances with -// Elastic IP addresses. -func (c *EC2) DetachInternetGateway(input *DetachInternetGatewayInput) (*DetachInternetGatewayOutput, error) { - req, out := c.DetachInternetGatewayRequest(input) - err := req.Send() - return out, err -} - -const opDetachNetworkInterface = "DetachNetworkInterface" - -// DetachNetworkInterfaceRequest generates a request for the DetachNetworkInterface operation. -func (c *EC2) DetachNetworkInterfaceRequest(input *DetachNetworkInterfaceInput) (req *request.Request, output *DetachNetworkInterfaceOutput) { - op := &request.Operation{ - Name: opDetachNetworkInterface, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DetachNetworkInterfaceInput{} - } - - req = c.newRequest(op, input, output) - output = &DetachNetworkInterfaceOutput{} - req.Data = output - return -} - -// Detaches a network interface from an instance. -func (c *EC2) DetachNetworkInterface(input *DetachNetworkInterfaceInput) (*DetachNetworkInterfaceOutput, error) { - req, out := c.DetachNetworkInterfaceRequest(input) - err := req.Send() - return out, err -} - -const opDetachVolume = "DetachVolume" - -// DetachVolumeRequest generates a request for the DetachVolume operation. -func (c *EC2) DetachVolumeRequest(input *DetachVolumeInput) (req *request.Request, output *VolumeAttachment) { - op := &request.Operation{ - Name: opDetachVolume, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DetachVolumeInput{} - } - - req = c.newRequest(op, input, output) - output = &VolumeAttachment{} - req.Data = output - return -} - -// Detaches an EBS volume from an instance. Make sure to unmount any file systems -// on the device within your operating system before detaching the volume. Failure -// to do so results in the volume being stuck in a busy state while detaching. -// -// If an Amazon EBS volume is the root device of an instance, it can't be detached -// while the instance is running. To detach the root volume, stop the instance -// first. -// -// When a volume with an AWS Marketplace product code is detached from an instance, -// the product code is no longer associated with the instance. -// -// For more information, see Detaching an Amazon EBS Volume (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-detaching-volume.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) DetachVolume(input *DetachVolumeInput) (*VolumeAttachment, error) { - req, out := c.DetachVolumeRequest(input) - err := req.Send() - return out, err -} - -const opDetachVpnGateway = "DetachVpnGateway" - -// DetachVpnGatewayRequest generates a request for the DetachVpnGateway operation. -func (c *EC2) DetachVpnGatewayRequest(input *DetachVpnGatewayInput) (req *request.Request, output *DetachVpnGatewayOutput) { - op := &request.Operation{ - Name: opDetachVpnGateway, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DetachVpnGatewayInput{} - } - - req = c.newRequest(op, input, output) - output = &DetachVpnGatewayOutput{} - req.Data = output - return -} - -// Detaches a virtual private gateway from a VPC. You do this if you're planning -// to turn off the VPC and not use it anymore. You can confirm a virtual private -// gateway has been completely detached from a VPC by describing the virtual -// private gateway (any attachments to the virtual private gateway are also -// described). -// -// You must wait for the attachment's state to switch to detached before you -// can delete the VPC or attach a different VPC to the virtual private gateway. -func (c *EC2) DetachVpnGateway(input *DetachVpnGatewayInput) (*DetachVpnGatewayOutput, error) { - req, out := c.DetachVpnGatewayRequest(input) - err := req.Send() - return out, err -} - -const opDisableVgwRoutePropagation = "DisableVgwRoutePropagation" - -// DisableVgwRoutePropagationRequest generates a request for the DisableVgwRoutePropagation operation. -func (c *EC2) DisableVgwRoutePropagationRequest(input *DisableVgwRoutePropagationInput) (req *request.Request, output *DisableVgwRoutePropagationOutput) { - op := &request.Operation{ - Name: opDisableVgwRoutePropagation, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DisableVgwRoutePropagationInput{} - } - - req = c.newRequest(op, input, output) - output = &DisableVgwRoutePropagationOutput{} - req.Data = output - return -} - -// Disables a virtual private gateway (VGW) from propagating routes to a specified -// route table of a VPC. -func (c *EC2) DisableVgwRoutePropagation(input *DisableVgwRoutePropagationInput) (*DisableVgwRoutePropagationOutput, error) { - req, out := c.DisableVgwRoutePropagationRequest(input) - err := req.Send() - return out, err -} - -const opDisableVpcClassicLink = "DisableVpcClassicLink" - -// DisableVpcClassicLinkRequest generates a request for the DisableVpcClassicLink operation. -func (c *EC2) DisableVpcClassicLinkRequest(input *DisableVpcClassicLinkInput) (req *request.Request, output *DisableVpcClassicLinkOutput) { - op := &request.Operation{ - Name: opDisableVpcClassicLink, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DisableVpcClassicLinkInput{} - } - - req = c.newRequest(op, input, output) - output = &DisableVpcClassicLinkOutput{} - req.Data = output - return -} - -// Disables ClassicLink for a VPC. You cannot disable ClassicLink for a VPC -// that has EC2-Classic instances linked to it. -func (c *EC2) DisableVpcClassicLink(input *DisableVpcClassicLinkInput) (*DisableVpcClassicLinkOutput, error) { - req, out := c.DisableVpcClassicLinkRequest(input) - err := req.Send() - return out, err -} - -const opDisassociateAddress = "DisassociateAddress" - -// DisassociateAddressRequest generates a request for the DisassociateAddress operation. -func (c *EC2) DisassociateAddressRequest(input *DisassociateAddressInput) (req *request.Request, output *DisassociateAddressOutput) { - op := &request.Operation{ - Name: opDisassociateAddress, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DisassociateAddressInput{} - } - - req = c.newRequest(op, input, output) - output = &DisassociateAddressOutput{} - req.Data = output - return -} - -// Disassociates an Elastic IP address from the instance or network interface -// it's associated with. -// -// An Elastic IP address is for use in either the EC2-Classic platform or in -// a VPC. For more information, see Elastic IP Addresses (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html) -// in the Amazon Elastic Compute Cloud User Guide. -// -// This is an idempotent operation. If you perform the operation more than -// once, Amazon EC2 doesn't return an error. -func (c *EC2) DisassociateAddress(input *DisassociateAddressInput) (*DisassociateAddressOutput, error) { - req, out := c.DisassociateAddressRequest(input) - err := req.Send() - return out, err -} - -const opDisassociateRouteTable = "DisassociateRouteTable" - -// DisassociateRouteTableRequest generates a request for the DisassociateRouteTable operation. -func (c *EC2) DisassociateRouteTableRequest(input *DisassociateRouteTableInput) (req *request.Request, output *DisassociateRouteTableOutput) { - op := &request.Operation{ - Name: opDisassociateRouteTable, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &DisassociateRouteTableInput{} - } - - req = c.newRequest(op, input, output) - output = &DisassociateRouteTableOutput{} - req.Data = output - return -} - -// Disassociates a subnet from a route table. -// -// After you perform this action, the subnet no longer uses the routes in the -// route table. Instead, it uses the routes in the VPC's main route table. For -// more information about route tables, see Route Tables (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html) -// in the Amazon Virtual Private Cloud User Guide. -func (c *EC2) DisassociateRouteTable(input *DisassociateRouteTableInput) (*DisassociateRouteTableOutput, error) { - req, out := c.DisassociateRouteTableRequest(input) - err := req.Send() - return out, err -} - -const opEnableVgwRoutePropagation = "EnableVgwRoutePropagation" - -// EnableVgwRoutePropagationRequest generates a request for the EnableVgwRoutePropagation operation. -func (c *EC2) EnableVgwRoutePropagationRequest(input *EnableVgwRoutePropagationInput) (req *request.Request, output *EnableVgwRoutePropagationOutput) { - op := &request.Operation{ - Name: opEnableVgwRoutePropagation, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &EnableVgwRoutePropagationInput{} - } - - req = c.newRequest(op, input, output) - output = &EnableVgwRoutePropagationOutput{} - req.Data = output - return -} - -// Enables a virtual private gateway (VGW) to propagate routes to the specified -// route table of a VPC. -func (c *EC2) EnableVgwRoutePropagation(input *EnableVgwRoutePropagationInput) (*EnableVgwRoutePropagationOutput, error) { - req, out := c.EnableVgwRoutePropagationRequest(input) - err := req.Send() - return out, err -} - -const opEnableVolumeIO = "EnableVolumeIO" - -// EnableVolumeIORequest generates a request for the EnableVolumeIO operation. -func (c *EC2) EnableVolumeIORequest(input *EnableVolumeIOInput) (req *request.Request, output *EnableVolumeIOOutput) { - op := &request.Operation{ - Name: opEnableVolumeIO, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &EnableVolumeIOInput{} - } - - req = c.newRequest(op, input, output) - output = &EnableVolumeIOOutput{} - req.Data = output - return -} - -// Enables I/O operations for a volume that had I/O operations disabled because -// the data on the volume was potentially inconsistent. -func (c *EC2) EnableVolumeIO(input *EnableVolumeIOInput) (*EnableVolumeIOOutput, error) { - req, out := c.EnableVolumeIORequest(input) - err := req.Send() - return out, err -} - -const opEnableVpcClassicLink = "EnableVpcClassicLink" - -// EnableVpcClassicLinkRequest generates a request for the EnableVpcClassicLink operation. -func (c *EC2) EnableVpcClassicLinkRequest(input *EnableVpcClassicLinkInput) (req *request.Request, output *EnableVpcClassicLinkOutput) { - op := &request.Operation{ - Name: opEnableVpcClassicLink, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &EnableVpcClassicLinkInput{} - } - - req = c.newRequest(op, input, output) - output = &EnableVpcClassicLinkOutput{} - req.Data = output - return -} - -// Enables a VPC for ClassicLink. You can then link EC2-Classic instances to -// your ClassicLink-enabled VPC to allow communication over private IP addresses. -// You cannot enable your VPC for ClassicLink if any of your VPC's route tables -// have existing routes for address ranges within the 10.0.0.0/8 IP address -// range, excluding local routes for VPCs in the 10.0.0.0/16 and 10.1.0.0/16 -// IP address ranges. For more information, see ClassicLink (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) EnableVpcClassicLink(input *EnableVpcClassicLinkInput) (*EnableVpcClassicLinkOutput, error) { - req, out := c.EnableVpcClassicLinkRequest(input) - err := req.Send() - return out, err -} - -const opGetConsoleOutput = "GetConsoleOutput" - -// GetConsoleOutputRequest generates a request for the GetConsoleOutput operation. -func (c *EC2) GetConsoleOutputRequest(input *GetConsoleOutputInput) (req *request.Request, output *GetConsoleOutputOutput) { - op := &request.Operation{ - Name: opGetConsoleOutput, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &GetConsoleOutputInput{} - } - - req = c.newRequest(op, input, output) - output = &GetConsoleOutputOutput{} - req.Data = output - return -} - -// Gets the console output for the specified instance. -// -// Instances do not have a physical monitor through which you can view their -// console output. They also lack physical controls that allow you to power -// up, reboot, or shut them down. To allow these actions, we provide them through -// the Amazon EC2 API and command line interface. -// -// Instance console output is buffered and posted shortly after instance boot, -// reboot, and termination. Amazon EC2 preserves the most recent 64 KB output -// which is available for at least one hour after the most recent post. -// -// For Linux instances, the instance console output displays the exact console -// output that would normally be displayed on a physical monitor attached to -// a computer. This output is buffered because the instance produces it and -// then posts it to a store where the instance's owner can retrieve it. -// -// For Windows instances, the instance console output includes output from -// the EC2Config service. -func (c *EC2) GetConsoleOutput(input *GetConsoleOutputInput) (*GetConsoleOutputOutput, error) { - req, out := c.GetConsoleOutputRequest(input) - err := req.Send() - return out, err -} - -const opGetPasswordData = "GetPasswordData" - -// GetPasswordDataRequest generates a request for the GetPasswordData operation. -func (c *EC2) GetPasswordDataRequest(input *GetPasswordDataInput) (req *request.Request, output *GetPasswordDataOutput) { - op := &request.Operation{ - Name: opGetPasswordData, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &GetPasswordDataInput{} - } - - req = c.newRequest(op, input, output) - output = &GetPasswordDataOutput{} - req.Data = output - return -} - -// Retrieves the encrypted administrator password for an instance running Windows. -// -// The Windows password is generated at boot if the EC2Config service plugin, -// Ec2SetPassword, is enabled. This usually only happens the first time an AMI -// is launched, and then Ec2SetPassword is automatically disabled. The password -// is not generated for rebundled AMIs unless Ec2SetPassword is enabled before -// bundling. -// -// The password is encrypted using the key pair that you specified when you -// launched the instance. You must provide the corresponding key pair file. -// -// Password generation and encryption takes a few moments. We recommend that -// you wait up to 15 minutes after launching an instance before trying to retrieve -// the generated password. -func (c *EC2) GetPasswordData(input *GetPasswordDataInput) (*GetPasswordDataOutput, error) { - req, out := c.GetPasswordDataRequest(input) - err := req.Send() - return out, err -} - -const opImportImage = "ImportImage" - -// ImportImageRequest generates a request for the ImportImage operation. -func (c *EC2) ImportImageRequest(input *ImportImageInput) (req *request.Request, output *ImportImageOutput) { - op := &request.Operation{ - Name: opImportImage, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ImportImageInput{} - } - - req = c.newRequest(op, input, output) - output = &ImportImageOutput{} - req.Data = output - return -} - -// Import single or multi-volume disk images or EBS snapshots into an Amazon -// Machine Image (AMI). -func (c *EC2) ImportImage(input *ImportImageInput) (*ImportImageOutput, error) { - req, out := c.ImportImageRequest(input) - err := req.Send() - return out, err -} - -const opImportInstance = "ImportInstance" - -// ImportInstanceRequest generates a request for the ImportInstance operation. -func (c *EC2) ImportInstanceRequest(input *ImportInstanceInput) (req *request.Request, output *ImportInstanceOutput) { - op := &request.Operation{ - Name: opImportInstance, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ImportInstanceInput{} - } - - req = c.newRequest(op, input, output) - output = &ImportInstanceOutput{} - req.Data = output - return -} - -// Creates an import instance task using metadata from the specified disk image. -// ImportInstance only supports single-volume VMs. To import multi-volume VMs, -// use ImportImage. After importing the image, you then upload it using the -// ec2-import-volume command in the EC2 command line tools. For more information, -// see Using the Command Line Tools to Import Your Virtual Machine to Amazon -// EC2 (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UploadingYourInstancesandVolumes.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) ImportInstance(input *ImportInstanceInput) (*ImportInstanceOutput, error) { - req, out := c.ImportInstanceRequest(input) - err := req.Send() - return out, err -} - -const opImportKeyPair = "ImportKeyPair" - -// ImportKeyPairRequest generates a request for the ImportKeyPair operation. -func (c *EC2) ImportKeyPairRequest(input *ImportKeyPairInput) (req *request.Request, output *ImportKeyPairOutput) { - op := &request.Operation{ - Name: opImportKeyPair, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ImportKeyPairInput{} - } - - req = c.newRequest(op, input, output) - output = &ImportKeyPairOutput{} - req.Data = output - return -} - -// Imports the public key from an RSA key pair that you created with a third-party -// tool. Compare this with CreateKeyPair, in which AWS creates the key pair -// and gives the keys to you (AWS keeps a copy of the public key). With ImportKeyPair, -// you create the key pair and give AWS just the public key. The private key -// is never transferred between you and AWS. -// -// For more information about key pairs, see Key Pairs (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) ImportKeyPair(input *ImportKeyPairInput) (*ImportKeyPairOutput, error) { - req, out := c.ImportKeyPairRequest(input) - err := req.Send() - return out, err -} - -const opImportSnapshot = "ImportSnapshot" - -// ImportSnapshotRequest generates a request for the ImportSnapshot operation. -func (c *EC2) ImportSnapshotRequest(input *ImportSnapshotInput) (req *request.Request, output *ImportSnapshotOutput) { - op := &request.Operation{ - Name: opImportSnapshot, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ImportSnapshotInput{} - } - - req = c.newRequest(op, input, output) - output = &ImportSnapshotOutput{} - req.Data = output - return -} - -// Imports a disk into an EBS snapshot. -func (c *EC2) ImportSnapshot(input *ImportSnapshotInput) (*ImportSnapshotOutput, error) { - req, out := c.ImportSnapshotRequest(input) - err := req.Send() - return out, err -} - -const opImportVolume = "ImportVolume" - -// ImportVolumeRequest generates a request for the ImportVolume operation. -func (c *EC2) ImportVolumeRequest(input *ImportVolumeInput) (req *request.Request, output *ImportVolumeOutput) { - op := &request.Operation{ - Name: opImportVolume, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ImportVolumeInput{} - } - - req = c.newRequest(op, input, output) - output = &ImportVolumeOutput{} - req.Data = output - return -} - -// Creates an import volume task using metadata from the specified disk image. -// After importing the image, you then upload it using the ec2-import-volume -// command in the Amazon EC2 command-line interface (CLI) tools. For more information, -// see Using the Command Line Tools to Import Your Virtual Machine to Amazon -// EC2 (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UploadingYourInstancesandVolumes.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) ImportVolume(input *ImportVolumeInput) (*ImportVolumeOutput, error) { - req, out := c.ImportVolumeRequest(input) - err := req.Send() - return out, err -} - -const opModifyHosts = "ModifyHosts" - -// ModifyHostsRequest generates a request for the ModifyHosts operation. -func (c *EC2) ModifyHostsRequest(input *ModifyHostsInput) (req *request.Request, output *ModifyHostsOutput) { - op := &request.Operation{ - Name: opModifyHosts, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ModifyHostsInput{} - } - - req = c.newRequest(op, input, output) - output = &ModifyHostsOutput{} - req.Data = output - return -} - -// Modify the auto-placement setting of a Dedicated host. When auto-placement -// is enabled, AWS will place instances that you launch with a tenancy of host, -// but without targeting a specific host ID, onto any available Dedicated host -// in your account which has auto-placement enabled. When auto-placement is -// disabled, you need to provide a host ID if you want the instance to launch -// onto a specific host. If no host ID is provided, the instance will be launched -// onto a suitable host which has auto-placement enabled. -func (c *EC2) ModifyHosts(input *ModifyHostsInput) (*ModifyHostsOutput, error) { - req, out := c.ModifyHostsRequest(input) - err := req.Send() - return out, err -} - -const opModifyIdFormat = "ModifyIdFormat" - -// ModifyIdFormatRequest generates a request for the ModifyIdFormat operation. -func (c *EC2) ModifyIdFormatRequest(input *ModifyIdFormatInput) (req *request.Request, output *ModifyIdFormatOutput) { - op := &request.Operation{ - Name: opModifyIdFormat, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ModifyIdFormatInput{} - } - - req = c.newRequest(op, input, output) - output = &ModifyIdFormatOutput{} - req.Data = output - return -} - -// Important: This command is reserved for future use, and is currently not -// available for you to use. -// -// Modifies the ID format for the specified resource. You can specify that -// resources should receive longer IDs (17-character IDs) when they are created. -// The following resource types support longer IDs: instance | reservation. -// -// This setting applies to the IAM user who makes the request; it does not -// apply to the entire AWS account. By default, an IAM user defaults to the -// same settings as the root user, unless they explicitly override the settings -// by running this request. These settings are applied on a per-region basis. -func (c *EC2) ModifyIdFormat(input *ModifyIdFormatInput) (*ModifyIdFormatOutput, error) { - req, out := c.ModifyIdFormatRequest(input) - err := req.Send() - return out, err -} - -const opModifyImageAttribute = "ModifyImageAttribute" - -// ModifyImageAttributeRequest generates a request for the ModifyImageAttribute operation. -func (c *EC2) ModifyImageAttributeRequest(input *ModifyImageAttributeInput) (req *request.Request, output *ModifyImageAttributeOutput) { - op := &request.Operation{ - Name: opModifyImageAttribute, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ModifyImageAttributeInput{} - } - - req = c.newRequest(op, input, output) - output = &ModifyImageAttributeOutput{} - req.Data = output - return -} - -// Modifies the specified attribute of the specified AMI. You can specify only -// one attribute at a time. -// -// AWS Marketplace product codes cannot be modified. Images with an AWS Marketplace -// product code cannot be made public. -func (c *EC2) ModifyImageAttribute(input *ModifyImageAttributeInput) (*ModifyImageAttributeOutput, error) { - req, out := c.ModifyImageAttributeRequest(input) - err := req.Send() - return out, err -} - -const opModifyInstanceAttribute = "ModifyInstanceAttribute" - -// ModifyInstanceAttributeRequest generates a request for the ModifyInstanceAttribute operation. -func (c *EC2) ModifyInstanceAttributeRequest(input *ModifyInstanceAttributeInput) (req *request.Request, output *ModifyInstanceAttributeOutput) { - op := &request.Operation{ - Name: opModifyInstanceAttribute, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ModifyInstanceAttributeInput{} - } - - req = c.newRequest(op, input, output) - output = &ModifyInstanceAttributeOutput{} - req.Data = output - return -} - -// Modifies the specified attribute of the specified instance. You can specify -// only one attribute at a time. -// -// To modify some attributes, the instance must be stopped. For more information, -// see Modifying Attributes of a Stopped Instance (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_ChangingAttributesWhileInstanceStopped.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) ModifyInstanceAttribute(input *ModifyInstanceAttributeInput) (*ModifyInstanceAttributeOutput, error) { - req, out := c.ModifyInstanceAttributeRequest(input) - err := req.Send() - return out, err -} - -const opModifyInstancePlacement = "ModifyInstancePlacement" - -// ModifyInstancePlacementRequest generates a request for the ModifyInstancePlacement operation. -func (c *EC2) ModifyInstancePlacementRequest(input *ModifyInstancePlacementInput) (req *request.Request, output *ModifyInstancePlacementOutput) { - op := &request.Operation{ - Name: opModifyInstancePlacement, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ModifyInstancePlacementInput{} - } - - req = c.newRequest(op, input, output) - output = &ModifyInstancePlacementOutput{} - req.Data = output - return -} - -// Set the instance affinity value for a specific stopped instance and modify -// the instance tenancy setting. -// -// Instance affinity is disabled by default. When instance affinity is host -// and it is not associated with a specific Dedicated host, the next time it -// is launched it will automatically be associated with the host it lands on. -// This relationship will persist if the instance is stopped/started, or rebooted. -// -// You can modify the host ID associated with a stopped instance. If a stopped -// instance has a new host ID association, the instance will target that host -// when restarted. -// -// You can modify the tenancy of a stopped instance with a tenancy of host -// or dedicated. -// -// Affinity, hostID, and tenancy are not required parameters, but at least -// one of them must be specified in the request. Affinity and tenancy can be -// modified in the same request, but tenancy can only be modified on instances -// that are stopped. -func (c *EC2) ModifyInstancePlacement(input *ModifyInstancePlacementInput) (*ModifyInstancePlacementOutput, error) { - req, out := c.ModifyInstancePlacementRequest(input) - err := req.Send() - return out, err -} - -const opModifyNetworkInterfaceAttribute = "ModifyNetworkInterfaceAttribute" - -// ModifyNetworkInterfaceAttributeRequest generates a request for the ModifyNetworkInterfaceAttribute operation. -func (c *EC2) ModifyNetworkInterfaceAttributeRequest(input *ModifyNetworkInterfaceAttributeInput) (req *request.Request, output *ModifyNetworkInterfaceAttributeOutput) { - op := &request.Operation{ - Name: opModifyNetworkInterfaceAttribute, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ModifyNetworkInterfaceAttributeInput{} - } - - req = c.newRequest(op, input, output) - output = &ModifyNetworkInterfaceAttributeOutput{} - req.Data = output - return -} - -// Modifies the specified network interface attribute. You can specify only -// one attribute at a time. -func (c *EC2) ModifyNetworkInterfaceAttribute(input *ModifyNetworkInterfaceAttributeInput) (*ModifyNetworkInterfaceAttributeOutput, error) { - req, out := c.ModifyNetworkInterfaceAttributeRequest(input) - err := req.Send() - return out, err -} - -const opModifyReservedInstances = "ModifyReservedInstances" - -// ModifyReservedInstancesRequest generates a request for the ModifyReservedInstances operation. -func (c *EC2) ModifyReservedInstancesRequest(input *ModifyReservedInstancesInput) (req *request.Request, output *ModifyReservedInstancesOutput) { - op := &request.Operation{ - Name: opModifyReservedInstances, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ModifyReservedInstancesInput{} - } - - req = c.newRequest(op, input, output) - output = &ModifyReservedInstancesOutput{} - req.Data = output - return -} - -// Modifies the Availability Zone, instance count, instance type, or network -// platform (EC2-Classic or EC2-VPC) of your Reserved Instances. The Reserved -// Instances to be modified must be identical, except for Availability Zone, -// network platform, and instance type. -// -// For more information, see Modifying Reserved Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-modifying.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) ModifyReservedInstances(input *ModifyReservedInstancesInput) (*ModifyReservedInstancesOutput, error) { - req, out := c.ModifyReservedInstancesRequest(input) - err := req.Send() - return out, err -} - -const opModifySnapshotAttribute = "ModifySnapshotAttribute" - -// ModifySnapshotAttributeRequest generates a request for the ModifySnapshotAttribute operation. -func (c *EC2) ModifySnapshotAttributeRequest(input *ModifySnapshotAttributeInput) (req *request.Request, output *ModifySnapshotAttributeOutput) { - op := &request.Operation{ - Name: opModifySnapshotAttribute, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ModifySnapshotAttributeInput{} - } - - req = c.newRequest(op, input, output) - output = &ModifySnapshotAttributeOutput{} - req.Data = output - return -} - -// Adds or removes permission settings for the specified snapshot. You may add -// or remove specified AWS account IDs from a snapshot's list of create volume -// permissions, but you cannot do both in a single API call. If you need to -// both add and remove account IDs for a snapshot, you must use multiple API -// calls. -// -// For more information on modifying snapshot permissions, see Sharing Snapshots -// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-modifying-snapshot-permissions.html) -// in the Amazon Elastic Compute Cloud User Guide. -// -// Snapshots with AWS Marketplace product codes cannot be made public. -func (c *EC2) ModifySnapshotAttribute(input *ModifySnapshotAttributeInput) (*ModifySnapshotAttributeOutput, error) { - req, out := c.ModifySnapshotAttributeRequest(input) - err := req.Send() - return out, err -} - -const opModifySpotFleetRequest = "ModifySpotFleetRequest" - -// ModifySpotFleetRequestRequest generates a request for the ModifySpotFleetRequest operation. -func (c *EC2) ModifySpotFleetRequestRequest(input *ModifySpotFleetRequestInput) (req *request.Request, output *ModifySpotFleetRequestOutput) { - op := &request.Operation{ - Name: opModifySpotFleetRequest, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ModifySpotFleetRequestInput{} - } - - req = c.newRequest(op, input, output) - output = &ModifySpotFleetRequestOutput{} - req.Data = output - return -} - -// Modifies the specified Spot fleet request. -// -// While the Spot fleet request is being modified, it is in the modifying state. -// -// To scale up your Spot fleet, increase its target capacity. The Spot fleet -// launches the additional Spot instances according to the allocation strategy -// for the Spot fleet request. If the allocation strategy is lowestPrice, the -// Spot fleet launches instances using the Spot pool with the lowest price. -// If the allocation strategy is diversified, the Spot fleet distributes the -// instances across the Spot pools. -// -// To scale down your Spot fleet, decrease its target capacity. First, the -// Spot fleet cancels any open bids that exceed the new target capacity. You -// can request that the Spot fleet terminate Spot instances until the size of -// the fleet no longer exceeds the new target capacity. If the allocation strategy -// is lowestPrice, the Spot fleet terminates the instances with the highest -// price per unit. If the allocation strategy is diversified, the Spot fleet -// terminates instances across the Spot pools. Alternatively, you can request -// that the Spot fleet keep the fleet at its current size, but not replace any -// Spot instances that are interrupted or that you terminate manually. -func (c *EC2) ModifySpotFleetRequest(input *ModifySpotFleetRequestInput) (*ModifySpotFleetRequestOutput, error) { - req, out := c.ModifySpotFleetRequestRequest(input) - err := req.Send() - return out, err -} - -const opModifySubnetAttribute = "ModifySubnetAttribute" - -// ModifySubnetAttributeRequest generates a request for the ModifySubnetAttribute operation. -func (c *EC2) ModifySubnetAttributeRequest(input *ModifySubnetAttributeInput) (req *request.Request, output *ModifySubnetAttributeOutput) { - op := &request.Operation{ - Name: opModifySubnetAttribute, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ModifySubnetAttributeInput{} - } - - req = c.newRequest(op, input, output) - output = &ModifySubnetAttributeOutput{} - req.Data = output - return -} - -// Modifies a subnet attribute. -func (c *EC2) ModifySubnetAttribute(input *ModifySubnetAttributeInput) (*ModifySubnetAttributeOutput, error) { - req, out := c.ModifySubnetAttributeRequest(input) - err := req.Send() - return out, err -} - -const opModifyVolumeAttribute = "ModifyVolumeAttribute" - -// ModifyVolumeAttributeRequest generates a request for the ModifyVolumeAttribute operation. -func (c *EC2) ModifyVolumeAttributeRequest(input *ModifyVolumeAttributeInput) (req *request.Request, output *ModifyVolumeAttributeOutput) { - op := &request.Operation{ - Name: opModifyVolumeAttribute, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ModifyVolumeAttributeInput{} - } - - req = c.newRequest(op, input, output) - output = &ModifyVolumeAttributeOutput{} - req.Data = output - return -} - -// Modifies a volume attribute. -// -// By default, all I/O operations for the volume are suspended when the data -// on the volume is determined to be potentially inconsistent, to prevent undetectable, -// latent data corruption. The I/O access to the volume can be resumed by first -// enabling I/O access and then checking the data consistency on your volume. -// -// You can change the default behavior to resume I/O operations. We recommend -// that you change this only for boot volumes or for volumes that are stateless -// or disposable. -func (c *EC2) ModifyVolumeAttribute(input *ModifyVolumeAttributeInput) (*ModifyVolumeAttributeOutput, error) { - req, out := c.ModifyVolumeAttributeRequest(input) - err := req.Send() - return out, err -} - -const opModifyVpcAttribute = "ModifyVpcAttribute" - -// ModifyVpcAttributeRequest generates a request for the ModifyVpcAttribute operation. -func (c *EC2) ModifyVpcAttributeRequest(input *ModifyVpcAttributeInput) (req *request.Request, output *ModifyVpcAttributeOutput) { - op := &request.Operation{ - Name: opModifyVpcAttribute, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ModifyVpcAttributeInput{} - } - - req = c.newRequest(op, input, output) - output = &ModifyVpcAttributeOutput{} - req.Data = output - return -} - -// Modifies the specified attribute of the specified VPC. -func (c *EC2) ModifyVpcAttribute(input *ModifyVpcAttributeInput) (*ModifyVpcAttributeOutput, error) { - req, out := c.ModifyVpcAttributeRequest(input) - err := req.Send() - return out, err -} - -const opModifyVpcEndpoint = "ModifyVpcEndpoint" - -// ModifyVpcEndpointRequest generates a request for the ModifyVpcEndpoint operation. -func (c *EC2) ModifyVpcEndpointRequest(input *ModifyVpcEndpointInput) (req *request.Request, output *ModifyVpcEndpointOutput) { - op := &request.Operation{ - Name: opModifyVpcEndpoint, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ModifyVpcEndpointInput{} - } - - req = c.newRequest(op, input, output) - output = &ModifyVpcEndpointOutput{} - req.Data = output - return -} - -// Modifies attributes of a specified VPC endpoint. You can modify the policy -// associated with the endpoint, and you can add and remove route tables associated -// with the endpoint. -func (c *EC2) ModifyVpcEndpoint(input *ModifyVpcEndpointInput) (*ModifyVpcEndpointOutput, error) { - req, out := c.ModifyVpcEndpointRequest(input) - err := req.Send() - return out, err -} - -const opMonitorInstances = "MonitorInstances" - -// MonitorInstancesRequest generates a request for the MonitorInstances operation. -func (c *EC2) MonitorInstancesRequest(input *MonitorInstancesInput) (req *request.Request, output *MonitorInstancesOutput) { - op := &request.Operation{ - Name: opMonitorInstances, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &MonitorInstancesInput{} - } - - req = c.newRequest(op, input, output) - output = &MonitorInstancesOutput{} - req.Data = output - return -} - -// Enables monitoring for a running instance. For more information about monitoring -// instances, see Monitoring Your Instances and Volumes (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-cloudwatch.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) MonitorInstances(input *MonitorInstancesInput) (*MonitorInstancesOutput, error) { - req, out := c.MonitorInstancesRequest(input) - err := req.Send() - return out, err -} - -const opMoveAddressToVpc = "MoveAddressToVpc" - -// MoveAddressToVpcRequest generates a request for the MoveAddressToVpc operation. -func (c *EC2) MoveAddressToVpcRequest(input *MoveAddressToVpcInput) (req *request.Request, output *MoveAddressToVpcOutput) { - op := &request.Operation{ - Name: opMoveAddressToVpc, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &MoveAddressToVpcInput{} - } - - req = c.newRequest(op, input, output) - output = &MoveAddressToVpcOutput{} - req.Data = output - return -} - -// Moves an Elastic IP address from the EC2-Classic platform to the EC2-VPC -// platform. The Elastic IP address must be allocated to your account, and it -// must not be associated with an instance. After the Elastic IP address is -// moved, it is no longer available for use in the EC2-Classic platform, unless -// you move it back using the RestoreAddressToClassic request. You cannot move -// an Elastic IP address that's allocated for use in the EC2-VPC platform to -// the EC2-Classic platform. -func (c *EC2) MoveAddressToVpc(input *MoveAddressToVpcInput) (*MoveAddressToVpcOutput, error) { - req, out := c.MoveAddressToVpcRequest(input) - err := req.Send() - return out, err -} - -const opPurchaseReservedInstancesOffering = "PurchaseReservedInstancesOffering" - -// PurchaseReservedInstancesOfferingRequest generates a request for the PurchaseReservedInstancesOffering operation. -func (c *EC2) PurchaseReservedInstancesOfferingRequest(input *PurchaseReservedInstancesOfferingInput) (req *request.Request, output *PurchaseReservedInstancesOfferingOutput) { - op := &request.Operation{ - Name: opPurchaseReservedInstancesOffering, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &PurchaseReservedInstancesOfferingInput{} - } - - req = c.newRequest(op, input, output) - output = &PurchaseReservedInstancesOfferingOutput{} - req.Data = output - return -} - -// Purchases a Reserved instance for use with your account. With Amazon EC2 -// Reserved instances, you obtain a capacity reservation for a certain instance -// configuration over a specified period of time and pay a lower hourly rate -// compared to On-Demand Instance pricing. -// -// Use DescribeReservedInstancesOfferings to get a list of Reserved instance -// offerings that match your specifications. After you've purchased a Reserved -// instance, you can check for your new Reserved instance with DescribeReservedInstances. -// -// For more information, see Reserved Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts-on-demand-reserved-instances.html) -// and Reserved Instance Marketplace (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) PurchaseReservedInstancesOffering(input *PurchaseReservedInstancesOfferingInput) (*PurchaseReservedInstancesOfferingOutput, error) { - req, out := c.PurchaseReservedInstancesOfferingRequest(input) - err := req.Send() - return out, err -} - -const opRebootInstances = "RebootInstances" - -// RebootInstancesRequest generates a request for the RebootInstances operation. -func (c *EC2) RebootInstancesRequest(input *RebootInstancesInput) (req *request.Request, output *RebootInstancesOutput) { - op := &request.Operation{ - Name: opRebootInstances, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &RebootInstancesInput{} - } - - req = c.newRequest(op, input, output) - output = &RebootInstancesOutput{} - req.Data = output - return -} - -// Requests a reboot of one or more instances. This operation is asynchronous; -// it only queues a request to reboot the specified instances. The operation -// succeeds if the instances are valid and belong to you. Requests to reboot -// terminated instances are ignored. -// -// If a Linux/Unix instance does not cleanly shut down within four minutes, -// Amazon EC2 performs a hard reboot. -// -// For more information about troubleshooting, see Getting Console Output and -// Rebooting Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-console.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) RebootInstances(input *RebootInstancesInput) (*RebootInstancesOutput, error) { - req, out := c.RebootInstancesRequest(input) - err := req.Send() - return out, err -} - -const opRegisterImage = "RegisterImage" - -// RegisterImageRequest generates a request for the RegisterImage operation. -func (c *EC2) RegisterImageRequest(input *RegisterImageInput) (req *request.Request, output *RegisterImageOutput) { - op := &request.Operation{ - Name: opRegisterImage, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &RegisterImageInput{} - } - - req = c.newRequest(op, input, output) - output = &RegisterImageOutput{} - req.Data = output - return -} - -// Registers an AMI. When you're creating an AMI, this is the final step you -// must complete before you can launch an instance from the AMI. For more information -// about creating AMIs, see Creating Your Own AMIs (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami.html) -// in the Amazon Elastic Compute Cloud User Guide. -// -// For Amazon EBS-backed instances, CreateImage creates and registers the AMI -// in a single request, so you don't have to register the AMI yourself. -// -// You can also use RegisterImage to create an Amazon EBS-backed Linux AMI -// from a snapshot of a root device volume. For more information, see Launching -// an Instance from a Snapshot (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_LaunchingInstanceFromSnapshot.html) -// in the Amazon Elastic Compute Cloud User Guide. -// -// Some Linux distributions, such as Red Hat Enterprise Linux (RHEL) and SUSE -// Linux Enterprise Server (SLES), use the EC2 billingProduct code associated -// with an AMI to verify subscription status for package updates. Creating an -// AMI from an EBS snapshot does not maintain this billing code, and subsequent -// instances launched from such an AMI will not be able to connect to package -// update infrastructure. -// -// Similarly, although you can create a Windows AMI from a snapshot, you can't -// successfully launch an instance from the AMI. -// -// To create Windows AMIs or to create AMIs for Linux operating systems that -// must retain AMI billing codes to work properly, see CreateImage. -// -// If needed, you can deregister an AMI at any time. Any modifications you -// make to an AMI backed by an instance store volume invalidates its registration. -// If you make changes to an image, deregister the previous image and register -// the new image. -// -// You can't register an image where a secondary (non-root) snapshot has AWS -// Marketplace product codes. -func (c *EC2) RegisterImage(input *RegisterImageInput) (*RegisterImageOutput, error) { - req, out := c.RegisterImageRequest(input) - err := req.Send() - return out, err -} - -const opRejectVpcPeeringConnection = "RejectVpcPeeringConnection" - -// RejectVpcPeeringConnectionRequest generates a request for the RejectVpcPeeringConnection operation. -func (c *EC2) RejectVpcPeeringConnectionRequest(input *RejectVpcPeeringConnectionInput) (req *request.Request, output *RejectVpcPeeringConnectionOutput) { - op := &request.Operation{ - Name: opRejectVpcPeeringConnection, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &RejectVpcPeeringConnectionInput{} - } - - req = c.newRequest(op, input, output) - output = &RejectVpcPeeringConnectionOutput{} - req.Data = output - return -} - -// Rejects a VPC peering connection request. The VPC peering connection must -// be in the pending-acceptance state. Use the DescribeVpcPeeringConnections -// request to view your outstanding VPC peering connection requests. To delete -// an active VPC peering connection, or to delete a VPC peering connection request -// that you initiated, use DeleteVpcPeeringConnection. -func (c *EC2) RejectVpcPeeringConnection(input *RejectVpcPeeringConnectionInput) (*RejectVpcPeeringConnectionOutput, error) { - req, out := c.RejectVpcPeeringConnectionRequest(input) - err := req.Send() - return out, err -} - -const opReleaseAddress = "ReleaseAddress" - -// ReleaseAddressRequest generates a request for the ReleaseAddress operation. -func (c *EC2) ReleaseAddressRequest(input *ReleaseAddressInput) (req *request.Request, output *ReleaseAddressOutput) { - op := &request.Operation{ - Name: opReleaseAddress, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ReleaseAddressInput{} - } - - req = c.newRequest(op, input, output) - output = &ReleaseAddressOutput{} - req.Data = output - return -} - -// Releases the specified Elastic IP address. -// -// After releasing an Elastic IP address, it is released to the IP address -// pool and might be unavailable to you. Be sure to update your DNS records -// and any servers or devices that communicate with the address. If you attempt -// to release an Elastic IP address that you already released, you'll get an -// AuthFailure error if the address is already allocated to another AWS account. -// -// [EC2-Classic, default VPC] Releasing an Elastic IP address automatically -// disassociates it from any instance that it's associated with. To disassociate -// an Elastic IP address without releasing it, use DisassociateAddress. -// -// [Nondefault VPC] You must use DisassociateAddress to disassociate the Elastic -// IP address before you try to release it. Otherwise, Amazon EC2 returns an -// error (InvalidIPAddress.InUse). -func (c *EC2) ReleaseAddress(input *ReleaseAddressInput) (*ReleaseAddressOutput, error) { - req, out := c.ReleaseAddressRequest(input) - err := req.Send() - return out, err -} - -const opReleaseHosts = "ReleaseHosts" - -// ReleaseHostsRequest generates a request for the ReleaseHosts operation. -func (c *EC2) ReleaseHostsRequest(input *ReleaseHostsInput) (req *request.Request, output *ReleaseHostsOutput) { - op := &request.Operation{ - Name: opReleaseHosts, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ReleaseHostsInput{} - } - - req = c.newRequest(op, input, output) - output = &ReleaseHostsOutput{} - req.Data = output - return -} - -// When you no longer want to use a Dedicated host it can be released. On-Demand -// billing is stopped and the host goes into "released" state. The host ID of -// Dedicated hosts that have been released can no longer be specified in another -// request, e.g., ModifyHosts. You must stop or terminate all instances on a -// host before it can be released. -// -// When Dedicated hosts are released, it make take some time for them to stop -// counting toward your limit and you may receive capacity errors when trying -// to allocate new Dedicated hosts. Try waiting a few minutes, and then try -// again. -// -// Released hosts will still appear in a DescribeHosts response. -func (c *EC2) ReleaseHosts(input *ReleaseHostsInput) (*ReleaseHostsOutput, error) { - req, out := c.ReleaseHostsRequest(input) - err := req.Send() - return out, err -} - -const opReplaceNetworkAclAssociation = "ReplaceNetworkAclAssociation" - -// ReplaceNetworkAclAssociationRequest generates a request for the ReplaceNetworkAclAssociation operation. -func (c *EC2) ReplaceNetworkAclAssociationRequest(input *ReplaceNetworkAclAssociationInput) (req *request.Request, output *ReplaceNetworkAclAssociationOutput) { - op := &request.Operation{ - Name: opReplaceNetworkAclAssociation, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ReplaceNetworkAclAssociationInput{} - } - - req = c.newRequest(op, input, output) - output = &ReplaceNetworkAclAssociationOutput{} - req.Data = output - return -} - -// Changes which network ACL a subnet is associated with. By default when you -// create a subnet, it's automatically associated with the default network ACL. -// For more information about network ACLs, see Network ACLs (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html) -// in the Amazon Virtual Private Cloud User Guide. -func (c *EC2) ReplaceNetworkAclAssociation(input *ReplaceNetworkAclAssociationInput) (*ReplaceNetworkAclAssociationOutput, error) { - req, out := c.ReplaceNetworkAclAssociationRequest(input) - err := req.Send() - return out, err -} - -const opReplaceNetworkAclEntry = "ReplaceNetworkAclEntry" - -// ReplaceNetworkAclEntryRequest generates a request for the ReplaceNetworkAclEntry operation. -func (c *EC2) ReplaceNetworkAclEntryRequest(input *ReplaceNetworkAclEntryInput) (req *request.Request, output *ReplaceNetworkAclEntryOutput) { - op := &request.Operation{ - Name: opReplaceNetworkAclEntry, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ReplaceNetworkAclEntryInput{} - } - - req = c.newRequest(op, input, output) - output = &ReplaceNetworkAclEntryOutput{} - req.Data = output - return -} - -// Replaces an entry (rule) in a network ACL. For more information about network -// ACLs, see Network ACLs (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html) -// in the Amazon Virtual Private Cloud User Guide. -func (c *EC2) ReplaceNetworkAclEntry(input *ReplaceNetworkAclEntryInput) (*ReplaceNetworkAclEntryOutput, error) { - req, out := c.ReplaceNetworkAclEntryRequest(input) - err := req.Send() - return out, err -} - -const opReplaceRoute = "ReplaceRoute" - -// ReplaceRouteRequest generates a request for the ReplaceRoute operation. -func (c *EC2) ReplaceRouteRequest(input *ReplaceRouteInput) (req *request.Request, output *ReplaceRouteOutput) { - op := &request.Operation{ - Name: opReplaceRoute, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ReplaceRouteInput{} - } - - req = c.newRequest(op, input, output) - output = &ReplaceRouteOutput{} - req.Data = output - return -} - -// Replaces an existing route within a route table in a VPC. You must provide -// only one of the following: Internet gateway or virtual private gateway, NAT -// instance, VPC peering connection, or network interface. -// -// For more information about route tables, see Route Tables (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html) -// in the Amazon Virtual Private Cloud User Guide. -func (c *EC2) ReplaceRoute(input *ReplaceRouteInput) (*ReplaceRouteOutput, error) { - req, out := c.ReplaceRouteRequest(input) - err := req.Send() - return out, err -} - -const opReplaceRouteTableAssociation = "ReplaceRouteTableAssociation" - -// ReplaceRouteTableAssociationRequest generates a request for the ReplaceRouteTableAssociation operation. -func (c *EC2) ReplaceRouteTableAssociationRequest(input *ReplaceRouteTableAssociationInput) (req *request.Request, output *ReplaceRouteTableAssociationOutput) { - op := &request.Operation{ - Name: opReplaceRouteTableAssociation, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ReplaceRouteTableAssociationInput{} - } - - req = c.newRequest(op, input, output) - output = &ReplaceRouteTableAssociationOutput{} - req.Data = output - return -} - -// Changes the route table associated with a given subnet in a VPC. After the -// operation completes, the subnet uses the routes in the new route table it's -// associated with. For more information about route tables, see Route Tables -// (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html) -// in the Amazon Virtual Private Cloud User Guide. -// -// You can also use ReplaceRouteTableAssociation to change which table is the -// main route table in the VPC. You just specify the main route table's association -// ID and the route table to be the new main route table. -func (c *EC2) ReplaceRouteTableAssociation(input *ReplaceRouteTableAssociationInput) (*ReplaceRouteTableAssociationOutput, error) { - req, out := c.ReplaceRouteTableAssociationRequest(input) - err := req.Send() - return out, err -} - -const opReportInstanceStatus = "ReportInstanceStatus" - -// ReportInstanceStatusRequest generates a request for the ReportInstanceStatus operation. -func (c *EC2) ReportInstanceStatusRequest(input *ReportInstanceStatusInput) (req *request.Request, output *ReportInstanceStatusOutput) { - op := &request.Operation{ - Name: opReportInstanceStatus, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ReportInstanceStatusInput{} - } - - req = c.newRequest(op, input, output) - output = &ReportInstanceStatusOutput{} - req.Data = output - return -} - -// Submits feedback about the status of an instance. The instance must be in -// the running state. If your experience with the instance differs from the -// instance status returned by DescribeInstanceStatus, use ReportInstanceStatus -// to report your experience with the instance. Amazon EC2 collects this information -// to improve the accuracy of status checks. -// -// Use of this action does not change the value returned by DescribeInstanceStatus. -func (c *EC2) ReportInstanceStatus(input *ReportInstanceStatusInput) (*ReportInstanceStatusOutput, error) { - req, out := c.ReportInstanceStatusRequest(input) - err := req.Send() - return out, err -} - -const opRequestSpotFleet = "RequestSpotFleet" - -// RequestSpotFleetRequest generates a request for the RequestSpotFleet operation. -func (c *EC2) RequestSpotFleetRequest(input *RequestSpotFleetInput) (req *request.Request, output *RequestSpotFleetOutput) { - op := &request.Operation{ - Name: opRequestSpotFleet, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &RequestSpotFleetInput{} - } - - req = c.newRequest(op, input, output) - output = &RequestSpotFleetOutput{} - req.Data = output - return -} - -// Creates a Spot fleet request. -// -// You can submit a single request that includes multiple launch specifications -// that vary by instance type, AMI, Availability Zone, or subnet. -// -// By default, the Spot fleet requests Spot instances in the Spot pool where -// the price per unit is the lowest. Each launch specification can include its -// own instance weighting that reflects the value of the instance type to your -// application workload. -// -// Alternatively, you can specify that the Spot fleet distribute the target -// capacity across the Spot pools included in its launch specifications. By -// ensuring that the Spot instances in your Spot fleet are in different Spot -// pools, you can improve the availability of your fleet. -// -// For more information, see Spot Fleet Requests (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet-requests.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) RequestSpotFleet(input *RequestSpotFleetInput) (*RequestSpotFleetOutput, error) { - req, out := c.RequestSpotFleetRequest(input) - err := req.Send() - return out, err -} - -const opRequestSpotInstances = "RequestSpotInstances" - -// RequestSpotInstancesRequest generates a request for the RequestSpotInstances operation. -func (c *EC2) RequestSpotInstancesRequest(input *RequestSpotInstancesInput) (req *request.Request, output *RequestSpotInstancesOutput) { - op := &request.Operation{ - Name: opRequestSpotInstances, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &RequestSpotInstancesInput{} - } - - req = c.newRequest(op, input, output) - output = &RequestSpotInstancesOutput{} - req.Data = output - return -} - -// Creates a Spot instance request. Spot instances are instances that Amazon -// EC2 launches when the bid price that you specify exceeds the current Spot -// price. Amazon EC2 periodically sets the Spot price based on available Spot -// Instance capacity and current Spot instance requests. For more information, -// see Spot Instance Requests (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) RequestSpotInstances(input *RequestSpotInstancesInput) (*RequestSpotInstancesOutput, error) { - req, out := c.RequestSpotInstancesRequest(input) - err := req.Send() - return out, err -} - -const opResetImageAttribute = "ResetImageAttribute" - -// ResetImageAttributeRequest generates a request for the ResetImageAttribute operation. -func (c *EC2) ResetImageAttributeRequest(input *ResetImageAttributeInput) (req *request.Request, output *ResetImageAttributeOutput) { - op := &request.Operation{ - Name: opResetImageAttribute, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ResetImageAttributeInput{} - } - - req = c.newRequest(op, input, output) - output = &ResetImageAttributeOutput{} - req.Data = output - return -} - -// Resets an attribute of an AMI to its default value. -// -// The productCodes attribute can't be reset. -func (c *EC2) ResetImageAttribute(input *ResetImageAttributeInput) (*ResetImageAttributeOutput, error) { - req, out := c.ResetImageAttributeRequest(input) - err := req.Send() - return out, err -} - -const opResetInstanceAttribute = "ResetInstanceAttribute" - -// ResetInstanceAttributeRequest generates a request for the ResetInstanceAttribute operation. -func (c *EC2) ResetInstanceAttributeRequest(input *ResetInstanceAttributeInput) (req *request.Request, output *ResetInstanceAttributeOutput) { - op := &request.Operation{ - Name: opResetInstanceAttribute, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ResetInstanceAttributeInput{} - } - - req = c.newRequest(op, input, output) - output = &ResetInstanceAttributeOutput{} - req.Data = output - return -} - -// Resets an attribute of an instance to its default value. To reset the kernel -// or ramdisk, the instance must be in a stopped state. To reset the SourceDestCheck, -// the instance can be either running or stopped. -// -// The SourceDestCheck attribute controls whether source/destination checking -// is enabled. The default value is true, which means checking is enabled. This -// value must be false for a NAT instance to perform NAT. For more information, -// see NAT Instances (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html) -// in the Amazon Virtual Private Cloud User Guide. -func (c *EC2) ResetInstanceAttribute(input *ResetInstanceAttributeInput) (*ResetInstanceAttributeOutput, error) { - req, out := c.ResetInstanceAttributeRequest(input) - err := req.Send() - return out, err -} - -const opResetNetworkInterfaceAttribute = "ResetNetworkInterfaceAttribute" - -// ResetNetworkInterfaceAttributeRequest generates a request for the ResetNetworkInterfaceAttribute operation. -func (c *EC2) ResetNetworkInterfaceAttributeRequest(input *ResetNetworkInterfaceAttributeInput) (req *request.Request, output *ResetNetworkInterfaceAttributeOutput) { - op := &request.Operation{ - Name: opResetNetworkInterfaceAttribute, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ResetNetworkInterfaceAttributeInput{} - } - - req = c.newRequest(op, input, output) - output = &ResetNetworkInterfaceAttributeOutput{} - req.Data = output - return -} - -// Resets a network interface attribute. You can specify only one attribute -// at a time. -func (c *EC2) ResetNetworkInterfaceAttribute(input *ResetNetworkInterfaceAttributeInput) (*ResetNetworkInterfaceAttributeOutput, error) { - req, out := c.ResetNetworkInterfaceAttributeRequest(input) - err := req.Send() - return out, err -} - -const opResetSnapshotAttribute = "ResetSnapshotAttribute" - -// ResetSnapshotAttributeRequest generates a request for the ResetSnapshotAttribute operation. -func (c *EC2) ResetSnapshotAttributeRequest(input *ResetSnapshotAttributeInput) (req *request.Request, output *ResetSnapshotAttributeOutput) { - op := &request.Operation{ - Name: opResetSnapshotAttribute, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &ResetSnapshotAttributeInput{} - } - - req = c.newRequest(op, input, output) - output = &ResetSnapshotAttributeOutput{} - req.Data = output - return -} - -// Resets permission settings for the specified snapshot. -// -// For more information on modifying snapshot permissions, see Sharing Snapshots -// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-modifying-snapshot-permissions.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) ResetSnapshotAttribute(input *ResetSnapshotAttributeInput) (*ResetSnapshotAttributeOutput, error) { - req, out := c.ResetSnapshotAttributeRequest(input) - err := req.Send() - return out, err -} - -const opRestoreAddressToClassic = "RestoreAddressToClassic" - -// RestoreAddressToClassicRequest generates a request for the RestoreAddressToClassic operation. -func (c *EC2) RestoreAddressToClassicRequest(input *RestoreAddressToClassicInput) (req *request.Request, output *RestoreAddressToClassicOutput) { - op := &request.Operation{ - Name: opRestoreAddressToClassic, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &RestoreAddressToClassicInput{} - } - - req = c.newRequest(op, input, output) - output = &RestoreAddressToClassicOutput{} - req.Data = output - return -} - -// Restores an Elastic IP address that was previously moved to the EC2-VPC platform -// back to the EC2-Classic platform. You cannot move an Elastic IP address that -// was originally allocated for use in EC2-VPC. The Elastic IP address must -// not be associated with an instance or network interface. -func (c *EC2) RestoreAddressToClassic(input *RestoreAddressToClassicInput) (*RestoreAddressToClassicOutput, error) { - req, out := c.RestoreAddressToClassicRequest(input) - err := req.Send() - return out, err -} - -const opRevokeSecurityGroupEgress = "RevokeSecurityGroupEgress" - -// RevokeSecurityGroupEgressRequest generates a request for the RevokeSecurityGroupEgress operation. -func (c *EC2) RevokeSecurityGroupEgressRequest(input *RevokeSecurityGroupEgressInput) (req *request.Request, output *RevokeSecurityGroupEgressOutput) { - op := &request.Operation{ - Name: opRevokeSecurityGroupEgress, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &RevokeSecurityGroupEgressInput{} - } - - req = c.newRequest(op, input, output) - output = &RevokeSecurityGroupEgressOutput{} - req.Data = output - return -} - -// Removes one or more egress rules from a security group for EC2-VPC. The values -// that you specify in the revoke request (for example, ports) must match the -// existing rule's values for the rule to be revoked. -// -// Each rule consists of the protocol and the CIDR range or source security -// group. For the TCP and UDP protocols, you must also specify the destination -// port or range of ports. For the ICMP protocol, you must also specify the -// ICMP type and code. -// -// Rule changes are propagated to instances within the security group as quickly -// as possible. However, a small delay might occur. -func (c *EC2) RevokeSecurityGroupEgress(input *RevokeSecurityGroupEgressInput) (*RevokeSecurityGroupEgressOutput, error) { - req, out := c.RevokeSecurityGroupEgressRequest(input) - err := req.Send() - return out, err -} - -const opRevokeSecurityGroupIngress = "RevokeSecurityGroupIngress" - -// RevokeSecurityGroupIngressRequest generates a request for the RevokeSecurityGroupIngress operation. -func (c *EC2) RevokeSecurityGroupIngressRequest(input *RevokeSecurityGroupIngressInput) (req *request.Request, output *RevokeSecurityGroupIngressOutput) { - op := &request.Operation{ - Name: opRevokeSecurityGroupIngress, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &RevokeSecurityGroupIngressInput{} - } - - req = c.newRequest(op, input, output) - output = &RevokeSecurityGroupIngressOutput{} - req.Data = output - return -} - -// Removes one or more ingress rules from a security group. The values that -// you specify in the revoke request (for example, ports) must match the existing -// rule's values for the rule to be removed. -// -// Each rule consists of the protocol and the CIDR range or source security -// group. For the TCP and UDP protocols, you must also specify the destination -// port or range of ports. For the ICMP protocol, you must also specify the -// ICMP type and code. -// -// Rule changes are propagated to instances within the security group as quickly -// as possible. However, a small delay might occur. -func (c *EC2) RevokeSecurityGroupIngress(input *RevokeSecurityGroupIngressInput) (*RevokeSecurityGroupIngressOutput, error) { - req, out := c.RevokeSecurityGroupIngressRequest(input) - err := req.Send() - return out, err -} - -const opRunInstances = "RunInstances" - -// RunInstancesRequest generates a request for the RunInstances operation. -func (c *EC2) RunInstancesRequest(input *RunInstancesInput) (req *request.Request, output *Reservation) { - op := &request.Operation{ - Name: opRunInstances, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &RunInstancesInput{} - } - - req = c.newRequest(op, input, output) - output = &Reservation{} - req.Data = output - return -} - -// Launches the specified number of instances using an AMI for which you have -// permissions. -// -// When you launch an instance, it enters the pending state. After the instance -// is ready for you, it enters the running state. To check the state of your -// instance, call DescribeInstances. -// -// If you don't specify a security group when launching an instance, Amazon -// EC2 uses the default security group. For more information, see Security Groups -// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html) -// in the Amazon Elastic Compute Cloud User Guide. -// -// [EC2-VPC only accounts] If you don't specify a subnet in the request, we -// choose a default subnet from your default VPC for you. -// -// [EC2-Classic accounts] If you're launching into EC2-Classic and you don't -// specify an Availability Zone, we choose one for you. -// -// Linux instances have access to the public key of the key pair at boot. You -// can use this key to provide secure access to the instance. Amazon EC2 public -// images use this feature to provide secure access without passwords. For more -// information, see Key Pairs (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) -// in the Amazon Elastic Compute Cloud User Guide. -// -// You can provide optional user data when launching an instance. For more -// information, see Instance Metadata (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AESDG-chapter-instancedata.html) -// in the Amazon Elastic Compute Cloud User Guide. -// -// If any of the AMIs have a product code attached for which the user has not -// subscribed, RunInstances fails. -// -// T2 instance types can only be launched into a VPC. If you do not have a -// default VPC, or if you do not specify a subnet ID in the request, RunInstances -// fails. -// -// For more information about troubleshooting, see What To Do If An Instance -// Immediately Terminates (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_InstanceStraightToTerminated.html), -// and Troubleshooting Connecting to Your Instance (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) RunInstances(input *RunInstancesInput) (*Reservation, error) { - req, out := c.RunInstancesRequest(input) - err := req.Send() - return out, err -} - -const opStartInstances = "StartInstances" - -// StartInstancesRequest generates a request for the StartInstances operation. -func (c *EC2) StartInstancesRequest(input *StartInstancesInput) (req *request.Request, output *StartInstancesOutput) { - op := &request.Operation{ - Name: opStartInstances, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &StartInstancesInput{} - } - - req = c.newRequest(op, input, output) - output = &StartInstancesOutput{} - req.Data = output - return -} - -// Starts an Amazon EBS-backed AMI that you've previously stopped. -// -// Instances that use Amazon EBS volumes as their root devices can be quickly -// stopped and started. When an instance is stopped, the compute resources are -// released and you are not billed for hourly instance usage. However, your -// root partition Amazon EBS volume remains, continues to persist your data, -// and you are charged for Amazon EBS volume usage. You can restart your instance -// at any time. Each time you transition an instance from stopped to started, -// Amazon EC2 charges a full instance hour, even if transitions happen multiple -// times within a single hour. -// -// Before stopping an instance, make sure it is in a state from which it can -// be restarted. Stopping an instance does not preserve data stored in RAM. -// -// Performing this operation on an instance that uses an instance store as -// its root device returns an error. -// -// For more information, see Stopping Instances (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) StartInstances(input *StartInstancesInput) (*StartInstancesOutput, error) { - req, out := c.StartInstancesRequest(input) - err := req.Send() - return out, err -} - -const opStopInstances = "StopInstances" - -// StopInstancesRequest generates a request for the StopInstances operation. -func (c *EC2) StopInstancesRequest(input *StopInstancesInput) (req *request.Request, output *StopInstancesOutput) { - op := &request.Operation{ - Name: opStopInstances, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &StopInstancesInput{} - } - - req = c.newRequest(op, input, output) - output = &StopInstancesOutput{} - req.Data = output - return -} - -// Stops an Amazon EBS-backed instance. Each time you transition an instance -// from stopped to started, Amazon EC2 charges a full instance hour, even if -// transitions happen multiple times within a single hour. -// -// You can't start or stop Spot instances. -// -// Instances that use Amazon EBS volumes as their root devices can be quickly -// stopped and started. When an instance is stopped, the compute resources are -// released and you are not billed for hourly instance usage. However, your -// root partition Amazon EBS volume remains, continues to persist your data, -// and you are charged for Amazon EBS volume usage. You can restart your instance -// at any time. -// -// Before stopping an instance, make sure it is in a state from which it can -// be restarted. Stopping an instance does not preserve data stored in RAM. -// -// Performing this operation on an instance that uses an instance store as -// its root device returns an error. -// -// You can stop, start, and terminate EBS-backed instances. You can only terminate -// instance store-backed instances. What happens to an instance differs if you -// stop it or terminate it. For example, when you stop an instance, the root -// device and any other devices attached to the instance persist. When you terminate -// an instance, the root device and any other devices attached during the instance -// launch are automatically deleted. For more information about the differences -// between stopping and terminating instances, see Instance Lifecycle (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html) -// in the Amazon Elastic Compute Cloud User Guide. -// -// For more information about troubleshooting, see Troubleshooting Stopping -// Your Instance (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesStopping.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) StopInstances(input *StopInstancesInput) (*StopInstancesOutput, error) { - req, out := c.StopInstancesRequest(input) - err := req.Send() - return out, err -} - -const opTerminateInstances = "TerminateInstances" - -// TerminateInstancesRequest generates a request for the TerminateInstances operation. -func (c *EC2) TerminateInstancesRequest(input *TerminateInstancesInput) (req *request.Request, output *TerminateInstancesOutput) { - op := &request.Operation{ - Name: opTerminateInstances, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &TerminateInstancesInput{} - } - - req = c.newRequest(op, input, output) - output = &TerminateInstancesOutput{} - req.Data = output - return -} - -// Shuts down one or more instances. This operation is idempotent; if you terminate -// an instance more than once, each call succeeds. -// -// Terminated instances remain visible after termination (for approximately -// one hour). -// -// By default, Amazon EC2 deletes all EBS volumes that were attached when the -// instance launched. Volumes attached after instance launch continue running. -// -// You can stop, start, and terminate EBS-backed instances. You can only terminate -// instance store-backed instances. What happens to an instance differs if you -// stop it or terminate it. For example, when you stop an instance, the root -// device and any other devices attached to the instance persist. When you terminate -// an instance, any attached EBS volumes with the DeleteOnTermination block -// device mapping parameter set to true are automatically deleted. For more -// information about the differences between stopping and terminating instances, -// see Instance Lifecycle (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html) -// in the Amazon Elastic Compute Cloud User Guide. -// -// For more information about troubleshooting, see Troubleshooting Terminating -// Your Instance (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesShuttingDown.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) TerminateInstances(input *TerminateInstancesInput) (*TerminateInstancesOutput, error) { - req, out := c.TerminateInstancesRequest(input) - err := req.Send() - return out, err -} - -const opUnassignPrivateIpAddresses = "UnassignPrivateIpAddresses" - -// UnassignPrivateIpAddressesRequest generates a request for the UnassignPrivateIpAddresses operation. -func (c *EC2) UnassignPrivateIpAddressesRequest(input *UnassignPrivateIpAddressesInput) (req *request.Request, output *UnassignPrivateIpAddressesOutput) { - op := &request.Operation{ - Name: opUnassignPrivateIpAddresses, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &UnassignPrivateIpAddressesInput{} - } - - req = c.newRequest(op, input, output) - output = &UnassignPrivateIpAddressesOutput{} - req.Data = output - return -} - -// Unassigns one or more secondary private IP addresses from a network interface. -func (c *EC2) UnassignPrivateIpAddresses(input *UnassignPrivateIpAddressesInput) (*UnassignPrivateIpAddressesOutput, error) { - req, out := c.UnassignPrivateIpAddressesRequest(input) - err := req.Send() - return out, err -} - -const opUnmonitorInstances = "UnmonitorInstances" - -// UnmonitorInstancesRequest generates a request for the UnmonitorInstances operation. -func (c *EC2) UnmonitorInstancesRequest(input *UnmonitorInstancesInput) (req *request.Request, output *UnmonitorInstancesOutput) { - op := &request.Operation{ - Name: opUnmonitorInstances, - HTTPMethod: "POST", - HTTPPath: "/", - } - - if input == nil { - input = &UnmonitorInstancesInput{} - } - - req = c.newRequest(op, input, output) - output = &UnmonitorInstancesOutput{} - req.Data = output - return -} - -// Disables monitoring for a running instance. For more information about monitoring -// instances, see Monitoring Your Instances and Volumes (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-cloudwatch.html) -// in the Amazon Elastic Compute Cloud User Guide. -func (c *EC2) UnmonitorInstances(input *UnmonitorInstancesInput) (*UnmonitorInstancesOutput, error) { - req, out := c.UnmonitorInstancesRequest(input) - err := req.Send() - return out, err -} - -type AcceptVpcPeeringConnectionInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the VPC peering connection. - VpcPeeringConnectionId *string `locationName:"vpcPeeringConnectionId" type:"string"` - - metadataAcceptVpcPeeringConnectionInput `json:"-" xml:"-"` -} - -type metadataAcceptVpcPeeringConnectionInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AcceptVpcPeeringConnectionInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AcceptVpcPeeringConnectionInput) GoString() string { - return s.String() -} - -type AcceptVpcPeeringConnectionOutput struct { - // Information about the VPC peering connection. - VpcPeeringConnection *VpcPeeringConnection `locationName:"vpcPeeringConnection" type:"structure"` - - metadataAcceptVpcPeeringConnectionOutput `json:"-" xml:"-"` -} - -type metadataAcceptVpcPeeringConnectionOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AcceptVpcPeeringConnectionOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AcceptVpcPeeringConnectionOutput) GoString() string { - return s.String() -} - -// Describes an account attribute. -type AccountAttribute struct { - // The name of the account attribute. - AttributeName *string `locationName:"attributeName" type:"string"` - - // One or more values for the account attribute. - AttributeValues []*AccountAttributeValue `locationName:"attributeValueSet" locationNameList:"item" type:"list"` - - metadataAccountAttribute `json:"-" xml:"-"` -} - -type metadataAccountAttribute struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AccountAttribute) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AccountAttribute) GoString() string { - return s.String() -} - -// Describes a value of an account attribute. -type AccountAttributeValue struct { - // The value of the attribute. - AttributeValue *string `locationName:"attributeValue" type:"string"` - - metadataAccountAttributeValue `json:"-" xml:"-"` -} - -type metadataAccountAttributeValue struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AccountAttributeValue) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AccountAttributeValue) GoString() string { - return s.String() -} - -// Describes a running instance in a Spot fleet. -type ActiveInstance struct { - // The ID of the instance. - InstanceId *string `locationName:"instanceId" type:"string"` - - // The instance type. - InstanceType *string `locationName:"instanceType" type:"string"` - - // The ID of the Spot instance request. - SpotInstanceRequestId *string `locationName:"spotInstanceRequestId" type:"string"` - - metadataActiveInstance `json:"-" xml:"-"` -} - -type metadataActiveInstance struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ActiveInstance) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ActiveInstance) GoString() string { - return s.String() -} - -// Describes an Elastic IP address. -type Address struct { - // The ID representing the allocation of the address for use with EC2-VPC. - AllocationId *string `locationName:"allocationId" type:"string"` - - // The ID representing the association of the address with an instance in a - // VPC. - AssociationId *string `locationName:"associationId" type:"string"` - - // Indicates whether this Elastic IP address is for use with instances in EC2-Classic - // (standard) or instances in a VPC (vpc). - Domain *string `locationName:"domain" type:"string" enum:"DomainType"` - - // The ID of the instance that the address is associated with (if any). - InstanceId *string `locationName:"instanceId" type:"string"` - - // The ID of the network interface. - NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"` - - // The ID of the AWS account that owns the network interface. - NetworkInterfaceOwnerId *string `locationName:"networkInterfaceOwnerId" type:"string"` - - // The private IP address associated with the Elastic IP address. - PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"` - - // The Elastic IP address. - PublicIp *string `locationName:"publicIp" type:"string"` - - metadataAddress `json:"-" xml:"-"` -} - -type metadataAddress struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s Address) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s Address) GoString() string { - return s.String() -} - -type AllocateAddressInput struct { - // Set to vpc to allocate the address for use with instances in a VPC. - // - // Default: The address is for use with instances in EC2-Classic. - Domain *string `type:"string" enum:"DomainType"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - metadataAllocateAddressInput `json:"-" xml:"-"` -} - -type metadataAllocateAddressInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AllocateAddressInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AllocateAddressInput) GoString() string { - return s.String() -} - -type AllocateAddressOutput struct { - // [EC2-VPC] The ID that AWS assigns to represent the allocation of the Elastic - // IP address for use with instances in a VPC. - AllocationId *string `locationName:"allocationId" type:"string"` - - // Indicates whether this Elastic IP address is for use with instances in EC2-Classic - // (standard) or instances in a VPC (vpc). - Domain *string `locationName:"domain" type:"string" enum:"DomainType"` - - // The Elastic IP address. - PublicIp *string `locationName:"publicIp" type:"string"` - - metadataAllocateAddressOutput `json:"-" xml:"-"` -} - -type metadataAllocateAddressOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AllocateAddressOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AllocateAddressOutput) GoString() string { - return s.String() -} - -type AllocateHostsInput struct { - // This is enabled by default. This property allows instances to be automatically - // placed onto available Dedicated hosts, when you are launching instances without - // specifying a host ID. - // - // Default: Enabled - AutoPlacement *string `locationName:"autoPlacement" type:"string" enum:"AutoPlacement"` - - // The Availability Zone for the Dedicated hosts. - AvailabilityZone *string `locationName:"availabilityZone" type:"string" required:"true"` - - // Unique, case-sensitive identifier you provide to ensure idempotency of the - // request. For more information, see How to Ensure Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html) - // in the Amazon Elastic Compute Cloud User Guide. - ClientToken *string `locationName:"clientToken" type:"string"` - - // Specify the instance type that you want your Dedicated hosts to be configured - // for. When you specify the instance type, that is the only instance type that - // you can launch onto that host. - InstanceType *string `locationName:"instanceType" type:"string" required:"true"` - - // The number of Dedicated hosts you want to allocate to your account with these - // parameters. - Quantity *int64 `locationName:"quantity" type:"integer" required:"true"` - - metadataAllocateHostsInput `json:"-" xml:"-"` -} - -type metadataAllocateHostsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AllocateHostsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AllocateHostsInput) GoString() string { - return s.String() -} - -type AllocateHostsOutput struct { - // The ID of the allocated Dedicated host. This is used when you want to launch - // an instance onto a specific host. - HostIds []*string `locationName:"hostIdSet" locationNameList:"item" type:"list"` - - metadataAllocateHostsOutput `json:"-" xml:"-"` -} - -type metadataAllocateHostsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AllocateHostsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AllocateHostsOutput) GoString() string { - return s.String() -} - -type AssignPrivateIpAddressesInput struct { - // Indicates whether to allow an IP address that is already assigned to another - // network interface or instance to be reassigned to the specified network interface. - AllowReassignment *bool `locationName:"allowReassignment" type:"boolean"` - - // The ID of the network interface. - NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string" required:"true"` - - // One or more IP addresses to be assigned as a secondary private IP address - // to the network interface. You can't specify this parameter when also specifying - // a number of secondary IP addresses. - // - // If you don't specify an IP address, Amazon EC2 automatically selects an - // IP address within the subnet range. - PrivateIpAddresses []*string `locationName:"privateIpAddress" locationNameList:"PrivateIpAddress" type:"list"` - - // The number of secondary IP addresses to assign to the network interface. - // You can't specify this parameter when also specifying private IP addresses. - SecondaryPrivateIpAddressCount *int64 `locationName:"secondaryPrivateIpAddressCount" type:"integer"` - - metadataAssignPrivateIpAddressesInput `json:"-" xml:"-"` -} - -type metadataAssignPrivateIpAddressesInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AssignPrivateIpAddressesInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AssignPrivateIpAddressesInput) GoString() string { - return s.String() -} - -type AssignPrivateIpAddressesOutput struct { - metadataAssignPrivateIpAddressesOutput `json:"-" xml:"-"` -} - -type metadataAssignPrivateIpAddressesOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AssignPrivateIpAddressesOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AssignPrivateIpAddressesOutput) GoString() string { - return s.String() -} - -type AssociateAddressInput struct { - // [EC2-VPC] The allocation ID. This is required for EC2-VPC. - AllocationId *string `type:"string"` - - // [EC2-VPC] For a VPC in an EC2-Classic account, specify true to allow an Elastic - // IP address that is already associated with an instance or network interface - // to be reassociated with the specified instance or network interface. Otherwise, - // the operation fails. In a VPC in an EC2-VPC-only account, reassociation is - // automatic, therefore you can specify false to ensure the operation fails - // if the Elastic IP address is already associated with another resource. - AllowReassociation *bool `locationName:"allowReassociation" type:"boolean"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the instance. This is required for EC2-Classic. For EC2-VPC, you - // can specify either the instance ID or the network interface ID, but not both. - // The operation fails if you specify an instance ID unless exactly one network - // interface is attached. - InstanceId *string `type:"string"` - - // [EC2-VPC] The ID of the network interface. If the instance has more than - // one network interface, you must specify a network interface ID. - NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"` - - // [EC2-VPC] The primary or secondary private IP address to associate with the - // Elastic IP address. If no private IP address is specified, the Elastic IP - // address is associated with the primary private IP address. - PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"` - - // The Elastic IP address. This is required for EC2-Classic. - PublicIp *string `type:"string"` - - metadataAssociateAddressInput `json:"-" xml:"-"` -} - -type metadataAssociateAddressInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AssociateAddressInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AssociateAddressInput) GoString() string { - return s.String() -} - -type AssociateAddressOutput struct { - // [EC2-VPC] The ID that represents the association of the Elastic IP address - // with an instance. - AssociationId *string `locationName:"associationId" type:"string"` - - metadataAssociateAddressOutput `json:"-" xml:"-"` -} - -type metadataAssociateAddressOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AssociateAddressOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AssociateAddressOutput) GoString() string { - return s.String() -} - -type AssociateDhcpOptionsInput struct { - // The ID of the DHCP options set, or default to associate no DHCP options with - // the VPC. - DhcpOptionsId *string `type:"string" required:"true"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the VPC. - VpcId *string `type:"string" required:"true"` - - metadataAssociateDhcpOptionsInput `json:"-" xml:"-"` -} - -type metadataAssociateDhcpOptionsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AssociateDhcpOptionsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AssociateDhcpOptionsInput) GoString() string { - return s.String() -} - -type AssociateDhcpOptionsOutput struct { - metadataAssociateDhcpOptionsOutput `json:"-" xml:"-"` -} - -type metadataAssociateDhcpOptionsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AssociateDhcpOptionsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AssociateDhcpOptionsOutput) GoString() string { - return s.String() -} - -type AssociateRouteTableInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the route table. - RouteTableId *string `locationName:"routeTableId" type:"string" required:"true"` - - // The ID of the subnet. - SubnetId *string `locationName:"subnetId" type:"string" required:"true"` - - metadataAssociateRouteTableInput `json:"-" xml:"-"` -} - -type metadataAssociateRouteTableInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AssociateRouteTableInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AssociateRouteTableInput) GoString() string { - return s.String() -} - -type AssociateRouteTableOutput struct { - // The route table association ID (needed to disassociate the route table). - AssociationId *string `locationName:"associationId" type:"string"` - - metadataAssociateRouteTableOutput `json:"-" xml:"-"` -} - -type metadataAssociateRouteTableOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AssociateRouteTableOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AssociateRouteTableOutput) GoString() string { - return s.String() -} - -type AttachClassicLinkVpcInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of one or more of the VPC's security groups. You cannot specify security - // groups from a different VPC. - Groups []*string `locationName:"SecurityGroupId" locationNameList:"groupId" type:"list" required:"true"` - - // The ID of an EC2-Classic instance to link to the ClassicLink-enabled VPC. - InstanceId *string `locationName:"instanceId" type:"string" required:"true"` - - // The ID of a ClassicLink-enabled VPC. - VpcId *string `locationName:"vpcId" type:"string" required:"true"` - - metadataAttachClassicLinkVpcInput `json:"-" xml:"-"` -} - -type metadataAttachClassicLinkVpcInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AttachClassicLinkVpcInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AttachClassicLinkVpcInput) GoString() string { - return s.String() -} - -type AttachClassicLinkVpcOutput struct { - // Returns true if the request succeeds; otherwise, it returns an error. - Return *bool `locationName:"return" type:"boolean"` - - metadataAttachClassicLinkVpcOutput `json:"-" xml:"-"` -} - -type metadataAttachClassicLinkVpcOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AttachClassicLinkVpcOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AttachClassicLinkVpcOutput) GoString() string { - return s.String() -} - -type AttachInternetGatewayInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the Internet gateway. - InternetGatewayId *string `locationName:"internetGatewayId" type:"string" required:"true"` - - // The ID of the VPC. - VpcId *string `locationName:"vpcId" type:"string" required:"true"` - - metadataAttachInternetGatewayInput `json:"-" xml:"-"` -} - -type metadataAttachInternetGatewayInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AttachInternetGatewayInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AttachInternetGatewayInput) GoString() string { - return s.String() -} - -type AttachInternetGatewayOutput struct { - metadataAttachInternetGatewayOutput `json:"-" xml:"-"` -} - -type metadataAttachInternetGatewayOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AttachInternetGatewayOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AttachInternetGatewayOutput) GoString() string { - return s.String() -} - -type AttachNetworkInterfaceInput struct { - // The index of the device for the network interface attachment. - DeviceIndex *int64 `locationName:"deviceIndex" type:"integer" required:"true"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the instance. - InstanceId *string `locationName:"instanceId" type:"string" required:"true"` - - // The ID of the network interface. - NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string" required:"true"` - - metadataAttachNetworkInterfaceInput `json:"-" xml:"-"` -} - -type metadataAttachNetworkInterfaceInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AttachNetworkInterfaceInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AttachNetworkInterfaceInput) GoString() string { - return s.String() -} - -type AttachNetworkInterfaceOutput struct { - // The ID of the network interface attachment. - AttachmentId *string `locationName:"attachmentId" type:"string"` - - metadataAttachNetworkInterfaceOutput `json:"-" xml:"-"` -} - -type metadataAttachNetworkInterfaceOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AttachNetworkInterfaceOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AttachNetworkInterfaceOutput) GoString() string { - return s.String() -} - -type AttachVolumeInput struct { - // The device name to expose to the instance (for example, /dev/sdh or xvdh). - Device *string `type:"string" required:"true"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the instance. - InstanceId *string `type:"string" required:"true"` - - // The ID of the EBS volume. The volume and instance must be within the same - // Availability Zone. - VolumeId *string `type:"string" required:"true"` - - metadataAttachVolumeInput `json:"-" xml:"-"` -} - -type metadataAttachVolumeInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AttachVolumeInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AttachVolumeInput) GoString() string { - return s.String() -} - -type AttachVpnGatewayInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the VPC. - VpcId *string `type:"string" required:"true"` - - // The ID of the virtual private gateway. - VpnGatewayId *string `type:"string" required:"true"` - - metadataAttachVpnGatewayInput `json:"-" xml:"-"` -} - -type metadataAttachVpnGatewayInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AttachVpnGatewayInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AttachVpnGatewayInput) GoString() string { - return s.String() -} - -type AttachVpnGatewayOutput struct { - // Information about the attachment. - VpcAttachment *VpcAttachment `locationName:"attachment" type:"structure"` - - metadataAttachVpnGatewayOutput `json:"-" xml:"-"` -} - -type metadataAttachVpnGatewayOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AttachVpnGatewayOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AttachVpnGatewayOutput) GoString() string { - return s.String() -} - -// The value to use when a resource attribute accepts a Boolean value. -type AttributeBooleanValue struct { - // Valid values are true or false. - Value *bool `locationName:"value" type:"boolean"` - - metadataAttributeBooleanValue `json:"-" xml:"-"` -} - -type metadataAttributeBooleanValue struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AttributeBooleanValue) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AttributeBooleanValue) GoString() string { - return s.String() -} - -// The value to use for a resource attribute. -type AttributeValue struct { - // Valid values are case-sensitive and vary by action. - Value *string `locationName:"value" type:"string"` - - metadataAttributeValue `json:"-" xml:"-"` -} - -type metadataAttributeValue struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AttributeValue) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AttributeValue) GoString() string { - return s.String() -} - -type AuthorizeSecurityGroupEgressInput struct { - // The CIDR IP address range. You can't specify this parameter when specifying - // a source security group. - CidrIp *string `locationName:"cidrIp" type:"string"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The start of port range for the TCP and UDP protocols, or an ICMP type number. - // For the ICMP type number, use -1 to specify all ICMP types. - FromPort *int64 `locationName:"fromPort" type:"integer"` - - // The ID of the security group. - GroupId *string `locationName:"groupId" type:"string" required:"true"` - - // A set of IP permissions. You can't specify a destination security group and - // a CIDR IP address range. - IpPermissions []*IpPermission `locationName:"ipPermissions" locationNameList:"item" type:"list"` - - // The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers (http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml)). - // Use -1 to specify all. - IpProtocol *string `locationName:"ipProtocol" type:"string"` - - // The name of a destination security group. To authorize outbound access to - // a destination security group, we recommend that you use a set of IP permissions - // instead. - SourceSecurityGroupName *string `locationName:"sourceSecurityGroupName" type:"string"` - - // The AWS account number for a destination security group. To authorize outbound - // access to a destination security group, we recommend that you use a set of - // IP permissions instead. - SourceSecurityGroupOwnerId *string `locationName:"sourceSecurityGroupOwnerId" type:"string"` - - // The end of port range for the TCP and UDP protocols, or an ICMP code number. - // For the ICMP code number, use -1 to specify all ICMP codes for the ICMP type. - ToPort *int64 `locationName:"toPort" type:"integer"` - - metadataAuthorizeSecurityGroupEgressInput `json:"-" xml:"-"` -} - -type metadataAuthorizeSecurityGroupEgressInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AuthorizeSecurityGroupEgressInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AuthorizeSecurityGroupEgressInput) GoString() string { - return s.String() -} - -type AuthorizeSecurityGroupEgressOutput struct { - metadataAuthorizeSecurityGroupEgressOutput `json:"-" xml:"-"` -} - -type metadataAuthorizeSecurityGroupEgressOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AuthorizeSecurityGroupEgressOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AuthorizeSecurityGroupEgressOutput) GoString() string { - return s.String() -} - -type AuthorizeSecurityGroupIngressInput struct { - // The CIDR IP address range. You can't specify this parameter when specifying - // a source security group. - CidrIp *string `type:"string"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The start of port range for the TCP and UDP protocols, or an ICMP type number. - // For the ICMP type number, use -1 to specify all ICMP types. - FromPort *int64 `type:"integer"` - - // The ID of the security group. Required for a nondefault VPC. - GroupId *string `type:"string"` - - // [EC2-Classic, default VPC] The name of the security group. - GroupName *string `type:"string"` - - // A set of IP permissions. Can be used to specify multiple rules in a single - // command. - IpPermissions []*IpPermission `locationNameList:"item" type:"list"` - - // The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers (http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml)). - // (VPC only) Use -1 to specify all. - IpProtocol *string `type:"string"` - - // [EC2-Classic, default VPC] The name of the source security group. You can't - // specify this parameter in combination with the following parameters: the - // CIDR IP address range, the start of the port range, the IP protocol, and - // the end of the port range. For EC2-VPC, the source security group must be - // in the same VPC. - SourceSecurityGroupName *string `type:"string"` - - // [EC2-Classic, default VPC] The AWS account number for the source security - // group. For EC2-VPC, the source security group must be in the same VPC. You - // can't specify this parameter in combination with the following parameters: - // the CIDR IP address range, the IP protocol, the start of the port range, - // and the end of the port range. Creates rules that grant full ICMP, UDP, and - // TCP access. To create a rule with a specific IP protocol and port range, - // use a set of IP permissions instead. - SourceSecurityGroupOwnerId *string `type:"string"` - - // The end of port range for the TCP and UDP protocols, or an ICMP code number. - // For the ICMP code number, use -1 to specify all ICMP codes for the ICMP type. - ToPort *int64 `type:"integer"` - - metadataAuthorizeSecurityGroupIngressInput `json:"-" xml:"-"` -} - -type metadataAuthorizeSecurityGroupIngressInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AuthorizeSecurityGroupIngressInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AuthorizeSecurityGroupIngressInput) GoString() string { - return s.String() -} - -type AuthorizeSecurityGroupIngressOutput struct { - metadataAuthorizeSecurityGroupIngressOutput `json:"-" xml:"-"` -} - -type metadataAuthorizeSecurityGroupIngressOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AuthorizeSecurityGroupIngressOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AuthorizeSecurityGroupIngressOutput) GoString() string { - return s.String() -} - -// Describes an Availability Zone. -type AvailabilityZone struct { - // Any messages about the Availability Zone. - Messages []*AvailabilityZoneMessage `locationName:"messageSet" locationNameList:"item" type:"list"` - - // The name of the region. - RegionName *string `locationName:"regionName" type:"string"` - - // The state of the Availability Zone. - State *string `locationName:"zoneState" type:"string" enum:"AvailabilityZoneState"` - - // The name of the Availability Zone. - ZoneName *string `locationName:"zoneName" type:"string"` - - metadataAvailabilityZone `json:"-" xml:"-"` -} - -type metadataAvailabilityZone struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AvailabilityZone) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AvailabilityZone) GoString() string { - return s.String() -} - -// Describes a message about an Availability Zone. -type AvailabilityZoneMessage struct { - // The message about the Availability Zone. - Message *string `locationName:"message" type:"string"` - - metadataAvailabilityZoneMessage `json:"-" xml:"-"` -} - -type metadataAvailabilityZoneMessage struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AvailabilityZoneMessage) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AvailabilityZoneMessage) GoString() string { - return s.String() -} - -type AvailableCapacity struct { - // The total number of instances that the Dedicated host supports. - AvailableInstanceCapacity []*InstanceCapacity `locationName:"availableInstanceCapacity" locationNameList:"item" type:"list"` - - // The number of vCPUs available on the Dedicated host. - AvailableVCpus *int64 `locationName:"availableVCpus" type:"integer"` - - metadataAvailableCapacity `json:"-" xml:"-"` -} - -type metadataAvailableCapacity struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s AvailableCapacity) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AvailableCapacity) GoString() string { - return s.String() -} - -type BlobAttributeValue struct { - Value []byte `locationName:"value" type:"blob"` - - metadataBlobAttributeValue `json:"-" xml:"-"` -} - -type metadataBlobAttributeValue struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s BlobAttributeValue) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s BlobAttributeValue) GoString() string { - return s.String() -} - -// Describes a block device mapping. -type BlockDeviceMapping struct { - // The device name exposed to the instance (for example, /dev/sdh or xvdh). - DeviceName *string `locationName:"deviceName" type:"string"` - - // Parameters used to automatically set up EBS volumes when the instance is - // launched. - Ebs *EbsBlockDevice `locationName:"ebs" type:"structure"` - - // Suppresses the specified device included in the block device mapping of the - // AMI. - NoDevice *string `locationName:"noDevice" type:"string"` - - // The virtual device name (ephemeralN). Instance store volumes are numbered - // starting from 0. An instance type with 2 available instance store volumes - // can specify mappings for ephemeral0 and ephemeral1.The number of available - // instance store volumes depends on the instance type. After you connect to - // the instance, you must mount the volume. - // - // Constraints: For M3 instances, you must specify instance store volumes in - // the block device mapping for the instance. When you launch an M3 instance, - // we ignore any instance store volumes specified in the block device mapping - // for the AMI. - VirtualName *string `locationName:"virtualName" type:"string"` - - metadataBlockDeviceMapping `json:"-" xml:"-"` -} - -type metadataBlockDeviceMapping struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s BlockDeviceMapping) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s BlockDeviceMapping) GoString() string { - return s.String() -} - -type BundleInstanceInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the instance to bundle. - // - // Type: String - // - // Default: None - // - // Required: Yes - InstanceId *string `type:"string" required:"true"` - - // The bucket in which to store the AMI. You can specify a bucket that you already - // own or a new bucket that Amazon EC2 creates on your behalf. If you specify - // a bucket that belongs to someone else, Amazon EC2 returns an error. - Storage *Storage `type:"structure" required:"true"` - - metadataBundleInstanceInput `json:"-" xml:"-"` -} - -type metadataBundleInstanceInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s BundleInstanceInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s BundleInstanceInput) GoString() string { - return s.String() -} - -type BundleInstanceOutput struct { - // Information about the bundle task. - BundleTask *BundleTask `locationName:"bundleInstanceTask" type:"structure"` - - metadataBundleInstanceOutput `json:"-" xml:"-"` -} - -type metadataBundleInstanceOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s BundleInstanceOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s BundleInstanceOutput) GoString() string { - return s.String() -} - -// Describes a bundle task. -type BundleTask struct { - // The ID of the bundle task. - BundleId *string `locationName:"bundleId" type:"string"` - - // If the task fails, a description of the error. - BundleTaskError *BundleTaskError `locationName:"error" type:"structure"` - - // The ID of the instance associated with this bundle task. - InstanceId *string `locationName:"instanceId" type:"string"` - - // The level of task completion, as a percent (for example, 20%). - Progress *string `locationName:"progress" type:"string"` - - // The time this task started. - StartTime *time.Time `locationName:"startTime" type:"timestamp" timestampFormat:"iso8601"` - - // The state of the task. - State *string `locationName:"state" type:"string" enum:"BundleTaskState"` - - // The Amazon S3 storage locations. - Storage *Storage `locationName:"storage" type:"structure"` - - // The time of the most recent update for the task. - UpdateTime *time.Time `locationName:"updateTime" type:"timestamp" timestampFormat:"iso8601"` - - metadataBundleTask `json:"-" xml:"-"` -} - -type metadataBundleTask struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s BundleTask) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s BundleTask) GoString() string { - return s.String() -} - -// Describes an error for BundleInstance. -type BundleTaskError struct { - // The error code. - Code *string `locationName:"code" type:"string"` - - // The error message. - Message *string `locationName:"message" type:"string"` - - metadataBundleTaskError `json:"-" xml:"-"` -} - -type metadataBundleTaskError struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s BundleTaskError) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s BundleTaskError) GoString() string { - return s.String() -} - -type CancelBundleTaskInput struct { - // The ID of the bundle task. - BundleId *string `type:"string" required:"true"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - metadataCancelBundleTaskInput `json:"-" xml:"-"` -} - -type metadataCancelBundleTaskInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CancelBundleTaskInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CancelBundleTaskInput) GoString() string { - return s.String() -} - -type CancelBundleTaskOutput struct { - // Information about the bundle task. - BundleTask *BundleTask `locationName:"bundleInstanceTask" type:"structure"` - - metadataCancelBundleTaskOutput `json:"-" xml:"-"` -} - -type metadataCancelBundleTaskOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CancelBundleTaskOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CancelBundleTaskOutput) GoString() string { - return s.String() -} - -type CancelConversionTaskInput struct { - // The ID of the conversion task. - ConversionTaskId *string `locationName:"conversionTaskId" type:"string" required:"true"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The reason for canceling the conversion task. - ReasonMessage *string `locationName:"reasonMessage" type:"string"` - - metadataCancelConversionTaskInput `json:"-" xml:"-"` -} - -type metadataCancelConversionTaskInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CancelConversionTaskInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CancelConversionTaskInput) GoString() string { - return s.String() -} - -type CancelConversionTaskOutput struct { - metadataCancelConversionTaskOutput `json:"-" xml:"-"` -} - -type metadataCancelConversionTaskOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CancelConversionTaskOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CancelConversionTaskOutput) GoString() string { - return s.String() -} - -type CancelExportTaskInput struct { - // The ID of the export task. This is the ID returned by CreateInstanceExportTask. - ExportTaskId *string `locationName:"exportTaskId" type:"string" required:"true"` - - metadataCancelExportTaskInput `json:"-" xml:"-"` -} - -type metadataCancelExportTaskInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CancelExportTaskInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CancelExportTaskInput) GoString() string { - return s.String() -} - -type CancelExportTaskOutput struct { - metadataCancelExportTaskOutput `json:"-" xml:"-"` -} - -type metadataCancelExportTaskOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CancelExportTaskOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CancelExportTaskOutput) GoString() string { - return s.String() -} - -type CancelImportTaskInput struct { - // The reason for canceling the task. - CancelReason *string `type:"string"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `type:"boolean"` - - // The ID of the import image or import snapshot task to be canceled. - ImportTaskId *string `type:"string"` - - metadataCancelImportTaskInput `json:"-" xml:"-"` -} - -type metadataCancelImportTaskInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CancelImportTaskInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CancelImportTaskInput) GoString() string { - return s.String() -} - -type CancelImportTaskOutput struct { - // The ID of the task being canceled. - ImportTaskId *string `locationName:"importTaskId" type:"string"` - - // The current state of the task being canceled. - PreviousState *string `locationName:"previousState" type:"string"` - - // The current state of the task being canceled. - State *string `locationName:"state" type:"string"` - - metadataCancelImportTaskOutput `json:"-" xml:"-"` -} - -type metadataCancelImportTaskOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CancelImportTaskOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CancelImportTaskOutput) GoString() string { - return s.String() -} - -type CancelReservedInstancesListingInput struct { - // The ID of the Reserved instance listing. - ReservedInstancesListingId *string `locationName:"reservedInstancesListingId" type:"string" required:"true"` - - metadataCancelReservedInstancesListingInput `json:"-" xml:"-"` -} - -type metadataCancelReservedInstancesListingInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CancelReservedInstancesListingInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CancelReservedInstancesListingInput) GoString() string { - return s.String() -} - -type CancelReservedInstancesListingOutput struct { - // The Reserved instance listing. - ReservedInstancesListings []*ReservedInstancesListing `locationName:"reservedInstancesListingsSet" locationNameList:"item" type:"list"` - - metadataCancelReservedInstancesListingOutput `json:"-" xml:"-"` -} - -type metadataCancelReservedInstancesListingOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CancelReservedInstancesListingOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CancelReservedInstancesListingOutput) GoString() string { - return s.String() -} - -// Describes a Spot fleet error. -type CancelSpotFleetRequestsError struct { - // The error code. - Code *string `locationName:"code" type:"string" required:"true" enum:"CancelBatchErrorCode"` - - // The description for the error code. - Message *string `locationName:"message" type:"string" required:"true"` - - metadataCancelSpotFleetRequestsError `json:"-" xml:"-"` -} - -type metadataCancelSpotFleetRequestsError struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CancelSpotFleetRequestsError) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CancelSpotFleetRequestsError) GoString() string { - return s.String() -} - -// Describes a Spot fleet request that was not successfully canceled. -type CancelSpotFleetRequestsErrorItem struct { - // The error. - Error *CancelSpotFleetRequestsError `locationName:"error" type:"structure" required:"true"` - - // The ID of the Spot fleet request. - SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"` - - metadataCancelSpotFleetRequestsErrorItem `json:"-" xml:"-"` -} - -type metadataCancelSpotFleetRequestsErrorItem struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CancelSpotFleetRequestsErrorItem) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CancelSpotFleetRequestsErrorItem) GoString() string { - return s.String() -} - -// Contains the parameters for CancelSpotFleetRequests. -type CancelSpotFleetRequestsInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The IDs of the Spot fleet requests. - SpotFleetRequestIds []*string `locationName:"spotFleetRequestId" locationNameList:"item" type:"list" required:"true"` - - // Indicates whether to terminate instances for a Spot fleet request if it is - // canceled successfully. - TerminateInstances *bool `locationName:"terminateInstances" type:"boolean" required:"true"` - - metadataCancelSpotFleetRequestsInput `json:"-" xml:"-"` -} - -type metadataCancelSpotFleetRequestsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CancelSpotFleetRequestsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CancelSpotFleetRequestsInput) GoString() string { - return s.String() -} - -// Contains the output of CancelSpotFleetRequests. -type CancelSpotFleetRequestsOutput struct { - // Information about the Spot fleet requests that are successfully canceled. - SuccessfulFleetRequests []*CancelSpotFleetRequestsSuccessItem `locationName:"successfulFleetRequestSet" locationNameList:"item" type:"list"` - - // Information about the Spot fleet requests that are not successfully canceled. - UnsuccessfulFleetRequests []*CancelSpotFleetRequestsErrorItem `locationName:"unsuccessfulFleetRequestSet" locationNameList:"item" type:"list"` - - metadataCancelSpotFleetRequestsOutput `json:"-" xml:"-"` -} - -type metadataCancelSpotFleetRequestsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CancelSpotFleetRequestsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CancelSpotFleetRequestsOutput) GoString() string { - return s.String() -} - -// Describes a Spot fleet request that was successfully canceled. -type CancelSpotFleetRequestsSuccessItem struct { - // The current state of the Spot fleet request. - CurrentSpotFleetRequestState *string `locationName:"currentSpotFleetRequestState" type:"string" required:"true" enum:"BatchState"` - - // The previous state of the Spot fleet request. - PreviousSpotFleetRequestState *string `locationName:"previousSpotFleetRequestState" type:"string" required:"true" enum:"BatchState"` - - // The ID of the Spot fleet request. - SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"` - - metadataCancelSpotFleetRequestsSuccessItem `json:"-" xml:"-"` -} - -type metadataCancelSpotFleetRequestsSuccessItem struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CancelSpotFleetRequestsSuccessItem) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CancelSpotFleetRequestsSuccessItem) GoString() string { - return s.String() -} - -// Contains the parameters for CancelSpotInstanceRequests. -type CancelSpotInstanceRequestsInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more Spot instance request IDs. - SpotInstanceRequestIds []*string `locationName:"SpotInstanceRequestId" locationNameList:"SpotInstanceRequestId" type:"list" required:"true"` - - metadataCancelSpotInstanceRequestsInput `json:"-" xml:"-"` -} - -type metadataCancelSpotInstanceRequestsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CancelSpotInstanceRequestsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CancelSpotInstanceRequestsInput) GoString() string { - return s.String() -} - -// Contains the output of CancelSpotInstanceRequests. -type CancelSpotInstanceRequestsOutput struct { - // One or more Spot instance requests. - CancelledSpotInstanceRequests []*CancelledSpotInstanceRequest `locationName:"spotInstanceRequestSet" locationNameList:"item" type:"list"` - - metadataCancelSpotInstanceRequestsOutput `json:"-" xml:"-"` -} - -type metadataCancelSpotInstanceRequestsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CancelSpotInstanceRequestsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CancelSpotInstanceRequestsOutput) GoString() string { - return s.String() -} - -// Describes a request to cancel a Spot instance. -type CancelledSpotInstanceRequest struct { - // The ID of the Spot instance request. - SpotInstanceRequestId *string `locationName:"spotInstanceRequestId" type:"string"` - - // The state of the Spot instance request. - State *string `locationName:"state" type:"string" enum:"CancelSpotInstanceRequestState"` - - metadataCancelledSpotInstanceRequest `json:"-" xml:"-"` -} - -type metadataCancelledSpotInstanceRequest struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CancelledSpotInstanceRequest) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CancelledSpotInstanceRequest) GoString() string { - return s.String() -} - -// Describes a linked EC2-Classic instance. -type ClassicLinkInstance struct { - // A list of security groups. - Groups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"` - - // The ID of the instance. - InstanceId *string `locationName:"instanceId" type:"string"` - - // Any tags assigned to the instance. - Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` - - // The ID of the VPC. - VpcId *string `locationName:"vpcId" type:"string"` - - metadataClassicLinkInstance `json:"-" xml:"-"` -} - -type metadataClassicLinkInstance struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ClassicLinkInstance) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ClassicLinkInstance) GoString() string { - return s.String() -} - -// Describes the client-specific data. -type ClientData struct { - // A user-defined comment about the disk upload. - Comment *string `type:"string"` - - // The time that the disk upload ends. - UploadEnd *time.Time `type:"timestamp" timestampFormat:"iso8601"` - - // The size of the uploaded disk image, in GiB. - UploadSize *float64 `type:"double"` - - // The time that the disk upload starts. - UploadStart *time.Time `type:"timestamp" timestampFormat:"iso8601"` - - metadataClientData `json:"-" xml:"-"` -} - -type metadataClientData struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ClientData) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ClientData) GoString() string { - return s.String() -} - -type ConfirmProductInstanceInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the instance. - InstanceId *string `type:"string" required:"true"` - - // The product code. This must be a product code that you own. - ProductCode *string `type:"string" required:"true"` - - metadataConfirmProductInstanceInput `json:"-" xml:"-"` -} - -type metadataConfirmProductInstanceInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ConfirmProductInstanceInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ConfirmProductInstanceInput) GoString() string { - return s.String() -} - -type ConfirmProductInstanceOutput struct { - // The AWS account ID of the instance owner. This is only present if the product - // code is attached to the instance. - OwnerId *string `locationName:"ownerId" type:"string"` - - // The return value of the request. Returns true if the specified product code - // is owned by the requester and associated with the specified instance. - Return *bool `locationName:"return" type:"boolean"` - - metadataConfirmProductInstanceOutput `json:"-" xml:"-"` -} - -type metadataConfirmProductInstanceOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ConfirmProductInstanceOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ConfirmProductInstanceOutput) GoString() string { - return s.String() -} - -// Describes a conversion task. -type ConversionTask struct { - // The ID of the conversion task. - ConversionTaskId *string `locationName:"conversionTaskId" type:"string" required:"true"` - - // The time when the task expires. If the upload isn't complete before the expiration - // time, we automatically cancel the task. - ExpirationTime *string `locationName:"expirationTime" type:"string"` - - // If the task is for importing an instance, this contains information about - // the import instance task. - ImportInstance *ImportInstanceTaskDetails `locationName:"importInstance" type:"structure"` - - // If the task is for importing a volume, this contains information about the - // import volume task. - ImportVolume *ImportVolumeTaskDetails `locationName:"importVolume" type:"structure"` - - // The state of the conversion task. - State *string `locationName:"state" type:"string" required:"true" enum:"ConversionTaskState"` - - // The status message related to the conversion task. - StatusMessage *string `locationName:"statusMessage" type:"string"` - - // Any tags assigned to the task. - Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` - - metadataConversionTask `json:"-" xml:"-"` -} - -type metadataConversionTask struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ConversionTask) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ConversionTask) GoString() string { - return s.String() -} - -type CopyImageInput struct { - // Unique, case-sensitive identifier you provide to ensure idempotency of the - // request. For more information, see How to Ensure Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html) - // in the Amazon Elastic Compute Cloud User Guide. - ClientToken *string `type:"string"` - - // A description for the new AMI in the destination region. - Description *string `type:"string"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The name of the new AMI in the destination region. - Name *string `type:"string" required:"true"` - - // The ID of the AMI to copy. - SourceImageId *string `type:"string" required:"true"` - - // The name of the region that contains the AMI to copy. - SourceRegion *string `type:"string" required:"true"` - - metadataCopyImageInput `json:"-" xml:"-"` -} - -type metadataCopyImageInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CopyImageInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CopyImageInput) GoString() string { - return s.String() -} - -type CopyImageOutput struct { - // The ID of the new AMI. - ImageId *string `locationName:"imageId" type:"string"` - - metadataCopyImageOutput `json:"-" xml:"-"` -} - -type metadataCopyImageOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CopyImageOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CopyImageOutput) GoString() string { - return s.String() -} - -type CopySnapshotInput struct { - // A description for the EBS snapshot. - Description *string `type:"string"` - - // The destination region to use in the PresignedUrl parameter of a snapshot - // copy operation. This parameter is only valid for specifying the destination - // region in a PresignedUrl parameter, where it is required. - // - // CopySnapshot sends the snapshot copy to the regional endpoint that you - // send the HTTP request to, such as ec2.us-east-1.amazonaws.com (in the AWS - // CLI, this is specified with the --region parameter or the default region - // in your AWS configuration file). - DestinationRegion *string `locationName:"destinationRegion" type:"string"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // Specifies whether the destination snapshot should be encrypted. There is - // no way to create an unencrypted snapshot copy from an encrypted snapshot; - // however, you can encrypt a copy of an unencrypted snapshot with this flag. - // The default CMK for EBS is used unless a non-default AWS Key Management Service - // (AWS KMS) CMK is specified with KmsKeyId. For more information, see Amazon - // EBS Encryption (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html) - // in the Amazon Elastic Compute Cloud User Guide. - Encrypted *bool `locationName:"encrypted" type:"boolean"` - - // The full ARN of the AWS Key Management Service (AWS KMS) CMK to use when - // creating the snapshot copy. This parameter is only required if you want to - // use a non-default CMK; if this parameter is not specified, the default CMK - // for EBS is used. The ARN contains the arn:aws:kms namespace, followed by - // the region of the CMK, the AWS account ID of the CMK owner, the key namespace, - // and then the CMK ID. For example, arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef. - // The specified CMK must exist in the region that the snapshot is being copied - // to. If a KmsKeyId is specified, the Encrypted flag must also be set. - KmsKeyId *string `locationName:"kmsKeyId" type:"string"` - - // The pre-signed URL that facilitates copying an encrypted snapshot. This parameter - // is only required when copying an encrypted snapshot with the Amazon EC2 Query - // API; it is available as an optional parameter in all other cases. The PresignedUrl - // should use the snapshot source endpoint, the CopySnapshot action, and include - // the SourceRegion, SourceSnapshotId, and DestinationRegion parameters. The - // PresignedUrl must be signed using AWS Signature Version 4. Because EBS snapshots - // are stored in Amazon S3, the signing algorithm for this parameter uses the - // same logic that is described in Authenticating Requests by Using Query Parameters - // (AWS Signature Version 4) (http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html) - // in the Amazon Simple Storage Service API Reference. An invalid or improperly - // signed PresignedUrl will cause the copy operation to fail asynchronously, - // and the snapshot will move to an error state. - PresignedUrl *string `locationName:"presignedUrl" type:"string"` - - // The ID of the region that contains the snapshot to be copied. - SourceRegion *string `type:"string" required:"true"` - - // The ID of the EBS snapshot to copy. - SourceSnapshotId *string `type:"string" required:"true"` - - metadataCopySnapshotInput `json:"-" xml:"-"` -} - -type metadataCopySnapshotInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CopySnapshotInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CopySnapshotInput) GoString() string { - return s.String() -} - -type CopySnapshotOutput struct { - // The ID of the new snapshot. - SnapshotId *string `locationName:"snapshotId" type:"string"` - - metadataCopySnapshotOutput `json:"-" xml:"-"` -} - -type metadataCopySnapshotOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CopySnapshotOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CopySnapshotOutput) GoString() string { - return s.String() -} - -type CreateCustomerGatewayInput struct { - // For devices that support BGP, the customer gateway's BGP ASN. - // - // Default: 65000 - BgpAsn *int64 `type:"integer" required:"true"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The Internet-routable IP address for the customer gateway's outside interface. - // The address must be static. - PublicIp *string `locationName:"IpAddress" type:"string" required:"true"` - - // The type of VPN connection that this customer gateway supports (ipsec.1). - Type *string `type:"string" required:"true" enum:"GatewayType"` - - metadataCreateCustomerGatewayInput `json:"-" xml:"-"` -} - -type metadataCreateCustomerGatewayInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateCustomerGatewayInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateCustomerGatewayInput) GoString() string { - return s.String() -} - -type CreateCustomerGatewayOutput struct { - // Information about the customer gateway. - CustomerGateway *CustomerGateway `locationName:"customerGateway" type:"structure"` - - metadataCreateCustomerGatewayOutput `json:"-" xml:"-"` -} - -type metadataCreateCustomerGatewayOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateCustomerGatewayOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateCustomerGatewayOutput) GoString() string { - return s.String() -} - -type CreateDhcpOptionsInput struct { - // A DHCP configuration option. - DhcpConfigurations []*NewDhcpConfiguration `locationName:"dhcpConfiguration" locationNameList:"item" type:"list" required:"true"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - metadataCreateDhcpOptionsInput `json:"-" xml:"-"` -} - -type metadataCreateDhcpOptionsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateDhcpOptionsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateDhcpOptionsInput) GoString() string { - return s.String() -} - -type CreateDhcpOptionsOutput struct { - // A set of DHCP options. - DhcpOptions *DhcpOptions `locationName:"dhcpOptions" type:"structure"` - - metadataCreateDhcpOptionsOutput `json:"-" xml:"-"` -} - -type metadataCreateDhcpOptionsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateDhcpOptionsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateDhcpOptionsOutput) GoString() string { - return s.String() -} - -type CreateFlowLogsInput struct { - // Unique, case-sensitive identifier you provide to ensure the idempotency of - // the request. For more information, see How to Ensure Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html). - ClientToken *string `type:"string"` - - // The ARN for the IAM role that's used to post flow logs to a CloudWatch Logs - // log group. - DeliverLogsPermissionArn *string `type:"string" required:"true"` - - // The name of the CloudWatch log group. - LogGroupName *string `type:"string" required:"true"` - - // One or more subnet, network interface, or VPC IDs. - ResourceIds []*string `locationName:"ResourceId" locationNameList:"item" type:"list" required:"true"` - - // The type of resource on which to create the flow log. - ResourceType *string `type:"string" required:"true" enum:"FlowLogsResourceType"` - - // The type of traffic to log. - TrafficType *string `type:"string" required:"true" enum:"TrafficType"` - - metadataCreateFlowLogsInput `json:"-" xml:"-"` -} - -type metadataCreateFlowLogsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateFlowLogsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateFlowLogsInput) GoString() string { - return s.String() -} - -type CreateFlowLogsOutput struct { - // Unique, case-sensitive identifier you provide to ensure the idempotency of - // the request. - ClientToken *string `locationName:"clientToken" type:"string"` - - // The IDs of the flow logs. - FlowLogIds []*string `locationName:"flowLogIdSet" locationNameList:"item" type:"list"` - - // Information about the flow logs that could not be created successfully. - Unsuccessful []*UnsuccessfulItem `locationName:"unsuccessful" locationNameList:"item" type:"list"` - - metadataCreateFlowLogsOutput `json:"-" xml:"-"` -} - -type metadataCreateFlowLogsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateFlowLogsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateFlowLogsOutput) GoString() string { - return s.String() -} - -type CreateImageInput struct { - // Information about one or more block device mappings. - BlockDeviceMappings []*BlockDeviceMapping `locationName:"blockDeviceMapping" locationNameList:"BlockDeviceMapping" type:"list"` - - // A description for the new image. - Description *string `locationName:"description" type:"string"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the instance. - InstanceId *string `locationName:"instanceId" type:"string" required:"true"` - - // A name for the new image. - // - // Constraints: 3-128 alphanumeric characters, parentheses (()), square brackets - // ([]), spaces ( ), periods (.), slashes (/), dashes (-), single quotes ('), - // at-signs (@), or underscores(_) - Name *string `locationName:"name" type:"string" required:"true"` - - // By default, this parameter is set to false, which means Amazon EC2 attempts - // to shut down the instance cleanly before image creation and then reboots - // the instance. When the parameter is set to true, Amazon EC2 doesn't shut - // down the instance before creating the image. When this option is used, file - // system integrity on the created image can't be guaranteed. - NoReboot *bool `locationName:"noReboot" type:"boolean"` - - metadataCreateImageInput `json:"-" xml:"-"` -} - -type metadataCreateImageInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateImageInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateImageInput) GoString() string { - return s.String() -} - -type CreateImageOutput struct { - // The ID of the new AMI. - ImageId *string `locationName:"imageId" type:"string"` - - metadataCreateImageOutput `json:"-" xml:"-"` -} - -type metadataCreateImageOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateImageOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateImageOutput) GoString() string { - return s.String() -} - -type CreateInstanceExportTaskInput struct { - // A description for the conversion task or the resource being exported. The - // maximum length is 255 bytes. - Description *string `locationName:"description" type:"string"` - - // The format and location for an instance export task. - ExportToS3Task *ExportToS3TaskSpecification `locationName:"exportToS3" type:"structure"` - - // The ID of the instance. - InstanceId *string `locationName:"instanceId" type:"string" required:"true"` - - // The target virtualization environment. - TargetEnvironment *string `locationName:"targetEnvironment" type:"string" enum:"ExportEnvironment"` - - metadataCreateInstanceExportTaskInput `json:"-" xml:"-"` -} - -type metadataCreateInstanceExportTaskInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateInstanceExportTaskInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateInstanceExportTaskInput) GoString() string { - return s.String() -} - -type CreateInstanceExportTaskOutput struct { - // Information about the instance export task. - ExportTask *ExportTask `locationName:"exportTask" type:"structure"` - - metadataCreateInstanceExportTaskOutput `json:"-" xml:"-"` -} - -type metadataCreateInstanceExportTaskOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateInstanceExportTaskOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateInstanceExportTaskOutput) GoString() string { - return s.String() -} - -type CreateInternetGatewayInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - metadataCreateInternetGatewayInput `json:"-" xml:"-"` -} - -type metadataCreateInternetGatewayInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateInternetGatewayInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateInternetGatewayInput) GoString() string { - return s.String() -} - -type CreateInternetGatewayOutput struct { - // Information about the Internet gateway. - InternetGateway *InternetGateway `locationName:"internetGateway" type:"structure"` - - metadataCreateInternetGatewayOutput `json:"-" xml:"-"` -} - -type metadataCreateInternetGatewayOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateInternetGatewayOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateInternetGatewayOutput) GoString() string { - return s.String() -} - -type CreateKeyPairInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // A unique name for the key pair. - // - // Constraints: Up to 255 ASCII characters - KeyName *string `type:"string" required:"true"` - - metadataCreateKeyPairInput `json:"-" xml:"-"` -} - -type metadataCreateKeyPairInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateKeyPairInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateKeyPairInput) GoString() string { - return s.String() -} - -// Describes a key pair. -type CreateKeyPairOutput struct { - // The SHA-1 digest of the DER encoded private key. - KeyFingerprint *string `locationName:"keyFingerprint" type:"string"` - - // An unencrypted PEM encoded RSA private key. - KeyMaterial *string `locationName:"keyMaterial" type:"string"` - - // The name of the key pair. - KeyName *string `locationName:"keyName" type:"string"` - - metadataCreateKeyPairOutput `json:"-" xml:"-"` -} - -type metadataCreateKeyPairOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateKeyPairOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateKeyPairOutput) GoString() string { - return s.String() -} - -type CreateNetworkAclEntryInput struct { - // The network range to allow or deny, in CIDR notation (for example 172.16.0.0/24). - CidrBlock *string `locationName:"cidrBlock" type:"string" required:"true"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // Indicates whether this is an egress rule (rule is applied to traffic leaving - // the subnet). - Egress *bool `locationName:"egress" type:"boolean" required:"true"` - - // ICMP protocol: The ICMP type and code. Required if specifying ICMP for the - // protocol. - IcmpTypeCode *IcmpTypeCode `locationName:"Icmp" type:"structure"` - - // The ID of the network ACL. - NetworkAclId *string `locationName:"networkAclId" type:"string" required:"true"` - - // TCP or UDP protocols: The range of ports the rule applies to. - PortRange *PortRange `locationName:"portRange" type:"structure"` - - // The protocol. A value of -1 means all protocols. - Protocol *string `locationName:"protocol" type:"string" required:"true"` - - // Indicates whether to allow or deny the traffic that matches the rule. - RuleAction *string `locationName:"ruleAction" type:"string" required:"true" enum:"RuleAction"` - - // The rule number for the entry (for example, 100). ACL entries are processed - // in ascending order by rule number. - // - // Constraints: Positive integer from 1 to 32766 - RuleNumber *int64 `locationName:"ruleNumber" type:"integer" required:"true"` - - metadataCreateNetworkAclEntryInput `json:"-" xml:"-"` -} - -type metadataCreateNetworkAclEntryInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateNetworkAclEntryInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateNetworkAclEntryInput) GoString() string { - return s.String() -} - -type CreateNetworkAclEntryOutput struct { - metadataCreateNetworkAclEntryOutput `json:"-" xml:"-"` -} - -type metadataCreateNetworkAclEntryOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateNetworkAclEntryOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateNetworkAclEntryOutput) GoString() string { - return s.String() -} - -type CreateNetworkAclInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the VPC. - VpcId *string `locationName:"vpcId" type:"string" required:"true"` - - metadataCreateNetworkAclInput `json:"-" xml:"-"` -} - -type metadataCreateNetworkAclInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateNetworkAclInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateNetworkAclInput) GoString() string { - return s.String() -} - -type CreateNetworkAclOutput struct { - // Information about the network ACL. - NetworkAcl *NetworkAcl `locationName:"networkAcl" type:"structure"` - - metadataCreateNetworkAclOutput `json:"-" xml:"-"` -} - -type metadataCreateNetworkAclOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateNetworkAclOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateNetworkAclOutput) GoString() string { - return s.String() -} - -type CreateNetworkInterfaceInput struct { - // A description for the network interface. - Description *string `locationName:"description" type:"string"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The IDs of one or more security groups. - Groups []*string `locationName:"SecurityGroupId" locationNameList:"SecurityGroupId" type:"list"` - - // The primary private IP address of the network interface. If you don't specify - // an IP address, Amazon EC2 selects one for you from the subnet range. If you - // specify an IP address, you cannot indicate any IP addresses specified in - // privateIpAddresses as primary (only one IP address can be designated as primary). - PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"` - - // One or more private IP addresses. - PrivateIpAddresses []*PrivateIpAddressSpecification `locationName:"privateIpAddresses" locationNameList:"item" type:"list"` - - // The number of secondary private IP addresses to assign to a network interface. - // When you specify a number of secondary IP addresses, Amazon EC2 selects these - // IP addresses within the subnet range. You can't specify this option and specify - // more than one private IP address using privateIpAddresses. - // - // The number of IP addresses you can assign to a network interface varies - // by instance type. For more information, see Private IP Addresses Per ENI - // Per Instance Type (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI) - // in the Amazon Elastic Compute Cloud User Guide. - SecondaryPrivateIpAddressCount *int64 `locationName:"secondaryPrivateIpAddressCount" type:"integer"` - - // The ID of the subnet to associate with the network interface. - SubnetId *string `locationName:"subnetId" type:"string" required:"true"` - - metadataCreateNetworkInterfaceInput `json:"-" xml:"-"` -} - -type metadataCreateNetworkInterfaceInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateNetworkInterfaceInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateNetworkInterfaceInput) GoString() string { - return s.String() -} - -type CreateNetworkInterfaceOutput struct { - // Information about the network interface. - NetworkInterface *NetworkInterface `locationName:"networkInterface" type:"structure"` - - metadataCreateNetworkInterfaceOutput `json:"-" xml:"-"` -} - -type metadataCreateNetworkInterfaceOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateNetworkInterfaceOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateNetworkInterfaceOutput) GoString() string { - return s.String() -} - -type CreatePlacementGroupInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // A name for the placement group. - // - // Constraints: Up to 255 ASCII characters - GroupName *string `locationName:"groupName" type:"string" required:"true"` - - // The placement strategy. - Strategy *string `locationName:"strategy" type:"string" required:"true" enum:"PlacementStrategy"` - - metadataCreatePlacementGroupInput `json:"-" xml:"-"` -} - -type metadataCreatePlacementGroupInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreatePlacementGroupInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreatePlacementGroupInput) GoString() string { - return s.String() -} - -type CreatePlacementGroupOutput struct { - metadataCreatePlacementGroupOutput `json:"-" xml:"-"` -} - -type metadataCreatePlacementGroupOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreatePlacementGroupOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreatePlacementGroupOutput) GoString() string { - return s.String() -} - -type CreateReservedInstancesListingInput struct { - // Unique, case-sensitive identifier you provide to ensure idempotency of your - // listings. This helps avoid duplicate listings. For more information, see - // Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). - ClientToken *string `locationName:"clientToken" type:"string" required:"true"` - - // The number of instances that are a part of a Reserved instance account to - // be listed in the Reserved Instance Marketplace. This number should be less - // than or equal to the instance count associated with the Reserved instance - // ID specified in this call. - InstanceCount *int64 `locationName:"instanceCount" type:"integer" required:"true"` - - // A list specifying the price of the Reserved instance for each month remaining - // in the Reserved instance term. - PriceSchedules []*PriceScheduleSpecification `locationName:"priceSchedules" locationNameList:"item" type:"list" required:"true"` - - // The ID of the active Reserved instance. - ReservedInstancesId *string `locationName:"reservedInstancesId" type:"string" required:"true"` - - metadataCreateReservedInstancesListingInput `json:"-" xml:"-"` -} - -type metadataCreateReservedInstancesListingInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateReservedInstancesListingInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateReservedInstancesListingInput) GoString() string { - return s.String() -} - -type CreateReservedInstancesListingOutput struct { - // Information about the Reserved instance listing. - ReservedInstancesListings []*ReservedInstancesListing `locationName:"reservedInstancesListingsSet" locationNameList:"item" type:"list"` - - metadataCreateReservedInstancesListingOutput `json:"-" xml:"-"` -} - -type metadataCreateReservedInstancesListingOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateReservedInstancesListingOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateReservedInstancesListingOutput) GoString() string { - return s.String() -} - -type CreateRouteInput struct { - // The CIDR address block used for the destination match. Routing decisions - // are based on the most specific match. - DestinationCidrBlock *string `locationName:"destinationCidrBlock" type:"string" required:"true"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of an Internet gateway or virtual private gateway attached to your - // VPC. - GatewayId *string `locationName:"gatewayId" type:"string"` - - // The ID of a NAT instance in your VPC. The operation fails if you specify - // an instance ID unless exactly one network interface is attached. - InstanceId *string `locationName:"instanceId" type:"string"` - - // The ID of a network interface. - NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"` - - // The ID of the route table for the route. - RouteTableId *string `locationName:"routeTableId" type:"string" required:"true"` - - // The ID of a VPC peering connection. - VpcPeeringConnectionId *string `locationName:"vpcPeeringConnectionId" type:"string"` - - metadataCreateRouteInput `json:"-" xml:"-"` -} - -type metadataCreateRouteInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateRouteInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateRouteInput) GoString() string { - return s.String() -} - -type CreateRouteOutput struct { - // Returns true if the request succeeds; otherwise, it returns an error. - Return *bool `locationName:"return" type:"boolean"` - - metadataCreateRouteOutput `json:"-" xml:"-"` -} - -type metadataCreateRouteOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateRouteOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateRouteOutput) GoString() string { - return s.String() -} - -type CreateRouteTableInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the VPC. - VpcId *string `locationName:"vpcId" type:"string" required:"true"` - - metadataCreateRouteTableInput `json:"-" xml:"-"` -} - -type metadataCreateRouteTableInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateRouteTableInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateRouteTableInput) GoString() string { - return s.String() -} - -type CreateRouteTableOutput struct { - // Information about the route table. - RouteTable *RouteTable `locationName:"routeTable" type:"structure"` - - metadataCreateRouteTableOutput `json:"-" xml:"-"` -} - -type metadataCreateRouteTableOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateRouteTableOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateRouteTableOutput) GoString() string { - return s.String() -} - -type CreateSecurityGroupInput struct { - // A description for the security group. This is informational only. - // - // Constraints: Up to 255 characters in length - // - // Constraints for EC2-Classic: ASCII characters - // - // Constraints for EC2-VPC: a-z, A-Z, 0-9, spaces, and ._-:/()#,@[]+=;{}!$* - Description *string `locationName:"GroupDescription" type:"string" required:"true"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The name of the security group. - // - // Constraints: Up to 255 characters in length - // - // Constraints for EC2-Classic: ASCII characters - // - // Constraints for EC2-VPC: a-z, A-Z, 0-9, spaces, and ._-:/()#,@[]+=;{}!$* - GroupName *string `type:"string" required:"true"` - - // [EC2-VPC] The ID of the VPC. Required for EC2-VPC. - VpcId *string `type:"string"` - - metadataCreateSecurityGroupInput `json:"-" xml:"-"` -} - -type metadataCreateSecurityGroupInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateSecurityGroupInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateSecurityGroupInput) GoString() string { - return s.String() -} - -type CreateSecurityGroupOutput struct { - // The ID of the security group. - GroupId *string `locationName:"groupId" type:"string"` - - metadataCreateSecurityGroupOutput `json:"-" xml:"-"` -} - -type metadataCreateSecurityGroupOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateSecurityGroupOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateSecurityGroupOutput) GoString() string { - return s.String() -} - -type CreateSnapshotInput struct { - // A description for the snapshot. - Description *string `type:"string"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the EBS volume. - VolumeId *string `type:"string" required:"true"` - - metadataCreateSnapshotInput `json:"-" xml:"-"` -} - -type metadataCreateSnapshotInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateSnapshotInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateSnapshotInput) GoString() string { - return s.String() -} - -// Contains the parameters for CreateSpotDatafeedSubscription. -type CreateSpotDatafeedSubscriptionInput struct { - // The Amazon S3 bucket in which to store the Spot instance data feed. - Bucket *string `locationName:"bucket" type:"string" required:"true"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // A prefix for the data feed file names. - Prefix *string `locationName:"prefix" type:"string"` - - metadataCreateSpotDatafeedSubscriptionInput `json:"-" xml:"-"` -} - -type metadataCreateSpotDatafeedSubscriptionInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateSpotDatafeedSubscriptionInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateSpotDatafeedSubscriptionInput) GoString() string { - return s.String() -} - -// Contains the output of CreateSpotDatafeedSubscription. -type CreateSpotDatafeedSubscriptionOutput struct { - // The Spot instance data feed subscription. - SpotDatafeedSubscription *SpotDatafeedSubscription `locationName:"spotDatafeedSubscription" type:"structure"` - - metadataCreateSpotDatafeedSubscriptionOutput `json:"-" xml:"-"` -} - -type metadataCreateSpotDatafeedSubscriptionOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateSpotDatafeedSubscriptionOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateSpotDatafeedSubscriptionOutput) GoString() string { - return s.String() -} - -type CreateSubnetInput struct { - // The Availability Zone for the subnet. - // - // Default: AWS selects one for you. If you create more than one subnet in - // your VPC, we may not necessarily select a different zone for each subnet. - AvailabilityZone *string `type:"string"` - - // The network range for the subnet, in CIDR notation. For example, 10.0.0.0/24. - CidrBlock *string `type:"string" required:"true"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the VPC. - VpcId *string `type:"string" required:"true"` - - metadataCreateSubnetInput `json:"-" xml:"-"` -} - -type metadataCreateSubnetInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateSubnetInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateSubnetInput) GoString() string { - return s.String() -} - -type CreateSubnetOutput struct { - // Information about the subnet. - Subnet *Subnet `locationName:"subnet" type:"structure"` - - metadataCreateSubnetOutput `json:"-" xml:"-"` -} - -type metadataCreateSubnetOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateSubnetOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateSubnetOutput) GoString() string { - return s.String() -} - -type CreateTagsInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The IDs of one or more resources to tag. For example, ami-1a2b3c4d. - Resources []*string `locationName:"ResourceId" type:"list" required:"true"` - - // One or more tags. The value parameter is required, but if you don't want - // the tag to have a value, specify the parameter with no value, and we set - // the value to an empty string. - Tags []*Tag `locationName:"Tag" locationNameList:"item" type:"list" required:"true"` - - metadataCreateTagsInput `json:"-" xml:"-"` -} - -type metadataCreateTagsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateTagsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateTagsInput) GoString() string { - return s.String() -} - -type CreateTagsOutput struct { - metadataCreateTagsOutput `json:"-" xml:"-"` -} - -type metadataCreateTagsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateTagsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateTagsOutput) GoString() string { - return s.String() -} - -type CreateVolumeInput struct { - // The Availability Zone in which to create the volume. Use DescribeAvailabilityZones - // to list the Availability Zones that are currently available to you. - AvailabilityZone *string `type:"string" required:"true"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // Specifies whether the volume should be encrypted. Encrypted Amazon EBS volumes - // may only be attached to instances that support Amazon EBS encryption. Volumes - // that are created from encrypted snapshots are automatically encrypted. There - // is no way to create an encrypted volume from an unencrypted snapshot or vice - // versa. If your AMI uses encrypted volumes, you can only launch it on supported - // instance types. For more information, see Amazon EBS Encryption (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html) - // in the Amazon Elastic Compute Cloud User Guide. - Encrypted *bool `locationName:"encrypted" type:"boolean"` - - // Only valid for Provisioned IOPS (SSD) volumes. The number of I/O operations - // per second (IOPS) to provision for the volume, with a maximum ratio of 30 - // IOPS/GiB. - // - // Constraint: Range is 100 to 20000 for Provisioned IOPS (SSD) volumes - Iops *int64 `type:"integer"` - - // The full ARN of the AWS Key Management Service (AWS KMS) customer master - // key (CMK) to use when creating the encrypted volume. This parameter is only - // required if you want to use a non-default CMK; if this parameter is not specified, - // the default CMK for EBS is used. The ARN contains the arn:aws:kms namespace, - // followed by the region of the CMK, the AWS account ID of the CMK owner, the - // key namespace, and then the CMK ID. For example, arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef. - // If a KmsKeyId is specified, the Encrypted flag must also be set. - KmsKeyId *string `type:"string"` - - // The size of the volume, in GiBs. - // - // Constraints: 1-1024 for standard volumes, 1-16384 for gp2 volumes, and 4-16384 - // for io1 volumes. If you specify a snapshot, the volume size must be equal - // to or larger than the snapshot size. - // - // Default: If you're creating the volume from a snapshot and don't specify - // a volume size, the default is the snapshot size. - Size *int64 `type:"integer"` - - // The snapshot from which to create the volume. - SnapshotId *string `type:"string"` - - // The volume type. This can be gp2 for General Purpose (SSD) volumes, io1 for - // Provisioned IOPS (SSD) volumes, or standard for Magnetic volumes. - // - // Default: standard - VolumeType *string `type:"string" enum:"VolumeType"` - - metadataCreateVolumeInput `json:"-" xml:"-"` -} - -type metadataCreateVolumeInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateVolumeInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateVolumeInput) GoString() string { - return s.String() -} - -// Describes the user or group to be added or removed from the permissions for -// a volume. -type CreateVolumePermission struct { - // The specific group that is to be added or removed from a volume's list of - // create volume permissions. - Group *string `locationName:"group" type:"string" enum:"PermissionGroup"` - - // The specific AWS account ID that is to be added or removed from a volume's - // list of create volume permissions. - UserId *string `locationName:"userId" type:"string"` - - metadataCreateVolumePermission `json:"-" xml:"-"` -} - -type metadataCreateVolumePermission struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateVolumePermission) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateVolumePermission) GoString() string { - return s.String() -} - -// Describes modifications to the permissions for a volume. -type CreateVolumePermissionModifications struct { - // Adds a specific AWS account ID or group to a volume's list of create volume - // permissions. - Add []*CreateVolumePermission `locationNameList:"item" type:"list"` - - // Removes a specific AWS account ID or group from a volume's list of create - // volume permissions. - Remove []*CreateVolumePermission `locationNameList:"item" type:"list"` - - metadataCreateVolumePermissionModifications `json:"-" xml:"-"` -} - -type metadataCreateVolumePermissionModifications struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateVolumePermissionModifications) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateVolumePermissionModifications) GoString() string { - return s.String() -} - -type CreateVpcEndpointInput struct { - // Unique, case-sensitive identifier you provide to ensure the idempotency of - // the request. For more information, see How to Ensure Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). - ClientToken *string `type:"string"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `type:"boolean"` - - // A policy to attach to the endpoint that controls access to the service. The - // policy must be in valid JSON format. If this parameter is not specified, - // we attach a default policy that allows full access to the service. - PolicyDocument *string `type:"string"` - - // One or more route table IDs. - RouteTableIds []*string `locationName:"RouteTableId" locationNameList:"item" type:"list"` - - // The AWS service name, in the form com.amazonaws.region.service. To get a - // list of available services, use the DescribeVpcEndpointServices request. - ServiceName *string `type:"string" required:"true"` - - // The ID of the VPC in which the endpoint will be used. - VpcId *string `type:"string" required:"true"` - - metadataCreateVpcEndpointInput `json:"-" xml:"-"` -} - -type metadataCreateVpcEndpointInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateVpcEndpointInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateVpcEndpointInput) GoString() string { - return s.String() -} - -type CreateVpcEndpointOutput struct { - // Unique, case-sensitive identifier you provide to ensure the idempotency of - // the request. - ClientToken *string `locationName:"clientToken" type:"string"` - - // Information about the endpoint. - VpcEndpoint *VpcEndpoint `locationName:"vpcEndpoint" type:"structure"` - - metadataCreateVpcEndpointOutput `json:"-" xml:"-"` -} - -type metadataCreateVpcEndpointOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateVpcEndpointOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateVpcEndpointOutput) GoString() string { - return s.String() -} - -type CreateVpcInput struct { - // The network range for the VPC, in CIDR notation. For example, 10.0.0.0/16. - CidrBlock *string `type:"string" required:"true"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The supported tenancy options for instances launched into the VPC. A value - // of default means that instances can be launched with any tenancy; a value - // of dedicated means all instances launched into the VPC are launched as dedicated - // tenancy instances regardless of the tenancy assigned to the instance at launch. - // Dedicated tenancy instances run on single-tenant hardware. - // - // Important: The host value cannot be used with this parameter. Use the default - // or dedicated values only. - // - // Default: default - InstanceTenancy *string `locationName:"instanceTenancy" type:"string" enum:"Tenancy"` - - metadataCreateVpcInput `json:"-" xml:"-"` -} - -type metadataCreateVpcInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateVpcInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateVpcInput) GoString() string { - return s.String() -} - -type CreateVpcOutput struct { - // Information about the VPC. - Vpc *Vpc `locationName:"vpc" type:"structure"` - - metadataCreateVpcOutput `json:"-" xml:"-"` -} - -type metadataCreateVpcOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateVpcOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateVpcOutput) GoString() string { - return s.String() -} - -type CreateVpcPeeringConnectionInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The AWS account ID of the owner of the peer VPC. - // - // Default: Your AWS account ID - PeerOwnerId *string `locationName:"peerOwnerId" type:"string"` - - // The ID of the VPC with which you are creating the VPC peering connection. - PeerVpcId *string `locationName:"peerVpcId" type:"string"` - - // The ID of the requester VPC. - VpcId *string `locationName:"vpcId" type:"string"` - - metadataCreateVpcPeeringConnectionInput `json:"-" xml:"-"` -} - -type metadataCreateVpcPeeringConnectionInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateVpcPeeringConnectionInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateVpcPeeringConnectionInput) GoString() string { - return s.String() -} - -type CreateVpcPeeringConnectionOutput struct { - // Information about the VPC peering connection. - VpcPeeringConnection *VpcPeeringConnection `locationName:"vpcPeeringConnection" type:"structure"` - - metadataCreateVpcPeeringConnectionOutput `json:"-" xml:"-"` -} - -type metadataCreateVpcPeeringConnectionOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateVpcPeeringConnectionOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateVpcPeeringConnectionOutput) GoString() string { - return s.String() -} - -type CreateVpnConnectionInput struct { - // The ID of the customer gateway. - CustomerGatewayId *string `type:"string" required:"true"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // Indicates whether the VPN connection requires static routes. If you are creating - // a VPN connection for a device that does not support BGP, you must specify - // true. - // - // Default: false - Options *VpnConnectionOptionsSpecification `locationName:"options" type:"structure"` - - // The type of VPN connection (ipsec.1). - Type *string `type:"string" required:"true"` - - // The ID of the virtual private gateway. - VpnGatewayId *string `type:"string" required:"true"` - - metadataCreateVpnConnectionInput `json:"-" xml:"-"` -} - -type metadataCreateVpnConnectionInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateVpnConnectionInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateVpnConnectionInput) GoString() string { - return s.String() -} - -type CreateVpnConnectionOutput struct { - // Information about the VPN connection. - VpnConnection *VpnConnection `locationName:"vpnConnection" type:"structure"` - - metadataCreateVpnConnectionOutput `json:"-" xml:"-"` -} - -type metadataCreateVpnConnectionOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateVpnConnectionOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateVpnConnectionOutput) GoString() string { - return s.String() -} - -type CreateVpnConnectionRouteInput struct { - // The CIDR block associated with the local subnet of the customer network. - DestinationCidrBlock *string `type:"string" required:"true"` - - // The ID of the VPN connection. - VpnConnectionId *string `type:"string" required:"true"` - - metadataCreateVpnConnectionRouteInput `json:"-" xml:"-"` -} - -type metadataCreateVpnConnectionRouteInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateVpnConnectionRouteInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateVpnConnectionRouteInput) GoString() string { - return s.String() -} - -type CreateVpnConnectionRouteOutput struct { - metadataCreateVpnConnectionRouteOutput `json:"-" xml:"-"` -} - -type metadataCreateVpnConnectionRouteOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateVpnConnectionRouteOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateVpnConnectionRouteOutput) GoString() string { - return s.String() -} - -type CreateVpnGatewayInput struct { - // The Availability Zone for the virtual private gateway. - AvailabilityZone *string `type:"string"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The type of VPN connection this virtual private gateway supports. - Type *string `type:"string" required:"true" enum:"GatewayType"` - - metadataCreateVpnGatewayInput `json:"-" xml:"-"` -} - -type metadataCreateVpnGatewayInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateVpnGatewayInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateVpnGatewayInput) GoString() string { - return s.String() -} - -type CreateVpnGatewayOutput struct { - // Information about the virtual private gateway. - VpnGateway *VpnGateway `locationName:"vpnGateway" type:"structure"` - - metadataCreateVpnGatewayOutput `json:"-" xml:"-"` -} - -type metadataCreateVpnGatewayOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CreateVpnGatewayOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateVpnGatewayOutput) GoString() string { - return s.String() -} - -// Describes a customer gateway. -type CustomerGateway struct { - // The customer gateway's Border Gateway Protocol (BGP) Autonomous System Number - // (ASN). - BgpAsn *string `locationName:"bgpAsn" type:"string"` - - // The ID of the customer gateway. - CustomerGatewayId *string `locationName:"customerGatewayId" type:"string"` - - // The Internet-routable IP address of the customer gateway's outside interface. - IpAddress *string `locationName:"ipAddress" type:"string"` - - // The current state of the customer gateway (pending | available | deleting - // | deleted). - State *string `locationName:"state" type:"string"` - - // Any tags assigned to the customer gateway. - Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` - - // The type of VPN connection the customer gateway supports (ipsec.1). - Type *string `locationName:"type" type:"string"` - - metadataCustomerGateway `json:"-" xml:"-"` -} - -type metadataCustomerGateway struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s CustomerGateway) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CustomerGateway) GoString() string { - return s.String() -} - -type DeleteCustomerGatewayInput struct { - // The ID of the customer gateway. - CustomerGatewayId *string `type:"string" required:"true"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - metadataDeleteCustomerGatewayInput `json:"-" xml:"-"` -} - -type metadataDeleteCustomerGatewayInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteCustomerGatewayInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteCustomerGatewayInput) GoString() string { - return s.String() -} - -type DeleteCustomerGatewayOutput struct { - metadataDeleteCustomerGatewayOutput `json:"-" xml:"-"` -} - -type metadataDeleteCustomerGatewayOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteCustomerGatewayOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteCustomerGatewayOutput) GoString() string { - return s.String() -} - -type DeleteDhcpOptionsInput struct { - // The ID of the DHCP options set. - DhcpOptionsId *string `type:"string" required:"true"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - metadataDeleteDhcpOptionsInput `json:"-" xml:"-"` -} - -type metadataDeleteDhcpOptionsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteDhcpOptionsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteDhcpOptionsInput) GoString() string { - return s.String() -} - -type DeleteDhcpOptionsOutput struct { - metadataDeleteDhcpOptionsOutput `json:"-" xml:"-"` -} - -type metadataDeleteDhcpOptionsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteDhcpOptionsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteDhcpOptionsOutput) GoString() string { - return s.String() -} - -type DeleteFlowLogsInput struct { - // One or more flow log IDs. - FlowLogIds []*string `locationName:"FlowLogId" locationNameList:"item" type:"list" required:"true"` - - metadataDeleteFlowLogsInput `json:"-" xml:"-"` -} - -type metadataDeleteFlowLogsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteFlowLogsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteFlowLogsInput) GoString() string { - return s.String() -} - -type DeleteFlowLogsOutput struct { - // Information about the flow logs that could not be deleted successfully. - Unsuccessful []*UnsuccessfulItem `locationName:"unsuccessful" locationNameList:"item" type:"list"` - - metadataDeleteFlowLogsOutput `json:"-" xml:"-"` -} - -type metadataDeleteFlowLogsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteFlowLogsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteFlowLogsOutput) GoString() string { - return s.String() -} - -type DeleteInternetGatewayInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the Internet gateway. - InternetGatewayId *string `locationName:"internetGatewayId" type:"string" required:"true"` - - metadataDeleteInternetGatewayInput `json:"-" xml:"-"` -} - -type metadataDeleteInternetGatewayInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteInternetGatewayInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteInternetGatewayInput) GoString() string { - return s.String() -} - -type DeleteInternetGatewayOutput struct { - metadataDeleteInternetGatewayOutput `json:"-" xml:"-"` -} - -type metadataDeleteInternetGatewayOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteInternetGatewayOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteInternetGatewayOutput) GoString() string { - return s.String() -} - -type DeleteKeyPairInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The name of the key pair. - KeyName *string `type:"string" required:"true"` - - metadataDeleteKeyPairInput `json:"-" xml:"-"` -} - -type metadataDeleteKeyPairInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteKeyPairInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteKeyPairInput) GoString() string { - return s.String() -} - -type DeleteKeyPairOutput struct { - metadataDeleteKeyPairOutput `json:"-" xml:"-"` -} - -type metadataDeleteKeyPairOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteKeyPairOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteKeyPairOutput) GoString() string { - return s.String() -} - -type DeleteNetworkAclEntryInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // Indicates whether the rule is an egress rule. - Egress *bool `locationName:"egress" type:"boolean" required:"true"` - - // The ID of the network ACL. - NetworkAclId *string `locationName:"networkAclId" type:"string" required:"true"` - - // The rule number of the entry to delete. - RuleNumber *int64 `locationName:"ruleNumber" type:"integer" required:"true"` - - metadataDeleteNetworkAclEntryInput `json:"-" xml:"-"` -} - -type metadataDeleteNetworkAclEntryInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteNetworkAclEntryInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteNetworkAclEntryInput) GoString() string { - return s.String() -} - -type DeleteNetworkAclEntryOutput struct { - metadataDeleteNetworkAclEntryOutput `json:"-" xml:"-"` -} - -type metadataDeleteNetworkAclEntryOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteNetworkAclEntryOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteNetworkAclEntryOutput) GoString() string { - return s.String() -} - -type DeleteNetworkAclInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the network ACL. - NetworkAclId *string `locationName:"networkAclId" type:"string" required:"true"` - - metadataDeleteNetworkAclInput `json:"-" xml:"-"` -} - -type metadataDeleteNetworkAclInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteNetworkAclInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteNetworkAclInput) GoString() string { - return s.String() -} - -type DeleteNetworkAclOutput struct { - metadataDeleteNetworkAclOutput `json:"-" xml:"-"` -} - -type metadataDeleteNetworkAclOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteNetworkAclOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteNetworkAclOutput) GoString() string { - return s.String() -} - -type DeleteNetworkInterfaceInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the network interface. - NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string" required:"true"` - - metadataDeleteNetworkInterfaceInput `json:"-" xml:"-"` -} - -type metadataDeleteNetworkInterfaceInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteNetworkInterfaceInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteNetworkInterfaceInput) GoString() string { - return s.String() -} - -type DeleteNetworkInterfaceOutput struct { - metadataDeleteNetworkInterfaceOutput `json:"-" xml:"-"` -} - -type metadataDeleteNetworkInterfaceOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteNetworkInterfaceOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteNetworkInterfaceOutput) GoString() string { - return s.String() -} - -type DeletePlacementGroupInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The name of the placement group. - GroupName *string `locationName:"groupName" type:"string" required:"true"` - - metadataDeletePlacementGroupInput `json:"-" xml:"-"` -} - -type metadataDeletePlacementGroupInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeletePlacementGroupInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeletePlacementGroupInput) GoString() string { - return s.String() -} - -type DeletePlacementGroupOutput struct { - metadataDeletePlacementGroupOutput `json:"-" xml:"-"` -} - -type metadataDeletePlacementGroupOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeletePlacementGroupOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeletePlacementGroupOutput) GoString() string { - return s.String() -} - -type DeleteRouteInput struct { - // The CIDR range for the route. The value you specify must match the CIDR for - // the route exactly. - DestinationCidrBlock *string `locationName:"destinationCidrBlock" type:"string" required:"true"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the route table. - RouteTableId *string `locationName:"routeTableId" type:"string" required:"true"` - - metadataDeleteRouteInput `json:"-" xml:"-"` -} - -type metadataDeleteRouteInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteRouteInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteRouteInput) GoString() string { - return s.String() -} - -type DeleteRouteOutput struct { - metadataDeleteRouteOutput `json:"-" xml:"-"` -} - -type metadataDeleteRouteOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteRouteOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteRouteOutput) GoString() string { - return s.String() -} - -type DeleteRouteTableInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the route table. - RouteTableId *string `locationName:"routeTableId" type:"string" required:"true"` - - metadataDeleteRouteTableInput `json:"-" xml:"-"` -} - -type metadataDeleteRouteTableInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteRouteTableInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteRouteTableInput) GoString() string { - return s.String() -} - -type DeleteRouteTableOutput struct { - metadataDeleteRouteTableOutput `json:"-" xml:"-"` -} - -type metadataDeleteRouteTableOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteRouteTableOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteRouteTableOutput) GoString() string { - return s.String() -} - -type DeleteSecurityGroupInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the security group. Required for a nondefault VPC. - GroupId *string `type:"string"` - - // [EC2-Classic, default VPC] The name of the security group. You can specify - // either the security group name or the security group ID. - GroupName *string `type:"string"` - - metadataDeleteSecurityGroupInput `json:"-" xml:"-"` -} - -type metadataDeleteSecurityGroupInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteSecurityGroupInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteSecurityGroupInput) GoString() string { - return s.String() -} - -type DeleteSecurityGroupOutput struct { - metadataDeleteSecurityGroupOutput `json:"-" xml:"-"` -} - -type metadataDeleteSecurityGroupOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteSecurityGroupOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteSecurityGroupOutput) GoString() string { - return s.String() -} - -type DeleteSnapshotInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the EBS snapshot. - SnapshotId *string `type:"string" required:"true"` - - metadataDeleteSnapshotInput `json:"-" xml:"-"` -} - -type metadataDeleteSnapshotInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteSnapshotInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteSnapshotInput) GoString() string { - return s.String() -} - -type DeleteSnapshotOutput struct { - metadataDeleteSnapshotOutput `json:"-" xml:"-"` -} - -type metadataDeleteSnapshotOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteSnapshotOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteSnapshotOutput) GoString() string { - return s.String() -} - -// Contains the parameters for DeleteSpotDatafeedSubscription. -type DeleteSpotDatafeedSubscriptionInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - metadataDeleteSpotDatafeedSubscriptionInput `json:"-" xml:"-"` -} - -type metadataDeleteSpotDatafeedSubscriptionInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteSpotDatafeedSubscriptionInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteSpotDatafeedSubscriptionInput) GoString() string { - return s.String() -} - -type DeleteSpotDatafeedSubscriptionOutput struct { - metadataDeleteSpotDatafeedSubscriptionOutput `json:"-" xml:"-"` -} - -type metadataDeleteSpotDatafeedSubscriptionOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteSpotDatafeedSubscriptionOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteSpotDatafeedSubscriptionOutput) GoString() string { - return s.String() -} - -type DeleteSubnetInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the subnet. - SubnetId *string `type:"string" required:"true"` - - metadataDeleteSubnetInput `json:"-" xml:"-"` -} - -type metadataDeleteSubnetInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteSubnetInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteSubnetInput) GoString() string { - return s.String() -} - -type DeleteSubnetOutput struct { - metadataDeleteSubnetOutput `json:"-" xml:"-"` -} - -type metadataDeleteSubnetOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteSubnetOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteSubnetOutput) GoString() string { - return s.String() -} - -type DeleteTagsInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the resource. For example, ami-1a2b3c4d. You can specify more than - // one resource ID. - Resources []*string `locationName:"resourceId" type:"list" required:"true"` - - // One or more tags to delete. If you omit the value parameter, we delete the - // tag regardless of its value. If you specify this parameter with an empty - // string as the value, we delete the key only if its value is an empty string. - Tags []*Tag `locationName:"tag" locationNameList:"item" type:"list"` - - metadataDeleteTagsInput `json:"-" xml:"-"` -} - -type metadataDeleteTagsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteTagsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteTagsInput) GoString() string { - return s.String() -} - -type DeleteTagsOutput struct { - metadataDeleteTagsOutput `json:"-" xml:"-"` -} - -type metadataDeleteTagsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteTagsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteTagsOutput) GoString() string { - return s.String() -} - -type DeleteVolumeInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the volume. - VolumeId *string `type:"string" required:"true"` - - metadataDeleteVolumeInput `json:"-" xml:"-"` -} - -type metadataDeleteVolumeInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteVolumeInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteVolumeInput) GoString() string { - return s.String() -} - -type DeleteVolumeOutput struct { - metadataDeleteVolumeOutput `json:"-" xml:"-"` -} - -type metadataDeleteVolumeOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteVolumeOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteVolumeOutput) GoString() string { - return s.String() -} - -type DeleteVpcEndpointsInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `type:"boolean"` - - // One or more endpoint IDs. - VpcEndpointIds []*string `locationName:"VpcEndpointId" locationNameList:"item" type:"list" required:"true"` - - metadataDeleteVpcEndpointsInput `json:"-" xml:"-"` -} - -type metadataDeleteVpcEndpointsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteVpcEndpointsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteVpcEndpointsInput) GoString() string { - return s.String() -} - -type DeleteVpcEndpointsOutput struct { - // Information about the endpoints that were not successfully deleted. - Unsuccessful []*UnsuccessfulItem `locationName:"unsuccessful" locationNameList:"item" type:"list"` - - metadataDeleteVpcEndpointsOutput `json:"-" xml:"-"` -} - -type metadataDeleteVpcEndpointsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteVpcEndpointsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteVpcEndpointsOutput) GoString() string { - return s.String() -} - -type DeleteVpcInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the VPC. - VpcId *string `type:"string" required:"true"` - - metadataDeleteVpcInput `json:"-" xml:"-"` -} - -type metadataDeleteVpcInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteVpcInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteVpcInput) GoString() string { - return s.String() -} - -type DeleteVpcOutput struct { - metadataDeleteVpcOutput `json:"-" xml:"-"` -} - -type metadataDeleteVpcOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteVpcOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteVpcOutput) GoString() string { - return s.String() -} - -type DeleteVpcPeeringConnectionInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the VPC peering connection. - VpcPeeringConnectionId *string `locationName:"vpcPeeringConnectionId" type:"string" required:"true"` - - metadataDeleteVpcPeeringConnectionInput `json:"-" xml:"-"` -} - -type metadataDeleteVpcPeeringConnectionInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteVpcPeeringConnectionInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteVpcPeeringConnectionInput) GoString() string { - return s.String() -} - -type DeleteVpcPeeringConnectionOutput struct { - // Returns true if the request succeeds; otherwise, it returns an error. - Return *bool `locationName:"return" type:"boolean"` - - metadataDeleteVpcPeeringConnectionOutput `json:"-" xml:"-"` -} - -type metadataDeleteVpcPeeringConnectionOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteVpcPeeringConnectionOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteVpcPeeringConnectionOutput) GoString() string { - return s.String() -} - -type DeleteVpnConnectionInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the VPN connection. - VpnConnectionId *string `type:"string" required:"true"` - - metadataDeleteVpnConnectionInput `json:"-" xml:"-"` -} - -type metadataDeleteVpnConnectionInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteVpnConnectionInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteVpnConnectionInput) GoString() string { - return s.String() -} - -type DeleteVpnConnectionOutput struct { - metadataDeleteVpnConnectionOutput `json:"-" xml:"-"` -} - -type metadataDeleteVpnConnectionOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteVpnConnectionOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteVpnConnectionOutput) GoString() string { - return s.String() -} - -type DeleteVpnConnectionRouteInput struct { - // The CIDR block associated with the local subnet of the customer network. - DestinationCidrBlock *string `type:"string" required:"true"` - - // The ID of the VPN connection. - VpnConnectionId *string `type:"string" required:"true"` - - metadataDeleteVpnConnectionRouteInput `json:"-" xml:"-"` -} - -type metadataDeleteVpnConnectionRouteInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteVpnConnectionRouteInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteVpnConnectionRouteInput) GoString() string { - return s.String() -} - -type DeleteVpnConnectionRouteOutput struct { - metadataDeleteVpnConnectionRouteOutput `json:"-" xml:"-"` -} - -type metadataDeleteVpnConnectionRouteOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteVpnConnectionRouteOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteVpnConnectionRouteOutput) GoString() string { - return s.String() -} - -type DeleteVpnGatewayInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the virtual private gateway. - VpnGatewayId *string `type:"string" required:"true"` - - metadataDeleteVpnGatewayInput `json:"-" xml:"-"` -} - -type metadataDeleteVpnGatewayInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteVpnGatewayInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteVpnGatewayInput) GoString() string { - return s.String() -} - -type DeleteVpnGatewayOutput struct { - metadataDeleteVpnGatewayOutput `json:"-" xml:"-"` -} - -type metadataDeleteVpnGatewayOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeleteVpnGatewayOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteVpnGatewayOutput) GoString() string { - return s.String() -} - -type DeregisterImageInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the AMI. - ImageId *string `type:"string" required:"true"` - - metadataDeregisterImageInput `json:"-" xml:"-"` -} - -type metadataDeregisterImageInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeregisterImageInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeregisterImageInput) GoString() string { - return s.String() -} - -type DeregisterImageOutput struct { - metadataDeregisterImageOutput `json:"-" xml:"-"` -} - -type metadataDeregisterImageOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DeregisterImageOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeregisterImageOutput) GoString() string { - return s.String() -} - -type DescribeAccountAttributesInput struct { - // One or more account attribute names. - AttributeNames []*string `locationName:"attributeName" locationNameList:"attributeName" type:"list"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - metadataDescribeAccountAttributesInput `json:"-" xml:"-"` -} - -type metadataDescribeAccountAttributesInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeAccountAttributesInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeAccountAttributesInput) GoString() string { - return s.String() -} - -type DescribeAccountAttributesOutput struct { - // Information about one or more account attributes. - AccountAttributes []*AccountAttribute `locationName:"accountAttributeSet" locationNameList:"item" type:"list"` - - metadataDescribeAccountAttributesOutput `json:"-" xml:"-"` -} - -type metadataDescribeAccountAttributesOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeAccountAttributesOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeAccountAttributesOutput) GoString() string { - return s.String() -} - -type DescribeAddressesInput struct { - // [EC2-VPC] One or more allocation IDs. - // - // Default: Describes all your Elastic IP addresses. - AllocationIds []*string `locationName:"AllocationId" locationNameList:"AllocationId" type:"list"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. Filter names and values are case-sensitive. - // - // allocation-id - [EC2-VPC] The allocation ID for the address. - // - // association-id - [EC2-VPC] The association ID for the address. - // - // domain - Indicates whether the address is for use in EC2-Classic (standard) - // or in a VPC (vpc). - // - // instance-id - The ID of the instance the address is associated with, if - // any. - // - // network-interface-id - [EC2-VPC] The ID of the network interface that - // the address is associated with, if any. - // - // network-interface-owner-id - The AWS account ID of the owner. - // - // private-ip-address - [EC2-VPC] The private IP address associated with - // the Elastic IP address. - // - // public-ip - The Elastic IP address. - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // [EC2-Classic] One or more Elastic IP addresses. - // - // Default: Describes all your Elastic IP addresses. - PublicIps []*string `locationName:"PublicIp" locationNameList:"PublicIp" type:"list"` - - metadataDescribeAddressesInput `json:"-" xml:"-"` -} - -type metadataDescribeAddressesInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeAddressesInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeAddressesInput) GoString() string { - return s.String() -} - -type DescribeAddressesOutput struct { - // Information about one or more Elastic IP addresses. - Addresses []*Address `locationName:"addressesSet" locationNameList:"item" type:"list"` - - metadataDescribeAddressesOutput `json:"-" xml:"-"` -} - -type metadataDescribeAddressesOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeAddressesOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeAddressesOutput) GoString() string { - return s.String() -} - -type DescribeAvailabilityZonesInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. - // - // message - Information about the Availability Zone. - // - // region-name - The name of the region for the Availability Zone (for example, - // us-east-1). - // - // state - The state of the Availability Zone (available | information | - // impaired | unavailable). - // - // zone-name - The name of the Availability Zone (for example, us-east-1a). - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // The names of one or more Availability Zones. - ZoneNames []*string `locationName:"ZoneName" locationNameList:"ZoneName" type:"list"` - - metadataDescribeAvailabilityZonesInput `json:"-" xml:"-"` -} - -type metadataDescribeAvailabilityZonesInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeAvailabilityZonesInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeAvailabilityZonesInput) GoString() string { - return s.String() -} - -type DescribeAvailabilityZonesOutput struct { - // Information about one or more Availability Zones. - AvailabilityZones []*AvailabilityZone `locationName:"availabilityZoneInfo" locationNameList:"item" type:"list"` - - metadataDescribeAvailabilityZonesOutput `json:"-" xml:"-"` -} - -type metadataDescribeAvailabilityZonesOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeAvailabilityZonesOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeAvailabilityZonesOutput) GoString() string { - return s.String() -} - -type DescribeBundleTasksInput struct { - // One or more bundle task IDs. - // - // Default: Describes all your bundle tasks. - BundleIds []*string `locationName:"BundleId" locationNameList:"BundleId" type:"list"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. - // - // bundle-id - The ID of the bundle task. - // - // error-code - If the task failed, the error code returned. - // - // error-message - If the task failed, the error message returned. - // - // instance-id - The ID of the instance. - // - // progress - The level of task completion, as a percentage (for example, - // 20%). - // - // s3-bucket - The Amazon S3 bucket to store the AMI. - // - // s3-prefix - The beginning of the AMI name. - // - // start-time - The time the task started (for example, 2013-09-15T17:15:20.000Z). - // - // state - The state of the task (pending | waiting-for-shutdown | bundling - // | storing | cancelling | complete | failed). - // - // update-time - The time of the most recent update for the task. - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - metadataDescribeBundleTasksInput `json:"-" xml:"-"` -} - -type metadataDescribeBundleTasksInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeBundleTasksInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeBundleTasksInput) GoString() string { - return s.String() -} - -type DescribeBundleTasksOutput struct { - // Information about one or more bundle tasks. - BundleTasks []*BundleTask `locationName:"bundleInstanceTasksSet" locationNameList:"item" type:"list"` - - metadataDescribeBundleTasksOutput `json:"-" xml:"-"` -} - -type metadataDescribeBundleTasksOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeBundleTasksOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeBundleTasksOutput) GoString() string { - return s.String() -} - -type DescribeClassicLinkInstancesInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. - // - // group-id - The ID of a VPC security group that's associated with the instance. - // - // instance-id - The ID of the instance. - // - // tag:key=value - The key/value combination of a tag assigned to the resource. - // - // tag-key - The key of a tag assigned to the resource. This filter is independent - // of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" - // and the filter "tag-value=X", you get any resources assigned both the tag - // key Purpose (regardless of what the tag's value is), and the tag value X - // (regardless of what the tag's key is). If you want to list only resources - // where Purpose is X, see the tag:key=value filter. - // - // tag-value - The value of a tag assigned to the resource. This filter is - // independent of the tag-key filter. - // - // vpc-id - The ID of the VPC that the instance is linked to. - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // One or more instance IDs. Must be instances linked to a VPC through ClassicLink. - InstanceIds []*string `locationName:"InstanceId" locationNameList:"InstanceId" type:"list"` - - // The maximum number of results to return for the request in a single page. - // The remaining results of the initial request can be seen by sending another - // request with the returned NextToken value. This value can be between 5 and - // 1000; if MaxResults is given a value larger than 1000, only 1000 results - // are returned. You cannot specify this parameter and the instance IDs parameter - // in the same request. - // - // Constraint: If the value is greater than 1000, we return only 1000 items. - MaxResults *int64 `locationName:"maxResults" type:"integer"` - - // The token to retrieve the next page of results. - NextToken *string `locationName:"nextToken" type:"string"` - - metadataDescribeClassicLinkInstancesInput `json:"-" xml:"-"` -} - -type metadataDescribeClassicLinkInstancesInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeClassicLinkInstancesInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeClassicLinkInstancesInput) GoString() string { - return s.String() -} - -type DescribeClassicLinkInstancesOutput struct { - // Information about one or more linked EC2-Classic instances. - Instances []*ClassicLinkInstance `locationName:"instancesSet" locationNameList:"item" type:"list"` - - // The token to use to retrieve the next page of results. This value is null - // when there are no more results to return. - NextToken *string `locationName:"nextToken" type:"string"` - - metadataDescribeClassicLinkInstancesOutput `json:"-" xml:"-"` -} - -type metadataDescribeClassicLinkInstancesOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeClassicLinkInstancesOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeClassicLinkInstancesOutput) GoString() string { - return s.String() -} - -type DescribeConversionTasksInput struct { - // One or more conversion task IDs. - ConversionTaskIds []*string `locationName:"conversionTaskId" locationNameList:"item" type:"list"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. - Filters []*Filter `locationName:"filter" locationNameList:"Filter" type:"list"` - - metadataDescribeConversionTasksInput `json:"-" xml:"-"` -} - -type metadataDescribeConversionTasksInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeConversionTasksInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeConversionTasksInput) GoString() string { - return s.String() -} - -type DescribeConversionTasksOutput struct { - // Information about the conversion tasks. - ConversionTasks []*ConversionTask `locationName:"conversionTasks" locationNameList:"item" type:"list"` - - metadataDescribeConversionTasksOutput `json:"-" xml:"-"` -} - -type metadataDescribeConversionTasksOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeConversionTasksOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeConversionTasksOutput) GoString() string { - return s.String() -} - -type DescribeCustomerGatewaysInput struct { - // One or more customer gateway IDs. - // - // Default: Describes all your customer gateways. - CustomerGatewayIds []*string `locationName:"CustomerGatewayId" locationNameList:"CustomerGatewayId" type:"list"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. - // - // bgp-asn - The customer gateway's Border Gateway Protocol (BGP) Autonomous - // System Number (ASN). - // - // customer-gateway-id - The ID of the customer gateway. - // - // ip-address - The IP address of the customer gateway's Internet-routable - // external interface. - // - // state - The state of the customer gateway (pending | available | deleting - // | deleted). - // - // type - The type of customer gateway. Currently, the only supported type - // is ipsec.1. - // - // tag:key=value - The key/value combination of a tag assigned to the resource. - // - // tag-key - The key of a tag assigned to the resource. This filter is independent - // of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" - // and the filter "tag-value=X", you get any resources assigned both the tag - // key Purpose (regardless of what the tag's value is), and the tag value X - // (regardless of what the tag's key is). If you want to list only resources - // where Purpose is X, see the tag:key=value filter. - // - // tag-value - The value of a tag assigned to the resource. This filter is - // independent of the tag-key filter. - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - metadataDescribeCustomerGatewaysInput `json:"-" xml:"-"` -} - -type metadataDescribeCustomerGatewaysInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeCustomerGatewaysInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeCustomerGatewaysInput) GoString() string { - return s.String() -} - -type DescribeCustomerGatewaysOutput struct { - // Information about one or more customer gateways. - CustomerGateways []*CustomerGateway `locationName:"customerGatewaySet" locationNameList:"item" type:"list"` - - metadataDescribeCustomerGatewaysOutput `json:"-" xml:"-"` -} - -type metadataDescribeCustomerGatewaysOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeCustomerGatewaysOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeCustomerGatewaysOutput) GoString() string { - return s.String() -} - -type DescribeDhcpOptionsInput struct { - // The IDs of one or more DHCP options sets. - // - // Default: Describes all your DHCP options sets. - DhcpOptionsIds []*string `locationName:"DhcpOptionsId" locationNameList:"DhcpOptionsId" type:"list"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. - // - // dhcp-options-id - The ID of a set of DHCP options. - // - // key - The key for one of the options (for example, domain-name). - // - // value - The value for one of the options. - // - // tag:key=value - The key/value combination of a tag assigned to the resource. - // - // tag-key - The key of a tag assigned to the resource. This filter is independent - // of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" - // and the filter "tag-value=X", you get any resources assigned both the tag - // key Purpose (regardless of what the tag's value is), and the tag value X - // (regardless of what the tag's key is). If you want to list only resources - // where Purpose is X, see the tag:key=value filter. - // - // tag-value - The value of a tag assigned to the resource. This filter is - // independent of the tag-key filter. - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - metadataDescribeDhcpOptionsInput `json:"-" xml:"-"` -} - -type metadataDescribeDhcpOptionsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeDhcpOptionsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeDhcpOptionsInput) GoString() string { - return s.String() -} - -type DescribeDhcpOptionsOutput struct { - // Information about one or more DHCP options sets. - DhcpOptions []*DhcpOptions `locationName:"dhcpOptionsSet" locationNameList:"item" type:"list"` - - metadataDescribeDhcpOptionsOutput `json:"-" xml:"-"` -} - -type metadataDescribeDhcpOptionsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeDhcpOptionsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeDhcpOptionsOutput) GoString() string { - return s.String() -} - -type DescribeExportTasksInput struct { - // One or more export task IDs. - ExportTaskIds []*string `locationName:"exportTaskId" locationNameList:"ExportTaskId" type:"list"` - - metadataDescribeExportTasksInput `json:"-" xml:"-"` -} - -type metadataDescribeExportTasksInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeExportTasksInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeExportTasksInput) GoString() string { - return s.String() -} - -type DescribeExportTasksOutput struct { - // Information about the export tasks. - ExportTasks []*ExportTask `locationName:"exportTaskSet" locationNameList:"item" type:"list"` - - metadataDescribeExportTasksOutput `json:"-" xml:"-"` -} - -type metadataDescribeExportTasksOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeExportTasksOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeExportTasksOutput) GoString() string { - return s.String() -} - -type DescribeFlowLogsInput struct { - // One or more filters. - // - // deliver-log-status - The status of the logs delivery (SUCCESS | FAILED). - // - // flow-log-id - The ID of the flow log. - // - // log-group-name - The name of the log group. - // - // resource-id - The ID of the VPC, subnet, or network interface. - // - // traffic-type - The type of traffic (ACCEPT | REJECT | ALL) - Filter []*Filter `locationNameList:"Filter" type:"list"` - - // One or more flow log IDs. - FlowLogIds []*string `locationName:"FlowLogId" locationNameList:"item" type:"list"` - - // The maximum number of results to return for the request in a single page. - // The remaining results can be seen by sending another request with the returned - // NextToken value. This value can be between 5 and 1000; if MaxResults is given - // a value larger than 1000, only 1000 results are returned. You cannot specify - // this parameter and the flow log IDs parameter in the same request. - MaxResults *int64 `type:"integer"` - - // The token to retrieve the next page of results. - NextToken *string `type:"string"` - - metadataDescribeFlowLogsInput `json:"-" xml:"-"` -} - -type metadataDescribeFlowLogsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeFlowLogsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeFlowLogsInput) GoString() string { - return s.String() -} - -type DescribeFlowLogsOutput struct { - // Information about the flow logs. - FlowLogs []*FlowLog `locationName:"flowLogSet" locationNameList:"item" type:"list"` - - // The token to use to retrieve the next page of results. This value is null - // when there are no more results to return. - NextToken *string `locationName:"nextToken" type:"string"` - - metadataDescribeFlowLogsOutput `json:"-" xml:"-"` -} - -type metadataDescribeFlowLogsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeFlowLogsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeFlowLogsOutput) GoString() string { - return s.String() -} - -type DescribeHostsInput struct { - // One or more filters. - // - // instance-type - The instance type size that the Dedicated host is configured - // to support. - // - // auto-placement - Whether auto-placement is enabled or disabled (on | off). - // - // host-reservation-id - The ID of the reservation associated with this host. - // - // client-token - The idempotency token you provided when you launched the - // instance - // - // state- The allocation state of the Dedicated host (available | under-assessment - // | permanent-failure | released | released-permanent-failure). - // - // availability-zone - The Availability Zone of the host. - Filter []*Filter `locationName:"filter" locationNameList:"Filter" type:"list"` - - // The IDs of the Dedicated hosts. The IDs are used for targeted instance launches. - HostIds []*string `locationName:"hostId" locationNameList:"item" type:"list"` - - // The maximum number of results to return for the request in a single page. - // The remaining results can be seen by sending another request with the returned - // nextToken value. This value can be between 5 and 500; if maxResults is given - // a larger value than 500, you will receive an error. You cannot specify this - // parameter and the host IDs parameter in the same request. - MaxResults *int64 `locationName:"maxResults" type:"integer"` - - // The token to retrieve the next page of results. - NextToken *string `locationName:"nextToken" type:"string"` - - metadataDescribeHostsInput `json:"-" xml:"-"` -} - -type metadataDescribeHostsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeHostsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeHostsInput) GoString() string { - return s.String() -} - -type DescribeHostsOutput struct { - // Information about the Dedicated hosts. - Hosts []*Host `locationName:"hostSet" locationNameList:"item" type:"list"` - - // The token to use to retrieve the next page of results. This value is null - // when there are no more results to return. - NextToken *string `locationName:"nextToken" type:"string"` - - metadataDescribeHostsOutput `json:"-" xml:"-"` -} - -type metadataDescribeHostsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeHostsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeHostsOutput) GoString() string { - return s.String() -} - -type DescribeIdFormatInput struct { - // The type of resource. - Resource *string `type:"string"` - - metadataDescribeIdFormatInput `json:"-" xml:"-"` -} - -type metadataDescribeIdFormatInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeIdFormatInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeIdFormatInput) GoString() string { - return s.String() -} - -type DescribeIdFormatOutput struct { - // Information about the ID format for the resource. - Statuses []*IdFormat `locationName:"statusSet" locationNameList:"item" type:"list"` - - metadataDescribeIdFormatOutput `json:"-" xml:"-"` -} - -type metadataDescribeIdFormatOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeIdFormatOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeIdFormatOutput) GoString() string { - return s.String() -} - -type DescribeImageAttributeInput struct { - // The AMI attribute. - // - // Note: Depending on your account privileges, the blockDeviceMapping attribute - // may return a Client.AuthFailure error. If this happens, use DescribeImages - // to get information about the block device mapping for the AMI. - Attribute *string `type:"string" required:"true" enum:"ImageAttributeName"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the AMI. - ImageId *string `type:"string" required:"true"` - - metadataDescribeImageAttributeInput `json:"-" xml:"-"` -} - -type metadataDescribeImageAttributeInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeImageAttributeInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeImageAttributeInput) GoString() string { - return s.String() -} - -// Describes an image attribute. -type DescribeImageAttributeOutput struct { - // One or more block device mapping entries. - BlockDeviceMappings []*BlockDeviceMapping `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"` - - // A description for the AMI. - Description *AttributeValue `locationName:"description" type:"structure"` - - // The ID of the AMI. - ImageId *string `locationName:"imageId" type:"string"` - - // The kernel ID. - KernelId *AttributeValue `locationName:"kernel" type:"structure"` - - // One or more launch permissions. - LaunchPermissions []*LaunchPermission `locationName:"launchPermission" locationNameList:"item" type:"list"` - - // One or more product codes. - ProductCodes []*ProductCode `locationName:"productCodes" locationNameList:"item" type:"list"` - - // The RAM disk ID. - RamdiskId *AttributeValue `locationName:"ramdisk" type:"structure"` - - // The value to use for a resource attribute. - SriovNetSupport *AttributeValue `locationName:"sriovNetSupport" type:"structure"` - - metadataDescribeImageAttributeOutput `json:"-" xml:"-"` -} - -type metadataDescribeImageAttributeOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeImageAttributeOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeImageAttributeOutput) GoString() string { - return s.String() -} - -type DescribeImagesInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // Scopes the images by users with explicit launch permissions. Specify an AWS - // account ID, self (the sender of the request), or all (public AMIs). - ExecutableUsers []*string `locationName:"ExecutableBy" locationNameList:"ExecutableBy" type:"list"` - - // One or more filters. - // - // architecture - The image architecture (i386 | x86_64). - // - // block-device-mapping.delete-on-termination - A Boolean value that indicates - // whether the Amazon EBS volume is deleted on instance termination. - // - // block-device-mapping.device-name - The device name for the EBS volume - // (for example, /dev/sdh). - // - // block-device-mapping.snapshot-id - The ID of the snapshot used for the - // EBS volume. - // - // block-device-mapping.volume-size - The volume size of the EBS volume, - // in GiB. - // - // block-device-mapping.volume-type - The volume type of the EBS volume (gp2 - // | standard | io1). - // - // description - The description of the image (provided during image creation). - // - // hypervisor - The hypervisor type (ovm | xen). - // - // image-id - The ID of the image. - // - // image-type - The image type (machine | kernel | ramdisk). - // - // is-public - A Boolean that indicates whether the image is public. - // - // kernel-id - The kernel ID. - // - // manifest-location - The location of the image manifest. - // - // name - The name of the AMI (provided during image creation). - // - // owner-alias - The AWS account alias (for example, amazon). - // - // owner-id - The AWS account ID of the image owner. - // - // platform - The platform. To only list Windows-based AMIs, use windows. - // - // product-code - The product code. - // - // product-code.type - The type of the product code (devpay | marketplace). - // - // ramdisk-id - The RAM disk ID. - // - // root-device-name - The name of the root device volume (for example, /dev/sda1). - // - // root-device-type - The type of the root device volume (ebs | instance-store). - // - // state - The state of the image (available | pending | failed). - // - // state-reason-code - The reason code for the state change. - // - // state-reason-message - The message for the state change. - // - // tag:key=value - The key/value combination of a tag assigned to the resource. - // - // tag-key - The key of a tag assigned to the resource. This filter is independent - // of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" - // and the filter "tag-value=X", you get any resources assigned both the tag - // key Purpose (regardless of what the tag's value is), and the tag value X - // (regardless of what the tag's key is). If you want to list only resources - // where Purpose is X, see the tag:key=value filter. - // - // tag-value - The value of a tag assigned to the resource. This filter is - // independent of the tag-key filter. - // - // virtualization-type - The virtualization type (paravirtual | hvm). - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // One or more image IDs. - // - // Default: Describes all images available to you. - ImageIds []*string `locationName:"ImageId" locationNameList:"ImageId" type:"list"` - - // Filters the images by the owner. Specify an AWS account ID, amazon (owner - // is Amazon), aws-marketplace (owner is AWS Marketplace), self (owner is the - // sender of the request). Omitting this option returns all images for which - // you have launch permissions, regardless of ownership. - Owners []*string `locationName:"Owner" locationNameList:"Owner" type:"list"` - - metadataDescribeImagesInput `json:"-" xml:"-"` -} - -type metadataDescribeImagesInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeImagesInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeImagesInput) GoString() string { - return s.String() -} - -type DescribeImagesOutput struct { - // Information about one or more images. - Images []*Image `locationName:"imagesSet" locationNameList:"item" type:"list"` - - metadataDescribeImagesOutput `json:"-" xml:"-"` -} - -type metadataDescribeImagesOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeImagesOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeImagesOutput) GoString() string { - return s.String() -} - -type DescribeImportImageTasksInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `type:"boolean"` - - // One or more filters. - Filters []*Filter `locationNameList:"Filter" type:"list"` - - // A list of import image task IDs. - ImportTaskIds []*string `locationName:"ImportTaskId" locationNameList:"ImportTaskId" type:"list"` - - // The maximum number of results to return in a single request. - MaxResults *int64 `type:"integer"` - - // A token that indicates the next page of results. - NextToken *string `type:"string"` - - metadataDescribeImportImageTasksInput `json:"-" xml:"-"` -} - -type metadataDescribeImportImageTasksInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeImportImageTasksInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeImportImageTasksInput) GoString() string { - return s.String() -} - -type DescribeImportImageTasksOutput struct { - // A list of zero or more import image tasks that are currently active or were - // completed or canceled in the previous 7 days. - ImportImageTasks []*ImportImageTask `locationName:"importImageTaskSet" locationNameList:"item" type:"list"` - - // The token to use to get the next page of results. This value is null when - // there are no more results to return. - NextToken *string `locationName:"nextToken" type:"string"` - - metadataDescribeImportImageTasksOutput `json:"-" xml:"-"` -} - -type metadataDescribeImportImageTasksOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeImportImageTasksOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeImportImageTasksOutput) GoString() string { - return s.String() -} - -type DescribeImportSnapshotTasksInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `type:"boolean"` - - // One or more filters. - Filters []*Filter `locationNameList:"Filter" type:"list"` - - // A list of import snapshot task IDs. - ImportTaskIds []*string `locationName:"ImportTaskId" locationNameList:"ImportTaskId" type:"list"` - - // The maximum number of results to return in a single request. - MaxResults *int64 `type:"integer"` - - // A token that indicates the next page of results. - NextToken *string `type:"string"` - - metadataDescribeImportSnapshotTasksInput `json:"-" xml:"-"` -} - -type metadataDescribeImportSnapshotTasksInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeImportSnapshotTasksInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeImportSnapshotTasksInput) GoString() string { - return s.String() -} - -type DescribeImportSnapshotTasksOutput struct { - // A list of zero or more import snapshot tasks that are currently active or - // were completed or canceled in the previous 7 days. - ImportSnapshotTasks []*ImportSnapshotTask `locationName:"importSnapshotTaskSet" locationNameList:"item" type:"list"` - - // The token to use to get the next page of results. This value is null when - // there are no more results to return. - NextToken *string `locationName:"nextToken" type:"string"` - - metadataDescribeImportSnapshotTasksOutput `json:"-" xml:"-"` -} - -type metadataDescribeImportSnapshotTasksOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeImportSnapshotTasksOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeImportSnapshotTasksOutput) GoString() string { - return s.String() -} - -type DescribeInstanceAttributeInput struct { - // The instance attribute. - Attribute *string `locationName:"attribute" type:"string" required:"true" enum:"InstanceAttributeName"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the instance. - InstanceId *string `locationName:"instanceId" type:"string" required:"true"` - - metadataDescribeInstanceAttributeInput `json:"-" xml:"-"` -} - -type metadataDescribeInstanceAttributeInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeInstanceAttributeInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeInstanceAttributeInput) GoString() string { - return s.String() -} - -// Describes an instance attribute. -type DescribeInstanceAttributeOutput struct { - // The block device mapping of the instance. - BlockDeviceMappings []*InstanceBlockDeviceMapping `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"` - - // If the value is true, you can't terminate the instance through the Amazon - // EC2 console, CLI, or API; otherwise, you can. - DisableApiTermination *AttributeBooleanValue `locationName:"disableApiTermination" type:"structure"` - - // Indicates whether the instance is optimized for EBS I/O. - EbsOptimized *AttributeBooleanValue `locationName:"ebsOptimized" type:"structure"` - - // The security groups associated with the instance. - Groups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"` - - // The ID of the instance. - InstanceId *string `locationName:"instanceId" type:"string"` - - // Indicates whether an instance stops or terminates when you initiate shutdown - // from the instance (using the operating system command for system shutdown). - InstanceInitiatedShutdownBehavior *AttributeValue `locationName:"instanceInitiatedShutdownBehavior" type:"structure"` - - // The instance type. - InstanceType *AttributeValue `locationName:"instanceType" type:"structure"` - - // The kernel ID. - KernelId *AttributeValue `locationName:"kernel" type:"structure"` - - // A list of product codes. - ProductCodes []*ProductCode `locationName:"productCodes" locationNameList:"item" type:"list"` - - // The RAM disk ID. - RamdiskId *AttributeValue `locationName:"ramdisk" type:"structure"` - - // The name of the root device (for example, /dev/sda1 or /dev/xvda). - RootDeviceName *AttributeValue `locationName:"rootDeviceName" type:"structure"` - - // Indicates whether source/destination checking is enabled. A value of true - // means checking is enabled, and false means checking is disabled. This value - // must be false for a NAT instance to perform NAT. - SourceDestCheck *AttributeBooleanValue `locationName:"sourceDestCheck" type:"structure"` - - // The value to use for a resource attribute. - SriovNetSupport *AttributeValue `locationName:"sriovNetSupport" type:"structure"` - - // The Base64-encoded MIME user data. - UserData *AttributeValue `locationName:"userData" type:"structure"` - - metadataDescribeInstanceAttributeOutput `json:"-" xml:"-"` -} - -type metadataDescribeInstanceAttributeOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeInstanceAttributeOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeInstanceAttributeOutput) GoString() string { - return s.String() -} - -type DescribeInstanceStatusInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. - // - // availability-zone - The Availability Zone of the instance. - // - // event.code - The code for the scheduled event (instance-reboot | system-reboot - // | system-maintenance | instance-retirement | instance-stop). - // - // event.description - A description of the event. - // - // event.not-after - The latest end time for the scheduled event (for example, - // 2014-09-15T17:15:20.000Z). - // - // event.not-before - The earliest start time for the scheduled event (for - // example, 2014-09-15T17:15:20.000Z). - // - // instance-state-code - The code for the instance state, as a 16-bit unsigned - // integer. The high byte is an opaque internal value and should be ignored. - // The low byte is set based on the state represented. The valid values are - // 0 (pending), 16 (running), 32 (shutting-down), 48 (terminated), 64 (stopping), - // and 80 (stopped). - // - // instance-state-name - The state of the instance (pending | running | shutting-down - // | terminated | stopping | stopped). - // - // instance-status.reachability - Filters on instance status where the name - // is reachability (passed | failed | initializing | insufficient-data). - // - // instance-status.status - The status of the instance (ok | impaired | initializing - // | insufficient-data | not-applicable). - // - // system-status.reachability - Filters on system status where the name is - // reachability (passed | failed | initializing | insufficient-data). - // - // system-status.status - The system status of the instance (ok | impaired - // | initializing | insufficient-data | not-applicable). - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // When true, includes the health status for all instances. When false, includes - // the health status for running instances only. - // - // Default: false - IncludeAllInstances *bool `locationName:"includeAllInstances" type:"boolean"` - - // One or more instance IDs. - // - // Default: Describes all your instances. - // - // Constraints: Maximum 100 explicitly specified instance IDs. - InstanceIds []*string `locationName:"InstanceId" locationNameList:"InstanceId" type:"list"` - - // The maximum number of results to return for the request in a single page. - // The remaining results of the initial request can be seen by sending another - // request with the returned NextToken value. This value can be between 5 and - // 1000; if MaxResults is given a value larger than 1000, only 1000 results - // are returned. You cannot specify this parameter and the instance IDs parameter - // in the same request. - MaxResults *int64 `type:"integer"` - - // The token to retrieve the next page of results. - NextToken *string `type:"string"` - - metadataDescribeInstanceStatusInput `json:"-" xml:"-"` -} - -type metadataDescribeInstanceStatusInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeInstanceStatusInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeInstanceStatusInput) GoString() string { - return s.String() -} - -type DescribeInstanceStatusOutput struct { - // One or more instance status descriptions. - InstanceStatuses []*InstanceStatus `locationName:"instanceStatusSet" locationNameList:"item" type:"list"` - - // The token to use to retrieve the next page of results. This value is null - // when there are no more results to return. - NextToken *string `locationName:"nextToken" type:"string"` - - metadataDescribeInstanceStatusOutput `json:"-" xml:"-"` -} - -type metadataDescribeInstanceStatusOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeInstanceStatusOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeInstanceStatusOutput) GoString() string { - return s.String() -} - -type DescribeInstancesInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. - // - // architecture - The instance architecture (i386 | x86_64). - // - // availability-zone - The Availability Zone of the instance. - // - // block-device-mapping.attach-time - The attach time for an EBS volume mapped - // to the instance, for example, 2010-09-15T17:15:20.000Z. - // - // block-device-mapping.delete-on-termination - A Boolean that indicates - // whether the EBS volume is deleted on instance termination. - // - // block-device-mapping.device-name - The device name for the EBS volume - // (for example, /dev/sdh or xvdh). - // - // block-device-mapping.status - The status for the EBS volume (attaching - // | attached | detaching | detached). - // - // block-device-mapping.volume-id - The volume ID of the EBS volume. - // - // client-token - The idempotency token you provided when you launched the - // instance. - // - // dns-name - The public DNS name of the instance. - // - // group-id - The ID of the security group for the instance. EC2-Classic - // only. - // - // group-name - The name of the security group for the instance. EC2-Classic - // only. - // - // hypervisor - The hypervisor type of the instance (ovm | xen). - // - // iam-instance-profile.arn - The instance profile associated with the instance. - // Specified as an ARN. - // - // image-id - The ID of the image used to launch the instance. - // - // instance-id - The ID of the instance. - // - // instance-lifecycle - Indicates whether this is a Spot Instance (spot). - // - // instance-state-code - The state of the instance, as a 16-bit unsigned - // integer. The high byte is an opaque internal value and should be ignored. - // The low byte is set based on the state represented. The valid values are: - // 0 (pending), 16 (running), 32 (shutting-down), 48 (terminated), 64 (stopping), - // and 80 (stopped). - // - // instance-state-name - The state of the instance (pending | running | shutting-down - // | terminated | stopping | stopped). - // - // instance-type - The type of instance (for example, t2.micro). - // - // instance.group-id - The ID of the security group for the instance. - // - // instance.group-name - The name of the security group for the instance. - // - // ip-address - The public IP address of the instance. - // - // kernel-id - The kernel ID. - // - // key-name - The name of the key pair used when the instance was launched. - // - // launch-index - When launching multiple instances, this is the index for - // the instance in the launch group (for example, 0, 1, 2, and so on). - // - // launch-time - The time when the instance was launched. - // - // monitoring-state - Indicates whether monitoring is enabled for the instance - // (disabled | enabled). - // - // owner-id - The AWS account ID of the instance owner. - // - // placement-group-name - The name of the placement group for the instance. - // - // platform - The platform. Use windows if you have Windows instances; otherwise, - // leave blank. - // - // private-dns-name - The private DNS name of the instance. - // - // private-ip-address - The private IP address of the instance. - // - // product-code - The product code associated with the AMI used to launch - // the instance. - // - // product-code.type - The type of product code (devpay | marketplace). - // - // ramdisk-id - The RAM disk ID. - // - // reason - The reason for the current state of the instance (for example, - // shows "User Initiated [date]" when you stop or terminate the instance). Similar - // to the state-reason-code filter. - // - // requester-id - The ID of the entity that launched the instance on your - // behalf (for example, AWS Management Console, Auto Scaling, and so on). - // - // reservation-id - The ID of the instance's reservation. A reservation ID - // is created any time you launch an instance. A reservation ID has a one-to-one - // relationship with an instance launch request, but can be associated with - // more than one instance if you launch multiple instances using the same launch - // request. For example, if you launch one instance, you'll get one reservation - // ID. If you launch ten instances using the same launch request, you'll also - // get one reservation ID. - // - // root-device-name - The name of the root device for the instance (for example, - // /dev/sda1 or /dev/xvda). - // - // root-device-type - The type of root device that the instance uses (ebs - // | instance-store). - // - // source-dest-check - Indicates whether the instance performs source/destination - // checking. A value of true means that checking is enabled, and false means - // checking is disabled. The value must be false for the instance to perform - // network address translation (NAT) in your VPC. - // - // spot-instance-request-id - The ID of the Spot instance request. - // - // state-reason-code - The reason code for the state change. - // - // state-reason-message - A message that describes the state change. - // - // subnet-id - The ID of the subnet for the instance. - // - // tag:key=value - The key/value combination of a tag assigned to the resource, - // where tag:key is the tag's key. - // - // tag-key - The key of a tag assigned to the resource. This filter is independent - // of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" - // and the filter "tag-value=X", you get any resources assigned both the tag - // key Purpose (regardless of what the tag's value is), and the tag value X - // (regardless of what the tag's key is). If you want to list only resources - // where Purpose is X, see the tag:key=value filter. - // - // tag-value - The value of a tag assigned to the resource. This filter is - // independent of the tag-key filter. - // - // tenancy - The tenancy of an instance (dedicated | default). - // - // virtualization-type - The virtualization type of the instance (paravirtual - // | hvm). - // - // vpc-id - The ID of the VPC that the instance is running in. - // - // network-interface.description - The description of the network interface. - // - // network-interface.subnet-id - The ID of the subnet for the network interface. - // - // network-interface.vpc-id - The ID of the VPC for the network interface. - // - // network-interface.network-interface-id - The ID of the network interface. - // - // network-interface.owner-id - The ID of the owner of the network interface. - // - // network-interface.availability-zone - The Availability Zone for the network - // interface. - // - // network-interface.requester-id - The requester ID for the network interface. - // - // network-interface.requester-managed - Indicates whether the network interface - // is being managed by AWS. - // - // network-interface.status - The status of the network interface (available) - // | in-use). - // - // network-interface.mac-address - The MAC address of the network interface. - // - // network-interface-private-dns-name - The private DNS name of the network - // interface. - // - // network-interface.source-dest-check - Whether the network interface performs - // source/destination checking. A value of true means checking is enabled, and - // false means checking is disabled. The value must be false for the network - // interface to perform network address translation (NAT) in your VPC. - // - // network-interface.group-id - The ID of a security group associated with - // the network interface. - // - // network-interface.group-name - The name of a security group associated - // with the network interface. - // - // network-interface.attachment.attachment-id - The ID of the interface attachment. - // - // network-interface.attachment.instance-id - The ID of the instance to which - // the network interface is attached. - // - // network-interface.attachment.instance-owner-id - The owner ID of the instance - // to which the network interface is attached. - // - // network-interface.addresses.private-ip-address - The private IP address - // associated with the network interface. - // - // network-interface.attachment.device-index - The device index to which - // the network interface is attached. - // - // network-interface.attachment.status - The status of the attachment (attaching - // | attached | detaching | detached). - // - // network-interface.attachment.attach-time - The time that the network interface - // was attached to an instance. - // - // network-interface.attachment.delete-on-termination - Specifies whether - // the attachment is deleted when an instance is terminated. - // - // network-interface.addresses.primary - Specifies whether the IP address - // of the network interface is the primary private IP address. - // - // network-interface.addresses.association.public-ip - The ID of the association - // of an Elastic IP address with a network interface. - // - // network-interface.addresses.association.ip-owner-id - The owner ID of - // the private IP address associated with the network interface. - // - // association.public-ip - The address of the Elastic IP address bound to - // the network interface. - // - // association.ip-owner-id - The owner of the Elastic IP address associated - // with the network interface. - // - // association.allocation-id - The allocation ID returned when you allocated - // the Elastic IP address for your network interface. - // - // association.association-id - The association ID returned when the network - // interface was associated with an IP address. - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // One or more instance IDs. - // - // Default: Describes all your instances. - InstanceIds []*string `locationName:"InstanceId" locationNameList:"InstanceId" type:"list"` - - // The maximum number of results to return for the request in a single page. - // The remaining results of the initial request can be seen by sending another - // request with the returned NextToken value. This value can be between 5 and - // 1000; if MaxResults is given a value larger than 1000, only 1000 results - // are returned. You cannot specify this parameter and the instance IDs parameter - // in the same request. - MaxResults *int64 `locationName:"maxResults" type:"integer"` - - // The token to request the next page of results. - NextToken *string `locationName:"nextToken" type:"string"` - - metadataDescribeInstancesInput `json:"-" xml:"-"` -} - -type metadataDescribeInstancesInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeInstancesInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeInstancesInput) GoString() string { - return s.String() -} - -type DescribeInstancesOutput struct { - // The token to use to retrieve the next page of results. This value is null - // when there are no more results to return. - NextToken *string `locationName:"nextToken" type:"string"` - - // Zero or more reservations. - Reservations []*Reservation `locationName:"reservationSet" locationNameList:"item" type:"list"` - - metadataDescribeInstancesOutput `json:"-" xml:"-"` -} - -type metadataDescribeInstancesOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeInstancesOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeInstancesOutput) GoString() string { - return s.String() -} - -type DescribeInternetGatewaysInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. - // - // attachment.state - The current state of the attachment between the gateway - // and the VPC (available). Present only if a VPC is attached. - // - // attachment.vpc-id - The ID of an attached VPC. - // - // internet-gateway-id - The ID of the Internet gateway. - // - // tag:key=value - The key/value combination of a tag assigned to the resource. - // - // tag-key - The key of a tag assigned to the resource. This filter is independent - // of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" - // and the filter "tag-value=X", you get any resources assigned both the tag - // key Purpose (regardless of what the tag's value is), and the tag value X - // (regardless of what the tag's key is). If you want to list only resources - // where Purpose is X, see the tag:key=value filter. - // - // tag-value - The value of a tag assigned to the resource. This filter is - // independent of the tag-key filter. - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // One or more Internet gateway IDs. - // - // Default: Describes all your Internet gateways. - InternetGatewayIds []*string `locationName:"internetGatewayId" locationNameList:"item" type:"list"` - - metadataDescribeInternetGatewaysInput `json:"-" xml:"-"` -} - -type metadataDescribeInternetGatewaysInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeInternetGatewaysInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeInternetGatewaysInput) GoString() string { - return s.String() -} - -type DescribeInternetGatewaysOutput struct { - // Information about one or more Internet gateways. - InternetGateways []*InternetGateway `locationName:"internetGatewaySet" locationNameList:"item" type:"list"` - - metadataDescribeInternetGatewaysOutput `json:"-" xml:"-"` -} - -type metadataDescribeInternetGatewaysOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeInternetGatewaysOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeInternetGatewaysOutput) GoString() string { - return s.String() -} - -type DescribeKeyPairsInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. - // - // fingerprint - The fingerprint of the key pair. - // - // key-name - The name of the key pair. - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // One or more key pair names. - // - // Default: Describes all your key pairs. - KeyNames []*string `locationName:"KeyName" locationNameList:"KeyName" type:"list"` - - metadataDescribeKeyPairsInput `json:"-" xml:"-"` -} - -type metadataDescribeKeyPairsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeKeyPairsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeKeyPairsInput) GoString() string { - return s.String() -} - -type DescribeKeyPairsOutput struct { - // Information about one or more key pairs. - KeyPairs []*KeyPairInfo `locationName:"keySet" locationNameList:"item" type:"list"` - - metadataDescribeKeyPairsOutput `json:"-" xml:"-"` -} - -type metadataDescribeKeyPairsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeKeyPairsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeKeyPairsOutput) GoString() string { - return s.String() -} - -type DescribeMovingAddressesInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. - // - // moving-status - The status of the Elastic IP address (MovingToVpc | RestoringToClassic). - Filters []*Filter `locationName:"filter" locationNameList:"Filter" type:"list"` - - // The maximum number of results to return for the request in a single page. - // The remaining results of the initial request can be seen by sending another - // request with the returned NextToken value. This value can be between 5 and - // 1000; if MaxResults is given a value outside of this range, an error is returned. - // - // Default: If no value is provided, the default is 1000. - MaxResults *int64 `locationName:"maxResults" type:"integer"` - - // The token to use to retrieve the next page of results. - NextToken *string `locationName:"nextToken" type:"string"` - - // One or more Elastic IP addresses. - PublicIps []*string `locationName:"publicIp" locationNameList:"item" type:"list"` - - metadataDescribeMovingAddressesInput `json:"-" xml:"-"` -} - -type metadataDescribeMovingAddressesInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeMovingAddressesInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeMovingAddressesInput) GoString() string { - return s.String() -} - -type DescribeMovingAddressesOutput struct { - // The status for each Elastic IP address. - MovingAddressStatuses []*MovingAddressStatus `locationName:"movingAddressStatusSet" locationNameList:"item" type:"list"` - - // The token to use to retrieve the next page of results. This value is null - // when there are no more results to return. - NextToken *string `locationName:"nextToken" type:"string"` - - metadataDescribeMovingAddressesOutput `json:"-" xml:"-"` -} - -type metadataDescribeMovingAddressesOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeMovingAddressesOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeMovingAddressesOutput) GoString() string { - return s.String() -} - -type DescribeNetworkAclsInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. - // - // association.association-id - The ID of an association ID for the ACL. - // - // association.network-acl-id - The ID of the network ACL involved in the - // association. - // - // association.subnet-id - The ID of the subnet involved in the association. - // - // default - Indicates whether the ACL is the default network ACL for the - // VPC. - // - // entry.cidr - The CIDR range specified in the entry. - // - // entry.egress - Indicates whether the entry applies to egress traffic. - // - // entry.icmp.code - The ICMP code specified in the entry, if any. - // - // entry.icmp.type - The ICMP type specified in the entry, if any. - // - // entry.port-range.from - The start of the port range specified in the entry. - // - // entry.port-range.to - The end of the port range specified in the entry. - // - // entry.protocol - The protocol specified in the entry (tcp | udp | icmp - // or a protocol number). - // - // entry.rule-action - Allows or denies the matching traffic (allow | deny). - // - // entry.rule-number - The number of an entry (in other words, rule) in the - // ACL's set of entries. - // - // network-acl-id - The ID of the network ACL. - // - // tag:key=value - The key/value combination of a tag assigned to the resource. - // - // tag-key - The key of a tag assigned to the resource. This filter is independent - // of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" - // and the filter "tag-value=X", you get any resources assigned both the tag - // key Purpose (regardless of what the tag's value is), and the tag value X - // (regardless of what the tag's key is). If you want to list only resources - // where Purpose is X, see the tag:key=value filter. - // - // tag-value - The value of a tag assigned to the resource. This filter is - // independent of the tag-key filter. - // - // vpc-id - The ID of the VPC for the network ACL. - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // One or more network ACL IDs. - // - // Default: Describes all your network ACLs. - NetworkAclIds []*string `locationName:"NetworkAclId" locationNameList:"item" type:"list"` - - metadataDescribeNetworkAclsInput `json:"-" xml:"-"` -} - -type metadataDescribeNetworkAclsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeNetworkAclsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeNetworkAclsInput) GoString() string { - return s.String() -} - -type DescribeNetworkAclsOutput struct { - // Information about one or more network ACLs. - NetworkAcls []*NetworkAcl `locationName:"networkAclSet" locationNameList:"item" type:"list"` - - metadataDescribeNetworkAclsOutput `json:"-" xml:"-"` -} - -type metadataDescribeNetworkAclsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeNetworkAclsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeNetworkAclsOutput) GoString() string { - return s.String() -} - -type DescribeNetworkInterfaceAttributeInput struct { - // The attribute of the network interface. - Attribute *string `locationName:"attribute" type:"string" enum:"NetworkInterfaceAttribute"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the network interface. - NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string" required:"true"` - - metadataDescribeNetworkInterfaceAttributeInput `json:"-" xml:"-"` -} - -type metadataDescribeNetworkInterfaceAttributeInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeNetworkInterfaceAttributeInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeNetworkInterfaceAttributeInput) GoString() string { - return s.String() -} - -type DescribeNetworkInterfaceAttributeOutput struct { - // The attachment (if any) of the network interface. - Attachment *NetworkInterfaceAttachment `locationName:"attachment" type:"structure"` - - // The description of the network interface. - Description *AttributeValue `locationName:"description" type:"structure"` - - // The security groups associated with the network interface. - Groups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"` - - // The ID of the network interface. - NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"` - - // Indicates whether source/destination checking is enabled. - SourceDestCheck *AttributeBooleanValue `locationName:"sourceDestCheck" type:"structure"` - - metadataDescribeNetworkInterfaceAttributeOutput `json:"-" xml:"-"` -} - -type metadataDescribeNetworkInterfaceAttributeOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeNetworkInterfaceAttributeOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeNetworkInterfaceAttributeOutput) GoString() string { - return s.String() -} - -type DescribeNetworkInterfacesInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. - // - // addresses.private-ip-address - The private IP addresses associated with - // the network interface. - // - // addresses.primary - Whether the private IP address is the primary IP address - // associated with the network interface. - // - // addresses.association.public-ip - The association ID returned when the - // network interface was associated with the Elastic IP address. - // - // addresses.association.owner-id - The owner ID of the addresses associated - // with the network interface. - // - // association.association-id - The association ID returned when the network - // interface was associated with an IP address. - // - // association.allocation-id - The allocation ID returned when you allocated - // the Elastic IP address for your network interface. - // - // association.ip-owner-id - The owner of the Elastic IP address associated - // with the network interface. - // - // association.public-ip - The address of the Elastic IP address bound to - // the network interface. - // - // association.public-dns-name - The public DNS name for the network interface. - // - // attachment.attachment-id - The ID of the interface attachment. - // - // attachment.instance-id - The ID of the instance to which the network interface - // is attached. - // - // attachment.instance-owner-id - The owner ID of the instance to which the - // network interface is attached. - // - // attachment.device-index - The device index to which the network interface - // is attached. - // - // attachment.status - The status of the attachment (attaching | attached - // | detaching | detached). - // - // attachment.attach.time - The time that the network interface was attached - // to an instance. - // - // attachment.delete-on-termination - Indicates whether the attachment is - // deleted when an instance is terminated. - // - // availability-zone - The Availability Zone of the network interface. - // - // description - The description of the network interface. - // - // group-id - The ID of a security group associated with the network interface. - // - // group-name - The name of a security group associated with the network - // interface. - // - // mac-address - The MAC address of the network interface. - // - // network-interface-id - The ID of the network interface. - // - // owner-id - The AWS account ID of the network interface owner. - // - // private-ip-address - The private IP address or addresses of the network - // interface. - // - // private-dns-name - The private DNS name of the network interface. - // - // requester-id - The ID of the entity that launched the instance on your - // behalf (for example, AWS Management Console, Auto Scaling, and so on). - // - // requester-managed - Indicates whether the network interface is being managed - // by an AWS service (for example, AWS Management Console, Auto Scaling, and - // so on). - // - // source-desk-check - Indicates whether the network interface performs source/destination - // checking. A value of true means checking is enabled, and false means checking - // is disabled. The value must be false for the network interface to perform - // Network Address Translation (NAT) in your VPC. - // - // status - The status of the network interface. If the network interface - // is not attached to an instance, the status is available; if a network interface - // is attached to an instance the status is in-use. - // - // subnet-id - The ID of the subnet for the network interface. - // - // tag:key=value - The key/value combination of a tag assigned to the resource. - // - // tag-key - The key of a tag assigned to the resource. This filter is independent - // of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" - // and the filter "tag-value=X", you get any resources assigned both the tag - // key Purpose (regardless of what the tag's value is), and the tag value X - // (regardless of what the tag's key is). If you want to list only resources - // where Purpose is X, see the tag:key=value filter. - // - // tag-value - The value of a tag assigned to the resource. This filter is - // independent of the tag-key filter. - // - // vpc-id - The ID of the VPC for the network interface. - Filters []*Filter `locationName:"filter" locationNameList:"Filter" type:"list"` - - // One or more network interface IDs. - // - // Default: Describes all your network interfaces. - NetworkInterfaceIds []*string `locationName:"NetworkInterfaceId" locationNameList:"item" type:"list"` - - metadataDescribeNetworkInterfacesInput `json:"-" xml:"-"` -} - -type metadataDescribeNetworkInterfacesInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeNetworkInterfacesInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeNetworkInterfacesInput) GoString() string { - return s.String() -} - -type DescribeNetworkInterfacesOutput struct { - // Information about one or more network interfaces. - NetworkInterfaces []*NetworkInterface `locationName:"networkInterfaceSet" locationNameList:"item" type:"list"` - - metadataDescribeNetworkInterfacesOutput `json:"-" xml:"-"` -} - -type metadataDescribeNetworkInterfacesOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeNetworkInterfacesOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeNetworkInterfacesOutput) GoString() string { - return s.String() -} - -type DescribePlacementGroupsInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. - // - // group-name - The name of the placement group. - // - // state - The state of the placement group (pending | available | deleting - // | deleted). - // - // strategy - The strategy of the placement group (cluster). - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // One or more placement group names. - // - // Default: Describes all your placement groups, or only those otherwise specified. - GroupNames []*string `locationName:"groupName" type:"list"` - - metadataDescribePlacementGroupsInput `json:"-" xml:"-"` -} - -type metadataDescribePlacementGroupsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribePlacementGroupsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribePlacementGroupsInput) GoString() string { - return s.String() -} - -type DescribePlacementGroupsOutput struct { - // One or more placement groups. - PlacementGroups []*PlacementGroup `locationName:"placementGroupSet" locationNameList:"item" type:"list"` - - metadataDescribePlacementGroupsOutput `json:"-" xml:"-"` -} - -type metadataDescribePlacementGroupsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribePlacementGroupsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribePlacementGroupsOutput) GoString() string { - return s.String() -} - -type DescribePrefixListsInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `type:"boolean"` - - // One or more filters. - // - // prefix-list-id: The ID of a prefix list. - // - // prefix-list-name: The name of a prefix list. - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // The maximum number of items to return for this request. The request returns - // a token that you can specify in a subsequent call to get the next set of - // results. - // - // Constraint: If the value specified is greater than 1000, we return only - // 1000 items. - MaxResults *int64 `type:"integer"` - - // The token for the next set of items to return. (You received this token from - // a prior call.) - NextToken *string `type:"string"` - - // One or more prefix list IDs. - PrefixListIds []*string `locationName:"PrefixListId" locationNameList:"item" type:"list"` - - metadataDescribePrefixListsInput `json:"-" xml:"-"` -} - -type metadataDescribePrefixListsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribePrefixListsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribePrefixListsInput) GoString() string { - return s.String() -} - -type DescribePrefixListsOutput struct { - // The token to use when requesting the next set of items. If there are no additional - // items to return, the string is empty. - NextToken *string `locationName:"nextToken" type:"string"` - - // All available prefix lists. - PrefixLists []*PrefixList `locationName:"prefixListSet" locationNameList:"item" type:"list"` - - metadataDescribePrefixListsOutput `json:"-" xml:"-"` -} - -type metadataDescribePrefixListsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribePrefixListsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribePrefixListsOutput) GoString() string { - return s.String() -} - -type DescribeRegionsInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. - // - // endpoint - The endpoint of the region (for example, ec2.us-east-1.amazonaws.com). - // - // region-name - The name of the region (for example, us-east-1). - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // The names of one or more regions. - RegionNames []*string `locationName:"RegionName" locationNameList:"RegionName" type:"list"` - - metadataDescribeRegionsInput `json:"-" xml:"-"` -} - -type metadataDescribeRegionsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeRegionsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeRegionsInput) GoString() string { - return s.String() -} - -type DescribeRegionsOutput struct { - // Information about one or more regions. - Regions []*Region `locationName:"regionInfo" locationNameList:"item" type:"list"` - - metadataDescribeRegionsOutput `json:"-" xml:"-"` -} - -type metadataDescribeRegionsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeRegionsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeRegionsOutput) GoString() string { - return s.String() -} - -type DescribeReservedInstancesInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. - // - // availability-zone - The Availability Zone where the Reserved instance - // can be used. - // - // duration - The duration of the Reserved instance (one year or three years), - // in seconds (31536000 | 94608000). - // - // end - The time when the Reserved instance expires (for example, 2015-08-07T11:54:42.000Z). - // - // fixed-price - The purchase price of the Reserved instance (for example, - // 9800.0). - // - // instance-type - The instance type on which the Reserved instance can be - // used. - // - // product-description - The Reserved instance product platform description. - // Instances that include (Amazon VPC) in the product platform description will - // only be displayed to EC2-Classic account holders and are for use with Amazon - // VPC. (Linux/UNIX | Linux/UNIX (Amazon VPC) | SUSE Linux | SUSE Linux (Amazon - // VPC) | Red Hat Enterprise Linux | Red Hat Enterprise Linux (Amazon VPC) | - // Windows | Windows (Amazon VPC) | Windows with SQL Server Standard | Windows - // with SQL Server Standard (Amazon VPC) | Windows with SQL Server Web | Windows - // with SQL Server Web (Amazon VPC) | Windows with SQL Server Enterprise | Windows - // with SQL Server Enterprise (Amazon VPC)). - // - // reserved-instances-id - The ID of the Reserved instance. - // - // start - The time at which the Reserved instance purchase request was placed - // (for example, 2014-08-07T11:54:42.000Z). - // - // state - The state of the Reserved instance (payment-pending | active | - // payment-failed | retired). - // - // tag:key=value - The key/value combination of a tag assigned to the resource. - // - // tag-key - The key of a tag assigned to the resource. This filter is independent - // of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" - // and the filter "tag-value=X", you get any resources assigned both the tag - // key Purpose (regardless of what the tag's value is), and the tag value X - // (regardless of what the tag's key is). If you want to list only resources - // where Purpose is X, see the tag:key=value filter. - // - // tag-value - The value of a tag assigned to the resource. This filter is - // independent of the tag-key filter. - // - // usage-price - The usage price of the Reserved instance, per hour (for - // example, 0.84). - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // The Reserved instance offering type. If you are using tools that predate - // the 2011-11-01 API version, you only have access to the Medium Utilization - // Reserved instance offering type. - OfferingType *string `locationName:"offeringType" type:"string" enum:"OfferingTypeValues"` - - // One or more Reserved instance IDs. - // - // Default: Describes all your Reserved instances, or only those otherwise - // specified. - ReservedInstancesIds []*string `locationName:"ReservedInstancesId" locationNameList:"ReservedInstancesId" type:"list"` - - metadataDescribeReservedInstancesInput `json:"-" xml:"-"` -} - -type metadataDescribeReservedInstancesInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeReservedInstancesInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeReservedInstancesInput) GoString() string { - return s.String() -} - -type DescribeReservedInstancesListingsInput struct { - // One or more filters. - // - // reserved-instances-id - The ID of the Reserved instances. - // - // reserved-instances-listing-id - The ID of the Reserved instances listing. - // - // status - The status of the Reserved instance listing (pending | active - // | cancelled | closed). - // - // status-message - The reason for the status. - Filters []*Filter `locationName:"filters" locationNameList:"Filter" type:"list"` - - // One or more Reserved instance IDs. - ReservedInstancesId *string `locationName:"reservedInstancesId" type:"string"` - - // One or more Reserved instance Listing IDs. - ReservedInstancesListingId *string `locationName:"reservedInstancesListingId" type:"string"` - - metadataDescribeReservedInstancesListingsInput `json:"-" xml:"-"` -} - -type metadataDescribeReservedInstancesListingsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeReservedInstancesListingsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeReservedInstancesListingsInput) GoString() string { - return s.String() -} - -type DescribeReservedInstancesListingsOutput struct { - // Information about the Reserved instance listing. - ReservedInstancesListings []*ReservedInstancesListing `locationName:"reservedInstancesListingsSet" locationNameList:"item" type:"list"` - - metadataDescribeReservedInstancesListingsOutput `json:"-" xml:"-"` -} - -type metadataDescribeReservedInstancesListingsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeReservedInstancesListingsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeReservedInstancesListingsOutput) GoString() string { - return s.String() -} - -type DescribeReservedInstancesModificationsInput struct { - // One or more filters. - // - // client-token - The idempotency token for the modification request. - // - // create-date - The time when the modification request was created. - // - // effective-date - The time when the modification becomes effective. - // - // modification-result.reserved-instances-id - The ID for the Reserved instances - // created as part of the modification request. This ID is only available when - // the status of the modification is fulfilled. - // - // modification-result.target-configuration.availability-zone - The Availability - // Zone for the new Reserved instances. - // - // modification-result.target-configuration.instance-count - The number - // of new Reserved instances. - // - // modification-result.target-configuration.instance-type - The instance - // type of the new Reserved instances. - // - // modification-result.target-configuration.platform - The network platform - // of the new Reserved instances (EC2-Classic | EC2-VPC). - // - // reserved-instances-id - The ID of the Reserved instances modified. - // - // reserved-instances-modification-id - The ID of the modification request. - // - // status - The status of the Reserved instances modification request (processing - // | fulfilled | failed). - // - // status-message - The reason for the status. - // - // update-date - The time when the modification request was last updated. - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // The token to retrieve the next page of results. - NextToken *string `locationName:"nextToken" type:"string"` - - // IDs for the submitted modification request. - ReservedInstancesModificationIds []*string `locationName:"ReservedInstancesModificationId" locationNameList:"ReservedInstancesModificationId" type:"list"` - - metadataDescribeReservedInstancesModificationsInput `json:"-" xml:"-"` -} - -type metadataDescribeReservedInstancesModificationsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeReservedInstancesModificationsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeReservedInstancesModificationsInput) GoString() string { - return s.String() -} - -type DescribeReservedInstancesModificationsOutput struct { - // The token to use to retrieve the next page of results. This value is null - // when there are no more results to return. - NextToken *string `locationName:"nextToken" type:"string"` - - // The Reserved instance modification information. - ReservedInstancesModifications []*ReservedInstancesModification `locationName:"reservedInstancesModificationsSet" locationNameList:"item" type:"list"` - - metadataDescribeReservedInstancesModificationsOutput `json:"-" xml:"-"` -} - -type metadataDescribeReservedInstancesModificationsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeReservedInstancesModificationsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeReservedInstancesModificationsOutput) GoString() string { - return s.String() -} - -type DescribeReservedInstancesOfferingsInput struct { - // The Availability Zone in which the Reserved instance can be used. - AvailabilityZone *string `type:"string"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. - // - // availability-zone - The Availability Zone where the Reserved instance - // can be used. - // - // duration - The duration of the Reserved instance (for example, one year - // or three years), in seconds (31536000 | 94608000). - // - // fixed-price - The purchase price of the Reserved instance (for example, - // 9800.0). - // - // instance-type - The instance type on which the Reserved instance can be - // used. - // - // marketplace - Set to true to show only Reserved Instance Marketplace offerings. - // When this filter is not used, which is the default behavior, all offerings - // from AWS and Reserved Instance Marketplace are listed. - // - // product-description - The Reserved instance product platform description. - // Instances that include (Amazon VPC) in the product platform description will - // only be displayed to EC2-Classic account holders and are for use with Amazon - // VPC. (Linux/UNIX | Linux/UNIX (Amazon VPC) | SUSE Linux | SUSE Linux (Amazon - // VPC) | Red Hat Enterprise Linux | Red Hat Enterprise Linux (Amazon VPC) | - // Windows | Windows (Amazon VPC) | Windows with SQL Server Standard | Windows - // with SQL Server Standard (Amazon VPC) | Windows with SQL Server Web | Windows - // with SQL Server Web (Amazon VPC) | Windows with SQL Server Enterprise | Windows - // with SQL Server Enterprise (Amazon VPC)) - // - // reserved-instances-offering-id - The Reserved instances offering ID. - // - // usage-price - The usage price of the Reserved instance, per hour (for - // example, 0.84). - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // Include Reserved Instance Marketplace offerings in the response. - IncludeMarketplace *bool `type:"boolean"` - - // The tenancy of the Reserved instance offering. A Reserved instance with dedicated - // tenancy is applied to instances that run on single-tenant hardware and can - // only be launched within a VPC. - // - // Default: default - InstanceTenancy *string `locationName:"instanceTenancy" type:"string" enum:"Tenancy"` - - // The instance type on which the Reserved instance can be used. For more information, - // see Instance Types (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) - // in the Amazon Elastic Compute Cloud User Guide. - InstanceType *string `type:"string" enum:"InstanceType"` - - // The maximum duration (in seconds) to filter when searching for offerings. - // - // Default: 94608000 (3 years) - MaxDuration *int64 `type:"long"` - - // The maximum number of instances to filter when searching for offerings. - // - // Default: 20 - MaxInstanceCount *int64 `type:"integer"` - - // The maximum number of results to return for the request in a single page. - // The remaining results of the initial request can be seen by sending another - // request with the returned NextToken value. The maximum is 100. - // - // Default: 100 - MaxResults *int64 `locationName:"maxResults" type:"integer"` - - // The minimum duration (in seconds) to filter when searching for offerings. - // - // Default: 2592000 (1 month) - MinDuration *int64 `type:"long"` - - // The token to retrieve the next page of results. - NextToken *string `locationName:"nextToken" type:"string"` - - // The Reserved instance offering type. If you are using tools that predate - // the 2011-11-01 API version, you only have access to the Medium Utilization - // Reserved instance offering type. - OfferingType *string `locationName:"offeringType" type:"string" enum:"OfferingTypeValues"` - - // The Reserved instance product platform description. Instances that include - // (Amazon VPC) in the description are for use with Amazon VPC. - ProductDescription *string `type:"string" enum:"RIProductDescription"` - - // One or more Reserved instances offering IDs. - ReservedInstancesOfferingIds []*string `locationName:"ReservedInstancesOfferingId" type:"list"` - - metadataDescribeReservedInstancesOfferingsInput `json:"-" xml:"-"` -} - -type metadataDescribeReservedInstancesOfferingsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeReservedInstancesOfferingsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeReservedInstancesOfferingsInput) GoString() string { - return s.String() -} - -type DescribeReservedInstancesOfferingsOutput struct { - // The token to use to retrieve the next page of results. This value is null - // when there are no more results to return. - NextToken *string `locationName:"nextToken" type:"string"` - - // A list of Reserved instances offerings. - ReservedInstancesOfferings []*ReservedInstancesOffering `locationName:"reservedInstancesOfferingsSet" locationNameList:"item" type:"list"` - - metadataDescribeReservedInstancesOfferingsOutput `json:"-" xml:"-"` -} - -type metadataDescribeReservedInstancesOfferingsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeReservedInstancesOfferingsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeReservedInstancesOfferingsOutput) GoString() string { - return s.String() -} - -type DescribeReservedInstancesOutput struct { - // A list of Reserved instances. - ReservedInstances []*ReservedInstances `locationName:"reservedInstancesSet" locationNameList:"item" type:"list"` - - metadataDescribeReservedInstancesOutput `json:"-" xml:"-"` -} - -type metadataDescribeReservedInstancesOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeReservedInstancesOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeReservedInstancesOutput) GoString() string { - return s.String() -} - -type DescribeRouteTablesInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. - // - // association.route-table-association-id - The ID of an association ID for - // the route table. - // - // association.route-table-id - The ID of the route table involved in the - // association. - // - // association.subnet-id - The ID of the subnet involved in the association. - // - // association.main - Indicates whether the route table is the main route - // table for the VPC (true | false). - // - // route-table-id - The ID of the route table. - // - // route.destination-cidr-block - The CIDR range specified in a route in - // the table. - // - // route.destination-prefix-list-id - The ID (prefix) of the AWS service - // specified in a route in the table. - // - // route.gateway-id - The ID of a gateway specified in a route in the table. - // - // route.instance-id - The ID of an instance specified in a route in the - // table. - // - // route.origin - Describes how the route was created. CreateRouteTable indicates - // that the route was automatically created when the route table was created; - // CreateRoute indicates that the route was manually added to the route table; - // EnableVgwRoutePropagation indicates that the route was propagated by route - // propagation. - // - // route.state - The state of a route in the route table (active | blackhole). - // The blackhole state indicates that the route's target isn't available (for - // example, the specified gateway isn't attached to the VPC, the specified NAT - // instance has been terminated, and so on). - // - // route.vpc-peering-connection-id - The ID of a VPC peering connection specified - // in a route in the table. - // - // tag:key=value - The key/value combination of a tag assigned to the resource. - // - // tag-key - The key of a tag assigned to the resource. This filter is independent - // of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" - // and the filter "tag-value=X", you get any resources assigned both the tag - // key Purpose (regardless of what the tag's value is), and the tag value X - // (regardless of what the tag's key is). If you want to list only resources - // where Purpose is X, see the tag:key=value filter. - // - // tag-value - The value of a tag assigned to the resource. This filter is - // independent of the tag-key filter. - // - // vpc-id - The ID of the VPC for the route table. - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // One or more route table IDs. - // - // Default: Describes all your route tables. - RouteTableIds []*string `locationName:"RouteTableId" locationNameList:"item" type:"list"` - - metadataDescribeRouteTablesInput `json:"-" xml:"-"` -} - -type metadataDescribeRouteTablesInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeRouteTablesInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeRouteTablesInput) GoString() string { - return s.String() -} - -type DescribeRouteTablesOutput struct { - // Information about one or more route tables. - RouteTables []*RouteTable `locationName:"routeTableSet" locationNameList:"item" type:"list"` - - metadataDescribeRouteTablesOutput `json:"-" xml:"-"` -} - -type metadataDescribeRouteTablesOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeRouteTablesOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeRouteTablesOutput) GoString() string { - return s.String() -} - -type DescribeSecurityGroupsInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. If using multiple filters for rules, the results include - // security groups for which any combination of rules - not necessarily a single - // rule - match all filters. - // - // description - The description of the security group. - // - // egress.ip-permission.prefix-list-id - The ID (prefix) of the AWS service - // to which the security group allows access. - // - // group-id - The ID of the security group. - // - // group-name - The name of the security group. - // - // ip-permission.cidr - A CIDR range that has been granted permission. - // - // ip-permission.from-port - The start of port range for the TCP and UDP - // protocols, or an ICMP type number. - // - // ip-permission.group-id - The ID of a security group that has been granted - // permission. - // - // ip-permission.group-name - The name of a security group that has been - // granted permission. - // - // ip-permission.protocol - The IP protocol for the permission (tcp | udp - // | icmp or a protocol number). - // - // ip-permission.to-port - The end of port range for the TCP and UDP protocols, - // or an ICMP code. - // - // ip-permission.user-id - The ID of an AWS account that has been granted - // permission. - // - // owner-id - The AWS account ID of the owner of the security group. - // - // tag-key - The key of a tag assigned to the security group. - // - // tag-value - The value of a tag assigned to the security group. - // - // vpc-id - The ID of the VPC specified when the security group was created. - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // One or more security group IDs. Required for security groups in a nondefault - // VPC. - // - // Default: Describes all your security groups. - GroupIds []*string `locationName:"GroupId" locationNameList:"groupId" type:"list"` - - // [EC2-Classic and default VPC only] One or more security group names. You - // can specify either the security group name or the security group ID. For - // security groups in a nondefault VPC, use the group-name filter to describe - // security groups by name. - // - // Default: Describes all your security groups. - GroupNames []*string `locationName:"GroupName" locationNameList:"GroupName" type:"list"` - - metadataDescribeSecurityGroupsInput `json:"-" xml:"-"` -} - -type metadataDescribeSecurityGroupsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeSecurityGroupsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeSecurityGroupsInput) GoString() string { - return s.String() -} - -type DescribeSecurityGroupsOutput struct { - // Information about one or more security groups. - SecurityGroups []*SecurityGroup `locationName:"securityGroupInfo" locationNameList:"item" type:"list"` - - metadataDescribeSecurityGroupsOutput `json:"-" xml:"-"` -} - -type metadataDescribeSecurityGroupsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeSecurityGroupsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeSecurityGroupsOutput) GoString() string { - return s.String() -} - -type DescribeSnapshotAttributeInput struct { - // The snapshot attribute you would like to view. - Attribute *string `type:"string" required:"true" enum:"SnapshotAttributeName"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the EBS snapshot. - SnapshotId *string `type:"string" required:"true"` - - metadataDescribeSnapshotAttributeInput `json:"-" xml:"-"` -} - -type metadataDescribeSnapshotAttributeInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeSnapshotAttributeInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeSnapshotAttributeInput) GoString() string { - return s.String() -} - -type DescribeSnapshotAttributeOutput struct { - // A list of permissions for creating volumes from the snapshot. - CreateVolumePermissions []*CreateVolumePermission `locationName:"createVolumePermission" locationNameList:"item" type:"list"` - - // A list of product codes. - ProductCodes []*ProductCode `locationName:"productCodes" locationNameList:"item" type:"list"` - - // The ID of the EBS snapshot. - SnapshotId *string `locationName:"snapshotId" type:"string"` - - metadataDescribeSnapshotAttributeOutput `json:"-" xml:"-"` -} - -type metadataDescribeSnapshotAttributeOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeSnapshotAttributeOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeSnapshotAttributeOutput) GoString() string { - return s.String() -} - -type DescribeSnapshotsInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. - // - // description - A description of the snapshot. - // - // owner-alias - The AWS account alias (for example, amazon) that owns the - // snapshot. - // - // owner-id - The ID of the AWS account that owns the snapshot. - // - // progress - The progress of the snapshot, as a percentage (for example, - // 80%). - // - // snapshot-id - The snapshot ID. - // - // start-time - The time stamp when the snapshot was initiated. - // - // status - The status of the snapshot (pending | completed | error). - // - // tag:key=value - The key/value combination of a tag assigned to the resource. - // - // tag-key - The key of a tag assigned to the resource. This filter is independent - // of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" - // and the filter "tag-value=X", you get any resources assigned both the tag - // key Purpose (regardless of what the tag's value is), and the tag value X - // (regardless of what the tag's key is). If you want to list only resources - // where Purpose is X, see the tag:key=value filter. - // - // tag-value - The value of a tag assigned to the resource. This filter is - // independent of the tag-key filter. - // - // volume-id - The ID of the volume the snapshot is for. - // - // volume-size - The size of the volume, in GiB. - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // The maximum number of snapshot results returned by DescribeSnapshots in paginated - // output. When this parameter is used, DescribeSnapshots only returns MaxResults - // results in a single page along with a NextToken response element. The remaining - // results of the initial request can be seen by sending another DescribeSnapshots - // request with the returned NextToken value. This value can be between 5 and - // 1000; if MaxResults is given a value larger than 1000, only 1000 results - // are returned. If this parameter is not used, then DescribeSnapshots returns - // all results. You cannot specify this parameter and the snapshot IDs parameter - // in the same request. - MaxResults *int64 `type:"integer"` - - // The NextToken value returned from a previous paginated DescribeSnapshots - // request where MaxResults was used and the results exceeded the value of that - // parameter. Pagination continues from the end of the previous results that - // returned the NextToken value. This value is null when there are no more results - // to return. - NextToken *string `type:"string"` - - // Returns the snapshots owned by the specified owner. Multiple owners can be - // specified. - OwnerIds []*string `locationName:"Owner" locationNameList:"Owner" type:"list"` - - // One or more AWS accounts IDs that can create volumes from the snapshot. - RestorableByUserIds []*string `locationName:"RestorableBy" type:"list"` - - // One or more snapshot IDs. - // - // Default: Describes snapshots for which you have launch permissions. - SnapshotIds []*string `locationName:"SnapshotId" locationNameList:"SnapshotId" type:"list"` - - metadataDescribeSnapshotsInput `json:"-" xml:"-"` -} - -type metadataDescribeSnapshotsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeSnapshotsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeSnapshotsInput) GoString() string { - return s.String() -} - -type DescribeSnapshotsOutput struct { - // The NextToken value to include in a future DescribeSnapshots request. When - // the results of a DescribeSnapshots request exceed MaxResults, this value - // can be used to retrieve the next page of results. This value is null when - // there are no more results to return. - NextToken *string `locationName:"nextToken" type:"string"` - - // Information about the snapshots. - Snapshots []*Snapshot `locationName:"snapshotSet" locationNameList:"item" type:"list"` - - metadataDescribeSnapshotsOutput `json:"-" xml:"-"` -} - -type metadataDescribeSnapshotsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeSnapshotsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeSnapshotsOutput) GoString() string { - return s.String() -} - -// Contains the parameters for DescribeSpotDatafeedSubscription. -type DescribeSpotDatafeedSubscriptionInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - metadataDescribeSpotDatafeedSubscriptionInput `json:"-" xml:"-"` -} - -type metadataDescribeSpotDatafeedSubscriptionInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeSpotDatafeedSubscriptionInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeSpotDatafeedSubscriptionInput) GoString() string { - return s.String() -} - -// Contains the output of DescribeSpotDatafeedSubscription. -type DescribeSpotDatafeedSubscriptionOutput struct { - // The Spot instance data feed subscription. - SpotDatafeedSubscription *SpotDatafeedSubscription `locationName:"spotDatafeedSubscription" type:"structure"` - - metadataDescribeSpotDatafeedSubscriptionOutput `json:"-" xml:"-"` -} - -type metadataDescribeSpotDatafeedSubscriptionOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeSpotDatafeedSubscriptionOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeSpotDatafeedSubscriptionOutput) GoString() string { - return s.String() -} - -// Contains the parameters for DescribeSpotFleetInstances. -type DescribeSpotFleetInstancesInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The maximum number of results to return in a single call. Specify a value - // between 1 and 1000. The default value is 1000. To retrieve the remaining - // results, make another call with the returned NextToken value. - MaxResults *int64 `locationName:"maxResults" type:"integer"` - - // The token for the next set of results. - NextToken *string `locationName:"nextToken" type:"string"` - - // The ID of the Spot fleet request. - SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"` - - metadataDescribeSpotFleetInstancesInput `json:"-" xml:"-"` -} - -type metadataDescribeSpotFleetInstancesInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeSpotFleetInstancesInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeSpotFleetInstancesInput) GoString() string { - return s.String() -} - -// Contains the output of DescribeSpotFleetInstances. -type DescribeSpotFleetInstancesOutput struct { - // The running instances. Note that this list is refreshed periodically and - // might be out of date. - ActiveInstances []*ActiveInstance `locationName:"activeInstanceSet" locationNameList:"item" type:"list" required:"true"` - - // The token required to retrieve the next set of results. This value is null - // when there are no more results to return. - NextToken *string `locationName:"nextToken" type:"string"` - - // The ID of the Spot fleet request. - SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"` - - metadataDescribeSpotFleetInstancesOutput `json:"-" xml:"-"` -} - -type metadataDescribeSpotFleetInstancesOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeSpotFleetInstancesOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeSpotFleetInstancesOutput) GoString() string { - return s.String() -} - -// Contains the parameters for DescribeSpotFleetRequestHistory. -type DescribeSpotFleetRequestHistoryInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The type of events to describe. By default, all events are described. - EventType *string `locationName:"eventType" type:"string" enum:"EventType"` - - // The maximum number of results to return in a single call. Specify a value - // between 1 and 1000. The default value is 1000. To retrieve the remaining - // results, make another call with the returned NextToken value. - MaxResults *int64 `locationName:"maxResults" type:"integer"` - - // The token for the next set of results. - NextToken *string `locationName:"nextToken" type:"string"` - - // The ID of the Spot fleet request. - SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"` - - // The starting date and time for the events, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). - StartTime *time.Time `locationName:"startTime" type:"timestamp" timestampFormat:"iso8601" required:"true"` - - metadataDescribeSpotFleetRequestHistoryInput `json:"-" xml:"-"` -} - -type metadataDescribeSpotFleetRequestHistoryInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeSpotFleetRequestHistoryInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeSpotFleetRequestHistoryInput) GoString() string { - return s.String() -} - -// Contains the output of DescribeSpotFleetRequestHistory. -type DescribeSpotFleetRequestHistoryOutput struct { - // Information about the events in the history of the Spot fleet request. - HistoryRecords []*HistoryRecord `locationName:"historyRecordSet" locationNameList:"item" type:"list" required:"true"` - - // The last date and time for the events, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). - // All records up to this time were retrieved. - // - // If nextToken indicates that there are more results, this value is not present. - LastEvaluatedTime *time.Time `locationName:"lastEvaluatedTime" type:"timestamp" timestampFormat:"iso8601" required:"true"` - - // The token required to retrieve the next set of results. This value is null - // when there are no more results to return. - NextToken *string `locationName:"nextToken" type:"string"` - - // The ID of the Spot fleet request. - SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"` - - // The starting date and time for the events, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). - StartTime *time.Time `locationName:"startTime" type:"timestamp" timestampFormat:"iso8601" required:"true"` - - metadataDescribeSpotFleetRequestHistoryOutput `json:"-" xml:"-"` -} - -type metadataDescribeSpotFleetRequestHistoryOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeSpotFleetRequestHistoryOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeSpotFleetRequestHistoryOutput) GoString() string { - return s.String() -} - -// Contains the parameters for DescribeSpotFleetRequests. -type DescribeSpotFleetRequestsInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The maximum number of results to return in a single call. Specify a value - // between 1 and 1000. The default value is 1000. To retrieve the remaining - // results, make another call with the returned NextToken value. - MaxResults *int64 `locationName:"maxResults" type:"integer"` - - // The token for the next set of results. - NextToken *string `locationName:"nextToken" type:"string"` - - // The IDs of the Spot fleet requests. - SpotFleetRequestIds []*string `locationName:"spotFleetRequestId" locationNameList:"item" type:"list"` - - metadataDescribeSpotFleetRequestsInput `json:"-" xml:"-"` -} - -type metadataDescribeSpotFleetRequestsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeSpotFleetRequestsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeSpotFleetRequestsInput) GoString() string { - return s.String() -} - -// Contains the output of DescribeSpotFleetRequests. -type DescribeSpotFleetRequestsOutput struct { - // The token required to retrieve the next set of results. This value is null - // when there are no more results to return. - NextToken *string `locationName:"nextToken" type:"string"` - - // Information about the configuration of your Spot fleet. - SpotFleetRequestConfigs []*SpotFleetRequestConfig `locationName:"spotFleetRequestConfigSet" locationNameList:"item" type:"list" required:"true"` - - metadataDescribeSpotFleetRequestsOutput `json:"-" xml:"-"` -} - -type metadataDescribeSpotFleetRequestsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeSpotFleetRequestsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeSpotFleetRequestsOutput) GoString() string { - return s.String() -} - -// Contains the parameters for DescribeSpotInstanceRequests. -type DescribeSpotInstanceRequestsInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. - // - // availability-zone-group - The Availability Zone group. - // - // create-time - The time stamp when the Spot instance request was created. - // - // fault-code - The fault code related to the request. - // - // fault-message - The fault message related to the request. - // - // instance-id - The ID of the instance that fulfilled the request. - // - // launch-group - The Spot instance launch group. - // - // launch.block-device-mapping.delete-on-termination - Indicates whether - // the Amazon EBS volume is deleted on instance termination. - // - // launch.block-device-mapping.device-name - The device name for the Amazon - // EBS volume (for example, /dev/sdh). - // - // launch.block-device-mapping.snapshot-id - The ID of the snapshot used - // for the Amazon EBS volume. - // - // launch.block-device-mapping.volume-size - The size of the Amazon EBS volume, - // in GiB. - // - // launch.block-device-mapping.volume-type - The type of the Amazon EBS volume - // (gp2 | standard | io1). - // - // launch.group-id - The security group for the instance. - // - // launch.image-id - The ID of the AMI. - // - // launch.instance-type - The type of instance (for example, m3.medium). - // - // launch.kernel-id - The kernel ID. - // - // launch.key-name - The name of the key pair the instance launched with. - // - // launch.monitoring-enabled - Whether monitoring is enabled for the Spot - // instance. - // - // launch.ramdisk-id - The RAM disk ID. - // - // network-interface.network-interface-id - The ID of the network interface. - // - // network-interface.device-index - The index of the device for the network - // interface attachment on the instance. - // - // network-interface.subnet-id - The ID of the subnet for the instance. - // - // network-interface.description - A description of the network interface. - // - // network-interface.private-ip-address - The primary private IP address - // of the network interface. - // - // network-interface.delete-on-termination - Indicates whether the network - // interface is deleted when the instance is terminated. - // - // network-interface.group-id - The ID of the security group associated with - // the network interface. - // - // network-interface.group-name - The name of the security group associated - // with the network interface. - // - // network-interface.addresses.primary - Indicates whether the IP address - // is the primary private IP address. - // - // product-description - The product description associated with the instance - // (Linux/UNIX | Windows). - // - // spot-instance-request-id - The Spot instance request ID. - // - // spot-price - The maximum hourly price for any Spot instance launched to - // fulfill the request. - // - // state - The state of the Spot instance request (open | active | closed - // | cancelled | failed). Spot bid status information can help you track your - // Amazon EC2 Spot instance requests. For more information, see Spot Bid Status - // (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-bid-status.html) - // in the Amazon Elastic Compute Cloud User Guide. - // - // status-code - The short code describing the most recent evaluation of - // your Spot instance request. - // - // status-message - The message explaining the status of the Spot instance - // request. - // - // tag:key=value - The key/value combination of a tag assigned to the resource. - // - // tag-key - The key of a tag assigned to the resource. This filter is independent - // of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" - // and the filter "tag-value=X", you get any resources assigned both the tag - // key Purpose (regardless of what the tag's value is), and the tag value X - // (regardless of what the tag's key is). If you want to list only resources - // where Purpose is X, see the tag:key=value filter. - // - // tag-value - The value of a tag assigned to the resource. This filter is - // independent of the tag-key filter. - // - // type - The type of Spot instance request (one-time | persistent). - // - // launched-availability-zone - The Availability Zone in which the bid is - // launched. - // - // valid-from - The start date of the request. - // - // valid-until - The end date of the request. - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // One or more Spot instance request IDs. - SpotInstanceRequestIds []*string `locationName:"SpotInstanceRequestId" locationNameList:"SpotInstanceRequestId" type:"list"` - - metadataDescribeSpotInstanceRequestsInput `json:"-" xml:"-"` -} - -type metadataDescribeSpotInstanceRequestsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeSpotInstanceRequestsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeSpotInstanceRequestsInput) GoString() string { - return s.String() -} - -// Contains the output of DescribeSpotInstanceRequests. -type DescribeSpotInstanceRequestsOutput struct { - // One or more Spot instance requests. - SpotInstanceRequests []*SpotInstanceRequest `locationName:"spotInstanceRequestSet" locationNameList:"item" type:"list"` - - metadataDescribeSpotInstanceRequestsOutput `json:"-" xml:"-"` -} - -type metadataDescribeSpotInstanceRequestsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeSpotInstanceRequestsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeSpotInstanceRequestsOutput) GoString() string { - return s.String() -} - -// Contains the parameters for DescribeSpotPriceHistory. -type DescribeSpotPriceHistoryInput struct { - // Filters the results by the specified Availability Zone. - AvailabilityZone *string `locationName:"availabilityZone" type:"string"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The date and time, up to the current date, from which to stop retrieving - // the price history data, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). - EndTime *time.Time `locationName:"endTime" type:"timestamp" timestampFormat:"iso8601"` - - // One or more filters. - // - // availability-zone - The Availability Zone for which prices should be returned. - // - // instance-type - The type of instance (for example, m3.medium). - // - // product-description - The product description for the Spot price (Linux/UNIX - // | SUSE Linux | Windows | Linux/UNIX (Amazon VPC) | SUSE Linux (Amazon VPC) - // | Windows (Amazon VPC)). - // - // spot-price - The Spot price. The value must match exactly (or use wildcards; - // greater than or less than comparison is not supported). - // - // timestamp - The timestamp of the Spot price history, in UTC format (for - // example, YYYY-MM-DDTHH:MM:SSZ). You can use wildcards (* and ?). Greater - // than or less than comparison is not supported. - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // Filters the results by the specified instance types. - InstanceTypes []*string `locationName:"InstanceType" type:"list"` - - // The maximum number of results to return in a single call. Specify a value - // between 1 and 1000. The default value is 1000. To retrieve the remaining - // results, make another call with the returned NextToken value. - MaxResults *int64 `locationName:"maxResults" type:"integer"` - - // The token for the next set of results. - NextToken *string `locationName:"nextToken" type:"string"` - - // Filters the results by the specified basic product descriptions. - ProductDescriptions []*string `locationName:"ProductDescription" type:"list"` - - // The date and time, up to the past 90 days, from which to start retrieving - // the price history data, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). - StartTime *time.Time `locationName:"startTime" type:"timestamp" timestampFormat:"iso8601"` - - metadataDescribeSpotPriceHistoryInput `json:"-" xml:"-"` -} - -type metadataDescribeSpotPriceHistoryInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeSpotPriceHistoryInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeSpotPriceHistoryInput) GoString() string { - return s.String() -} - -// Contains the output of DescribeSpotPriceHistory. -type DescribeSpotPriceHistoryOutput struct { - // The token required to retrieve the next set of results. This value is null - // when there are no more results to return. - NextToken *string `locationName:"nextToken" type:"string"` - - // The historical Spot prices. - SpotPriceHistory []*SpotPrice `locationName:"spotPriceHistorySet" locationNameList:"item" type:"list"` - - metadataDescribeSpotPriceHistoryOutput `json:"-" xml:"-"` -} - -type metadataDescribeSpotPriceHistoryOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeSpotPriceHistoryOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeSpotPriceHistoryOutput) GoString() string { - return s.String() -} - -type DescribeSubnetsInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. - // - // availabilityZone - The Availability Zone for the subnet. You can also - // use availability-zone as the filter name. - // - // available-ip-address-count - The number of IP addresses in the subnet - // that are available. - // - // cidrBlock - The CIDR block of the subnet. The CIDR block you specify must - // exactly match the subnet's CIDR block for information to be returned for - // the subnet. You can also use cidr or cidr-block as the filter names. - // - // defaultForAz - Indicates whether this is the default subnet for the Availability - // Zone. You can also use default-for-az as the filter name. - // - // state - The state of the subnet (pending | available). - // - // subnet-id - The ID of the subnet. - // - // tag:key=value - The key/value combination of a tag assigned to the resource. - // - // tag-key - The key of a tag assigned to the resource. This filter is independent - // of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" - // and the filter "tag-value=X", you get any resources assigned both the tag - // key Purpose (regardless of what the tag's value is), and the tag value X - // (regardless of what the tag's key is). If you want to list only resources - // where Purpose is X, see the tag:key=value filter. - // - // tag-value - The value of a tag assigned to the resource. This filter is - // independent of the tag-key filter. - // - // vpc-id - The ID of the VPC for the subnet. - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // One or more subnet IDs. - // - // Default: Describes all your subnets. - SubnetIds []*string `locationName:"SubnetId" locationNameList:"SubnetId" type:"list"` - - metadataDescribeSubnetsInput `json:"-" xml:"-"` -} - -type metadataDescribeSubnetsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeSubnetsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeSubnetsInput) GoString() string { - return s.String() -} - -type DescribeSubnetsOutput struct { - // Information about one or more subnets. - Subnets []*Subnet `locationName:"subnetSet" locationNameList:"item" type:"list"` - - metadataDescribeSubnetsOutput `json:"-" xml:"-"` -} - -type metadataDescribeSubnetsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeSubnetsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeSubnetsOutput) GoString() string { - return s.String() -} - -type DescribeTagsInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. - // - // key - The tag key. - // - // resource-id - The resource ID. - // - // resource-type - The resource type (customer-gateway | dhcp-options | image - // | instance | internet-gateway | network-acl | network-interface | reserved-instances - // | route-table | security-group | snapshot | spot-instances-request | subnet - // | volume | vpc | vpn-connection | vpn-gateway). - // - // value - The tag value. - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // The maximum number of results to return for the request in a single page. - // The remaining results of the initial request can be seen by sending another - // request with the returned NextToken value. This value can be between 5 and - // 1000; if MaxResults is given a value larger than 1000, only 1000 results - // are returned. - MaxResults *int64 `locationName:"maxResults" type:"integer"` - - // The token to retrieve the next page of results. - NextToken *string `locationName:"nextToken" type:"string"` - - metadataDescribeTagsInput `json:"-" xml:"-"` -} - -type metadataDescribeTagsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeTagsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeTagsInput) GoString() string { - return s.String() -} - -type DescribeTagsOutput struct { - // The token to use to retrieve the next page of results. This value is null - // when there are no more results to return.. - NextToken *string `locationName:"nextToken" type:"string"` - - // A list of tags. - Tags []*TagDescription `locationName:"tagSet" locationNameList:"item" type:"list"` - - metadataDescribeTagsOutput `json:"-" xml:"-"` -} - -type metadataDescribeTagsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeTagsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeTagsOutput) GoString() string { - return s.String() -} - -type DescribeVolumeAttributeInput struct { - // The instance attribute. - Attribute *string `type:"string" enum:"VolumeAttributeName"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the volume. - VolumeId *string `type:"string" required:"true"` - - metadataDescribeVolumeAttributeInput `json:"-" xml:"-"` -} - -type metadataDescribeVolumeAttributeInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeVolumeAttributeInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeVolumeAttributeInput) GoString() string { - return s.String() -} - -type DescribeVolumeAttributeOutput struct { - // The state of autoEnableIO attribute. - AutoEnableIO *AttributeBooleanValue `locationName:"autoEnableIO" type:"structure"` - - // A list of product codes. - ProductCodes []*ProductCode `locationName:"productCodes" locationNameList:"item" type:"list"` - - // The ID of the volume. - VolumeId *string `locationName:"volumeId" type:"string"` - - metadataDescribeVolumeAttributeOutput `json:"-" xml:"-"` -} - -type metadataDescribeVolumeAttributeOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeVolumeAttributeOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeVolumeAttributeOutput) GoString() string { - return s.String() -} - -type DescribeVolumeStatusInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. - // - // action.code - The action code for the event (for example, enable-volume-io). - // - // action.description - A description of the action. - // - // action.event-id - The event ID associated with the action. - // - // availability-zone - The Availability Zone of the instance. - // - // event.description - A description of the event. - // - // event.event-id - The event ID. - // - // event.event-type - The event type (for io-enabled: passed | failed; for - // io-performance: io-performance:degraded | io-performance:severely-degraded - // | io-performance:stalled). - // - // event.not-after - The latest end time for the event. - // - // event.not-before - The earliest start time for the event. - // - // volume-status.details-name - The cause for volume-status.status (io-enabled - // | io-performance). - // - // volume-status.details-status - The status of volume-status.details-name - // (for io-enabled: passed | failed; for io-performance: normal | degraded | - // severely-degraded | stalled). - // - // volume-status.status - The status of the volume (ok | impaired | warning - // | insufficient-data). - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // The maximum number of volume results returned by DescribeVolumeStatus in - // paginated output. When this parameter is used, the request only returns MaxResults - // results in a single page along with a NextToken response element. The remaining - // results of the initial request can be seen by sending another request with - // the returned NextToken value. This value can be between 5 and 1000; if MaxResults - // is given a value larger than 1000, only 1000 results are returned. If this - // parameter is not used, then DescribeVolumeStatus returns all results. You - // cannot specify this parameter and the volume IDs parameter in the same request. - MaxResults *int64 `type:"integer"` - - // The NextToken value to include in a future DescribeVolumeStatus request. - // When the results of the request exceed MaxResults, this value can be used - // to retrieve the next page of results. This value is null when there are no - // more results to return. - NextToken *string `type:"string"` - - // One or more volume IDs. - // - // Default: Describes all your volumes. - VolumeIds []*string `locationName:"VolumeId" locationNameList:"VolumeId" type:"list"` - - metadataDescribeVolumeStatusInput `json:"-" xml:"-"` -} - -type metadataDescribeVolumeStatusInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeVolumeStatusInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeVolumeStatusInput) GoString() string { - return s.String() -} - -type DescribeVolumeStatusOutput struct { - // The token to use to retrieve the next page of results. This value is null - // when there are no more results to return. - NextToken *string `locationName:"nextToken" type:"string"` - - // A list of volumes. - VolumeStatuses []*VolumeStatusItem `locationName:"volumeStatusSet" locationNameList:"item" type:"list"` - - metadataDescribeVolumeStatusOutput `json:"-" xml:"-"` -} - -type metadataDescribeVolumeStatusOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeVolumeStatusOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeVolumeStatusOutput) GoString() string { - return s.String() -} - -type DescribeVolumesInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. - // - // attachment.attach-time - The time stamp when the attachment initiated. - // - // attachment.delete-on-termination - Whether the volume is deleted on instance - // termination. - // - // attachment.device - The device name that is exposed to the instance (for - // example, /dev/sda1). - // - // attachment.instance-id - The ID of the instance the volume is attached - // to. - // - // attachment.status - The attachment state (attaching | attached | detaching - // | detached). - // - // availability-zone - The Availability Zone in which the volume was created. - // - // create-time - The time stamp when the volume was created. - // - // encrypted - The encryption status of the volume. - // - // size - The size of the volume, in GiB. - // - // snapshot-id - The snapshot from which the volume was created. - // - // status - The status of the volume (creating | available | in-use | deleting - // | deleted | error). - // - // tag:key=value - The key/value combination of a tag assigned to the resource. - // - // tag-key - The key of a tag assigned to the resource. This filter is independent - // of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" - // and the filter "tag-value=X", you get any resources assigned both the tag - // key Purpose (regardless of what the tag's value is), and the tag value X - // (regardless of what the tag's key is). If you want to list only resources - // where Purpose is X, see the tag:key=value filter. - // - // tag-value - The value of a tag assigned to the resource. This filter is - // independent of the tag-key filter. - // - // volume-id - The volume ID. - // - // volume-type - The Amazon EBS volume type. This can be gp2 for General - // Purpose (SSD) volumes, io1 for Provisioned IOPS (SSD) volumes, or standard - // for Magnetic volumes. - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // The maximum number of volume results returned by DescribeVolumes in paginated - // output. When this parameter is used, DescribeVolumes only returns MaxResults - // results in a single page along with a NextToken response element. The remaining - // results of the initial request can be seen by sending another DescribeVolumes - // request with the returned NextToken value. This value can be between 5 and - // 1000; if MaxResults is given a value larger than 1000, only 1000 results - // are returned. If this parameter is not used, then DescribeVolumes returns - // all results. You cannot specify this parameter and the volume IDs parameter - // in the same request. - MaxResults *int64 `locationName:"maxResults" type:"integer"` - - // The NextToken value returned from a previous paginated DescribeVolumes request - // where MaxResults was used and the results exceeded the value of that parameter. - // Pagination continues from the end of the previous results that returned the - // NextToken value. This value is null when there are no more results to return. - NextToken *string `locationName:"nextToken" type:"string"` - - // One or more volume IDs. - VolumeIds []*string `locationName:"VolumeId" locationNameList:"VolumeId" type:"list"` - - metadataDescribeVolumesInput `json:"-" xml:"-"` -} - -type metadataDescribeVolumesInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeVolumesInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeVolumesInput) GoString() string { - return s.String() -} - -type DescribeVolumesOutput struct { - // The NextToken value to include in a future DescribeVolumes request. When - // the results of a DescribeVolumes request exceed MaxResults, this value can - // be used to retrieve the next page of results. This value is null when there - // are no more results to return. - NextToken *string `locationName:"nextToken" type:"string"` - - // Information about the volumes. - Volumes []*Volume `locationName:"volumeSet" locationNameList:"item" type:"list"` - - metadataDescribeVolumesOutput `json:"-" xml:"-"` -} - -type metadataDescribeVolumesOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeVolumesOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeVolumesOutput) GoString() string { - return s.String() -} - -type DescribeVpcAttributeInput struct { - // The VPC attribute. - Attribute *string `type:"string" enum:"VpcAttributeName"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the VPC. - VpcId *string `type:"string" required:"true"` - - metadataDescribeVpcAttributeInput `json:"-" xml:"-"` -} - -type metadataDescribeVpcAttributeInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeVpcAttributeInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeVpcAttributeInput) GoString() string { - return s.String() -} - -type DescribeVpcAttributeOutput struct { - // Indicates whether the instances launched in the VPC get DNS hostnames. If - // this attribute is true, instances in the VPC get DNS hostnames; otherwise, - // they do not. - EnableDnsHostnames *AttributeBooleanValue `locationName:"enableDnsHostnames" type:"structure"` - - // Indicates whether DNS resolution is enabled for the VPC. If this attribute - // is true, the Amazon DNS server resolves DNS hostnames for your instances - // to their corresponding IP addresses; otherwise, it does not. - EnableDnsSupport *AttributeBooleanValue `locationName:"enableDnsSupport" type:"structure"` - - // The ID of the VPC. - VpcId *string `locationName:"vpcId" type:"string"` - - metadataDescribeVpcAttributeOutput `json:"-" xml:"-"` -} - -type metadataDescribeVpcAttributeOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeVpcAttributeOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeVpcAttributeOutput) GoString() string { - return s.String() -} - -type DescribeVpcClassicLinkInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. - // - // is-classic-link-enabled - Whether the VPC is enabled for ClassicLink (true - // | false). - // - // tag:key=value - The key/value combination of a tag assigned to the resource. - // - // tag-key - The key of a tag assigned to the resource. This filter is independent - // of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" - // and the filter "tag-value=X", you get any resources assigned both the tag - // key Purpose (regardless of what the tag's value is), and the tag value X - // (regardless of what the tag's key is). If you want to list only resources - // where Purpose is X, see the tag:key=value filter. - // - // tag-value - The value of a tag assigned to the resource. This filter is - // independent of the tag-key filter. - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // One or more VPCs for which you want to describe the ClassicLink status. - VpcIds []*string `locationName:"VpcId" locationNameList:"VpcId" type:"list"` - - metadataDescribeVpcClassicLinkInput `json:"-" xml:"-"` -} - -type metadataDescribeVpcClassicLinkInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeVpcClassicLinkInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeVpcClassicLinkInput) GoString() string { - return s.String() -} - -type DescribeVpcClassicLinkOutput struct { - // The ClassicLink status of one or more VPCs. - Vpcs []*VpcClassicLink `locationName:"vpcSet" locationNameList:"item" type:"list"` - - metadataDescribeVpcClassicLinkOutput `json:"-" xml:"-"` -} - -type metadataDescribeVpcClassicLinkOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeVpcClassicLinkOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeVpcClassicLinkOutput) GoString() string { - return s.String() -} - -type DescribeVpcEndpointServicesInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `type:"boolean"` - - // The maximum number of items to return for this request. The request returns - // a token that you can specify in a subsequent call to get the next set of - // results. - // - // Constraint: If the value is greater than 1000, we return only 1000 items. - MaxResults *int64 `type:"integer"` - - // The token for the next set of items to return. (You received this token from - // a prior call.) - NextToken *string `type:"string"` - - metadataDescribeVpcEndpointServicesInput `json:"-" xml:"-"` -} - -type metadataDescribeVpcEndpointServicesInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeVpcEndpointServicesInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeVpcEndpointServicesInput) GoString() string { - return s.String() -} - -type DescribeVpcEndpointServicesOutput struct { - // The token to use when requesting the next set of items. If there are no additional - // items to return, the string is empty. - NextToken *string `locationName:"nextToken" type:"string"` - - // A list of supported AWS services. - ServiceNames []*string `locationName:"serviceNameSet" locationNameList:"item" type:"list"` - - metadataDescribeVpcEndpointServicesOutput `json:"-" xml:"-"` -} - -type metadataDescribeVpcEndpointServicesOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeVpcEndpointServicesOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeVpcEndpointServicesOutput) GoString() string { - return s.String() -} - -type DescribeVpcEndpointsInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `type:"boolean"` - - // One or more filters. - // - // service-name: The name of the AWS service. - // - // vpc-id: The ID of the VPC in which the endpoint resides. - // - // vpc-endpoint-id: The ID of the endpoint. - // - // vpc-endpoint-state: The state of the endpoint. (pending | available | - // deleting | deleted) - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // The maximum number of items to return for this request. The request returns - // a token that you can specify in a subsequent call to get the next set of - // results. - // - // Constraint: If the value is greater than 1000, we return only 1000 items. - MaxResults *int64 `type:"integer"` - - // The token for the next set of items to return. (You received this token from - // a prior call.) - NextToken *string `type:"string"` - - // One or more endpoint IDs. - VpcEndpointIds []*string `locationName:"VpcEndpointId" locationNameList:"item" type:"list"` - - metadataDescribeVpcEndpointsInput `json:"-" xml:"-"` -} - -type metadataDescribeVpcEndpointsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeVpcEndpointsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeVpcEndpointsInput) GoString() string { - return s.String() -} - -type DescribeVpcEndpointsOutput struct { - // The token to use when requesting the next set of items. If there are no additional - // items to return, the string is empty. - NextToken *string `locationName:"nextToken" type:"string"` - - // Information about the endpoints. - VpcEndpoints []*VpcEndpoint `locationName:"vpcEndpointSet" locationNameList:"item" type:"list"` - - metadataDescribeVpcEndpointsOutput `json:"-" xml:"-"` -} - -type metadataDescribeVpcEndpointsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeVpcEndpointsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeVpcEndpointsOutput) GoString() string { - return s.String() -} - -type DescribeVpcPeeringConnectionsInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. - // - // accepter-vpc-info.cidr-block - The CIDR block of the peer VPC. - // - // accepter-vpc-info.owner-id - The AWS account ID of the owner of the peer - // VPC. - // - // accepter-vpc-info.vpc-id - The ID of the peer VPC. - // - // expiration-time - The expiration date and time for the VPC peering connection. - // - // requester-vpc-info.cidr-block - The CIDR block of the requester's VPC. - // - // requester-vpc-info.owner-id - The AWS account ID of the owner of the requester - // VPC. - // - // requester-vpc-info.vpc-id - The ID of the requester VPC. - // - // status-code - The status of the VPC peering connection (pending-acceptance - // | failed | expired | provisioning | active | deleted | rejected). - // - // status-message - A message that provides more information about the status - // of the VPC peering connection, if applicable. - // - // tag:key=value - The key/value combination of a tag assigned to the resource. - // - // tag-key - The key of a tag assigned to the resource. This filter is independent - // of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" - // and the filter "tag-value=X", you get any resources assigned both the tag - // key Purpose (regardless of what the tag's value is), and the tag value X - // (regardless of what the tag's key is). If you want to list only resources - // where Purpose is X, see the tag:key=value filter. - // - // tag-value - The value of a tag assigned to the resource. This filter is - // independent of the tag-key filter. - // - // vpc-peering-connection-id - The ID of the VPC peering connection. - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // One or more VPC peering connection IDs. - // - // Default: Describes all your VPC peering connections. - VpcPeeringConnectionIds []*string `locationName:"VpcPeeringConnectionId" locationNameList:"item" type:"list"` - - metadataDescribeVpcPeeringConnectionsInput `json:"-" xml:"-"` -} - -type metadataDescribeVpcPeeringConnectionsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeVpcPeeringConnectionsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeVpcPeeringConnectionsInput) GoString() string { - return s.String() -} - -type DescribeVpcPeeringConnectionsOutput struct { - // Information about the VPC peering connections. - VpcPeeringConnections []*VpcPeeringConnection `locationName:"vpcPeeringConnectionSet" locationNameList:"item" type:"list"` - - metadataDescribeVpcPeeringConnectionsOutput `json:"-" xml:"-"` -} - -type metadataDescribeVpcPeeringConnectionsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeVpcPeeringConnectionsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeVpcPeeringConnectionsOutput) GoString() string { - return s.String() -} - -type DescribeVpcsInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. - // - // cidr - The CIDR block of the VPC. The CIDR block you specify must exactly - // match the VPC's CIDR block for information to be returned for the VPC. Must - // contain the slash followed by one or two digits (for example, /28). - // - // dhcp-options-id - The ID of a set of DHCP options. - // - // isDefault - Indicates whether the VPC is the default VPC. - // - // state - The state of the VPC (pending | available). - // - // tag:key=value - The key/value combination of a tag assigned to the resource. - // - // tag-key - The key of a tag assigned to the resource. This filter is independent - // of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" - // and the filter "tag-value=X", you get any resources assigned both the tag - // key Purpose (regardless of what the tag's value is), and the tag value X - // (regardless of what the tag's key is). If you want to list only resources - // where Purpose is X, see the tag:key=value filter. - // - // tag-value - The value of a tag assigned to the resource. This filter is - // independent of the tag-key filter. - // - // vpc-id - The ID of the VPC. - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // One or more VPC IDs. - // - // Default: Describes all your VPCs. - VpcIds []*string `locationName:"VpcId" locationNameList:"VpcId" type:"list"` - - metadataDescribeVpcsInput `json:"-" xml:"-"` -} - -type metadataDescribeVpcsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeVpcsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeVpcsInput) GoString() string { - return s.String() -} - -type DescribeVpcsOutput struct { - // Information about one or more VPCs. - Vpcs []*Vpc `locationName:"vpcSet" locationNameList:"item" type:"list"` - - metadataDescribeVpcsOutput `json:"-" xml:"-"` -} - -type metadataDescribeVpcsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeVpcsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeVpcsOutput) GoString() string { - return s.String() -} - -type DescribeVpnConnectionsInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. - // - // customer-gateway-configuration - The configuration information for the - // customer gateway. - // - // customer-gateway-id - The ID of a customer gateway associated with the - // VPN connection. - // - // state - The state of the VPN connection (pending | available | deleting - // | deleted). - // - // option.static-routes-only - Indicates whether the connection has static - // routes only. Used for devices that do not support Border Gateway Protocol - // (BGP). - // - // route.destination-cidr-block - The destination CIDR block. This corresponds - // to the subnet used in a customer data center. - // - // bgp-asn - The BGP Autonomous System Number (ASN) associated with a BGP - // device. - // - // tag:key=value - The key/value combination of a tag assigned to the resource. - // - // tag-key - The key of a tag assigned to the resource. This filter is independent - // of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" - // and the filter "tag-value=X", you get any resources assigned both the tag - // key Purpose (regardless of what the tag's value is), and the tag value X - // (regardless of what the tag's key is). If you want to list only resources - // where Purpose is X, see the tag:key=value filter. - // - // tag-value - The value of a tag assigned to the resource. This filter is - // independent of the tag-key filter. - // - // type - The type of VPN connection. Currently the only supported type is - // ipsec.1. - // - // vpn-connection-id - The ID of the VPN connection. - // - // vpn-gateway-id - The ID of a virtual private gateway associated with the - // VPN connection. - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // One or more VPN connection IDs. - // - // Default: Describes your VPN connections. - VpnConnectionIds []*string `locationName:"VpnConnectionId" locationNameList:"VpnConnectionId" type:"list"` - - metadataDescribeVpnConnectionsInput `json:"-" xml:"-"` -} - -type metadataDescribeVpnConnectionsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeVpnConnectionsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeVpnConnectionsInput) GoString() string { - return s.String() -} - -type DescribeVpnConnectionsOutput struct { - // Information about one or more VPN connections. - VpnConnections []*VpnConnection `locationName:"vpnConnectionSet" locationNameList:"item" type:"list"` - - metadataDescribeVpnConnectionsOutput `json:"-" xml:"-"` -} - -type metadataDescribeVpnConnectionsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeVpnConnectionsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeVpnConnectionsOutput) GoString() string { - return s.String() -} - -type DescribeVpnGatewaysInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more filters. - // - // attachment.state - The current state of the attachment between the gateway - // and the VPC (attaching | attached | detaching | detached). - // - // attachment.vpc-id - The ID of an attached VPC. - // - // availability-zone - The Availability Zone for the virtual private gateway. - // - // state - The state of the virtual private gateway (pending | available - // | deleting | deleted). - // - // tag:key=value - The key/value combination of a tag assigned to the resource. - // - // tag-key - The key of a tag assigned to the resource. This filter is independent - // of the tag-value filter. For example, if you use both the filter "tag-key=Purpose" - // and the filter "tag-value=X", you get any resources assigned both the tag - // key Purpose (regardless of what the tag's value is), and the tag value X - // (regardless of what the tag's key is). If you want to list only resources - // where Purpose is X, see the tag:key=value filter. - // - // tag-value - The value of a tag assigned to the resource. This filter is - // independent of the tag-key filter. - // - // type - The type of virtual private gateway. Currently the only supported - // type is ipsec.1. - // - // vpn-gateway-id - The ID of the virtual private gateway. - Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - - // One or more virtual private gateway IDs. - // - // Default: Describes all your virtual private gateways. - VpnGatewayIds []*string `locationName:"VpnGatewayId" locationNameList:"VpnGatewayId" type:"list"` - - metadataDescribeVpnGatewaysInput `json:"-" xml:"-"` -} - -type metadataDescribeVpnGatewaysInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeVpnGatewaysInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeVpnGatewaysInput) GoString() string { - return s.String() -} - -type DescribeVpnGatewaysOutput struct { - // Information about one or more virtual private gateways. - VpnGateways []*VpnGateway `locationName:"vpnGatewaySet" locationNameList:"item" type:"list"` - - metadataDescribeVpnGatewaysOutput `json:"-" xml:"-"` -} - -type metadataDescribeVpnGatewaysOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DescribeVpnGatewaysOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeVpnGatewaysOutput) GoString() string { - return s.String() -} - -type DetachClassicLinkVpcInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the instance to unlink from the VPC. - InstanceId *string `locationName:"instanceId" type:"string" required:"true"` - - // The ID of the VPC to which the instance is linked. - VpcId *string `locationName:"vpcId" type:"string" required:"true"` - - metadataDetachClassicLinkVpcInput `json:"-" xml:"-"` -} - -type metadataDetachClassicLinkVpcInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DetachClassicLinkVpcInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DetachClassicLinkVpcInput) GoString() string { - return s.String() -} - -type DetachClassicLinkVpcOutput struct { - // Returns true if the request succeeds; otherwise, it returns an error. - Return *bool `locationName:"return" type:"boolean"` - - metadataDetachClassicLinkVpcOutput `json:"-" xml:"-"` -} - -type metadataDetachClassicLinkVpcOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DetachClassicLinkVpcOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DetachClassicLinkVpcOutput) GoString() string { - return s.String() -} - -type DetachInternetGatewayInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the Internet gateway. - InternetGatewayId *string `locationName:"internetGatewayId" type:"string" required:"true"` - - // The ID of the VPC. - VpcId *string `locationName:"vpcId" type:"string" required:"true"` - - metadataDetachInternetGatewayInput `json:"-" xml:"-"` -} - -type metadataDetachInternetGatewayInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DetachInternetGatewayInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DetachInternetGatewayInput) GoString() string { - return s.String() -} - -type DetachInternetGatewayOutput struct { - metadataDetachInternetGatewayOutput `json:"-" xml:"-"` -} - -type metadataDetachInternetGatewayOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DetachInternetGatewayOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DetachInternetGatewayOutput) GoString() string { - return s.String() -} - -type DetachNetworkInterfaceInput struct { - // The ID of the attachment. - AttachmentId *string `locationName:"attachmentId" type:"string" required:"true"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // Specifies whether to force a detachment. - Force *bool `locationName:"force" type:"boolean"` - - metadataDetachNetworkInterfaceInput `json:"-" xml:"-"` -} - -type metadataDetachNetworkInterfaceInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DetachNetworkInterfaceInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DetachNetworkInterfaceInput) GoString() string { - return s.String() -} - -type DetachNetworkInterfaceOutput struct { - metadataDetachNetworkInterfaceOutput `json:"-" xml:"-"` -} - -type metadataDetachNetworkInterfaceOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DetachNetworkInterfaceOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DetachNetworkInterfaceOutput) GoString() string { - return s.String() -} - -type DetachVolumeInput struct { - // The device name. - Device *string `type:"string"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // Forces detachment if the previous detachment attempt did not occur cleanly - // (for example, logging into an instance, unmounting the volume, and detaching - // normally). This option can lead to data loss or a corrupted file system. - // Use this option only as a last resort to detach a volume from a failed instance. - // The instance won't have an opportunity to flush file system caches or file - // system metadata. If you use this option, you must perform file system check - // and repair procedures. - Force *bool `type:"boolean"` - - // The ID of the instance. - InstanceId *string `type:"string"` - - // The ID of the volume. - VolumeId *string `type:"string" required:"true"` - - metadataDetachVolumeInput `json:"-" xml:"-"` -} - -type metadataDetachVolumeInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DetachVolumeInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DetachVolumeInput) GoString() string { - return s.String() -} - -type DetachVpnGatewayInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the VPC. - VpcId *string `type:"string" required:"true"` - - // The ID of the virtual private gateway. - VpnGatewayId *string `type:"string" required:"true"` - - metadataDetachVpnGatewayInput `json:"-" xml:"-"` -} - -type metadataDetachVpnGatewayInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DetachVpnGatewayInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DetachVpnGatewayInput) GoString() string { - return s.String() -} - -type DetachVpnGatewayOutput struct { - metadataDetachVpnGatewayOutput `json:"-" xml:"-"` -} - -type metadataDetachVpnGatewayOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DetachVpnGatewayOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DetachVpnGatewayOutput) GoString() string { - return s.String() -} - -// Describes a DHCP configuration option. -type DhcpConfiguration struct { - // The name of a DHCP option. - Key *string `locationName:"key" type:"string"` - - // One or more values for the DHCP option. - Values []*AttributeValue `locationName:"valueSet" locationNameList:"item" type:"list"` - - metadataDhcpConfiguration `json:"-" xml:"-"` -} - -type metadataDhcpConfiguration struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DhcpConfiguration) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DhcpConfiguration) GoString() string { - return s.String() -} - -// Describes a set of DHCP options. -type DhcpOptions struct { - // One or more DHCP options in the set. - DhcpConfigurations []*DhcpConfiguration `locationName:"dhcpConfigurationSet" locationNameList:"item" type:"list"` - - // The ID of the set of DHCP options. - DhcpOptionsId *string `locationName:"dhcpOptionsId" type:"string"` - - // Any tags assigned to the DHCP options set. - Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` - - metadataDhcpOptions `json:"-" xml:"-"` -} - -type metadataDhcpOptions struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DhcpOptions) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DhcpOptions) GoString() string { - return s.String() -} - -type DisableVgwRoutePropagationInput struct { - // The ID of the virtual private gateway. - GatewayId *string `type:"string" required:"true"` - - // The ID of the route table. - RouteTableId *string `type:"string" required:"true"` - - metadataDisableVgwRoutePropagationInput `json:"-" xml:"-"` -} - -type metadataDisableVgwRoutePropagationInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DisableVgwRoutePropagationInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DisableVgwRoutePropagationInput) GoString() string { - return s.String() -} - -type DisableVgwRoutePropagationOutput struct { - metadataDisableVgwRoutePropagationOutput `json:"-" xml:"-"` -} - -type metadataDisableVgwRoutePropagationOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DisableVgwRoutePropagationOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DisableVgwRoutePropagationOutput) GoString() string { - return s.String() -} - -type DisableVpcClassicLinkInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the VPC. - VpcId *string `locationName:"vpcId" type:"string" required:"true"` - - metadataDisableVpcClassicLinkInput `json:"-" xml:"-"` -} - -type metadataDisableVpcClassicLinkInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DisableVpcClassicLinkInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DisableVpcClassicLinkInput) GoString() string { - return s.String() -} - -type DisableVpcClassicLinkOutput struct { - // Returns true if the request succeeds; otherwise, it returns an error. - Return *bool `locationName:"return" type:"boolean"` - - metadataDisableVpcClassicLinkOutput `json:"-" xml:"-"` -} - -type metadataDisableVpcClassicLinkOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DisableVpcClassicLinkOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DisableVpcClassicLinkOutput) GoString() string { - return s.String() -} - -type DisassociateAddressInput struct { - // [EC2-VPC] The association ID. Required for EC2-VPC. - AssociationId *string `type:"string"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // [EC2-Classic] The Elastic IP address. Required for EC2-Classic. - PublicIp *string `type:"string"` - - metadataDisassociateAddressInput `json:"-" xml:"-"` -} - -type metadataDisassociateAddressInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DisassociateAddressInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DisassociateAddressInput) GoString() string { - return s.String() -} - -type DisassociateAddressOutput struct { - metadataDisassociateAddressOutput `json:"-" xml:"-"` -} - -type metadataDisassociateAddressOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DisassociateAddressOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DisassociateAddressOutput) GoString() string { - return s.String() -} - -type DisassociateRouteTableInput struct { - // The association ID representing the current association between the route - // table and subnet. - AssociationId *string `locationName:"associationId" type:"string" required:"true"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - metadataDisassociateRouteTableInput `json:"-" xml:"-"` -} - -type metadataDisassociateRouteTableInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DisassociateRouteTableInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DisassociateRouteTableInput) GoString() string { - return s.String() -} - -type DisassociateRouteTableOutput struct { - metadataDisassociateRouteTableOutput `json:"-" xml:"-"` -} - -type metadataDisassociateRouteTableOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DisassociateRouteTableOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DisassociateRouteTableOutput) GoString() string { - return s.String() -} - -// Describes a disk image. -type DiskImage struct { - // A description of the disk image. - Description *string `type:"string"` - - // Information about the disk image. - Image *DiskImageDetail `type:"structure"` - - // Information about the volume. - Volume *VolumeDetail `type:"structure"` - - metadataDiskImage `json:"-" xml:"-"` -} - -type metadataDiskImage struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DiskImage) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DiskImage) GoString() string { - return s.String() -} - -// Describes a disk image. -type DiskImageDescription struct { - // The checksum computed for the disk image. - Checksum *string `locationName:"checksum" type:"string"` - - // The disk image format. - Format *string `locationName:"format" type:"string" required:"true" enum:"DiskImageFormat"` - - // A presigned URL for the import manifest stored in Amazon S3. For information - // about creating a presigned URL for an Amazon S3 object, read the "Query String - // Request Authentication Alternative" section of the Authenticating REST Requests - // (http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html) - // topic in the Amazon Simple Storage Service Developer Guide. - ImportManifestUrl *string `locationName:"importManifestUrl" type:"string" required:"true"` - - // The size of the disk image, in GiB. - Size *int64 `locationName:"size" type:"long" required:"true"` - - metadataDiskImageDescription `json:"-" xml:"-"` -} - -type metadataDiskImageDescription struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DiskImageDescription) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DiskImageDescription) GoString() string { - return s.String() -} - -// Describes a disk image. -type DiskImageDetail struct { - // The size of the disk image, in GiB. - Bytes *int64 `locationName:"bytes" type:"long" required:"true"` - - // The disk image format. - Format *string `locationName:"format" type:"string" required:"true" enum:"DiskImageFormat"` - - // A presigned URL for the import manifest stored in Amazon S3 and presented - // here as an Amazon S3 presigned URL. For information about creating a presigned - // URL for an Amazon S3 object, read the "Query String Request Authentication - // Alternative" section of the Authenticating REST Requests (http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html) - // topic in the Amazon Simple Storage Service Developer Guide. - ImportManifestUrl *string `locationName:"importManifestUrl" type:"string" required:"true"` - - metadataDiskImageDetail `json:"-" xml:"-"` -} - -type metadataDiskImageDetail struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DiskImageDetail) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DiskImageDetail) GoString() string { - return s.String() -} - -// Describes a disk image volume. -type DiskImageVolumeDescription struct { - // The volume identifier. - Id *string `locationName:"id" type:"string" required:"true"` - - // The size of the volume, in GiB. - Size *int64 `locationName:"size" type:"long"` - - metadataDiskImageVolumeDescription `json:"-" xml:"-"` -} - -type metadataDiskImageVolumeDescription struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s DiskImageVolumeDescription) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DiskImageVolumeDescription) GoString() string { - return s.String() -} - -// Describes a block device for an EBS volume. -type EbsBlockDevice struct { - // Indicates whether the EBS volume is deleted on instance termination. - DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"` - - // Indicates whether the EBS volume is encrypted. Encrypted Amazon EBS volumes - // may only be attached to instances that support Amazon EBS encryption. - Encrypted *bool `locationName:"encrypted" type:"boolean"` - - // The number of I/O operations per second (IOPS) that the volume supports. - // For Provisioned IOPS (SSD) volumes, this represents the number of IOPS that - // are provisioned for the volume. For General Purpose (SSD) volumes, this represents - // the baseline performance of the volume and the rate at which the volume accumulates - // I/O credits for bursting. For more information on General Purpose (SSD) baseline - // performance, I/O credits, and bursting, see Amazon EBS Volume Types (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html) - // in the Amazon Elastic Compute Cloud User Guide. - // - // Constraint: Range is 100 to 20000 for Provisioned IOPS (SSD) volumes and - // 3 to 10000 for General Purpose (SSD) volumes. - // - // Condition: This parameter is required for requests to create io1 volumes; - // it is not used in requests to create standard or gp2 volumes. - Iops *int64 `locationName:"iops" type:"integer"` - - // The ID of the snapshot. - SnapshotId *string `locationName:"snapshotId" type:"string"` - - // The size of the volume, in GiB. - // - // Constraints: 1-1024 for standard volumes, 1-16384 for gp2 volumes, and 4-16384 - // for io1 volumes. If you specify a snapshot, the volume size must be equal - // to or larger than the snapshot size. - // - // Default: If you're creating the volume from a snapshot and don't specify - // a volume size, the default is the snapshot size. - VolumeSize *int64 `locationName:"volumeSize" type:"integer"` - - // The volume type. gp2 for General Purpose (SSD) volumes, io1 for Provisioned - // IOPS (SSD) volumes, and standard for Magnetic volumes. - // - // Default: standard - VolumeType *string `locationName:"volumeType" type:"string" enum:"VolumeType"` - - metadataEbsBlockDevice `json:"-" xml:"-"` -} - -type metadataEbsBlockDevice struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s EbsBlockDevice) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s EbsBlockDevice) GoString() string { - return s.String() -} - -// Describes a parameter used to set up an EBS volume in a block device mapping. -type EbsInstanceBlockDevice struct { - // The time stamp when the attachment initiated. - AttachTime *time.Time `locationName:"attachTime" type:"timestamp" timestampFormat:"iso8601"` - - // Indicates whether the volume is deleted on instance termination. - DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"` - - // The attachment state. - Status *string `locationName:"status" type:"string" enum:"AttachmentStatus"` - - // The ID of the EBS volume. - VolumeId *string `locationName:"volumeId" type:"string"` - - metadataEbsInstanceBlockDevice `json:"-" xml:"-"` -} - -type metadataEbsInstanceBlockDevice struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s EbsInstanceBlockDevice) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s EbsInstanceBlockDevice) GoString() string { - return s.String() -} - -type EbsInstanceBlockDeviceSpecification struct { - // Indicates whether the volume is deleted on instance termination. - DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"` - - // The ID of the EBS volume. - VolumeId *string `locationName:"volumeId" type:"string"` - - metadataEbsInstanceBlockDeviceSpecification `json:"-" xml:"-"` -} - -type metadataEbsInstanceBlockDeviceSpecification struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s EbsInstanceBlockDeviceSpecification) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s EbsInstanceBlockDeviceSpecification) GoString() string { - return s.String() -} - -type EnableVgwRoutePropagationInput struct { - // The ID of the virtual private gateway. - GatewayId *string `type:"string" required:"true"` - - // The ID of the route table. - RouteTableId *string `type:"string" required:"true"` - - metadataEnableVgwRoutePropagationInput `json:"-" xml:"-"` -} - -type metadataEnableVgwRoutePropagationInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s EnableVgwRoutePropagationInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s EnableVgwRoutePropagationInput) GoString() string { - return s.String() -} - -type EnableVgwRoutePropagationOutput struct { - metadataEnableVgwRoutePropagationOutput `json:"-" xml:"-"` -} - -type metadataEnableVgwRoutePropagationOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s EnableVgwRoutePropagationOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s EnableVgwRoutePropagationOutput) GoString() string { - return s.String() -} - -type EnableVolumeIOInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the volume. - VolumeId *string `locationName:"volumeId" type:"string" required:"true"` - - metadataEnableVolumeIOInput `json:"-" xml:"-"` -} - -type metadataEnableVolumeIOInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s EnableVolumeIOInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s EnableVolumeIOInput) GoString() string { - return s.String() -} - -type EnableVolumeIOOutput struct { - metadataEnableVolumeIOOutput `json:"-" xml:"-"` -} - -type metadataEnableVolumeIOOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s EnableVolumeIOOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s EnableVolumeIOOutput) GoString() string { - return s.String() -} - -type EnableVpcClassicLinkInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the VPC. - VpcId *string `locationName:"vpcId" type:"string" required:"true"` - - metadataEnableVpcClassicLinkInput `json:"-" xml:"-"` -} - -type metadataEnableVpcClassicLinkInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s EnableVpcClassicLinkInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s EnableVpcClassicLinkInput) GoString() string { - return s.String() -} - -type EnableVpcClassicLinkOutput struct { - // Returns true if the request succeeds; otherwise, it returns an error. - Return *bool `locationName:"return" type:"boolean"` - - metadataEnableVpcClassicLinkOutput `json:"-" xml:"-"` -} - -type metadataEnableVpcClassicLinkOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s EnableVpcClassicLinkOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s EnableVpcClassicLinkOutput) GoString() string { - return s.String() -} - -// Describes a Spot fleet event. -type EventInformation struct { - // The description of the event. - EventDescription *string `locationName:"eventDescription" type:"string"` - - // The event. - // - // The following are the error events. - // - // iamFleetRoleInvalid - The Spot fleet did not have the required permissions - // either to launch or terminate an instance. - // - // launchSpecTemporarilyBlacklisted - The configuration is not valid and - // several attempts to launch instances have failed. For more information, see - // the description of the event. - // - // spotFleetRequestConfigurationInvalid - The configuration is not valid. - // For more information, see the description of the event. - // - // spotInstanceCountLimitExceeded - You've reached the limit on the number - // of Spot instances that you can launch. - // - // The following are the fleetRequestChange events. - // - // active - The Spot fleet has been validated and Amazon EC2 is attempting - // to maintain the target number of running Spot instances. - // - // cancelled - The Spot fleet is canceled and has no running Spot instances. - // The Spot fleet will be deleted two days after its instances were terminated. - // - // cancelled_running - The Spot fleet is canceled and will not launch additional - // Spot instances, but its existing Spot instances continue to run until they - // are interrupted or terminated. - // - // cancelled_terminating - The Spot fleet is canceled and its Spot instances - // are terminating. - // - // expired - The Spot fleet request has expired. A subsequent event indicates - // that the instances were terminated, if the request was created with TerminateInstancesWithExpiration - // set. - // - // modify_in_progress - A request to modify the Spot fleet request was accepted - // and is in progress. - // - // modify_successful - The Spot fleet request was modified. - // - // price_update - The bid price for a launch configuration was adjusted because - // it was too high. This change is permanent. - // - // submitted - The Spot fleet request is being evaluated and Amazon EC2 is - // preparing to launch the target number of Spot instances. - // - // The following are the instanceChange events. - // - // launched - A bid was fulfilled and a new instance was launched. - // - // terminated - An instance was terminated by the user. - EventSubType *string `locationName:"eventSubType" type:"string"` - - // The ID of the instance. This information is available only for instanceChange - // events. - InstanceId *string `locationName:"instanceId" type:"string"` - - metadataEventInformation `json:"-" xml:"-"` -} - -type metadataEventInformation struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s EventInformation) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s EventInformation) GoString() string { - return s.String() -} - -// Describes an instance export task. -type ExportTask struct { - // A description of the resource being exported. - Description *string `locationName:"description" type:"string"` - - // The ID of the export task. - ExportTaskId *string `locationName:"exportTaskId" type:"string"` - - // Information about the export task. - ExportToS3Task *ExportToS3Task `locationName:"exportToS3" type:"structure"` - - // Information about the instance to export. - InstanceExportDetails *InstanceExportDetails `locationName:"instanceExport" type:"structure"` - - // The state of the export task. - State *string `locationName:"state" type:"string" enum:"ExportTaskState"` - - // The status message related to the export task. - StatusMessage *string `locationName:"statusMessage" type:"string"` - - metadataExportTask `json:"-" xml:"-"` -} - -type metadataExportTask struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ExportTask) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ExportTask) GoString() string { - return s.String() -} - -// Describes the format and location for an instance export task. -type ExportToS3Task struct { - // The container format used to combine disk images with metadata (such as OVF). - // If absent, only the disk image is exported. - ContainerFormat *string `locationName:"containerFormat" type:"string" enum:"ContainerFormat"` - - // The format for the exported image. - DiskImageFormat *string `locationName:"diskImageFormat" type:"string" enum:"DiskImageFormat"` - - // The S3 bucket for the destination image. The destination bucket must exist - // and grant WRITE and READ_ACP permissions to the AWS account vm-import-export@amazon.com. - S3Bucket *string `locationName:"s3Bucket" type:"string"` - - // The encryption key for your S3 bucket. - S3Key *string `locationName:"s3Key" type:"string"` - - metadataExportToS3Task `json:"-" xml:"-"` -} - -type metadataExportToS3Task struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ExportToS3Task) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ExportToS3Task) GoString() string { - return s.String() -} - -// Describes an instance export task. -type ExportToS3TaskSpecification struct { - // The container format used to combine disk images with metadata (such as OVF). - // If absent, only the disk image is exported. - ContainerFormat *string `locationName:"containerFormat" type:"string" enum:"ContainerFormat"` - - // The format for the exported image. - DiskImageFormat *string `locationName:"diskImageFormat" type:"string" enum:"DiskImageFormat"` - - // The S3 bucket for the destination image. The destination bucket must exist - // and grant WRITE and READ_ACP permissions to the AWS account vm-import-export@amazon.com. - S3Bucket *string `locationName:"s3Bucket" type:"string"` - - // The image is written to a single object in the S3 bucket at the S3 key s3prefix - // + exportTaskId + '.' + diskImageFormat. - S3Prefix *string `locationName:"s3Prefix" type:"string"` - - metadataExportToS3TaskSpecification `json:"-" xml:"-"` -} - -type metadataExportToS3TaskSpecification struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ExportToS3TaskSpecification) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ExportToS3TaskSpecification) GoString() string { - return s.String() -} - -// A filter name and value pair that is used to return a more specific list -// of results. Filters can be used to match a set of resources by various criteria, -// such as tags, attributes, or IDs. -type Filter struct { - // The name of the filter. Filter names are case-sensitive. - Name *string `type:"string"` - - // One or more filter values. Filter values are case-sensitive. - Values []*string `locationName:"Value" locationNameList:"item" type:"list"` - - metadataFilter `json:"-" xml:"-"` -} - -type metadataFilter struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s Filter) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s Filter) GoString() string { - return s.String() -} - -// Describes a flow log. -type FlowLog struct { - // The date and time the flow log was created. - CreationTime *time.Time `locationName:"creationTime" type:"timestamp" timestampFormat:"iso8601"` - - // Information about the error that occurred. Rate limited indicates that CloudWatch - // logs throttling has been applied for one or more network interfaces. Access - // error indicates that the IAM role associated with the flow log does not have - // sufficient permissions to publish to CloudWatch Logs. Unknown error indicates - // an internal error. - DeliverLogsErrorMessage *string `locationName:"deliverLogsErrorMessage" type:"string"` - - // The ARN of the IAM role that posts logs to CloudWatch Logs. - DeliverLogsPermissionArn *string `locationName:"deliverLogsPermissionArn" type:"string"` - - // The status of the logs delivery (SUCCESS | FAILED). - DeliverLogsStatus *string `locationName:"deliverLogsStatus" type:"string"` - - // The flow log ID. - FlowLogId *string `locationName:"flowLogId" type:"string"` - - // The status of the flow log (ACTIVE). - FlowLogStatus *string `locationName:"flowLogStatus" type:"string"` - - // The name of the flow log group. - LogGroupName *string `locationName:"logGroupName" type:"string"` - - // The ID of the resource on which the flow log was created. - ResourceId *string `locationName:"resourceId" type:"string"` - - // The type of traffic captured for the flow log. - TrafficType *string `locationName:"trafficType" type:"string" enum:"TrafficType"` - - metadataFlowLog `json:"-" xml:"-"` -} - -type metadataFlowLog struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s FlowLog) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s FlowLog) GoString() string { - return s.String() -} - -type GetConsoleOutputInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the instance. - InstanceId *string `type:"string" required:"true"` - - metadataGetConsoleOutputInput `json:"-" xml:"-"` -} - -type metadataGetConsoleOutputInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s GetConsoleOutputInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s GetConsoleOutputInput) GoString() string { - return s.String() -} - -type GetConsoleOutputOutput struct { - // The ID of the instance. - InstanceId *string `locationName:"instanceId" type:"string"` - - // The console output, Base64 encoded. - Output *string `locationName:"output" type:"string"` - - // The time the output was last updated. - Timestamp *time.Time `locationName:"timestamp" type:"timestamp" timestampFormat:"iso8601"` - - metadataGetConsoleOutputOutput `json:"-" xml:"-"` -} - -type metadataGetConsoleOutputOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s GetConsoleOutputOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s GetConsoleOutputOutput) GoString() string { - return s.String() -} - -type GetPasswordDataInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the Windows instance. - InstanceId *string `type:"string" required:"true"` - - metadataGetPasswordDataInput `json:"-" xml:"-"` -} - -type metadataGetPasswordDataInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s GetPasswordDataInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s GetPasswordDataInput) GoString() string { - return s.String() -} - -type GetPasswordDataOutput struct { - // The ID of the Windows instance. - InstanceId *string `locationName:"instanceId" type:"string"` - - // The password of the instance. - PasswordData *string `locationName:"passwordData" type:"string"` - - // The time the data was last updated. - Timestamp *time.Time `locationName:"timestamp" type:"timestamp" timestampFormat:"iso8601"` - - metadataGetPasswordDataOutput `json:"-" xml:"-"` -} - -type metadataGetPasswordDataOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s GetPasswordDataOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s GetPasswordDataOutput) GoString() string { - return s.String() -} - -// Describes a security group. -type GroupIdentifier struct { - // The ID of the security group. - GroupId *string `locationName:"groupId" type:"string"` - - // The name of the security group. - GroupName *string `locationName:"groupName" type:"string"` - - metadataGroupIdentifier `json:"-" xml:"-"` -} - -type metadataGroupIdentifier struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s GroupIdentifier) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s GroupIdentifier) GoString() string { - return s.String() -} - -// Describes an event in the history of the Spot fleet request. -type HistoryRecord struct { - // Information about the event. - EventInformation *EventInformation `locationName:"eventInformation" type:"structure" required:"true"` - - // The event type. - // - // error - Indicates an error with the Spot fleet request. - // - // fleetRequestChange - Indicates a change in the status or configuration - // of the Spot fleet request. - // - // instanceChange - Indicates that an instance was launched or terminated. - EventType *string `locationName:"eventType" type:"string" required:"true" enum:"EventType"` - - // The date and time of the event, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). - Timestamp *time.Time `locationName:"timestamp" type:"timestamp" timestampFormat:"iso8601" required:"true"` - - metadataHistoryRecord `json:"-" xml:"-"` -} - -type metadataHistoryRecord struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s HistoryRecord) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s HistoryRecord) GoString() string { - return s.String() -} - -type Host struct { - // Whether auto-placement is on or off. - AutoPlacement *string `locationName:"autoPlacement" type:"string" enum:"AutoPlacement"` - - // The Availability Zone of the Dedicated host. - AvailabilityZone *string `locationName:"availabilityZone" type:"string"` - - // The number of new instances that can be launched onto the Dedicated host. - AvailableCapacity *AvailableCapacity `locationName:"availableCapacity" type:"structure"` - - // Unique, case-sensitive identifier you provide to ensure idempotency of the - // request. For more information, see How to Ensure Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html) - // in the Amazon Elastic Compute Cloud User Guide. - ClientToken *string `locationName:"clientToken" type:"string"` - - // The ID of the Dedicated host. - HostId *string `locationName:"hostId" type:"string"` - - // The hardware specifications of the Dedicated host. - HostProperties *HostProperties `locationName:"hostProperties" type:"structure"` - - // The reservation ID of the Dedicated host. This returns a "null" response - // if the Dedicated host doesn't have an associated reservation. - HostReservationId *string `locationName:"hostReservationId" type:"string"` - - // The IDs and instance type that are currently running on the Dedicated host. - Instances []*HostInstance `locationName:"instances" locationNameList:"item" type:"list"` - - // The Dedicated host's state. Can be "available", "under assessment, or "released". - State *string `locationName:"state" type:"string" enum:"AllocationState"` - - metadataHost `json:"-" xml:"-"` -} - -type metadataHost struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s Host) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s Host) GoString() string { - return s.String() -} - -type HostInstance struct { - // the IDs of instances that are running on the Dedicated host. - InstanceId *string `locationName:"instanceId" type:"string"` - - // The instance type size (e.g., m3.medium) of the running instance. - InstanceType *string `locationName:"instanceType" type:"string"` - - metadataHostInstance `json:"-" xml:"-"` -} - -type metadataHostInstance struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s HostInstance) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s HostInstance) GoString() string { - return s.String() -} - -type HostProperties struct { - // The number of cores on the Dedicated host. - Cores *int64 `locationName:"cores" type:"integer"` - - // The instance type size that the Dedicated host supports (e.g., m3.medium). - InstanceType *string `locationName:"instanceType" type:"string"` - - // The number of sockets on the Dedicated host. - Sockets *int64 `locationName:"sockets" type:"integer"` - - // The number of vCPUs on the Dedicated host. - TotalVCpus *int64 `locationName:"totalVCpus" type:"integer"` - - metadataHostProperties `json:"-" xml:"-"` -} - -type metadataHostProperties struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s HostProperties) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s HostProperties) GoString() string { - return s.String() -} - -// Describes an IAM instance profile. -type IamInstanceProfile struct { - // The Amazon Resource Name (ARN) of the instance profile. - Arn *string `locationName:"arn" type:"string"` - - // The ID of the instance profile. - Id *string `locationName:"id" type:"string"` - - metadataIamInstanceProfile `json:"-" xml:"-"` -} - -type metadataIamInstanceProfile struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s IamInstanceProfile) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s IamInstanceProfile) GoString() string { - return s.String() -} - -// Describes an IAM instance profile. -type IamInstanceProfileSpecification struct { - // The Amazon Resource Name (ARN) of the instance profile. - Arn *string `locationName:"arn" type:"string"` - - // The name of the instance profile. - Name *string `locationName:"name" type:"string"` - - metadataIamInstanceProfileSpecification `json:"-" xml:"-"` -} - -type metadataIamInstanceProfileSpecification struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s IamInstanceProfileSpecification) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s IamInstanceProfileSpecification) GoString() string { - return s.String() -} - -// Describes the ICMP type and code. -type IcmpTypeCode struct { - // The ICMP type. A value of -1 means all types. - Code *int64 `locationName:"code" type:"integer"` - - // The ICMP code. A value of -1 means all codes for the specified ICMP type. - Type *int64 `locationName:"type" type:"integer"` - - metadataIcmpTypeCode `json:"-" xml:"-"` -} - -type metadataIcmpTypeCode struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s IcmpTypeCode) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s IcmpTypeCode) GoString() string { - return s.String() -} - -// Describes the ID format for a resource. -type IdFormat struct { - // The date in UTC at which you are permanently switched over to using longer - // IDs. - Deadline *time.Time `locationName:"deadline" type:"timestamp" timestampFormat:"iso8601"` - - // The type of resource. - Resource *string `locationName:"resource" type:"string"` - - // Indicates whether longer IDs (17-character IDs) are enabled for the resource. - UseLongIds *bool `locationName:"useLongIds" type:"boolean"` - - metadataIdFormat `json:"-" xml:"-"` -} - -type metadataIdFormat struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s IdFormat) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s IdFormat) GoString() string { - return s.String() -} - -// Describes an image. -type Image struct { - // The architecture of the image. - Architecture *string `locationName:"architecture" type:"string" enum:"ArchitectureValues"` - - // Any block device mapping entries. - BlockDeviceMappings []*BlockDeviceMapping `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"` - - // The date and time the image was created. - CreationDate *string `locationName:"creationDate" type:"string"` - - // The description of the AMI that was provided during image creation. - Description *string `locationName:"description" type:"string"` - - // The hypervisor type of the image. - Hypervisor *string `locationName:"hypervisor" type:"string" enum:"HypervisorType"` - - // The ID of the AMI. - ImageId *string `locationName:"imageId" type:"string"` - - // The location of the AMI. - ImageLocation *string `locationName:"imageLocation" type:"string"` - - // The AWS account alias (for example, amazon, self) or the AWS account ID of - // the AMI owner. - ImageOwnerAlias *string `locationName:"imageOwnerAlias" type:"string"` - - // The type of image. - ImageType *string `locationName:"imageType" type:"string" enum:"ImageTypeValues"` - - // The kernel associated with the image, if any. Only applicable for machine - // images. - KernelId *string `locationName:"kernelId" type:"string"` - - // The name of the AMI that was provided during image creation. - Name *string `locationName:"name" type:"string"` - - // The AWS account ID of the image owner. - OwnerId *string `locationName:"imageOwnerId" type:"string"` - - // The value is Windows for Windows AMIs; otherwise blank. - Platform *string `locationName:"platform" type:"string" enum:"PlatformValues"` - - // Any product codes associated with the AMI. - ProductCodes []*ProductCode `locationName:"productCodes" locationNameList:"item" type:"list"` - - // Indicates whether the image has public launch permissions. The value is true - // if this image has public launch permissions or false if it has only implicit - // and explicit launch permissions. - Public *bool `locationName:"isPublic" type:"boolean"` - - // The RAM disk associated with the image, if any. Only applicable for machine - // images. - RamdiskId *string `locationName:"ramdiskId" type:"string"` - - // The device name of the root device (for example, /dev/sda1 or /dev/xvda). - RootDeviceName *string `locationName:"rootDeviceName" type:"string"` - - // The type of root device used by the AMI. The AMI can use an EBS volume or - // an instance store volume. - RootDeviceType *string `locationName:"rootDeviceType" type:"string" enum:"DeviceType"` - - // Specifies whether enhanced networking is enabled. - SriovNetSupport *string `locationName:"sriovNetSupport" type:"string"` - - // The current state of the AMI. If the state is available, the image is successfully - // registered and can be used to launch an instance. - State *string `locationName:"imageState" type:"string" enum:"ImageState"` - - // The reason for the state change. - StateReason *StateReason `locationName:"stateReason" type:"structure"` - - // Any tags assigned to the image. - Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` - - // The type of virtualization of the AMI. - VirtualizationType *string `locationName:"virtualizationType" type:"string" enum:"VirtualizationType"` - - metadataImage `json:"-" xml:"-"` -} - -type metadataImage struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s Image) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s Image) GoString() string { - return s.String() -} - -// Describes the disk container object for an import image task. -type ImageDiskContainer struct { - // The description of the disk image. - Description *string `type:"string"` - - // The block device mapping for the disk. - DeviceName *string `type:"string"` - - // The format of the disk image being imported. - // - // Valid values: RAW | VHD | VMDK | OVA - Format *string `type:"string"` - - // The ID of the EBS snapshot to be used for importing the snapshot. - SnapshotId *string `type:"string"` - - // The URL to the Amazon S3-based disk image being imported. The URL can either - // be a https URL (https://..) or an Amazon S3 URL (s3://..) - Url *string `type:"string"` - - // The S3 bucket for the disk image. - UserBucket *UserBucket `type:"structure"` - - metadataImageDiskContainer `json:"-" xml:"-"` -} - -type metadataImageDiskContainer struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ImageDiskContainer) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ImageDiskContainer) GoString() string { - return s.String() -} - -type ImportImageInput struct { - // The architecture of the virtual machine. - // - // Valid values: i386 | x86_64 - Architecture *string `type:"string"` - - // The client-specific data. - ClientData *ClientData `type:"structure"` - - // The token to enable idempotency for VM import requests. - ClientToken *string `type:"string"` - - // A description string for the import image task. - Description *string `type:"string"` - - // Information about the disk containers. - DiskContainers []*ImageDiskContainer `locationName:"DiskContainer" locationNameList:"item" type:"list"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `type:"boolean"` - - // The target hypervisor platform. - // - // Valid values: xen - Hypervisor *string `type:"string"` - - // The license type to be used for the Amazon Machine Image (AMI) after importing. - // - // Note: You may only use BYOL if you have existing licenses with rights to - // use these licenses in a third party cloud like AWS. For more information, - // see VM Import/Export Prerequisites (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/VMImportPrerequisites.html) - // in the Amazon Elastic Compute Cloud User Guide. - // - // Valid values: AWS | BYOL - LicenseType *string `type:"string"` - - // The operating system of the virtual machine. - // - // Valid values: Windows | Linux - Platform *string `type:"string"` - - // The name of the role to use when not using the default role, 'vmimport'. - RoleName *string `type:"string"` - - metadataImportImageInput `json:"-" xml:"-"` -} - -type metadataImportImageInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ImportImageInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ImportImageInput) GoString() string { - return s.String() -} - -type ImportImageOutput struct { - // The architecture of the virtual machine. - Architecture *string `locationName:"architecture" type:"string"` - - // A description of the import task. - Description *string `locationName:"description" type:"string"` - - // The target hypervisor of the import task. - Hypervisor *string `locationName:"hypervisor" type:"string"` - - // The ID of the Amazon Machine Image (AMI) created by the import task. - ImageId *string `locationName:"imageId" type:"string"` - - // The task ID of the import image task. - ImportTaskId *string `locationName:"importTaskId" type:"string"` - - // The license type of the virtual machine. - LicenseType *string `locationName:"licenseType" type:"string"` - - // The operating system of the virtual machine. - Platform *string `locationName:"platform" type:"string"` - - // The progress of the task. - Progress *string `locationName:"progress" type:"string"` - - // Information about the snapshots. - SnapshotDetails []*SnapshotDetail `locationName:"snapshotDetailSet" locationNameList:"item" type:"list"` - - // A brief status of the task. - Status *string `locationName:"status" type:"string"` - - // A detailed status message of the import task. - StatusMessage *string `locationName:"statusMessage" type:"string"` - - metadataImportImageOutput `json:"-" xml:"-"` -} - -type metadataImportImageOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ImportImageOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ImportImageOutput) GoString() string { - return s.String() -} - -// Describes an import image task. -type ImportImageTask struct { - // The architecture of the virtual machine. - // - // Valid values: i386 | x86_64 - Architecture *string `locationName:"architecture" type:"string"` - - // A description of the import task. - Description *string `locationName:"description" type:"string"` - - // The target hypervisor for the import task. - // - // Valid values: xen - Hypervisor *string `locationName:"hypervisor" type:"string"` - - // The ID of the Amazon Machine Image (AMI) of the imported virtual machine. - ImageId *string `locationName:"imageId" type:"string"` - - // The ID of the import image task. - ImportTaskId *string `locationName:"importTaskId" type:"string"` - - // The license type of the virtual machine. - LicenseType *string `locationName:"licenseType" type:"string"` - - // The description string for the import image task. - Platform *string `locationName:"platform" type:"string"` - - // The percentage of progress of the import image task. - Progress *string `locationName:"progress" type:"string"` - - // Information about the snapshots. - SnapshotDetails []*SnapshotDetail `locationName:"snapshotDetailSet" locationNameList:"item" type:"list"` - - // A brief status for the import image task. - Status *string `locationName:"status" type:"string"` - - // A descriptive status message for the import image task. - StatusMessage *string `locationName:"statusMessage" type:"string"` - - metadataImportImageTask `json:"-" xml:"-"` -} - -type metadataImportImageTask struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ImportImageTask) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ImportImageTask) GoString() string { - return s.String() -} - -type ImportInstanceInput struct { - // A description for the instance being imported. - Description *string `locationName:"description" type:"string"` - - // The disk image. - DiskImages []*DiskImage `locationName:"diskImage" type:"list"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The launch specification. - LaunchSpecification *ImportInstanceLaunchSpecification `locationName:"launchSpecification" type:"structure"` - - // The instance operating system. - Platform *string `locationName:"platform" type:"string" required:"true" enum:"PlatformValues"` - - metadataImportInstanceInput `json:"-" xml:"-"` -} - -type metadataImportInstanceInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ImportInstanceInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ImportInstanceInput) GoString() string { - return s.String() -} - -// Describes the launch specification for VM import. -type ImportInstanceLaunchSpecification struct { - // Reserved. - AdditionalInfo *string `locationName:"additionalInfo" type:"string"` - - // The architecture of the instance. - Architecture *string `locationName:"architecture" type:"string" enum:"ArchitectureValues"` - - // One or more security group IDs. - GroupIds []*string `locationName:"GroupId" locationNameList:"SecurityGroupId" type:"list"` - - // One or more security group names. - GroupNames []*string `locationName:"GroupName" locationNameList:"SecurityGroup" type:"list"` - - // Indicates whether an instance stops or terminates when you initiate shutdown - // from the instance (using the operating system command for system shutdown). - InstanceInitiatedShutdownBehavior *string `locationName:"instanceInitiatedShutdownBehavior" type:"string" enum:"ShutdownBehavior"` - - // The instance type. For more information about the instance types that you - // can import, see Before You Get Started (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/VMImportPrerequisites.html) - // in the Amazon Elastic Compute Cloud User Guide. - InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` - - // Indicates whether monitoring is enabled. - Monitoring *bool `locationName:"monitoring" type:"boolean"` - - // The placement information for the instance. - Placement *Placement `locationName:"placement" type:"structure"` - - // [EC2-VPC] An available IP address from the IP address range of the subnet. - PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"` - - // [EC2-VPC] The ID of the subnet in which to launch the instance. - SubnetId *string `locationName:"subnetId" type:"string"` - - // The Base64-encoded MIME user data to be made available to the instance. - UserData *UserData `locationName:"userData" type:"structure"` - - metadataImportInstanceLaunchSpecification `json:"-" xml:"-"` -} - -type metadataImportInstanceLaunchSpecification struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ImportInstanceLaunchSpecification) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ImportInstanceLaunchSpecification) GoString() string { - return s.String() -} - -type ImportInstanceOutput struct { - // Information about the conversion task. - ConversionTask *ConversionTask `locationName:"conversionTask" type:"structure"` - - metadataImportInstanceOutput `json:"-" xml:"-"` -} - -type metadataImportInstanceOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ImportInstanceOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ImportInstanceOutput) GoString() string { - return s.String() -} - -// Describes an import instance task. -type ImportInstanceTaskDetails struct { - // A description of the task. - Description *string `locationName:"description" type:"string"` - - // The ID of the instance. - InstanceId *string `locationName:"instanceId" type:"string"` - - // The instance operating system. - Platform *string `locationName:"platform" type:"string" enum:"PlatformValues"` - - // One or more volumes. - Volumes []*ImportInstanceVolumeDetailItem `locationName:"volumes" locationNameList:"item" type:"list" required:"true"` - - metadataImportInstanceTaskDetails `json:"-" xml:"-"` -} - -type metadataImportInstanceTaskDetails struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ImportInstanceTaskDetails) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ImportInstanceTaskDetails) GoString() string { - return s.String() -} - -// Describes an import volume task. -type ImportInstanceVolumeDetailItem struct { - // The Availability Zone where the resulting instance will reside. - AvailabilityZone *string `locationName:"availabilityZone" type:"string" required:"true"` - - // The number of bytes converted so far. - BytesConverted *int64 `locationName:"bytesConverted" type:"long" required:"true"` - - // A description of the task. - Description *string `locationName:"description" type:"string"` - - // The image. - Image *DiskImageDescription `locationName:"image" type:"structure" required:"true"` - - // The status of the import of this particular disk image. - Status *string `locationName:"status" type:"string" required:"true"` - - // The status information or errors related to the disk image. - StatusMessage *string `locationName:"statusMessage" type:"string"` - - // The volume. - Volume *DiskImageVolumeDescription `locationName:"volume" type:"structure" required:"true"` - - metadataImportInstanceVolumeDetailItem `json:"-" xml:"-"` -} - -type metadataImportInstanceVolumeDetailItem struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ImportInstanceVolumeDetailItem) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ImportInstanceVolumeDetailItem) GoString() string { - return s.String() -} - -type ImportKeyPairInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // A unique name for the key pair. - KeyName *string `locationName:"keyName" type:"string" required:"true"` - - // The public key. You must base64 encode the public key material before sending - // it to AWS. - PublicKeyMaterial []byte `locationName:"publicKeyMaterial" type:"blob" required:"true"` - - metadataImportKeyPairInput `json:"-" xml:"-"` -} - -type metadataImportKeyPairInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ImportKeyPairInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ImportKeyPairInput) GoString() string { - return s.String() -} - -type ImportKeyPairOutput struct { - // The MD5 public key fingerprint as specified in section 4 of RFC 4716. - KeyFingerprint *string `locationName:"keyFingerprint" type:"string"` - - // The key pair name you provided. - KeyName *string `locationName:"keyName" type:"string"` - - metadataImportKeyPairOutput `json:"-" xml:"-"` -} - -type metadataImportKeyPairOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ImportKeyPairOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ImportKeyPairOutput) GoString() string { - return s.String() -} - -type ImportSnapshotInput struct { - // The client-specific data. - ClientData *ClientData `type:"structure"` - - // Token to enable idempotency for VM import requests. - ClientToken *string `type:"string"` - - // The description string for the import snapshot task. - Description *string `type:"string"` - - // Information about the disk container. - DiskContainer *SnapshotDiskContainer `type:"structure"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `type:"boolean"` - - // The name of the role to use when not using the default role, 'vmimport'. - RoleName *string `type:"string"` - - metadataImportSnapshotInput `json:"-" xml:"-"` -} - -type metadataImportSnapshotInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ImportSnapshotInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ImportSnapshotInput) GoString() string { - return s.String() -} - -type ImportSnapshotOutput struct { - // A description of the import snapshot task. - Description *string `locationName:"description" type:"string"` - - // The ID of the import snapshot task. - ImportTaskId *string `locationName:"importTaskId" type:"string"` - - // Information about the import snapshot task. - SnapshotTaskDetail *SnapshotTaskDetail `locationName:"snapshotTaskDetail" type:"structure"` - - metadataImportSnapshotOutput `json:"-" xml:"-"` -} - -type metadataImportSnapshotOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ImportSnapshotOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ImportSnapshotOutput) GoString() string { - return s.String() -} - -// Describes an import snapshot task. -type ImportSnapshotTask struct { - // A description of the import snapshot task. - Description *string `locationName:"description" type:"string"` - - // The ID of the import snapshot task. - ImportTaskId *string `locationName:"importTaskId" type:"string"` - - // Describes an import snapshot task. - SnapshotTaskDetail *SnapshotTaskDetail `locationName:"snapshotTaskDetail" type:"structure"` - - metadataImportSnapshotTask `json:"-" xml:"-"` -} - -type metadataImportSnapshotTask struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ImportSnapshotTask) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ImportSnapshotTask) GoString() string { - return s.String() -} - -type ImportVolumeInput struct { - // The Availability Zone for the resulting EBS volume. - AvailabilityZone *string `locationName:"availabilityZone" type:"string" required:"true"` - - // A description of the volume. - Description *string `locationName:"description" type:"string"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The disk image. - Image *DiskImageDetail `locationName:"image" type:"structure" required:"true"` - - // The volume size. - Volume *VolumeDetail `locationName:"volume" type:"structure" required:"true"` - - metadataImportVolumeInput `json:"-" xml:"-"` -} - -type metadataImportVolumeInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ImportVolumeInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ImportVolumeInput) GoString() string { - return s.String() -} - -type ImportVolumeOutput struct { - // Information about the conversion task. - ConversionTask *ConversionTask `locationName:"conversionTask" type:"structure"` - - metadataImportVolumeOutput `json:"-" xml:"-"` -} - -type metadataImportVolumeOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ImportVolumeOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ImportVolumeOutput) GoString() string { - return s.String() -} - -// Describes an import volume task. -type ImportVolumeTaskDetails struct { - // The Availability Zone where the resulting volume will reside. - AvailabilityZone *string `locationName:"availabilityZone" type:"string" required:"true"` - - // The number of bytes converted so far. - BytesConverted *int64 `locationName:"bytesConverted" type:"long" required:"true"` - - // The description you provided when starting the import volume task. - Description *string `locationName:"description" type:"string"` - - // The image. - Image *DiskImageDescription `locationName:"image" type:"structure" required:"true"` - - // The volume. - Volume *DiskImageVolumeDescription `locationName:"volume" type:"structure" required:"true"` - - metadataImportVolumeTaskDetails `json:"-" xml:"-"` -} - -type metadataImportVolumeTaskDetails struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ImportVolumeTaskDetails) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ImportVolumeTaskDetails) GoString() string { - return s.String() -} - -// Describes an instance. -type Instance struct { - // The AMI launch index, which can be used to find this instance in the launch - // group. - AmiLaunchIndex *int64 `locationName:"amiLaunchIndex" type:"integer"` - - // The architecture of the image. - Architecture *string `locationName:"architecture" type:"string" enum:"ArchitectureValues"` - - // Any block device mapping entries for the instance. - BlockDeviceMappings []*InstanceBlockDeviceMapping `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"` - - // The idempotency token you provided when you launched the instance, if applicable. - ClientToken *string `locationName:"clientToken" type:"string"` - - // Indicates whether the instance is optimized for EBS I/O. This optimization - // provides dedicated throughput to Amazon EBS and an optimized configuration - // stack to provide optimal I/O performance. This optimization isn't available - // with all instance types. Additional usage charges apply when using an EBS - // Optimized instance. - EbsOptimized *bool `locationName:"ebsOptimized" type:"boolean"` - - // The hypervisor type of the instance. - Hypervisor *string `locationName:"hypervisor" type:"string" enum:"HypervisorType"` - - // The IAM instance profile associated with the instance, if applicable. - IamInstanceProfile *IamInstanceProfile `locationName:"iamInstanceProfile" type:"structure"` - - // The ID of the AMI used to launch the instance. - ImageId *string `locationName:"imageId" type:"string"` - - // The ID of the instance. - InstanceId *string `locationName:"instanceId" type:"string"` - - // Indicates whether this is a Spot instance. - InstanceLifecycle *string `locationName:"instanceLifecycle" type:"string" enum:"InstanceLifecycleType"` - - // The instance type. - InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` - - // The kernel associated with this instance, if applicable. - KernelId *string `locationName:"kernelId" type:"string"` - - // The name of the key pair, if this instance was launched with an associated - // key pair. - KeyName *string `locationName:"keyName" type:"string"` - - // The time the instance was launched. - LaunchTime *time.Time `locationName:"launchTime" type:"timestamp" timestampFormat:"iso8601"` - - // The monitoring information for the instance. - Monitoring *Monitoring `locationName:"monitoring" type:"structure"` - - // [EC2-VPC] One or more network interfaces for the instance. - NetworkInterfaces []*InstanceNetworkInterface `locationName:"networkInterfaceSet" locationNameList:"item" type:"list"` - - // The location where the instance launched, if applicable. - Placement *Placement `locationName:"placement" type:"structure"` - - // The value is Windows for Windows instances; otherwise blank. - Platform *string `locationName:"platform" type:"string" enum:"PlatformValues"` - - // The private DNS name assigned to the instance. This DNS name can only be - // used inside the Amazon EC2 network. This name is not available until the - // instance enters the running state. For EC2-VPC, this name is only available - // if you've enabled DNS hostnames for your VPC. - PrivateDnsName *string `locationName:"privateDnsName" type:"string"` - - // The private IP address assigned to the instance. - PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"` - - // The product codes attached to this instance, if applicable. - ProductCodes []*ProductCode `locationName:"productCodes" locationNameList:"item" type:"list"` - - // The public DNS name assigned to the instance. This name is not available - // until the instance enters the running state. For EC2-VPC, this name is only - // available if you've enabled DNS hostnames for your VPC. - PublicDnsName *string `locationName:"dnsName" type:"string"` - - // The public IP address assigned to the instance, if applicable. - PublicIpAddress *string `locationName:"ipAddress" type:"string"` - - // The RAM disk associated with this instance, if applicable. - RamdiskId *string `locationName:"ramdiskId" type:"string"` - - // The root device name (for example, /dev/sda1 or /dev/xvda). - RootDeviceName *string `locationName:"rootDeviceName" type:"string"` - - // The root device type used by the AMI. The AMI can use an EBS volume or an - // instance store volume. - RootDeviceType *string `locationName:"rootDeviceType" type:"string" enum:"DeviceType"` - - // One or more security groups for the instance. - SecurityGroups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"` - - // Specifies whether to enable an instance launched in a VPC to perform NAT. - // This controls whether source/destination checking is enabled on the instance. - // A value of true means checking is enabled, and false means checking is disabled. - // The value must be false for the instance to perform NAT. For more information, - // see NAT Instances (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html) - // in the Amazon Virtual Private Cloud User Guide. - SourceDestCheck *bool `locationName:"sourceDestCheck" type:"boolean"` - - // If the request is a Spot instance request, the ID of the request. - SpotInstanceRequestId *string `locationName:"spotInstanceRequestId" type:"string"` - - // Specifies whether enhanced networking is enabled. - SriovNetSupport *string `locationName:"sriovNetSupport" type:"string"` - - // The current state of the instance. - State *InstanceState `locationName:"instanceState" type:"structure"` - - // The reason for the most recent state transition. - StateReason *StateReason `locationName:"stateReason" type:"structure"` - - // The reason for the most recent state transition. This might be an empty string. - StateTransitionReason *string `locationName:"reason" type:"string"` - - // [EC2-VPC] The ID of the subnet in which the instance is running. - SubnetId *string `locationName:"subnetId" type:"string"` - - // Any tags assigned to the instance. - Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` - - // The virtualization type of the instance. - VirtualizationType *string `locationName:"virtualizationType" type:"string" enum:"VirtualizationType"` - - // [EC2-VPC] The ID of the VPC in which the instance is running. - VpcId *string `locationName:"vpcId" type:"string"` - - metadataInstance `json:"-" xml:"-"` -} - -type metadataInstance struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s Instance) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s Instance) GoString() string { - return s.String() -} - -// Describes a block device mapping. -type InstanceBlockDeviceMapping struct { - // The device name exposed to the instance (for example, /dev/sdh or xvdh). - DeviceName *string `locationName:"deviceName" type:"string"` - - // Parameters used to automatically set up EBS volumes when the instance is - // launched. - Ebs *EbsInstanceBlockDevice `locationName:"ebs" type:"structure"` - - metadataInstanceBlockDeviceMapping `json:"-" xml:"-"` -} - -type metadataInstanceBlockDeviceMapping struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s InstanceBlockDeviceMapping) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s InstanceBlockDeviceMapping) GoString() string { - return s.String() -} - -// Describes a block device mapping entry. -type InstanceBlockDeviceMappingSpecification struct { - // The device name exposed to the instance (for example, /dev/sdh or xvdh). - DeviceName *string `locationName:"deviceName" type:"string"` - - // Parameters used to automatically set up EBS volumes when the instance is - // launched. - Ebs *EbsInstanceBlockDeviceSpecification `locationName:"ebs" type:"structure"` - - // suppress the specified device included in the block device mapping. - NoDevice *string `locationName:"noDevice" type:"string"` - - // The virtual device name. - VirtualName *string `locationName:"virtualName" type:"string"` - - metadataInstanceBlockDeviceMappingSpecification `json:"-" xml:"-"` -} - -type metadataInstanceBlockDeviceMappingSpecification struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s InstanceBlockDeviceMappingSpecification) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s InstanceBlockDeviceMappingSpecification) GoString() string { - return s.String() -} - -type InstanceCapacity struct { - // The number of instances that can still be launched onto the Dedicated host. - AvailableCapacity *int64 `locationName:"availableCapacity" type:"integer"` - - // The instance type size supported by the Dedicated host. - InstanceType *string `locationName:"instanceType" type:"string"` - - // The total number of instances that can be launched onto the Dedicated host. - TotalCapacity *int64 `locationName:"totalCapacity" type:"integer"` - - metadataInstanceCapacity `json:"-" xml:"-"` -} - -type metadataInstanceCapacity struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s InstanceCapacity) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s InstanceCapacity) GoString() string { - return s.String() -} - -// Describes a Reserved instance listing state. -type InstanceCount struct { - // The number of listed Reserved instances in the state specified by the state. - InstanceCount *int64 `locationName:"instanceCount" type:"integer"` - - // The states of the listed Reserved instances. - State *string `locationName:"state" type:"string" enum:"ListingState"` - - metadataInstanceCount `json:"-" xml:"-"` -} - -type metadataInstanceCount struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s InstanceCount) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s InstanceCount) GoString() string { - return s.String() -} - -// Describes an instance to export. -type InstanceExportDetails struct { - // The ID of the resource being exported. - InstanceId *string `locationName:"instanceId" type:"string"` - - // The target virtualization environment. - TargetEnvironment *string `locationName:"targetEnvironment" type:"string" enum:"ExportEnvironment"` - - metadataInstanceExportDetails `json:"-" xml:"-"` -} - -type metadataInstanceExportDetails struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s InstanceExportDetails) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s InstanceExportDetails) GoString() string { - return s.String() -} - -// Describes the monitoring information of the instance. -type InstanceMonitoring struct { - // The ID of the instance. - InstanceId *string `locationName:"instanceId" type:"string"` - - // The monitoring information. - Monitoring *Monitoring `locationName:"monitoring" type:"structure"` - - metadataInstanceMonitoring `json:"-" xml:"-"` -} - -type metadataInstanceMonitoring struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s InstanceMonitoring) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s InstanceMonitoring) GoString() string { - return s.String() -} - -// Describes a network interface. -type InstanceNetworkInterface struct { - // The association information for an Elastic IP associated with the network - // interface. - Association *InstanceNetworkInterfaceAssociation `locationName:"association" type:"structure"` - - // The network interface attachment. - Attachment *InstanceNetworkInterfaceAttachment `locationName:"attachment" type:"structure"` - - // The description. - Description *string `locationName:"description" type:"string"` - - // One or more security groups. - Groups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"` - - // The MAC address. - MacAddress *string `locationName:"macAddress" type:"string"` - - // The ID of the network interface. - NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"` - - // The ID of the AWS account that created the network interface. - OwnerId *string `locationName:"ownerId" type:"string"` - - // The private DNS name. - PrivateDnsName *string `locationName:"privateDnsName" type:"string"` - - // The IP address of the network interface within the subnet. - PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"` - - // The private IP addresses associated with the network interface. - PrivateIpAddresses []*InstancePrivateIpAddress `locationName:"privateIpAddressesSet" locationNameList:"item" type:"list"` - - // Indicates whether to validate network traffic to or from this network interface. - SourceDestCheck *bool `locationName:"sourceDestCheck" type:"boolean"` - - // The status of the network interface. - Status *string `locationName:"status" type:"string" enum:"NetworkInterfaceStatus"` - - // The ID of the subnet. - SubnetId *string `locationName:"subnetId" type:"string"` - - // The ID of the VPC. - VpcId *string `locationName:"vpcId" type:"string"` - - metadataInstanceNetworkInterface `json:"-" xml:"-"` -} - -type metadataInstanceNetworkInterface struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s InstanceNetworkInterface) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s InstanceNetworkInterface) GoString() string { - return s.String() -} - -// Describes association information for an Elastic IP address. -type InstanceNetworkInterfaceAssociation struct { - // The ID of the owner of the Elastic IP address. - IpOwnerId *string `locationName:"ipOwnerId" type:"string"` - - // The public DNS name. - PublicDnsName *string `locationName:"publicDnsName" type:"string"` - - // The public IP address or Elastic IP address bound to the network interface. - PublicIp *string `locationName:"publicIp" type:"string"` - - metadataInstanceNetworkInterfaceAssociation `json:"-" xml:"-"` -} - -type metadataInstanceNetworkInterfaceAssociation struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s InstanceNetworkInterfaceAssociation) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s InstanceNetworkInterfaceAssociation) GoString() string { - return s.String() -} - -// Describes a network interface attachment. -type InstanceNetworkInterfaceAttachment struct { - // The time stamp when the attachment initiated. - AttachTime *time.Time `locationName:"attachTime" type:"timestamp" timestampFormat:"iso8601"` - - // The ID of the network interface attachment. - AttachmentId *string `locationName:"attachmentId" type:"string"` - - // Indicates whether the network interface is deleted when the instance is terminated. - DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"` - - // The index of the device on the instance for the network interface attachment. - DeviceIndex *int64 `locationName:"deviceIndex" type:"integer"` - - // The attachment state. - Status *string `locationName:"status" type:"string" enum:"AttachmentStatus"` - - metadataInstanceNetworkInterfaceAttachment `json:"-" xml:"-"` -} - -type metadataInstanceNetworkInterfaceAttachment struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s InstanceNetworkInterfaceAttachment) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s InstanceNetworkInterfaceAttachment) GoString() string { - return s.String() -} - -// Describes a network interface. -type InstanceNetworkInterfaceSpecification struct { - // Indicates whether to assign a public IP address to an instance you launch - // in a VPC. The public IP address can only be assigned to a network interface - // for eth0, and can only be assigned to a new network interface, not an existing - // one. You cannot specify more than one network interface in the request. If - // launching into a default subnet, the default value is true. - AssociatePublicIpAddress *bool `locationName:"associatePublicIpAddress" type:"boolean"` - - // If set to true, the interface is deleted when the instance is terminated. - // You can specify true only if creating a new network interface when launching - // an instance. - DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"` - - // The description of the network interface. Applies only if creating a network - // interface when launching an instance. - Description *string `locationName:"description" type:"string"` - - // The index of the device on the instance for the network interface attachment. - // If you are specifying a network interface in a RunInstances request, you - // must provide the device index. - DeviceIndex *int64 `locationName:"deviceIndex" type:"integer"` - - // The IDs of the security groups for the network interface. Applies only if - // creating a network interface when launching an instance. - Groups []*string `locationName:"SecurityGroupId" locationNameList:"SecurityGroupId" type:"list"` - - // The ID of the network interface. - NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"` - - // The private IP address of the network interface. Applies only if creating - // a network interface when launching an instance. - PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"` - - // One or more private IP addresses to assign to the network interface. Only - // one private IP address can be designated as primary. - PrivateIpAddresses []*PrivateIpAddressSpecification `locationName:"privateIpAddressesSet" queryName:"PrivateIpAddresses" locationNameList:"item" type:"list"` - - // The number of secondary private IP addresses. You can't specify this option - // and specify more than one private IP address using the private IP addresses - // option. - SecondaryPrivateIpAddressCount *int64 `locationName:"secondaryPrivateIpAddressCount" type:"integer"` - - // The ID of the subnet associated with the network string. Applies only if - // creating a network interface when launching an instance. - SubnetId *string `locationName:"subnetId" type:"string"` - - metadataInstanceNetworkInterfaceSpecification `json:"-" xml:"-"` -} - -type metadataInstanceNetworkInterfaceSpecification struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s InstanceNetworkInterfaceSpecification) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s InstanceNetworkInterfaceSpecification) GoString() string { - return s.String() -} - -// Describes a private IP address. -type InstancePrivateIpAddress struct { - // The association information for an Elastic IP address for the network interface. - Association *InstanceNetworkInterfaceAssociation `locationName:"association" type:"structure"` - - // Indicates whether this IP address is the primary private IP address of the - // network interface. - Primary *bool `locationName:"primary" type:"boolean"` - - // The private DNS name. - PrivateDnsName *string `locationName:"privateDnsName" type:"string"` - - // The private IP address of the network interface. - PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"` - - metadataInstancePrivateIpAddress `json:"-" xml:"-"` -} - -type metadataInstancePrivateIpAddress struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s InstancePrivateIpAddress) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s InstancePrivateIpAddress) GoString() string { - return s.String() -} - -// Describes the current state of the instance. -type InstanceState struct { - // The low byte represents the state. The high byte is an opaque internal value - // and should be ignored. - // - // 0 : pending - // - // 16 : running - // - // 32 : shutting-down - // - // 48 : terminated - // - // 64 : stopping - // - // 80 : stopped - Code *int64 `locationName:"code" type:"integer"` - - // The current state of the instance. - Name *string `locationName:"name" type:"string" enum:"InstanceStateName"` - - metadataInstanceState `json:"-" xml:"-"` -} - -type metadataInstanceState struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s InstanceState) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s InstanceState) GoString() string { - return s.String() -} - -// Describes an instance state change. -type InstanceStateChange struct { - // The current state of the instance. - CurrentState *InstanceState `locationName:"currentState" type:"structure"` - - // The ID of the instance. - InstanceId *string `locationName:"instanceId" type:"string"` - - // The previous state of the instance. - PreviousState *InstanceState `locationName:"previousState" type:"structure"` - - metadataInstanceStateChange `json:"-" xml:"-"` -} - -type metadataInstanceStateChange struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s InstanceStateChange) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s InstanceStateChange) GoString() string { - return s.String() -} - -// Describes the status of an instance. -type InstanceStatus struct { - // The Availability Zone of the instance. - AvailabilityZone *string `locationName:"availabilityZone" type:"string"` - - // Any scheduled events associated with the instance. - Events []*InstanceStatusEvent `locationName:"eventsSet" locationNameList:"item" type:"list"` - - // The ID of the instance. - InstanceId *string `locationName:"instanceId" type:"string"` - - // The intended state of the instance. DescribeInstanceStatus requires that - // an instance be in the running state. - InstanceState *InstanceState `locationName:"instanceState" type:"structure"` - - // Reports impaired functionality that stems from issues internal to the instance, - // such as impaired reachability. - InstanceStatus *InstanceStatusSummary `locationName:"instanceStatus" type:"structure"` - - // Reports impaired functionality that stems from issues related to the systems - // that support an instance, such as hardware failures and network connectivity - // problems. - SystemStatus *InstanceStatusSummary `locationName:"systemStatus" type:"structure"` - - metadataInstanceStatus `json:"-" xml:"-"` -} - -type metadataInstanceStatus struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s InstanceStatus) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s InstanceStatus) GoString() string { - return s.String() -} - -// Describes the instance status. -type InstanceStatusDetails struct { - // The time when a status check failed. For an instance that was launched and - // impaired, this is the time when the instance was launched. - ImpairedSince *time.Time `locationName:"impairedSince" type:"timestamp" timestampFormat:"iso8601"` - - // The type of instance status. - Name *string `locationName:"name" type:"string" enum:"StatusName"` - - // The status. - Status *string `locationName:"status" type:"string" enum:"StatusType"` - - metadataInstanceStatusDetails `json:"-" xml:"-"` -} - -type metadataInstanceStatusDetails struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s InstanceStatusDetails) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s InstanceStatusDetails) GoString() string { - return s.String() -} - -// Describes a scheduled event for an instance. -type InstanceStatusEvent struct { - // The event code. - Code *string `locationName:"code" type:"string" enum:"EventCode"` - - // A description of the event. - // - // After a scheduled event is completed, it can still be described for up to - // a week. If the event has been completed, this description starts with the - // following text: [Completed]. - Description *string `locationName:"description" type:"string"` - - // The latest scheduled end time for the event. - NotAfter *time.Time `locationName:"notAfter" type:"timestamp" timestampFormat:"iso8601"` - - // The earliest scheduled start time for the event. - NotBefore *time.Time `locationName:"notBefore" type:"timestamp" timestampFormat:"iso8601"` - - metadataInstanceStatusEvent `json:"-" xml:"-"` -} - -type metadataInstanceStatusEvent struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s InstanceStatusEvent) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s InstanceStatusEvent) GoString() string { - return s.String() -} - -// Describes the status of an instance. -type InstanceStatusSummary struct { - // The system instance health or application instance health. - Details []*InstanceStatusDetails `locationName:"details" locationNameList:"item" type:"list"` - - // The status. - Status *string `locationName:"status" type:"string" enum:"SummaryStatus"` - - metadataInstanceStatusSummary `json:"-" xml:"-"` -} - -type metadataInstanceStatusSummary struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s InstanceStatusSummary) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s InstanceStatusSummary) GoString() string { - return s.String() -} - -// Describes an Internet gateway. -type InternetGateway struct { - // Any VPCs attached to the Internet gateway. - Attachments []*InternetGatewayAttachment `locationName:"attachmentSet" locationNameList:"item" type:"list"` - - // The ID of the Internet gateway. - InternetGatewayId *string `locationName:"internetGatewayId" type:"string"` - - // Any tags assigned to the Internet gateway. - Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` - - metadataInternetGateway `json:"-" xml:"-"` -} - -type metadataInternetGateway struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s InternetGateway) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s InternetGateway) GoString() string { - return s.String() -} - -// Describes the attachment of a VPC to an Internet gateway. -type InternetGatewayAttachment struct { - // The current state of the attachment. - State *string `locationName:"state" type:"string" enum:"AttachmentStatus"` - - // The ID of the VPC. - VpcId *string `locationName:"vpcId" type:"string"` - - metadataInternetGatewayAttachment `json:"-" xml:"-"` -} - -type metadataInternetGatewayAttachment struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s InternetGatewayAttachment) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s InternetGatewayAttachment) GoString() string { - return s.String() -} - -// Describes a security group rule. -type IpPermission struct { - // The start of port range for the TCP and UDP protocols, or an ICMP type number. - // A value of -1 indicates all ICMP types. - FromPort *int64 `locationName:"fromPort" type:"integer"` - - // The protocol. - // - // When you call DescribeSecurityGroups, the protocol value returned is the - // number. Exception: For TCP, UDP, and ICMP, the value returned is the name - // (for example, tcp, udp, or icmp). For a list of protocol numbers, see Protocol - // Numbers (http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). - // (VPC only) When you call AuthorizeSecurityGroupIngress, you can use -1 to - // specify all. - IpProtocol *string `locationName:"ipProtocol" type:"string"` - - // One or more IP ranges. - IpRanges []*IpRange `locationName:"ipRanges" locationNameList:"item" type:"list"` - - // (Valid for AuthorizeSecurityGroupEgress, RevokeSecurityGroupEgress and DescribeSecurityGroups - // only) One or more prefix list IDs for an AWS service. In an AuthorizeSecurityGroupEgress - // request, this is the AWS service that you want to access through a VPC endpoint - // from instances associated with the security group. - PrefixListIds []*PrefixListId `locationName:"prefixListIds" locationNameList:"item" type:"list"` - - // The end of port range for the TCP and UDP protocols, or an ICMP code. A value - // of -1 indicates all ICMP codes for the specified ICMP type. - ToPort *int64 `locationName:"toPort" type:"integer"` - - // One or more security group and AWS account ID pairs. - UserIdGroupPairs []*UserIdGroupPair `locationName:"groups" locationNameList:"item" type:"list"` - - metadataIpPermission `json:"-" xml:"-"` -} - -type metadataIpPermission struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s IpPermission) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s IpPermission) GoString() string { - return s.String() -} - -// Describes an IP range. -type IpRange struct { - // The CIDR range. You can either specify a CIDR range or a source security - // group, not both. - CidrIp *string `locationName:"cidrIp" type:"string"` - - metadataIpRange `json:"-" xml:"-"` -} - -type metadataIpRange struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s IpRange) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s IpRange) GoString() string { - return s.String() -} - -// Describes a key pair. -type KeyPairInfo struct { - // If you used CreateKeyPair to create the key pair, this is the SHA-1 digest - // of the DER encoded private key. If you used ImportKeyPair to provide AWS - // the public key, this is the MD5 public key fingerprint as specified in section - // 4 of RFC4716. - KeyFingerprint *string `locationName:"keyFingerprint" type:"string"` - - // The name of the key pair. - KeyName *string `locationName:"keyName" type:"string"` - - metadataKeyPairInfo `json:"-" xml:"-"` -} - -type metadataKeyPairInfo struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s KeyPairInfo) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s KeyPairInfo) GoString() string { - return s.String() -} - -// Describes a launch permission. -type LaunchPermission struct { - // The name of the group. - Group *string `locationName:"group" type:"string" enum:"PermissionGroup"` - - // The AWS account ID. - UserId *string `locationName:"userId" type:"string"` - - metadataLaunchPermission `json:"-" xml:"-"` -} - -type metadataLaunchPermission struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s LaunchPermission) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s LaunchPermission) GoString() string { - return s.String() -} - -// Describes a launch permission modification. -type LaunchPermissionModifications struct { - // The AWS account ID to add to the list of launch permissions for the AMI. - Add []*LaunchPermission `locationNameList:"item" type:"list"` - - // The AWS account ID to remove from the list of launch permissions for the - // AMI. - Remove []*LaunchPermission `locationNameList:"item" type:"list"` - - metadataLaunchPermissionModifications `json:"-" xml:"-"` -} - -type metadataLaunchPermissionModifications struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s LaunchPermissionModifications) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s LaunchPermissionModifications) GoString() string { - return s.String() -} - -// Describes the launch specification for an instance. -type LaunchSpecification struct { - // Deprecated. - AddressingType *string `locationName:"addressingType" type:"string"` - - // One or more block device mapping entries. - BlockDeviceMappings []*BlockDeviceMapping `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"` - - // Indicates whether the instance is optimized for EBS I/O. This optimization - // provides dedicated throughput to Amazon EBS and an optimized configuration - // stack to provide optimal EBS I/O performance. This optimization isn't available - // with all instance types. Additional usage charges apply when using an EBS - // Optimized instance. - // - // Default: false - EbsOptimized *bool `locationName:"ebsOptimized" type:"boolean"` - - // The IAM instance profile. - IamInstanceProfile *IamInstanceProfileSpecification `locationName:"iamInstanceProfile" type:"structure"` - - // The ID of the AMI. - ImageId *string `locationName:"imageId" type:"string"` - - // The instance type. - InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` - - // The ID of the kernel. - KernelId *string `locationName:"kernelId" type:"string"` - - // The name of the key pair. - KeyName *string `locationName:"keyName" type:"string"` - - // Describes the monitoring for the instance. - Monitoring *RunInstancesMonitoringEnabled `locationName:"monitoring" type:"structure"` - - // One or more network interfaces. - NetworkInterfaces []*InstanceNetworkInterfaceSpecification `locationName:"networkInterfaceSet" locationNameList:"item" type:"list"` - - // The placement information for the instance. - Placement *SpotPlacement `locationName:"placement" type:"structure"` - - // The ID of the RAM disk. - RamdiskId *string `locationName:"ramdiskId" type:"string"` - - // One or more security groups. When requesting instances in a VPC, you must - // specify the IDs of the security groups. When requesting instances in EC2-Classic, - // you can specify the names or the IDs of the security groups. - SecurityGroups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"` - - // The ID of the subnet in which to launch the instance. - SubnetId *string `locationName:"subnetId" type:"string"` - - // The Base64-encoded MIME user data to make available to the instances. - UserData *string `locationName:"userData" type:"string"` - - metadataLaunchSpecification `json:"-" xml:"-"` -} - -type metadataLaunchSpecification struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s LaunchSpecification) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s LaunchSpecification) GoString() string { - return s.String() -} - -type ModifyHostsInput struct { - // Specify whether to enable or disable auto-placement. - AutoPlacement *string `locationName:"autoPlacement" type:"string" required:"true" enum:"AutoPlacement"` - - // The host IDs of the Dedicated hosts you want to modify. - HostIds []*string `locationName:"hostId" locationNameList:"item" type:"list" required:"true"` - - metadataModifyHostsInput `json:"-" xml:"-"` -} - -type metadataModifyHostsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ModifyHostsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ModifyHostsInput) GoString() string { - return s.String() -} - -type ModifyHostsOutput struct { - // The IDs of the Dedicated hosts that were successfully modified. - Successful []*string `locationName:"successful" locationNameList:"item" type:"list"` - - // The IDs of the Dedicated hosts that could not be modified. Check whether - // the setting you requested can be used. - Unsuccessful []*UnsuccessfulItem `locationName:"unsuccessful" locationNameList:"item" type:"list"` - - metadataModifyHostsOutput `json:"-" xml:"-"` -} - -type metadataModifyHostsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ModifyHostsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ModifyHostsOutput) GoString() string { - return s.String() -} - -type ModifyIdFormatInput struct { - // The type of resource. - Resource *string `type:"string" required:"true"` - - // Indicate whether the resource should use longer IDs (17-character IDs). - UseLongIds *bool `type:"boolean" required:"true"` - - metadataModifyIdFormatInput `json:"-" xml:"-"` -} - -type metadataModifyIdFormatInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ModifyIdFormatInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ModifyIdFormatInput) GoString() string { - return s.String() -} - -type ModifyIdFormatOutput struct { - metadataModifyIdFormatOutput `json:"-" xml:"-"` -} - -type metadataModifyIdFormatOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ModifyIdFormatOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ModifyIdFormatOutput) GoString() string { - return s.String() -} - -type ModifyImageAttributeInput struct { - // The name of the attribute to modify. - Attribute *string `type:"string"` - - // A description for the AMI. - Description *AttributeValue `type:"structure"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the AMI. - ImageId *string `type:"string" required:"true"` - - // A launch permission modification. - LaunchPermission *LaunchPermissionModifications `type:"structure"` - - // The operation type. - OperationType *string `type:"string" enum:"OperationType"` - - // One or more product codes. After you add a product code to an AMI, it can't - // be removed. This is only valid when modifying the productCodes attribute. - ProductCodes []*string `locationName:"ProductCode" locationNameList:"ProductCode" type:"list"` - - // One or more user groups. This is only valid when modifying the launchPermission - // attribute. - UserGroups []*string `locationName:"UserGroup" locationNameList:"UserGroup" type:"list"` - - // One or more AWS account IDs. This is only valid when modifying the launchPermission - // attribute. - UserIds []*string `locationName:"UserId" locationNameList:"UserId" type:"list"` - - // The value of the attribute being modified. This is only valid when modifying - // the description attribute. - Value *string `type:"string"` - - metadataModifyImageAttributeInput `json:"-" xml:"-"` -} - -type metadataModifyImageAttributeInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ModifyImageAttributeInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ModifyImageAttributeInput) GoString() string { - return s.String() -} - -type ModifyImageAttributeOutput struct { - metadataModifyImageAttributeOutput `json:"-" xml:"-"` -} - -type metadataModifyImageAttributeOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ModifyImageAttributeOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ModifyImageAttributeOutput) GoString() string { - return s.String() -} - -type ModifyInstanceAttributeInput struct { - // The name of the attribute. - Attribute *string `locationName:"attribute" type:"string" enum:"InstanceAttributeName"` - - // Modifies the DeleteOnTermination attribute for volumes that are currently - // attached. The volume must be owned by the caller. If no value is specified - // for DeleteOnTermination, the default is true and the volume is deleted when - // the instance is terminated. - // - // To add instance store volumes to an Amazon EBS-backed instance, you must - // add them when you launch the instance. For more information, see Updating - // the Block Device Mapping when Launching an Instance (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html#Using_OverridingAMIBDM) - // in the Amazon Elastic Compute Cloud User Guide. - BlockDeviceMappings []*InstanceBlockDeviceMappingSpecification `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"` - - // If the value is true, you can't terminate the instance using the Amazon EC2 - // console, CLI, or API; otherwise, you can. You cannot use this paramater for - // Spot Instances. - DisableApiTermination *AttributeBooleanValue `locationName:"disableApiTermination" type:"structure"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // Specifies whether the instance is optimized for EBS I/O. This optimization - // provides dedicated throughput to Amazon EBS and an optimized configuration - // stack to provide optimal EBS I/O performance. This optimization isn't available - // with all instance types. Additional usage charges apply when using an EBS - // Optimized instance. - EbsOptimized *AttributeBooleanValue `locationName:"ebsOptimized" type:"structure"` - - // [EC2-VPC] Changes the security groups of the instance. You must specify at - // least one security group, even if it's just the default security group for - // the VPC. You must specify the security group ID, not the security group name. - Groups []*string `locationName:"GroupId" locationNameList:"groupId" type:"list"` - - // The ID of the instance. - InstanceId *string `locationName:"instanceId" type:"string" required:"true"` - - // Specifies whether an instance stops or terminates when you initiate shutdown - // from the instance (using the operating system command for system shutdown). - InstanceInitiatedShutdownBehavior *AttributeValue `locationName:"instanceInitiatedShutdownBehavior" type:"structure"` - - // Changes the instance type to the specified value. For more information, see - // Instance Types (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html). - // If the instance type is not valid, the error returned is InvalidInstanceAttributeValue. - InstanceType *AttributeValue `locationName:"instanceType" type:"structure"` - - // Changes the instance's kernel to the specified value. We recommend that you - // use PV-GRUB instead of kernels and RAM disks. For more information, see PV-GRUB - // (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedKernels.html). - Kernel *AttributeValue `locationName:"kernel" type:"structure"` - - // Changes the instance's RAM disk to the specified value. We recommend that - // you use PV-GRUB instead of kernels and RAM disks. For more information, see - // PV-GRUB (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedKernels.html). - Ramdisk *AttributeValue `locationName:"ramdisk" type:"structure"` - - // Specifies whether source/destination checking is enabled. A value of true - // means that checking is enabled, and false means checking is disabled. This - // value must be false for a NAT instance to perform NAT. - SourceDestCheck *AttributeBooleanValue `type:"structure"` - - // Set to simple to enable enhanced networking for the instance. - // - // There is no way to disable enhanced networking at this time. - // - // This option is supported only for HVM instances. Specifying this option - // with a PV instance can make it unreachable. - SriovNetSupport *AttributeValue `locationName:"sriovNetSupport" type:"structure"` - - // Changes the instance's user data to the specified value. - UserData *BlobAttributeValue `locationName:"userData" type:"structure"` - - // A new value for the attribute. Use only with the kernel, ramdisk, userData, - // disableApiTermination, or instanceInitiatedShutdownBehavior attribute. - Value *string `locationName:"value" type:"string"` - - metadataModifyInstanceAttributeInput `json:"-" xml:"-"` -} - -type metadataModifyInstanceAttributeInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ModifyInstanceAttributeInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ModifyInstanceAttributeInput) GoString() string { - return s.String() -} - -type ModifyInstanceAttributeOutput struct { - metadataModifyInstanceAttributeOutput `json:"-" xml:"-"` -} - -type metadataModifyInstanceAttributeOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ModifyInstanceAttributeOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ModifyInstanceAttributeOutput) GoString() string { - return s.String() -} - -type ModifyInstancePlacementInput struct { - // The new affinity setting for the instance. - Affinity *string `locationName:"affinity" type:"string" enum:"Affinity"` - - // The ID of the Dedicated host that the instance will have affinity with. - HostId *string `locationName:"hostId" type:"string"` - - // The ID of the instance that you are modifying. - InstanceId *string `locationName:"instanceId" type:"string" required:"true"` - - // The tenancy of the instance that you are modifying. - Tenancy *string `locationName:"tenancy" type:"string" enum:"HostTenancy"` - - metadataModifyInstancePlacementInput `json:"-" xml:"-"` -} - -type metadataModifyInstancePlacementInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ModifyInstancePlacementInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ModifyInstancePlacementInput) GoString() string { - return s.String() -} - -type ModifyInstancePlacementOutput struct { - // Is true if the request succeeds, and an error otherwise. - Return *bool `locationName:"return" type:"boolean"` - - metadataModifyInstancePlacementOutput `json:"-" xml:"-"` -} - -type metadataModifyInstancePlacementOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ModifyInstancePlacementOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ModifyInstancePlacementOutput) GoString() string { - return s.String() -} - -type ModifyNetworkInterfaceAttributeInput struct { - // Information about the interface attachment. If modifying the 'delete on termination' - // attribute, you must specify the ID of the interface attachment. - Attachment *NetworkInterfaceAttachmentChanges `locationName:"attachment" type:"structure"` - - // A description for the network interface. - Description *AttributeValue `locationName:"description" type:"structure"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // Changes the security groups for the network interface. The new set of groups - // you specify replaces the current set. You must specify at least one group, - // even if it's just the default security group in the VPC. You must specify - // the ID of the security group, not the name. - Groups []*string `locationName:"SecurityGroupId" locationNameList:"SecurityGroupId" type:"list"` - - // The ID of the network interface. - NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string" required:"true"` - - // Indicates whether source/destination checking is enabled. A value of true - // means checking is enabled, and false means checking is disabled. This value - // must be false for a NAT instance to perform NAT. For more information, see - // NAT Instances (http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html) - // in the Amazon Virtual Private Cloud User Guide. - SourceDestCheck *AttributeBooleanValue `locationName:"sourceDestCheck" type:"structure"` - - metadataModifyNetworkInterfaceAttributeInput `json:"-" xml:"-"` -} - -type metadataModifyNetworkInterfaceAttributeInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ModifyNetworkInterfaceAttributeInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ModifyNetworkInterfaceAttributeInput) GoString() string { - return s.String() -} - -type ModifyNetworkInterfaceAttributeOutput struct { - metadataModifyNetworkInterfaceAttributeOutput `json:"-" xml:"-"` -} - -type metadataModifyNetworkInterfaceAttributeOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ModifyNetworkInterfaceAttributeOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ModifyNetworkInterfaceAttributeOutput) GoString() string { - return s.String() -} - -type ModifyReservedInstancesInput struct { - // A unique, case-sensitive token you provide to ensure idempotency of your - // modification request. For more information, see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). - ClientToken *string `locationName:"clientToken" type:"string"` - - // The IDs of the Reserved instances to modify. - ReservedInstancesIds []*string `locationName:"ReservedInstancesId" locationNameList:"ReservedInstancesId" type:"list" required:"true"` - - // The configuration settings for the Reserved instances to modify. - TargetConfigurations []*ReservedInstancesConfiguration `locationName:"ReservedInstancesConfigurationSetItemType" locationNameList:"item" type:"list" required:"true"` - - metadataModifyReservedInstancesInput `json:"-" xml:"-"` -} - -type metadataModifyReservedInstancesInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ModifyReservedInstancesInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ModifyReservedInstancesInput) GoString() string { - return s.String() -} - -type ModifyReservedInstancesOutput struct { - // The ID for the modification. - ReservedInstancesModificationId *string `locationName:"reservedInstancesModificationId" type:"string"` - - metadataModifyReservedInstancesOutput `json:"-" xml:"-"` -} - -type metadataModifyReservedInstancesOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ModifyReservedInstancesOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ModifyReservedInstancesOutput) GoString() string { - return s.String() -} - -type ModifySnapshotAttributeInput struct { - // The snapshot attribute to modify. - // - // Only volume creation permissions may be modified at the customer level. - Attribute *string `type:"string" enum:"SnapshotAttributeName"` - - // A JSON representation of the snapshot attribute modification. - CreateVolumePermission *CreateVolumePermissionModifications `type:"structure"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The group to modify for the snapshot. - GroupNames []*string `locationName:"UserGroup" locationNameList:"GroupName" type:"list"` - - // The type of operation to perform to the attribute. - OperationType *string `type:"string" enum:"OperationType"` - - // The ID of the snapshot. - SnapshotId *string `type:"string" required:"true"` - - // The account ID to modify for the snapshot. - UserIds []*string `locationName:"UserId" locationNameList:"UserId" type:"list"` - - metadataModifySnapshotAttributeInput `json:"-" xml:"-"` -} - -type metadataModifySnapshotAttributeInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ModifySnapshotAttributeInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ModifySnapshotAttributeInput) GoString() string { - return s.String() -} - -type ModifySnapshotAttributeOutput struct { - metadataModifySnapshotAttributeOutput `json:"-" xml:"-"` -} - -type metadataModifySnapshotAttributeOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ModifySnapshotAttributeOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ModifySnapshotAttributeOutput) GoString() string { - return s.String() -} - -// Contains the parameters for ModifySpotFleetRequest. -type ModifySpotFleetRequestInput struct { - // Indicates whether running Spot instances should be terminated if the target - // capacity of the Spot fleet request is decreased below the current size of - // the Spot fleet. - ExcessCapacityTerminationPolicy *string `locationName:"excessCapacityTerminationPolicy" type:"string" enum:"ExcessCapacityTerminationPolicy"` - - // The ID of the Spot fleet request. - SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"` - - // The size of the fleet. - TargetCapacity *int64 `locationName:"targetCapacity" type:"integer"` - - metadataModifySpotFleetRequestInput `json:"-" xml:"-"` -} - -type metadataModifySpotFleetRequestInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ModifySpotFleetRequestInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ModifySpotFleetRequestInput) GoString() string { - return s.String() -} - -// Contains the output of ModifySpotFleetRequest. -type ModifySpotFleetRequestOutput struct { - // Is true if the request succeeds, and an error otherwise. - Return *bool `locationName:"return" type:"boolean"` - - metadataModifySpotFleetRequestOutput `json:"-" xml:"-"` -} - -type metadataModifySpotFleetRequestOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ModifySpotFleetRequestOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ModifySpotFleetRequestOutput) GoString() string { - return s.String() -} - -type ModifySubnetAttributeInput struct { - // Specify true to indicate that instances launched into the specified subnet - // should be assigned public IP address. - MapPublicIpOnLaunch *AttributeBooleanValue `type:"structure"` - - // The ID of the subnet. - SubnetId *string `locationName:"subnetId" type:"string" required:"true"` - - metadataModifySubnetAttributeInput `json:"-" xml:"-"` -} - -type metadataModifySubnetAttributeInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ModifySubnetAttributeInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ModifySubnetAttributeInput) GoString() string { - return s.String() -} - -type ModifySubnetAttributeOutput struct { - metadataModifySubnetAttributeOutput `json:"-" xml:"-"` -} - -type metadataModifySubnetAttributeOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ModifySubnetAttributeOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ModifySubnetAttributeOutput) GoString() string { - return s.String() -} - -type ModifyVolumeAttributeInput struct { - // Indicates whether the volume should be auto-enabled for I/O operations. - AutoEnableIO *AttributeBooleanValue `type:"structure"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the volume. - VolumeId *string `type:"string" required:"true"` - - metadataModifyVolumeAttributeInput `json:"-" xml:"-"` -} - -type metadataModifyVolumeAttributeInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ModifyVolumeAttributeInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ModifyVolumeAttributeInput) GoString() string { - return s.String() -} - -type ModifyVolumeAttributeOutput struct { - metadataModifyVolumeAttributeOutput `json:"-" xml:"-"` -} - -type metadataModifyVolumeAttributeOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ModifyVolumeAttributeOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ModifyVolumeAttributeOutput) GoString() string { - return s.String() -} - -type ModifyVpcAttributeInput struct { - // Indicates whether the instances launched in the VPC get DNS hostnames. If - // enabled, instances in the VPC get DNS hostnames; otherwise, they do not. - // - // You cannot modify the DNS resolution and DNS hostnames attributes in the - // same request. Use separate requests for each attribute. You can only enable - // DNS hostnames if you've enabled DNS support. - EnableDnsHostnames *AttributeBooleanValue `type:"structure"` - - // Indicates whether the DNS resolution is supported for the VPC. If enabled, - // queries to the Amazon provided DNS server at the 169.254.169.253 IP address, - // or the reserved IP address at the base of the VPC network range "plus two" - // will succeed. If disabled, the Amazon provided DNS service in the VPC that - // resolves public DNS hostnames to IP addresses is not enabled. - // - // You cannot modify the DNS resolution and DNS hostnames attributes in the - // same request. Use separate requests for each attribute. - EnableDnsSupport *AttributeBooleanValue `type:"structure"` - - // The ID of the VPC. - VpcId *string `locationName:"vpcId" type:"string" required:"true"` - - metadataModifyVpcAttributeInput `json:"-" xml:"-"` -} - -type metadataModifyVpcAttributeInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ModifyVpcAttributeInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ModifyVpcAttributeInput) GoString() string { - return s.String() -} - -type ModifyVpcAttributeOutput struct { - metadataModifyVpcAttributeOutput `json:"-" xml:"-"` -} - -type metadataModifyVpcAttributeOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ModifyVpcAttributeOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ModifyVpcAttributeOutput) GoString() string { - return s.String() -} - -type ModifyVpcEndpointInput struct { - // One or more route tables IDs to associate with the endpoint. - AddRouteTableIds []*string `locationName:"AddRouteTableId" locationNameList:"item" type:"list"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `type:"boolean"` - - // A policy document to attach to the endpoint. The policy must be in valid - // JSON format. - PolicyDocument *string `type:"string"` - - // One or more route table IDs to disassociate from the endpoint. - RemoveRouteTableIds []*string `locationName:"RemoveRouteTableId" locationNameList:"item" type:"list"` - - // Specify true to reset the policy document to the default policy. The default - // policy allows access to the service. - ResetPolicy *bool `type:"boolean"` - - // The ID of the endpoint. - VpcEndpointId *string `type:"string" required:"true"` - - metadataModifyVpcEndpointInput `json:"-" xml:"-"` -} - -type metadataModifyVpcEndpointInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ModifyVpcEndpointInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ModifyVpcEndpointInput) GoString() string { - return s.String() -} - -type ModifyVpcEndpointOutput struct { - // Returns true if the request succeeds; otherwise, it returns an error. - Return *bool `locationName:"return" type:"boolean"` - - metadataModifyVpcEndpointOutput `json:"-" xml:"-"` -} - -type metadataModifyVpcEndpointOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ModifyVpcEndpointOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ModifyVpcEndpointOutput) GoString() string { - return s.String() -} - -type MonitorInstancesInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more instance IDs. - InstanceIds []*string `locationName:"InstanceId" locationNameList:"InstanceId" type:"list" required:"true"` - - metadataMonitorInstancesInput `json:"-" xml:"-"` -} - -type metadataMonitorInstancesInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s MonitorInstancesInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s MonitorInstancesInput) GoString() string { - return s.String() -} - -type MonitorInstancesOutput struct { - // Monitoring information for one or more instances. - InstanceMonitorings []*InstanceMonitoring `locationName:"instancesSet" locationNameList:"item" type:"list"` - - metadataMonitorInstancesOutput `json:"-" xml:"-"` -} - -type metadataMonitorInstancesOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s MonitorInstancesOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s MonitorInstancesOutput) GoString() string { - return s.String() -} - -// Describes the monitoring for the instance. -type Monitoring struct { - // Indicates whether monitoring is enabled for the instance. - State *string `locationName:"state" type:"string" enum:"MonitoringState"` - - metadataMonitoring `json:"-" xml:"-"` -} - -type metadataMonitoring struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s Monitoring) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s Monitoring) GoString() string { - return s.String() -} - -type MoveAddressToVpcInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The Elastic IP address. - PublicIp *string `locationName:"publicIp" type:"string" required:"true"` - - metadataMoveAddressToVpcInput `json:"-" xml:"-"` -} - -type metadataMoveAddressToVpcInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s MoveAddressToVpcInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s MoveAddressToVpcInput) GoString() string { - return s.String() -} - -type MoveAddressToVpcOutput struct { - // The allocation ID for the Elastic IP address. - AllocationId *string `locationName:"allocationId" type:"string"` - - // The status of the move of the IP address. - Status *string `locationName:"status" type:"string" enum:"Status"` - - metadataMoveAddressToVpcOutput `json:"-" xml:"-"` -} - -type metadataMoveAddressToVpcOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s MoveAddressToVpcOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s MoveAddressToVpcOutput) GoString() string { - return s.String() -} - -// Describes the status of a moving Elastic IP address. -type MovingAddressStatus struct { - // The status of the Elastic IP address that's being moved to the EC2-VPC platform, - // or restored to the EC2-Classic platform. - MoveStatus *string `locationName:"moveStatus" type:"string" enum:"MoveStatus"` - - // The Elastic IP address. - PublicIp *string `locationName:"publicIp" type:"string"` - - metadataMovingAddressStatus `json:"-" xml:"-"` -} - -type metadataMovingAddressStatus struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s MovingAddressStatus) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s MovingAddressStatus) GoString() string { - return s.String() -} - -// Describes a network ACL. -type NetworkAcl struct { - // Any associations between the network ACL and one or more subnets - Associations []*NetworkAclAssociation `locationName:"associationSet" locationNameList:"item" type:"list"` - - // One or more entries (rules) in the network ACL. - Entries []*NetworkAclEntry `locationName:"entrySet" locationNameList:"item" type:"list"` - - // Indicates whether this is the default network ACL for the VPC. - IsDefault *bool `locationName:"default" type:"boolean"` - - // The ID of the network ACL. - NetworkAclId *string `locationName:"networkAclId" type:"string"` - - // Any tags assigned to the network ACL. - Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` - - // The ID of the VPC for the network ACL. - VpcId *string `locationName:"vpcId" type:"string"` - - metadataNetworkAcl `json:"-" xml:"-"` -} - -type metadataNetworkAcl struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s NetworkAcl) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s NetworkAcl) GoString() string { - return s.String() -} - -// Describes an association between a network ACL and a subnet. -type NetworkAclAssociation struct { - // The ID of the association between a network ACL and a subnet. - NetworkAclAssociationId *string `locationName:"networkAclAssociationId" type:"string"` - - // The ID of the network ACL. - NetworkAclId *string `locationName:"networkAclId" type:"string"` - - // The ID of the subnet. - SubnetId *string `locationName:"subnetId" type:"string"` - - metadataNetworkAclAssociation `json:"-" xml:"-"` -} - -type metadataNetworkAclAssociation struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s NetworkAclAssociation) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s NetworkAclAssociation) GoString() string { - return s.String() -} - -// Describes an entry in a network ACL. -type NetworkAclEntry struct { - // The network range to allow or deny, in CIDR notation. - CidrBlock *string `locationName:"cidrBlock" type:"string"` - - // Indicates whether the rule is an egress rule (applied to traffic leaving - // the subnet). - Egress *bool `locationName:"egress" type:"boolean"` - - // ICMP protocol: The ICMP type and code. - IcmpTypeCode *IcmpTypeCode `locationName:"icmpTypeCode" type:"structure"` - - // TCP or UDP protocols: The range of ports the rule applies to. - PortRange *PortRange `locationName:"portRange" type:"structure"` - - // The protocol. A value of -1 means all protocols. - Protocol *string `locationName:"protocol" type:"string"` - - // Indicates whether to allow or deny the traffic that matches the rule. - RuleAction *string `locationName:"ruleAction" type:"string" enum:"RuleAction"` - - // The rule number for the entry. ACL entries are processed in ascending order - // by rule number. - RuleNumber *int64 `locationName:"ruleNumber" type:"integer"` - - metadataNetworkAclEntry `json:"-" xml:"-"` -} - -type metadataNetworkAclEntry struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s NetworkAclEntry) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s NetworkAclEntry) GoString() string { - return s.String() -} - -// Describes a network interface. -type NetworkInterface struct { - // The association information for an Elastic IP associated with the network - // interface. - Association *NetworkInterfaceAssociation `locationName:"association" type:"structure"` - - // The network interface attachment. - Attachment *NetworkInterfaceAttachment `locationName:"attachment" type:"structure"` - - // The Availability Zone. - AvailabilityZone *string `locationName:"availabilityZone" type:"string"` - - // A description. - Description *string `locationName:"description" type:"string"` - - // Any security groups for the network interface. - Groups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"` - - // The MAC address. - MacAddress *string `locationName:"macAddress" type:"string"` - - // The ID of the network interface. - NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"` - - // The AWS account ID of the owner of the network interface. - OwnerId *string `locationName:"ownerId" type:"string"` - - // The private DNS name. - PrivateDnsName *string `locationName:"privateDnsName" type:"string"` - - // The IP address of the network interface within the subnet. - PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"` - - // The private IP addresses associated with the network interface. - PrivateIpAddresses []*NetworkInterfacePrivateIpAddress `locationName:"privateIpAddressesSet" locationNameList:"item" type:"list"` - - // The ID of the entity that launched the instance on your behalf (for example, - // AWS Management Console or Auto Scaling). - RequesterId *string `locationName:"requesterId" type:"string"` - - // Indicates whether the network interface is being managed by AWS. - RequesterManaged *bool `locationName:"requesterManaged" type:"boolean"` - - // Indicates whether traffic to or from the instance is validated. - SourceDestCheck *bool `locationName:"sourceDestCheck" type:"boolean"` - - // The status of the network interface. - Status *string `locationName:"status" type:"string" enum:"NetworkInterfaceStatus"` - - // The ID of the subnet. - SubnetId *string `locationName:"subnetId" type:"string"` - - // Any tags assigned to the network interface. - TagSet []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` - - // The ID of the VPC. - VpcId *string `locationName:"vpcId" type:"string"` - - metadataNetworkInterface `json:"-" xml:"-"` -} - -type metadataNetworkInterface struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s NetworkInterface) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s NetworkInterface) GoString() string { - return s.String() -} - -// Describes association information for an Elastic IP address. -type NetworkInterfaceAssociation struct { - // The allocation ID. - AllocationId *string `locationName:"allocationId" type:"string"` - - // The association ID. - AssociationId *string `locationName:"associationId" type:"string"` - - // The ID of the Elastic IP address owner. - IpOwnerId *string `locationName:"ipOwnerId" type:"string"` - - // The public DNS name. - PublicDnsName *string `locationName:"publicDnsName" type:"string"` - - // The address of the Elastic IP address bound to the network interface. - PublicIp *string `locationName:"publicIp" type:"string"` - - metadataNetworkInterfaceAssociation `json:"-" xml:"-"` -} - -type metadataNetworkInterfaceAssociation struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s NetworkInterfaceAssociation) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s NetworkInterfaceAssociation) GoString() string { - return s.String() -} - -// Describes a network interface attachment. -type NetworkInterfaceAttachment struct { - // The timestamp indicating when the attachment initiated. - AttachTime *time.Time `locationName:"attachTime" type:"timestamp" timestampFormat:"iso8601"` - - // The ID of the network interface attachment. - AttachmentId *string `locationName:"attachmentId" type:"string"` - - // Indicates whether the network interface is deleted when the instance is terminated. - DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"` - - // The device index of the network interface attachment on the instance. - DeviceIndex *int64 `locationName:"deviceIndex" type:"integer"` - - // The ID of the instance. - InstanceId *string `locationName:"instanceId" type:"string"` - - // The AWS account ID of the owner of the instance. - InstanceOwnerId *string `locationName:"instanceOwnerId" type:"string"` - - // The attachment state. - Status *string `locationName:"status" type:"string" enum:"AttachmentStatus"` - - metadataNetworkInterfaceAttachment `json:"-" xml:"-"` -} - -type metadataNetworkInterfaceAttachment struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s NetworkInterfaceAttachment) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s NetworkInterfaceAttachment) GoString() string { - return s.String() -} - -// Describes an attachment change. -type NetworkInterfaceAttachmentChanges struct { - // The ID of the network interface attachment. - AttachmentId *string `locationName:"attachmentId" type:"string"` - - // Indicates whether the network interface is deleted when the instance is terminated. - DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"` - - metadataNetworkInterfaceAttachmentChanges `json:"-" xml:"-"` -} - -type metadataNetworkInterfaceAttachmentChanges struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s NetworkInterfaceAttachmentChanges) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s NetworkInterfaceAttachmentChanges) GoString() string { - return s.String() -} - -// Describes the private IP address of a network interface. -type NetworkInterfacePrivateIpAddress struct { - // The association information for an Elastic IP address associated with the - // network interface. - Association *NetworkInterfaceAssociation `locationName:"association" type:"structure"` - - // Indicates whether this IP address is the primary private IP address of the - // network interface. - Primary *bool `locationName:"primary" type:"boolean"` - - // The private DNS name. - PrivateDnsName *string `locationName:"privateDnsName" type:"string"` - - // The private IP address. - PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"` - - metadataNetworkInterfacePrivateIpAddress `json:"-" xml:"-"` -} - -type metadataNetworkInterfacePrivateIpAddress struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s NetworkInterfacePrivateIpAddress) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s NetworkInterfacePrivateIpAddress) GoString() string { - return s.String() -} - -type NewDhcpConfiguration struct { - Key *string `locationName:"key" type:"string"` - - Values []*string `locationName:"Value" locationNameList:"item" type:"list"` - - metadataNewDhcpConfiguration `json:"-" xml:"-"` -} - -type metadataNewDhcpConfiguration struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s NewDhcpConfiguration) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s NewDhcpConfiguration) GoString() string { - return s.String() -} - -// Describes the placement for the instance. -type Placement struct { - // The affinity setting for the instance on the Dedicated host. This parameter - // is not supported for the ImportInstance command. - Affinity *string `locationName:"affinity" type:"string"` - - // The Availability Zone of the instance. - AvailabilityZone *string `locationName:"availabilityZone" type:"string"` - - // The name of the placement group the instance is in (for cluster compute instances). - GroupName *string `locationName:"groupName" type:"string"` - - // The ID of the Dedicted host on which the instance resides. This parameter - // is not support for the ImportInstance command. - HostId *string `locationName:"hostId" type:"string"` - - // The tenancy of the instance (if the instance is running in a VPC). An instance - // with a tenancy of dedicated runs on single-tenant hardware. The host tenancy - // is not supported for the ImportInstance command. - Tenancy *string `locationName:"tenancy" type:"string" enum:"Tenancy"` - - metadataPlacement `json:"-" xml:"-"` -} - -type metadataPlacement struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s Placement) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s Placement) GoString() string { - return s.String() -} - -// Describes a placement group. -type PlacementGroup struct { - // The name of the placement group. - GroupName *string `locationName:"groupName" type:"string"` - - // The state of the placement group. - State *string `locationName:"state" type:"string" enum:"PlacementGroupState"` - - // The placement strategy. - Strategy *string `locationName:"strategy" type:"string" enum:"PlacementStrategy"` - - metadataPlacementGroup `json:"-" xml:"-"` -} - -type metadataPlacementGroup struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s PlacementGroup) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s PlacementGroup) GoString() string { - return s.String() -} - -// Describes a range of ports. -type PortRange struct { - // The first port in the range. - From *int64 `locationName:"from" type:"integer"` - - // The last port in the range. - To *int64 `locationName:"to" type:"integer"` - - metadataPortRange `json:"-" xml:"-"` -} - -type metadataPortRange struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s PortRange) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s PortRange) GoString() string { - return s.String() -} - -// Describes prefixes for AWS services. -type PrefixList struct { - // The IP address range of the AWS service. - Cidrs []*string `locationName:"cidrSet" locationNameList:"item" type:"list"` - - // The ID of the prefix. - PrefixListId *string `locationName:"prefixListId" type:"string"` - - // The name of the prefix. - PrefixListName *string `locationName:"prefixListName" type:"string"` - - metadataPrefixList `json:"-" xml:"-"` -} - -type metadataPrefixList struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s PrefixList) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s PrefixList) GoString() string { - return s.String() -} - -// The ID of the prefix. -type PrefixListId struct { - // The ID of the prefix. - PrefixListId *string `locationName:"prefixListId" type:"string"` - - metadataPrefixListId `json:"-" xml:"-"` -} - -type metadataPrefixListId struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s PrefixListId) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s PrefixListId) GoString() string { - return s.String() -} - -// Describes the price for a Reserved instance. -type PriceSchedule struct { - // The current price schedule, as determined by the term remaining for the Reserved - // Instance in the listing. - // - // A specific price schedule is always in effect, but only one price schedule - // can be active at any time. Take, for example, a Reserved Instance listing - // that has five months remaining in its term. When you specify price schedules - // for five months and two months, this means that schedule 1, covering the - // first three months of the remaining term, will be active during months 5, - // 4, and 3. Then schedule 2, covering the last two months of the term, will - // be active for months 2 and 1. - Active *bool `locationName:"active" type:"boolean"` - - // The currency for transacting the Reserved instance resale. At this time, - // the only supported currency is USD. - CurrencyCode *string `locationName:"currencyCode" type:"string" enum:"CurrencyCodeValues"` - - // The fixed price for the term. - Price *float64 `locationName:"price" type:"double"` - - // The number of months remaining in the reservation. For example, 2 is the - // second to the last month before the capacity reservation expires. - Term *int64 `locationName:"term" type:"long"` - - metadataPriceSchedule `json:"-" xml:"-"` -} - -type metadataPriceSchedule struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s PriceSchedule) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s PriceSchedule) GoString() string { - return s.String() -} - -// Describes the price for a Reserved instance. -type PriceScheduleSpecification struct { - // The currency for transacting the Reserved instance resale. At this time, - // the only supported currency is USD. - CurrencyCode *string `locationName:"currencyCode" type:"string" enum:"CurrencyCodeValues"` - - // The fixed price for the term. - Price *float64 `locationName:"price" type:"double"` - - // The number of months remaining in the reservation. For example, 2 is the - // second to the last month before the capacity reservation expires. - Term *int64 `locationName:"term" type:"long"` - - metadataPriceScheduleSpecification `json:"-" xml:"-"` -} - -type metadataPriceScheduleSpecification struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s PriceScheduleSpecification) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s PriceScheduleSpecification) GoString() string { - return s.String() -} - -// Describes a Reserved instance offering. -type PricingDetail struct { - // The number of instances available for the price. - Count *int64 `locationName:"count" type:"integer"` - - // The price per instance. - Price *float64 `locationName:"price" type:"double"` - - metadataPricingDetail `json:"-" xml:"-"` -} - -type metadataPricingDetail struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s PricingDetail) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s PricingDetail) GoString() string { - return s.String() -} - -// Describes a secondary private IP address for a network interface. -type PrivateIpAddressSpecification struct { - // Indicates whether the private IP address is the primary private IP address. - // Only one IP address can be designated as primary. - Primary *bool `locationName:"primary" type:"boolean"` - - // The private IP addresses. - PrivateIpAddress *string `locationName:"privateIpAddress" type:"string" required:"true"` - - metadataPrivateIpAddressSpecification `json:"-" xml:"-"` -} - -type metadataPrivateIpAddressSpecification struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s PrivateIpAddressSpecification) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s PrivateIpAddressSpecification) GoString() string { - return s.String() -} - -// Describes a product code. -type ProductCode struct { - // The product code. - ProductCodeId *string `locationName:"productCode" type:"string"` - - // The type of product code. - ProductCodeType *string `locationName:"type" type:"string" enum:"ProductCodeValues"` - - metadataProductCode `json:"-" xml:"-"` -} - -type metadataProductCode struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ProductCode) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ProductCode) GoString() string { - return s.String() -} - -// Describes a virtual private gateway propagating route. -type PropagatingVgw struct { - // The ID of the virtual private gateway (VGW). - GatewayId *string `locationName:"gatewayId" type:"string"` - - metadataPropagatingVgw `json:"-" xml:"-"` -} - -type metadataPropagatingVgw struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s PropagatingVgw) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s PropagatingVgw) GoString() string { - return s.String() -} - -type PurchaseReservedInstancesOfferingInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The number of Reserved instances to purchase. - InstanceCount *int64 `type:"integer" required:"true"` - - // Specified for Reserved Instance Marketplace offerings to limit the total - // order and ensure that the Reserved instances are not purchased at unexpected - // prices. - LimitPrice *ReservedInstanceLimitPrice `locationName:"limitPrice" type:"structure"` - - // The ID of the Reserved instance offering to purchase. - ReservedInstancesOfferingId *string `type:"string" required:"true"` - - metadataPurchaseReservedInstancesOfferingInput `json:"-" xml:"-"` -} - -type metadataPurchaseReservedInstancesOfferingInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s PurchaseReservedInstancesOfferingInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s PurchaseReservedInstancesOfferingInput) GoString() string { - return s.String() -} - -type PurchaseReservedInstancesOfferingOutput struct { - // The IDs of the purchased Reserved instances. - ReservedInstancesId *string `locationName:"reservedInstancesId" type:"string"` - - metadataPurchaseReservedInstancesOfferingOutput `json:"-" xml:"-"` -} - -type metadataPurchaseReservedInstancesOfferingOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s PurchaseReservedInstancesOfferingOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s PurchaseReservedInstancesOfferingOutput) GoString() string { - return s.String() -} - -type RebootInstancesInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more instance IDs. - InstanceIds []*string `locationName:"InstanceId" locationNameList:"InstanceId" type:"list" required:"true"` - - metadataRebootInstancesInput `json:"-" xml:"-"` -} - -type metadataRebootInstancesInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s RebootInstancesInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s RebootInstancesInput) GoString() string { - return s.String() -} - -type RebootInstancesOutput struct { - metadataRebootInstancesOutput `json:"-" xml:"-"` -} - -type metadataRebootInstancesOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s RebootInstancesOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s RebootInstancesOutput) GoString() string { - return s.String() -} - -// Describes a recurring charge. -type RecurringCharge struct { - // The amount of the recurring charge. - Amount *float64 `locationName:"amount" type:"double"` - - // The frequency of the recurring charge. - Frequency *string `locationName:"frequency" type:"string" enum:"RecurringChargeFrequency"` - - metadataRecurringCharge `json:"-" xml:"-"` -} - -type metadataRecurringCharge struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s RecurringCharge) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s RecurringCharge) GoString() string { - return s.String() -} - -// Describes a region. -type Region struct { - // The region service endpoint. - Endpoint *string `locationName:"regionEndpoint" type:"string"` - - // The name of the region. - RegionName *string `locationName:"regionName" type:"string"` - - metadataRegion `json:"-" xml:"-"` -} - -type metadataRegion struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s Region) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s Region) GoString() string { - return s.String() -} - -type RegisterImageInput struct { - // The architecture of the AMI. - // - // Default: For Amazon EBS-backed AMIs, i386. For instance store-backed AMIs, - // the architecture specified in the manifest file. - Architecture *string `locationName:"architecture" type:"string" enum:"ArchitectureValues"` - - // One or more block device mapping entries. - BlockDeviceMappings []*BlockDeviceMapping `locationName:"BlockDeviceMapping" locationNameList:"BlockDeviceMapping" type:"list"` - - // A description for your AMI. - Description *string `locationName:"description" type:"string"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The full path to your AMI manifest in Amazon S3 storage. - ImageLocation *string `type:"string"` - - // The ID of the kernel. - KernelId *string `locationName:"kernelId" type:"string"` - - // A name for your AMI. - // - // Constraints: 3-128 alphanumeric characters, parentheses (()), square brackets - // ([]), spaces ( ), periods (.), slashes (/), dashes (-), single quotes ('), - // at-signs (@), or underscores(_) - Name *string `locationName:"name" type:"string" required:"true"` - - // The ID of the RAM disk. - RamdiskId *string `locationName:"ramdiskId" type:"string"` - - // The name of the root device (for example, /dev/sda1, or /dev/xvda). - RootDeviceName *string `locationName:"rootDeviceName" type:"string"` - - // Set to simple to enable enhanced networking for the AMI and any instances - // that you launch from the AMI. - // - // There is no way to disable enhanced networking at this time. - // - // This option is supported only for HVM AMIs. Specifying this option with - // a PV AMI can make instances launched from the AMI unreachable. - SriovNetSupport *string `locationName:"sriovNetSupport" type:"string"` - - // The type of virtualization. - // - // Default: paravirtual - VirtualizationType *string `locationName:"virtualizationType" type:"string"` - - metadataRegisterImageInput `json:"-" xml:"-"` -} - -type metadataRegisterImageInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s RegisterImageInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s RegisterImageInput) GoString() string { - return s.String() -} - -type RegisterImageOutput struct { - // The ID of the newly registered AMI. - ImageId *string `locationName:"imageId" type:"string"` - - metadataRegisterImageOutput `json:"-" xml:"-"` -} - -type metadataRegisterImageOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s RegisterImageOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s RegisterImageOutput) GoString() string { - return s.String() -} - -type RejectVpcPeeringConnectionInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the VPC peering connection. - VpcPeeringConnectionId *string `locationName:"vpcPeeringConnectionId" type:"string" required:"true"` - - metadataRejectVpcPeeringConnectionInput `json:"-" xml:"-"` -} - -type metadataRejectVpcPeeringConnectionInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s RejectVpcPeeringConnectionInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s RejectVpcPeeringConnectionInput) GoString() string { - return s.String() -} - -type RejectVpcPeeringConnectionOutput struct { - // Returns true if the request succeeds; otherwise, it returns an error. - Return *bool `locationName:"return" type:"boolean"` - - metadataRejectVpcPeeringConnectionOutput `json:"-" xml:"-"` -} - -type metadataRejectVpcPeeringConnectionOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s RejectVpcPeeringConnectionOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s RejectVpcPeeringConnectionOutput) GoString() string { - return s.String() -} - -type ReleaseAddressInput struct { - // [EC2-VPC] The allocation ID. Required for EC2-VPC. - AllocationId *string `type:"string"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // [EC2-Classic] The Elastic IP address. Required for EC2-Classic. - PublicIp *string `type:"string"` - - metadataReleaseAddressInput `json:"-" xml:"-"` -} - -type metadataReleaseAddressInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ReleaseAddressInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ReleaseAddressInput) GoString() string { - return s.String() -} - -type ReleaseAddressOutput struct { - metadataReleaseAddressOutput `json:"-" xml:"-"` -} - -type metadataReleaseAddressOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ReleaseAddressOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ReleaseAddressOutput) GoString() string { - return s.String() -} - -type ReleaseHostsInput struct { - // The IDs of the Dedicated hosts you want to release. - HostIds []*string `locationName:"hostId" locationNameList:"item" type:"list" required:"true"` - - metadataReleaseHostsInput `json:"-" xml:"-"` -} - -type metadataReleaseHostsInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ReleaseHostsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ReleaseHostsInput) GoString() string { - return s.String() -} - -type ReleaseHostsOutput struct { - // The IDs of the Dedicated hosts that were successfully released. - Successful []*string `locationName:"successful" locationNameList:"item" type:"list"` - - // The IDs of the Dedicated hosts that could not be released, including an error - // message. - Unsuccessful []*UnsuccessfulItem `locationName:"unsuccessful" locationNameList:"item" type:"list"` - - metadataReleaseHostsOutput `json:"-" xml:"-"` -} - -type metadataReleaseHostsOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ReleaseHostsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ReleaseHostsOutput) GoString() string { - return s.String() -} - -type ReplaceNetworkAclAssociationInput struct { - // The ID of the current association between the original network ACL and the - // subnet. - AssociationId *string `locationName:"associationId" type:"string" required:"true"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the new network ACL to associate with the subnet. - NetworkAclId *string `locationName:"networkAclId" type:"string" required:"true"` - - metadataReplaceNetworkAclAssociationInput `json:"-" xml:"-"` -} - -type metadataReplaceNetworkAclAssociationInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ReplaceNetworkAclAssociationInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ReplaceNetworkAclAssociationInput) GoString() string { - return s.String() -} - -type ReplaceNetworkAclAssociationOutput struct { - // The ID of the new association. - NewAssociationId *string `locationName:"newAssociationId" type:"string"` - - metadataReplaceNetworkAclAssociationOutput `json:"-" xml:"-"` -} - -type metadataReplaceNetworkAclAssociationOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ReplaceNetworkAclAssociationOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ReplaceNetworkAclAssociationOutput) GoString() string { - return s.String() -} - -type ReplaceNetworkAclEntryInput struct { - // The network range to allow or deny, in CIDR notation. - CidrBlock *string `locationName:"cidrBlock" type:"string" required:"true"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // Indicates whether to replace the egress rule. - // - // Default: If no value is specified, we replace the ingress rule. - Egress *bool `locationName:"egress" type:"boolean" required:"true"` - - // ICMP protocol: The ICMP type and code. Required if specifying 1 (ICMP) for - // the protocol. - IcmpTypeCode *IcmpTypeCode `locationName:"Icmp" type:"structure"` - - // The ID of the ACL. - NetworkAclId *string `locationName:"networkAclId" type:"string" required:"true"` - - // TCP or UDP protocols: The range of ports the rule applies to. Required if - // specifying 6 (TCP) or 17 (UDP) for the protocol. - PortRange *PortRange `locationName:"portRange" type:"structure"` - - // The IP protocol. You can specify all or -1 to mean all protocols. - Protocol *string `locationName:"protocol" type:"string" required:"true"` - - // Indicates whether to allow or deny the traffic that matches the rule. - RuleAction *string `locationName:"ruleAction" type:"string" required:"true" enum:"RuleAction"` - - // The rule number of the entry to replace. - RuleNumber *int64 `locationName:"ruleNumber" type:"integer" required:"true"` - - metadataReplaceNetworkAclEntryInput `json:"-" xml:"-"` -} - -type metadataReplaceNetworkAclEntryInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ReplaceNetworkAclEntryInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ReplaceNetworkAclEntryInput) GoString() string { - return s.String() -} - -type ReplaceNetworkAclEntryOutput struct { - metadataReplaceNetworkAclEntryOutput `json:"-" xml:"-"` -} - -type metadataReplaceNetworkAclEntryOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ReplaceNetworkAclEntryOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ReplaceNetworkAclEntryOutput) GoString() string { - return s.String() -} - -type ReplaceRouteInput struct { - // The CIDR address block used for the destination match. The value you provide - // must match the CIDR of an existing route in the table. - DestinationCidrBlock *string `locationName:"destinationCidrBlock" type:"string" required:"true"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of an Internet gateway or virtual private gateway. - GatewayId *string `locationName:"gatewayId" type:"string"` - - // The ID of a NAT instance in your VPC. - InstanceId *string `locationName:"instanceId" type:"string"` - - // The ID of a network interface. - NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"` - - // The ID of the route table. - RouteTableId *string `locationName:"routeTableId" type:"string" required:"true"` - - // The ID of a VPC peering connection. - VpcPeeringConnectionId *string `locationName:"vpcPeeringConnectionId" type:"string"` - - metadataReplaceRouteInput `json:"-" xml:"-"` -} - -type metadataReplaceRouteInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ReplaceRouteInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ReplaceRouteInput) GoString() string { - return s.String() -} - -type ReplaceRouteOutput struct { - metadataReplaceRouteOutput `json:"-" xml:"-"` -} - -type metadataReplaceRouteOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ReplaceRouteOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ReplaceRouteOutput) GoString() string { - return s.String() -} - -type ReplaceRouteTableAssociationInput struct { - // The association ID. - AssociationId *string `locationName:"associationId" type:"string" required:"true"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the new route table to associate with the subnet. - RouteTableId *string `locationName:"routeTableId" type:"string" required:"true"` - - metadataReplaceRouteTableAssociationInput `json:"-" xml:"-"` -} - -type metadataReplaceRouteTableAssociationInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ReplaceRouteTableAssociationInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ReplaceRouteTableAssociationInput) GoString() string { - return s.String() -} - -type ReplaceRouteTableAssociationOutput struct { - // The ID of the new association. - NewAssociationId *string `locationName:"newAssociationId" type:"string"` - - metadataReplaceRouteTableAssociationOutput `json:"-" xml:"-"` -} - -type metadataReplaceRouteTableAssociationOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ReplaceRouteTableAssociationOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ReplaceRouteTableAssociationOutput) GoString() string { - return s.String() -} - -type ReportInstanceStatusInput struct { - // Descriptive text about the health state of your instance. - Description *string `locationName:"description" type:"string"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The time at which the reported instance health state ended. - EndTime *time.Time `locationName:"endTime" type:"timestamp" timestampFormat:"iso8601"` - - // One or more instances. - Instances []*string `locationName:"instanceId" locationNameList:"InstanceId" type:"list" required:"true"` - - // One or more reason codes that describes the health state of your instance. - // - // instance-stuck-in-state: My instance is stuck in a state. - // - // unresponsive: My instance is unresponsive. - // - // not-accepting-credentials: My instance is not accepting my credentials. - // - // password-not-available: A password is not available for my instance. - // - // performance-network: My instance is experiencing performance problems which - // I believe are network related. - // - // performance-instance-store: My instance is experiencing performance problems - // which I believe are related to the instance stores. - // - // performance-ebs-volume: My instance is experiencing performance problems - // which I believe are related to an EBS volume. - // - // performance-other: My instance is experiencing performance problems. - // - // other: [explain using the description parameter] - ReasonCodes []*string `locationName:"reasonCode" locationNameList:"item" type:"list" required:"true"` - - // The time at which the reported instance health state began. - StartTime *time.Time `locationName:"startTime" type:"timestamp" timestampFormat:"iso8601"` - - // The status of all instances listed. - Status *string `locationName:"status" type:"string" required:"true" enum:"ReportStatusType"` - - metadataReportInstanceStatusInput `json:"-" xml:"-"` -} - -type metadataReportInstanceStatusInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ReportInstanceStatusInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ReportInstanceStatusInput) GoString() string { - return s.String() -} - -type ReportInstanceStatusOutput struct { - metadataReportInstanceStatusOutput `json:"-" xml:"-"` -} - -type metadataReportInstanceStatusOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ReportInstanceStatusOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ReportInstanceStatusOutput) GoString() string { - return s.String() -} - -// Contains the parameters for RequestSpotFleet. -type RequestSpotFleetInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The configuration for the Spot fleet request. - SpotFleetRequestConfig *SpotFleetRequestConfigData `locationName:"spotFleetRequestConfig" type:"structure" required:"true"` - - metadataRequestSpotFleetInput `json:"-" xml:"-"` -} - -type metadataRequestSpotFleetInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s RequestSpotFleetInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s RequestSpotFleetInput) GoString() string { - return s.String() -} - -// Contains the output of RequestSpotFleet. -type RequestSpotFleetOutput struct { - // The ID of the Spot fleet request. - SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"` - - metadataRequestSpotFleetOutput `json:"-" xml:"-"` -} - -type metadataRequestSpotFleetOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s RequestSpotFleetOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s RequestSpotFleetOutput) GoString() string { - return s.String() -} - -// Contains the parameters for RequestSpotInstances. -type RequestSpotInstancesInput struct { - // The user-specified name for a logical grouping of bids. - // - // When you specify an Availability Zone group in a Spot Instance request, - // all Spot instances in the request are launched in the same Availability Zone. - // Instance proximity is maintained with this parameter, but the choice of Availability - // Zone is not. The group applies only to bids for Spot Instances of the same - // instance type. Any additional Spot instance requests that are specified with - // the same Availability Zone group name are launched in that same Availability - // Zone, as long as at least one instance from the group is still active. - // - // If there is no active instance running in the Availability Zone group that - // you specify for a new Spot instance request (all instances are terminated, - // the bid is expired, or the bid falls below current market), then Amazon EC2 - // launches the instance in any Availability Zone where the constraint can be - // met. Consequently, the subsequent set of Spot instances could be placed in - // a different zone from the original request, even if you specified the same - // Availability Zone group. - // - // Default: Instances are launched in any available Availability Zone. - AvailabilityZoneGroup *string `locationName:"availabilityZoneGroup" type:"string"` - - // The required duration for the Spot instances, in minutes. This value must - // be a multiple of 60 (60, 120, 180, 240, 300, or 360). - // - // The duration period starts as soon as your Spot instance receives its instance - // ID. At the end of the duration period, Amazon EC2 marks the Spot instance - // for termination and provides a Spot instance termination notice, which gives - // the instance a two-minute warning before it terminates. - // - // Note that you can't specify an Availability Zone group or a launch group - // if you specify a duration. - BlockDurationMinutes *int64 `locationName:"blockDurationMinutes" type:"integer"` - - // Unique, case-sensitive identifier that you provide to ensure the idempotency - // of the request. For more information, see How to Ensure Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html) - // in the Amazon Elastic Compute Cloud User Guide. - ClientToken *string `locationName:"clientToken" type:"string"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The maximum number of Spot instances to launch. - // - // Default: 1 - InstanceCount *int64 `locationName:"instanceCount" type:"integer"` - - // The instance launch group. Launch groups are Spot instances that launch together - // and terminate together. - // - // Default: Instances are launched and terminated individually - LaunchGroup *string `locationName:"launchGroup" type:"string"` - - // Describes the launch specification for an instance. - LaunchSpecification *RequestSpotLaunchSpecification `type:"structure"` - - // The maximum hourly price (bid) for any Spot instance launched to fulfill - // the request. - SpotPrice *string `locationName:"spotPrice" type:"string" required:"true"` - - // The Spot instance request type. - // - // Default: one-time - Type *string `locationName:"type" type:"string" enum:"SpotInstanceType"` - - // The start date of the request. If this is a one-time request, the request - // becomes active at this date and time and remains active until all instances - // launch, the request expires, or the request is canceled. If the request is - // persistent, the request becomes active at this date and time and remains - // active until it expires or is canceled. - // - // Default: The request is effective indefinitely. - ValidFrom *time.Time `locationName:"validFrom" type:"timestamp" timestampFormat:"iso8601"` - - // The end date of the request. If this is a one-time request, the request remains - // active until all instances launch, the request is canceled, or this date - // is reached. If the request is persistent, it remains active until it is canceled - // or this date and time is reached. - // - // Default: The request is effective indefinitely. - ValidUntil *time.Time `locationName:"validUntil" type:"timestamp" timestampFormat:"iso8601"` - - metadataRequestSpotInstancesInput `json:"-" xml:"-"` -} - -type metadataRequestSpotInstancesInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s RequestSpotInstancesInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s RequestSpotInstancesInput) GoString() string { - return s.String() -} - -// Contains the output of RequestSpotInstances. -type RequestSpotInstancesOutput struct { - // One or more Spot instance requests. - SpotInstanceRequests []*SpotInstanceRequest `locationName:"spotInstanceRequestSet" locationNameList:"item" type:"list"` - - metadataRequestSpotInstancesOutput `json:"-" xml:"-"` -} - -type metadataRequestSpotInstancesOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s RequestSpotInstancesOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s RequestSpotInstancesOutput) GoString() string { - return s.String() -} - -// Describes the launch specification for an instance. -type RequestSpotLaunchSpecification struct { - // Deprecated. - AddressingType *string `locationName:"addressingType" type:"string"` - - // One or more block device mapping entries. - BlockDeviceMappings []*BlockDeviceMapping `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"` - - // Indicates whether the instance is optimized for EBS I/O. This optimization - // provides dedicated throughput to Amazon EBS and an optimized configuration - // stack to provide optimal EBS I/O performance. This optimization isn't available - // with all instance types. Additional usage charges apply when using an EBS - // Optimized instance. - // - // Default: false - EbsOptimized *bool `locationName:"ebsOptimized" type:"boolean"` - - // The IAM instance profile. - IamInstanceProfile *IamInstanceProfileSpecification `locationName:"iamInstanceProfile" type:"structure"` - - // The ID of the AMI. - ImageId *string `locationName:"imageId" type:"string"` - - // The instance type. - InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` - - // The ID of the kernel. - KernelId *string `locationName:"kernelId" type:"string"` - - // The name of the key pair. - KeyName *string `locationName:"keyName" type:"string"` - - // Describes the monitoring for the instance. - Monitoring *RunInstancesMonitoringEnabled `locationName:"monitoring" type:"structure"` - - // One or more network interfaces. - NetworkInterfaces []*InstanceNetworkInterfaceSpecification `locationName:"NetworkInterface" locationNameList:"item" type:"list"` - - // The placement information for the instance. - Placement *SpotPlacement `locationName:"placement" type:"structure"` - - // The ID of the RAM disk. - RamdiskId *string `locationName:"ramdiskId" type:"string"` - - SecurityGroupIds []*string `locationName:"SecurityGroupId" locationNameList:"item" type:"list"` - - SecurityGroups []*string `locationName:"SecurityGroup" locationNameList:"item" type:"list"` - - // The ID of the subnet in which to launch the instance. - SubnetId *string `locationName:"subnetId" type:"string"` - - // The Base64-encoded MIME user data to make available to the instances. - UserData *string `locationName:"userData" type:"string"` - - metadataRequestSpotLaunchSpecification `json:"-" xml:"-"` -} - -type metadataRequestSpotLaunchSpecification struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s RequestSpotLaunchSpecification) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s RequestSpotLaunchSpecification) GoString() string { - return s.String() -} - -// Describes a reservation. -type Reservation struct { - // One or more security groups. - Groups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"` - - // One or more instances. - Instances []*Instance `locationName:"instancesSet" locationNameList:"item" type:"list"` - - // The ID of the AWS account that owns the reservation. - OwnerId *string `locationName:"ownerId" type:"string"` - - // The ID of the requester that launched the instances on your behalf (for example, - // AWS Management Console or Auto Scaling). - RequesterId *string `locationName:"requesterId" type:"string"` - - // The ID of the reservation. - ReservationId *string `locationName:"reservationId" type:"string"` - - metadataReservation `json:"-" xml:"-"` -} - -type metadataReservation struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s Reservation) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s Reservation) GoString() string { - return s.String() -} - -// Describes the limit price of a Reserved instance offering. -type ReservedInstanceLimitPrice struct { - // Used for Reserved Instance Marketplace offerings. Specifies the limit price - // on the total order (instanceCount * price). - Amount *float64 `locationName:"amount" type:"double"` - - // The currency in which the limitPrice amount is specified. At this time, the - // only supported currency is USD. - CurrencyCode *string `locationName:"currencyCode" type:"string" enum:"CurrencyCodeValues"` - - metadataReservedInstanceLimitPrice `json:"-" xml:"-"` -} - -type metadataReservedInstanceLimitPrice struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ReservedInstanceLimitPrice) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ReservedInstanceLimitPrice) GoString() string { - return s.String() -} - -// Describes a Reserved instance. -type ReservedInstances struct { - // The Availability Zone in which the Reserved instance can be used. - AvailabilityZone *string `locationName:"availabilityZone" type:"string"` - - // The currency of the Reserved instance. It's specified using ISO 4217 standard - // currency codes. At this time, the only supported currency is USD. - CurrencyCode *string `locationName:"currencyCode" type:"string" enum:"CurrencyCodeValues"` - - // The duration of the Reserved instance, in seconds. - Duration *int64 `locationName:"duration" type:"long"` - - // The time when the Reserved instance expires. - End *time.Time `locationName:"end" type:"timestamp" timestampFormat:"iso8601"` - - // The purchase price of the Reserved instance. - FixedPrice *float64 `locationName:"fixedPrice" type:"float"` - - // The number of Reserved instances purchased. - InstanceCount *int64 `locationName:"instanceCount" type:"integer"` - - // The tenancy of the reserved instance. - InstanceTenancy *string `locationName:"instanceTenancy" type:"string" enum:"Tenancy"` - - // The instance type on which the Reserved instance can be used. - InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` - - // The Reserved instance offering type. - OfferingType *string `locationName:"offeringType" type:"string" enum:"OfferingTypeValues"` - - // The Reserved instance product platform description. - ProductDescription *string `locationName:"productDescription" type:"string" enum:"RIProductDescription"` - - // The recurring charge tag assigned to the resource. - RecurringCharges []*RecurringCharge `locationName:"recurringCharges" locationNameList:"item" type:"list"` - - // The ID of the Reserved instance. - ReservedInstancesId *string `locationName:"reservedInstancesId" type:"string"` - - // The date and time the Reserved instance started. - Start *time.Time `locationName:"start" type:"timestamp" timestampFormat:"iso8601"` - - // The state of the Reserved instance purchase. - State *string `locationName:"state" type:"string" enum:"ReservedInstanceState"` - - // Any tags assigned to the resource. - Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` - - // The usage price of the Reserved instance, per hour. - UsagePrice *float64 `locationName:"usagePrice" type:"float"` - - metadataReservedInstances `json:"-" xml:"-"` -} - -type metadataReservedInstances struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ReservedInstances) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ReservedInstances) GoString() string { - return s.String() -} - -// Describes the configuration settings for the modified Reserved instances. -type ReservedInstancesConfiguration struct { - // The Availability Zone for the modified Reserved instances. - AvailabilityZone *string `locationName:"availabilityZone" type:"string"` - - // The number of modified Reserved instances. - InstanceCount *int64 `locationName:"instanceCount" type:"integer"` - - // The instance type for the modified Reserved instances. - InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` - - // The network platform of the modified Reserved instances, which is either - // EC2-Classic or EC2-VPC. - Platform *string `locationName:"platform" type:"string"` - - metadataReservedInstancesConfiguration `json:"-" xml:"-"` -} - -type metadataReservedInstancesConfiguration struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ReservedInstancesConfiguration) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ReservedInstancesConfiguration) GoString() string { - return s.String() -} - -// Describes the ID of a Reserved instance. -type ReservedInstancesId struct { - // The ID of the Reserved instance. - ReservedInstancesId *string `locationName:"reservedInstancesId" type:"string"` - - metadataReservedInstancesId `json:"-" xml:"-"` -} - -type metadataReservedInstancesId struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ReservedInstancesId) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ReservedInstancesId) GoString() string { - return s.String() -} - -// Describes a Reserved instance listing. -type ReservedInstancesListing struct { - // A unique, case-sensitive key supplied by the client to ensure that the request - // is idempotent. For more information, see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). - ClientToken *string `locationName:"clientToken" type:"string"` - - // The time the listing was created. - CreateDate *time.Time `locationName:"createDate" type:"timestamp" timestampFormat:"iso8601"` - - // The number of instances in this state. - InstanceCounts []*InstanceCount `locationName:"instanceCounts" locationNameList:"item" type:"list"` - - // The price of the Reserved instance listing. - PriceSchedules []*PriceSchedule `locationName:"priceSchedules" locationNameList:"item" type:"list"` - - // The ID of the Reserved instance. - ReservedInstancesId *string `locationName:"reservedInstancesId" type:"string"` - - // The ID of the Reserved instance listing. - ReservedInstancesListingId *string `locationName:"reservedInstancesListingId" type:"string"` - - // The status of the Reserved instance listing. - Status *string `locationName:"status" type:"string" enum:"ListingStatus"` - - // The reason for the current status of the Reserved instance listing. The response - // can be blank. - StatusMessage *string `locationName:"statusMessage" type:"string"` - - // Any tags assigned to the resource. - Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` - - // The last modified timestamp of the listing. - UpdateDate *time.Time `locationName:"updateDate" type:"timestamp" timestampFormat:"iso8601"` - - metadataReservedInstancesListing `json:"-" xml:"-"` -} - -type metadataReservedInstancesListing struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ReservedInstancesListing) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ReservedInstancesListing) GoString() string { - return s.String() -} - -// Describes a Reserved instance modification. -type ReservedInstancesModification struct { - // A unique, case-sensitive key supplied by the client to ensure that the request - // is idempotent. For more information, see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). - ClientToken *string `locationName:"clientToken" type:"string"` - - // The time when the modification request was created. - CreateDate *time.Time `locationName:"createDate" type:"timestamp" timestampFormat:"iso8601"` - - // The time for the modification to become effective. - EffectiveDate *time.Time `locationName:"effectiveDate" type:"timestamp" timestampFormat:"iso8601"` - - // Contains target configurations along with their corresponding new Reserved - // instance IDs. - ModificationResults []*ReservedInstancesModificationResult `locationName:"modificationResultSet" locationNameList:"item" type:"list"` - - // The IDs of one or more Reserved instances. - ReservedInstancesIds []*ReservedInstancesId `locationName:"reservedInstancesSet" locationNameList:"item" type:"list"` - - // A unique ID for the Reserved instance modification. - ReservedInstancesModificationId *string `locationName:"reservedInstancesModificationId" type:"string"` - - // The status of the Reserved instances modification request. - Status *string `locationName:"status" type:"string"` - - // The reason for the status. - StatusMessage *string `locationName:"statusMessage" type:"string"` - - // The time when the modification request was last updated. - UpdateDate *time.Time `locationName:"updateDate" type:"timestamp" timestampFormat:"iso8601"` - - metadataReservedInstancesModification `json:"-" xml:"-"` -} - -type metadataReservedInstancesModification struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ReservedInstancesModification) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ReservedInstancesModification) GoString() string { - return s.String() -} - -type ReservedInstancesModificationResult struct { - // The ID for the Reserved instances that were created as part of the modification - // request. This field is only available when the modification is fulfilled. - ReservedInstancesId *string `locationName:"reservedInstancesId" type:"string"` - - // The target Reserved instances configurations supplied as part of the modification - // request. - TargetConfiguration *ReservedInstancesConfiguration `locationName:"targetConfiguration" type:"structure"` - - metadataReservedInstancesModificationResult `json:"-" xml:"-"` -} - -type metadataReservedInstancesModificationResult struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ReservedInstancesModificationResult) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ReservedInstancesModificationResult) GoString() string { - return s.String() -} - -// Describes a Reserved instance offering. -type ReservedInstancesOffering struct { - // The Availability Zone in which the Reserved instance can be used. - AvailabilityZone *string `locationName:"availabilityZone" type:"string"` - - // The currency of the Reserved instance offering you are purchasing. It's specified - // using ISO 4217 standard currency codes. At this time, the only supported - // currency is USD. - CurrencyCode *string `locationName:"currencyCode" type:"string" enum:"CurrencyCodeValues"` - - // The duration of the Reserved instance, in seconds. - Duration *int64 `locationName:"duration" type:"long"` - - // The purchase price of the Reserved instance. - FixedPrice *float64 `locationName:"fixedPrice" type:"float"` - - // The tenancy of the reserved instance. - InstanceTenancy *string `locationName:"instanceTenancy" type:"string" enum:"Tenancy"` - - // The instance type on which the Reserved instance can be used. - InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` - - // Indicates whether the offering is available through the Reserved Instance - // Marketplace (resale) or AWS. If it's a Reserved Instance Marketplace offering, - // this is true. - Marketplace *bool `locationName:"marketplace" type:"boolean"` - - // The Reserved instance offering type. - OfferingType *string `locationName:"offeringType" type:"string" enum:"OfferingTypeValues"` - - // The pricing details of the Reserved instance offering. - PricingDetails []*PricingDetail `locationName:"pricingDetailsSet" locationNameList:"item" type:"list"` - - // The Reserved instance product platform description. - ProductDescription *string `locationName:"productDescription" type:"string" enum:"RIProductDescription"` - - // The recurring charge tag assigned to the resource. - RecurringCharges []*RecurringCharge `locationName:"recurringCharges" locationNameList:"item" type:"list"` - - // The ID of the Reserved instance offering. - ReservedInstancesOfferingId *string `locationName:"reservedInstancesOfferingId" type:"string"` - - // The usage price of the Reserved instance, per hour. - UsagePrice *float64 `locationName:"usagePrice" type:"float"` - - metadataReservedInstancesOffering `json:"-" xml:"-"` -} - -type metadataReservedInstancesOffering struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ReservedInstancesOffering) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ReservedInstancesOffering) GoString() string { - return s.String() -} - -type ResetImageAttributeInput struct { - // The attribute to reset (currently you can only reset the launch permission - // attribute). - Attribute *string `type:"string" required:"true" enum:"ResetImageAttributeName"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the AMI. - ImageId *string `type:"string" required:"true"` - - metadataResetImageAttributeInput `json:"-" xml:"-"` -} - -type metadataResetImageAttributeInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ResetImageAttributeInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ResetImageAttributeInput) GoString() string { - return s.String() -} - -type ResetImageAttributeOutput struct { - metadataResetImageAttributeOutput `json:"-" xml:"-"` -} - -type metadataResetImageAttributeOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ResetImageAttributeOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ResetImageAttributeOutput) GoString() string { - return s.String() -} - -type ResetInstanceAttributeInput struct { - // The attribute to reset. - Attribute *string `locationName:"attribute" type:"string" required:"true" enum:"InstanceAttributeName"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the instance. - InstanceId *string `locationName:"instanceId" type:"string" required:"true"` - - metadataResetInstanceAttributeInput `json:"-" xml:"-"` -} - -type metadataResetInstanceAttributeInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ResetInstanceAttributeInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ResetInstanceAttributeInput) GoString() string { - return s.String() -} - -type ResetInstanceAttributeOutput struct { - metadataResetInstanceAttributeOutput `json:"-" xml:"-"` -} - -type metadataResetInstanceAttributeOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ResetInstanceAttributeOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ResetInstanceAttributeOutput) GoString() string { - return s.String() -} - -type ResetNetworkInterfaceAttributeInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the network interface. - NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string" required:"true"` - - // The source/destination checking attribute. Resets the value to true. - SourceDestCheck *string `locationName:"sourceDestCheck" type:"string"` - - metadataResetNetworkInterfaceAttributeInput `json:"-" xml:"-"` -} - -type metadataResetNetworkInterfaceAttributeInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ResetNetworkInterfaceAttributeInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ResetNetworkInterfaceAttributeInput) GoString() string { - return s.String() -} - -type ResetNetworkInterfaceAttributeOutput struct { - metadataResetNetworkInterfaceAttributeOutput `json:"-" xml:"-"` -} - -type metadataResetNetworkInterfaceAttributeOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ResetNetworkInterfaceAttributeOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ResetNetworkInterfaceAttributeOutput) GoString() string { - return s.String() -} - -type ResetSnapshotAttributeInput struct { - // The attribute to reset. Currently, only the attribute for permission to create - // volumes can be reset. - Attribute *string `type:"string" required:"true" enum:"SnapshotAttributeName"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The ID of the snapshot. - SnapshotId *string `type:"string" required:"true"` - - metadataResetSnapshotAttributeInput `json:"-" xml:"-"` -} - -type metadataResetSnapshotAttributeInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ResetSnapshotAttributeInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ResetSnapshotAttributeInput) GoString() string { - return s.String() -} - -type ResetSnapshotAttributeOutput struct { - metadataResetSnapshotAttributeOutput `json:"-" xml:"-"` -} - -type metadataResetSnapshotAttributeOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s ResetSnapshotAttributeOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ResetSnapshotAttributeOutput) GoString() string { - return s.String() -} - -type RestoreAddressToClassicInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The Elastic IP address. - PublicIp *string `locationName:"publicIp" type:"string" required:"true"` - - metadataRestoreAddressToClassicInput `json:"-" xml:"-"` -} - -type metadataRestoreAddressToClassicInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s RestoreAddressToClassicInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s RestoreAddressToClassicInput) GoString() string { - return s.String() -} - -type RestoreAddressToClassicOutput struct { - // The Elastic IP address. - PublicIp *string `locationName:"publicIp" type:"string"` - - // The move status for the IP address. - Status *string `locationName:"status" type:"string" enum:"Status"` - - metadataRestoreAddressToClassicOutput `json:"-" xml:"-"` -} - -type metadataRestoreAddressToClassicOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s RestoreAddressToClassicOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s RestoreAddressToClassicOutput) GoString() string { - return s.String() -} - -type RevokeSecurityGroupEgressInput struct { - // The CIDR IP address range. You can't specify this parameter when specifying - // a source security group. - CidrIp *string `locationName:"cidrIp" type:"string"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The start of port range for the TCP and UDP protocols, or an ICMP type number. - // For the ICMP type number, use -1 to specify all ICMP types. - FromPort *int64 `locationName:"fromPort" type:"integer"` - - // The ID of the security group. - GroupId *string `locationName:"groupId" type:"string" required:"true"` - - // A set of IP permissions. You can't specify a destination security group and - // a CIDR IP address range. - IpPermissions []*IpPermission `locationName:"ipPermissions" locationNameList:"item" type:"list"` - - // The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers (http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml)). - // Use -1 to specify all. - IpProtocol *string `locationName:"ipProtocol" type:"string"` - - // The name of a destination security group. To revoke outbound access to a - // destination security group, we recommend that you use a set of IP permissions - // instead. - SourceSecurityGroupName *string `locationName:"sourceSecurityGroupName" type:"string"` - - // The AWS account number for a destination security group. To revoke outbound - // access to a destination security group, we recommend that you use a set of - // IP permissions instead. - SourceSecurityGroupOwnerId *string `locationName:"sourceSecurityGroupOwnerId" type:"string"` - - // The end of port range for the TCP and UDP protocols, or an ICMP code number. - // For the ICMP code number, use -1 to specify all ICMP codes for the ICMP type. - ToPort *int64 `locationName:"toPort" type:"integer"` - - metadataRevokeSecurityGroupEgressInput `json:"-" xml:"-"` -} - -type metadataRevokeSecurityGroupEgressInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s RevokeSecurityGroupEgressInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s RevokeSecurityGroupEgressInput) GoString() string { - return s.String() -} - -type RevokeSecurityGroupEgressOutput struct { - metadataRevokeSecurityGroupEgressOutput `json:"-" xml:"-"` -} - -type metadataRevokeSecurityGroupEgressOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s RevokeSecurityGroupEgressOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s RevokeSecurityGroupEgressOutput) GoString() string { - return s.String() -} - -type RevokeSecurityGroupIngressInput struct { - // The CIDR IP address range. You can't specify this parameter when specifying - // a source security group. - CidrIp *string `type:"string"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // The start of port range for the TCP and UDP protocols, or an ICMP type number. - // For the ICMP type number, use -1 to specify all ICMP types. - FromPort *int64 `type:"integer"` - - // The ID of the security group. Required for a security group in a nondefault - // VPC. - GroupId *string `type:"string"` - - // [EC2-Classic, default VPC] The name of the security group. - GroupName *string `type:"string"` - - // A set of IP permissions. You can't specify a source security group and a - // CIDR IP address range. - IpPermissions []*IpPermission `locationNameList:"item" type:"list"` - - // The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers (http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml)). - // Use -1 to specify all. - IpProtocol *string `type:"string"` - - // [EC2-Classic, default VPC] The name of the source security group. You can't - // specify this parameter in combination with the following parameters: the - // CIDR IP address range, the start of the port range, the IP protocol, and - // the end of the port range. For EC2-VPC, the source security group must be - // in the same VPC. - SourceSecurityGroupName *string `type:"string"` - - // [EC2-Classic, default VPC] The AWS account ID of the source security group. - // For EC2-VPC, the source security group must be in the same VPC. You can't - // specify this parameter in combination with the following parameters: the - // CIDR IP address range, the IP protocol, the start of the port range, and - // the end of the port range. To revoke a specific rule for an IP protocol and - // port range, use a set of IP permissions instead. - SourceSecurityGroupOwnerId *string `type:"string"` - - // The end of port range for the TCP and UDP protocols, or an ICMP code number. - // For the ICMP code number, use -1 to specify all ICMP codes for the ICMP type. - ToPort *int64 `type:"integer"` - - metadataRevokeSecurityGroupIngressInput `json:"-" xml:"-"` -} - -type metadataRevokeSecurityGroupIngressInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s RevokeSecurityGroupIngressInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s RevokeSecurityGroupIngressInput) GoString() string { - return s.String() -} - -type RevokeSecurityGroupIngressOutput struct { - metadataRevokeSecurityGroupIngressOutput `json:"-" xml:"-"` -} - -type metadataRevokeSecurityGroupIngressOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s RevokeSecurityGroupIngressOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s RevokeSecurityGroupIngressOutput) GoString() string { - return s.String() -} - -// Describes a route in a route table. -type Route struct { - // The CIDR block used for the destination match. - DestinationCidrBlock *string `locationName:"destinationCidrBlock" type:"string"` - - // The prefix of the AWS service. - DestinationPrefixListId *string `locationName:"destinationPrefixListId" type:"string"` - - // The ID of a gateway attached to your VPC. - GatewayId *string `locationName:"gatewayId" type:"string"` - - // The ID of a NAT instance in your VPC. - InstanceId *string `locationName:"instanceId" type:"string"` - - // The AWS account ID of the owner of the instance. - InstanceOwnerId *string `locationName:"instanceOwnerId" type:"string"` - - // The ID of the network interface. - NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"` - - // Describes how the route was created. - // - // CreateRouteTable indicates that route was automatically created when the - // route table was created. CreateRoute indicates that the route was manually - // added to the route table. EnableVgwRoutePropagation indicates that the route - // was propagated by route propagation. - Origin *string `locationName:"origin" type:"string" enum:"RouteOrigin"` - - // The state of the route. The blackhole state indicates that the route's target - // isn't available (for example, the specified gateway isn't attached to the - // VPC, or the specified NAT instance has been terminated). - State *string `locationName:"state" type:"string" enum:"RouteState"` - - // The ID of the VPC peering connection. - VpcPeeringConnectionId *string `locationName:"vpcPeeringConnectionId" type:"string"` - - metadataRoute `json:"-" xml:"-"` -} - -type metadataRoute struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s Route) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s Route) GoString() string { - return s.String() -} - -// Describes a route table. -type RouteTable struct { - // The associations between the route table and one or more subnets. - Associations []*RouteTableAssociation `locationName:"associationSet" locationNameList:"item" type:"list"` - - // Any virtual private gateway (VGW) propagating routes. - PropagatingVgws []*PropagatingVgw `locationName:"propagatingVgwSet" locationNameList:"item" type:"list"` - - // The ID of the route table. - RouteTableId *string `locationName:"routeTableId" type:"string"` - - // The routes in the route table. - Routes []*Route `locationName:"routeSet" locationNameList:"item" type:"list"` - - // Any tags assigned to the route table. - Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` - - // The ID of the VPC. - VpcId *string `locationName:"vpcId" type:"string"` - - metadataRouteTable `json:"-" xml:"-"` -} - -type metadataRouteTable struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s RouteTable) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s RouteTable) GoString() string { - return s.String() -} - -// Describes an association between a route table and a subnet. -type RouteTableAssociation struct { - // Indicates whether this is the main route table. - Main *bool `locationName:"main" type:"boolean"` - - // The ID of the association between a route table and a subnet. - RouteTableAssociationId *string `locationName:"routeTableAssociationId" type:"string"` - - // The ID of the route table. - RouteTableId *string `locationName:"routeTableId" type:"string"` - - // The ID of the subnet. A subnet ID is not returned for an implicit association. - SubnetId *string `locationName:"subnetId" type:"string"` - - metadataRouteTableAssociation `json:"-" xml:"-"` -} - -type metadataRouteTableAssociation struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s RouteTableAssociation) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s RouteTableAssociation) GoString() string { - return s.String() -} - -type RunInstancesInput struct { - // Reserved. - AdditionalInfo *string `locationName:"additionalInfo" type:"string"` - - // The block device mapping. - BlockDeviceMappings []*BlockDeviceMapping `locationName:"BlockDeviceMapping" locationNameList:"BlockDeviceMapping" type:"list"` - - // Unique, case-sensitive identifier you provide to ensure the idempotency of - // the request. For more information, see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). - // - // Constraints: Maximum 64 ASCII characters - ClientToken *string `locationName:"clientToken" type:"string"` - - // If you set this parameter to true, you can't terminate the instance using - // the Amazon EC2 console, CLI, or API; otherwise, you can. If you set this - // parameter to true and then later want to be able to terminate the instance, - // you must first change the value of the disableApiTermination attribute to - // false using ModifyInstanceAttribute. Alternatively, if you set InstanceInitiatedShutdownBehavior - // to terminate, you can terminate the instance by running the shutdown command - // from the instance. - // - // Default: false - DisableApiTermination *bool `locationName:"disableApiTermination" type:"boolean"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // Indicates whether the instance is optimized for EBS I/O. This optimization - // provides dedicated throughput to Amazon EBS and an optimized configuration - // stack to provide optimal EBS I/O performance. This optimization isn't available - // with all instance types. Additional usage charges apply when using an EBS-optimized - // instance. - // - // Default: false - EbsOptimized *bool `locationName:"ebsOptimized" type:"boolean"` - - // The IAM instance profile. - IamInstanceProfile *IamInstanceProfileSpecification `locationName:"iamInstanceProfile" type:"structure"` - - // The ID of the AMI, which you can get by calling DescribeImages. - ImageId *string `type:"string" required:"true"` - - // Indicates whether an instance stops or terminates when you initiate shutdown - // from the instance (using the operating system command for system shutdown). - // - // Default: stop - InstanceInitiatedShutdownBehavior *string `locationName:"instanceInitiatedShutdownBehavior" type:"string" enum:"ShutdownBehavior"` - - // The instance type. For more information, see Instance Types (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) - // in the Amazon Elastic Compute Cloud User Guide. - // - // Default: m1.small - InstanceType *string `type:"string" enum:"InstanceType"` - - // The ID of the kernel. - // - // We recommend that you use PV-GRUB instead of kernels and RAM disks. For - // more information, see PV-GRUB (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html) - // in the Amazon Elastic Compute Cloud User Guide. - KernelId *string `type:"string"` - - // The name of the key pair. You can create a key pair using CreateKeyPair or - // ImportKeyPair. - // - // If you do not specify a key pair, you can't connect to the instance unless - // you choose an AMI that is configured to allow users another way to log in. - KeyName *string `type:"string"` - - // The maximum number of instances to launch. If you specify more instances - // than Amazon EC2 can launch in the target Availability Zone, Amazon EC2 launches - // the largest possible number of instances above MinCount. - // - // Constraints: Between 1 and the maximum number you're allowed for the specified - // instance type. For more information about the default limits, and how to - // request an increase, see How many instances can I run in Amazon EC2 (http://aws.amazon.com/ec2/faqs/#How_many_instances_can_I_run_in_Amazon_EC2) - // in the Amazon EC2 General FAQ. - MaxCount *int64 `type:"integer" required:"true"` - - // The minimum number of instances to launch. If you specify a minimum that - // is more instances than Amazon EC2 can launch in the target Availability Zone, - // Amazon EC2 launches no instances. - // - // Constraints: Between 1 and the maximum number you're allowed for the specified - // instance type. For more information about the default limits, and how to - // request an increase, see How many instances can I run in Amazon EC2 (http://aws.amazon.com/ec2/faqs/#How_many_instances_can_I_run_in_Amazon_EC2) - // in the Amazon EC2 General FAQ. - MinCount *int64 `type:"integer" required:"true"` - - // The monitoring for the instance. - Monitoring *RunInstancesMonitoringEnabled `type:"structure"` - - // One or more network interfaces. - NetworkInterfaces []*InstanceNetworkInterfaceSpecification `locationName:"networkInterface" locationNameList:"item" type:"list"` - - // The placement for the instance. - Placement *Placement `type:"structure"` - - // [EC2-VPC] The primary IP address. You must specify a value from the IP address - // range of the subnet. - // - // Only one private IP address can be designated as primary. Therefore, you - // can't specify this parameter if PrivateIpAddresses.n.Primary is set to true - // and PrivateIpAddresses.n.PrivateIpAddress is set to an IP address. - // - // Default: We select an IP address from the IP address range of the subnet. - PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"` - - // The ID of the RAM disk. - // - // We recommend that you use PV-GRUB instead of kernels and RAM disks. For - // more information, see PV-GRUB (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html) - // in the Amazon Elastic Compute Cloud User Guide. - RamdiskId *string `type:"string"` - - // One or more security group IDs. You can create a security group using CreateSecurityGroup. - // - // Default: Amazon EC2 uses the default security group. - SecurityGroupIds []*string `locationName:"SecurityGroupId" locationNameList:"SecurityGroupId" type:"list"` - - // [EC2-Classic, default VPC] One or more security group names. For a nondefault - // VPC, you must use security group IDs instead. - // - // Default: Amazon EC2 uses the default security group. - SecurityGroups []*string `locationName:"SecurityGroup" locationNameList:"SecurityGroup" type:"list"` - - // [EC2-VPC] The ID of the subnet to launch the instance into. - SubnetId *string `type:"string"` - - // The Base64-encoded MIME user data for the instances. - UserData *string `type:"string"` - - metadataRunInstancesInput `json:"-" xml:"-"` -} - -type metadataRunInstancesInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s RunInstancesInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s RunInstancesInput) GoString() string { - return s.String() -} - -// Describes the monitoring for the instance. -type RunInstancesMonitoringEnabled struct { - // Indicates whether monitoring is enabled for the instance. - Enabled *bool `locationName:"enabled" type:"boolean" required:"true"` - - metadataRunInstancesMonitoringEnabled `json:"-" xml:"-"` -} - -type metadataRunInstancesMonitoringEnabled struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s RunInstancesMonitoringEnabled) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s RunInstancesMonitoringEnabled) GoString() string { - return s.String() -} - -// Describes the storage parameters for S3 and S3 buckets for an instance store-backed -// AMI. -type S3Storage struct { - // The access key ID of the owner of the bucket. Before you specify a value - // for your access key ID, review and follow the guidance in Best Practices - // for Managing AWS Access Keys (http://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html). - AWSAccessKeyId *string `type:"string"` - - // The bucket in which to store the AMI. You can specify a bucket that you already - // own or a new bucket that Amazon EC2 creates on your behalf. If you specify - // a bucket that belongs to someone else, Amazon EC2 returns an error. - Bucket *string `locationName:"bucket" type:"string"` - - // The beginning of the file name of the AMI. - Prefix *string `locationName:"prefix" type:"string"` - - // A Base64-encoded Amazon S3 upload policy that gives Amazon EC2 permission - // to upload items into Amazon S3 on your behalf. - UploadPolicy []byte `locationName:"uploadPolicy" type:"blob"` - - // The signature of the Base64 encoded JSON document. - UploadPolicySignature *string `locationName:"uploadPolicySignature" type:"string"` - - metadataS3Storage `json:"-" xml:"-"` -} - -type metadataS3Storage struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s S3Storage) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s S3Storage) GoString() string { - return s.String() -} - -// Describes a security group -type SecurityGroup struct { - // A description of the security group. - Description *string `locationName:"groupDescription" type:"string"` - - // The ID of the security group. - GroupId *string `locationName:"groupId" type:"string"` - - // The name of the security group. - GroupName *string `locationName:"groupName" type:"string"` - - // One or more inbound rules associated with the security group. - IpPermissions []*IpPermission `locationName:"ipPermissions" locationNameList:"item" type:"list"` - - // [EC2-VPC] One or more outbound rules associated with the security group. - IpPermissionsEgress []*IpPermission `locationName:"ipPermissionsEgress" locationNameList:"item" type:"list"` - - // The AWS account ID of the owner of the security group. - OwnerId *string `locationName:"ownerId" type:"string"` - - // Any tags assigned to the security group. - Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` - - // [EC2-VPC] The ID of the VPC for the security group. - VpcId *string `locationName:"vpcId" type:"string"` - - metadataSecurityGroup `json:"-" xml:"-"` -} - -type metadataSecurityGroup struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s SecurityGroup) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s SecurityGroup) GoString() string { - return s.String() -} - -// Describes a snapshot. -type Snapshot struct { - // The data encryption key identifier for the snapshot. This value is a unique - // identifier that corresponds to the data encryption key that was used to encrypt - // the original volume or snapshot copy. Because data encryption keys are inherited - // by volumes created from snapshots, and vice versa, if snapshots share the - // same data encryption key identifier, then they belong to the same volume/snapshot - // lineage. This parameter is only returned by the DescribeSnapshots API operation. - DataEncryptionKeyId *string `locationName:"dataEncryptionKeyId" type:"string"` - - // The description for the snapshot. - Description *string `locationName:"description" type:"string"` - - // Indicates whether the snapshot is encrypted. - Encrypted *bool `locationName:"encrypted" type:"boolean"` - - // The full ARN of the AWS Key Management Service (AWS KMS) customer master - // key (CMK) that was used to protect the volume encryption key for the parent - // volume. - KmsKeyId *string `locationName:"kmsKeyId" type:"string"` - - // The AWS account alias (for example, amazon, self) or AWS account ID that - // owns the snapshot. - OwnerAlias *string `locationName:"ownerAlias" type:"string"` - - // The AWS account ID of the EBS snapshot owner. - OwnerId *string `locationName:"ownerId" type:"string"` - - // The progress of the snapshot, as a percentage. - Progress *string `locationName:"progress" type:"string"` - - // The ID of the snapshot. Each snapshot receives a unique identifier when it - // is created. - SnapshotId *string `locationName:"snapshotId" type:"string"` - - // The time stamp when the snapshot was initiated. - StartTime *time.Time `locationName:"startTime" type:"timestamp" timestampFormat:"iso8601"` - - // The snapshot state. - State *string `locationName:"status" type:"string" enum:"SnapshotState"` - - // Encrypted Amazon EBS snapshots are copied asynchronously. If a snapshot copy - // operation fails (for example, if the proper AWS Key Management Service (AWS - // KMS) permissions are not obtained) this field displays error state details - // to help you diagnose why the error occurred. This parameter is only returned - // by the DescribeSnapshots API operation. - StateMessage *string `locationName:"statusMessage" type:"string"` - - // Any tags assigned to the snapshot. - Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` - - // The ID of the volume that was used to create the snapshot. - VolumeId *string `locationName:"volumeId" type:"string"` - - // The size of the volume, in GiB. - VolumeSize *int64 `locationName:"volumeSize" type:"integer"` - - metadataSnapshot `json:"-" xml:"-"` -} - -type metadataSnapshot struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s Snapshot) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s Snapshot) GoString() string { - return s.String() -} - -// Describes the snapshot created from the imported disk. -type SnapshotDetail struct { - // A description for the snapshot. - Description *string `locationName:"description" type:"string"` - - // The block device mapping for the snapshot. - DeviceName *string `locationName:"deviceName" type:"string"` - - // The size of the disk in the snapshot, in GiB. - DiskImageSize *float64 `locationName:"diskImageSize" type:"double"` - - // The format of the disk image from which the snapshot is created. - Format *string `locationName:"format" type:"string"` - - // The percentage of progress for the task. - Progress *string `locationName:"progress" type:"string"` - - // The snapshot ID of the disk being imported. - SnapshotId *string `locationName:"snapshotId" type:"string"` - - // A brief status of the snapshot creation. - Status *string `locationName:"status" type:"string"` - - // A detailed status message for the snapshot creation. - StatusMessage *string `locationName:"statusMessage" type:"string"` - - // The URL used to access the disk image. - Url *string `locationName:"url" type:"string"` - - // Describes the S3 bucket for the disk image. - UserBucket *UserBucketDetails `locationName:"userBucket" type:"structure"` - - metadataSnapshotDetail `json:"-" xml:"-"` -} - -type metadataSnapshotDetail struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s SnapshotDetail) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s SnapshotDetail) GoString() string { - return s.String() -} - -// The disk container object for the import snapshot request. -type SnapshotDiskContainer struct { - // The description of the disk image being imported. - Description *string `type:"string"` - - // The format of the disk image being imported. - // - // Valid values: RAW | VHD | VMDK | OVA - Format *string `type:"string"` - - // The URL to the Amazon S3-based disk image being imported. It can either be - // a https URL (https://..) or an Amazon S3 URL (s3://..). - Url *string `type:"string"` - - // Describes the S3 bucket for the disk image. - UserBucket *UserBucket `type:"structure"` - - metadataSnapshotDiskContainer `json:"-" xml:"-"` -} - -type metadataSnapshotDiskContainer struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s SnapshotDiskContainer) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s SnapshotDiskContainer) GoString() string { - return s.String() -} - -// Details about the import snapshot task. -type SnapshotTaskDetail struct { - // The description of the snapshot. - Description *string `locationName:"description" type:"string"` - - // The size of the disk in the snapshot, in GiB. - DiskImageSize *float64 `locationName:"diskImageSize" type:"double"` - - // The format of the disk image from which the snapshot is created. - Format *string `locationName:"format" type:"string"` - - // The percentage of completion for the import snapshot task. - Progress *string `locationName:"progress" type:"string"` - - // The snapshot ID of the disk being imported. - SnapshotId *string `locationName:"snapshotId" type:"string"` - - // A brief status for the import snapshot task. - Status *string `locationName:"status" type:"string"` - - // A detailed status message for the import snapshot task. - StatusMessage *string `locationName:"statusMessage" type:"string"` - - // The URL of the disk image from which the snapshot is created. - Url *string `locationName:"url" type:"string"` - - // The S3 bucket for the disk image. - UserBucket *UserBucketDetails `locationName:"userBucket" type:"structure"` - - metadataSnapshotTaskDetail `json:"-" xml:"-"` -} - -type metadataSnapshotTaskDetail struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s SnapshotTaskDetail) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s SnapshotTaskDetail) GoString() string { - return s.String() -} - -// Describes the data feed for a Spot instance. -type SpotDatafeedSubscription struct { - // The Amazon S3 bucket where the Spot instance data feed is located. - Bucket *string `locationName:"bucket" type:"string"` - - // The fault codes for the Spot instance request, if any. - Fault *SpotInstanceStateFault `locationName:"fault" type:"structure"` - - // The AWS account ID of the account. - OwnerId *string `locationName:"ownerId" type:"string"` - - // The prefix that is prepended to data feed files. - Prefix *string `locationName:"prefix" type:"string"` - - // The state of the Spot instance data feed subscription. - State *string `locationName:"state" type:"string" enum:"DatafeedSubscriptionState"` - - metadataSpotDatafeedSubscription `json:"-" xml:"-"` -} - -type metadataSpotDatafeedSubscription struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s SpotDatafeedSubscription) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s SpotDatafeedSubscription) GoString() string { - return s.String() -} - -// Describes the launch specification for one or more Spot instances. -type SpotFleetLaunchSpecification struct { - // Deprecated. - AddressingType *string `locationName:"addressingType" type:"string"` - - // One or more block device mapping entries. - BlockDeviceMappings []*BlockDeviceMapping `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"` - - // Indicates whether the instances are optimized for EBS I/O. This optimization - // provides dedicated throughput to Amazon EBS and an optimized configuration - // stack to provide optimal EBS I/O performance. This optimization isn't available - // with all instance types. Additional usage charges apply when using an EBS - // Optimized instance. - // - // Default: false - EbsOptimized *bool `locationName:"ebsOptimized" type:"boolean"` - - // The IAM instance profile. - IamInstanceProfile *IamInstanceProfileSpecification `locationName:"iamInstanceProfile" type:"structure"` - - // The ID of the AMI. - ImageId *string `locationName:"imageId" type:"string"` - - // The instance type. - InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` - - // The ID of the kernel. - KernelId *string `locationName:"kernelId" type:"string"` - - // The name of the key pair. - KeyName *string `locationName:"keyName" type:"string"` - - // Enable or disable monitoring for the instances. - Monitoring *SpotFleetMonitoring `locationName:"monitoring" type:"structure"` - - // One or more network interfaces. - NetworkInterfaces []*InstanceNetworkInterfaceSpecification `locationName:"networkInterfaceSet" locationNameList:"item" type:"list"` - - // The placement information. - Placement *SpotPlacement `locationName:"placement" type:"structure"` - - // The ID of the RAM disk. - RamdiskId *string `locationName:"ramdiskId" type:"string"` - - // One or more security groups. When requesting instances in a VPC, you must - // specify the IDs of the security groups. When requesting instances in EC2-Classic, - // you can specify the names or the IDs of the security groups. - SecurityGroups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"` - - // The bid price per unit hour for the specified instance type. If this value - // is not specified, the default is the Spot bid price specified for the fleet. - // To determine the bid price per unit hour, divide the Spot bid price by the - // value of WeightedCapacity. - SpotPrice *string `locationName:"spotPrice" type:"string"` - - // The ID of the subnet in which to launch the instances. - SubnetId *string `locationName:"subnetId" type:"string"` - - // The Base64-encoded MIME user data to make available to the instances. - UserData *string `locationName:"userData" type:"string"` - - // The number of units provided by the specified instance type. These are the - // same units that you chose to set the target capacity in terms (instances - // or a performance characteristic such as vCPUs, memory, or I/O). - // - // If the target capacity divided by this value is not a whole number, we round - // the number of instances to the next whole number. If this value is not specified, - // the default is 1. - WeightedCapacity *float64 `locationName:"weightedCapacity" type:"double"` - - metadataSpotFleetLaunchSpecification `json:"-" xml:"-"` -} - -type metadataSpotFleetLaunchSpecification struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s SpotFleetLaunchSpecification) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s SpotFleetLaunchSpecification) GoString() string { - return s.String() -} - -// Describes whether monitoring is enabled. -type SpotFleetMonitoring struct { - // Enables monitoring for the instance. - // - // Default: false - Enabled *bool `locationName:"enabled" type:"boolean"` - - metadataSpotFleetMonitoring `json:"-" xml:"-"` -} - -type metadataSpotFleetMonitoring struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s SpotFleetMonitoring) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s SpotFleetMonitoring) GoString() string { - return s.String() -} - -// Describes a Spot fleet request. -type SpotFleetRequestConfig struct { - // The creation date and time of the request. - CreateTime *time.Time `locationName:"createTime" type:"timestamp" timestampFormat:"iso8601" required:"true"` - - // Information about the configuration of the Spot fleet request. - SpotFleetRequestConfig *SpotFleetRequestConfigData `locationName:"spotFleetRequestConfig" type:"structure" required:"true"` - - // The ID of the Spot fleet request. - SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"` - - // The state of the Spot fleet request. - SpotFleetRequestState *string `locationName:"spotFleetRequestState" type:"string" required:"true" enum:"BatchState"` - - metadataSpotFleetRequestConfig `json:"-" xml:"-"` -} - -type metadataSpotFleetRequestConfig struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s SpotFleetRequestConfig) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s SpotFleetRequestConfig) GoString() string { - return s.String() -} - -// Describes the configuration of a Spot fleet request. -type SpotFleetRequestConfigData struct { - // Indicates how to allocate the target capacity across the Spot pools specified - // by the Spot fleet request. The default is lowestPrice. - AllocationStrategy *string `locationName:"allocationStrategy" type:"string" enum:"AllocationStrategy"` - - // A unique, case-sensitive identifier you provide to ensure idempotency of - // your listings. This helps avoid duplicate listings. For more information, - // see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). - ClientToken *string `locationName:"clientToken" type:"string"` - - // Indicates whether running Spot instances should be terminated if the target - // capacity of the Spot fleet request is decreased below the current size of - // the Spot fleet. - ExcessCapacityTerminationPolicy *string `locationName:"excessCapacityTerminationPolicy" type:"string" enum:"ExcessCapacityTerminationPolicy"` - - // Grants the Spot fleet permission to terminate Spot instances on your behalf - // when you cancel its Spot fleet request using CancelSpotFleetRequests or when - // the Spot fleet request expires, if you set terminateInstancesWithExpiration. - IamFleetRole *string `locationName:"iamFleetRole" type:"string" required:"true"` - - // Information about the launch specifications for the Spot fleet request. - LaunchSpecifications []*SpotFleetLaunchSpecification `locationName:"launchSpecifications" locationNameList:"item" min:"1" type:"list" required:"true"` - - // The bid price per unit hour. - SpotPrice *string `locationName:"spotPrice" type:"string" required:"true"` - - // The number of units to request. You can choose to set the target capacity - // in terms of instances or a performance characteristic that is important to - // your application workload, such as vCPUs, memory, or I/O. - TargetCapacity *int64 `locationName:"targetCapacity" type:"integer" required:"true"` - - // Indicates whether running Spot instances should be terminated when the Spot - // fleet request expires. - TerminateInstancesWithExpiration *bool `locationName:"terminateInstancesWithExpiration" type:"boolean"` - - // The start date and time of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). - // The default is to start fulfilling the request immediately. - ValidFrom *time.Time `locationName:"validFrom" type:"timestamp" timestampFormat:"iso8601"` - - // The end date and time of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). - // At this point, no new Spot instance requests are placed or enabled to fulfill - // the request. - ValidUntil *time.Time `locationName:"validUntil" type:"timestamp" timestampFormat:"iso8601"` - - metadataSpotFleetRequestConfigData `json:"-" xml:"-"` -} - -type metadataSpotFleetRequestConfigData struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s SpotFleetRequestConfigData) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s SpotFleetRequestConfigData) GoString() string { - return s.String() -} - -// Describes a Spot instance request. -type SpotInstanceRequest struct { - // If you specified a duration and your Spot instance request was fulfilled, - // this is the fixed hourly price in effect for the Spot instance while it runs. - ActualBlockHourlyPrice *string `locationName:"actualBlockHourlyPrice" type:"string"` - - // The Availability Zone group. If you specify the same Availability Zone group - // for all Spot instance requests, all Spot instances are launched in the same - // Availability Zone. - AvailabilityZoneGroup *string `locationName:"availabilityZoneGroup" type:"string"` - - // The duration for the Spot instance, in minutes. - BlockDurationMinutes *int64 `locationName:"blockDurationMinutes" type:"integer"` - - // The date and time when the Spot instance request was created, in UTC format - // (for example, YYYY-MM-DDTHH:MM:SSZ). - CreateTime *time.Time `locationName:"createTime" type:"timestamp" timestampFormat:"iso8601"` - - // The fault codes for the Spot instance request, if any. - Fault *SpotInstanceStateFault `locationName:"fault" type:"structure"` - - // The instance ID, if an instance has been launched to fulfill the Spot instance - // request. - InstanceId *string `locationName:"instanceId" type:"string"` - - // The instance launch group. Launch groups are Spot instances that launch together - // and terminate together. - LaunchGroup *string `locationName:"launchGroup" type:"string"` - - // Additional information for launching instances. - LaunchSpecification *LaunchSpecification `locationName:"launchSpecification" type:"structure"` - - // The Availability Zone in which the bid is launched. - LaunchedAvailabilityZone *string `locationName:"launchedAvailabilityZone" type:"string"` - - // The product description associated with the Spot instance. - ProductDescription *string `locationName:"productDescription" type:"string" enum:"RIProductDescription"` - - // The ID of the Spot instance request. - SpotInstanceRequestId *string `locationName:"spotInstanceRequestId" type:"string"` - - // The maximum hourly price (bid) for the Spot instance launched to fulfill - // the request. - SpotPrice *string `locationName:"spotPrice" type:"string"` - - // The state of the Spot instance request. Spot bid status information can help - // you track your Spot instance requests. For more information, see Spot Bid - // Status (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-bid-status.html) - // in the Amazon Elastic Compute Cloud User Guide. - State *string `locationName:"state" type:"string" enum:"SpotInstanceState"` - - // The status code and status message describing the Spot instance request. - Status *SpotInstanceStatus `locationName:"status" type:"structure"` - - // Any tags assigned to the resource. - Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` - - // The Spot instance request type. - Type *string `locationName:"type" type:"string" enum:"SpotInstanceType"` - - // The start date of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). - // The request becomes active at this date and time. - ValidFrom *time.Time `locationName:"validFrom" type:"timestamp" timestampFormat:"iso8601"` - - // The end date of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). - // If this is a one-time request, it remains active until all instances launch, - // the request is canceled, or this date is reached. If the request is persistent, - // it remains active until it is canceled or this date is reached. - ValidUntil *time.Time `locationName:"validUntil" type:"timestamp" timestampFormat:"iso8601"` - - metadataSpotInstanceRequest `json:"-" xml:"-"` -} - -type metadataSpotInstanceRequest struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s SpotInstanceRequest) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s SpotInstanceRequest) GoString() string { - return s.String() -} - -// Describes a Spot instance state change. -type SpotInstanceStateFault struct { - // The reason code for the Spot instance state change. - Code *string `locationName:"code" type:"string"` - - // The message for the Spot instance state change. - Message *string `locationName:"message" type:"string"` - - metadataSpotInstanceStateFault `json:"-" xml:"-"` -} - -type metadataSpotInstanceStateFault struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s SpotInstanceStateFault) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s SpotInstanceStateFault) GoString() string { - return s.String() -} - -// Describes the status of a Spot instance request. -type SpotInstanceStatus struct { - // The status code. For a list of status codes, see Spot Bid Status Codes (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-bid-status.html#spot-instance-bid-status-understand) - // in the Amazon Elastic Compute Cloud User Guide. - Code *string `locationName:"code" type:"string"` - - // The description for the status code. - Message *string `locationName:"message" type:"string"` - - // The date and time of the most recent status update, in UTC format (for example, - // YYYY-MM-DDTHH:MM:SSZ). - UpdateTime *time.Time `locationName:"updateTime" type:"timestamp" timestampFormat:"iso8601"` - - metadataSpotInstanceStatus `json:"-" xml:"-"` -} - -type metadataSpotInstanceStatus struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s SpotInstanceStatus) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s SpotInstanceStatus) GoString() string { - return s.String() -} - -// Describes Spot instance placement. -type SpotPlacement struct { - // The Availability Zone. - AvailabilityZone *string `locationName:"availabilityZone" type:"string"` - - // The name of the placement group (for cluster instances). - GroupName *string `locationName:"groupName" type:"string"` - - metadataSpotPlacement `json:"-" xml:"-"` -} - -type metadataSpotPlacement struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s SpotPlacement) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s SpotPlacement) GoString() string { - return s.String() -} - -// Describes the maximum hourly price (bid) for any Spot instance launched to -// fulfill the request. -type SpotPrice struct { - // The Availability Zone. - AvailabilityZone *string `locationName:"availabilityZone" type:"string"` - - // The instance type. - InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` - - // A general description of the AMI. - ProductDescription *string `locationName:"productDescription" type:"string" enum:"RIProductDescription"` - - // The maximum price (bid) that you are willing to pay for a Spot instance. - SpotPrice *string `locationName:"spotPrice" type:"string"` - - // The date and time the request was created, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). - Timestamp *time.Time `locationName:"timestamp" type:"timestamp" timestampFormat:"iso8601"` - - metadataSpotPrice `json:"-" xml:"-"` -} - -type metadataSpotPrice struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s SpotPrice) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s SpotPrice) GoString() string { - return s.String() -} - -type StartInstancesInput struct { - // Reserved. - AdditionalInfo *string `locationName:"additionalInfo" type:"string"` - - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more instance IDs. - InstanceIds []*string `locationName:"InstanceId" locationNameList:"InstanceId" type:"list" required:"true"` - - metadataStartInstancesInput `json:"-" xml:"-"` -} - -type metadataStartInstancesInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s StartInstancesInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s StartInstancesInput) GoString() string { - return s.String() -} - -type StartInstancesOutput struct { - // Information about one or more started instances. - StartingInstances []*InstanceStateChange `locationName:"instancesSet" locationNameList:"item" type:"list"` - - metadataStartInstancesOutput `json:"-" xml:"-"` -} - -type metadataStartInstancesOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s StartInstancesOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s StartInstancesOutput) GoString() string { - return s.String() -} - -// Describes a state change. -type StateReason struct { - // The reason code for the state change. - Code *string `locationName:"code" type:"string"` - - // The message for the state change. - // - // Server.SpotInstanceTermination: A Spot instance was terminated due to an - // increase in the market price. - // - // Server.InternalError: An internal error occurred during instance launch, - // resulting in termination. - // - // Server.InsufficientInstanceCapacity: There was insufficient instance capacity - // to satisfy the launch request. - // - // Client.InternalError: A client error caused the instance to terminate on - // launch. - // - // Client.InstanceInitiatedShutdown: The instance was shut down using the shutdown - // -h command from the instance. - // - // Client.UserInitiatedShutdown: The instance was shut down using the Amazon - // EC2 API. - // - // Client.VolumeLimitExceeded: The volume limit was exceeded. - // - // Client.InvalidSnapshot.NotFound: The specified snapshot was not found. - Message *string `locationName:"message" type:"string"` - - metadataStateReason `json:"-" xml:"-"` -} - -type metadataStateReason struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s StateReason) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s StateReason) GoString() string { - return s.String() -} - -type StopInstancesInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // Forces the instances to stop. The instances do not have an opportunity to - // flush file system caches or file system metadata. If you use this option, - // you must perform file system check and repair procedures. This option is - // not recommended for Windows instances. - // - // Default: false - Force *bool `locationName:"force" type:"boolean"` - - // One or more instance IDs. - InstanceIds []*string `locationName:"InstanceId" locationNameList:"InstanceId" type:"list" required:"true"` - - metadataStopInstancesInput `json:"-" xml:"-"` -} - -type metadataStopInstancesInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s StopInstancesInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s StopInstancesInput) GoString() string { - return s.String() -} - -type StopInstancesOutput struct { - // Information about one or more stopped instances. - StoppingInstances []*InstanceStateChange `locationName:"instancesSet" locationNameList:"item" type:"list"` - - metadataStopInstancesOutput `json:"-" xml:"-"` -} - -type metadataStopInstancesOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s StopInstancesOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s StopInstancesOutput) GoString() string { - return s.String() -} - -// Describes the storage location for an instance store-backed AMI. -type Storage struct { - // An Amazon S3 storage location. - S3 *S3Storage `type:"structure"` - - metadataStorage `json:"-" xml:"-"` -} - -type metadataStorage struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s Storage) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s Storage) GoString() string { - return s.String() -} - -// Describes a subnet. -type Subnet struct { - // The Availability Zone of the subnet. - AvailabilityZone *string `locationName:"availabilityZone" type:"string"` - - // The number of unused IP addresses in the subnet. Note that the IP addresses - // for any stopped instances are considered unavailable. - AvailableIpAddressCount *int64 `locationName:"availableIpAddressCount" type:"integer"` - - // The CIDR block assigned to the subnet. - CidrBlock *string `locationName:"cidrBlock" type:"string"` - - // Indicates whether this is the default subnet for the Availability Zone. - DefaultForAz *bool `locationName:"defaultForAz" type:"boolean"` - - // Indicates whether instances launched in this subnet receive a public IP address. - MapPublicIpOnLaunch *bool `locationName:"mapPublicIpOnLaunch" type:"boolean"` - - // The current state of the subnet. - State *string `locationName:"state" type:"string" enum:"SubnetState"` - - // The ID of the subnet. - SubnetId *string `locationName:"subnetId" type:"string"` - - // Any tags assigned to the subnet. - Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` - - // The ID of the VPC the subnet is in. - VpcId *string `locationName:"vpcId" type:"string"` - - metadataSubnet `json:"-" xml:"-"` -} - -type metadataSubnet struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s Subnet) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s Subnet) GoString() string { - return s.String() -} - -// Describes a tag. -type Tag struct { - // The key of the tag. - // - // Constraints: Tag keys are case-sensitive and accept a maximum of 127 Unicode - // characters. May not begin with aws: - Key *string `locationName:"key" type:"string"` - - // The value of the tag. - // - // Constraints: Tag values are case-sensitive and accept a maximum of 255 Unicode - // characters. - Value *string `locationName:"value" type:"string"` - - metadataTag `json:"-" xml:"-"` -} - -type metadataTag struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s Tag) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s Tag) GoString() string { - return s.String() -} - -// Describes a tag. -type TagDescription struct { - // The tag key. - Key *string `locationName:"key" type:"string"` - - // The ID of the resource. For example, ami-1a2b3c4d. - ResourceId *string `locationName:"resourceId" type:"string"` - - // The resource type. - ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"` - - // The tag value. - Value *string `locationName:"value" type:"string"` - - metadataTagDescription `json:"-" xml:"-"` -} - -type metadataTagDescription struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s TagDescription) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s TagDescription) GoString() string { - return s.String() -} - -type TerminateInstancesInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more instance IDs. - InstanceIds []*string `locationName:"InstanceId" locationNameList:"InstanceId" type:"list" required:"true"` - - metadataTerminateInstancesInput `json:"-" xml:"-"` -} - -type metadataTerminateInstancesInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s TerminateInstancesInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s TerminateInstancesInput) GoString() string { - return s.String() -} - -type TerminateInstancesOutput struct { - // Information about one or more terminated instances. - TerminatingInstances []*InstanceStateChange `locationName:"instancesSet" locationNameList:"item" type:"list"` - - metadataTerminateInstancesOutput `json:"-" xml:"-"` -} - -type metadataTerminateInstancesOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s TerminateInstancesOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s TerminateInstancesOutput) GoString() string { - return s.String() -} - -type UnassignPrivateIpAddressesInput struct { - // The ID of the network interface. - NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string" required:"true"` - - // The secondary private IP addresses to unassign from the network interface. - // You can specify this option multiple times to unassign more than one IP address. - PrivateIpAddresses []*string `locationName:"privateIpAddress" locationNameList:"PrivateIpAddress" type:"list" required:"true"` - - metadataUnassignPrivateIpAddressesInput `json:"-" xml:"-"` -} - -type metadataUnassignPrivateIpAddressesInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s UnassignPrivateIpAddressesInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s UnassignPrivateIpAddressesInput) GoString() string { - return s.String() -} - -type UnassignPrivateIpAddressesOutput struct { - metadataUnassignPrivateIpAddressesOutput `json:"-" xml:"-"` -} - -type metadataUnassignPrivateIpAddressesOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s UnassignPrivateIpAddressesOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s UnassignPrivateIpAddressesOutput) GoString() string { - return s.String() -} - -type UnmonitorInstancesInput struct { - // Checks whether you have the required permissions for the action, without - // actually making the request, and provides an error response. If you have - // the required permissions, the error response is DryRunOperation. Otherwise, - // it is UnauthorizedOperation. - DryRun *bool `locationName:"dryRun" type:"boolean"` - - // One or more instance IDs. - InstanceIds []*string `locationName:"InstanceId" locationNameList:"InstanceId" type:"list" required:"true"` - - metadataUnmonitorInstancesInput `json:"-" xml:"-"` -} - -type metadataUnmonitorInstancesInput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s UnmonitorInstancesInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s UnmonitorInstancesInput) GoString() string { - return s.String() -} - -type UnmonitorInstancesOutput struct { - // Monitoring information for one or more instances. - InstanceMonitorings []*InstanceMonitoring `locationName:"instancesSet" locationNameList:"item" type:"list"` - - metadataUnmonitorInstancesOutput `json:"-" xml:"-"` -} - -type metadataUnmonitorInstancesOutput struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s UnmonitorInstancesOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s UnmonitorInstancesOutput) GoString() string { - return s.String() -} - -// Information about items that were not successfully processed in a batch call. -type UnsuccessfulItem struct { - // Information about the error. - Error *UnsuccessfulItemError `locationName:"error" type:"structure" required:"true"` - - // The ID of the resource. - ResourceId *string `locationName:"resourceId" type:"string"` - - metadataUnsuccessfulItem `json:"-" xml:"-"` -} - -type metadataUnsuccessfulItem struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s UnsuccessfulItem) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s UnsuccessfulItem) GoString() string { - return s.String() -} - -// Information about the error that occurred. For more information about errors, -// see Error Codes (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html). -type UnsuccessfulItemError struct { - // The error code. - Code *string `locationName:"code" type:"string" required:"true"` - - // The error message accompanying the error code. - Message *string `locationName:"message" type:"string" required:"true"` - - metadataUnsuccessfulItemError `json:"-" xml:"-"` -} - -type metadataUnsuccessfulItemError struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s UnsuccessfulItemError) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s UnsuccessfulItemError) GoString() string { - return s.String() -} - -// Describes the S3 bucket for the disk image. -type UserBucket struct { - // The name of the S3 bucket where the disk image is located. - S3Bucket *string `type:"string"` - - // The key for the disk image. - S3Key *string `type:"string"` - - metadataUserBucket `json:"-" xml:"-"` -} - -type metadataUserBucket struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s UserBucket) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s UserBucket) GoString() string { - return s.String() -} - -// Describes the S3 bucket for the disk image. -type UserBucketDetails struct { - // The S3 bucket from which the disk image was created. - S3Bucket *string `locationName:"s3Bucket" type:"string"` - - // The key from which the disk image was created. - S3Key *string `locationName:"s3Key" type:"string"` - - metadataUserBucketDetails `json:"-" xml:"-"` -} - -type metadataUserBucketDetails struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s UserBucketDetails) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s UserBucketDetails) GoString() string { - return s.String() -} - -// Describes the user data to be made available to an instance. -type UserData struct { - // The Base64-encoded MIME user data for the instance. - Data *string `locationName:"data" type:"string"` - - metadataUserData `json:"-" xml:"-"` -} - -type metadataUserData struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s UserData) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s UserData) GoString() string { - return s.String() -} - -// Describes a security group and AWS account ID pair. -type UserIdGroupPair struct { - // The ID of the security group. - GroupId *string `locationName:"groupId" type:"string"` - - // The name of the security group. In a request, use this parameter for a security - // group in EC2-Classic or a default VPC only. For a security group in a nondefault - // VPC, use GroupId. - GroupName *string `locationName:"groupName" type:"string"` - - // The ID of an AWS account. EC2-Classic only. - UserId *string `locationName:"userId" type:"string"` - - metadataUserIdGroupPair `json:"-" xml:"-"` -} - -type metadataUserIdGroupPair struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s UserIdGroupPair) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s UserIdGroupPair) GoString() string { - return s.String() -} - -// Describes telemetry for a VPN tunnel. -type VgwTelemetry struct { - // The number of accepted routes. - AcceptedRouteCount *int64 `locationName:"acceptedRouteCount" type:"integer"` - - // The date and time of the last change in status. - LastStatusChange *time.Time `locationName:"lastStatusChange" type:"timestamp" timestampFormat:"iso8601"` - - // The Internet-routable IP address of the virtual private gateway's outside - // interface. - OutsideIpAddress *string `locationName:"outsideIpAddress" type:"string"` - - // The status of the VPN tunnel. - Status *string `locationName:"status" type:"string" enum:"TelemetryStatus"` - - // If an error occurs, a description of the error. - StatusMessage *string `locationName:"statusMessage" type:"string"` - - metadataVgwTelemetry `json:"-" xml:"-"` -} - -type metadataVgwTelemetry struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s VgwTelemetry) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s VgwTelemetry) GoString() string { - return s.String() -} - -// Describes a volume. -type Volume struct { - // Information about the volume attachments. - Attachments []*VolumeAttachment `locationName:"attachmentSet" locationNameList:"item" type:"list"` - - // The Availability Zone for the volume. - AvailabilityZone *string `locationName:"availabilityZone" type:"string"` - - // The time stamp when volume creation was initiated. - CreateTime *time.Time `locationName:"createTime" type:"timestamp" timestampFormat:"iso8601"` - - // Indicates whether the volume will be encrypted. - Encrypted *bool `locationName:"encrypted" type:"boolean"` - - // The number of I/O operations per second (IOPS) that the volume supports. - // For Provisioned IOPS (SSD) volumes, this represents the number of IOPS that - // are provisioned for the volume. For General Purpose (SSD) volumes, this represents - // the baseline performance of the volume and the rate at which the volume accumulates - // I/O credits for bursting. For more information on General Purpose (SSD) baseline - // performance, I/O credits, and bursting, see Amazon EBS Volume Types (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html) - // in the Amazon Elastic Compute Cloud User Guide. - // - // Constraint: Range is 100 to 20000 for Provisioned IOPS (SSD) volumes and - // 3 to 10000 for General Purpose (SSD) volumes. - // - // Condition: This parameter is required for requests to create io1 volumes; - // it is not used in requests to create standard or gp2 volumes. - Iops *int64 `locationName:"iops" type:"integer"` - - // The full ARN of the AWS Key Management Service (AWS KMS) customer master - // key (CMK) that was used to protect the volume encryption key for the volume. - KmsKeyId *string `locationName:"kmsKeyId" type:"string"` - - // The size of the volume, in GiBs. - Size *int64 `locationName:"size" type:"integer"` - - // The snapshot from which the volume was created, if applicable. - SnapshotId *string `locationName:"snapshotId" type:"string"` - - // The volume state. - State *string `locationName:"status" type:"string" enum:"VolumeState"` - - // Any tags assigned to the volume. - Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` - - // The ID of the volume. - VolumeId *string `locationName:"volumeId" type:"string"` - - // The volume type. This can be gp2 for General Purpose (SSD) volumes, io1 for - // Provisioned IOPS (SSD) volumes, or standard for Magnetic volumes. - VolumeType *string `locationName:"volumeType" type:"string" enum:"VolumeType"` - - metadataVolume `json:"-" xml:"-"` -} - -type metadataVolume struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s Volume) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s Volume) GoString() string { - return s.String() -} - -// Describes volume attachment details. -type VolumeAttachment struct { - // The time stamp when the attachment initiated. - AttachTime *time.Time `locationName:"attachTime" type:"timestamp" timestampFormat:"iso8601"` - - // Indicates whether the EBS volume is deleted on instance termination. - DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"` - - // The device name. - Device *string `locationName:"device" type:"string"` - - // The ID of the instance. - InstanceId *string `locationName:"instanceId" type:"string"` - - // The attachment state of the volume. - State *string `locationName:"status" type:"string" enum:"VolumeAttachmentState"` - - // The ID of the volume. - VolumeId *string `locationName:"volumeId" type:"string"` - - metadataVolumeAttachment `json:"-" xml:"-"` -} - -type metadataVolumeAttachment struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s VolumeAttachment) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s VolumeAttachment) GoString() string { - return s.String() -} - -// Describes an EBS volume. -type VolumeDetail struct { - // The size of the volume, in GiB. - Size *int64 `locationName:"size" type:"long" required:"true"` - - metadataVolumeDetail `json:"-" xml:"-"` -} - -type metadataVolumeDetail struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s VolumeDetail) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s VolumeDetail) GoString() string { - return s.String() -} - -// Describes a volume status operation code. -type VolumeStatusAction struct { - // The code identifying the operation, for example, enable-volume-io. - Code *string `locationName:"code" type:"string"` - - // A description of the operation. - Description *string `locationName:"description" type:"string"` - - // The ID of the event associated with this operation. - EventId *string `locationName:"eventId" type:"string"` - - // The event type associated with this operation. - EventType *string `locationName:"eventType" type:"string"` - - metadataVolumeStatusAction `json:"-" xml:"-"` -} - -type metadataVolumeStatusAction struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s VolumeStatusAction) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s VolumeStatusAction) GoString() string { - return s.String() -} - -// Describes a volume status. -type VolumeStatusDetails struct { - // The name of the volume status. - Name *string `locationName:"name" type:"string" enum:"VolumeStatusName"` - - // The intended status of the volume status. - Status *string `locationName:"status" type:"string"` - - metadataVolumeStatusDetails `json:"-" xml:"-"` -} - -type metadataVolumeStatusDetails struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s VolumeStatusDetails) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s VolumeStatusDetails) GoString() string { - return s.String() -} - -// Describes a volume status event. -type VolumeStatusEvent struct { - // A description of the event. - Description *string `locationName:"description" type:"string"` - - // The ID of this event. - EventId *string `locationName:"eventId" type:"string"` - - // The type of this event. - EventType *string `locationName:"eventType" type:"string"` - - // The latest end time of the event. - NotAfter *time.Time `locationName:"notAfter" type:"timestamp" timestampFormat:"iso8601"` - - // The earliest start time of the event. - NotBefore *time.Time `locationName:"notBefore" type:"timestamp" timestampFormat:"iso8601"` - - metadataVolumeStatusEvent `json:"-" xml:"-"` -} - -type metadataVolumeStatusEvent struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s VolumeStatusEvent) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s VolumeStatusEvent) GoString() string { - return s.String() -} - -// Describes the status of a volume. -type VolumeStatusInfo struct { - // The details of the volume status. - Details []*VolumeStatusDetails `locationName:"details" locationNameList:"item" type:"list"` - - // The status of the volume. - Status *string `locationName:"status" type:"string" enum:"VolumeStatusInfoStatus"` - - metadataVolumeStatusInfo `json:"-" xml:"-"` -} - -type metadataVolumeStatusInfo struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s VolumeStatusInfo) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s VolumeStatusInfo) GoString() string { - return s.String() -} - -// Describes the volume status. -type VolumeStatusItem struct { - // The details of the operation. - Actions []*VolumeStatusAction `locationName:"actionsSet" locationNameList:"item" type:"list"` - - // The Availability Zone of the volume. - AvailabilityZone *string `locationName:"availabilityZone" type:"string"` - - // A list of events associated with the volume. - Events []*VolumeStatusEvent `locationName:"eventsSet" locationNameList:"item" type:"list"` - - // The volume ID. - VolumeId *string `locationName:"volumeId" type:"string"` - - // The volume status. - VolumeStatus *VolumeStatusInfo `locationName:"volumeStatus" type:"structure"` - - metadataVolumeStatusItem `json:"-" xml:"-"` -} - -type metadataVolumeStatusItem struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s VolumeStatusItem) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s VolumeStatusItem) GoString() string { - return s.String() -} - -// Describes a VPC. -type Vpc struct { - // The CIDR block for the VPC. - CidrBlock *string `locationName:"cidrBlock" type:"string"` - - // The ID of the set of DHCP options you've associated with the VPC (or default - // if the default options are associated with the VPC). - DhcpOptionsId *string `locationName:"dhcpOptionsId" type:"string"` - - // The allowed tenancy of instances launched into the VPC. - InstanceTenancy *string `locationName:"instanceTenancy" type:"string" enum:"Tenancy"` - - // Indicates whether the VPC is the default VPC. - IsDefault *bool `locationName:"isDefault" type:"boolean"` - - // The current state of the VPC. - State *string `locationName:"state" type:"string" enum:"VpcState"` - - // Any tags assigned to the VPC. - Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` - - // The ID of the VPC. - VpcId *string `locationName:"vpcId" type:"string"` - - metadataVpc `json:"-" xml:"-"` -} - -type metadataVpc struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s Vpc) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s Vpc) GoString() string { - return s.String() -} - -// Describes an attachment between a virtual private gateway and a VPC. -type VpcAttachment struct { - // The current state of the attachment. - State *string `locationName:"state" type:"string" enum:"AttachmentStatus"` - - // The ID of the VPC. - VpcId *string `locationName:"vpcId" type:"string"` - - metadataVpcAttachment `json:"-" xml:"-"` -} - -type metadataVpcAttachment struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s VpcAttachment) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s VpcAttachment) GoString() string { - return s.String() -} - -// Describes whether a VPC is enabled for ClassicLink. -type VpcClassicLink struct { - // Indicates whether the VPC is enabled for ClassicLink. - ClassicLinkEnabled *bool `locationName:"classicLinkEnabled" type:"boolean"` - - // Any tags assigned to the VPC. - Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` - - // The ID of the VPC. - VpcId *string `locationName:"vpcId" type:"string"` - - metadataVpcClassicLink `json:"-" xml:"-"` -} - -type metadataVpcClassicLink struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s VpcClassicLink) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s VpcClassicLink) GoString() string { - return s.String() -} - -// Describes a VPC endpoint. -type VpcEndpoint struct { - // The date and time the VPC endpoint was created. - CreationTimestamp *time.Time `locationName:"creationTimestamp" type:"timestamp" timestampFormat:"iso8601"` - - // The policy document associated with the endpoint. - PolicyDocument *string `locationName:"policyDocument" type:"string"` - - // One or more route tables associated with the endpoint. - RouteTableIds []*string `locationName:"routeTableIdSet" locationNameList:"item" type:"list"` - - // The name of the AWS service to which the endpoint is associated. - ServiceName *string `locationName:"serviceName" type:"string"` - - // The state of the VPC endpoint. - State *string `locationName:"state" type:"string" enum:"State"` - - // The ID of the VPC endpoint. - VpcEndpointId *string `locationName:"vpcEndpointId" type:"string"` - - // The ID of the VPC to which the endpoint is associated. - VpcId *string `locationName:"vpcId" type:"string"` - - metadataVpcEndpoint `json:"-" xml:"-"` -} - -type metadataVpcEndpoint struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s VpcEndpoint) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s VpcEndpoint) GoString() string { - return s.String() -} - -// Describes a VPC peering connection. -type VpcPeeringConnection struct { - // The information of the peer VPC. - AccepterVpcInfo *VpcPeeringConnectionVpcInfo `locationName:"accepterVpcInfo" type:"structure"` - - // The time that an unaccepted VPC peering connection will expire. - ExpirationTime *time.Time `locationName:"expirationTime" type:"timestamp" timestampFormat:"iso8601"` - - // The information of the requester VPC. - RequesterVpcInfo *VpcPeeringConnectionVpcInfo `locationName:"requesterVpcInfo" type:"structure"` - - // The status of the VPC peering connection. - Status *VpcPeeringConnectionStateReason `locationName:"status" type:"structure"` - - // Any tags assigned to the resource. - Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` - - // The ID of the VPC peering connection. - VpcPeeringConnectionId *string `locationName:"vpcPeeringConnectionId" type:"string"` - - metadataVpcPeeringConnection `json:"-" xml:"-"` -} - -type metadataVpcPeeringConnection struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s VpcPeeringConnection) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s VpcPeeringConnection) GoString() string { - return s.String() -} - -// Describes the status of a VPC peering connection. -type VpcPeeringConnectionStateReason struct { - // The status of the VPC peering connection. - Code *string `locationName:"code" type:"string" enum:"VpcPeeringConnectionStateReasonCode"` - - // A message that provides more information about the status, if applicable. - Message *string `locationName:"message" type:"string"` - - metadataVpcPeeringConnectionStateReason `json:"-" xml:"-"` -} - -type metadataVpcPeeringConnectionStateReason struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s VpcPeeringConnectionStateReason) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s VpcPeeringConnectionStateReason) GoString() string { - return s.String() -} - -// Describes a VPC in a VPC peering connection. -type VpcPeeringConnectionVpcInfo struct { - // The CIDR block for the VPC. - CidrBlock *string `locationName:"cidrBlock" type:"string"` - - // The AWS account ID of the VPC owner. - OwnerId *string `locationName:"ownerId" type:"string"` - - // The ID of the VPC. - VpcId *string `locationName:"vpcId" type:"string"` - - metadataVpcPeeringConnectionVpcInfo `json:"-" xml:"-"` -} - -type metadataVpcPeeringConnectionVpcInfo struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s VpcPeeringConnectionVpcInfo) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s VpcPeeringConnectionVpcInfo) GoString() string { - return s.String() -} - -// Describes a VPN connection. -type VpnConnection struct { - // The configuration information for the VPN connection's customer gateway (in - // the native XML format). This element is always present in the CreateVpnConnection - // response; however, it's present in the DescribeVpnConnections response only - // if the VPN connection is in the pending or available state. - CustomerGatewayConfiguration *string `locationName:"customerGatewayConfiguration" type:"string"` - - // The ID of the customer gateway at your end of the VPN connection. - CustomerGatewayId *string `locationName:"customerGatewayId" type:"string"` - - // The VPN connection options. - Options *VpnConnectionOptions `locationName:"options" type:"structure"` - - // The static routes associated with the VPN connection. - Routes []*VpnStaticRoute `locationName:"routes" locationNameList:"item" type:"list"` - - // The current state of the VPN connection. - State *string `locationName:"state" type:"string" enum:"VpnState"` - - // Any tags assigned to the VPN connection. - Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` - - // The type of VPN connection. - Type *string `locationName:"type" type:"string" enum:"GatewayType"` - - // Information about the VPN tunnel. - VgwTelemetry []*VgwTelemetry `locationName:"vgwTelemetry" locationNameList:"item" type:"list"` - - // The ID of the VPN connection. - VpnConnectionId *string `locationName:"vpnConnectionId" type:"string"` - - // The ID of the virtual private gateway at the AWS side of the VPN connection. - VpnGatewayId *string `locationName:"vpnGatewayId" type:"string"` - - metadataVpnConnection `json:"-" xml:"-"` -} - -type metadataVpnConnection struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s VpnConnection) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s VpnConnection) GoString() string { - return s.String() -} - -// Describes VPN connection options. -type VpnConnectionOptions struct { - // Indicates whether the VPN connection uses static routes only. Static routes - // must be used for devices that don't support BGP. - StaticRoutesOnly *bool `locationName:"staticRoutesOnly" type:"boolean"` - - metadataVpnConnectionOptions `json:"-" xml:"-"` -} - -type metadataVpnConnectionOptions struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s VpnConnectionOptions) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s VpnConnectionOptions) GoString() string { - return s.String() -} - -// Describes VPN connection options. -type VpnConnectionOptionsSpecification struct { - // Indicates whether the VPN connection uses static routes only. Static routes - // must be used for devices that don't support BGP. - StaticRoutesOnly *bool `locationName:"staticRoutesOnly" type:"boolean"` - - metadataVpnConnectionOptionsSpecification `json:"-" xml:"-"` -} - -type metadataVpnConnectionOptionsSpecification struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s VpnConnectionOptionsSpecification) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s VpnConnectionOptionsSpecification) GoString() string { - return s.String() -} - -// Describes a virtual private gateway. -type VpnGateway struct { - // The Availability Zone where the virtual private gateway was created. - AvailabilityZone *string `locationName:"availabilityZone" type:"string"` - - // The current state of the virtual private gateway. - State *string `locationName:"state" type:"string" enum:"VpnState"` - - // Any tags assigned to the virtual private gateway. - Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` - - // The type of VPN connection the virtual private gateway supports. - Type *string `locationName:"type" type:"string" enum:"GatewayType"` - - // Any VPCs attached to the virtual private gateway. - VpcAttachments []*VpcAttachment `locationName:"attachments" locationNameList:"item" type:"list"` - - // The ID of the virtual private gateway. - VpnGatewayId *string `locationName:"vpnGatewayId" type:"string"` - - metadataVpnGateway `json:"-" xml:"-"` -} - -type metadataVpnGateway struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s VpnGateway) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s VpnGateway) GoString() string { - return s.String() -} - -// Describes a static route for a VPN connection. -type VpnStaticRoute struct { - // The CIDR block associated with the local subnet of the customer data center. - DestinationCidrBlock *string `locationName:"destinationCidrBlock" type:"string"` - - // Indicates how the routes were provided. - Source *string `locationName:"source" type:"string" enum:"VpnStaticRouteSource"` - - // The current state of the static route. - State *string `locationName:"state" type:"string" enum:"VpnState"` - - metadataVpnStaticRoute `json:"-" xml:"-"` -} - -type metadataVpnStaticRoute struct { - SDKShapeTraits bool `type:"structure"` -} - -// String returns the string representation -func (s VpnStaticRoute) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s VpnStaticRoute) GoString() string { - return s.String() -} - -const ( - // @enum AccountAttributeName - AccountAttributeNameSupportedPlatforms = "supported-platforms" - // @enum AccountAttributeName - AccountAttributeNameDefaultVpc = "default-vpc" -) - -const ( - // @enum Affinity - AffinityDefault = "default" - // @enum Affinity - AffinityHost = "host" -) - -const ( - // @enum AllocationState - AllocationStateAvailable = "available" - // @enum AllocationState - AllocationStateUnderAssessment = "under-assessment" - // @enum AllocationState - AllocationStatePermanentFailure = "permanent-failure" - // @enum AllocationState - AllocationStateReleased = "released" - // @enum AllocationState - AllocationStateReleasedPermanentFailure = "released-permanent-failure" -) - -const ( - // @enum AllocationStrategy - AllocationStrategyLowestPrice = "lowestPrice" - // @enum AllocationStrategy - AllocationStrategyDiversified = "diversified" -) - -const ( - // @enum ArchitectureValues - ArchitectureValuesI386 = "i386" - // @enum ArchitectureValues - ArchitectureValuesX8664 = "x86_64" -) - -const ( - // @enum AttachmentStatus - AttachmentStatusAttaching = "attaching" - // @enum AttachmentStatus - AttachmentStatusAttached = "attached" - // @enum AttachmentStatus - AttachmentStatusDetaching = "detaching" - // @enum AttachmentStatus - AttachmentStatusDetached = "detached" -) - -const ( - // @enum AutoPlacement - AutoPlacementOn = "on" - // @enum AutoPlacement - AutoPlacementOff = "off" -) - -const ( - // @enum AvailabilityZoneState - AvailabilityZoneStateAvailable = "available" - // @enum AvailabilityZoneState - AvailabilityZoneStateInformation = "information" - // @enum AvailabilityZoneState - AvailabilityZoneStateImpaired = "impaired" - // @enum AvailabilityZoneState - AvailabilityZoneStateUnavailable = "unavailable" -) - -const ( - // @enum BatchState - BatchStateSubmitted = "submitted" - // @enum BatchState - BatchStateActive = "active" - // @enum BatchState - BatchStateCancelled = "cancelled" - // @enum BatchState - BatchStateFailed = "failed" - // @enum BatchState - BatchStateCancelledRunning = "cancelled_running" - // @enum BatchState - BatchStateCancelledTerminating = "cancelled_terminating" - // @enum BatchState - BatchStateModifying = "modifying" -) - -const ( - // @enum BundleTaskState - BundleTaskStatePending = "pending" - // @enum BundleTaskState - BundleTaskStateWaitingForShutdown = "waiting-for-shutdown" - // @enum BundleTaskState - BundleTaskStateBundling = "bundling" - // @enum BundleTaskState - BundleTaskStateStoring = "storing" - // @enum BundleTaskState - BundleTaskStateCancelling = "cancelling" - // @enum BundleTaskState - BundleTaskStateComplete = "complete" - // @enum BundleTaskState - BundleTaskStateFailed = "failed" -) - -const ( - // @enum CancelBatchErrorCode - CancelBatchErrorCodeFleetRequestIdDoesNotExist = "fleetRequestIdDoesNotExist" - // @enum CancelBatchErrorCode - CancelBatchErrorCodeFleetRequestIdMalformed = "fleetRequestIdMalformed" - // @enum CancelBatchErrorCode - CancelBatchErrorCodeFleetRequestNotInCancellableState = "fleetRequestNotInCancellableState" - // @enum CancelBatchErrorCode - CancelBatchErrorCodeUnexpectedError = "unexpectedError" -) - -const ( - // @enum CancelSpotInstanceRequestState - CancelSpotInstanceRequestStateActive = "active" - // @enum CancelSpotInstanceRequestState - CancelSpotInstanceRequestStateOpen = "open" - // @enum CancelSpotInstanceRequestState - CancelSpotInstanceRequestStateClosed = "closed" - // @enum CancelSpotInstanceRequestState - CancelSpotInstanceRequestStateCancelled = "cancelled" - // @enum CancelSpotInstanceRequestState - CancelSpotInstanceRequestStateCompleted = "completed" -) - -const ( - // @enum ContainerFormat - ContainerFormatOva = "ova" -) - -const ( - // @enum ConversionTaskState - ConversionTaskStateActive = "active" - // @enum ConversionTaskState - ConversionTaskStateCancelling = "cancelling" - // @enum ConversionTaskState - ConversionTaskStateCancelled = "cancelled" - // @enum ConversionTaskState - ConversionTaskStateCompleted = "completed" -) - -const ( - // @enum CurrencyCodeValues - CurrencyCodeValuesUsd = "USD" -) - -const ( - // @enum DatafeedSubscriptionState - DatafeedSubscriptionStateActive = "Active" - // @enum DatafeedSubscriptionState - DatafeedSubscriptionStateInactive = "Inactive" -) - -const ( - // @enum DeviceType - DeviceTypeEbs = "ebs" - // @enum DeviceType - DeviceTypeInstanceStore = "instance-store" -) - -const ( - // @enum DiskImageFormat - DiskImageFormatVmdk = "VMDK" - // @enum DiskImageFormat - DiskImageFormatRaw = "RAW" - // @enum DiskImageFormat - DiskImageFormatVhd = "VHD" -) - -const ( - // @enum DomainType - DomainTypeVpc = "vpc" - // @enum DomainType - DomainTypeStandard = "standard" -) - -const ( - // @enum EventCode - EventCodeInstanceReboot = "instance-reboot" - // @enum EventCode - EventCodeSystemReboot = "system-reboot" - // @enum EventCode - EventCodeSystemMaintenance = "system-maintenance" - // @enum EventCode - EventCodeInstanceRetirement = "instance-retirement" - // @enum EventCode - EventCodeInstanceStop = "instance-stop" -) - -const ( - // @enum EventType - EventTypeInstanceChange = "instanceChange" - // @enum EventType - EventTypeFleetRequestChange = "fleetRequestChange" - // @enum EventType - EventTypeError = "error" -) - -const ( - // @enum ExcessCapacityTerminationPolicy - ExcessCapacityTerminationPolicyNoTermination = "noTermination" - // @enum ExcessCapacityTerminationPolicy - ExcessCapacityTerminationPolicyDefault = "default" -) - -const ( - // @enum ExportEnvironment - ExportEnvironmentCitrix = "citrix" - // @enum ExportEnvironment - ExportEnvironmentVmware = "vmware" - // @enum ExportEnvironment - ExportEnvironmentMicrosoft = "microsoft" -) - -const ( - // @enum ExportTaskState - ExportTaskStateActive = "active" - // @enum ExportTaskState - ExportTaskStateCancelling = "cancelling" - // @enum ExportTaskState - ExportTaskStateCancelled = "cancelled" - // @enum ExportTaskState - ExportTaskStateCompleted = "completed" -) - -const ( - // @enum FlowLogsResourceType - FlowLogsResourceTypeVpc = "VPC" - // @enum FlowLogsResourceType - FlowLogsResourceTypeSubnet = "Subnet" - // @enum FlowLogsResourceType - FlowLogsResourceTypeNetworkInterface = "NetworkInterface" -) - -const ( - // @enum GatewayType - GatewayTypeIpsec1 = "ipsec.1" -) - -const ( - // @enum HostTenancy - HostTenancyDedicated = "dedicated" - // @enum HostTenancy - HostTenancyHost = "host" -) - -const ( - // @enum HypervisorType - HypervisorTypeOvm = "ovm" - // @enum HypervisorType - HypervisorTypeXen = "xen" -) - -const ( - // @enum ImageAttributeName - ImageAttributeNameDescription = "description" - // @enum ImageAttributeName - ImageAttributeNameKernel = "kernel" - // @enum ImageAttributeName - ImageAttributeNameRamdisk = "ramdisk" - // @enum ImageAttributeName - ImageAttributeNameLaunchPermission = "launchPermission" - // @enum ImageAttributeName - ImageAttributeNameProductCodes = "productCodes" - // @enum ImageAttributeName - ImageAttributeNameBlockDeviceMapping = "blockDeviceMapping" - // @enum ImageAttributeName - ImageAttributeNameSriovNetSupport = "sriovNetSupport" -) - -const ( - // @enum ImageState - ImageStatePending = "pending" - // @enum ImageState - ImageStateAvailable = "available" - // @enum ImageState - ImageStateInvalid = "invalid" - // @enum ImageState - ImageStateDeregistered = "deregistered" - // @enum ImageState - ImageStateTransient = "transient" - // @enum ImageState - ImageStateFailed = "failed" - // @enum ImageState - ImageStateError = "error" -) - -const ( - // @enum ImageTypeValues - ImageTypeValuesMachine = "machine" - // @enum ImageTypeValues - ImageTypeValuesKernel = "kernel" - // @enum ImageTypeValues - ImageTypeValuesRamdisk = "ramdisk" -) - -const ( - // @enum InstanceAttributeName - InstanceAttributeNameInstanceType = "instanceType" - // @enum InstanceAttributeName - InstanceAttributeNameKernel = "kernel" - // @enum InstanceAttributeName - InstanceAttributeNameRamdisk = "ramdisk" - // @enum InstanceAttributeName - InstanceAttributeNameUserData = "userData" - // @enum InstanceAttributeName - InstanceAttributeNameDisableApiTermination = "disableApiTermination" - // @enum InstanceAttributeName - InstanceAttributeNameInstanceInitiatedShutdownBehavior = "instanceInitiatedShutdownBehavior" - // @enum InstanceAttributeName - InstanceAttributeNameRootDeviceName = "rootDeviceName" - // @enum InstanceAttributeName - InstanceAttributeNameBlockDeviceMapping = "blockDeviceMapping" - // @enum InstanceAttributeName - InstanceAttributeNameProductCodes = "productCodes" - // @enum InstanceAttributeName - InstanceAttributeNameSourceDestCheck = "sourceDestCheck" - // @enum InstanceAttributeName - InstanceAttributeNameGroupSet = "groupSet" - // @enum InstanceAttributeName - InstanceAttributeNameEbsOptimized = "ebsOptimized" - // @enum InstanceAttributeName - InstanceAttributeNameSriovNetSupport = "sriovNetSupport" -) - -const ( - // @enum InstanceLifecycleType - InstanceLifecycleTypeSpot = "spot" -) - -const ( - // @enum InstanceStateName - InstanceStateNamePending = "pending" - // @enum InstanceStateName - InstanceStateNameRunning = "running" - // @enum InstanceStateName - InstanceStateNameShuttingDown = "shutting-down" - // @enum InstanceStateName - InstanceStateNameTerminated = "terminated" - // @enum InstanceStateName - InstanceStateNameStopping = "stopping" - // @enum InstanceStateName - InstanceStateNameStopped = "stopped" -) - -const ( - // @enum InstanceType - InstanceTypeT1Micro = "t1.micro" - // @enum InstanceType - InstanceTypeM1Small = "m1.small" - // @enum InstanceType - InstanceTypeM1Medium = "m1.medium" - // @enum InstanceType - InstanceTypeM1Large = "m1.large" - // @enum InstanceType - InstanceTypeM1Xlarge = "m1.xlarge" - // @enum InstanceType - InstanceTypeM3Medium = "m3.medium" - // @enum InstanceType - InstanceTypeM3Large = "m3.large" - // @enum InstanceType - InstanceTypeM3Xlarge = "m3.xlarge" - // @enum InstanceType - InstanceTypeM32xlarge = "m3.2xlarge" - // @enum InstanceType - InstanceTypeM4Large = "m4.large" - // @enum InstanceType - InstanceTypeM4Xlarge = "m4.xlarge" - // @enum InstanceType - InstanceTypeM42xlarge = "m4.2xlarge" - // @enum InstanceType - InstanceTypeM44xlarge = "m4.4xlarge" - // @enum InstanceType - InstanceTypeM410xlarge = "m4.10xlarge" - // @enum InstanceType - InstanceTypeT2Micro = "t2.micro" - // @enum InstanceType - InstanceTypeT2Small = "t2.small" - // @enum InstanceType - InstanceTypeT2Medium = "t2.medium" - // @enum InstanceType - InstanceTypeT2Large = "t2.large" - // @enum InstanceType - InstanceTypeM2Xlarge = "m2.xlarge" - // @enum InstanceType - InstanceTypeM22xlarge = "m2.2xlarge" - // @enum InstanceType - InstanceTypeM24xlarge = "m2.4xlarge" - // @enum InstanceType - InstanceTypeCr18xlarge = "cr1.8xlarge" - // @enum InstanceType - InstanceTypeI2Xlarge = "i2.xlarge" - // @enum InstanceType - InstanceTypeI22xlarge = "i2.2xlarge" - // @enum InstanceType - InstanceTypeI24xlarge = "i2.4xlarge" - // @enum InstanceType - InstanceTypeI28xlarge = "i2.8xlarge" - // @enum InstanceType - InstanceTypeHi14xlarge = "hi1.4xlarge" - // @enum InstanceType - InstanceTypeHs18xlarge = "hs1.8xlarge" - // @enum InstanceType - InstanceTypeC1Medium = "c1.medium" - // @enum InstanceType - InstanceTypeC1Xlarge = "c1.xlarge" - // @enum InstanceType - InstanceTypeC3Large = "c3.large" - // @enum InstanceType - InstanceTypeC3Xlarge = "c3.xlarge" - // @enum InstanceType - InstanceTypeC32xlarge = "c3.2xlarge" - // @enum InstanceType - InstanceTypeC34xlarge = "c3.4xlarge" - // @enum InstanceType - InstanceTypeC38xlarge = "c3.8xlarge" - // @enum InstanceType - InstanceTypeC4Large = "c4.large" - // @enum InstanceType - InstanceTypeC4Xlarge = "c4.xlarge" - // @enum InstanceType - InstanceTypeC42xlarge = "c4.2xlarge" - // @enum InstanceType - InstanceTypeC44xlarge = "c4.4xlarge" - // @enum InstanceType - InstanceTypeC48xlarge = "c4.8xlarge" - // @enum InstanceType - InstanceTypeCc14xlarge = "cc1.4xlarge" - // @enum InstanceType - InstanceTypeCc28xlarge = "cc2.8xlarge" - // @enum InstanceType - InstanceTypeG22xlarge = "g2.2xlarge" - // @enum InstanceType - InstanceTypeCg14xlarge = "cg1.4xlarge" - // @enum InstanceType - InstanceTypeR3Large = "r3.large" - // @enum InstanceType - InstanceTypeR3Xlarge = "r3.xlarge" - // @enum InstanceType - InstanceTypeR32xlarge = "r3.2xlarge" - // @enum InstanceType - InstanceTypeR34xlarge = "r3.4xlarge" - // @enum InstanceType - InstanceTypeR38xlarge = "r3.8xlarge" - // @enum InstanceType - InstanceTypeD2Xlarge = "d2.xlarge" - // @enum InstanceType - InstanceTypeD22xlarge = "d2.2xlarge" - // @enum InstanceType - InstanceTypeD24xlarge = "d2.4xlarge" - // @enum InstanceType - InstanceTypeD28xlarge = "d2.8xlarge" -) - -const ( - // @enum ListingState - ListingStateAvailable = "available" - // @enum ListingState - ListingStateSold = "sold" - // @enum ListingState - ListingStateCancelled = "cancelled" - // @enum ListingState - ListingStatePending = "pending" -) - -const ( - // @enum ListingStatus - ListingStatusActive = "active" - // @enum ListingStatus - ListingStatusPending = "pending" - // @enum ListingStatus - ListingStatusCancelled = "cancelled" - // @enum ListingStatus - ListingStatusClosed = "closed" -) - -const ( - // @enum MonitoringState - MonitoringStateDisabled = "disabled" - // @enum MonitoringState - MonitoringStateDisabling = "disabling" - // @enum MonitoringState - MonitoringStateEnabled = "enabled" - // @enum MonitoringState - MonitoringStatePending = "pending" -) - -const ( - // @enum MoveStatus - MoveStatusMovingToVpc = "movingToVpc" - // @enum MoveStatus - MoveStatusRestoringToClassic = "restoringToClassic" -) - -const ( - // @enum NetworkInterfaceAttribute - NetworkInterfaceAttributeDescription = "description" - // @enum NetworkInterfaceAttribute - NetworkInterfaceAttributeGroupSet = "groupSet" - // @enum NetworkInterfaceAttribute - NetworkInterfaceAttributeSourceDestCheck = "sourceDestCheck" - // @enum NetworkInterfaceAttribute - NetworkInterfaceAttributeAttachment = "attachment" -) - -const ( - // @enum NetworkInterfaceStatus - NetworkInterfaceStatusAvailable = "available" - // @enum NetworkInterfaceStatus - NetworkInterfaceStatusAttaching = "attaching" - // @enum NetworkInterfaceStatus - NetworkInterfaceStatusInUse = "in-use" - // @enum NetworkInterfaceStatus - NetworkInterfaceStatusDetaching = "detaching" -) - -const ( - // @enum OfferingTypeValues - OfferingTypeValuesHeavyUtilization = "Heavy Utilization" - // @enum OfferingTypeValues - OfferingTypeValuesMediumUtilization = "Medium Utilization" - // @enum OfferingTypeValues - OfferingTypeValuesLightUtilization = "Light Utilization" - // @enum OfferingTypeValues - OfferingTypeValuesNoUpfront = "No Upfront" - // @enum OfferingTypeValues - OfferingTypeValuesPartialUpfront = "Partial Upfront" - // @enum OfferingTypeValues - OfferingTypeValuesAllUpfront = "All Upfront" -) - -const ( - // @enum OperationType - OperationTypeAdd = "add" - // @enum OperationType - OperationTypeRemove = "remove" -) - -const ( - // @enum PermissionGroup - PermissionGroupAll = "all" -) - -const ( - // @enum PlacementGroupState - PlacementGroupStatePending = "pending" - // @enum PlacementGroupState - PlacementGroupStateAvailable = "available" - // @enum PlacementGroupState - PlacementGroupStateDeleting = "deleting" - // @enum PlacementGroupState - PlacementGroupStateDeleted = "deleted" -) - -const ( - // @enum PlacementStrategy - PlacementStrategyCluster = "cluster" -) - -const ( - // @enum PlatformValues - PlatformValuesWindows = "Windows" -) - -const ( - // @enum ProductCodeValues - ProductCodeValuesDevpay = "devpay" - // @enum ProductCodeValues - ProductCodeValuesMarketplace = "marketplace" -) - -const ( - // @enum RIProductDescription - RIProductDescriptionLinuxUnix = "Linux/UNIX" - // @enum RIProductDescription - RIProductDescriptionLinuxUnixamazonVpc = "Linux/UNIX (Amazon VPC)" - // @enum RIProductDescription - RIProductDescriptionWindows = "Windows" - // @enum RIProductDescription - RIProductDescriptionWindowsAmazonVpc = "Windows (Amazon VPC)" -) - -const ( - // @enum RecurringChargeFrequency - RecurringChargeFrequencyHourly = "Hourly" -) - -const ( - // @enum ReportInstanceReasonCodes - ReportInstanceReasonCodesInstanceStuckInState = "instance-stuck-in-state" - // @enum ReportInstanceReasonCodes - ReportInstanceReasonCodesUnresponsive = "unresponsive" - // @enum ReportInstanceReasonCodes - ReportInstanceReasonCodesNotAcceptingCredentials = "not-accepting-credentials" - // @enum ReportInstanceReasonCodes - ReportInstanceReasonCodesPasswordNotAvailable = "password-not-available" - // @enum ReportInstanceReasonCodes - ReportInstanceReasonCodesPerformanceNetwork = "performance-network" - // @enum ReportInstanceReasonCodes - ReportInstanceReasonCodesPerformanceInstanceStore = "performance-instance-store" - // @enum ReportInstanceReasonCodes - ReportInstanceReasonCodesPerformanceEbsVolume = "performance-ebs-volume" - // @enum ReportInstanceReasonCodes - ReportInstanceReasonCodesPerformanceOther = "performance-other" - // @enum ReportInstanceReasonCodes - ReportInstanceReasonCodesOther = "other" -) - -const ( - // @enum ReportStatusType - ReportStatusTypeOk = "ok" - // @enum ReportStatusType - ReportStatusTypeImpaired = "impaired" -) - -const ( - // @enum ReservedInstanceState - ReservedInstanceStatePaymentPending = "payment-pending" - // @enum ReservedInstanceState - ReservedInstanceStateActive = "active" - // @enum ReservedInstanceState - ReservedInstanceStatePaymentFailed = "payment-failed" - // @enum ReservedInstanceState - ReservedInstanceStateRetired = "retired" -) - -const ( - // @enum ResetImageAttributeName - ResetImageAttributeNameLaunchPermission = "launchPermission" -) - -const ( - // @enum ResourceType - ResourceTypeCustomerGateway = "customer-gateway" - // @enum ResourceType - ResourceTypeDhcpOptions = "dhcp-options" - // @enum ResourceType - ResourceTypeImage = "image" - // @enum ResourceType - ResourceTypeInstance = "instance" - // @enum ResourceType - ResourceTypeInternetGateway = "internet-gateway" - // @enum ResourceType - ResourceTypeNetworkAcl = "network-acl" - // @enum ResourceType - ResourceTypeNetworkInterface = "network-interface" - // @enum ResourceType - ResourceTypeReservedInstances = "reserved-instances" - // @enum ResourceType - ResourceTypeRouteTable = "route-table" - // @enum ResourceType - ResourceTypeSnapshot = "snapshot" - // @enum ResourceType - ResourceTypeSpotInstancesRequest = "spot-instances-request" - // @enum ResourceType - ResourceTypeSubnet = "subnet" - // @enum ResourceType - ResourceTypeSecurityGroup = "security-group" - // @enum ResourceType - ResourceTypeVolume = "volume" - // @enum ResourceType - ResourceTypeVpc = "vpc" - // @enum ResourceType - ResourceTypeVpnConnection = "vpn-connection" - // @enum ResourceType - ResourceTypeVpnGateway = "vpn-gateway" -) - -const ( - // @enum RouteOrigin - RouteOriginCreateRouteTable = "CreateRouteTable" - // @enum RouteOrigin - RouteOriginCreateRoute = "CreateRoute" - // @enum RouteOrigin - RouteOriginEnableVgwRoutePropagation = "EnableVgwRoutePropagation" -) - -const ( - // @enum RouteState - RouteStateActive = "active" - // @enum RouteState - RouteStateBlackhole = "blackhole" -) - -const ( - // @enum RuleAction - RuleActionAllow = "allow" - // @enum RuleAction - RuleActionDeny = "deny" -) - -const ( - // @enum ShutdownBehavior - ShutdownBehaviorStop = "stop" - // @enum ShutdownBehavior - ShutdownBehaviorTerminate = "terminate" -) - -const ( - // @enum SnapshotAttributeName - SnapshotAttributeNameProductCodes = "productCodes" - // @enum SnapshotAttributeName - SnapshotAttributeNameCreateVolumePermission = "createVolumePermission" -) - -const ( - // @enum SnapshotState - SnapshotStatePending = "pending" - // @enum SnapshotState - SnapshotStateCompleted = "completed" - // @enum SnapshotState - SnapshotStateError = "error" -) - -const ( - // @enum SpotInstanceState - SpotInstanceStateOpen = "open" - // @enum SpotInstanceState - SpotInstanceStateActive = "active" - // @enum SpotInstanceState - SpotInstanceStateClosed = "closed" - // @enum SpotInstanceState - SpotInstanceStateCancelled = "cancelled" - // @enum SpotInstanceState - SpotInstanceStateFailed = "failed" -) - -const ( - // @enum SpotInstanceType - SpotInstanceTypeOneTime = "one-time" - // @enum SpotInstanceType - SpotInstanceTypePersistent = "persistent" -) - -const ( - // @enum State - StatePending = "Pending" - // @enum State - StateAvailable = "Available" - // @enum State - StateDeleting = "Deleting" - // @enum State - StateDeleted = "Deleted" -) - -const ( - // @enum Status - StatusMoveInProgress = "MoveInProgress" - // @enum Status - StatusInVpc = "InVpc" - // @enum Status - StatusInClassic = "InClassic" -) - -const ( - // @enum StatusName - StatusNameReachability = "reachability" -) - -const ( - // @enum StatusType - StatusTypePassed = "passed" - // @enum StatusType - StatusTypeFailed = "failed" - // @enum StatusType - StatusTypeInsufficientData = "insufficient-data" - // @enum StatusType - StatusTypeInitializing = "initializing" -) - -const ( - // @enum SubnetState - SubnetStatePending = "pending" - // @enum SubnetState - SubnetStateAvailable = "available" -) - -const ( - // @enum SummaryStatus - SummaryStatusOk = "ok" - // @enum SummaryStatus - SummaryStatusImpaired = "impaired" - // @enum SummaryStatus - SummaryStatusInsufficientData = "insufficient-data" - // @enum SummaryStatus - SummaryStatusNotApplicable = "not-applicable" - // @enum SummaryStatus - SummaryStatusInitializing = "initializing" -) - -const ( - // @enum TelemetryStatus - TelemetryStatusUp = "UP" - // @enum TelemetryStatus - TelemetryStatusDown = "DOWN" -) - -const ( - // @enum Tenancy - TenancyDefault = "default" - // @enum Tenancy - TenancyDedicated = "dedicated" - // @enum Tenancy - TenancyHost = "host" -) - -const ( - // @enum TrafficType - TrafficTypeAccept = "ACCEPT" - // @enum TrafficType - TrafficTypeReject = "REJECT" - // @enum TrafficType - TrafficTypeAll = "ALL" -) - -const ( - // @enum VirtualizationType - VirtualizationTypeHvm = "hvm" - // @enum VirtualizationType - VirtualizationTypeParavirtual = "paravirtual" -) - -const ( - // @enum VolumeAttachmentState - VolumeAttachmentStateAttaching = "attaching" - // @enum VolumeAttachmentState - VolumeAttachmentStateAttached = "attached" - // @enum VolumeAttachmentState - VolumeAttachmentStateDetaching = "detaching" - // @enum VolumeAttachmentState - VolumeAttachmentStateDetached = "detached" -) - -const ( - // @enum VolumeAttributeName - VolumeAttributeNameAutoEnableIo = "autoEnableIO" - // @enum VolumeAttributeName - VolumeAttributeNameProductCodes = "productCodes" -) - -const ( - // @enum VolumeState - VolumeStateCreating = "creating" - // @enum VolumeState - VolumeStateAvailable = "available" - // @enum VolumeState - VolumeStateInUse = "in-use" - // @enum VolumeState - VolumeStateDeleting = "deleting" - // @enum VolumeState - VolumeStateDeleted = "deleted" - // @enum VolumeState - VolumeStateError = "error" -) - -const ( - // @enum VolumeStatusInfoStatus - VolumeStatusInfoStatusOk = "ok" - // @enum VolumeStatusInfoStatus - VolumeStatusInfoStatusImpaired = "impaired" - // @enum VolumeStatusInfoStatus - VolumeStatusInfoStatusInsufficientData = "insufficient-data" -) - -const ( - // @enum VolumeStatusName - VolumeStatusNameIoEnabled = "io-enabled" - // @enum VolumeStatusName - VolumeStatusNameIoPerformance = "io-performance" -) - -const ( - // @enum VolumeType - VolumeTypeStandard = "standard" - // @enum VolumeType - VolumeTypeIo1 = "io1" - // @enum VolumeType - VolumeTypeGp2 = "gp2" -) - -const ( - // @enum VpcAttributeName - VpcAttributeNameEnableDnsSupport = "enableDnsSupport" - // @enum VpcAttributeName - VpcAttributeNameEnableDnsHostnames = "enableDnsHostnames" -) - -const ( - // @enum VpcPeeringConnectionStateReasonCode - VpcPeeringConnectionStateReasonCodeInitiatingRequest = "initiating-request" - // @enum VpcPeeringConnectionStateReasonCode - VpcPeeringConnectionStateReasonCodePendingAcceptance = "pending-acceptance" - // @enum VpcPeeringConnectionStateReasonCode - VpcPeeringConnectionStateReasonCodeActive = "active" - // @enum VpcPeeringConnectionStateReasonCode - VpcPeeringConnectionStateReasonCodeDeleted = "deleted" - // @enum VpcPeeringConnectionStateReasonCode - VpcPeeringConnectionStateReasonCodeRejected = "rejected" - // @enum VpcPeeringConnectionStateReasonCode - VpcPeeringConnectionStateReasonCodeFailed = "failed" - // @enum VpcPeeringConnectionStateReasonCode - VpcPeeringConnectionStateReasonCodeExpired = "expired" - // @enum VpcPeeringConnectionStateReasonCode - VpcPeeringConnectionStateReasonCodeProvisioning = "provisioning" - // @enum VpcPeeringConnectionStateReasonCode - VpcPeeringConnectionStateReasonCodeDeleting = "deleting" -) - -const ( - // @enum VpcState - VpcStatePending = "pending" - // @enum VpcState - VpcStateAvailable = "available" -) - -const ( - // @enum VpnState - VpnStatePending = "pending" - // @enum VpnState - VpnStateAvailable = "available" - // @enum VpnState - VpnStateDeleting = "deleting" - // @enum VpnState - VpnStateDeleted = "deleted" -) - -const ( - // @enum VpnStaticRouteSource - VpnStaticRouteSourceStatic = "Static" -) diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/service/ec2/customizations.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/service/ec2/customizations.go deleted file mode 100644 index 9e94fe67..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/service/ec2/customizations.go +++ /dev/null @@ -1,55 +0,0 @@ -package ec2 - -import ( - "time" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/awsutil" - "github.com/aws/aws-sdk-go/aws/request" - "github.com/aws/aws-sdk-go/private/endpoints" -) - -func init() { - initRequest = func(r *request.Request) { - if r.Operation.Name == opCopySnapshot { // fill the PresignedURL parameter - r.Handlers.Build.PushFront(fillPresignedURL) - } - } -} - -func fillPresignedURL(r *request.Request) { - if !r.ParamsFilled() { - return - } - - origParams := r.Params.(*CopySnapshotInput) - - // Stop if PresignedURL/DestinationRegion is set - if origParams.PresignedUrl != nil || origParams.DestinationRegion != nil { - return - } - - origParams.DestinationRegion = r.Config.Region - newParams := awsutil.CopyOf(r.Params).(*CopySnapshotInput) - - // Create a new request based on the existing request. We will use this to - // presign the CopySnapshot request against the source region. - cfg := r.Config.Copy(aws.NewConfig(). - WithEndpoint(""). - WithRegion(aws.StringValue(origParams.SourceRegion))) - - clientInfo := r.ClientInfo - clientInfo.Endpoint, clientInfo.SigningRegion = endpoints.EndpointForRegion( - clientInfo.ServiceName, aws.StringValue(cfg.Region), aws.BoolValue(cfg.DisableSSL)) - - // Presign a CopySnapshot request with modified params - req := request.New(*cfg, clientInfo, r.Handlers, r.Retryer, r.Operation, newParams, r.Data) - url, err := req.Presign(5 * time.Minute) // 5 minutes should be enough. - if err != nil { // bubble error back up to original request - r.Error = err - return - } - - // We have our URL, set it on params - origParams.PresignedUrl = &url -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/service/ec2/service.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/service/ec2/service.go deleted file mode 100644 index 2ff4220f..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/service/ec2/service.go +++ /dev/null @@ -1,89 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -package ec2 - -import ( - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/client" - "github.com/aws/aws-sdk-go/aws/client/metadata" - "github.com/aws/aws-sdk-go/aws/request" - "github.com/aws/aws-sdk-go/private/protocol/ec2query" - "github.com/aws/aws-sdk-go/private/signer/v4" -) - -// Amazon Elastic Compute Cloud (Amazon EC2) provides resizable computing capacity -// in the Amazon Web Services (AWS) cloud. Using Amazon EC2 eliminates your -// need to invest in hardware up front, so you can develop and deploy applications -// faster. -//The service client's operations are safe to be used concurrently. -// It is not safe to mutate any of the client's properties though. -type EC2 struct { - *client.Client -} - -// Used for custom client initialization logic -var initClient func(*client.Client) - -// Used for custom request initialization logic -var initRequest func(*request.Request) - -// A ServiceName is the name of the service the client will make API calls to. -const ServiceName = "ec2" - -// New creates a new instance of the EC2 client with a session. -// If additional configuration is needed for the client instance use the optional -// aws.Config parameter to add your extra config. -// -// Example: -// // Create a EC2 client from just a session. -// svc := ec2.New(mySession) -// -// // Create a EC2 client with additional configuration -// svc := ec2.New(mySession, aws.NewConfig().WithRegion("us-west-2")) -func New(p client.ConfigProvider, cfgs ...*aws.Config) *EC2 { - c := p.ClientConfig(ServiceName, cfgs...) - return newClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion) -} - -// newClient creates, initializes and returns a new service client instance. -func newClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *EC2 { - svc := &EC2{ - Client: client.New( - cfg, - metadata.ClientInfo{ - ServiceName: ServiceName, - SigningRegion: signingRegion, - Endpoint: endpoint, - APIVersion: "2015-10-01", - }, - handlers, - ), - } - - // Handlers - svc.Handlers.Sign.PushBack(v4.Sign) - svc.Handlers.Build.PushBack(ec2query.Build) - svc.Handlers.Unmarshal.PushBack(ec2query.Unmarshal) - svc.Handlers.UnmarshalMeta.PushBack(ec2query.UnmarshalMeta) - svc.Handlers.UnmarshalError.PushBack(ec2query.UnmarshalError) - - // Run custom client initialization if present - if initClient != nil { - initClient(svc.Client) - } - - return svc -} - -// newRequest creates a new request for a EC2 operation and runs any -// custom request initialization. -func (c *EC2) newRequest(op *request.Operation, params, data interface{}) *request.Request { - req := c.NewRequest(op, params, data) - - // Run custom request initialization if present - if initRequest != nil { - initRequest(req) - } - - return req -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/service/ec2/waiters.go b/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/service/ec2/waiters.go deleted file mode 100644 index 1b28317a..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/aws/aws-sdk-go/service/ec2/waiters.go +++ /dev/null @@ -1,761 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -package ec2 - -import ( - "github.com/aws/aws-sdk-go/private/waiter" -) - -func (c *EC2) WaitUntilBundleTaskComplete(input *DescribeBundleTasksInput) error { - waiterCfg := waiter.Config{ - Operation: "DescribeBundleTasks", - Delay: 15, - MaxAttempts: 40, - Acceptors: []waiter.WaitAcceptor{ - { - State: "success", - Matcher: "pathAll", - Argument: "BundleTasks[].State", - Expected: "complete", - }, - { - State: "failure", - Matcher: "pathAny", - Argument: "BundleTasks[].State", - Expected: "failed", - }, - }, - } - - w := waiter.Waiter{ - Client: c, - Input: input, - Config: waiterCfg, - } - return w.Wait() -} - -func (c *EC2) WaitUntilConversionTaskCancelled(input *DescribeConversionTasksInput) error { - waiterCfg := waiter.Config{ - Operation: "DescribeConversionTasks", - Delay: 15, - MaxAttempts: 40, - Acceptors: []waiter.WaitAcceptor{ - { - State: "success", - Matcher: "pathAll", - Argument: "ConversionTasks[].State", - Expected: "cancelled", - }, - }, - } - - w := waiter.Waiter{ - Client: c, - Input: input, - Config: waiterCfg, - } - return w.Wait() -} - -func (c *EC2) WaitUntilConversionTaskCompleted(input *DescribeConversionTasksInput) error { - waiterCfg := waiter.Config{ - Operation: "DescribeConversionTasks", - Delay: 15, - MaxAttempts: 40, - Acceptors: []waiter.WaitAcceptor{ - { - State: "success", - Matcher: "pathAll", - Argument: "ConversionTasks[].State", - Expected: "completed", - }, - { - State: "failure", - Matcher: "pathAny", - Argument: "ConversionTasks[].State", - Expected: "cancelled", - }, - { - State: "failure", - Matcher: "pathAny", - Argument: "ConversionTasks[].State", - Expected: "cancelling", - }, - }, - } - - w := waiter.Waiter{ - Client: c, - Input: input, - Config: waiterCfg, - } - return w.Wait() -} - -func (c *EC2) WaitUntilConversionTaskDeleted(input *DescribeConversionTasksInput) error { - waiterCfg := waiter.Config{ - Operation: "DescribeConversionTasks", - Delay: 15, - MaxAttempts: 40, - Acceptors: []waiter.WaitAcceptor{ - { - State: "success", - Matcher: "pathAll", - Argument: "ConversionTasks[].State", - Expected: "deleted", - }, - }, - } - - w := waiter.Waiter{ - Client: c, - Input: input, - Config: waiterCfg, - } - return w.Wait() -} - -func (c *EC2) WaitUntilCustomerGatewayAvailable(input *DescribeCustomerGatewaysInput) error { - waiterCfg := waiter.Config{ - Operation: "DescribeCustomerGateways", - Delay: 15, - MaxAttempts: 40, - Acceptors: []waiter.WaitAcceptor{ - { - State: "success", - Matcher: "pathAll", - Argument: "CustomerGateways[].State", - Expected: "available", - }, - { - State: "failure", - Matcher: "pathAny", - Argument: "CustomerGateways[].State", - Expected: "deleted", - }, - { - State: "failure", - Matcher: "pathAny", - Argument: "CustomerGateways[].State", - Expected: "deleting", - }, - }, - } - - w := waiter.Waiter{ - Client: c, - Input: input, - Config: waiterCfg, - } - return w.Wait() -} - -func (c *EC2) WaitUntilExportTaskCancelled(input *DescribeExportTasksInput) error { - waiterCfg := waiter.Config{ - Operation: "DescribeExportTasks", - Delay: 15, - MaxAttempts: 40, - Acceptors: []waiter.WaitAcceptor{ - { - State: "success", - Matcher: "pathAll", - Argument: "ExportTasks[].State", - Expected: "cancelled", - }, - }, - } - - w := waiter.Waiter{ - Client: c, - Input: input, - Config: waiterCfg, - } - return w.Wait() -} - -func (c *EC2) WaitUntilExportTaskCompleted(input *DescribeExportTasksInput) error { - waiterCfg := waiter.Config{ - Operation: "DescribeExportTasks", - Delay: 15, - MaxAttempts: 40, - Acceptors: []waiter.WaitAcceptor{ - { - State: "success", - Matcher: "pathAll", - Argument: "ExportTasks[].State", - Expected: "completed", - }, - }, - } - - w := waiter.Waiter{ - Client: c, - Input: input, - Config: waiterCfg, - } - return w.Wait() -} - -func (c *EC2) WaitUntilImageAvailable(input *DescribeImagesInput) error { - waiterCfg := waiter.Config{ - Operation: "DescribeImages", - Delay: 15, - MaxAttempts: 40, - Acceptors: []waiter.WaitAcceptor{ - { - State: "success", - Matcher: "pathAll", - Argument: "Images[].State", - Expected: "available", - }, - { - State: "failure", - Matcher: "pathAny", - Argument: "Images[].State", - Expected: "failed", - }, - }, - } - - w := waiter.Waiter{ - Client: c, - Input: input, - Config: waiterCfg, - } - return w.Wait() -} - -func (c *EC2) WaitUntilInstanceExists(input *DescribeInstancesInput) error { - waiterCfg := waiter.Config{ - Operation: "DescribeInstances", - Delay: 5, - MaxAttempts: 40, - Acceptors: []waiter.WaitAcceptor{ - { - State: "success", - Matcher: "status", - Argument: "", - Expected: 200, - }, - { - State: "retry", - Matcher: "error", - Argument: "", - Expected: "InvalidInstanceIDNotFound", - }, - }, - } - - w := waiter.Waiter{ - Client: c, - Input: input, - Config: waiterCfg, - } - return w.Wait() -} - -func (c *EC2) WaitUntilInstanceRunning(input *DescribeInstancesInput) error { - waiterCfg := waiter.Config{ - Operation: "DescribeInstances", - Delay: 15, - MaxAttempts: 40, - Acceptors: []waiter.WaitAcceptor{ - { - State: "success", - Matcher: "pathAll", - Argument: "Reservations[].Instances[].State.Name", - Expected: "running", - }, - { - State: "failure", - Matcher: "pathAny", - Argument: "Reservations[].Instances[].State.Name", - Expected: "shutting-down", - }, - { - State: "failure", - Matcher: "pathAny", - Argument: "Reservations[].Instances[].State.Name", - Expected: "terminated", - }, - { - State: "failure", - Matcher: "pathAny", - Argument: "Reservations[].Instances[].State.Name", - Expected: "stopping", - }, - }, - } - - w := waiter.Waiter{ - Client: c, - Input: input, - Config: waiterCfg, - } - return w.Wait() -} - -func (c *EC2) WaitUntilInstanceStatusOk(input *DescribeInstanceStatusInput) error { - waiterCfg := waiter.Config{ - Operation: "DescribeInstanceStatus", - Delay: 15, - MaxAttempts: 40, - Acceptors: []waiter.WaitAcceptor{ - { - State: "success", - Matcher: "pathAll", - Argument: "InstanceStatuses[].InstanceStatus.Status", - Expected: "ok", - }, - }, - } - - w := waiter.Waiter{ - Client: c, - Input: input, - Config: waiterCfg, - } - return w.Wait() -} - -func (c *EC2) WaitUntilInstanceStopped(input *DescribeInstancesInput) error { - waiterCfg := waiter.Config{ - Operation: "DescribeInstances", - Delay: 15, - MaxAttempts: 40, - Acceptors: []waiter.WaitAcceptor{ - { - State: "success", - Matcher: "pathAll", - Argument: "Reservations[].Instances[].State.Name", - Expected: "stopped", - }, - { - State: "failure", - Matcher: "pathAny", - Argument: "Reservations[].Instances[].State.Name", - Expected: "pending", - }, - { - State: "failure", - Matcher: "pathAny", - Argument: "Reservations[].Instances[].State.Name", - Expected: "terminated", - }, - }, - } - - w := waiter.Waiter{ - Client: c, - Input: input, - Config: waiterCfg, - } - return w.Wait() -} - -func (c *EC2) WaitUntilInstanceTerminated(input *DescribeInstancesInput) error { - waiterCfg := waiter.Config{ - Operation: "DescribeInstances", - Delay: 15, - MaxAttempts: 40, - Acceptors: []waiter.WaitAcceptor{ - { - State: "success", - Matcher: "pathAll", - Argument: "Reservations[].Instances[].State.Name", - Expected: "terminated", - }, - { - State: "failure", - Matcher: "pathAny", - Argument: "Reservations[].Instances[].State.Name", - Expected: "pending", - }, - { - State: "failure", - Matcher: "pathAny", - Argument: "Reservations[].Instances[].State.Name", - Expected: "stopping", - }, - }, - } - - w := waiter.Waiter{ - Client: c, - Input: input, - Config: waiterCfg, - } - return w.Wait() -} - -func (c *EC2) WaitUntilKeyPairExists(input *DescribeKeyPairsInput) error { - waiterCfg := waiter.Config{ - Operation: "DescribeKeyPairs", - Delay: 5, - MaxAttempts: 6, - Acceptors: []waiter.WaitAcceptor{ - { - State: "success", - Matcher: "pathAll", - Argument: "length(KeyPairs[].KeyName) > `0`", - Expected: true, - }, - { - State: "retry", - Matcher: "error", - Argument: "", - Expected: "InvalidKeyPairNotFound", - }, - }, - } - - w := waiter.Waiter{ - Client: c, - Input: input, - Config: waiterCfg, - } - return w.Wait() -} - -func (c *EC2) WaitUntilNetworkInterfaceAvailable(input *DescribeNetworkInterfacesInput) error { - waiterCfg := waiter.Config{ - Operation: "DescribeNetworkInterfaces", - Delay: 20, - MaxAttempts: 10, - Acceptors: []waiter.WaitAcceptor{ - { - State: "success", - Matcher: "pathAll", - Argument: "NetworkInterfaces[].Status", - Expected: "available", - }, - { - State: "failure", - Matcher: "error", - Argument: "", - Expected: "InvalidNetworkInterfaceIDNotFound", - }, - }, - } - - w := waiter.Waiter{ - Client: c, - Input: input, - Config: waiterCfg, - } - return w.Wait() -} - -func (c *EC2) WaitUntilPasswordDataAvailable(input *GetPasswordDataInput) error { - waiterCfg := waiter.Config{ - Operation: "GetPasswordData", - Delay: 15, - MaxAttempts: 40, - Acceptors: []waiter.WaitAcceptor{ - { - State: "success", - Matcher: "path", - Argument: "length(PasswordData) > `0`", - Expected: true, - }, - }, - } - - w := waiter.Waiter{ - Client: c, - Input: input, - Config: waiterCfg, - } - return w.Wait() -} - -func (c *EC2) WaitUntilSnapshotCompleted(input *DescribeSnapshotsInput) error { - waiterCfg := waiter.Config{ - Operation: "DescribeSnapshots", - Delay: 15, - MaxAttempts: 40, - Acceptors: []waiter.WaitAcceptor{ - { - State: "success", - Matcher: "pathAll", - Argument: "Snapshots[].State", - Expected: "completed", - }, - }, - } - - w := waiter.Waiter{ - Client: c, - Input: input, - Config: waiterCfg, - } - return w.Wait() -} - -func (c *EC2) WaitUntilSpotInstanceRequestFulfilled(input *DescribeSpotInstanceRequestsInput) error { - waiterCfg := waiter.Config{ - Operation: "DescribeSpotInstanceRequests", - Delay: 15, - MaxAttempts: 40, - Acceptors: []waiter.WaitAcceptor{ - { - State: "success", - Matcher: "pathAll", - Argument: "SpotInstanceRequests[].Status.Code", - Expected: "fulfilled", - }, - { - State: "failure", - Matcher: "pathAny", - Argument: "SpotInstanceRequests[].Status.Code", - Expected: "schedule-expired", - }, - { - State: "failure", - Matcher: "pathAny", - Argument: "SpotInstanceRequests[].Status.Code", - Expected: "canceled-before-fulfillment", - }, - { - State: "failure", - Matcher: "pathAny", - Argument: "SpotInstanceRequests[].Status.Code", - Expected: "bad-parameters", - }, - { - State: "failure", - Matcher: "pathAny", - Argument: "SpotInstanceRequests[].Status.Code", - Expected: "system-error", - }, - }, - } - - w := waiter.Waiter{ - Client: c, - Input: input, - Config: waiterCfg, - } - return w.Wait() -} - -func (c *EC2) WaitUntilSubnetAvailable(input *DescribeSubnetsInput) error { - waiterCfg := waiter.Config{ - Operation: "DescribeSubnets", - Delay: 15, - MaxAttempts: 40, - Acceptors: []waiter.WaitAcceptor{ - { - State: "success", - Matcher: "pathAll", - Argument: "Subnets[].State", - Expected: "available", - }, - }, - } - - w := waiter.Waiter{ - Client: c, - Input: input, - Config: waiterCfg, - } - return w.Wait() -} - -func (c *EC2) WaitUntilSystemStatusOk(input *DescribeInstanceStatusInput) error { - waiterCfg := waiter.Config{ - Operation: "DescribeInstanceStatus", - Delay: 15, - MaxAttempts: 40, - Acceptors: []waiter.WaitAcceptor{ - { - State: "success", - Matcher: "pathAll", - Argument: "InstanceStatuses[].SystemStatus.Status", - Expected: "ok", - }, - }, - } - - w := waiter.Waiter{ - Client: c, - Input: input, - Config: waiterCfg, - } - return w.Wait() -} - -func (c *EC2) WaitUntilVolumeAvailable(input *DescribeVolumesInput) error { - waiterCfg := waiter.Config{ - Operation: "DescribeVolumes", - Delay: 15, - MaxAttempts: 40, - Acceptors: []waiter.WaitAcceptor{ - { - State: "success", - Matcher: "pathAll", - Argument: "Volumes[].State", - Expected: "available", - }, - { - State: "failure", - Matcher: "pathAny", - Argument: "Volumes[].State", - Expected: "deleted", - }, - }, - } - - w := waiter.Waiter{ - Client: c, - Input: input, - Config: waiterCfg, - } - return w.Wait() -} - -func (c *EC2) WaitUntilVolumeDeleted(input *DescribeVolumesInput) error { - waiterCfg := waiter.Config{ - Operation: "DescribeVolumes", - Delay: 15, - MaxAttempts: 40, - Acceptors: []waiter.WaitAcceptor{ - { - State: "success", - Matcher: "pathAll", - Argument: "Volumes[].State", - Expected: "deleted", - }, - { - State: "success", - Matcher: "error", - Argument: "", - Expected: "InvalidVolumeNotFound", - }, - }, - } - - w := waiter.Waiter{ - Client: c, - Input: input, - Config: waiterCfg, - } - return w.Wait() -} - -func (c *EC2) WaitUntilVolumeInUse(input *DescribeVolumesInput) error { - waiterCfg := waiter.Config{ - Operation: "DescribeVolumes", - Delay: 15, - MaxAttempts: 40, - Acceptors: []waiter.WaitAcceptor{ - { - State: "success", - Matcher: "pathAll", - Argument: "Volumes[].State", - Expected: "in-use", - }, - { - State: "failure", - Matcher: "pathAny", - Argument: "Volumes[].State", - Expected: "deleted", - }, - }, - } - - w := waiter.Waiter{ - Client: c, - Input: input, - Config: waiterCfg, - } - return w.Wait() -} - -func (c *EC2) WaitUntilVpcAvailable(input *DescribeVpcsInput) error { - waiterCfg := waiter.Config{ - Operation: "DescribeVpcs", - Delay: 15, - MaxAttempts: 40, - Acceptors: []waiter.WaitAcceptor{ - { - State: "success", - Matcher: "pathAll", - Argument: "Vpcs[].State", - Expected: "available", - }, - }, - } - - w := waiter.Waiter{ - Client: c, - Input: input, - Config: waiterCfg, - } - return w.Wait() -} - -func (c *EC2) WaitUntilVpnConnectionAvailable(input *DescribeVpnConnectionsInput) error { - waiterCfg := waiter.Config{ - Operation: "DescribeVpnConnections", - Delay: 15, - MaxAttempts: 40, - Acceptors: []waiter.WaitAcceptor{ - { - State: "success", - Matcher: "pathAll", - Argument: "VpnConnections[].State", - Expected: "available", - }, - { - State: "failure", - Matcher: "pathAny", - Argument: "VpnConnections[].State", - Expected: "deleting", - }, - { - State: "failure", - Matcher: "pathAny", - Argument: "VpnConnections[].State", - Expected: "deleted", - }, - }, - } - - w := waiter.Waiter{ - Client: c, - Input: input, - Config: waiterCfg, - } - return w.Wait() -} - -func (c *EC2) WaitUntilVpnConnectionDeleted(input *DescribeVpnConnectionsInput) error { - waiterCfg := waiter.Config{ - Operation: "DescribeVpnConnections", - Delay: 15, - MaxAttempts: 40, - Acceptors: []waiter.WaitAcceptor{ - { - State: "success", - Matcher: "pathAll", - Argument: "VpnConnections[].State", - Expected: "deleted", - }, - { - State: "failure", - Matcher: "pathAny", - Argument: "VpnConnections[].State", - Expected: "pending", - }, - }, - } - - w := waiter.Waiter{ - Client: c, - Input: input, - Config: waiterCfg, - } - return w.Wait() -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/.travis.yml b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/.travis.yml deleted file mode 100644 index 0d567658..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/.travis.yml +++ /dev/null @@ -1,11 +0,0 @@ -sudo: false -language: go - -go: - - 1.3 - - 1.4 - - 1.5 - - tip - -script: - - make ci diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/CHANGELOG.md b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/CHANGELOG.md deleted file mode 100644 index 79f736f0..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/CHANGELOG.md +++ /dev/null @@ -1,22 +0,0 @@ -1.0.4 ------ - -- Fix appengine integration broken by 1.0.3 - -1.0.3 ------ - -- Allow any Logger with a Printf method. - -1.0.2 ------ - -- Use bugsnag copies of dependencies to avoid potential link rot - -1.0.1 ------ - -- gofmt/golint/govet docs improvements. - -1.0.0 ------ diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/CONTRIBUTING.md b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/CONTRIBUTING.md deleted file mode 100644 index a665b401..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/CONTRIBUTING.md +++ /dev/null @@ -1,78 +0,0 @@ -Contributing -============ - -- [Fork](https://help.github.com/articles/fork-a-repo) the [notifier on github](https://github.com/bugsnag/bugsnag-go) -- Build and test your changes -- Commit and push until you are happy with your contribution -- [Make a pull request](https://help.github.com/articles/using-pull-requests) -- Thanks! - - -Installing the go development environment -------------------------------------- - -1. Install homebrew - - ``` - ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" - ``` - -1. Install go - - ``` - brew install go --cross-compile-all - ``` - -1. Configure `$GOPATH` in `~/.bashrc` - - ``` - export GOPATH="$HOME/go" - export PATH=$PATH:$GOPATH/bin - ``` - -Installing the appengine development environment ------------------------------------------------- - -1. Follow the [Google instructions](https://cloud.google.com/appengine/downloads). - -Downloading the code --------------------- - -You can download the code and its dependencies using - -``` -go get -t github.com/bugsnag/bugsnag-go -``` - -It will be put into "$GOPATH/src/github.com/bugsnag/bugsnag-go" - -Then install depend - - -Running Tests -------------- - -You can run the tests with - -```shell -go test -``` - -If you've made significant changes, please also test the appengine integration with - -```shell -goapp test -``` - -Releasing a New Version ------------------------ - -If you are a project maintainer, you can build and release a new version of -`bugsnag-go` as follows: - -1. Commit all your changes. -2. Update the version number in `bugsnag.go`. -3. Add an entry to `CHANGELOG.md` and update the README if necessary. -4. commit tag and push - - git commit -mv1.0.x && git tag v1.0.x && git push origin v1.0.x diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/LICENSE.txt b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/LICENSE.txt deleted file mode 100644 index 3cb0ec0f..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/LICENSE.txt +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2014 Bugsnag - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/Makefile b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/Makefile deleted file mode 100644 index 70ec7323..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -TEST?=./... - -default: alldeps test - -deps: - go get -v -d ./... - -alldeps: - go get -v -d -t ./... - -updatedeps: - go get -v -d -u ./... - -test: alldeps - go test - @go vet 2>/dev/null ; if [ $$? -eq 3 ]; then \ - go get golang.org/x/tools/cmd/vet; \ - fi - @go vet $(TEST) ; if [ $$? -eq 1 ]; then \ - echo "go-vet: Issues running go vet ./..."; \ - exit 1; \ - fi - -ci: alldeps test - -bench: - go test --bench=.* - - -.PHONY: bin checkversion ci default deps generate releasebin test testacc testrace updatedeps diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/README.md b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/README.md deleted file mode 100644 index 60ddc997..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/README.md +++ /dev/null @@ -1,553 +0,0 @@ -# Bugsnag Notifier for Golang -[![Latest Version](http://img.shields.io/github/release/bugsnag/bugsnag-go.svg?style=flat-square)](https://github.com/bugsnag/bugsnag-go/releases) -[![Build Status](https://travis-ci.org/bugsnag/bugsnag-go.svg)](https://travis-ci.org/bugsnag/bugsnag-go) -[![Go Documentation](http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)](http://godoc.org/github.com/bugsnag/bugsnag-go) - -The Bugsnag Notifier for Golang gives you instant notification of panics, or -unexpected errors, in your golang app. Any unhandled panics will trigger a -notification to be sent to your Bugsnag project. - -[Bugsnag](http://bugsnag.com) captures errors in real-time from your web, -mobile and desktop applications, helping you to understand and resolve them -as fast as possible. [Create a free account](http://bugsnag.com) to start -capturing exceptions from your applications. - -## How to Install - -1. Download the code - - ```shell - go get github.com/bugsnag/bugsnag-go - ``` - -### Using with net/http apps - -For a golang app based on [net/http](https://godoc.org/net/http), integrating -Bugsnag takes two steps. You should also use these instructions if you're using -the [gorilla toolkit](http://www.gorillatoolkit.org/), or the -[pat](https://github.com/bmizerany/pat/) muxer. - -1. Configure bugsnag at the start of your `main()` function: - - ```go - import "github.com/bugsnag/bugsnag-go" - - func main() { - bugsnag.Configure(bugsnag.Configuration{ - APIKey: "YOUR_API_KEY_HERE", - ReleaseStage: "production", - // more configuration options - }) - - // rest of your program. - } - ``` - -2. Wrap your server in a [bugsnag.Handler](https://godoc.org/github.com/bugsnag/bugsnag-go/#Handler) - - ```go - // a. If you're using the builtin http mux, you can just pass - // bugsnag.Handler(nil) to http.ListenAndServer - http.ListenAndServe(":8080", bugsnag.Handler(nil)) - - // b. If you're creating a server manually yourself, you can set - // its handlers the same way - srv := http.Server{ - Handler: bugsnag.Handler(nil) - } - - // c. If you're not using the builtin http mux, wrap your own handler - // (though make sure that it doesn't already catch panics) - http.ListenAndServe(":8080", bugsnag.Handler(handler)) - ``` - -### Using with Revel apps - -There are two steps to get panic handling in [revel](https://revel.github.io) apps. - -1. Add the `bugsnagrevel.Filter` immediately after the `revel.PanicFilter` in `app/init.go`: - - ```go - - import "github.com/bugsnag/bugsnag-go/revel" - - revel.Filters = []revel.Filter{ - revel.PanicFilter, - bugsnagrevel.Filter, - // ... - } - ``` - -2. Set bugsnag.apikey in the top section of `conf/app.conf`. - - ``` - module.static=github.com/revel/revel/modules/static - - bugsnag.apikey=YOUR_API_KEY_HERE - - [dev] - ``` - -### Using with martini apps - -1. Add `bugsnagmartini.AutoNotify` immediately after the `martini.Recovery` middleware in `main.go`. -This causes unhandled panics to notify bugsnag. - - ```go - - import "github.com/bugsnag/bugsnag-go/martini" - - func main() { - - m.Use(martini.Recover() - - m.Use(bugsnagmartini.AutoNotify(bugsnag.Configuration{ - APIKey: "YOUR_API_KEY_HERE", - })) - } - ``` - -2. Use `bugsnag` from the context injection if you need to notify about non-fatal errors. - - ``` - func MyHandler(r *http.Request, bugsnag *bugsnag.Notifier) string { - bugsnag.Notify(err); - } - ``` - -### Using with Google App Engine - -1. Configure bugsnag at the start of your `init()` function: - - ```go - import "github.com/bugsnag/bugsnag-go" - - func init() { - bugsnag.Configure(bugsnag.Configuration{ - APIKey: "YOUR_API_KEY_HERE", - }) - - // ... - } - ``` - -2. Wrap *every* http.Handler or http.HandlerFunc with Bugsnag: - - ```go - // a. If you're using HandlerFuncs - http.HandleFunc("/", bugsnag.HandlerFunc( - func (w http.ResponseWriter, r *http.Request) { - // ... - })) - - // b. If you're using Handlers - http.Handle("/", bugsnag.Handler(myHttpHandler)) - ``` - -3. In order to use Bugsnag, you must provide the current -[`appengine.Context`](https://developers.google.com/appengine/docs/go/reference#Context), or -current `*http.Request` as rawData (This is done automatically for `bugsnag.Handler` and `bugsnag.HandlerFunc`). -The easiest way to do this is to create a new instance of the notifier. - - ```go - c := appengine.NewContext(r) - notifier := bugsnag.New(c) - - if err != nil { - notifier.Notify(err) - } - - go func () { - defer notifier.Recover() - - // ... - }() - ``` - - -## Notifying Bugsnag manually - -Bugsnag will automatically handle any panics that crash your program and notify -you of them. If you've integrated with `revel` or `net/http`, then you'll also -be notified of any panics() that happen while processing a request. - -Sometimes however it's useful to manually notify Bugsnag of a problem. To do this, -call [`bugsnag.Notify()`](https://godoc.org/github.com/bugsnag/bugsnag-go/#Notify) - -```go -if err != nil { - bugsnag.Notify(err) -} -``` - -### Manual panic handling - -To avoid a panic in a goroutine from crashing your entire app, you can use -[`bugsnag.Recover()`](https://godoc.org/github.com/bugsnag/bugsnag-go/#Recover) -to stop a panic from unwinding the stack any further. When `Recover()` is hit, -it will send any current panic to Bugsnag and then stop panicking. This is -most useful at the start of a goroutine: - -```go -go func() { - defer bugsnag.Recover() - - // ... -}() -``` - -Alternatively you can use -[`bugsnag.AutoNotify()`](https://godoc.org/github.com/bugsnag/bugsnag-go/#Recover) -to notify bugsnag of a panic while letting the program continue to panic. This -is useful if you're using a Framework that already has some handling of panics -and you are retrofitting bugsnag support. - -```go -defer bugsnag.AutoNotify() -``` - -## Sending Custom Data - -Most functions in the Bugsnag API, including `bugsnag.Notify()`, -`bugsnag.Recover()`, `bugsnag.AutoNotify()`, and `bugsnag.Handler()` let you -attach data to the notifications that they send. To do this you pass in rawData, -which can be any of the supported types listed here. To add support for more -types of rawData see [OnBeforeNotify](#custom-data-with-onbeforenotify). - -### Custom MetaData - -Custom metaData appears as tabs on Bugsnag.com. You can set it by passing -a [`bugsnag.MetaData`](https://godoc.org/github.com/bugsnag/bugsnag-go/#MetaData) -object as rawData. - -```go -bugsnag.Notify(err, - bugsnag.MetaData{ - "Account": { - "Name": Account.Name, - "Paying": Account.Plan.Premium, - }, - }) -``` - -### Request data - -Bugsnag can extract interesting data from -[`*http.Request`](https://godoc.org/net/http/#Request) objects, and -[`*revel.Controller`](https://godoc.org/github.com/revel/revel/#Controller) -objects. These are automatically passed in when handling panics, and you can -pass them yourself. - -```go -func (w http.ResponseWriter, r *http.Request) { - bugsnag.Notify(err, r) -} -``` - -### User data - -User data is searchable, and the `Id` powers the count of users affected. You -can set which user an error affects by passing a -[`bugsnag.User`](https://godoc.org/github.com/bugsnag/bugsnag-go/#User) object as -rawData. - -```go -bugsnag.Notify(err, - bugsnag.User{Id: "1234", Name: "Conrad", Email: "me@cirw.in"}) -``` - -### Error Class - -Errors in your Bugsnag dashboard are grouped by their "error class" and by line number. -You can override the error class by passing a -[`bugsnag.ErrorClass`](https://godoc.org/github.com/bugsnag/bugsnag-go/#ErrorClass) object as -rawData. - -```go -bugsnag.Notify(err, bugsnag.ErrorClass{"I/O Timeout"}) -``` - -### Context - -The context shows up prominently in the list view so that you can get an idea -of where a problem occurred. You can set it by passing a -[`bugsnag.Context`](https://godoc.org/github.com/bugsnag/bugsnag-go/#Context) -object as rawData. - -```go -bugsnag.Notify(err, bugsnag.Context{"backgroundJob"}) -``` - -### Severity - -Bugsnag supports three severities, `SeverityError`, `SeverityWarning`, and `SeverityInfo`. -You can set the severity of an error by passing one of these objects as rawData. - -```go -bugsnag.Notify(err, bugsnag.SeverityInfo) -``` - -## Configuration - -You must call `bugsnag.Configure()` at the start of your program to use Bugsnag, you pass it -a [`bugsnag.Configuration`](https://godoc.org/github.com/bugsnag/bugsnag-go/#Configuration) object -containing any of the following values. - -### APIKey - -The Bugsnag API key can be found on your [Bugsnag dashboard](https://bugsnag.com) under "Settings". - -```go -bugsnag.Configure(bugsnag.Configuration{ - APIKey: "YOUR_API_KEY_HERE", -}) -``` - -### Endpoint - -The Bugsnag endpoint defaults to `https://notify.bugsnag.com/`. If you're using Bugsnag enterprise, -you should set this to the endpoint of your local instance. - -```go -bugsnag.Configure(bugsnag.Configuration{ - Endpoint: "http://bugsnag.internal:49000/", -}) -``` - -### ReleaseStage - -The ReleaseStage tracks where your app is deployed. You should set this to `production`, `staging`, -`development` or similar as appropriate. - -```go -bugsnag.Configure(bugsnag.Configuration{ - ReleaseStage: "development", -}) -``` - -### NotifyReleaseStages - -The list of ReleaseStages to notify in. By default Bugsnag will notify you in all release stages, but -you can use this to silence development errors. - -```go -bugsnag.Configure(bugsnag.Configuration{ - NotifyReleaseStages: []string{"production", "staging"}, -}) -``` - -### AppVersion - -If you use a versioning scheme for deploys of your app, Bugsnag can use the `AppVersion` to only -re-open errors if they occur in later version of the app. - -```go -bugsnag.Configure(bugsnag.Configuration{ - AppVersion: "1.2.3", -}) -``` - -### Hostname - -The hostname is used to track where exceptions are coming from in the Bugsnag dashboard. The -default value is obtained from `os.Hostname()` so you won't often need to change this. - -```go -bugsnag.Configure(bugsnag.Configuration{ - Hostname: "go1", -}) -``` - -### ProjectPackages - -In order to determine where a crash happens Bugsnag needs to know which packages you consider to -be part of your app (as opposed to a library). By default this is set to `[]string{"main*"}`. Strings -are matched to package names using [`filepath.Match`](http://godoc.org/path/filepath#Match). - -For matching subpackages within a package you may use the `**` notation. For example, `github.com/domain/package/**` will match all subpackages under `package/`. - -```go -bugsnag.Configure(bugsnag.Configuration{ - ProjectPackages: []string{"main", "github.com/domain/myapp/*"}, -} -``` - -### ParamsFilters - -Sometimes sensitive data is accidentally included in Bugsnag MetaData. You can remove it by -setting `ParamsFilters`. Any key in the `MetaData` that includes any string in the filters -will be redacted. The default is `[]string{"password", "secret"}`, which prevents fields like -`password`, `password_confirmation` and `secret_answer` from being sent. - -```go -bugsnag.Configure(bugsnag.Configuration{ - ParamsFilters: []string{"password", "secret"}, -} -``` - -### Logger - -The Logger to write to in case of an error inside Bugsnag. This defaults to the global logger. - -```go -bugsnag.Configure(bugsnag.Configuration{ - Logger: app.Logger, -} -``` - -### PanicHandler - -The first time Bugsnag is configured, it wraps the running program in a panic -handler using [panicwrap](http://godoc.org/github.com/ConradIrwin/panicwrap). This -forks a sub-process which monitors unhandled panics. To prevent this, set -`PanicHandler` to `func() {}` the first time you call -`bugsnag.Configure`. This will prevent bugsnag from being able to notify you about -unhandled panics. - -```go -bugsnag.Configure(bugsnag.Configuration{ - PanicHandler: func() {}, -}) -``` - -### Synchronous - -Bugsnag usually starts a new goroutine before sending notifications. This means -that notifications can be lost if you do a bugsnag.Notify and then immediately -os.Exit. To avoid this problem, set Bugsnag to Synchronous (or just `panic()` -instead ;). - -```go -bugsnag.Configure(bugsnag.Configuration{ - Synchronous: true -}) -``` - -Or just for one error: - -```go -bugsnag.Notify(err, bugsnag.Configuration{Synchronous: true}) -``` - -### Transport - -The transport configures how Bugsnag makes http requests. By default we use -[`http.DefaultTransport`](http://godoc.org/net/http#RoundTripper) which handles -HTTP proxies automatically using the `$HTTP_PROXY` environment variable. - -```go -bugsnag.Configure(bugsnag.Configuration{ - Transport: http.DefaultTransport, -}) -``` - -## Custom data with OnBeforeNotify - -While it's nice that you can pass `MetaData` directly into `bugsnag.Notify`, -`bugsnag.AutoNotify`, and `bugsnag.Recover`, this can be a bit cumbersome and -inefficient — you're constructing the meta-data whether or not it will actually -be used. A better idea is to pass raw data in to these functions, and add an -`OnBeforeNotify` filter that converts them into `MetaData`. - -For example, lets say our system processes jobs: - -```go -type Job struct{ - Retry bool - UserId string - UserEmail string - Name string - Params map[string]string -} -``` - -You can pass a job directly into Bugsnag.notify: - -```go -bugsnag.Notify(err, job) -``` - -And then add a filter to extract information from that job and attach it to the -Bugsnag event: - -```go -bugsnag.OnBeforeNotify( - func(event *bugsnag.Event, config *bugsnag.Configuration) error { - - // Search all the RawData for any *Job pointers that we're passed in - // to bugsnag.Notify() and friends. - for _, datum := range event.RawData { - if job, ok := datum.(*Job); ok { - // don't notify bugsnag about errors in retries - if job.Retry { - return fmt.Errorf("not notifying about retried jobs") - } - - // add the job as a tab on Bugsnag.com - event.MetaData.AddStruct("Job", job) - - // set the user correctly - event.User = &User{Id: job.UserId, Email: job.UserEmail} - } - } - - // continue notifying as normal - return nil - }) -``` - -## Advanced Usage - -If you want to have multiple different configurations around in one program, -you can use `bugsnag.New()` to create multiple independent instances of -Bugsnag. You can use these without calling `bugsnag.Configure()`, but bear in -mind that until you call `bugsnag.Configure()` unhandled panics will not be -sent to bugsnag. - -```go -notifier := bugsnag.New(bugsnag.Configuration{ - APIKey: "YOUR_OTHER_API_KEY", -}) -``` - -In fact any place that lets you pass in `rawData` also allows you to pass in -configuration. For example to send http errors to one bugsnag project, you -could do: - -```go -bugsnag.Handler(nil, bugsnag.Configuration{APIKey: "YOUR_OTHER_API_KEY"}) -``` - -### GroupingHash - -If you need to override Bugsnag's grouping algorithm, you can set the -`GroupingHash` in an `OnBeforeNotify`: - -```go -bugsnag.OnBeforeNotify( - func (event *bugsnag.Event, config *bugsnag.Configuration) error { - event.GroupingHash = calculateGroupingHash(event) - return nil - }) -``` - -### Skipping lines in stacktrace - -If you have your own logging wrapper all of your errors will appear to -originate from inside it. You can avoid this problem by constructing -an error with a stacktrace manually, and then passing that to Bugsnag.notify: - -```go -import ( - "github.com/bugsnag/bugsnag-go" - "github.com/bugsnag/bugsnag-go/errors" -) - -func LogError(e error) { - // 1 removes one line of stacktrace, so the caller of LogError - // will be at the top. - e = errors.New(e, 1) - bugsnag.Notify(e) -} -``` - diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/appengine.go b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/appengine.go deleted file mode 100644 index 81e25069..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/appengine.go +++ /dev/null @@ -1,81 +0,0 @@ -// +build appengine - -package bugsnag - -import ( - "appengine" - "appengine/urlfetch" - "appengine/user" - "fmt" - "log" - "net/http" -) - -func defaultPanicHandler() {} - -func init() { - OnBeforeNotify(appengineMiddleware) -} - -func appengineMiddleware(event *Event, config *Configuration) (err error) { - var c appengine.Context - - for _, datum := range event.RawData { - if r, ok := datum.(*http.Request); ok { - c = appengine.NewContext(r) - break - } else if context, ok := datum.(appengine.Context); ok { - c = context - break - } - } - - if c == nil { - return fmt.Errorf("No appengine context given") - } - - // You can only use the builtin http library if you pay for appengine, - // so we use the appengine urlfetch service instead. - config.Transport = &urlfetch.Transport{ - Context: c, - } - - // Anything written to stderr/stdout is discarded, so lets log to the request. - - if configuredLogger, ok := config.Logger.(*log.Logger); ok { - config.Logger = log.New(appengineWriter{c}, configuredLogger.Prefix(), configuredLogger.Flags()) - } else { - config.Logger = log.New(appengineWriter{c}, log.Prefix(), log.Flags()) - } - - // Set the releaseStage appropriately - if config.ReleaseStage == "" { - if appengine.IsDevAppServer() { - config.ReleaseStage = "development" - } else { - config.ReleaseStage = "production" - } - } - - if event.User == nil { - u := user.Current(c) - if u != nil { - event.User = &User{ - Id: u.ID, - Email: u.Email, - } - } - } - - return nil -} - -// Convert an appengine.Context into an io.Writer so we can create a log.Logger. -type appengineWriter struct { - appengine.Context -} - -func (c appengineWriter) Write(b []byte) (int, error) { - c.Warningf(string(b)) - return len(b), nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/bugsnag.go b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/bugsnag.go deleted file mode 100644 index e9bbf465..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/bugsnag.go +++ /dev/null @@ -1,131 +0,0 @@ -package bugsnag - -import ( - "github.com/bugsnag/bugsnag-go/errors" - "log" - "net/http" - "os" - "sync" - - // Fixes a bug with SHA-384 intermediate certs on some platforms. - // - https://github.com/bugsnag/bugsnag-go/issues/9 - _ "crypto/sha512" -) - -// The current version of bugsnag-go. -const VERSION = "1.0.3" - -var once sync.Once -var middleware middlewareStack - -// The configuration for the default bugsnag notifier. -var Config Configuration - -var defaultNotifier = Notifier{&Config, nil} - -// Configure Bugsnag. The only required setting is the APIKey, which can be -// obtained by clicking on "Settings" in your Bugsnag dashboard. This function -// is also responsible for installing the global panic handler, so it should be -// called as early as possible in your initialization process. -func Configure(config Configuration) { - Config.update(&config) - once.Do(Config.PanicHandler) -} - -// Notify sends an error to Bugsnag along with the current stack trace. The -// rawData is used to send extra information along with the error. For example -// you can pass the current http.Request to Bugsnag to see information about it -// in the dashboard, or set the severity of the notification. -func Notify(err error, rawData ...interface{}) error { - return defaultNotifier.Notify(errors.New(err, 1), rawData...) -} - -// AutoNotify logs a panic on a goroutine and then repanics. -// It should only be used in places that have existing panic handlers further -// up the stack. See bugsnag.Recover(). The rawData is used to send extra -// information along with any panics that are handled this way. -// Usage: defer bugsnag.AutoNotify() -func AutoNotify(rawData ...interface{}) { - if err := recover(); err != nil { - rawData = defaultNotifier.addDefaultSeverity(rawData, SeverityError) - defaultNotifier.Notify(errors.New(err, 2), rawData...) - panic(err) - } -} - -// Recover logs a panic on a goroutine and then recovers. -// The rawData is used to send extra information along with -// any panics that are handled this way -// Usage: defer bugsnag.Recover() -func Recover(rawData ...interface{}) { - if err := recover(); err != nil { - rawData = defaultNotifier.addDefaultSeverity(rawData, SeverityWarning) - defaultNotifier.Notify(errors.New(err, 2), rawData...) - } -} - -// OnBeforeNotify adds a callback to be run before a notification is sent to -// Bugsnag. It can be used to modify the event or its MetaData. Changes made -// to the configuration are local to notifying about this event. To prevent the -// event from being sent to Bugsnag return an error, this error will be -// returned from bugsnag.Notify() and the event will not be sent. -func OnBeforeNotify(callback func(event *Event, config *Configuration) error) { - middleware.OnBeforeNotify(callback) -} - -// Handler creates an http Handler that notifies Bugsnag any panics that -// happen. It then repanics so that the default http Server panic handler can -// handle the panic too. The rawData is used to send extra information along -// with any panics that are handled this way. -func Handler(h http.Handler, rawData ...interface{}) http.Handler { - notifier := New(rawData...) - if h == nil { - h = http.DefaultServeMux - } - - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - defer notifier.AutoNotify(r) - h.ServeHTTP(w, r) - }) -} - -// HandlerFunc creates an http HandlerFunc that notifies Bugsnag about any -// panics that happen. It then repanics so that the default http Server panic -// handler can handle the panic too. The rawData is used to send extra -// information along with any panics that are handled this way. If you have -// already wrapped your http server using bugsnag.Handler() you don't also need -// to wrap each HandlerFunc. -func HandlerFunc(h http.HandlerFunc, rawData ...interface{}) http.HandlerFunc { - notifier := New(rawData...) - - return func(w http.ResponseWriter, r *http.Request) { - defer notifier.AutoNotify(r) - h(w, r) - } -} - -func init() { - // Set up builtin middlewarez - OnBeforeNotify(httpRequestMiddleware) - - // Default configuration - Config.update(&Configuration{ - APIKey: "", - Endpoint: "https://notify.bugsnag.com/", - Hostname: "", - AppVersion: "", - ReleaseStage: "", - ParamsFilters: []string{"password", "secret"}, - // * for app-engine - ProjectPackages: []string{"main*"}, - NotifyReleaseStages: nil, - Logger: log.New(os.Stdout, log.Prefix(), log.Flags()), - PanicHandler: defaultPanicHandler, - Transport: http.DefaultTransport, - }) - - hostname, err := os.Hostname() - if err == nil { - Config.Hostname = hostname - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/configuration.go b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/configuration.go deleted file mode 100644 index ad1d42db..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/configuration.go +++ /dev/null @@ -1,169 +0,0 @@ -package bugsnag - -import ( - "log" - "net/http" - "path/filepath" - "strings" -) - -// Configuration sets up and customizes communication with the Bugsnag API. -type Configuration struct { - // Your Bugsnag API key, e.g. "c9d60ae4c7e70c4b6c4ebd3e8056d2b8". You can - // find this by clicking Settings on https://bugsnag.com/. - APIKey string - // The Endpoint to notify about crashes. This defaults to - // "https://notify.bugsnag.com/", if you're using Bugsnag Enterprise then - // set it to your internal Bugsnag endpoint. - Endpoint string - - // The current release stage. This defaults to "production" and is used to - // filter errors in the Bugsnag dashboard. - ReleaseStage string - // The currently running version of the app. This is used to filter errors - // in the Bugsnag dasboard. If you set this then Bugsnag will only re-open - // resolved errors if they happen in different app versions. - AppVersion string - // The hostname of the current server. This defaults to the return value of - // os.Hostname() and is graphed in the Bugsnag dashboard. - Hostname string - - // The Release stages to notify in. If you set this then bugsnag-go will - // only send notifications to Bugsnag if the ReleaseStage is listed here. - NotifyReleaseStages []string - - // packages that are part of your app. Bugsnag uses this to determine how - // to group errors and how to display them on your dashboard. You should - // include any packages that are part of your app, and exclude libraries - // and helpers. You can list wildcards here, and they'll be expanded using - // filepath.Glob. The default value is []string{"main*"} - ProjectPackages []string - - // Any meta-data that matches these filters will be marked as [REDACTED] - // before sending a Notification to Bugsnag. It defaults to - // []string{"password", "secret"} so that request parameters like password, - // password_confirmation and auth_secret will not be sent to Bugsnag. - ParamsFilters []string - - // The PanicHandler is used by Bugsnag to catch unhandled panics in your - // application. The default panicHandler uses mitchellh's panicwrap library, - // and you can disable this feature by passing an empty: func() {} - PanicHandler func() - - // The logger that Bugsnag should log to. Uses the same defaults as go's - // builtin logging package. bugsnag-go logs whenever it notifies Bugsnag - // of an error, and when any error occurs inside the library itself. - Logger interface { - Printf(format string, v ...interface{}) // limited to the functions used - } - // The http Transport to use, defaults to the default http Transport. This - // can be configured if you are in an environment like Google App Engine - // that has stringent conditions on making http requests. - Transport http.RoundTripper - // Whether bugsnag should notify synchronously. This defaults to false which - // causes bugsnag-go to spawn a new goroutine for each notification. - Synchronous bool - // TODO: remember to update the update() function when modifying this struct -} - -func (config *Configuration) update(other *Configuration) *Configuration { - if other.APIKey != "" { - config.APIKey = other.APIKey - } - if other.Endpoint != "" { - config.Endpoint = other.Endpoint - } - if other.Hostname != "" { - config.Hostname = other.Hostname - } - if other.AppVersion != "" { - config.AppVersion = other.AppVersion - } - if other.ReleaseStage != "" { - config.ReleaseStage = other.ReleaseStage - } - if other.ParamsFilters != nil { - config.ParamsFilters = other.ParamsFilters - } - if other.ProjectPackages != nil { - config.ProjectPackages = other.ProjectPackages - } - if other.Logger != nil { - config.Logger = other.Logger - } - if other.NotifyReleaseStages != nil { - config.NotifyReleaseStages = other.NotifyReleaseStages - } - if other.PanicHandler != nil { - config.PanicHandler = other.PanicHandler - } - if other.Transport != nil { - config.Transport = other.Transport - } - if other.Synchronous { - config.Synchronous = true - } - - return config -} - -func (config *Configuration) merge(other *Configuration) *Configuration { - return config.clone().update(other) -} - -func (config *Configuration) clone() *Configuration { - clone := *config - return &clone -} - -func (config *Configuration) isProjectPackage(pkg string) bool { - for _, p := range config.ProjectPackages { - if d, f := filepath.Split(p); f == "**" { - if strings.HasPrefix(pkg, d) { - return true - } - } - - if match, _ := filepath.Match(p, pkg); match { - return true - } - } - return false -} - -func (config *Configuration) stripProjectPackages(file string) string { - for _, p := range config.ProjectPackages { - if len(p) > 2 && p[len(p)-2] == '/' && p[len(p)-1] == '*' { - p = p[:len(p)-1] - } else if p[len(p)-1] == '*' && p[len(p)-2] == '*' { - p = p[:len(p)-2] - } else { - p = p + "/" - } - if strings.HasPrefix(file, p) { - return strings.TrimPrefix(file, p) - } - } - - return file -} - -func (config *Configuration) logf(fmt string, args ...interface{}) { - if config != nil && config.Logger != nil { - config.Logger.Printf(fmt, args...) - } else { - log.Printf(fmt, args...) - } -} - -func (config *Configuration) notifyInReleaseStage() bool { - if config.NotifyReleaseStages == nil { - return true - } - for _, r := range config.NotifyReleaseStages { - if r == config.ReleaseStage { - return true - } - } - return false -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/doc.go b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/doc.go deleted file mode 100644 index 827e03b8..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/doc.go +++ /dev/null @@ -1,69 +0,0 @@ -/* -Package bugsnag captures errors in real-time and reports them to Bugsnag (http://bugsnag.com). - -Using bugsnag-go is a three-step process. - -1. As early as possible in your program configure the notifier with your APIKey. This sets up -handling of panics that would otherwise crash your app. - - func init() { - bugsnag.Configure(bugsnag.Configuration{ - APIKey: "YOUR_API_KEY_HERE", - }) - } - -2. Add bugsnag to places that already catch panics. For example you should add it to the HTTP server -when you call ListenAndServer: - - http.ListenAndServe(":8080", bugsnag.Handler(nil)) - -If that's not possible, for example because you're using Google App Engine, you can also wrap each -HTTP handler manually: - - http.HandleFunc("/" bugsnag.HandlerFunc(func (w http.ResponseWriter, r *http.Request) { - ... - }) - -3. To notify Bugsnag of an error that is not a panic, pass it to bugsnag.Notify. This will also -log the error message using the configured Logger. - - if err != nil { - bugsnag.Notify(err) - } - -For detailed integration instructions see https://bugsnag.com/docs/notifiers/go. - -Configuration - -The only required configuration is the Bugsnag API key which can be obtained by clicking "Settings" -on the top of https://bugsnag.com/ after signing up. We also recommend you set the ReleaseStage -and AppVersion if these make sense for your deployment workflow. - -RawData - -If you need to attach extra data to Bugsnag notifications you can do that using -the rawData mechanism. Most of the functions that send errors to Bugsnag allow -you to pass in any number of interface{} values as rawData. The rawData can -consist of the Severity, Context, User or MetaData types listed below, and -there is also builtin support for *http.Requests. - - bugsnag.Notify(err, bugsnag.SeverityError) - -If you want to add custom tabs to your bugsnag dashboard you can pass any value in as rawData, -and then process it into the event's metadata using a bugsnag.OnBeforeNotify() hook. - - bugsnag.Notify(err, account) - - bugsnag.OnBeforeNotify(func (e *bugsnag.Event, c *bugsnag.Configuration) { - for datum := range e.RawData { - if account, ok := datum.(Account); ok { - e.MetaData.Add("account", "name", account.Name) - e.MetaData.Add("account", "url", account.URL) - } - } - }) - -If necessary you can pass Configuration in as rawData, or modify the Configuration object passed -into OnBeforeNotify hooks. Configuration passed in this way only affects the current notification. -*/ -package bugsnag diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/errors/README.md b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/errors/README.md deleted file mode 100644 index 8d8e097a..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/errors/README.md +++ /dev/null @@ -1,6 +0,0 @@ -Adds stacktraces to errors in golang. - -This was made to help build the Bugsnag notifier but can be used standalone if -you like to have stacktraces on errors. - -See [Godoc](https://godoc.org/github.com/bugsnag/bugsnag-go/errors) for the API docs. diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/errors/error.go b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/errors/error.go deleted file mode 100644 index 0081c0a8..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/errors/error.go +++ /dev/null @@ -1,90 +0,0 @@ -// Package errors provides errors that have stack-traces. -package errors - -import ( - "bytes" - "fmt" - "reflect" - "runtime" -) - -// The maximum number of stackframes on any error. -var MaxStackDepth = 50 - -// Error is an error with an attached stacktrace. It can be used -// wherever the builtin error interface is expected. -type Error struct { - Err error - stack []uintptr - frames []StackFrame -} - -// New makes an Error from the given value. If that value is already an -// error then it will be used directly, if not, it will be passed to -// fmt.Errorf("%v"). The skip parameter indicates how far up the stack -// to start the stacktrace. 0 is from the current call, 1 from its caller, etc. -func New(e interface{}, skip int) *Error { - var err error - - switch e := e.(type) { - case *Error: - return e - case error: - err = e - default: - err = fmt.Errorf("%v", e) - } - - stack := make([]uintptr, MaxStackDepth) - length := runtime.Callers(2+skip, stack[:]) - return &Error{ - Err: err, - stack: stack[:length], - } -} - -// Errorf creates a new error with the given message. You can use it -// as a drop-in replacement for fmt.Errorf() to provide descriptive -// errors in return values. -func Errorf(format string, a ...interface{}) *Error { - return New(fmt.Errorf(format, a...), 1) -} - -// Error returns the underlying error's message. -func (err *Error) Error() string { - return err.Err.Error() -} - -// Stack returns the callstack formatted the same way that go does -// in runtime/debug.Stack() -func (err *Error) Stack() []byte { - buf := bytes.Buffer{} - - for _, frame := range err.StackFrames() { - buf.WriteString(frame.String()) - } - - return buf.Bytes() -} - -// StackFrames returns an array of frames containing information about the -// stack. -func (err *Error) StackFrames() []StackFrame { - if err.frames == nil { - err.frames = make([]StackFrame, len(err.stack)) - - for i, pc := range err.stack { - err.frames[i] = NewStackFrame(pc) - } - } - - return err.frames -} - -// TypeName returns the type this error. e.g. *errors.stringError. -func (err *Error) TypeName() string { - if _, ok := err.Err.(uncaughtPanic); ok { - return "panic" - } - return reflect.TypeOf(err.Err).String() -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/errors/parse_panic.go b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/errors/parse_panic.go deleted file mode 100644 index cc37052d..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/errors/parse_panic.go +++ /dev/null @@ -1,127 +0,0 @@ -package errors - -import ( - "strconv" - "strings" -) - -type uncaughtPanic struct{ message string } - -func (p uncaughtPanic) Error() string { - return p.message -} - -// ParsePanic allows you to get an error object from the output of a go program -// that panicked. This is particularly useful with https://github.com/mitchellh/panicwrap. -func ParsePanic(text string) (*Error, error) { - lines := strings.Split(text, "\n") - - state := "start" - - var message string - var stack []StackFrame - - for i := 0; i < len(lines); i++ { - line := lines[i] - - if state == "start" { - if strings.HasPrefix(line, "panic: ") { - message = strings.TrimPrefix(line, "panic: ") - state = "seek" - } else { - return nil, Errorf("bugsnag.panicParser: Invalid line (no prefix): %s", line) - } - - } else if state == "seek" { - if strings.HasPrefix(line, "goroutine ") && strings.HasSuffix(line, "[running]:") { - state = "parsing" - } - - } else if state == "parsing" { - if line == "" { - state = "done" - break - } - createdBy := false - if strings.HasPrefix(line, "created by ") { - line = strings.TrimPrefix(line, "created by ") - createdBy = true - } - - i++ - - if i >= len(lines) { - return nil, Errorf("bugsnag.panicParser: Invalid line (unpaired): %s", line) - } - - frame, err := parsePanicFrame(line, lines[i], createdBy) - if err != nil { - return nil, err - } - - stack = append(stack, *frame) - if createdBy { - state = "done" - break - } - } - } - - if state == "done" || state == "parsing" { - return &Error{Err: uncaughtPanic{message}, frames: stack}, nil - } - return nil, Errorf("could not parse panic: %v", text) -} - -// The lines we're passing look like this: -// -// main.(*foo).destruct(0xc208067e98) -// /0/go/src/github.com/bugsnag/bugsnag-go/pan/main.go:22 +0x151 -func parsePanicFrame(name string, line string, createdBy bool) (*StackFrame, error) { - idx := strings.LastIndex(name, "(") - if idx == -1 && !createdBy { - return nil, Errorf("bugsnag.panicParser: Invalid line (no call): %s", name) - } - if idx != -1 { - name = name[:idx] - } - pkg := "" - - if lastslash := strings.LastIndex(name, "/"); lastslash >= 0 { - pkg += name[:lastslash] + "/" - name = name[lastslash+1:] - } - if period := strings.Index(name, "."); period >= 0 { - pkg += name[:period] - name = name[period+1:] - } - - name = strings.Replace(name, "·", ".", -1) - - if !strings.HasPrefix(line, "\t") { - return nil, Errorf("bugsnag.panicParser: Invalid line (no tab): %s", line) - } - - idx = strings.LastIndex(line, ":") - if idx == -1 { - return nil, Errorf("bugsnag.panicParser: Invalid line (no line number): %s", line) - } - file := line[1:idx] - - number := line[idx+1:] - if idx = strings.Index(number, " +"); idx > -1 { - number = number[:idx] - } - - lno, err := strconv.ParseInt(number, 10, 32) - if err != nil { - return nil, Errorf("bugsnag.panicParser: Invalid line (bad line number): %s", line) - } - - return &StackFrame{ - File: file, - LineNumber: int(lno), - Package: pkg, - Name: name, - }, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/errors/stackframe.go b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/errors/stackframe.go deleted file mode 100644 index 4edadbc5..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/errors/stackframe.go +++ /dev/null @@ -1,97 +0,0 @@ -package errors - -import ( - "bytes" - "fmt" - "io/ioutil" - "runtime" - "strings" -) - -// A StackFrame contains all necessary information about to generate a line -// in a callstack. -type StackFrame struct { - File string - LineNumber int - Name string - Package string - ProgramCounter uintptr -} - -// NewStackFrame popoulates a stack frame object from the program counter. -func NewStackFrame(pc uintptr) (frame StackFrame) { - - frame = StackFrame{ProgramCounter: pc} - if frame.Func() == nil { - return - } - frame.Package, frame.Name = packageAndName(frame.Func()) - - // pc -1 because the program counters we use are usually return addresses, - // and we want to show the line that corresponds to the function call - frame.File, frame.LineNumber = frame.Func().FileLine(pc - 1) - return - -} - -// Func returns the function that this stackframe corresponds to -func (frame *StackFrame) Func() *runtime.Func { - if frame.ProgramCounter == 0 { - return nil - } - return runtime.FuncForPC(frame.ProgramCounter) -} - -// String returns the stackframe formatted in the same way as go does -// in runtime/debug.Stack() -func (frame *StackFrame) String() string { - str := fmt.Sprintf("%s:%d (0x%x)\n", frame.File, frame.LineNumber, frame.ProgramCounter) - - source, err := frame.SourceLine() - if err != nil { - return str - } - - return str + fmt.Sprintf("\t%s: %s\n", frame.Name, source) -} - -// SourceLine gets the line of code (from File and Line) of the original source if possible -func (frame *StackFrame) SourceLine() (string, error) { - data, err := ioutil.ReadFile(frame.File) - - if err != nil { - return "", err - } - - lines := bytes.Split(data, []byte{'\n'}) - if frame.LineNumber <= 0 || frame.LineNumber >= len(lines) { - return "???", nil - } - // -1 because line-numbers are 1 based, but our array is 0 based - return string(bytes.Trim(lines[frame.LineNumber-1], " \t")), nil -} - -func packageAndName(fn *runtime.Func) (string, string) { - name := fn.Name() - pkg := "" - - // The name includes the path name to the package, which is unnecessary - // since the file name is already included. Plus, it has center dots. - // That is, we see - // runtime/debug.*T·ptrmethod - // and want - // *T.ptrmethod - // Since the package path might contains dots (e.g. code.google.com/...), - // we first remove the path prefix if there is one. - if lastslash := strings.LastIndex(name, "/"); lastslash >= 0 { - pkg += name[:lastslash] + "/" - name = name[lastslash+1:] - } - if period := strings.Index(name, "."); period >= 0 { - pkg += name[:period] - name = name[period+1:] - } - - name = strings.Replace(name, "·", ".", -1) - return pkg, name -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/event.go b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/event.go deleted file mode 100644 index 320c6154..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/event.go +++ /dev/null @@ -1,143 +0,0 @@ -package bugsnag - -import ( - "strings" - - "github.com/bugsnag/bugsnag-go/errors" -) - -// Context is the context of the error in Bugsnag. -// This can be passed to Notify, Recover or AutoNotify as rawData. -type Context struct { - String string -} - -// User represents the searchable user-data on Bugsnag. The Id is also used -// to determine the number of users affected by a bug. This can be -// passed to Notify, Recover or AutoNotify as rawData. -type User struct { - Id string `json:"id,omitempty"` - Name string `json:"name,omitempty"` - Email string `json:"email,omitempty"` -} - -// ErrorClass overrides the error class in Bugsnag. -// This struct enables you to group errors as you like. -type ErrorClass struct { - Name string -} - -// Sets the severity of the error on Bugsnag. These values can be -// passed to Notify, Recover or AutoNotify as rawData. -var ( - SeverityError = severity{"error"} - SeverityWarning = severity{"warning"} - SeverityInfo = severity{"info"} -) - -// The severity tag type, private so that people can only use Error,Warning,Info -type severity struct { - String string -} - -// The form of stacktrace that Bugsnag expects -type stackFrame struct { - Method string `json:"method"` - File string `json:"file"` - LineNumber int `json:"lineNumber"` - InProject bool `json:"inProject,omitempty"` -} - -// Event represents a payload of data that gets sent to Bugsnag. -// This is passed to each OnBeforeNotify hook. -type Event struct { - - // The original error that caused this event, not sent to Bugsnag. - Error *errors.Error - - // The rawData affecting this error, not sent to Bugsnag. - RawData []interface{} - - // The error class to be sent to Bugsnag. This defaults to the type name of the Error, for - // example *error.String - ErrorClass string - // The error message to be sent to Bugsnag. This defaults to the return value of Error.Error() - Message string - // The stacktrrace of the error to be sent to Bugsnag. - Stacktrace []stackFrame - - // The context to be sent to Bugsnag. This should be set to the part of the app that was running, - // e.g. for http requests, set it to the path. - Context string - // The severity of the error. Can be SeverityError, SeverityWarning or SeverityInfo. - Severity severity - // The grouping hash is used to override Bugsnag's grouping. Set this if you'd like all errors with - // the same grouping hash to group together in the dashboard. - GroupingHash string - - // User data to send to Bugsnag. This is searchable on the dashboard. - User *User - // Other MetaData to send to Bugsnag. Appears as a set of tabbed tables in the dashboard. - MetaData MetaData -} - -func newEvent(err *errors.Error, rawData []interface{}, notifier *Notifier) (*Event, *Configuration) { - - config := notifier.Config - event := &Event{ - Error: err, - RawData: append(notifier.RawData, rawData...), - - ErrorClass: err.TypeName(), - Message: err.Error(), - Stacktrace: make([]stackFrame, len(err.StackFrames())), - - Severity: SeverityWarning, - - MetaData: make(MetaData), - } - - for _, datum := range event.RawData { - switch datum := datum.(type) { - case severity: - event.Severity = datum - - case Context: - event.Context = datum.String - - case Configuration: - config = config.merge(&datum) - - case MetaData: - event.MetaData.Update(datum) - - case User: - event.User = &datum - - case ErrorClass: - event.ErrorClass = datum.Name - } - } - - for i, frame := range err.StackFrames() { - file := frame.File - inProject := config.isProjectPackage(frame.Package) - - // remove $GOROOT and $GOHOME from other frames - if idx := strings.Index(file, frame.Package); idx > -1 { - file = file[idx:] - } - if inProject { - file = config.stripProjectPackages(file) - } - - event.Stacktrace[i] = stackFrame{ - Method: frame.Name, - File: file, - LineNumber: frame.LineNumber, - InProject: inProject, - } - } - - return event, config -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/json_tags.go b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/json_tags.go deleted file mode 100644 index 45be38fa..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/json_tags.go +++ /dev/null @@ -1,43 +0,0 @@ -// The code is stripped from: -// http://golang.org/src/pkg/encoding/json/tags.go?m=text - -package bugsnag - -import ( - "strings" -) - -// tagOptions is the string following a comma in a struct field's "json" -// tag, or the empty string. It does not include the leading comma. -type tagOptions string - -// parseTag splits a struct field's json tag into its name and -// comma-separated options. -func parseTag(tag string) (string, tagOptions) { - if idx := strings.Index(tag, ","); idx != -1 { - return tag[:idx], tagOptions(tag[idx+1:]) - } - return tag, tagOptions("") -} - -// Contains reports whether a comma-separated list of options -// contains a particular substr flag. substr must be surrounded by a -// string boundary or commas. -func (o tagOptions) Contains(optionName string) bool { - if len(o) == 0 { - return false - } - s := string(o) - for s != "" { - var next string - i := strings.Index(s, ",") - if i >= 0 { - s, next = s[:i], s[i+1:] - } - if s == optionName { - return true - } - s = next - } - return false -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/metadata.go b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/metadata.go deleted file mode 100644 index 20628117..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/metadata.go +++ /dev/null @@ -1,189 +0,0 @@ -package bugsnag - -import ( - "fmt" - "reflect" - "strings" -) - -// MetaData is added to the Bugsnag dashboard in tabs. Each tab is -// a map of strings -> values. You can pass MetaData to Notify, Recover -// and AutoNotify as rawData. -type MetaData map[string]map[string]interface{} - -// Update the meta-data with more information. Tabs are merged together such -// that unique keys from both sides are preserved, and duplicate keys end up -// with the provided values. -func (meta MetaData) Update(other MetaData) { - for name, tab := range other { - - if meta[name] == nil { - meta[name] = make(map[string]interface{}) - } - - for key, value := range tab { - meta[name][key] = value - } - } -} - -// Add creates a tab of Bugsnag meta-data. -// If the tab doesn't yet exist it will be created. -// If the key already exists, it will be overwritten. -func (meta MetaData) Add(tab string, key string, value interface{}) { - if meta[tab] == nil { - meta[tab] = make(map[string]interface{}) - } - - meta[tab][key] = value -} - -// AddStruct creates a tab of Bugsnag meta-data. -// The struct will be converted to an Object using the -// reflect library so any private fields will not be exported. -// As a safety measure, if you pass a non-struct the value will be -// sent to Bugsnag under the "Extra data" tab. -func (meta MetaData) AddStruct(tab string, obj interface{}) { - val := sanitizer{}.Sanitize(obj) - content, ok := val.(map[string]interface{}) - if ok { - meta[tab] = content - } else { - // Wasn't a struct - meta.Add("Extra data", tab, obj) - } - -} - -// Remove any values from meta-data that have keys matching the filters, -// and any that are recursive data-structures -func (meta MetaData) sanitize(filters []string) interface{} { - return sanitizer{ - Filters: filters, - Seen: make([]interface{}, 0), - }.Sanitize(meta) - -} - -// The sanitizer is used to remove filtered params and recursion from meta-data. -type sanitizer struct { - Filters []string - Seen []interface{} -} - -func (s sanitizer) Sanitize(data interface{}) interface{} { - for _, s := range s.Seen { - // TODO: we don't need deep equal here, just type-ignoring equality - if reflect.DeepEqual(data, s) { - return "[RECURSION]" - } - } - - // Sanitizers are passed by value, so we can modify s and it only affects - // s.Seen for nested calls. - s.Seen = append(s.Seen, data) - - t := reflect.TypeOf(data) - v := reflect.ValueOf(data) - - if t == nil { - return "" - } - - switch t.Kind() { - case reflect.Bool, - reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, - reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr, - reflect.Float32, reflect.Float64: - return data - - case reflect.String: - return data - - case reflect.Interface, reflect.Ptr: - return s.Sanitize(v.Elem().Interface()) - - case reflect.Array, reflect.Slice: - ret := make([]interface{}, v.Len()) - for i := 0; i < v.Len(); i++ { - ret[i] = s.Sanitize(v.Index(i).Interface()) - } - return ret - - case reflect.Map: - return s.sanitizeMap(v) - - case reflect.Struct: - return s.sanitizeStruct(v, t) - - // Things JSON can't serialize: - // case t.Chan, t.Func, reflect.Complex64, reflect.Complex128, reflect.UnsafePointer: - default: - return "[" + t.String() + "]" - - } - -} - -func (s sanitizer) sanitizeMap(v reflect.Value) interface{} { - ret := make(map[string]interface{}) - - for _, key := range v.MapKeys() { - val := s.Sanitize(v.MapIndex(key).Interface()) - newKey := fmt.Sprintf("%v", key.Interface()) - - if s.shouldRedact(newKey) { - val = "[REDACTED]" - } - - ret[newKey] = val - } - - return ret -} - -func (s sanitizer) sanitizeStruct(v reflect.Value, t reflect.Type) interface{} { - ret := make(map[string]interface{}) - - for i := 0; i < v.NumField(); i++ { - - val := v.Field(i) - // Don't export private fields - if !val.CanInterface() { - continue - } - - name := t.Field(i).Name - var opts tagOptions - - // Parse JSON tags. Supports name and "omitempty" - if jsonTag := t.Field(i).Tag.Get("json"); len(jsonTag) != 0 { - name, opts = parseTag(jsonTag) - } - - if s.shouldRedact(name) { - ret[name] = "[REDACTED]" - } else { - sanitized := s.Sanitize(val.Interface()) - if str, ok := sanitized.(string); ok { - if !(opts.Contains("omitempty") && len(str) == 0) { - ret[name] = str - } - } else { - ret[name] = sanitized - } - - } - } - - return ret -} - -func (s sanitizer) shouldRedact(key string) bool { - for _, filter := range s.Filters { - if strings.Contains(strings.ToLower(filter), strings.ToLower(key)) { - return true - } - } - return false -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/middleware.go b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/middleware.go deleted file mode 100644 index c1c9f79d..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/middleware.go +++ /dev/null @@ -1,96 +0,0 @@ -package bugsnag - -import ( - "net/http" - "strings" -) - -type ( - beforeFunc func(*Event, *Configuration) error - - // MiddlewareStacks keep middleware in the correct order. They are - // called in reverse order, so if you add a new middleware it will - // be called before all existing middleware. - middlewareStack struct { - before []beforeFunc - } -) - -// AddMiddleware adds a new middleware to the outside of the existing ones, -// when the middlewareStack is Run it will be run before all middleware that -// have been added before. -func (stack *middlewareStack) OnBeforeNotify(middleware beforeFunc) { - stack.before = append(stack.before, middleware) -} - -// Run causes all the middleware to be run. If they all permit it the next callback -// will be called with all the middleware on the stack. -func (stack *middlewareStack) Run(event *Event, config *Configuration, next func() error) error { - // run all the before filters in reverse order - for i := range stack.before { - before := stack.before[len(stack.before)-i-1] - - err := stack.runBeforeFilter(before, event, config) - if err != nil { - return err - } - } - - return next() -} - -func (stack *middlewareStack) runBeforeFilter(f beforeFunc, event *Event, config *Configuration) error { - defer func() { - if err := recover(); err != nil { - config.logf("bugsnag/middleware: unexpected panic: %v", err) - } - }() - - return f(event, config) -} - -// catchMiddlewarePanic is used to log any panics that happen inside Middleware, -// we wouldn't want to not notify Bugsnag in this case. -func catchMiddlewarePanic(event *Event, config *Configuration, next func() error) { -} - -// httpRequestMiddleware is added OnBeforeNotify by default. It takes information -// from an http.Request passed in as rawData, and adds it to the Event. You can -// use this as a template for writing your own Middleware. -func httpRequestMiddleware(event *Event, config *Configuration) error { - for _, datum := range event.RawData { - if request, ok := datum.(*http.Request); ok { - proto := "http://" - if request.TLS != nil { - proto = "https://" - } - - event.MetaData.Update(MetaData{ - "Request": { - "RemoteAddr": request.RemoteAddr, - "Method": request.Method, - "Url": proto + request.Host + request.RequestURI, - "Params": request.URL.Query(), - }, - }) - - // Add headers as a separate tab. - event.MetaData.AddStruct("Headers", request.Header) - - // Default context to Path - if event.Context == "" { - event.Context = request.URL.Path - } - - // Default user.id to IP so that users-affected works. - if event.User == nil { - ip := request.RemoteAddr - if idx := strings.LastIndex(ip, ":"); idx != -1 { - ip = ip[:idx] - } - event.User = &User{Id: ip} - } - } - } - return nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/notifier.go b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/notifier.go deleted file mode 100644 index 009ec639..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/notifier.go +++ /dev/null @@ -1,102 +0,0 @@ -package bugsnag - -import ( - "fmt" - - "github.com/bugsnag/bugsnag-go/errors" -) - -// Notifier sends errors to Bugsnag. -type Notifier struct { - Config *Configuration - RawData []interface{} -} - -// New creates a new notifier. -// You can pass an instance of bugsnag.Configuration in rawData to change the configuration. -// Other values of rawData will be passed to Notify. -func New(rawData ...interface{}) *Notifier { - config := Config.clone() - for i, datum := range rawData { - if c, ok := datum.(Configuration); ok { - config.update(&c) - rawData[i] = nil - } - } - - return &Notifier{ - Config: config, - RawData: rawData, - } -} - -// Notify sends an error to Bugsnag. Any rawData you pass here will be sent to -// Bugsnag after being converted to JSON. e.g. bugsnag.SeverityError, bugsnag.Context, -// or bugsnag.MetaData. -func (notifier *Notifier) Notify(err error, rawData ...interface{}) (e error) { - event, config := newEvent(errors.New(err, 1), rawData, notifier) - - // Never block, start throwing away errors if we have too many. - e = middleware.Run(event, config, func() error { - config.logf("notifying bugsnag: %s", event.Message) - if config.notifyInReleaseStage() { - if config.Synchronous { - return (&payload{event, config}).deliver() - } - // Ensure that any errors are logged if they occur in a goroutine. - go func(event *Event, config *Configuration) { - err := (&payload{event, config}).deliver() - if err != nil { - config.logf("bugsnag.Notify: %v", err) - } - }(event, config) - - return nil - } - return fmt.Errorf("not notifying in %s", config.ReleaseStage) - }) - - if e != nil { - config.logf("bugsnag.Notify: %v", e) - } - return e -} - -// AutoNotify notifies Bugsnag of any panics, then repanics. -// It sends along any rawData that gets passed in. -// Usage: defer AutoNotify() -func (notifier *Notifier) AutoNotify(rawData ...interface{}) { - if err := recover(); err != nil { - rawData = notifier.addDefaultSeverity(rawData, SeverityError) - notifier.Notify(errors.New(err, 2), rawData...) - panic(err) - } -} - -// Recover logs any panics, then recovers. -// It sends along any rawData that gets passed in. -// Usage: defer Recover() -func (notifier *Notifier) Recover(rawData ...interface{}) { - if err := recover(); err != nil { - rawData = notifier.addDefaultSeverity(rawData, SeverityWarning) - notifier.Notify(errors.New(err, 2), rawData...) - } -} - -func (notifier *Notifier) dontPanic() { - if err := recover(); err != nil { - notifier.Config.logf("bugsnag/notifier.Notify: panic! %s", err) - } -} - -// Add a severity to raw data only if the default is not set. -func (notifier *Notifier) addDefaultSeverity(rawData []interface{}, s severity) []interface{} { - - for _, datum := range append(notifier.RawData, rawData...) { - if _, ok := datum.(severity); ok { - return rawData - } - } - - return append(rawData, s) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/panicwrap.go b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/panicwrap.go deleted file mode 100644 index d8bd6015..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/panicwrap.go +++ /dev/null @@ -1,27 +0,0 @@ -// +build !appengine - -package bugsnag - -import ( - "github.com/bugsnag/bugsnag-go/errors" - "github.com/bugsnag/panicwrap" -) - -// NOTE: this function does not return when you call it, instead it -// re-exec()s the current process with panic monitoring. -func defaultPanicHandler() { - defer defaultNotifier.dontPanic() - - err := panicwrap.BasicMonitor(func(output string) { - toNotify, err := errors.ParsePanic(output) - - if err != nil { - defaultNotifier.Config.logf("bugsnag.handleUncaughtPanic: %v", err) - } - Notify(toNotify, SeverityError, Configuration{Synchronous: true}) - }) - - if err != nil { - defaultNotifier.Config.logf("bugsnag.handleUncaughtPanic: %v", err) - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/payload.go b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/payload.go deleted file mode 100644 index a516a5d2..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/bugsnag-go/payload.go +++ /dev/null @@ -1,96 +0,0 @@ -package bugsnag - -import ( - "bytes" - "encoding/json" - "fmt" - "net/http" -) - -type payload struct { - *Event - *Configuration -} - -type hash map[string]interface{} - -func (p *payload) deliver() error { - - if len(p.APIKey) != 32 { - return fmt.Errorf("bugsnag/payload.deliver: invalid api key") - } - - buf, err := json.Marshal(p) - - if err != nil { - return fmt.Errorf("bugsnag/payload.deliver: %v", err) - } - - client := http.Client{ - Transport: p.Transport, - } - - resp, err := client.Post(p.Endpoint, "application/json", bytes.NewBuffer(buf)) - - if err != nil { - return fmt.Errorf("bugsnag/payload.deliver: %v", err) - } - defer resp.Body.Close() - - if resp.StatusCode != 200 { - return fmt.Errorf("bugsnag/payload.deliver: Got HTTP %s\n", resp.Status) - } - - return nil -} - -func (p *payload) MarshalJSON() ([]byte, error) { - - data := hash{ - "apiKey": p.APIKey, - - "notifier": hash{ - "name": "Bugsnag Go", - "url": "https://github.com/bugsnag/bugsnag-go", - "version": VERSION, - }, - - "events": []hash{ - { - "payloadVersion": "2", - "exceptions": []hash{ - { - "errorClass": p.ErrorClass, - "message": p.Message, - "stacktrace": p.Stacktrace, - }, - }, - "severity": p.Severity.String, - "app": hash{ - "releaseStage": p.ReleaseStage, - }, - "user": p.User, - "metaData": p.MetaData.sanitize(p.ParamsFilters), - }, - }, - } - - event := data["events"].([]hash)[0] - - if p.Context != "" { - event["context"] = p.Context - } - if p.GroupingHash != "" { - event["groupingHash"] = p.GroupingHash - } - if p.Hostname != "" { - event["device"] = hash{ - "hostname": p.Hostname, - } - } - if p.AppVersion != "" { - event["app"].(hash)["version"] = p.AppVersion - } - return json.Marshal(data) - -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/osext/LICENSE b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/osext/LICENSE deleted file mode 100644 index 18527a28..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/osext/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2012 Daniel Theophanes - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any damages -arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it -freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - - 3. This notice may not be removed or altered from any source - distribution. diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/osext/osext.go b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/osext/osext.go deleted file mode 100644 index 37efbb22..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/osext/osext.go +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Extensions to the standard "os" package. -package osext - -import "path/filepath" - -// Executable returns an absolute path that can be used to -// re-invoke the current program. -// It may not be valid after the current program exits. -func Executable() (string, error) { - p, err := executable() - return filepath.Clean(p), err -} - -// Returns same path as Executable, returns just the folder -// path. Excludes the executable name. -func ExecutableFolder() (string, error) { - p, err := Executable() - if err != nil { - return "", err - } - folder, _ := filepath.Split(p) - return folder, nil -} - -// Depricated. Same as Executable(). -func GetExePath() (exePath string, err error) { - return Executable() -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/osext/osext_plan9.go b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/osext/osext_plan9.go deleted file mode 100644 index e88c1e09..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/osext/osext_plan9.go +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package osext - -import "syscall" - -func executable() (string, error) { - f, err := Open("/proc/" + itoa(Getpid()) + "/text") - if err != nil { - return "", err - } - defer f.Close() - return syscall.Fd2path(int(f.Fd())) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/osext/osext_procfs.go b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/osext/osext_procfs.go deleted file mode 100644 index 546fec91..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/osext/osext_procfs.go +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build linux netbsd openbsd - -package osext - -import ( - "errors" - "os" - "runtime" -) - -func executable() (string, error) { - switch runtime.GOOS { - case "linux": - return os.Readlink("/proc/self/exe") - case "netbsd": - return os.Readlink("/proc/curproc/exe") - case "openbsd": - return os.Readlink("/proc/curproc/file") - } - return "", errors.New("ExecPath not implemented for " + runtime.GOOS) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/osext/osext_sysctl.go b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/osext/osext_sysctl.go deleted file mode 100644 index d7646462..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/osext/osext_sysctl.go +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build darwin freebsd - -package osext - -import ( - "os" - "runtime" - "syscall" - "unsafe" -) - -var startUpcwd, getwdError = os.Getwd() - -func executable() (string, error) { - var mib [4]int32 - switch runtime.GOOS { - case "freebsd": - mib = [4]int32{1 /* CTL_KERN */, 14 /* KERN_PROC */, 12 /* KERN_PROC_PATHNAME */, -1} - case "darwin": - mib = [4]int32{1 /* CTL_KERN */, 38 /* KERN_PROCARGS */, int32(os.Getpid()), -1} - } - - n := uintptr(0) - // get length - _, _, err := syscall.Syscall6(syscall.SYS___SYSCTL, uintptr(unsafe.Pointer(&mib[0])), 4, 0, uintptr(unsafe.Pointer(&n)), 0, 0) - if err != 0 { - return "", err - } - if n == 0 { // shouldn't happen - return "", nil - } - buf := make([]byte, n) - _, _, err = syscall.Syscall6(syscall.SYS___SYSCTL, uintptr(unsafe.Pointer(&mib[0])), 4, uintptr(unsafe.Pointer(&buf[0])), uintptr(unsafe.Pointer(&n)), 0, 0) - if err != 0 { - return "", err - } - if n == 0 { // shouldn't happen - return "", nil - } - for i, v := range buf { - if v == 0 { - buf = buf[:i] - break - } - } - if buf[0] != '/' { - if getwdError != nil { - return string(buf), getwdError - } else { - if buf[0] == '.' { - buf = buf[1:] - } - if startUpcwd[len(startUpcwd)-1] != '/' { - return startUpcwd + "/" + string(buf), nil - } - return startUpcwd + string(buf), nil - } - } - return string(buf), nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/osext/osext_windows.go b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/osext/osext_windows.go deleted file mode 100644 index 72d282cf..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/osext/osext_windows.go +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package osext - -import ( - "syscall" - "unicode/utf16" - "unsafe" -) - -var ( - kernel = syscall.MustLoadDLL("kernel32.dll") - getModuleFileNameProc = kernel.MustFindProc("GetModuleFileNameW") -) - -// GetModuleFileName() with hModule = NULL -func executable() (exePath string, err error) { - return getModuleFileName() -} - -func getModuleFileName() (string, error) { - var n uint32 - b := make([]uint16, syscall.MAX_PATH) - size := uint32(len(b)) - - r0, _, e1 := getModuleFileNameProc.Call(0, uintptr(unsafe.Pointer(&b[0])), uintptr(size)) - n = uint32(r0) - if n == 0 { - return "", e1 - } - return string(utf16.Decode(b[0:n])), nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/panicwrap/LICENSE b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/panicwrap/LICENSE deleted file mode 100644 index f9c841a5..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/panicwrap/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013 Mitchell Hashimoto - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/panicwrap/README.md b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/panicwrap/README.md deleted file mode 100644 index d0a59675..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/panicwrap/README.md +++ /dev/null @@ -1,101 +0,0 @@ -# panicwrap - -panicwrap is a Go library that re-executes a Go binary and monitors stderr -output from the binary for a panic. When it find a panic, it executes a -user-defined handler function. Stdout, stderr, stdin, signals, and exit -codes continue to work as normal, making the existence of panicwrap mostly -invisble to the end user until a panic actually occurs. - -Since a panic is truly a bug in the program meant to crash the runtime, -globally catching panics within Go applications is not supposed to be possible. -Despite this, it is often useful to have a way to know when panics occur. -panicwrap allows you to do something with these panics, such as writing them -to a file, so that you can track when panics occur. - -panicwrap is ***not a panic recovery system***. Panics indicate serious -problems with your application and _should_ crash the runtime. panicwrap -is just meant as a way to monitor for panics. If you still think this is -the worst idea ever, read the section below on why. - -## Features - -* **SIMPLE!** -* Works with all Go applications on all platforms Go supports -* Custom behavior when a panic occurs -* Stdout, stderr, stdin, exit codes, and signals continue to work as - expected. - -## Usage - -Using panicwrap is simple. It behaves a lot like `fork`, if you know -how that works. A basic example is shown below. - -Because it would be sad to panic while capturing a panic, it is recommended -that the handler functions for panicwrap remain relatively simple and well -tested. panicwrap itself contains many tests. - -```go -package main - -import ( - "fmt" - "github.com/mitchellh/panicwrap" - "os" -) - -func main() { - exitStatus, err := panicwrap.BasicWrap(panicHandler) - if err != nil { - // Something went wrong setting up the panic wrapper. Unlikely, - // but possible. - panic(err) - } - - // If exitStatus >= 0, then we're the parent process and the panicwrap - // re-executed ourselves and completed. Just exit with the proper status. - if exitStatus >= 0 { - os.Exit(exitStatus) - } - - // Otherwise, exitStatus < 0 means we're the child. Continue executing as - // normal... - - // Let's say we panic - panic("oh shucks") -} - -func panicHandler(output string) { - // output contains the full output (including stack traces) of the - // panic. Put it in a file or something. - fmt.Printf("The child panicked:\n\n%s\n", output) - os.Exit(1) -} -``` - -## How Does it Work? - -panicwrap works by re-executing the running program (retaining arguments, -environmental variables, etc.) and monitoring the stderr of the program. -Since Go always outputs panics in a predictable way with a predictable -exit code, panicwrap is able to reliably detect panics and allow the parent -process to handle them. - -## WHY?! Panics should CRASH! - -Yes, panics _should_ crash. They are 100% always indicative of bugs. -However, in some cases, such as user-facing programs (programs like -[Packer](http://github.com/mitchellh/packer) or -[Docker](http://github.com/dotcloud/docker)), it is up to the user to -report such panics. This is unreliable, at best, and it would be better if the -program could have a way to automatically report panics. panicwrap provides -a way to do this. - -For backend applications, it is easier to detect crashes (since the application -exits). However, it is still nice sometimes to more intelligently log -panics in some way. For example, at [HashiCorp](http://www.hashicorp.com), -we use panicwrap to log panics to timestamped files with some additional -data (configuration settings at the time, environmental variables, etc.) - -The goal of panicwrap is _not_ to hide panics. It is instead to provide -a clean mechanism for handling them before bubbling the up to the user -and ultimately crashing. diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/panicwrap/monitor.go b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/panicwrap/monitor.go deleted file mode 100644 index 1c64a546..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/panicwrap/monitor.go +++ /dev/null @@ -1,63 +0,0 @@ -// +build !windows - -package panicwrap - -import ( - "github.com/bugsnag/osext" - "os" - "os/exec" - "syscall" -) - -func monitor(c *WrapConfig) (int, error) { - - // If we're the child process, absorb panics. - if Wrapped(c) { - panicCh := make(chan string) - - go trackPanic(os.Stdin, os.Stderr, c.DetectDuration, panicCh) - - // Wait on the panic data - panicTxt := <-panicCh - if panicTxt != "" { - if !c.HidePanic { - os.Stderr.Write([]byte(panicTxt)) - } - - c.Handler(panicTxt) - } - - os.Exit(0) - } - - exePath, err := osext.Executable() - if err != nil { - return -1, err - } - cmd := exec.Command(exePath, os.Args[1:]...) - - read, write, err := os.Pipe() - if err != nil { - return -1, err - } - - cmd.Stdin = read - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - cmd.Env = append(os.Environ(), c.CookieKey+"="+c.CookieValue) - - if err != nil { - return -1, err - } - err = cmd.Start() - if err != nil { - return -1, err - } - - err = syscall.Dup2(int(write.Fd()), int(os.Stderr.Fd())) - if err != nil { - return -1, err - } - - return -1, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/panicwrap/monitor_windows.go b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/panicwrap/monitor_windows.go deleted file mode 100644 index d07a6921..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/panicwrap/monitor_windows.go +++ /dev/null @@ -1,7 +0,0 @@ -package panicwrap - -import "fmt" - -func monitor(c *WrapConfig) (int, error) { - return -1, fmt.Errorf("Monitor is not supported on windows") -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/panicwrap/panicwrap.go b/vendor/github.com/docker/machine/vendor/github.com/bugsnag/panicwrap/panicwrap.go deleted file mode 100644 index f9ea3e3e..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/bugsnag/panicwrap/panicwrap.go +++ /dev/null @@ -1,339 +0,0 @@ -// The panicwrap package provides functions for capturing and handling -// panics in your application. It does this by re-executing the running -// application and monitoring stderr for any panics. At the same time, -// stdout/stderr/etc. are set to the same values so that data is shuttled -// through properly, making the existence of panicwrap mostly transparent. -// -// Panics are only detected when the subprocess exits with a non-zero -// exit status, since this is the only time panics are real. Otherwise, -// "panic-like" output is ignored. -package panicwrap - -import ( - "bytes" - "errors" - "github.com/bugsnag/osext" - "io" - "os" - "os/exec" - "os/signal" - "runtime" - "syscall" - "time" -) - -const ( - DEFAULT_COOKIE_KEY = "cccf35992f8f3cd8d1d28f0109dd953e26664531" - DEFAULT_COOKIE_VAL = "7c28215aca87789f95b406b8dd91aa5198406750" -) - -// HandlerFunc is the type called when a panic is detected. -type HandlerFunc func(string) - -// WrapConfig is the configuration for panicwrap when wrapping an existing -// binary. To get started, in general, you only need the BasicWrap function -// that will set this up for you. However, for more customizability, -// WrapConfig and Wrap can be used. -type WrapConfig struct { - // Handler is the function called when a panic occurs. - Handler HandlerFunc - - // The cookie key and value are used within environmental variables - // to tell the child process that it is already executing so that - // wrap doesn't re-wrap itself. - CookieKey string - CookieValue string - - // If true, the panic will not be mirrored to the configured writer - // and will instead ONLY go to the handler. This lets you effectively - // hide panics from the end user. This is not recommended because if - // your handler fails, the panic is effectively lost. - HidePanic bool - - // If true, panicwrap will boot a monitor sub-process and let the parent - // run the app. This mode is useful for processes run under supervisors - // like runit as signals get sent to the correct codebase. This is not - // supported when GOOS=windows, and ignores c.Stderr and c.Stdout. - Monitor bool - - // The amount of time that a process must exit within after detecting - // a panic header for panicwrap to assume it is a panic. Defaults to - // 300 milliseconds. - DetectDuration time.Duration - - // The writer to send the stderr to. If this is nil, then it defaults - // to os.Stderr. - Writer io.Writer - - // The writer to send stdout to. If this is nil, then it defaults to - // os.Stdout. - Stdout io.Writer -} - -// BasicWrap calls Wrap with the given handler function, using defaults -// for everything else. See Wrap and WrapConfig for more information on -// functionality and return values. -func BasicWrap(f HandlerFunc) (int, error) { - return Wrap(&WrapConfig{ - Handler: f, - }) -} - -// BasicMonitor calls Wrap with Monitor set to true on supported platforms. -// It forks your program and runs it again form the start. In one process -// BasicMonitor never returns, it just listens on stderr of the other process, -// and calls your handler when a panic is seen. In the other it either returns -// nil to indicate that the panic monitoring is enabled, or an error to indicate -// that something else went wrong. -func BasicMonitor(f HandlerFunc) error { - exitStatus, err := Wrap(&WrapConfig{ - Handler: f, - Monitor: runtime.GOOS != "windows", - }) - - if err != nil { - return err - } - - if exitStatus >= 0 { - os.Exit(exitStatus) - } - - return nil -} - -// Wrap wraps the current executable in a handler to catch panics. It -// returns an error if there was an error during the wrapping process. -// If the error is nil, then the int result indicates the exit status of the -// child process. If the exit status is -1, then this is the child process, -// and execution should continue as normal. Otherwise, this is the parent -// process and the child successfully ran already, and you should exit the -// process with the returned exit status. -// -// This function should be called very very early in your program's execution. -// Ideally, this runs as the first line of code of main. -// -// Once this is called, the given WrapConfig shouldn't be modified or used -// any further. -func Wrap(c *WrapConfig) (int, error) { - if c.Handler == nil { - return -1, errors.New("Handler must be set") - } - - if c.DetectDuration == 0 { - c.DetectDuration = 300 * time.Millisecond - } - - if c.Writer == nil { - c.Writer = os.Stderr - } - - if c.Monitor { - return monitor(c) - } else { - return wrap(c) - } -} - -func wrap(c *WrapConfig) (int, error) { - - // If we're already wrapped, exit out. - if Wrapped(c) { - return -1, nil - } - - // Get the path to our current executable - exePath, err := osext.Executable() - if err != nil { - return -1, err - } - - // Pipe the stderr so we can read all the data as we look for panics - stderr_r, stderr_w := io.Pipe() - - // doneCh is closed when we're done, signaling any other goroutines - // to end immediately. - doneCh := make(chan struct{}) - - // panicCh is the channel on which the panic text will actually be - // sent. - panicCh := make(chan string) - - // On close, make sure to finish off the copying of data to stderr - defer func() { - defer close(doneCh) - stderr_w.Close() - <-panicCh - }() - - // Start the goroutine that will watch stderr for any panics - go trackPanic(stderr_r, c.Writer, c.DetectDuration, panicCh) - - // Create the writer for stdout that we're going to use - var stdout_w io.Writer = os.Stdout - if c.Stdout != nil { - stdout_w = c.Stdout - } - - // Build a subcommand to re-execute ourselves. We make sure to - // set the environmental variable to include our cookie. We also - // set stdin/stdout to match the config. Finally, we pipe stderr - // through ourselves in order to watch for panics. - cmd := exec.Command(exePath, os.Args[1:]...) - cmd.Env = append(os.Environ(), c.CookieKey+"="+c.CookieValue) - cmd.Stdin = os.Stdin - cmd.Stdout = stdout_w - cmd.Stderr = stderr_w - if err := cmd.Start(); err != nil { - return 1, err - } - - // Listen to signals and capture them forever. We allow the child - // process to handle them in some way. - sigCh := make(chan os.Signal) - signal.Notify(sigCh, os.Interrupt) - go func() { - defer signal.Stop(sigCh) - for { - select { - case <-doneCh: - return - case <-sigCh: - } - } - }() - - if err := cmd.Wait(); err != nil { - exitErr, ok := err.(*exec.ExitError) - if !ok { - // This is some other kind of subprocessing error. - return 1, err - } - - exitStatus := 1 - if status, ok := exitErr.Sys().(syscall.WaitStatus); ok { - exitStatus = status.ExitStatus() - } - - // Close the writer end so that the tracker goroutine ends at some point - stderr_w.Close() - - // Wait on the panic data - panicTxt := <-panicCh - if panicTxt != "" { - if !c.HidePanic { - c.Writer.Write([]byte(panicTxt)) - } - - c.Handler(panicTxt) - } - - return exitStatus, nil - } - - return 0, nil -} - -// Wrapped checks if we're already wrapped according to the configuration -// given. -// -// Wrapped is very cheap and can be used early to short-circuit some pre-wrap -// logic your application may have. -func Wrapped(c *WrapConfig) bool { - if c.CookieKey == "" { - c.CookieKey = DEFAULT_COOKIE_KEY - } - - if c.CookieValue == "" { - c.CookieValue = DEFAULT_COOKIE_VAL - } - - // If the cookie key/value match our environment, then we are the - // child, so just exit now and tell the caller that we're the child - return os.Getenv(c.CookieKey) == c.CookieValue -} - -// trackPanic monitors the given reader for a panic. If a panic is detected, -// it is outputted on the result channel. This will close the channel once -// it is complete. -func trackPanic(r io.Reader, w io.Writer, dur time.Duration, result chan<- string) { - defer close(result) - - var panicTimer <-chan time.Time - panicBuf := new(bytes.Buffer) - panicHeader := []byte("panic:") - - tempBuf := make([]byte, 2048) - for { - var buf []byte - var n int - - if panicTimer == nil && panicBuf.Len() > 0 { - // We're not tracking a panic but the buffer length is - // greater than 0. We need to clear out that buffer, but - // look for another panic along the way. - - // First, remove the previous panic header so we don't loop - w.Write(panicBuf.Next(len(panicHeader))) - - // Next, assume that this is our new buffer to inspect - n = panicBuf.Len() - buf = make([]byte, n) - copy(buf, panicBuf.Bytes()) - panicBuf.Reset() - } else { - var err error - buf = tempBuf - n, err = r.Read(buf) - if n <= 0 && err == io.EOF { - if panicBuf.Len() > 0 { - // We were tracking a panic, assume it was a panic - // and return that as the result. - result <- panicBuf.String() - } - - return - } - } - - if panicTimer != nil { - // We're tracking what we think is a panic right now. - // If the timer ended, then it is not a panic. - isPanic := true - select { - case <-panicTimer: - isPanic = false - default: - } - - // No matter what, buffer the text some more. - panicBuf.Write(buf[0:n]) - - if !isPanic { - // It isn't a panic, stop tracking. Clean-up will happen - // on the next iteration. - panicTimer = nil - } - - continue - } - - flushIdx := n - idx := bytes.Index(buf[0:n], panicHeader) - if idx >= 0 { - flushIdx = idx - } - - // Flush to stderr what isn't a panic - w.Write(buf[0:flushIdx]) - - if idx < 0 { - // Not a panic so just continue along - continue - } - - // We have a panic header. Write we assume is a panic os far. - panicBuf.Write(buf[idx:n]) - panicTimer = time.After(dur) - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/.gitignore b/vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/.gitignore deleted file mode 100644 index 00268614..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/.gitignore +++ /dev/null @@ -1,22 +0,0 @@ -# Compiled Object files, Static and Dynamic libs (Shared Objects) -*.o -*.a -*.so - -# Folders -_obj -_test - -# Architecture specific extensions/prefixes -*.[568vq] -[568vq].out - -*.cgo1.go -*.cgo2.c -_cgo_defun.c -_cgo_gotypes.go -_cgo_export.* - -_testmain.go - -*.exe diff --git a/vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/.travis.yml b/vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/.travis.yml deleted file mode 100644 index ce9cb623..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/.travis.yml +++ /dev/null @@ -1,2 +0,0 @@ -language: go -go: 1.3.3 diff --git a/vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/LICENSE b/vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/LICENSE deleted file mode 100644 index 89b81799..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Cenk Altı - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/README.md b/vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/README.md deleted file mode 100644 index 8e2612e6..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/README.md +++ /dev/null @@ -1,69 +0,0 @@ -# backoff - -[![GoDoc](https://godoc.org/github.com/cenkalti/backoff?status.png)](https://godoc.org/github.com/cenkalti/backoff) -[![Build Status](https://travis-ci.org/cenkalti/backoff.png)](https://travis-ci.org/cenkalti/backoff) - -This is a Go port of the exponential backoff algorithm from -[google-http-java-client](https://code.google.com/p/google-http-java-client/wiki/ExponentialBackoff). - -[Exponential backoff](http://en.wikipedia.org/wiki/Exponential_backoff) -is an algorithm that uses feedback to multiplicatively decrease the rate of some process, -in order to gradually find an acceptable rate. -The retries exponentially increase and stop increasing when a certain threshold is met. - - - - -## Install - -```bash -go get github.com/cenkalti/backoff -``` - -## Example - -Simple retry helper that uses exponential back-off algorithm: - -```go -operation := func() error { - // An operation that might fail -} - -err := backoff.Retry(operation, backoff.NewExponentialBackOff()) -if err != nil { - // handle error -} - -// operation is successfull -``` - -Ticker example: - -```go -operation := func() error { - // An operation that may fail -} - -b := backoff.NewExponentialBackOff() -ticker := backoff.NewTicker(b) - -var err error - -// Ticks will continue to arrive when the previous operation is still running, -// so operations that take a while to fail could run in quick succession. -for t = range ticker.C { - if err = operation(); err != nil { - log.Println(err, "will retry...") - continue - } - - ticker.Stop() - break -} - -if err != nil { - // Operation has failed. -} - -// Operation is successfull. -``` diff --git a/vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/backoff.go b/vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/backoff.go deleted file mode 100644 index 25870d2f..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/backoff.go +++ /dev/null @@ -1,56 +0,0 @@ -// Package backoff implements backoff algorithms for retrying operations. -// -// Also has a Retry() helper for retrying operations that may fail. -package backoff - -import "time" - -// Back-off policy when retrying an operation. -type BackOff interface { - // Gets the duration to wait before retrying the operation or - // backoff.Stop to indicate that no retries should be made. - // - // Example usage: - // - // duration := backoff.NextBackOff(); - // if (duration == backoff.Stop) { - // // do not retry operation - // } else { - // // sleep for duration and retry operation - // } - // - NextBackOff() time.Duration - - // Reset to initial state. - Reset() -} - -// Indicates that no more retries should be made for use in NextBackOff(). -const Stop time.Duration = -1 - -// ZeroBackOff is a fixed back-off policy whose back-off time is always zero, -// meaning that the operation is retried immediately without waiting. -type ZeroBackOff struct{} - -func (b *ZeroBackOff) Reset() {} - -func (b *ZeroBackOff) NextBackOff() time.Duration { return 0 } - -// StopBackOff is a fixed back-off policy that always returns backoff.Stop for -// NextBackOff(), meaning that the operation should not be retried. -type StopBackOff struct{} - -func (b *StopBackOff) Reset() {} - -func (b *StopBackOff) NextBackOff() time.Duration { return Stop } - -type ConstantBackOff struct { - Interval time.Duration -} - -func (b *ConstantBackOff) Reset() {} -func (b *ConstantBackOff) NextBackOff() time.Duration { return b.Interval } - -func NewConstantBackOff(d time.Duration) *ConstantBackOff { - return &ConstantBackOff{Interval: d} -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/exponential.go b/vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/exponential.go deleted file mode 100644 index e81e9c67..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/exponential.go +++ /dev/null @@ -1,141 +0,0 @@ -package backoff - -import ( - "math/rand" - "time" -) - -/* -ExponentialBackOff is an implementation of BackOff that increases the back off -period for each retry attempt using a randomization function that grows exponentially. - -NextBackOff() is calculated using the following formula: - - randomized_interval = - retry_interval * (random value in range [1 - randomization_factor, 1 + randomization_factor]) - -In other words NextBackOff() will range between the randomization factor -percentage below and above the retry interval. For example, using 2 seconds as the base retry -interval and 0.5 as the randomization factor, the actual back off period used in the next retry -attempt will be between 1 and 3 seconds. - -Note: max_interval caps the retry_interval and not the randomized_interval. - -If the time elapsed since an ExponentialBackOff instance is created goes past the -max_elapsed_time then the method NextBackOff() starts returning backoff.Stop. -The elapsed time can be reset by calling Reset(). - -Example: The default retry_interval is .5 seconds, default randomization_factor is 0.5, default -multiplier is 1.5 and the default max_interval is 1 minute. For 10 tries the sequence will be -(values in seconds) and assuming we go over the max_elapsed_time on the 10th try: - - request# retry_interval randomized_interval - - 1 0.5 [0.25, 0.75] - 2 0.75 [0.375, 1.125] - 3 1.125 [0.562, 1.687] - 4 1.687 [0.8435, 2.53] - 5 2.53 [1.265, 3.795] - 6 3.795 [1.897, 5.692] - 7 5.692 [2.846, 8.538] - 8 8.538 [4.269, 12.807] - 9 12.807 [6.403, 19.210] - 10 19.210 backoff.Stop - -Implementation is not thread-safe. -*/ -type ExponentialBackOff struct { - InitialInterval time.Duration - RandomizationFactor float64 - Multiplier float64 - MaxInterval time.Duration - // After MaxElapsedTime the ExponentialBackOff stops. - // It never stops if MaxElapsedTime == 0. - MaxElapsedTime time.Duration - Clock Clock - - currentInterval time.Duration - startTime time.Time -} - -// Clock is an interface that returns current time for BackOff. -type Clock interface { - Now() time.Time -} - -// Default values for ExponentialBackOff. -const ( - DefaultInitialInterval = 500 * time.Millisecond - DefaultRandomizationFactor = 0.5 - DefaultMultiplier = 1.5 - DefaultMaxInterval = 60 * time.Second - DefaultMaxElapsedTime = 15 * time.Minute -) - -// NewExponentialBackOff creates an instance of ExponentialBackOff using default values. -func NewExponentialBackOff() *ExponentialBackOff { - return &ExponentialBackOff{ - InitialInterval: DefaultInitialInterval, - RandomizationFactor: DefaultRandomizationFactor, - Multiplier: DefaultMultiplier, - MaxInterval: DefaultMaxInterval, - MaxElapsedTime: DefaultMaxElapsedTime, - Clock: SystemClock, - } -} - -type systemClock struct{} - -func (t systemClock) Now() time.Time { - return time.Now() -} - -// SystemClock implements Clock interface that uses time.Now(). -var SystemClock = systemClock{} - -// Reset the interval back to the initial retry interval and restarts the timer. -func (b *ExponentialBackOff) Reset() { - b.currentInterval = b.InitialInterval - b.startTime = b.Clock.Now() -} - -// NextBackOff calculates the next back off interval using the formula: -// randomized_interval = retry_interval +/- (randomization_factor * retry_interval) -func (b *ExponentialBackOff) NextBackOff() time.Duration { - // Make sure we have not gone over the maximum elapsed time. - if b.MaxElapsedTime != 0 && b.GetElapsedTime() > b.MaxElapsedTime { - return Stop - } - defer b.incrementCurrentInterval() - return getRandomValueFromInterval(b.RandomizationFactor, rand.Float64(), b.currentInterval) -} - -// GetElapsedTime returns the elapsed time since an ExponentialBackOff instance -// is created and is reset when Reset() is called. -// -// The elapsed time is computed using time.Now().UnixNano(). -func (b *ExponentialBackOff) GetElapsedTime() time.Duration { - return b.Clock.Now().Sub(b.startTime) -} - -// Increments the current interval by multiplying it with the multiplier. -func (b *ExponentialBackOff) incrementCurrentInterval() { - // Check for overflow, if overflow is detected set the current interval to the max interval. - if float64(b.currentInterval) >= float64(b.MaxInterval)/b.Multiplier { - b.currentInterval = b.MaxInterval - } else { - b.currentInterval = time.Duration(float64(b.currentInterval) * b.Multiplier) - } -} - -// Returns a random value from the interval: -// [randomizationFactor * currentInterval, randomizationFactor * currentInterval]. -func getRandomValueFromInterval(randomizationFactor, random float64, currentInterval time.Duration) time.Duration { - var delta = randomizationFactor * float64(currentInterval) - var minInterval = float64(currentInterval) - delta - var maxInterval = float64(currentInterval) + delta - // Get a random value from the range [minInterval, maxInterval]. - // The formula used below has a +1 because if the minInterval is 1 and the maxInterval is 3 then - // we want a 33% chance for selecting either 1, 2 or 3. - return time.Duration(minInterval + (random * (maxInterval - minInterval + 1))) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/retry.go b/vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/retry.go deleted file mode 100644 index 80c54776..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/retry.go +++ /dev/null @@ -1,47 +0,0 @@ -package backoff - -import "time" - -// Retry the function f until it does not return error or BackOff stops. -// f is guaranteed to be run at least once. -// It is the caller's responsibility to reset b after Retry returns. -// -// Retry sleeps the goroutine for the duration returned by BackOff after a -// failed operation returns. -// -// Usage: -// operation := func() error { -// // An operation that may fail -// } -// -// err := backoff.Retry(operation, backoff.NewExponentialBackOff()) -// if err != nil { -// // Operation has failed. -// } -// -// // Operation is successfull. -// -func Retry(f func() error, b BackOff) error { return RetryNotify(f, b, nil) } - -// RetryNotify calls notify function with the error and wait duration for each failed attempt before sleep. -func RetryNotify(f func() error, b BackOff, notify func(err error, wait time.Duration)) error { - var err error - var next time.Duration - - b.Reset() - for { - if err = f(); err == nil { - return nil - } - - if next = b.NextBackOff(); next == Stop { - return err - } - - if notify != nil { - notify(err, next) - } - - time.Sleep(next) - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/ticker.go b/vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/ticker.go deleted file mode 100644 index 17ace566..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/cenkalti/backoff/ticker.go +++ /dev/null @@ -1,105 +0,0 @@ -package backoff - -import ( - "runtime" - "sync" - "time" -) - -// Ticker holds a channel that delivers `ticks' of a clock at times reported by a BackOff. -// -// Ticks will continue to arrive when the previous operation is still running, -// so operations that take a while to fail could run in quick succession. -// -// Usage: -// operation := func() error { -// // An operation that may fail -// } -// -// b := backoff.NewExponentialBackOff() -// ticker := backoff.NewTicker(b) -// -// var err error -// for _ = range ticker.C { -// if err = operation(); err != nil { -// log.Println(err, "will retry...") -// continue -// } -// -// ticker.Stop() -// break -// } -// -// if err != nil { -// // Operation has failed. -// } -// -// // Operation is successfull. -// -type Ticker struct { - C <-chan time.Time - c chan time.Time - b BackOff - stop chan struct{} - stopOnce sync.Once -} - -// NewTicker returns a new Ticker containing a channel that will send the time at times -// specified by the BackOff argument. Ticker is guaranteed to tick at least once. -// The channel is closed when Stop method is called or BackOff stops. -func NewTicker(b BackOff) *Ticker { - c := make(chan time.Time) - t := &Ticker{ - C: c, - c: c, - b: b, - stop: make(chan struct{}), - } - go t.run() - runtime.SetFinalizer(t, (*Ticker).Stop) - return t -} - -// Stop turns off a ticker. After Stop, no more ticks will be sent. -func (t *Ticker) Stop() { - t.stopOnce.Do(func() { close(t.stop) }) -} - -func (t *Ticker) run() { - c := t.c - defer close(c) - t.b.Reset() - - // Ticker is guaranteed to tick at least once. - afterC := t.send(time.Now()) - - for { - if afterC == nil { - return - } - - select { - case tick := <-afterC: - afterC = t.send(tick) - case <-t.stop: - t.c = nil // Prevent future ticks from being sent to the channel. - return - } - } -} - -func (t *Ticker) send(tick time.Time) <-chan time.Time { - select { - case t.c <- tick: - case <-t.stop: - return nil - } - - next := t.b.NextBackOff() - if next == Stop { - t.Stop() - return nil - } - - return time.After(next) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/.travis.yml b/vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/.travis.yml deleted file mode 100644 index 87ba52f9..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/.travis.yml +++ /dev/null @@ -1,19 +0,0 @@ -language: go -sudo: false - -go: -- 1.0.3 -- 1.1.2 -- 1.2.2 -- 1.3.3 -- 1.4.2 -- 1.5.1 -- tip - -matrix: - allow_failures: - - go: tip - -script: -- go vet ./... -- go test -v ./... diff --git a/vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/LICENSE b/vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/LICENSE deleted file mode 100644 index 5515ccfb..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (C) 2013 Jeremy Saenz -All Rights Reserved. - -MIT LICENSE - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/README.md b/vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/README.md deleted file mode 100644 index 26a18386..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/README.md +++ /dev/null @@ -1,341 +0,0 @@ -[![Coverage](http://gocover.io/_badge/github.com/codegangsta/cli?0)](http://gocover.io/github.com/codegangsta/cli) -[![Build Status](https://travis-ci.org/codegangsta/cli.png?branch=master)](https://travis-ci.org/codegangsta/cli) -[![GoDoc](https://godoc.org/github.com/codegangsta/cli?status.svg)](https://godoc.org/github.com/codegangsta/cli) - -# cli.go -`cli.go` is simple, fast, and fun package for building command line apps in Go. The goal is to enable developers to write fast and distributable command line applications in an expressive way. - -## Overview -Command line apps are usually so tiny that there is absolutely no reason why your code should *not* be self-documenting. Things like generating help text and parsing command flags/options should not hinder productivity when writing a command line app. - -**This is where `cli.go` comes into play.** `cli.go` makes command line programming fun, organized, and expressive! - -## Installation -Make sure you have a working Go environment (go 1.1+ is *required*). [See the install instructions](http://golang.org/doc/install.html). - -To install `cli.go`, simply run: -``` -$ go get github.com/codegangsta/cli -``` - -Make sure your `PATH` includes to the `$GOPATH/bin` directory so your commands can be easily used: -``` -export PATH=$PATH:$GOPATH/bin -``` - -## Getting Started -One of the philosophies behind `cli.go` is that an API should be playful and full of discovery. So a `cli.go` app can be as little as one line of code in `main()`. - -``` go -package main - -import ( - "os" - "github.com/codegangsta/cli" -) - -func main() { - cli.NewApp().Run(os.Args) -} -``` - -This app will run and show help text, but is not very useful. Let's give an action to execute and some help documentation: - -``` go -package main - -import ( - "os" - "github.com/codegangsta/cli" -) - -func main() { - app := cli.NewApp() - app.Name = "boom" - app.Usage = "make an explosive entrance" - app.Action = func(c *cli.Context) { - println("boom! I say!") - } - - app.Run(os.Args) -} -``` - -Running this already gives you a ton of functionality, plus support for things like subcommands and flags, which are covered below. - -## Example - -Being a programmer can be a lonely job. Thankfully by the power of automation that is not the case! Let's create a greeter app to fend off our demons of loneliness! - -Start by creating a directory named `greet`, and within it, add a file, `greet.go` with the following code in it: - -``` go -package main - -import ( - "os" - "github.com/codegangsta/cli" -) - -func main() { - app := cli.NewApp() - app.Name = "greet" - app.Usage = "fight the loneliness!" - app.Action = func(c *cli.Context) { - println("Hello friend!") - } - - app.Run(os.Args) -} -``` - -Install our command to the `$GOPATH/bin` directory: - -``` -$ go install -``` - -Finally run our new command: - -``` -$ greet -Hello friend! -``` - -`cli.go` also generates neat help text: - -``` -$ greet help -NAME: - greet - fight the loneliness! - -USAGE: - greet [global options] command [command options] [arguments...] - -VERSION: - 0.0.0 - -COMMANDS: - help, h Shows a list of commands or help for one command - -GLOBAL OPTIONS - --version Shows version information -``` - -### Arguments -You can lookup arguments by calling the `Args` function on `cli.Context`. - -``` go -... -app.Action = func(c *cli.Context) { - println("Hello", c.Args()[0]) -} -... -``` - -### Flags -Setting and querying flags is simple. -``` go -... -app.Flags = []cli.Flag { - cli.StringFlag{ - Name: "lang", - Value: "english", - Usage: "language for the greeting", - }, -} -app.Action = func(c *cli.Context) { - name := "someone" - if len(c.Args()) > 0 { - name = c.Args()[0] - } - if c.String("lang") == "spanish" { - println("Hola", name) - } else { - println("Hello", name) - } -} -... -``` - -You can also set a destination variable for a flag, to which the content will be scanned. -``` go -... -var language string -app.Flags = []cli.Flag { - cli.StringFlag{ - Name: "lang", - Value: "english", - Usage: "language for the greeting", - Destination: &language, - }, -} -app.Action = func(c *cli.Context) { - name := "someone" - if len(c.Args()) > 0 { - name = c.Args()[0] - } - if language == "spanish" { - println("Hola", name) - } else { - println("Hello", name) - } -} -... -``` - -See full list of flags at http://godoc.org/github.com/codegangsta/cli - -#### Alternate Names - -You can set alternate (or short) names for flags by providing a comma-delimited list for the `Name`. e.g. - -``` go -app.Flags = []cli.Flag { - cli.StringFlag{ - Name: "lang, l", - Value: "english", - Usage: "language for the greeting", - }, -} -``` - -That flag can then be set with `--lang spanish` or `-l spanish`. Note that giving two different forms of the same flag in the same command invocation is an error. - -#### Values from the Environment - -You can also have the default value set from the environment via `EnvVar`. e.g. - -``` go -app.Flags = []cli.Flag { - cli.StringFlag{ - Name: "lang, l", - Value: "english", - Usage: "language for the greeting", - EnvVar: "APP_LANG", - }, -} -``` - -The `EnvVar` may also be given as a comma-delimited "cascade", where the first environment variable that resolves is used as the default. - -``` go -app.Flags = []cli.Flag { - cli.StringFlag{ - Name: "lang, l", - Value: "english", - Usage: "language for the greeting", - EnvVar: "LEGACY_COMPAT_LANG,APP_LANG,LANG", - }, -} -``` - -### Subcommands - -Subcommands can be defined for a more git-like command line app. -```go -... -app.Commands = []cli.Command{ - { - Name: "add", - Aliases: []string{"a"}, - Usage: "add a task to the list", - Action: func(c *cli.Context) { - println("added task: ", c.Args().First()) - }, - }, - { - Name: "complete", - Aliases: []string{"c"}, - Usage: "complete a task on the list", - Action: func(c *cli.Context) { - println("completed task: ", c.Args().First()) - }, - }, - { - Name: "template", - Aliases: []string{"r"}, - Usage: "options for task templates", - Subcommands: []cli.Command{ - { - Name: "add", - Usage: "add a new template", - Action: func(c *cli.Context) { - println("new task template: ", c.Args().First()) - }, - }, - { - Name: "remove", - Usage: "remove an existing template", - Action: func(c *cli.Context) { - println("removed task template: ", c.Args().First()) - }, - }, - }, - }, -} -... -``` - -### Bash Completion - -You can enable completion commands by setting the `EnableBashCompletion` -flag on the `App` object. By default, this setting will only auto-complete to -show an app's subcommands, but you can write your own completion methods for -the App or its subcommands. -```go -... -var tasks = []string{"cook", "clean", "laundry", "eat", "sleep", "code"} -app := cli.NewApp() -app.EnableBashCompletion = true -app.Commands = []cli.Command{ - { - Name: "complete", - Aliases: []string{"c"}, - Usage: "complete a task on the list", - Action: func(c *cli.Context) { - println("completed task: ", c.Args().First()) - }, - BashComplete: func(c *cli.Context) { - // This will complete if no args are passed - if len(c.Args()) > 0 { - return - } - for _, t := range tasks { - fmt.Println(t) - } - }, - } -} -... -``` - -#### To Enable - -Source the `autocomplete/bash_autocomplete` file in your `.bashrc` file while -setting the `PROG` variable to the name of your program: - -`PROG=myprogram source /.../cli/autocomplete/bash_autocomplete` - -#### To Distribute - -Copy `autocomplete/bash_autocomplete` into `/etc/bash_completion.d/` and rename -it to the name of the program you wish to add autocomplete support for (or -automatically install it there if you are distributing a package). Don't forget -to source the file to make it active in the current shell. - -``` - sudo cp src/bash_autocomplete /etc/bash_completion.d/ - source /etc/bash_completion.d/ -``` - -Alternatively, you can just document that users should source the generic -`autocomplete/bash_autocomplete` in their bash configuration with `$PROG` set -to the name of their program (as above). - -## Contribution Guidelines -Feel free to put up a pull request to fix a bug or maybe add a feature. I will give it a code review and make sure that it does not break backwards compatibility. If I or any other collaborators agree that it is in line with the vision of the project, we will work with you to get the code into a mergeable state and merge it into the master branch. - -If you have contributed something significant to the project, I will most likely add you as a collaborator. As a collaborator you are given the ability to merge others pull requests. It is very important that new code does not break existing code, so be careful about what code you do choose to merge. If you have any questions feel free to link @codegangsta to the issue in question and we can review it together. - -If you feel like you have contributed to the project but have not yet been added as a collaborator, I probably forgot to add you. Hit @codegangsta up over email and we will get it figured out. diff --git a/vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/app.go b/vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/app.go deleted file mode 100644 index 9a15c0c0..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/app.go +++ /dev/null @@ -1,333 +0,0 @@ -package cli - -import ( - "fmt" - "io" - "io/ioutil" - "os" - "time" -) - -// App is the main structure of a cli application. It is recomended that -// an app be created with the cli.NewApp() function -type App struct { - // The name of the program. Defaults to os.Args[0] - Name string - // Full name of command for help, defaults to Name - HelpName string - // Description of the program. - Usage string - // Description of the program argument format. - ArgsUsage string - // Version of the program - Version string - // List of commands to execute - Commands []Command - // List of flags to parse - Flags []Flag - // Boolean to enable bash completion commands - EnableBashCompletion bool - // Boolean to hide built-in help command - HideHelp bool - // Boolean to hide built-in version flag - HideVersion bool - // An action to execute when the bash-completion flag is set - BashComplete func(context *Context) - // An action to execute before any subcommands are run, but after the context is ready - // If a non-nil error is returned, no subcommands are run - Before func(context *Context) error - // An action to execute after any subcommands are run, but after the subcommand has finished - // It is run even if Action() panics - After func(context *Context) error - // The action to execute when no subcommands are specified - Action func(context *Context) - // Execute this function if the proper command cannot be found - CommandNotFound func(context *Context, command string) - // Compilation date - Compiled time.Time - // List of all authors who contributed - Authors []Author - // Copyright of the binary if any - Copyright string - // Name of Author (Note: Use App.Authors, this is deprecated) - Author string - // Email of Author (Note: Use App.Authors, this is deprecated) - Email string - // Writer writer to write output to - Writer io.Writer -} - -// Tries to find out when this binary was compiled. -// Returns the current time if it fails to find it. -func compileTime() time.Time { - info, err := os.Stat(os.Args[0]) - if err != nil { - return time.Now() - } - return info.ModTime() -} - -// Creates a new cli Application with some reasonable defaults for Name, Usage, Version and Action. -func NewApp() *App { - return &App{ - Name: os.Args[0], - HelpName: os.Args[0], - Usage: "A new cli application", - Version: "0.0.0", - BashComplete: DefaultAppComplete, - Action: helpCommand.Action, - Compiled: compileTime(), - Writer: os.Stdout, - } -} - -// Entry point to the cli app. Parses the arguments slice and routes to the proper flag/args combination -func (a *App) Run(arguments []string) (err error) { - if a.Author != "" || a.Email != "" { - a.Authors = append(a.Authors, Author{Name: a.Author, Email: a.Email}) - } - - newCmds := []Command{} - for _, c := range a.Commands { - if c.HelpName == "" { - c.HelpName = fmt.Sprintf("%s %s", a.HelpName, c.Name) - } - newCmds = append(newCmds, c) - } - a.Commands = newCmds - - // append help to commands - if a.Command(helpCommand.Name) == nil && !a.HideHelp { - a.Commands = append(a.Commands, helpCommand) - if (HelpFlag != BoolFlag{}) { - a.appendFlag(HelpFlag) - } - } - - //append version/help flags - if a.EnableBashCompletion { - a.appendFlag(BashCompletionFlag) - } - - if !a.HideVersion { - a.appendFlag(VersionFlag) - } - - // parse flags - set := flagSet(a.Name, a.Flags) - set.SetOutput(ioutil.Discard) - err = set.Parse(arguments[1:]) - nerr := normalizeFlags(a.Flags, set) - if nerr != nil { - fmt.Fprintln(a.Writer, nerr) - context := NewContext(a, set, nil) - ShowAppHelp(context) - return nerr - } - context := NewContext(a, set, nil) - - if err != nil { - fmt.Fprintln(a.Writer, "Incorrect Usage.") - fmt.Fprintln(a.Writer) - ShowAppHelp(context) - return err - } - - if checkCompletions(context) { - return nil - } - - if !a.HideHelp && checkHelp(context) { - ShowAppHelp(context) - return nil - } - - if !a.HideVersion && checkVersion(context) { - ShowVersion(context) - return nil - } - - if a.After != nil { - defer func() { - afterErr := a.After(context) - if afterErr != nil { - if err != nil { - err = NewMultiError(err, afterErr) - } else { - err = afterErr - } - } - }() - } - - if a.Before != nil { - err := a.Before(context) - if err != nil { - return err - } - } - - args := context.Args() - if args.Present() { - name := args.First() - c := a.Command(name) - if c != nil { - return c.Run(context) - } - } - - // Run default Action - a.Action(context) - return nil -} - -// Another entry point to the cli app, takes care of passing arguments and error handling -func (a *App) RunAndExitOnError() { - if err := a.Run(os.Args); err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } -} - -// Invokes the subcommand given the context, parses ctx.Args() to generate command-specific flags -func (a *App) RunAsSubcommand(ctx *Context) (err error) { - // append help to commands - if len(a.Commands) > 0 { - if a.Command(helpCommand.Name) == nil && !a.HideHelp { - a.Commands = append(a.Commands, helpCommand) - if (HelpFlag != BoolFlag{}) { - a.appendFlag(HelpFlag) - } - } - } - - newCmds := []Command{} - for _, c := range a.Commands { - if c.HelpName == "" { - c.HelpName = fmt.Sprintf("%s %s", a.HelpName, c.Name) - } - newCmds = append(newCmds, c) - } - a.Commands = newCmds - - // append flags - if a.EnableBashCompletion { - a.appendFlag(BashCompletionFlag) - } - - // parse flags - set := flagSet(a.Name, a.Flags) - set.SetOutput(ioutil.Discard) - err = set.Parse(ctx.Args().Tail()) - nerr := normalizeFlags(a.Flags, set) - context := NewContext(a, set, ctx) - - if nerr != nil { - fmt.Fprintln(a.Writer, nerr) - fmt.Fprintln(a.Writer) - if len(a.Commands) > 0 { - ShowSubcommandHelp(context) - } else { - ShowCommandHelp(ctx, context.Args().First()) - } - return nerr - } - - if err != nil { - fmt.Fprintln(a.Writer, "Incorrect Usage.") - fmt.Fprintln(a.Writer) - ShowSubcommandHelp(context) - return err - } - - if checkCompletions(context) { - return nil - } - - if len(a.Commands) > 0 { - if checkSubcommandHelp(context) { - return nil - } - } else { - if checkCommandHelp(ctx, context.Args().First()) { - return nil - } - } - - if a.After != nil { - defer func() { - afterErr := a.After(context) - if afterErr != nil { - if err != nil { - err = NewMultiError(err, afterErr) - } else { - err = afterErr - } - } - }() - } - - if a.Before != nil { - err := a.Before(context) - if err != nil { - return err - } - } - - args := context.Args() - if args.Present() { - name := args.First() - c := a.Command(name) - if c != nil { - return c.Run(context) - } - } - - // Run default Action - a.Action(context) - - return nil -} - -// Returns the named command on App. Returns nil if the command does not exist -func (a *App) Command(name string) *Command { - for _, c := range a.Commands { - if c.HasName(name) { - return &c - } - } - - return nil -} - -func (a *App) hasFlag(flag Flag) bool { - for _, f := range a.Flags { - if flag == f { - return true - } - } - - return false -} - -func (a *App) appendFlag(flag Flag) { - if !a.hasFlag(flag) { - a.Flags = append(a.Flags, flag) - } -} - -// Author represents someone who has contributed to a cli project. -type Author struct { - Name string // The Authors name - Email string // The Authors email -} - -// String makes Author comply to the Stringer interface, to allow an easy print in the templating process -func (a Author) String() string { - e := "" - if a.Email != "" { - e = "<" + a.Email + "> " - } - - return fmt.Sprintf("%v %v", a.Name, e) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/cli.go b/vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/cli.go deleted file mode 100644 index 31dc9124..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/cli.go +++ /dev/null @@ -1,40 +0,0 @@ -// Package cli provides a minimal framework for creating and organizing command line -// Go applications. cli is designed to be easy to understand and write, the most simple -// cli application can be written as follows: -// func main() { -// cli.NewApp().Run(os.Args) -// } -// -// Of course this application does not do much, so let's make this an actual application: -// func main() { -// app := cli.NewApp() -// app.Name = "greet" -// app.Usage = "say a greeting" -// app.Action = func(c *cli.Context) { -// println("Greetings") -// } -// -// app.Run(os.Args) -// } -package cli - -import ( - "strings" -) - -type MultiError struct { - Errors []error -} - -func NewMultiError(err ...error) MultiError { - return MultiError{Errors: err} -} - -func (m MultiError) Error() string { - errs := make([]string, len(m.Errors)) - for i, err := range m.Errors { - errs[i] = err.Error() - } - - return strings.Join(errs, "\n") -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/command.go b/vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/command.go deleted file mode 100644 index 824e77ba..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/command.go +++ /dev/null @@ -1,216 +0,0 @@ -package cli - -import ( - "fmt" - "io/ioutil" - "strings" -) - -// Command is a subcommand for a cli.App. -type Command struct { - // The name of the command - Name string - // short name of the command. Typically one character (deprecated, use `Aliases`) - ShortName string - // A list of aliases for the command - Aliases []string - // A short description of the usage of this command - Usage string - // A longer explanation of how the command works - Description string - // A short description of the arguments of this command - ArgsUsage string - // The function to call when checking for bash command completions - BashComplete func(context *Context) - // An action to execute before any sub-subcommands are run, but after the context is ready - // If a non-nil error is returned, no sub-subcommands are run - Before func(context *Context) error - // An action to execute after any subcommands are run, but after the subcommand has finished - // It is run even if Action() panics - After func(context *Context) error - // The function to call when this command is invoked - Action func(context *Context) - // List of child commands - Subcommands []Command - // List of flags to parse - Flags []Flag - // Treat all flags as normal arguments if true - SkipFlagParsing bool - // Boolean to hide built-in help command - HideHelp bool - - // Full name of command for help, defaults to full command name, including parent commands. - HelpName string - commandNamePath []string -} - -// Returns the full name of the command. -// For subcommands this ensures that parent commands are part of the command path -func (c Command) FullName() string { - if c.commandNamePath == nil { - return c.Name - } - return strings.Join(c.commandNamePath, " ") -} - -// Invokes the command given the context, parses ctx.Args() to generate command-specific flags -func (c Command) Run(ctx *Context) error { - if len(c.Subcommands) > 0 || c.Before != nil || c.After != nil { - return c.startApp(ctx) - } - - if !c.HideHelp && (HelpFlag != BoolFlag{}) { - // append help to flags - c.Flags = append( - c.Flags, - HelpFlag, - ) - } - - if ctx.App.EnableBashCompletion { - c.Flags = append(c.Flags, BashCompletionFlag) - } - - set := flagSet(c.Name, c.Flags) - set.SetOutput(ioutil.Discard) - - var err error - if !c.SkipFlagParsing { - firstFlagIndex := -1 - terminatorIndex := -1 - for index, arg := range ctx.Args() { - if arg == "--" { - terminatorIndex = index - break - } else if strings.HasPrefix(arg, "-") && firstFlagIndex == -1 { - firstFlagIndex = index - } - } - - if firstFlagIndex > -1 { - args := ctx.Args() - regularArgs := make([]string, len(args[1:firstFlagIndex])) - copy(regularArgs, args[1:firstFlagIndex]) - - var flagArgs []string - if terminatorIndex > -1 { - flagArgs = args[firstFlagIndex:terminatorIndex] - regularArgs = append(regularArgs, args[terminatorIndex:]...) - } else { - flagArgs = args[firstFlagIndex:] - } - - err = set.Parse(append(flagArgs, regularArgs...)) - } else { - err = set.Parse(ctx.Args().Tail()) - } - } else { - if c.SkipFlagParsing { - err = set.Parse(append([]string{"--"}, ctx.Args().Tail()...)) - } - } - - if err != nil { - fmt.Fprintln(ctx.App.Writer, "Incorrect Usage.") - fmt.Fprintln(ctx.App.Writer) - ShowCommandHelp(ctx, c.Name) - return err - } - - nerr := normalizeFlags(c.Flags, set) - if nerr != nil { - fmt.Fprintln(ctx.App.Writer, nerr) - fmt.Fprintln(ctx.App.Writer) - ShowCommandHelp(ctx, c.Name) - return nerr - } - context := NewContext(ctx.App, set, ctx) - - if checkCommandCompletions(context, c.Name) { - return nil - } - - if checkCommandHelp(context, c.Name) { - return nil - } - context.Command = c - c.Action(context) - return nil -} - -func (c Command) Names() []string { - names := []string{c.Name} - - if c.ShortName != "" { - names = append(names, c.ShortName) - } - - return append(names, c.Aliases...) -} - -// Returns true if Command.Name or Command.ShortName matches given name -func (c Command) HasName(name string) bool { - for _, n := range c.Names() { - if n == name { - return true - } - } - return false -} - -func (c Command) startApp(ctx *Context) error { - app := NewApp() - - // set the name and usage - app.Name = fmt.Sprintf("%s %s", ctx.App.Name, c.Name) - if c.HelpName == "" { - app.HelpName = c.HelpName - } else { - app.HelpName = fmt.Sprintf("%s %s", ctx.App.Name, c.Name) - } - - if c.Description != "" { - app.Usage = c.Description - } else { - app.Usage = c.Usage - } - - // set CommandNotFound - app.CommandNotFound = ctx.App.CommandNotFound - - // set the flags and commands - app.Commands = c.Subcommands - app.Flags = c.Flags - app.HideHelp = c.HideHelp - - app.Version = ctx.App.Version - app.HideVersion = ctx.App.HideVersion - app.Compiled = ctx.App.Compiled - app.Author = ctx.App.Author - app.Email = ctx.App.Email - app.Writer = ctx.App.Writer - - // bash completion - app.EnableBashCompletion = ctx.App.EnableBashCompletion - if c.BashComplete != nil { - app.BashComplete = c.BashComplete - } - - // set the actions - app.Before = c.Before - app.After = c.After - if c.Action != nil { - app.Action = c.Action - } else { - app.Action = helpSubcommand.Action - } - - var newCmds []Command - for _, cc := range app.Commands { - cc.commandNamePath = []string{c.Name, cc.Name} - newCmds = append(newCmds, cc) - } - app.Commands = newCmds - - return app.RunAsSubcommand(ctx) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/context.go b/vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/context.go deleted file mode 100644 index f541f41c..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/context.go +++ /dev/null @@ -1,388 +0,0 @@ -package cli - -import ( - "errors" - "flag" - "strconv" - "strings" - "time" -) - -// Context is a type that is passed through to -// each Handler action in a cli application. Context -// can be used to retrieve context-specific Args and -// parsed command-line options. -type Context struct { - App *App - Command Command - flagSet *flag.FlagSet - setFlags map[string]bool - globalSetFlags map[string]bool - parentContext *Context -} - -// Creates a new context. For use in when invoking an App or Command action. -func NewContext(app *App, set *flag.FlagSet, parentCtx *Context) *Context { - return &Context{App: app, flagSet: set, parentContext: parentCtx} -} - -// Looks up the value of a local int flag, returns 0 if no int flag exists -func (c *Context) Int(name string) int { - return lookupInt(name, c.flagSet) -} - -// Looks up the value of a local time.Duration flag, returns 0 if no time.Duration flag exists -func (c *Context) Duration(name string) time.Duration { - return lookupDuration(name, c.flagSet) -} - -// Looks up the value of a local float64 flag, returns 0 if no float64 flag exists -func (c *Context) Float64(name string) float64 { - return lookupFloat64(name, c.flagSet) -} - -// Looks up the value of a local bool flag, returns false if no bool flag exists -func (c *Context) Bool(name string) bool { - return lookupBool(name, c.flagSet) -} - -// Looks up the value of a local boolT flag, returns false if no bool flag exists -func (c *Context) BoolT(name string) bool { - return lookupBoolT(name, c.flagSet) -} - -// Looks up the value of a local string flag, returns "" if no string flag exists -func (c *Context) String(name string) string { - return lookupString(name, c.flagSet) -} - -// Looks up the value of a local string slice flag, returns nil if no string slice flag exists -func (c *Context) StringSlice(name string) []string { - return lookupStringSlice(name, c.flagSet) -} - -// Looks up the value of a local int slice flag, returns nil if no int slice flag exists -func (c *Context) IntSlice(name string) []int { - return lookupIntSlice(name, c.flagSet) -} - -// Looks up the value of a local generic flag, returns nil if no generic flag exists -func (c *Context) Generic(name string) interface{} { - return lookupGeneric(name, c.flagSet) -} - -// Looks up the value of a global int flag, returns 0 if no int flag exists -func (c *Context) GlobalInt(name string) int { - if fs := lookupGlobalFlagSet(name, c); fs != nil { - return lookupInt(name, fs) - } - return 0 -} - -// Looks up the value of a global time.Duration flag, returns 0 if no time.Duration flag exists -func (c *Context) GlobalDuration(name string) time.Duration { - if fs := lookupGlobalFlagSet(name, c); fs != nil { - return lookupDuration(name, fs) - } - return 0 -} - -// Looks up the value of a global bool flag, returns false if no bool flag exists -func (c *Context) GlobalBool(name string) bool { - if fs := lookupGlobalFlagSet(name, c); fs != nil { - return lookupBool(name, fs) - } - return false -} - -// Looks up the value of a global string flag, returns "" if no string flag exists -func (c *Context) GlobalString(name string) string { - if fs := lookupGlobalFlagSet(name, c); fs != nil { - return lookupString(name, fs) - } - return "" -} - -// Looks up the value of a global string slice flag, returns nil if no string slice flag exists -func (c *Context) GlobalStringSlice(name string) []string { - if fs := lookupGlobalFlagSet(name, c); fs != nil { - return lookupStringSlice(name, fs) - } - return nil -} - -// Looks up the value of a global int slice flag, returns nil if no int slice flag exists -func (c *Context) GlobalIntSlice(name string) []int { - if fs := lookupGlobalFlagSet(name, c); fs != nil { - return lookupIntSlice(name, fs) - } - return nil -} - -// Looks up the value of a global generic flag, returns nil if no generic flag exists -func (c *Context) GlobalGeneric(name string) interface{} { - if fs := lookupGlobalFlagSet(name, c); fs != nil { - return lookupGeneric(name, fs) - } - return nil -} - -// Returns the number of flags set -func (c *Context) NumFlags() int { - return c.flagSet.NFlag() -} - -// Determines if the flag was actually set -func (c *Context) IsSet(name string) bool { - if c.setFlags == nil { - c.setFlags = make(map[string]bool) - c.flagSet.Visit(func(f *flag.Flag) { - c.setFlags[f.Name] = true - }) - } - return c.setFlags[name] == true -} - -// Determines if the global flag was actually set -func (c *Context) GlobalIsSet(name string) bool { - if c.globalSetFlags == nil { - c.globalSetFlags = make(map[string]bool) - ctx := c - if ctx.parentContext != nil { - ctx = ctx.parentContext - } - for ; ctx != nil && c.globalSetFlags[name] == false; ctx = ctx.parentContext { - ctx.flagSet.Visit(func(f *flag.Flag) { - c.globalSetFlags[f.Name] = true - }) - } - } - return c.globalSetFlags[name] -} - -// Returns a slice of flag names used in this context. -func (c *Context) FlagNames() (names []string) { - for _, flag := range c.Command.Flags { - name := strings.Split(flag.getName(), ",")[0] - if name == "help" { - continue - } - names = append(names, name) - } - return -} - -// Returns a slice of global flag names used by the app. -func (c *Context) GlobalFlagNames() (names []string) { - for _, flag := range c.App.Flags { - name := strings.Split(flag.getName(), ",")[0] - if name == "help" || name == "version" { - continue - } - names = append(names, name) - } - return -} - -// Returns the parent context, if any -func (c *Context) Parent() *Context { - return c.parentContext -} - -type Args []string - -// Returns the command line arguments associated with the context. -func (c *Context) Args() Args { - args := Args(c.flagSet.Args()) - return args -} - -// Returns the nth argument, or else a blank string -func (a Args) Get(n int) string { - if len(a) > n { - return a[n] - } - return "" -} - -// Returns the first argument, or else a blank string -func (a Args) First() string { - return a.Get(0) -} - -// Return the rest of the arguments (not the first one) -// or else an empty string slice -func (a Args) Tail() []string { - if len(a) >= 2 { - return []string(a)[1:] - } - return []string{} -} - -// Checks if there are any arguments present -func (a Args) Present() bool { - return len(a) != 0 -} - -// Swaps arguments at the given indexes -func (a Args) Swap(from, to int) error { - if from >= len(a) || to >= len(a) { - return errors.New("index out of range") - } - a[from], a[to] = a[to], a[from] - return nil -} - -func lookupGlobalFlagSet(name string, ctx *Context) *flag.FlagSet { - if ctx.parentContext != nil { - ctx = ctx.parentContext - } - for ; ctx != nil; ctx = ctx.parentContext { - if f := ctx.flagSet.Lookup(name); f != nil { - return ctx.flagSet - } - } - return nil -} - -func lookupInt(name string, set *flag.FlagSet) int { - f := set.Lookup(name) - if f != nil { - val, err := strconv.Atoi(f.Value.String()) - if err != nil { - return 0 - } - return val - } - - return 0 -} - -func lookupDuration(name string, set *flag.FlagSet) time.Duration { - f := set.Lookup(name) - if f != nil { - val, err := time.ParseDuration(f.Value.String()) - if err == nil { - return val - } - } - - return 0 -} - -func lookupFloat64(name string, set *flag.FlagSet) float64 { - f := set.Lookup(name) - if f != nil { - val, err := strconv.ParseFloat(f.Value.String(), 64) - if err != nil { - return 0 - } - return val - } - - return 0 -} - -func lookupString(name string, set *flag.FlagSet) string { - f := set.Lookup(name) - if f != nil { - return f.Value.String() - } - - return "" -} - -func lookupStringSlice(name string, set *flag.FlagSet) []string { - f := set.Lookup(name) - if f != nil { - return (f.Value.(*StringSlice)).Value() - - } - - return nil -} - -func lookupIntSlice(name string, set *flag.FlagSet) []int { - f := set.Lookup(name) - if f != nil { - return (f.Value.(*IntSlice)).Value() - - } - - return nil -} - -func lookupGeneric(name string, set *flag.FlagSet) interface{} { - f := set.Lookup(name) - if f != nil { - return f.Value - } - return nil -} - -func lookupBool(name string, set *flag.FlagSet) bool { - f := set.Lookup(name) - if f != nil { - val, err := strconv.ParseBool(f.Value.String()) - if err != nil { - return false - } - return val - } - - return false -} - -func lookupBoolT(name string, set *flag.FlagSet) bool { - f := set.Lookup(name) - if f != nil { - val, err := strconv.ParseBool(f.Value.String()) - if err != nil { - return true - } - return val - } - - return false -} - -func copyFlag(name string, ff *flag.Flag, set *flag.FlagSet) { - switch ff.Value.(type) { - case *StringSlice: - default: - set.Set(name, ff.Value.String()) - } -} - -func normalizeFlags(flags []Flag, set *flag.FlagSet) error { - visited := make(map[string]bool) - set.Visit(func(f *flag.Flag) { - visited[f.Name] = true - }) - for _, f := range flags { - parts := strings.Split(f.getName(), ",") - if len(parts) == 1 { - continue - } - var ff *flag.Flag - for _, name := range parts { - name = strings.Trim(name, " ") - if visited[name] { - if ff != nil { - return errors.New("Cannot use two forms of the same flag: " + name + " " + ff.Name) - } - ff = set.Lookup(name) - } - } - if ff == nil { - continue - } - for _, name := range parts { - name = strings.Trim(name, " ") - if !visited[name] { - copyFlag(name, ff, set) - } - } - } - return nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/flag.go b/vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/flag.go deleted file mode 100644 index 9b22d7f1..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/flag.go +++ /dev/null @@ -1,527 +0,0 @@ -package cli - -import ( - "flag" - "fmt" - "os" - "strconv" - "strings" - "time" -) - -// This flag enables bash-completion for all commands and subcommands -var BashCompletionFlag = BoolFlag{ - Name: "generate-bash-completion", -} - -// This flag prints the version for the application -var VersionFlag = BoolFlag{ - Name: "version, v", - Usage: "print the version", -} - -// This flag prints the help for all commands and subcommands -// Set to the zero value (BoolFlag{}) to disable flag -- keeps subcommand -// unless HideHelp is set to true) -var HelpFlag = BoolFlag{ - Name: "help, h", - Usage: "show help", -} - -// Flag is a common interface related to parsing flags in cli. -// For more advanced flag parsing techniques, it is recomended that -// this interface be implemented. -type Flag interface { - fmt.Stringer - // Apply Flag settings to the given flag set - Apply(*flag.FlagSet) - getName() string -} - -func flagSet(name string, flags []Flag) *flag.FlagSet { - set := flag.NewFlagSet(name, flag.ContinueOnError) - - for _, f := range flags { - f.Apply(set) - } - return set -} - -func eachName(longName string, fn func(string)) { - parts := strings.Split(longName, ",") - for _, name := range parts { - name = strings.Trim(name, " ") - fn(name) - } -} - -// Generic is a generic parseable type identified by a specific flag -type Generic interface { - Set(value string) error - String() string -} - -// GenericFlag is the flag type for types implementing Generic -type GenericFlag struct { - Name string - Value Generic - Usage string - EnvVar string -} - -// String returns the string representation of the generic flag to display the -// help text to the user (uses the String() method of the generic flag to show -// the value) -func (f GenericFlag) String() string { - return withEnvHint(f.EnvVar, fmt.Sprintf("%s%s \"%v\"\t%v", prefixFor(f.Name), f.Name, f.Value, f.Usage)) -} - -// Apply takes the flagset and calls Set on the generic flag with the value -// provided by the user for parsing by the flag -func (f GenericFlag) Apply(set *flag.FlagSet) { - val := f.Value - if f.EnvVar != "" { - for _, envVar := range strings.Split(f.EnvVar, ",") { - envVar = strings.TrimSpace(envVar) - if envVal := os.Getenv(envVar); envVal != "" { - val.Set(envVal) - break - } - } - } - - eachName(f.Name, func(name string) { - set.Var(f.Value, name, f.Usage) - }) -} - -func (f GenericFlag) getName() string { - return f.Name -} - -// StringSlice is an opaque type for []string to satisfy flag.Value -type StringSlice []string - -// Set appends the string value to the list of values -func (f *StringSlice) Set(value string) error { - *f = append(*f, value) - return nil -} - -// String returns a readable representation of this value (for usage defaults) -func (f *StringSlice) String() string { - return fmt.Sprintf("%s", *f) -} - -// Value returns the slice of strings set by this flag -func (f *StringSlice) Value() []string { - return *f -} - -// StringSlice is a string flag that can be specified multiple times on the -// command-line -type StringSliceFlag struct { - Name string - Value *StringSlice - Usage string - EnvVar string -} - -// String returns the usage -func (f StringSliceFlag) String() string { - firstName := strings.Trim(strings.Split(f.Name, ",")[0], " ") - pref := prefixFor(firstName) - return withEnvHint(f.EnvVar, fmt.Sprintf("%s [%v]\t%v", prefixedNames(f.Name), pref+firstName+" option "+pref+firstName+" option", f.Usage)) -} - -// Apply populates the flag given the flag set and environment -func (f StringSliceFlag) Apply(set *flag.FlagSet) { - if f.EnvVar != "" { - for _, envVar := range strings.Split(f.EnvVar, ",") { - envVar = strings.TrimSpace(envVar) - if envVal := os.Getenv(envVar); envVal != "" { - newVal := &StringSlice{} - for _, s := range strings.Split(envVal, ",") { - s = strings.TrimSpace(s) - newVal.Set(s) - } - f.Value = newVal - break - } - } - } - - eachName(f.Name, func(name string) { - if f.Value == nil { - f.Value = &StringSlice{} - } - set.Var(f.Value, name, f.Usage) - }) -} - -func (f StringSliceFlag) getName() string { - return f.Name -} - -// StringSlice is an opaque type for []int to satisfy flag.Value -type IntSlice []int - -// Set parses the value into an integer and appends it to the list of values -func (f *IntSlice) Set(value string) error { - tmp, err := strconv.Atoi(value) - if err != nil { - return err - } else { - *f = append(*f, tmp) - } - return nil -} - -// String returns a readable representation of this value (for usage defaults) -func (f *IntSlice) String() string { - return fmt.Sprintf("%d", *f) -} - -// Value returns the slice of ints set by this flag -func (f *IntSlice) Value() []int { - return *f -} - -// IntSliceFlag is an int flag that can be specified multiple times on the -// command-line -type IntSliceFlag struct { - Name string - Value *IntSlice - Usage string - EnvVar string -} - -// String returns the usage -func (f IntSliceFlag) String() string { - firstName := strings.Trim(strings.Split(f.Name, ",")[0], " ") - pref := prefixFor(firstName) - return withEnvHint(f.EnvVar, fmt.Sprintf("%s [%v]\t%v", prefixedNames(f.Name), pref+firstName+" option "+pref+firstName+" option", f.Usage)) -} - -// Apply populates the flag given the flag set and environment -func (f IntSliceFlag) Apply(set *flag.FlagSet) { - if f.EnvVar != "" { - for _, envVar := range strings.Split(f.EnvVar, ",") { - envVar = strings.TrimSpace(envVar) - if envVal := os.Getenv(envVar); envVal != "" { - newVal := &IntSlice{} - for _, s := range strings.Split(envVal, ",") { - s = strings.TrimSpace(s) - err := newVal.Set(s) - if err != nil { - fmt.Fprintf(os.Stderr, err.Error()) - } - } - f.Value = newVal - break - } - } - } - - eachName(f.Name, func(name string) { - if f.Value == nil { - f.Value = &IntSlice{} - } - set.Var(f.Value, name, f.Usage) - }) -} - -func (f IntSliceFlag) getName() string { - return f.Name -} - -// BoolFlag is a switch that defaults to false -type BoolFlag struct { - Name string - Usage string - EnvVar string - Destination *bool -} - -// String returns a readable representation of this value (for usage defaults) -func (f BoolFlag) String() string { - return withEnvHint(f.EnvVar, fmt.Sprintf("%s\t%v", prefixedNames(f.Name), f.Usage)) -} - -// Apply populates the flag given the flag set and environment -func (f BoolFlag) Apply(set *flag.FlagSet) { - val := false - if f.EnvVar != "" { - for _, envVar := range strings.Split(f.EnvVar, ",") { - envVar = strings.TrimSpace(envVar) - if envVal := os.Getenv(envVar); envVal != "" { - envValBool, err := strconv.ParseBool(envVal) - if err == nil { - val = envValBool - } - break - } - } - } - - eachName(f.Name, func(name string) { - if f.Destination != nil { - set.BoolVar(f.Destination, name, val, f.Usage) - return - } - set.Bool(name, val, f.Usage) - }) -} - -func (f BoolFlag) getName() string { - return f.Name -} - -// BoolTFlag this represents a boolean flag that is true by default, but can -// still be set to false by --some-flag=false -type BoolTFlag struct { - Name string - Usage string - EnvVar string - Destination *bool -} - -// String returns a readable representation of this value (for usage defaults) -func (f BoolTFlag) String() string { - return withEnvHint(f.EnvVar, fmt.Sprintf("%s\t%v", prefixedNames(f.Name), f.Usage)) -} - -// Apply populates the flag given the flag set and environment -func (f BoolTFlag) Apply(set *flag.FlagSet) { - val := true - if f.EnvVar != "" { - for _, envVar := range strings.Split(f.EnvVar, ",") { - envVar = strings.TrimSpace(envVar) - if envVal := os.Getenv(envVar); envVal != "" { - envValBool, err := strconv.ParseBool(envVal) - if err == nil { - val = envValBool - break - } - } - } - } - - eachName(f.Name, func(name string) { - if f.Destination != nil { - set.BoolVar(f.Destination, name, val, f.Usage) - return - } - set.Bool(name, val, f.Usage) - }) -} - -func (f BoolTFlag) getName() string { - return f.Name -} - -// StringFlag represents a flag that takes as string value -type StringFlag struct { - Name string - Value string - Usage string - EnvVar string - Destination *string -} - -// String returns the usage -func (f StringFlag) String() string { - var fmtString string - fmtString = "%s %v\t%v" - - if len(f.Value) > 0 { - fmtString = "%s \"%v\"\t%v" - } else { - fmtString = "%s %v\t%v" - } - - return withEnvHint(f.EnvVar, fmt.Sprintf(fmtString, prefixedNames(f.Name), f.Value, f.Usage)) -} - -// Apply populates the flag given the flag set and environment -func (f StringFlag) Apply(set *flag.FlagSet) { - if f.EnvVar != "" { - for _, envVar := range strings.Split(f.EnvVar, ",") { - envVar = strings.TrimSpace(envVar) - if envVal := os.Getenv(envVar); envVal != "" { - f.Value = envVal - break - } - } - } - - eachName(f.Name, func(name string) { - if f.Destination != nil { - set.StringVar(f.Destination, name, f.Value, f.Usage) - return - } - set.String(name, f.Value, f.Usage) - }) -} - -func (f StringFlag) getName() string { - return f.Name -} - -// IntFlag is a flag that takes an integer -// Errors if the value provided cannot be parsed -type IntFlag struct { - Name string - Value int - Usage string - EnvVar string - Destination *int -} - -// String returns the usage -func (f IntFlag) String() string { - return withEnvHint(f.EnvVar, fmt.Sprintf("%s \"%v\"\t%v", prefixedNames(f.Name), f.Value, f.Usage)) -} - -// Apply populates the flag given the flag set and environment -func (f IntFlag) Apply(set *flag.FlagSet) { - if f.EnvVar != "" { - for _, envVar := range strings.Split(f.EnvVar, ",") { - envVar = strings.TrimSpace(envVar) - if envVal := os.Getenv(envVar); envVal != "" { - envValInt, err := strconv.ParseInt(envVal, 0, 64) - if err == nil { - f.Value = int(envValInt) - break - } - } - } - } - - eachName(f.Name, func(name string) { - if f.Destination != nil { - set.IntVar(f.Destination, name, f.Value, f.Usage) - return - } - set.Int(name, f.Value, f.Usage) - }) -} - -func (f IntFlag) getName() string { - return f.Name -} - -// DurationFlag is a flag that takes a duration specified in Go's duration -// format: https://golang.org/pkg/time/#ParseDuration -type DurationFlag struct { - Name string - Value time.Duration - Usage string - EnvVar string - Destination *time.Duration -} - -// String returns a readable representation of this value (for usage defaults) -func (f DurationFlag) String() string { - return withEnvHint(f.EnvVar, fmt.Sprintf("%s \"%v\"\t%v", prefixedNames(f.Name), f.Value, f.Usage)) -} - -// Apply populates the flag given the flag set and environment -func (f DurationFlag) Apply(set *flag.FlagSet) { - if f.EnvVar != "" { - for _, envVar := range strings.Split(f.EnvVar, ",") { - envVar = strings.TrimSpace(envVar) - if envVal := os.Getenv(envVar); envVal != "" { - envValDuration, err := time.ParseDuration(envVal) - if err == nil { - f.Value = envValDuration - break - } - } - } - } - - eachName(f.Name, func(name string) { - if f.Destination != nil { - set.DurationVar(f.Destination, name, f.Value, f.Usage) - return - } - set.Duration(name, f.Value, f.Usage) - }) -} - -func (f DurationFlag) getName() string { - return f.Name -} - -// Float64Flag is a flag that takes an float value -// Errors if the value provided cannot be parsed -type Float64Flag struct { - Name string - Value float64 - Usage string - EnvVar string - Destination *float64 -} - -// String returns the usage -func (f Float64Flag) String() string { - return withEnvHint(f.EnvVar, fmt.Sprintf("%s \"%v\"\t%v", prefixedNames(f.Name), f.Value, f.Usage)) -} - -// Apply populates the flag given the flag set and environment -func (f Float64Flag) Apply(set *flag.FlagSet) { - if f.EnvVar != "" { - for _, envVar := range strings.Split(f.EnvVar, ",") { - envVar = strings.TrimSpace(envVar) - if envVal := os.Getenv(envVar); envVal != "" { - envValFloat, err := strconv.ParseFloat(envVal, 10) - if err == nil { - f.Value = float64(envValFloat) - } - } - } - } - - eachName(f.Name, func(name string) { - if f.Destination != nil { - set.Float64Var(f.Destination, name, f.Value, f.Usage) - return - } - set.Float64(name, f.Value, f.Usage) - }) -} - -func (f Float64Flag) getName() string { - return f.Name -} - -func prefixFor(name string) (prefix string) { - if len(name) == 1 { - prefix = "-" - } else { - prefix = "--" - } - - return -} - -func prefixedNames(fullName string) (prefixed string) { - parts := strings.Split(fullName, ",") - for i, name := range parts { - name = strings.Trim(name, " ") - prefixed += prefixFor(name) + name - if i < len(parts)-1 { - prefixed += ", " - } - } - return -} - -func withEnvHint(envVar, str string) string { - envText := "" - if envVar != "" { - envText = fmt.Sprintf(" [$%s]", strings.Join(strings.Split(envVar, ","), ", $")) - } - return str + envText -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/help.go b/vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/help.go deleted file mode 100644 index a246f63a..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/codegangsta/cli/help.go +++ /dev/null @@ -1,246 +0,0 @@ -package cli - -import ( - "fmt" - "io" - "strings" - "text/tabwriter" - "text/template" -) - -// The text template for the Default help topic. -// cli.go uses text/template to render templates. You can -// render custom help text by setting this variable. -var AppHelpTemplate = `NAME: - {{.Name}} - {{.Usage}} - -USAGE: - {{.HelpName}} {{if .Flags}}[global options]{{end}}{{if .Commands}} command [command options]{{end}} {{if .ArgsUsage}}{{.ArgsUsage}}{{else}}[arguments...]{{end}} - {{if .Version}} -VERSION: - {{.Version}} - {{end}}{{if len .Authors}} -AUTHOR(S): - {{range .Authors}}{{ . }}{{end}} - {{end}}{{if .Commands}} -COMMANDS: - {{range .Commands}}{{join .Names ", "}}{{ "\t" }}{{.Usage}} - {{end}}{{end}}{{if .Flags}} -GLOBAL OPTIONS: - {{range .Flags}}{{.}} - {{end}}{{end}}{{if .Copyright }} -COPYRIGHT: - {{.Copyright}} - {{end}} -` - -// The text template for the command help topic. -// cli.go uses text/template to render templates. You can -// render custom help text by setting this variable. -var CommandHelpTemplate = `NAME: - {{.HelpName}} - {{.Usage}} - -USAGE: - {{.HelpName}}{{if .Flags}} [command options]{{end}} {{if .ArgsUsage}}{{.ArgsUsage}}{{else}}[arguments...]{{end}}{{if .Description}} - -DESCRIPTION: - {{.Description}}{{end}}{{if .Flags}} - -OPTIONS: - {{range .Flags}}{{.}} - {{end}}{{ end }} -` - -// The text template for the subcommand help topic. -// cli.go uses text/template to render templates. You can -// render custom help text by setting this variable. -var SubcommandHelpTemplate = `NAME: - {{.HelpName}} - {{.Usage}} - -USAGE: - {{.HelpName}} command{{if .Flags}} [command options]{{end}} {{if .ArgsUsage}}{{.ArgsUsage}}{{else}}[arguments...]{{end}} - -COMMANDS: - {{range .Commands}}{{join .Names ", "}}{{ "\t" }}{{.Usage}} - {{end}}{{if .Flags}} -OPTIONS: - {{range .Flags}}{{.}} - {{end}}{{end}} -` - -var helpCommand = Command{ - Name: "help", - Aliases: []string{"h"}, - Usage: "Shows a list of commands or help for one command", - ArgsUsage: "[command]", - Action: func(c *Context) { - args := c.Args() - if args.Present() { - ShowCommandHelp(c, args.First()) - } else { - ShowAppHelp(c) - } - }, -} - -var helpSubcommand = Command{ - Name: "help", - Aliases: []string{"h"}, - Usage: "Shows a list of commands or help for one command", - ArgsUsage: "[command]", - Action: func(c *Context) { - args := c.Args() - if args.Present() { - ShowCommandHelp(c, args.First()) - } else { - ShowSubcommandHelp(c) - } - }, -} - -// Prints help for the App or Command -type helpPrinter func(w io.Writer, templ string, data interface{}) - -var HelpPrinter helpPrinter = printHelp - -// Prints version for the App -var VersionPrinter = printVersion - -func ShowAppHelp(c *Context) { - HelpPrinter(c.App.Writer, AppHelpTemplate, c.App) -} - -// Prints the list of subcommands as the default app completion method -func DefaultAppComplete(c *Context) { - for _, command := range c.App.Commands { - for _, name := range command.Names() { - fmt.Fprintln(c.App.Writer, name) - } - } -} - -// Prints help for the given command -func ShowCommandHelp(ctx *Context, command string) { - // show the subcommand help for a command with subcommands - if command == "" { - HelpPrinter(ctx.App.Writer, SubcommandHelpTemplate, ctx.App) - return - } - - for _, c := range ctx.App.Commands { - if c.HasName(command) { - HelpPrinter(ctx.App.Writer, CommandHelpTemplate, c) - return - } - } - - if ctx.App.CommandNotFound != nil { - ctx.App.CommandNotFound(ctx, command) - } else { - fmt.Fprintf(ctx.App.Writer, "No help topic for '%v'\n", command) - } -} - -// Prints help for the given subcommand -func ShowSubcommandHelp(c *Context) { - ShowCommandHelp(c, c.Command.Name) -} - -// Prints the version number of the App -func ShowVersion(c *Context) { - VersionPrinter(c) -} - -func printVersion(c *Context) { - fmt.Fprintf(c.App.Writer, "%v version %v\n", c.App.Name, c.App.Version) -} - -// Prints the lists of commands within a given context -func ShowCompletions(c *Context) { - a := c.App - if a != nil && a.BashComplete != nil { - a.BashComplete(c) - } -} - -// Prints the custom completions for a given command -func ShowCommandCompletions(ctx *Context, command string) { - c := ctx.App.Command(command) - if c != nil && c.BashComplete != nil { - c.BashComplete(ctx) - } -} - -func printHelp(out io.Writer, templ string, data interface{}) { - funcMap := template.FuncMap{ - "join": strings.Join, - } - - w := tabwriter.NewWriter(out, 0, 8, 1, '\t', 0) - t := template.Must(template.New("help").Funcs(funcMap).Parse(templ)) - err := t.Execute(w, data) - if err != nil { - panic(err) - } - w.Flush() -} - -func checkVersion(c *Context) bool { - found := false - if VersionFlag.Name != "" { - eachName(VersionFlag.Name, func(name string) { - if c.GlobalBool(name) || c.Bool(name) { - found = true - } - }) - } - return found -} - -func checkHelp(c *Context) bool { - found := false - if HelpFlag.Name != "" { - eachName(HelpFlag.Name, func(name string) { - if c.GlobalBool(name) || c.Bool(name) { - found = true - } - }) - } - return found -} - -func checkCommandHelp(c *Context, name string) bool { - if c.Bool("h") || c.Bool("help") { - ShowCommandHelp(c, name) - return true - } - - return false -} - -func checkSubcommandHelp(c *Context) bool { - if c.GlobalBool("h") || c.GlobalBool("help") { - ShowSubcommandHelp(c) - return true - } - - return false -} - -func checkCompletions(c *Context) bool { - if (c.GlobalBool(BashCompletionFlag.Name) || c.Bool(BashCompletionFlag.Name)) && c.App.EnableBashCompletion { - ShowCompletions(c) - return true - } - - return false -} - -func checkCommandCompletions(c *Context, name string) bool { - if c.Bool(BashCompletionFlag.Name) && c.App.EnableBashCompletion { - ShowCommandCompletions(c, name) - return true - } - - return false -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/LICENSE b/vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/LICENSE deleted file mode 100644 index 2a7cfd2b..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/LICENSE +++ /dev/null @@ -1,13 +0,0 @@ -Copyright (c) 2012-2013 Dave Collins - -Permission to use, copy, modify, and distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/bypass.go b/vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/bypass.go deleted file mode 100644 index 565bf589..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/bypass.go +++ /dev/null @@ -1,151 +0,0 @@ -// Copyright (c) 2015 Dave Collins -// -// Permission to use, copy, modify, and distribute this software for any -// purpose with or without fee is hereby granted, provided that the above -// copyright notice and this permission notice appear in all copies. -// -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -// NOTE: Due to the following build constraints, this file will only be compiled -// when the code is not running on Google App Engine and "-tags disableunsafe" -// is not added to the go build command line. -// +build !appengine,!disableunsafe - -package spew - -import ( - "reflect" - "unsafe" -) - -const ( - // UnsafeDisabled is a build-time constant which specifies whether or - // not access to the unsafe package is available. - UnsafeDisabled = false - - // ptrSize is the size of a pointer on the current arch. - ptrSize = unsafe.Sizeof((*byte)(nil)) -) - -var ( - // offsetPtr, offsetScalar, and offsetFlag are the offsets for the - // internal reflect.Value fields. These values are valid before golang - // commit ecccf07e7f9d which changed the format. The are also valid - // after commit 82f48826c6c7 which changed the format again to mirror - // the original format. Code in the init function updates these offsets - // as necessary. - offsetPtr = uintptr(ptrSize) - offsetScalar = uintptr(0) - offsetFlag = uintptr(ptrSize * 2) - - // flagKindWidth and flagKindShift indicate various bits that the - // reflect package uses internally to track kind information. - // - // flagRO indicates whether or not the value field of a reflect.Value is - // read-only. - // - // flagIndir indicates whether the value field of a reflect.Value is - // the actual data or a pointer to the data. - // - // These values are valid before golang commit 90a7c3c86944 which - // changed their positions. Code in the init function updates these - // flags as necessary. - flagKindWidth = uintptr(5) - flagKindShift = uintptr(flagKindWidth - 1) - flagRO = uintptr(1 << 0) - flagIndir = uintptr(1 << 1) -) - -func init() { - // Older versions of reflect.Value stored small integers directly in the - // ptr field (which is named val in the older versions). Versions - // between commits ecccf07e7f9d and 82f48826c6c7 added a new field named - // scalar for this purpose which unfortunately came before the flag - // field, so the offset of the flag field is different for those - // versions. - // - // This code constructs a new reflect.Value from a known small integer - // and checks if the size of the reflect.Value struct indicates it has - // the scalar field. When it does, the offsets are updated accordingly. - vv := reflect.ValueOf(0xf00) - if unsafe.Sizeof(vv) == (ptrSize * 4) { - offsetScalar = ptrSize * 2 - offsetFlag = ptrSize * 3 - } - - // Commit 90a7c3c86944 changed the flag positions such that the low - // order bits are the kind. This code extracts the kind from the flags - // field and ensures it's the correct type. When it's not, the flag - // order has been changed to the newer format, so the flags are updated - // accordingly. - upf := unsafe.Pointer(uintptr(unsafe.Pointer(&vv)) + offsetFlag) - upfv := *(*uintptr)(upf) - flagKindMask := uintptr((1<>flagKindShift != uintptr(reflect.Int) { - flagKindShift = 0 - flagRO = 1 << 5 - flagIndir = 1 << 6 - - // Commit adf9b30e5594 modified the flags to separate the - // flagRO flag into two bits which specifies whether or not the - // field is embedded. This causes flagIndir to move over a bit - // and means that flagRO is the combination of either of the - // original flagRO bit and the new bit. - // - // This code detects the change by extracting what used to be - // the indirect bit to ensure it's set. When it's not, the flag - // order has been changed to the newer format, so the flags are - // updated accordingly. - if upfv&flagIndir == 0 { - flagRO = 3 << 5 - flagIndir = 1 << 7 - } - } -} - -// unsafeReflectValue converts the passed reflect.Value into a one that bypasses -// the typical safety restrictions preventing access to unaddressable and -// unexported data. It works by digging the raw pointer to the underlying -// value out of the protected value and generating a new unprotected (unsafe) -// reflect.Value to it. -// -// This allows us to check for implementations of the Stringer and error -// interfaces to be used for pretty printing ordinarily unaddressable and -// inaccessible values such as unexported struct fields. -func unsafeReflectValue(v reflect.Value) (rv reflect.Value) { - indirects := 1 - vt := v.Type() - upv := unsafe.Pointer(uintptr(unsafe.Pointer(&v)) + offsetPtr) - rvf := *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&v)) + offsetFlag)) - if rvf&flagIndir != 0 { - vt = reflect.PtrTo(v.Type()) - indirects++ - } else if offsetScalar != 0 { - // The value is in the scalar field when it's not one of the - // reference types. - switch vt.Kind() { - case reflect.Uintptr: - case reflect.Chan: - case reflect.Func: - case reflect.Map: - case reflect.Ptr: - case reflect.UnsafePointer: - default: - upv = unsafe.Pointer(uintptr(unsafe.Pointer(&v)) + - offsetScalar) - } - } - - pv := reflect.NewAt(vt, upv) - rv = pv - for i := 0; i < indirects; i++ { - rv = rv.Elem() - } - return rv -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go b/vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go deleted file mode 100644 index 457e4123..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (c) 2015 Dave Collins -// -// Permission to use, copy, modify, and distribute this software for any -// purpose with or without fee is hereby granted, provided that the above -// copyright notice and this permission notice appear in all copies. -// -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -// NOTE: Due to the following build constraints, this file will only be compiled -// when either the code is running on Google App Engine or "-tags disableunsafe" -// is added to the go build command line. -// +build appengine disableunsafe - -package spew - -import "reflect" - -const ( - // UnsafeDisabled is a build-time constant which specifies whether or - // not access to the unsafe package is available. - UnsafeDisabled = true -) - -// unsafeReflectValue typically converts the passed reflect.Value into a one -// that bypasses the typical safety restrictions preventing access to -// unaddressable and unexported data. However, doing this relies on access to -// the unsafe package. This is a stub version which simply returns the passed -// reflect.Value when the unsafe package is not available. -func unsafeReflectValue(v reflect.Value) reflect.Value { - return v -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/common.go b/vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/common.go deleted file mode 100644 index 14f02dc1..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/common.go +++ /dev/null @@ -1,341 +0,0 @@ -/* - * Copyright (c) 2013 Dave Collins - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -package spew - -import ( - "bytes" - "fmt" - "io" - "reflect" - "sort" - "strconv" -) - -// Some constants in the form of bytes to avoid string overhead. This mirrors -// the technique used in the fmt package. -var ( - panicBytes = []byte("(PANIC=") - plusBytes = []byte("+") - iBytes = []byte("i") - trueBytes = []byte("true") - falseBytes = []byte("false") - interfaceBytes = []byte("(interface {})") - commaNewlineBytes = []byte(",\n") - newlineBytes = []byte("\n") - openBraceBytes = []byte("{") - openBraceNewlineBytes = []byte("{\n") - closeBraceBytes = []byte("}") - asteriskBytes = []byte("*") - colonBytes = []byte(":") - colonSpaceBytes = []byte(": ") - openParenBytes = []byte("(") - closeParenBytes = []byte(")") - spaceBytes = []byte(" ") - pointerChainBytes = []byte("->") - nilAngleBytes = []byte("") - maxNewlineBytes = []byte("\n") - maxShortBytes = []byte("") - circularBytes = []byte("") - circularShortBytes = []byte("") - invalidAngleBytes = []byte("") - openBracketBytes = []byte("[") - closeBracketBytes = []byte("]") - percentBytes = []byte("%") - precisionBytes = []byte(".") - openAngleBytes = []byte("<") - closeAngleBytes = []byte(">") - openMapBytes = []byte("map[") - closeMapBytes = []byte("]") - lenEqualsBytes = []byte("len=") - capEqualsBytes = []byte("cap=") -) - -// hexDigits is used to map a decimal value to a hex digit. -var hexDigits = "0123456789abcdef" - -// catchPanic handles any panics that might occur during the handleMethods -// calls. -func catchPanic(w io.Writer, v reflect.Value) { - if err := recover(); err != nil { - w.Write(panicBytes) - fmt.Fprintf(w, "%v", err) - w.Write(closeParenBytes) - } -} - -// handleMethods attempts to call the Error and String methods on the underlying -// type the passed reflect.Value represents and outputes the result to Writer w. -// -// It handles panics in any called methods by catching and displaying the error -// as the formatted value. -func handleMethods(cs *ConfigState, w io.Writer, v reflect.Value) (handled bool) { - // We need an interface to check if the type implements the error or - // Stringer interface. However, the reflect package won't give us an - // interface on certain things like unexported struct fields in order - // to enforce visibility rules. We use unsafe, when it's available, - // to bypass these restrictions since this package does not mutate the - // values. - if !v.CanInterface() { - if UnsafeDisabled { - return false - } - - v = unsafeReflectValue(v) - } - - // Choose whether or not to do error and Stringer interface lookups against - // the base type or a pointer to the base type depending on settings. - // Technically calling one of these methods with a pointer receiver can - // mutate the value, however, types which choose to satisify an error or - // Stringer interface with a pointer receiver should not be mutating their - // state inside these interface methods. - if !cs.DisablePointerMethods && !UnsafeDisabled && !v.CanAddr() { - v = unsafeReflectValue(v) - } - if v.CanAddr() { - v = v.Addr() - } - - // Is it an error or Stringer? - switch iface := v.Interface().(type) { - case error: - defer catchPanic(w, v) - if cs.ContinueOnMethod { - w.Write(openParenBytes) - w.Write([]byte(iface.Error())) - w.Write(closeParenBytes) - w.Write(spaceBytes) - return false - } - - w.Write([]byte(iface.Error())) - return true - - case fmt.Stringer: - defer catchPanic(w, v) - if cs.ContinueOnMethod { - w.Write(openParenBytes) - w.Write([]byte(iface.String())) - w.Write(closeParenBytes) - w.Write(spaceBytes) - return false - } - w.Write([]byte(iface.String())) - return true - } - return false -} - -// printBool outputs a boolean value as true or false to Writer w. -func printBool(w io.Writer, val bool) { - if val { - w.Write(trueBytes) - } else { - w.Write(falseBytes) - } -} - -// printInt outputs a signed integer value to Writer w. -func printInt(w io.Writer, val int64, base int) { - w.Write([]byte(strconv.FormatInt(val, base))) -} - -// printUint outputs an unsigned integer value to Writer w. -func printUint(w io.Writer, val uint64, base int) { - w.Write([]byte(strconv.FormatUint(val, base))) -} - -// printFloat outputs a floating point value using the specified precision, -// which is expected to be 32 or 64bit, to Writer w. -func printFloat(w io.Writer, val float64, precision int) { - w.Write([]byte(strconv.FormatFloat(val, 'g', -1, precision))) -} - -// printComplex outputs a complex value using the specified float precision -// for the real and imaginary parts to Writer w. -func printComplex(w io.Writer, c complex128, floatPrecision int) { - r := real(c) - w.Write(openParenBytes) - w.Write([]byte(strconv.FormatFloat(r, 'g', -1, floatPrecision))) - i := imag(c) - if i >= 0 { - w.Write(plusBytes) - } - w.Write([]byte(strconv.FormatFloat(i, 'g', -1, floatPrecision))) - w.Write(iBytes) - w.Write(closeParenBytes) -} - -// printHexPtr outputs a uintptr formatted as hexidecimal with a leading '0x' -// prefix to Writer w. -func printHexPtr(w io.Writer, p uintptr) { - // Null pointer. - num := uint64(p) - if num == 0 { - w.Write(nilAngleBytes) - return - } - - // Max uint64 is 16 bytes in hex + 2 bytes for '0x' prefix - buf := make([]byte, 18) - - // It's simpler to construct the hex string right to left. - base := uint64(16) - i := len(buf) - 1 - for num >= base { - buf[i] = hexDigits[num%base] - num /= base - i-- - } - buf[i] = hexDigits[num] - - // Add '0x' prefix. - i-- - buf[i] = 'x' - i-- - buf[i] = '0' - - // Strip unused leading bytes. - buf = buf[i:] - w.Write(buf) -} - -// valuesSorter implements sort.Interface to allow a slice of reflect.Value -// elements to be sorted. -type valuesSorter struct { - values []reflect.Value - strings []string // either nil or same len and values - cs *ConfigState -} - -// newValuesSorter initializes a valuesSorter instance, which holds a set of -// surrogate keys on which the data should be sorted. It uses flags in -// ConfigState to decide if and how to populate those surrogate keys. -func newValuesSorter(values []reflect.Value, cs *ConfigState) sort.Interface { - vs := &valuesSorter{values: values, cs: cs} - if canSortSimply(vs.values[0].Kind()) { - return vs - } - if !cs.DisableMethods { - vs.strings = make([]string, len(values)) - for i := range vs.values { - b := bytes.Buffer{} - if !handleMethods(cs, &b, vs.values[i]) { - vs.strings = nil - break - } - vs.strings[i] = b.String() - } - } - if vs.strings == nil && cs.SpewKeys { - vs.strings = make([]string, len(values)) - for i := range vs.values { - vs.strings[i] = Sprintf("%#v", vs.values[i].Interface()) - } - } - return vs -} - -// canSortSimply tests whether a reflect.Kind is a primitive that can be sorted -// directly, or whether it should be considered for sorting by surrogate keys -// (if the ConfigState allows it). -func canSortSimply(kind reflect.Kind) bool { - // This switch parallels valueSortLess, except for the default case. - switch kind { - case reflect.Bool: - return true - case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int: - return true - case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint: - return true - case reflect.Float32, reflect.Float64: - return true - case reflect.String: - return true - case reflect.Uintptr: - return true - case reflect.Array: - return true - } - return false -} - -// Len returns the number of values in the slice. It is part of the -// sort.Interface implementation. -func (s *valuesSorter) Len() int { - return len(s.values) -} - -// Swap swaps the values at the passed indices. It is part of the -// sort.Interface implementation. -func (s *valuesSorter) Swap(i, j int) { - s.values[i], s.values[j] = s.values[j], s.values[i] - if s.strings != nil { - s.strings[i], s.strings[j] = s.strings[j], s.strings[i] - } -} - -// valueSortLess returns whether the first value should sort before the second -// value. It is used by valueSorter.Less as part of the sort.Interface -// implementation. -func valueSortLess(a, b reflect.Value) bool { - switch a.Kind() { - case reflect.Bool: - return !a.Bool() && b.Bool() - case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int: - return a.Int() < b.Int() - case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint: - return a.Uint() < b.Uint() - case reflect.Float32, reflect.Float64: - return a.Float() < b.Float() - case reflect.String: - return a.String() < b.String() - case reflect.Uintptr: - return a.Uint() < b.Uint() - case reflect.Array: - // Compare the contents of both arrays. - l := a.Len() - for i := 0; i < l; i++ { - av := a.Index(i) - bv := b.Index(i) - if av.Interface() == bv.Interface() { - continue - } - return valueSortLess(av, bv) - } - } - return a.String() < b.String() -} - -// Less returns whether the value at index i should sort before the -// value at index j. It is part of the sort.Interface implementation. -func (s *valuesSorter) Less(i, j int) bool { - if s.strings == nil { - return valueSortLess(s.values[i], s.values[j]) - } - return s.strings[i] < s.strings[j] -} - -// sortValues is a sort function that handles both native types and any type that -// can be converted to error or Stringer. Other inputs are sorted according to -// their Value.String() value to ensure display stability. -func sortValues(values []reflect.Value, cs *ConfigState) { - if len(values) == 0 { - return - } - sort.Sort(newValuesSorter(values, cs)) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/config.go b/vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/config.go deleted file mode 100644 index ee1ab07b..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/config.go +++ /dev/null @@ -1,297 +0,0 @@ -/* - * Copyright (c) 2013 Dave Collins - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -package spew - -import ( - "bytes" - "fmt" - "io" - "os" -) - -// ConfigState houses the configuration options used by spew to format and -// display values. There is a global instance, Config, that is used to control -// all top-level Formatter and Dump functionality. Each ConfigState instance -// provides methods equivalent to the top-level functions. -// -// The zero value for ConfigState provides no indentation. You would typically -// want to set it to a space or a tab. -// -// Alternatively, you can use NewDefaultConfig to get a ConfigState instance -// with default settings. See the documentation of NewDefaultConfig for default -// values. -type ConfigState struct { - // Indent specifies the string to use for each indentation level. The - // global config instance that all top-level functions use set this to a - // single space by default. If you would like more indentation, you might - // set this to a tab with "\t" or perhaps two spaces with " ". - Indent string - - // MaxDepth controls the maximum number of levels to descend into nested - // data structures. The default, 0, means there is no limit. - // - // NOTE: Circular data structures are properly detected, so it is not - // necessary to set this value unless you specifically want to limit deeply - // nested data structures. - MaxDepth int - - // DisableMethods specifies whether or not error and Stringer interfaces are - // invoked for types that implement them. - DisableMethods bool - - // DisablePointerMethods specifies whether or not to check for and invoke - // error and Stringer interfaces on types which only accept a pointer - // receiver when the current type is not a pointer. - // - // NOTE: This might be an unsafe action since calling one of these methods - // with a pointer receiver could technically mutate the value, however, - // in practice, types which choose to satisify an error or Stringer - // interface with a pointer receiver should not be mutating their state - // inside these interface methods. As a result, this option relies on - // access to the unsafe package, so it will not have any effect when - // running in environments without access to the unsafe package such as - // Google App Engine or with the "disableunsafe" build tag specified. - DisablePointerMethods bool - - // ContinueOnMethod specifies whether or not recursion should continue once - // a custom error or Stringer interface is invoked. The default, false, - // means it will print the results of invoking the custom error or Stringer - // interface and return immediately instead of continuing to recurse into - // the internals of the data type. - // - // NOTE: This flag does not have any effect if method invocation is disabled - // via the DisableMethods or DisablePointerMethods options. - ContinueOnMethod bool - - // SortKeys specifies map keys should be sorted before being printed. Use - // this to have a more deterministic, diffable output. Note that only - // native types (bool, int, uint, floats, uintptr and string) and types - // that support the error or Stringer interfaces (if methods are - // enabled) are supported, with other types sorted according to the - // reflect.Value.String() output which guarantees display stability. - SortKeys bool - - // SpewKeys specifies that, as a last resort attempt, map keys should - // be spewed to strings and sorted by those strings. This is only - // considered if SortKeys is true. - SpewKeys bool -} - -// Config is the active configuration of the top-level functions. -// The configuration can be changed by modifying the contents of spew.Config. -var Config = ConfigState{Indent: " "} - -// Errorf is a wrapper for fmt.Errorf that treats each argument as if it were -// passed with a Formatter interface returned by c.NewFormatter. It returns -// the formatted string as a value that satisfies error. See NewFormatter -// for formatting details. -// -// This function is shorthand for the following syntax: -// -// fmt.Errorf(format, c.NewFormatter(a), c.NewFormatter(b)) -func (c *ConfigState) Errorf(format string, a ...interface{}) (err error) { - return fmt.Errorf(format, c.convertArgs(a)...) -} - -// Fprint is a wrapper for fmt.Fprint that treats each argument as if it were -// passed with a Formatter interface returned by c.NewFormatter. It returns -// the number of bytes written and any write error encountered. See -// NewFormatter for formatting details. -// -// This function is shorthand for the following syntax: -// -// fmt.Fprint(w, c.NewFormatter(a), c.NewFormatter(b)) -func (c *ConfigState) Fprint(w io.Writer, a ...interface{}) (n int, err error) { - return fmt.Fprint(w, c.convertArgs(a)...) -} - -// Fprintf is a wrapper for fmt.Fprintf that treats each argument as if it were -// passed with a Formatter interface returned by c.NewFormatter. It returns -// the number of bytes written and any write error encountered. See -// NewFormatter for formatting details. -// -// This function is shorthand for the following syntax: -// -// fmt.Fprintf(w, format, c.NewFormatter(a), c.NewFormatter(b)) -func (c *ConfigState) Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error) { - return fmt.Fprintf(w, format, c.convertArgs(a)...) -} - -// Fprintln is a wrapper for fmt.Fprintln that treats each argument as if it -// passed with a Formatter interface returned by c.NewFormatter. See -// NewFormatter for formatting details. -// -// This function is shorthand for the following syntax: -// -// fmt.Fprintln(w, c.NewFormatter(a), c.NewFormatter(b)) -func (c *ConfigState) Fprintln(w io.Writer, a ...interface{}) (n int, err error) { - return fmt.Fprintln(w, c.convertArgs(a)...) -} - -// Print is a wrapper for fmt.Print that treats each argument as if it were -// passed with a Formatter interface returned by c.NewFormatter. It returns -// the number of bytes written and any write error encountered. See -// NewFormatter for formatting details. -// -// This function is shorthand for the following syntax: -// -// fmt.Print(c.NewFormatter(a), c.NewFormatter(b)) -func (c *ConfigState) Print(a ...interface{}) (n int, err error) { - return fmt.Print(c.convertArgs(a)...) -} - -// Printf is a wrapper for fmt.Printf that treats each argument as if it were -// passed with a Formatter interface returned by c.NewFormatter. It returns -// the number of bytes written and any write error encountered. See -// NewFormatter for formatting details. -// -// This function is shorthand for the following syntax: -// -// fmt.Printf(format, c.NewFormatter(a), c.NewFormatter(b)) -func (c *ConfigState) Printf(format string, a ...interface{}) (n int, err error) { - return fmt.Printf(format, c.convertArgs(a)...) -} - -// Println is a wrapper for fmt.Println that treats each argument as if it were -// passed with a Formatter interface returned by c.NewFormatter. It returns -// the number of bytes written and any write error encountered. See -// NewFormatter for formatting details. -// -// This function is shorthand for the following syntax: -// -// fmt.Println(c.NewFormatter(a), c.NewFormatter(b)) -func (c *ConfigState) Println(a ...interface{}) (n int, err error) { - return fmt.Println(c.convertArgs(a)...) -} - -// Sprint is a wrapper for fmt.Sprint that treats each argument as if it were -// passed with a Formatter interface returned by c.NewFormatter. It returns -// the resulting string. See NewFormatter for formatting details. -// -// This function is shorthand for the following syntax: -// -// fmt.Sprint(c.NewFormatter(a), c.NewFormatter(b)) -func (c *ConfigState) Sprint(a ...interface{}) string { - return fmt.Sprint(c.convertArgs(a)...) -} - -// Sprintf is a wrapper for fmt.Sprintf that treats each argument as if it were -// passed with a Formatter interface returned by c.NewFormatter. It returns -// the resulting string. See NewFormatter for formatting details. -// -// This function is shorthand for the following syntax: -// -// fmt.Sprintf(format, c.NewFormatter(a), c.NewFormatter(b)) -func (c *ConfigState) Sprintf(format string, a ...interface{}) string { - return fmt.Sprintf(format, c.convertArgs(a)...) -} - -// Sprintln is a wrapper for fmt.Sprintln that treats each argument as if it -// were passed with a Formatter interface returned by c.NewFormatter. It -// returns the resulting string. See NewFormatter for formatting details. -// -// This function is shorthand for the following syntax: -// -// fmt.Sprintln(c.NewFormatter(a), c.NewFormatter(b)) -func (c *ConfigState) Sprintln(a ...interface{}) string { - return fmt.Sprintln(c.convertArgs(a)...) -} - -/* -NewFormatter returns a custom formatter that satisfies the fmt.Formatter -interface. As a result, it integrates cleanly with standard fmt package -printing functions. The formatter is useful for inline printing of smaller data -types similar to the standard %v format specifier. - -The custom formatter only responds to the %v (most compact), %+v (adds pointer -addresses), %#v (adds types), and %#+v (adds types and pointer addresses) verb -combinations. Any other verbs such as %x and %q will be sent to the the -standard fmt package for formatting. In addition, the custom formatter ignores -the width and precision arguments (however they will still work on the format -specifiers not handled by the custom formatter). - -Typically this function shouldn't be called directly. It is much easier to make -use of the custom formatter by calling one of the convenience functions such as -c.Printf, c.Println, or c.Printf. -*/ -func (c *ConfigState) NewFormatter(v interface{}) fmt.Formatter { - return newFormatter(c, v) -} - -// Fdump formats and displays the passed arguments to io.Writer w. It formats -// exactly the same as Dump. -func (c *ConfigState) Fdump(w io.Writer, a ...interface{}) { - fdump(c, w, a...) -} - -/* -Dump displays the passed parameters to standard out with newlines, customizable -indentation, and additional debug information such as complete types and all -pointer addresses used to indirect to the final value. It provides the -following features over the built-in printing facilities provided by the fmt -package: - - * Pointers are dereferenced and followed - * Circular data structures are detected and handled properly - * Custom Stringer/error interfaces are optionally invoked, including - on unexported types - * Custom types which only implement the Stringer/error interfaces via - a pointer receiver are optionally invoked when passing non-pointer - variables - * Byte arrays and slices are dumped like the hexdump -C command which - includes offsets, byte values in hex, and ASCII output - -The configuration options are controlled by modifying the public members -of c. See ConfigState for options documentation. - -See Fdump if you would prefer dumping to an arbitrary io.Writer or Sdump to -get the formatted result as a string. -*/ -func (c *ConfigState) Dump(a ...interface{}) { - fdump(c, os.Stdout, a...) -} - -// Sdump returns a string with the passed arguments formatted exactly the same -// as Dump. -func (c *ConfigState) Sdump(a ...interface{}) string { - var buf bytes.Buffer - fdump(c, &buf, a...) - return buf.String() -} - -// convertArgs accepts a slice of arguments and returns a slice of the same -// length with each argument converted to a spew Formatter interface using -// the ConfigState associated with s. -func (c *ConfigState) convertArgs(args []interface{}) (formatters []interface{}) { - formatters = make([]interface{}, len(args)) - for index, arg := range args { - formatters[index] = newFormatter(c, arg) - } - return formatters -} - -// NewDefaultConfig returns a ConfigState with the following default settings. -// -// Indent: " " -// MaxDepth: 0 -// DisableMethods: false -// DisablePointerMethods: false -// ContinueOnMethod: false -// SortKeys: false -func NewDefaultConfig() *ConfigState { - return &ConfigState{Indent: " "} -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/doc.go b/vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/doc.go deleted file mode 100644 index 5be0c406..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/doc.go +++ /dev/null @@ -1,202 +0,0 @@ -/* - * Copyright (c) 2013 Dave Collins - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -/* -Package spew implements a deep pretty printer for Go data structures to aid in -debugging. - -A quick overview of the additional features spew provides over the built-in -printing facilities for Go data types are as follows: - - * Pointers are dereferenced and followed - * Circular data structures are detected and handled properly - * Custom Stringer/error interfaces are optionally invoked, including - on unexported types - * Custom types which only implement the Stringer/error interfaces via - a pointer receiver are optionally invoked when passing non-pointer - variables - * Byte arrays and slices are dumped like the hexdump -C command which - includes offsets, byte values in hex, and ASCII output (only when using - Dump style) - -There are two different approaches spew allows for dumping Go data structures: - - * Dump style which prints with newlines, customizable indentation, - and additional debug information such as types and all pointer addresses - used to indirect to the final value - * A custom Formatter interface that integrates cleanly with the standard fmt - package and replaces %v, %+v, %#v, and %#+v to provide inline printing - similar to the default %v while providing the additional functionality - outlined above and passing unsupported format verbs such as %x and %q - along to fmt - -Quick Start - -This section demonstrates how to quickly get started with spew. See the -sections below for further details on formatting and configuration options. - -To dump a variable with full newlines, indentation, type, and pointer -information use Dump, Fdump, or Sdump: - spew.Dump(myVar1, myVar2, ...) - spew.Fdump(someWriter, myVar1, myVar2, ...) - str := spew.Sdump(myVar1, myVar2, ...) - -Alternatively, if you would prefer to use format strings with a compacted inline -printing style, use the convenience wrappers Printf, Fprintf, etc with -%v (most compact), %+v (adds pointer addresses), %#v (adds types), or -%#+v (adds types and pointer addresses): - spew.Printf("myVar1: %v -- myVar2: %+v", myVar1, myVar2) - spew.Printf("myVar3: %#v -- myVar4: %#+v", myVar3, myVar4) - spew.Fprintf(someWriter, "myVar1: %v -- myVar2: %+v", myVar1, myVar2) - spew.Fprintf(someWriter, "myVar3: %#v -- myVar4: %#+v", myVar3, myVar4) - -Configuration Options - -Configuration of spew is handled by fields in the ConfigState type. For -convenience, all of the top-level functions use a global state available -via the spew.Config global. - -It is also possible to create a ConfigState instance that provides methods -equivalent to the top-level functions. This allows concurrent configuration -options. See the ConfigState documentation for more details. - -The following configuration options are available: - * Indent - String to use for each indentation level for Dump functions. - It is a single space by default. A popular alternative is "\t". - - * MaxDepth - Maximum number of levels to descend into nested data structures. - There is no limit by default. - - * DisableMethods - Disables invocation of error and Stringer interface methods. - Method invocation is enabled by default. - - * DisablePointerMethods - Disables invocation of error and Stringer interface methods on types - which only accept pointer receivers from non-pointer variables. - Pointer method invocation is enabled by default. - - * ContinueOnMethod - Enables recursion into types after invoking error and Stringer interface - methods. Recursion after method invocation is disabled by default. - - * SortKeys - Specifies map keys should be sorted before being printed. Use - this to have a more deterministic, diffable output. Note that - only native types (bool, int, uint, floats, uintptr and string) - and types which implement error or Stringer interfaces are - supported with other types sorted according to the - reflect.Value.String() output which guarantees display - stability. Natural map order is used by default. - - * SpewKeys - Specifies that, as a last resort attempt, map keys should be - spewed to strings and sorted by those strings. This is only - considered if SortKeys is true. - -Dump Usage - -Simply call spew.Dump with a list of variables you want to dump: - - spew.Dump(myVar1, myVar2, ...) - -You may also call spew.Fdump if you would prefer to output to an arbitrary -io.Writer. For example, to dump to standard error: - - spew.Fdump(os.Stderr, myVar1, myVar2, ...) - -A third option is to call spew.Sdump to get the formatted output as a string: - - str := spew.Sdump(myVar1, myVar2, ...) - -Sample Dump Output - -See the Dump example for details on the setup of the types and variables being -shown here. - - (main.Foo) { - unexportedField: (*main.Bar)(0xf84002e210)({ - flag: (main.Flag) flagTwo, - data: (uintptr) - }), - ExportedField: (map[interface {}]interface {}) (len=1) { - (string) (len=3) "one": (bool) true - } - } - -Byte (and uint8) arrays and slices are displayed uniquely like the hexdump -C -command as shown. - ([]uint8) (len=32 cap=32) { - 00000000 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 |............... | - 00000010 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 |!"#$%&'()*+,-./0| - 00000020 31 32 |12| - } - -Custom Formatter - -Spew provides a custom formatter that implements the fmt.Formatter interface -so that it integrates cleanly with standard fmt package printing functions. The -formatter is useful for inline printing of smaller data types similar to the -standard %v format specifier. - -The custom formatter only responds to the %v (most compact), %+v (adds pointer -addresses), %#v (adds types), or %#+v (adds types and pointer addresses) verb -combinations. Any other verbs such as %x and %q will be sent to the the -standard fmt package for formatting. In addition, the custom formatter ignores -the width and precision arguments (however they will still work on the format -specifiers not handled by the custom formatter). - -Custom Formatter Usage - -The simplest way to make use of the spew custom formatter is to call one of the -convenience functions such as spew.Printf, spew.Println, or spew.Printf. The -functions have syntax you are most likely already familiar with: - - spew.Printf("myVar1: %v -- myVar2: %+v", myVar1, myVar2) - spew.Printf("myVar3: %#v -- myVar4: %#+v", myVar3, myVar4) - spew.Println(myVar, myVar2) - spew.Fprintf(os.Stderr, "myVar1: %v -- myVar2: %+v", myVar1, myVar2) - spew.Fprintf(os.Stderr, "myVar3: %#v -- myVar4: %#+v", myVar3, myVar4) - -See the Index for the full list convenience functions. - -Sample Formatter Output - -Double pointer to a uint8: - %v: <**>5 - %+v: <**>(0xf8400420d0->0xf8400420c8)5 - %#v: (**uint8)5 - %#+v: (**uint8)(0xf8400420d0->0xf8400420c8)5 - -Pointer to circular struct with a uint8 field and a pointer to itself: - %v: <*>{1 <*>} - %+v: <*>(0xf84003e260){ui8:1 c:<*>(0xf84003e260)} - %#v: (*main.circular){ui8:(uint8)1 c:(*main.circular)} - %#+v: (*main.circular)(0xf84003e260){ui8:(uint8)1 c:(*main.circular)(0xf84003e260)} - -See the Printf example for details on the setup of variables being shown -here. - -Errors - -Since it is possible for custom Stringer/error interfaces to panic, spew -detects them and handles them internally by printing the panic information -inline with the output. Since spew is intended to provide deep pretty printing -capabilities on structures, it intentionally does not return any errors. -*/ -package spew diff --git a/vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/dump.go b/vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/dump.go deleted file mode 100644 index a0ff95e2..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/dump.go +++ /dev/null @@ -1,509 +0,0 @@ -/* - * Copyright (c) 2013 Dave Collins - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -package spew - -import ( - "bytes" - "encoding/hex" - "fmt" - "io" - "os" - "reflect" - "regexp" - "strconv" - "strings" -) - -var ( - // uint8Type is a reflect.Type representing a uint8. It is used to - // convert cgo types to uint8 slices for hexdumping. - uint8Type = reflect.TypeOf(uint8(0)) - - // cCharRE is a regular expression that matches a cgo char. - // It is used to detect character arrays to hexdump them. - cCharRE = regexp.MustCompile("^.*\\._Ctype_char$") - - // cUnsignedCharRE is a regular expression that matches a cgo unsigned - // char. It is used to detect unsigned character arrays to hexdump - // them. - cUnsignedCharRE = regexp.MustCompile("^.*\\._Ctype_unsignedchar$") - - // cUint8tCharRE is a regular expression that matches a cgo uint8_t. - // It is used to detect uint8_t arrays to hexdump them. - cUint8tCharRE = regexp.MustCompile("^.*\\._Ctype_uint8_t$") -) - -// dumpState contains information about the state of a dump operation. -type dumpState struct { - w io.Writer - depth int - pointers map[uintptr]int - ignoreNextType bool - ignoreNextIndent bool - cs *ConfigState -} - -// indent performs indentation according to the depth level and cs.Indent -// option. -func (d *dumpState) indent() { - if d.ignoreNextIndent { - d.ignoreNextIndent = false - return - } - d.w.Write(bytes.Repeat([]byte(d.cs.Indent), d.depth)) -} - -// unpackValue returns values inside of non-nil interfaces when possible. -// This is useful for data types like structs, arrays, slices, and maps which -// can contain varying types packed inside an interface. -func (d *dumpState) unpackValue(v reflect.Value) reflect.Value { - if v.Kind() == reflect.Interface && !v.IsNil() { - v = v.Elem() - } - return v -} - -// dumpPtr handles formatting of pointers by indirecting them as necessary. -func (d *dumpState) dumpPtr(v reflect.Value) { - // Remove pointers at or below the current depth from map used to detect - // circular refs. - for k, depth := range d.pointers { - if depth >= d.depth { - delete(d.pointers, k) - } - } - - // Keep list of all dereferenced pointers to show later. - pointerChain := make([]uintptr, 0) - - // Figure out how many levels of indirection there are by dereferencing - // pointers and unpacking interfaces down the chain while detecting circular - // references. - nilFound := false - cycleFound := false - indirects := 0 - ve := v - for ve.Kind() == reflect.Ptr { - if ve.IsNil() { - nilFound = true - break - } - indirects++ - addr := ve.Pointer() - pointerChain = append(pointerChain, addr) - if pd, ok := d.pointers[addr]; ok && pd < d.depth { - cycleFound = true - indirects-- - break - } - d.pointers[addr] = d.depth - - ve = ve.Elem() - if ve.Kind() == reflect.Interface { - if ve.IsNil() { - nilFound = true - break - } - ve = ve.Elem() - } - } - - // Display type information. - d.w.Write(openParenBytes) - d.w.Write(bytes.Repeat(asteriskBytes, indirects)) - d.w.Write([]byte(ve.Type().String())) - d.w.Write(closeParenBytes) - - // Display pointer information. - if len(pointerChain) > 0 { - d.w.Write(openParenBytes) - for i, addr := range pointerChain { - if i > 0 { - d.w.Write(pointerChainBytes) - } - printHexPtr(d.w, addr) - } - d.w.Write(closeParenBytes) - } - - // Display dereferenced value. - d.w.Write(openParenBytes) - switch { - case nilFound == true: - d.w.Write(nilAngleBytes) - - case cycleFound == true: - d.w.Write(circularBytes) - - default: - d.ignoreNextType = true - d.dump(ve) - } - d.w.Write(closeParenBytes) -} - -// dumpSlice handles formatting of arrays and slices. Byte (uint8 under -// reflection) arrays and slices are dumped in hexdump -C fashion. -func (d *dumpState) dumpSlice(v reflect.Value) { - // Determine whether this type should be hex dumped or not. Also, - // for types which should be hexdumped, try to use the underlying data - // first, then fall back to trying to convert them to a uint8 slice. - var buf []uint8 - doConvert := false - doHexDump := false - numEntries := v.Len() - if numEntries > 0 { - vt := v.Index(0).Type() - vts := vt.String() - switch { - // C types that need to be converted. - case cCharRE.MatchString(vts): - fallthrough - case cUnsignedCharRE.MatchString(vts): - fallthrough - case cUint8tCharRE.MatchString(vts): - doConvert = true - - // Try to use existing uint8 slices and fall back to converting - // and copying if that fails. - case vt.Kind() == reflect.Uint8: - // We need an addressable interface to convert the type - // to a byte slice. However, the reflect package won't - // give us an interface on certain things like - // unexported struct fields in order to enforce - // visibility rules. We use unsafe, when available, to - // bypass these restrictions since this package does not - // mutate the values. - vs := v - if !vs.CanInterface() || !vs.CanAddr() { - vs = unsafeReflectValue(vs) - } - if !UnsafeDisabled { - vs = vs.Slice(0, numEntries) - - // Use the existing uint8 slice if it can be - // type asserted. - iface := vs.Interface() - if slice, ok := iface.([]uint8); ok { - buf = slice - doHexDump = true - break - } - } - - // The underlying data needs to be converted if it can't - // be type asserted to a uint8 slice. - doConvert = true - } - - // Copy and convert the underlying type if needed. - if doConvert && vt.ConvertibleTo(uint8Type) { - // Convert and copy each element into a uint8 byte - // slice. - buf = make([]uint8, numEntries) - for i := 0; i < numEntries; i++ { - vv := v.Index(i) - buf[i] = uint8(vv.Convert(uint8Type).Uint()) - } - doHexDump = true - } - } - - // Hexdump the entire slice as needed. - if doHexDump { - indent := strings.Repeat(d.cs.Indent, d.depth) - str := indent + hex.Dump(buf) - str = strings.Replace(str, "\n", "\n"+indent, -1) - str = strings.TrimRight(str, d.cs.Indent) - d.w.Write([]byte(str)) - return - } - - // Recursively call dump for each item. - for i := 0; i < numEntries; i++ { - d.dump(d.unpackValue(v.Index(i))) - if i < (numEntries - 1) { - d.w.Write(commaNewlineBytes) - } else { - d.w.Write(newlineBytes) - } - } -} - -// dump is the main workhorse for dumping a value. It uses the passed reflect -// value to figure out what kind of object we are dealing with and formats it -// appropriately. It is a recursive function, however circular data structures -// are detected and handled properly. -func (d *dumpState) dump(v reflect.Value) { - // Handle invalid reflect values immediately. - kind := v.Kind() - if kind == reflect.Invalid { - d.w.Write(invalidAngleBytes) - return - } - - // Handle pointers specially. - if kind == reflect.Ptr { - d.indent() - d.dumpPtr(v) - return - } - - // Print type information unless already handled elsewhere. - if !d.ignoreNextType { - d.indent() - d.w.Write(openParenBytes) - d.w.Write([]byte(v.Type().String())) - d.w.Write(closeParenBytes) - d.w.Write(spaceBytes) - } - d.ignoreNextType = false - - // Display length and capacity if the built-in len and cap functions - // work with the value's kind and the len/cap itself is non-zero. - valueLen, valueCap := 0, 0 - switch v.Kind() { - case reflect.Array, reflect.Slice, reflect.Chan: - valueLen, valueCap = v.Len(), v.Cap() - case reflect.Map, reflect.String: - valueLen = v.Len() - } - if valueLen != 0 || valueCap != 0 { - d.w.Write(openParenBytes) - if valueLen != 0 { - d.w.Write(lenEqualsBytes) - printInt(d.w, int64(valueLen), 10) - } - if valueCap != 0 { - if valueLen != 0 { - d.w.Write(spaceBytes) - } - d.w.Write(capEqualsBytes) - printInt(d.w, int64(valueCap), 10) - } - d.w.Write(closeParenBytes) - d.w.Write(spaceBytes) - } - - // Call Stringer/error interfaces if they exist and the handle methods flag - // is enabled - if !d.cs.DisableMethods { - if (kind != reflect.Invalid) && (kind != reflect.Interface) { - if handled := handleMethods(d.cs, d.w, v); handled { - return - } - } - } - - switch kind { - case reflect.Invalid: - // Do nothing. We should never get here since invalid has already - // been handled above. - - case reflect.Bool: - printBool(d.w, v.Bool()) - - case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int: - printInt(d.w, v.Int(), 10) - - case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint: - printUint(d.w, v.Uint(), 10) - - case reflect.Float32: - printFloat(d.w, v.Float(), 32) - - case reflect.Float64: - printFloat(d.w, v.Float(), 64) - - case reflect.Complex64: - printComplex(d.w, v.Complex(), 32) - - case reflect.Complex128: - printComplex(d.w, v.Complex(), 64) - - case reflect.Slice: - if v.IsNil() { - d.w.Write(nilAngleBytes) - break - } - fallthrough - - case reflect.Array: - d.w.Write(openBraceNewlineBytes) - d.depth++ - if (d.cs.MaxDepth != 0) && (d.depth > d.cs.MaxDepth) { - d.indent() - d.w.Write(maxNewlineBytes) - } else { - d.dumpSlice(v) - } - d.depth-- - d.indent() - d.w.Write(closeBraceBytes) - - case reflect.String: - d.w.Write([]byte(strconv.Quote(v.String()))) - - case reflect.Interface: - // The only time we should get here is for nil interfaces due to - // unpackValue calls. - if v.IsNil() { - d.w.Write(nilAngleBytes) - } - - case reflect.Ptr: - // Do nothing. We should never get here since pointers have already - // been handled above. - - case reflect.Map: - // nil maps should be indicated as different than empty maps - if v.IsNil() { - d.w.Write(nilAngleBytes) - break - } - - d.w.Write(openBraceNewlineBytes) - d.depth++ - if (d.cs.MaxDepth != 0) && (d.depth > d.cs.MaxDepth) { - d.indent() - d.w.Write(maxNewlineBytes) - } else { - numEntries := v.Len() - keys := v.MapKeys() - if d.cs.SortKeys { - sortValues(keys, d.cs) - } - for i, key := range keys { - d.dump(d.unpackValue(key)) - d.w.Write(colonSpaceBytes) - d.ignoreNextIndent = true - d.dump(d.unpackValue(v.MapIndex(key))) - if i < (numEntries - 1) { - d.w.Write(commaNewlineBytes) - } else { - d.w.Write(newlineBytes) - } - } - } - d.depth-- - d.indent() - d.w.Write(closeBraceBytes) - - case reflect.Struct: - d.w.Write(openBraceNewlineBytes) - d.depth++ - if (d.cs.MaxDepth != 0) && (d.depth > d.cs.MaxDepth) { - d.indent() - d.w.Write(maxNewlineBytes) - } else { - vt := v.Type() - numFields := v.NumField() - for i := 0; i < numFields; i++ { - d.indent() - vtf := vt.Field(i) - d.w.Write([]byte(vtf.Name)) - d.w.Write(colonSpaceBytes) - d.ignoreNextIndent = true - d.dump(d.unpackValue(v.Field(i))) - if i < (numFields - 1) { - d.w.Write(commaNewlineBytes) - } else { - d.w.Write(newlineBytes) - } - } - } - d.depth-- - d.indent() - d.w.Write(closeBraceBytes) - - case reflect.Uintptr: - printHexPtr(d.w, uintptr(v.Uint())) - - case reflect.UnsafePointer, reflect.Chan, reflect.Func: - printHexPtr(d.w, v.Pointer()) - - // There were not any other types at the time this code was written, but - // fall back to letting the default fmt package handle it in case any new - // types are added. - default: - if v.CanInterface() { - fmt.Fprintf(d.w, "%v", v.Interface()) - } else { - fmt.Fprintf(d.w, "%v", v.String()) - } - } -} - -// fdump is a helper function to consolidate the logic from the various public -// methods which take varying writers and config states. -func fdump(cs *ConfigState, w io.Writer, a ...interface{}) { - for _, arg := range a { - if arg == nil { - w.Write(interfaceBytes) - w.Write(spaceBytes) - w.Write(nilAngleBytes) - w.Write(newlineBytes) - continue - } - - d := dumpState{w: w, cs: cs} - d.pointers = make(map[uintptr]int) - d.dump(reflect.ValueOf(arg)) - d.w.Write(newlineBytes) - } -} - -// Fdump formats and displays the passed arguments to io.Writer w. It formats -// exactly the same as Dump. -func Fdump(w io.Writer, a ...interface{}) { - fdump(&Config, w, a...) -} - -// Sdump returns a string with the passed arguments formatted exactly the same -// as Dump. -func Sdump(a ...interface{}) string { - var buf bytes.Buffer - fdump(&Config, &buf, a...) - return buf.String() -} - -/* -Dump displays the passed parameters to standard out with newlines, customizable -indentation, and additional debug information such as complete types and all -pointer addresses used to indirect to the final value. It provides the -following features over the built-in printing facilities provided by the fmt -package: - - * Pointers are dereferenced and followed - * Circular data structures are detected and handled properly - * Custom Stringer/error interfaces are optionally invoked, including - on unexported types - * Custom types which only implement the Stringer/error interfaces via - a pointer receiver are optionally invoked when passing non-pointer - variables - * Byte arrays and slices are dumped like the hexdump -C command which - includes offsets, byte values in hex, and ASCII output - -The configuration options are controlled by an exported package global, -spew.Config. See ConfigState for options documentation. - -See Fdump if you would prefer dumping to an arbitrary io.Writer or Sdump to -get the formatted result as a string. -*/ -func Dump(a ...interface{}) { - fdump(&Config, os.Stdout, a...) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/format.go b/vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/format.go deleted file mode 100644 index ecf3b80e..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/format.go +++ /dev/null @@ -1,419 +0,0 @@ -/* - * Copyright (c) 2013 Dave Collins - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -package spew - -import ( - "bytes" - "fmt" - "reflect" - "strconv" - "strings" -) - -// supportedFlags is a list of all the character flags supported by fmt package. -const supportedFlags = "0-+# " - -// formatState implements the fmt.Formatter interface and contains information -// about the state of a formatting operation. The NewFormatter function can -// be used to get a new Formatter which can be used directly as arguments -// in standard fmt package printing calls. -type formatState struct { - value interface{} - fs fmt.State - depth int - pointers map[uintptr]int - ignoreNextType bool - cs *ConfigState -} - -// buildDefaultFormat recreates the original format string without precision -// and width information to pass in to fmt.Sprintf in the case of an -// unrecognized type. Unless new types are added to the language, this -// function won't ever be called. -func (f *formatState) buildDefaultFormat() (format string) { - buf := bytes.NewBuffer(percentBytes) - - for _, flag := range supportedFlags { - if f.fs.Flag(int(flag)) { - buf.WriteRune(flag) - } - } - - buf.WriteRune('v') - - format = buf.String() - return format -} - -// constructOrigFormat recreates the original format string including precision -// and width information to pass along to the standard fmt package. This allows -// automatic deferral of all format strings this package doesn't support. -func (f *formatState) constructOrigFormat(verb rune) (format string) { - buf := bytes.NewBuffer(percentBytes) - - for _, flag := range supportedFlags { - if f.fs.Flag(int(flag)) { - buf.WriteRune(flag) - } - } - - if width, ok := f.fs.Width(); ok { - buf.WriteString(strconv.Itoa(width)) - } - - if precision, ok := f.fs.Precision(); ok { - buf.Write(precisionBytes) - buf.WriteString(strconv.Itoa(precision)) - } - - buf.WriteRune(verb) - - format = buf.String() - return format -} - -// unpackValue returns values inside of non-nil interfaces when possible and -// ensures that types for values which have been unpacked from an interface -// are displayed when the show types flag is also set. -// This is useful for data types like structs, arrays, slices, and maps which -// can contain varying types packed inside an interface. -func (f *formatState) unpackValue(v reflect.Value) reflect.Value { - if v.Kind() == reflect.Interface { - f.ignoreNextType = false - if !v.IsNil() { - v = v.Elem() - } - } - return v -} - -// formatPtr handles formatting of pointers by indirecting them as necessary. -func (f *formatState) formatPtr(v reflect.Value) { - // Display nil if top level pointer is nil. - showTypes := f.fs.Flag('#') - if v.IsNil() && (!showTypes || f.ignoreNextType) { - f.fs.Write(nilAngleBytes) - return - } - - // Remove pointers at or below the current depth from map used to detect - // circular refs. - for k, depth := range f.pointers { - if depth >= f.depth { - delete(f.pointers, k) - } - } - - // Keep list of all dereferenced pointers to possibly show later. - pointerChain := make([]uintptr, 0) - - // Figure out how many levels of indirection there are by derferencing - // pointers and unpacking interfaces down the chain while detecting circular - // references. - nilFound := false - cycleFound := false - indirects := 0 - ve := v - for ve.Kind() == reflect.Ptr { - if ve.IsNil() { - nilFound = true - break - } - indirects++ - addr := ve.Pointer() - pointerChain = append(pointerChain, addr) - if pd, ok := f.pointers[addr]; ok && pd < f.depth { - cycleFound = true - indirects-- - break - } - f.pointers[addr] = f.depth - - ve = ve.Elem() - if ve.Kind() == reflect.Interface { - if ve.IsNil() { - nilFound = true - break - } - ve = ve.Elem() - } - } - - // Display type or indirection level depending on flags. - if showTypes && !f.ignoreNextType { - f.fs.Write(openParenBytes) - f.fs.Write(bytes.Repeat(asteriskBytes, indirects)) - f.fs.Write([]byte(ve.Type().String())) - f.fs.Write(closeParenBytes) - } else { - if nilFound || cycleFound { - indirects += strings.Count(ve.Type().String(), "*") - } - f.fs.Write(openAngleBytes) - f.fs.Write([]byte(strings.Repeat("*", indirects))) - f.fs.Write(closeAngleBytes) - } - - // Display pointer information depending on flags. - if f.fs.Flag('+') && (len(pointerChain) > 0) { - f.fs.Write(openParenBytes) - for i, addr := range pointerChain { - if i > 0 { - f.fs.Write(pointerChainBytes) - } - printHexPtr(f.fs, addr) - } - f.fs.Write(closeParenBytes) - } - - // Display dereferenced value. - switch { - case nilFound == true: - f.fs.Write(nilAngleBytes) - - case cycleFound == true: - f.fs.Write(circularShortBytes) - - default: - f.ignoreNextType = true - f.format(ve) - } -} - -// format is the main workhorse for providing the Formatter interface. It -// uses the passed reflect value to figure out what kind of object we are -// dealing with and formats it appropriately. It is a recursive function, -// however circular data structures are detected and handled properly. -func (f *formatState) format(v reflect.Value) { - // Handle invalid reflect values immediately. - kind := v.Kind() - if kind == reflect.Invalid { - f.fs.Write(invalidAngleBytes) - return - } - - // Handle pointers specially. - if kind == reflect.Ptr { - f.formatPtr(v) - return - } - - // Print type information unless already handled elsewhere. - if !f.ignoreNextType && f.fs.Flag('#') { - f.fs.Write(openParenBytes) - f.fs.Write([]byte(v.Type().String())) - f.fs.Write(closeParenBytes) - } - f.ignoreNextType = false - - // Call Stringer/error interfaces if they exist and the handle methods - // flag is enabled. - if !f.cs.DisableMethods { - if (kind != reflect.Invalid) && (kind != reflect.Interface) { - if handled := handleMethods(f.cs, f.fs, v); handled { - return - } - } - } - - switch kind { - case reflect.Invalid: - // Do nothing. We should never get here since invalid has already - // been handled above. - - case reflect.Bool: - printBool(f.fs, v.Bool()) - - case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int: - printInt(f.fs, v.Int(), 10) - - case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint: - printUint(f.fs, v.Uint(), 10) - - case reflect.Float32: - printFloat(f.fs, v.Float(), 32) - - case reflect.Float64: - printFloat(f.fs, v.Float(), 64) - - case reflect.Complex64: - printComplex(f.fs, v.Complex(), 32) - - case reflect.Complex128: - printComplex(f.fs, v.Complex(), 64) - - case reflect.Slice: - if v.IsNil() { - f.fs.Write(nilAngleBytes) - break - } - fallthrough - - case reflect.Array: - f.fs.Write(openBracketBytes) - f.depth++ - if (f.cs.MaxDepth != 0) && (f.depth > f.cs.MaxDepth) { - f.fs.Write(maxShortBytes) - } else { - numEntries := v.Len() - for i := 0; i < numEntries; i++ { - if i > 0 { - f.fs.Write(spaceBytes) - } - f.ignoreNextType = true - f.format(f.unpackValue(v.Index(i))) - } - } - f.depth-- - f.fs.Write(closeBracketBytes) - - case reflect.String: - f.fs.Write([]byte(v.String())) - - case reflect.Interface: - // The only time we should get here is for nil interfaces due to - // unpackValue calls. - if v.IsNil() { - f.fs.Write(nilAngleBytes) - } - - case reflect.Ptr: - // Do nothing. We should never get here since pointers have already - // been handled above. - - case reflect.Map: - // nil maps should be indicated as different than empty maps - if v.IsNil() { - f.fs.Write(nilAngleBytes) - break - } - - f.fs.Write(openMapBytes) - f.depth++ - if (f.cs.MaxDepth != 0) && (f.depth > f.cs.MaxDepth) { - f.fs.Write(maxShortBytes) - } else { - keys := v.MapKeys() - if f.cs.SortKeys { - sortValues(keys, f.cs) - } - for i, key := range keys { - if i > 0 { - f.fs.Write(spaceBytes) - } - f.ignoreNextType = true - f.format(f.unpackValue(key)) - f.fs.Write(colonBytes) - f.ignoreNextType = true - f.format(f.unpackValue(v.MapIndex(key))) - } - } - f.depth-- - f.fs.Write(closeMapBytes) - - case reflect.Struct: - numFields := v.NumField() - f.fs.Write(openBraceBytes) - f.depth++ - if (f.cs.MaxDepth != 0) && (f.depth > f.cs.MaxDepth) { - f.fs.Write(maxShortBytes) - } else { - vt := v.Type() - for i := 0; i < numFields; i++ { - if i > 0 { - f.fs.Write(spaceBytes) - } - vtf := vt.Field(i) - if f.fs.Flag('+') || f.fs.Flag('#') { - f.fs.Write([]byte(vtf.Name)) - f.fs.Write(colonBytes) - } - f.format(f.unpackValue(v.Field(i))) - } - } - f.depth-- - f.fs.Write(closeBraceBytes) - - case reflect.Uintptr: - printHexPtr(f.fs, uintptr(v.Uint())) - - case reflect.UnsafePointer, reflect.Chan, reflect.Func: - printHexPtr(f.fs, v.Pointer()) - - // There were not any other types at the time this code was written, but - // fall back to letting the default fmt package handle it if any get added. - default: - format := f.buildDefaultFormat() - if v.CanInterface() { - fmt.Fprintf(f.fs, format, v.Interface()) - } else { - fmt.Fprintf(f.fs, format, v.String()) - } - } -} - -// Format satisfies the fmt.Formatter interface. See NewFormatter for usage -// details. -func (f *formatState) Format(fs fmt.State, verb rune) { - f.fs = fs - - // Use standard formatting for verbs that are not v. - if verb != 'v' { - format := f.constructOrigFormat(verb) - fmt.Fprintf(fs, format, f.value) - return - } - - if f.value == nil { - if fs.Flag('#') { - fs.Write(interfaceBytes) - } - fs.Write(nilAngleBytes) - return - } - - f.format(reflect.ValueOf(f.value)) -} - -// newFormatter is a helper function to consolidate the logic from the various -// public methods which take varying config states. -func newFormatter(cs *ConfigState, v interface{}) fmt.Formatter { - fs := &formatState{value: v, cs: cs} - fs.pointers = make(map[uintptr]int) - return fs -} - -/* -NewFormatter returns a custom formatter that satisfies the fmt.Formatter -interface. As a result, it integrates cleanly with standard fmt package -printing functions. The formatter is useful for inline printing of smaller data -types similar to the standard %v format specifier. - -The custom formatter only responds to the %v (most compact), %+v (adds pointer -addresses), %#v (adds types), or %#+v (adds types and pointer addresses) verb -combinations. Any other verbs such as %x and %q will be sent to the the -standard fmt package for formatting. In addition, the custom formatter ignores -the width and precision arguments (however they will still work on the format -specifiers not handled by the custom formatter). - -Typically this function shouldn't be called directly. It is much easier to make -use of the custom formatter by calling one of the convenience functions such as -Printf, Println, or Fprintf. -*/ -func NewFormatter(v interface{}) fmt.Formatter { - return newFormatter(&Config, v) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/spew.go b/vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/spew.go deleted file mode 100644 index d8233f54..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/davecgh/go-spew/spew/spew.go +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright (c) 2013 Dave Collins - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -package spew - -import ( - "fmt" - "io" -) - -// Errorf is a wrapper for fmt.Errorf that treats each argument as if it were -// passed with a default Formatter interface returned by NewFormatter. It -// returns the formatted string as a value that satisfies error. See -// NewFormatter for formatting details. -// -// This function is shorthand for the following syntax: -// -// fmt.Errorf(format, spew.NewFormatter(a), spew.NewFormatter(b)) -func Errorf(format string, a ...interface{}) (err error) { - return fmt.Errorf(format, convertArgs(a)...) -} - -// Fprint is a wrapper for fmt.Fprint that treats each argument as if it were -// passed with a default Formatter interface returned by NewFormatter. It -// returns the number of bytes written and any write error encountered. See -// NewFormatter for formatting details. -// -// This function is shorthand for the following syntax: -// -// fmt.Fprint(w, spew.NewFormatter(a), spew.NewFormatter(b)) -func Fprint(w io.Writer, a ...interface{}) (n int, err error) { - return fmt.Fprint(w, convertArgs(a)...) -} - -// Fprintf is a wrapper for fmt.Fprintf that treats each argument as if it were -// passed with a default Formatter interface returned by NewFormatter. It -// returns the number of bytes written and any write error encountered. See -// NewFormatter for formatting details. -// -// This function is shorthand for the following syntax: -// -// fmt.Fprintf(w, format, spew.NewFormatter(a), spew.NewFormatter(b)) -func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error) { - return fmt.Fprintf(w, format, convertArgs(a)...) -} - -// Fprintln is a wrapper for fmt.Fprintln that treats each argument as if it -// passed with a default Formatter interface returned by NewFormatter. See -// NewFormatter for formatting details. -// -// This function is shorthand for the following syntax: -// -// fmt.Fprintln(w, spew.NewFormatter(a), spew.NewFormatter(b)) -func Fprintln(w io.Writer, a ...interface{}) (n int, err error) { - return fmt.Fprintln(w, convertArgs(a)...) -} - -// Print is a wrapper for fmt.Print that treats each argument as if it were -// passed with a default Formatter interface returned by NewFormatter. It -// returns the number of bytes written and any write error encountered. See -// NewFormatter for formatting details. -// -// This function is shorthand for the following syntax: -// -// fmt.Print(spew.NewFormatter(a), spew.NewFormatter(b)) -func Print(a ...interface{}) (n int, err error) { - return fmt.Print(convertArgs(a)...) -} - -// Printf is a wrapper for fmt.Printf that treats each argument as if it were -// passed with a default Formatter interface returned by NewFormatter. It -// returns the number of bytes written and any write error encountered. See -// NewFormatter for formatting details. -// -// This function is shorthand for the following syntax: -// -// fmt.Printf(format, spew.NewFormatter(a), spew.NewFormatter(b)) -func Printf(format string, a ...interface{}) (n int, err error) { - return fmt.Printf(format, convertArgs(a)...) -} - -// Println is a wrapper for fmt.Println that treats each argument as if it were -// passed with a default Formatter interface returned by NewFormatter. It -// returns the number of bytes written and any write error encountered. See -// NewFormatter for formatting details. -// -// This function is shorthand for the following syntax: -// -// fmt.Println(spew.NewFormatter(a), spew.NewFormatter(b)) -func Println(a ...interface{}) (n int, err error) { - return fmt.Println(convertArgs(a)...) -} - -// Sprint is a wrapper for fmt.Sprint that treats each argument as if it were -// passed with a default Formatter interface returned by NewFormatter. It -// returns the resulting string. See NewFormatter for formatting details. -// -// This function is shorthand for the following syntax: -// -// fmt.Sprint(spew.NewFormatter(a), spew.NewFormatter(b)) -func Sprint(a ...interface{}) string { - return fmt.Sprint(convertArgs(a)...) -} - -// Sprintf is a wrapper for fmt.Sprintf that treats each argument as if it were -// passed with a default Formatter interface returned by NewFormatter. It -// returns the resulting string. See NewFormatter for formatting details. -// -// This function is shorthand for the following syntax: -// -// fmt.Sprintf(format, spew.NewFormatter(a), spew.NewFormatter(b)) -func Sprintf(format string, a ...interface{}) string { - return fmt.Sprintf(format, convertArgs(a)...) -} - -// Sprintln is a wrapper for fmt.Sprintln that treats each argument as if it -// were passed with a default Formatter interface returned by NewFormatter. It -// returns the resulting string. See NewFormatter for formatting details. -// -// This function is shorthand for the following syntax: -// -// fmt.Sprintln(spew.NewFormatter(a), spew.NewFormatter(b)) -func Sprintln(a ...interface{}) string { - return fmt.Sprintln(convertArgs(a)...) -} - -// convertArgs accepts a slice of arguments and returns a slice of the same -// length with each argument converted to a default spew Formatter interface. -func convertArgs(args []interface{}) (formatters []interface{}) { - formatters = make([]interface{}, len(args)) - for index, arg := range args { - formatters[index] = NewFormatter(arg) - } - return formatters -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/.gitignore b/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/.gitignore deleted file mode 100644 index 80bed650..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -.DS_Store -bin - - diff --git a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/.travis.yml b/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/.travis.yml deleted file mode 100644 index d6089146..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/.travis.yml +++ /dev/null @@ -1,7 +0,0 @@ -language: go - -go: - - 1.3.3 - - 1.4.2 - - 1.5 - - tip diff --git a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/LICENSE b/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/LICENSE deleted file mode 100644 index df83a9c2..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/LICENSE +++ /dev/null @@ -1,8 +0,0 @@ -Copyright (c) 2012 Dave Grijalva - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/README.md b/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/README.md deleted file mode 100644 index bf0100f4..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/README.md +++ /dev/null @@ -1,98 +0,0 @@ -A [go](http://www.golang.org) (or 'golang' for search engine friendliness) implementation of [JSON Web Tokens](http://self-issued.info/docs/draft-jones-json-web-token.html) - -[![Build Status](https://travis-ci.org/dgrijalva/jwt-go.svg?branch=master)](https://travis-ci.org/dgrijalva/jwt-go) - -**NOTICE:** A vulnerability in JWT was [recently published](https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/). As this library doesn't force users to validate the `alg` is what they expected, it's possible your usage is effected. There will be an update soon to remedy this, and it will likey require backwards-incompatible changes to the API. In the short term, please make sure your implementation verifies the `alg` is what you expect. - -## What the heck is a JWT? - -In short, it's a signed JSON object that does something useful (for example, authentication). It's commonly used for `Bearer` tokens in Oauth 2. A token is made of three parts, separated by `.`'s. The first two parts are JSON objects, that have been [base64url](http://tools.ietf.org/html/rfc4648) encoded. The last part is the signature, encoded the same way. - -The first part is called the header. It contains the necessary information for verifying the last part, the signature. For example, which encryption method was used for signing and what key was used. - -The part in the middle is the interesting bit. It's called the Claims and contains the actual stuff you care about. Refer to [the RFC](http://self-issued.info/docs/draft-jones-json-web-token.html) for information about reserved keys and the proper way to add your own. - -## What's in the box? - -This library supports the parsing and verification as well as the generation and signing of JWTs. Current supported signing algorithms are HMAC SHA, RSA, RSA-PSS, and ECDSA, though hooks are present for adding your own. - -## Parse and Verify - -Parsing and verifying tokens is pretty straight forward. You pass in the token and a function for looking up the key. This is done as a callback since you may need to parse the token to find out what signing method and key was used. - -```go - token, err := jwt.Parse(myToken, func(token *jwt.Token) (interface{}, error) { - // Don't forget to validate the alg is what you expect: - if _, ok := token.Method.(*jwt.SigningMethodRSA); !ok { - return nil, fmt.Errorf("Unexpected signing method: %v", token.Header["alg"]) - } - return myLookupKey(token.Header["kid"]), nil - }) - - if err == nil && token.Valid { - deliverGoodness("!") - } else { - deliverUtterRejection(":(") - } -``` - -## Create a token - -```go - // Create the token - token := jwt.New(jwt.SigningMethodHS256) - // Set some claims - token.Claims["foo"] = "bar" - token.Claims["exp"] = time.Now().Add(time.Hour * 72).Unix() - // Sign and get the complete encoded token as a string - tokenString, err := token.SignedString(mySigningKey) -``` - -## Extensions - -This library publishes all the necessary components for adding your own signing methods. Simply implement the `SigningMethod` interface and register a factory method using `RegisterSigningMethod`. - -Here's an example of an extension that integrates with the Google App Engine signing tools: https://github.com/someone1/gcp-jwt-go - -## Project Status & Versioning - -This library is considered production ready. Feedback and feature requests are appreciated. The API should be considered stable. There should be very few backwards-incompatible changes outside of major version updates (and only with good reason). - -This project uses [Semantic Versioning 2.0.0](http://semver.org). Accepted pull requests will land on `master`. Periodically, versions will be tagged from `master`. You can find all the releases on [the project releases page](https://github.com/dgrijalva/jwt-go/releases). - -While we try to make it obvious when we make breaking changes, there isn't a great mechanism for pushing announcements out to users. You may want to use this alternative package include: `gopkg.in/dgrijalva/jwt-go.v2`. It will do the right thing WRT semantic versioning. - -## Usage Tips - -### Signing vs Encryption - -A token is simply a JSON object that is signed by its author. this tells you exactly two things about the data: - -* The author of the token was in the possession of the signing secret -* The data has not been modified since it was signed - -It's important to know that JWT does not provide encryption, which means anyone who has access to the token can read its contents. If you need to protect (encrypt) the data, there is a companion spec, `JWE`, that provides this functionality. JWE is currently outside the scope of this library. - -### Choosing a Signing Method - -There are several signing methods available, and you should probably take the time to learn about the various options before choosing one. The principal design decision is most likely going to be symmetric vs asymmetric. - -Symmetric signing methods, such as HSA, use only a single secret. This is probably the simplest signing method to use since any `[]byte` can be used as a valid secret. They are also slightly computationally faster to use, though this rarely is enough to matter. Symmetric signing methods work the best when both producers and consumers of tokens are trusted, or even the same system. Since the same secret is used to both sign and validate tokens, you can't easily distribute the key for validation. - -Asymmetric signing methods, such as RSA, use different keys for signing and verifying tokens. This makes it possible to produce tokens with a private key, and allow any consumer to access the public key for verification. - -### JWT and OAuth - -It's worth mentioning that OAuth and JWT are not the same thing. A JWT token is simply a signed JSON object. It can be used anywhere such a thing is useful. There is some confusion, though, as JWT is the most common type of bearer token used in OAuth2 authentication. - -Without going too far down the rabbit hole, here's a description of the interaction of these technologies: - -* OAuth is a protocol for allowing an identity provider to be separate from the service a user is logging in to. For example, whenever you use Facebook to log into a different service (Yelp, Spotify, etc), you are using OAuth. -* OAuth defines several options for passing around authentication data. One popular method is called a "bearer token". A bearer token is simply a string that _should_ only be held by an authenticated user. Thus, simply presenting this token proves your identity. You can probably derive from here why a JWT might make a good bearer token. -* Because bearer tokens are used for authentication, it's important they're kept secret. This is why transactions that use bearer tokens typically happen over SSL. - -## More - -Documentation can be found [on godoc.org](http://godoc.org/github.com/dgrijalva/jwt-go). - -The command line utility included in this project (cmd/jwt) provides a straightforward example of token creation and parsing as well as a useful tool for debugging your own integration. For a more http centric example, see [this gist](https://gist.github.com/cryptix/45c33ecf0ae54828e63b). diff --git a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/VERSION_HISTORY.md b/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/VERSION_HISTORY.md deleted file mode 100644 index 9eb7ff9c..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/VERSION_HISTORY.md +++ /dev/null @@ -1,67 +0,0 @@ -## `jwt-go` Version History - -#### 2.4.0 - -* Added new type, Parser, to allow for configuration of various parsing parameters - * You can now specify a list of valid signing methods. Anything outside this set will be rejected. - * You can now opt to use the `json.Number` type instead of `float64` when parsing token JSON -* Added support for [Travis CI](https://travis-ci.org/dgrijalva/jwt-go) -* Fixed some bugs with ECDSA parsing - -#### 2.3.0 - -* Added support for ECDSA signing methods -* Added support for RSA PSS signing methods (requires go v1.4) - -#### 2.2.0 - -* Gracefully handle a `nil` `Keyfunc` being passed to `Parse`. Result will now be the parsed token and an error, instead of a panic. - -#### 2.1.0 - -Backwards compatible API change that was missed in 2.0.0. - -* The `SignedString` method on `Token` now takes `interface{}` instead of `[]byte` - -#### 2.0.0 - -There were two major reasons for breaking backwards compatibility with this update. The first was a refactor required to expand the width of the RSA and HMAC-SHA signing implementations. There will likely be no required code changes to support this change. - -The second update, while unfortunately requiring a small change in integration, is required to open up this library to other signing methods. Not all keys used for all signing methods have a single standard on-disk representation. Requiring `[]byte` as the type for all keys proved too limiting. Additionally, this implementation allows for pre-parsed tokens to be reused, which might matter in an application that parses a high volume of tokens with a small set of keys. Backwards compatibilty has been maintained for passing `[]byte` to the RSA signing methods, but they will also accept `*rsa.PublicKey` and `*rsa.PrivateKey`. - -It is likely the only integration change required here will be to change `func(t *jwt.Token) ([]byte, error)` to `func(t *jwt.Token) (interface{}, error)` when calling `Parse`. - -* **Compatibility Breaking Changes** - * `SigningMethodHS256` is now `*SigningMethodHMAC` instead of `type struct` - * `SigningMethodRS256` is now `*SigningMethodRSA` instead of `type struct` - * `KeyFunc` now returns `interface{}` instead of `[]byte` - * `SigningMethod.Sign` now takes `interface{}` instead of `[]byte` for the key - * `SigningMethod.Verify` now takes `interface{}` instead of `[]byte` for the key -* Renamed type `SigningMethodHS256` to `SigningMethodHMAC`. Specific sizes are now just instances of this type. - * Added public package global `SigningMethodHS256` - * Added public package global `SigningMethodHS384` - * Added public package global `SigningMethodHS512` -* Renamed type `SigningMethodRS256` to `SigningMethodRSA`. Specific sizes are now just instances of this type. - * Added public package global `SigningMethodRS256` - * Added public package global `SigningMethodRS384` - * Added public package global `SigningMethodRS512` -* Moved sample private key for HMAC tests from an inline value to a file on disk. Value is unchanged. -* Refactored the RSA implementation to be easier to read -* Exposed helper methods `ParseRSAPrivateKeyFromPEM` and `ParseRSAPublicKeyFromPEM` - -#### 1.0.2 - -* Fixed bug in parsing public keys from certificates -* Added more tests around the parsing of keys for RS256 -* Code refactoring in RS256 implementation. No functional changes - -#### 1.0.1 - -* Fixed panic if RS256 signing method was passed an invalid key - -#### 1.0.0 - -* First versioned release -* API stabilized -* Supports creating, signing, parsing, and validating JWT tokens -* Supports RS256 and HS256 signing methods \ No newline at end of file diff --git a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/doc.go b/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/doc.go deleted file mode 100644 index a86dc1a3..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/doc.go +++ /dev/null @@ -1,4 +0,0 @@ -// Package jwt is a Go implementation of JSON Web Tokens: http://self-issued.info/docs/draft-jones-json-web-token.html -// -// See README.md for more info. -package jwt diff --git a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/ecdsa.go b/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/ecdsa.go deleted file mode 100644 index 0518ed10..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/ecdsa.go +++ /dev/null @@ -1,147 +0,0 @@ -package jwt - -import ( - "crypto" - "crypto/ecdsa" - "crypto/rand" - "errors" - "math/big" -) - -var ( - // Sadly this is missing from crypto/ecdsa compared to crypto/rsa - ErrECDSAVerification = errors.New("crypto/ecdsa: verification error") -) - -// Implements the ECDSA family of signing methods signing methods -type SigningMethodECDSA struct { - Name string - Hash crypto.Hash - KeySize int - CurveBits int -} - -// Specific instances for EC256 and company -var ( - SigningMethodES256 *SigningMethodECDSA - SigningMethodES384 *SigningMethodECDSA - SigningMethodES512 *SigningMethodECDSA -) - -func init() { - // ES256 - SigningMethodES256 = &SigningMethodECDSA{"ES256", crypto.SHA256, 32, 256} - RegisterSigningMethod(SigningMethodES256.Alg(), func() SigningMethod { - return SigningMethodES256 - }) - - // ES384 - SigningMethodES384 = &SigningMethodECDSA{"ES384", crypto.SHA384, 48, 384} - RegisterSigningMethod(SigningMethodES384.Alg(), func() SigningMethod { - return SigningMethodES384 - }) - - // ES512 - SigningMethodES512 = &SigningMethodECDSA{"ES512", crypto.SHA512, 66, 521} - RegisterSigningMethod(SigningMethodES512.Alg(), func() SigningMethod { - return SigningMethodES512 - }) -} - -func (m *SigningMethodECDSA) Alg() string { - return m.Name -} - -// Implements the Verify method from SigningMethod -// For this verify method, key must be an ecdsa.PublicKey struct -func (m *SigningMethodECDSA) Verify(signingString, signature string, key interface{}) error { - var err error - - // Decode the signature - var sig []byte - if sig, err = DecodeSegment(signature); err != nil { - return err - } - - // Get the key - var ecdsaKey *ecdsa.PublicKey - switch k := key.(type) { - case *ecdsa.PublicKey: - ecdsaKey = k - default: - return ErrInvalidKey - } - - if len(sig) != 2*m.KeySize { - return ErrECDSAVerification - } - - r := big.NewInt(0).SetBytes(sig[:m.KeySize]) - s := big.NewInt(0).SetBytes(sig[m.KeySize:]) - - // Create hasher - if !m.Hash.Available() { - return ErrHashUnavailable - } - hasher := m.Hash.New() - hasher.Write([]byte(signingString)) - - // Verify the signature - if verifystatus := ecdsa.Verify(ecdsaKey, hasher.Sum(nil), r, s); verifystatus == true { - return nil - } else { - return ErrECDSAVerification - } -} - -// Implements the Sign method from SigningMethod -// For this signing method, key must be an ecdsa.PrivateKey struct -func (m *SigningMethodECDSA) Sign(signingString string, key interface{}) (string, error) { - // Get the key - var ecdsaKey *ecdsa.PrivateKey - switch k := key.(type) { - case *ecdsa.PrivateKey: - ecdsaKey = k - default: - return "", ErrInvalidKey - } - - // Create the hasher - if !m.Hash.Available() { - return "", ErrHashUnavailable - } - - hasher := m.Hash.New() - hasher.Write([]byte(signingString)) - - // Sign the string and return r, s - if r, s, err := ecdsa.Sign(rand.Reader, ecdsaKey, hasher.Sum(nil)); err == nil { - curveBits := ecdsaKey.Curve.Params().BitSize - - if m.CurveBits != curveBits { - return "", ErrInvalidKey - } - - keyBytes := curveBits / 8 - if curveBits%8 > 0 { - keyBytes += 1 - } - - // We serialize the outpus (r and s) into big-endian byte arrays and pad - // them with zeros on the left to make sure the sizes work out. Both arrays - // must be keyBytes long, and the output must be 2*keyBytes long. - rBytes := r.Bytes() - rBytesPadded := make([]byte, keyBytes) - copy(rBytesPadded[keyBytes-len(rBytes):], rBytes) - - sBytes := s.Bytes() - sBytesPadded := make([]byte, keyBytes) - copy(sBytesPadded[keyBytes-len(sBytes):], sBytes) - - out := append(rBytesPadded, sBytesPadded...) - - return EncodeSegment(out), nil - } else { - return "", err - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/ecdsa_utils.go b/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/ecdsa_utils.go deleted file mode 100644 index d19624b7..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/ecdsa_utils.go +++ /dev/null @@ -1,67 +0,0 @@ -package jwt - -import ( - "crypto/ecdsa" - "crypto/x509" - "encoding/pem" - "errors" -) - -var ( - ErrNotECPublicKey = errors.New("Key is not a valid ECDSA public key") - ErrNotECPrivateKey = errors.New("Key is not a valid ECDSA private key") -) - -// Parse PEM encoded Elliptic Curve Private Key Structure -func ParseECPrivateKeyFromPEM(key []byte) (*ecdsa.PrivateKey, error) { - var err error - - // Parse PEM block - var block *pem.Block - if block, _ = pem.Decode(key); block == nil { - return nil, ErrKeyMustBePEMEncoded - } - - // Parse the key - var parsedKey interface{} - if parsedKey, err = x509.ParseECPrivateKey(block.Bytes); err != nil { - return nil, err - } - - var pkey *ecdsa.PrivateKey - var ok bool - if pkey, ok = parsedKey.(*ecdsa.PrivateKey); !ok { - return nil, ErrNotECPrivateKey - } - - return pkey, nil -} - -// Parse PEM encoded PKCS1 or PKCS8 public key -func ParseECPublicKeyFromPEM(key []byte) (*ecdsa.PublicKey, error) { - var err error - - // Parse PEM block - var block *pem.Block - if block, _ = pem.Decode(key); block == nil { - return nil, ErrKeyMustBePEMEncoded - } - - // Parse the key - var parsedKey interface{} - if parsedKey, err = x509.ParsePKIXPublicKey(block.Bytes); err != nil { - if cert, err := x509.ParseCertificate(block.Bytes); err == nil { - parsedKey = cert.PublicKey - } else { - return nil, err - } - } - - var pkey *ecdsa.PublicKey - var ok bool - if pkey, ok = parsedKey.(*ecdsa.PublicKey); !ok { - return nil, ErrNotECPublicKey - } - - return pkey, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/errors.go b/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/errors.go deleted file mode 100644 index e9e788ff..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/errors.go +++ /dev/null @@ -1,43 +0,0 @@ -package jwt - -import ( - "errors" -) - -// Error constants -var ( - ErrInvalidKey = errors.New("key is invalid or of invalid type") - ErrHashUnavailable = errors.New("the requested hash function is unavailable") - ErrNoTokenInRequest = errors.New("no token present in request") -) - -// The errors that might occur when parsing and validating a token -const ( - ValidationErrorMalformed uint32 = 1 << iota // Token is malformed - ValidationErrorUnverifiable // Token could not be verified because of signing problems - ValidationErrorSignatureInvalid // Signature validation failed - ValidationErrorExpired // Exp validation failed - ValidationErrorNotValidYet // NBF validation failed -) - -// The error from Parse if token is not valid -type ValidationError struct { - err string - Errors uint32 // bitfield. see ValidationError... constants -} - -// Validation error is an error type -func (e ValidationError) Error() string { - if e.err == "" { - return "token is invalid" - } - return e.err -} - -// No errors -func (e *ValidationError) valid() bool { - if e.Errors > 0 { - return false - } - return true -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/hmac.go b/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/hmac.go deleted file mode 100644 index 192e625f..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/hmac.go +++ /dev/null @@ -1,94 +0,0 @@ -package jwt - -import ( - "crypto" - "crypto/hmac" - "errors" -) - -// Implements the HMAC-SHA family of signing methods signing methods -type SigningMethodHMAC struct { - Name string - Hash crypto.Hash -} - -// Specific instances for HS256 and company -var ( - SigningMethodHS256 *SigningMethodHMAC - SigningMethodHS384 *SigningMethodHMAC - SigningMethodHS512 *SigningMethodHMAC - ErrSignatureInvalid = errors.New("signature is invalid") -) - -func init() { - // HS256 - SigningMethodHS256 = &SigningMethodHMAC{"HS256", crypto.SHA256} - RegisterSigningMethod(SigningMethodHS256.Alg(), func() SigningMethod { - return SigningMethodHS256 - }) - - // HS384 - SigningMethodHS384 = &SigningMethodHMAC{"HS384", crypto.SHA384} - RegisterSigningMethod(SigningMethodHS384.Alg(), func() SigningMethod { - return SigningMethodHS384 - }) - - // HS512 - SigningMethodHS512 = &SigningMethodHMAC{"HS512", crypto.SHA512} - RegisterSigningMethod(SigningMethodHS512.Alg(), func() SigningMethod { - return SigningMethodHS512 - }) -} - -func (m *SigningMethodHMAC) Alg() string { - return m.Name -} - -// Verify the signature of HSXXX tokens. Returns nil if the signature is valid. -func (m *SigningMethodHMAC) Verify(signingString, signature string, key interface{}) error { - // Verify the key is the right type - keyBytes, ok := key.([]byte) - if !ok { - return ErrInvalidKey - } - - // Decode signature, for comparison - sig, err := DecodeSegment(signature) - if err != nil { - return err - } - - // Can we use the specified hashing method? - if !m.Hash.Available() { - return ErrHashUnavailable - } - - // This signing method is symmetric, so we validate the signature - // by reproducing the signature from the signing string and key, then - // comparing that against the provided signature. - hasher := hmac.New(m.Hash.New, keyBytes) - hasher.Write([]byte(signingString)) - if !hmac.Equal(sig, hasher.Sum(nil)) { - return ErrSignatureInvalid - } - - // No validation errors. Signature is good. - return nil -} - -// Implements the Sign method from SigningMethod for this signing method. -// Key must be []byte -func (m *SigningMethodHMAC) Sign(signingString string, key interface{}) (string, error) { - if keyBytes, ok := key.([]byte); ok { - if !m.Hash.Available() { - return "", ErrHashUnavailable - } - - hasher := hmac.New(m.Hash.New, keyBytes) - hasher.Write([]byte(signingString)) - - return EncodeSegment(hasher.Sum(nil)), nil - } - - return "", ErrInvalidKey -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/parser.go b/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/parser.go deleted file mode 100644 index 3fc27bfe..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/parser.go +++ /dev/null @@ -1,113 +0,0 @@ -package jwt - -import ( - "bytes" - "encoding/json" - "fmt" - "strings" -) - -type Parser struct { - ValidMethods []string // If populated, only these methods will be considered valid - UseJSONNumber bool // Use JSON Number format in JSON decoder -} - -// Parse, validate, and return a token. -// keyFunc will receive the parsed token and should return the key for validating. -// If everything is kosher, err will be nil -func (p *Parser) Parse(tokenString string, keyFunc Keyfunc) (*Token, error) { - parts := strings.Split(tokenString, ".") - if len(parts) != 3 { - return nil, &ValidationError{err: "token contains an invalid number of segments", Errors: ValidationErrorMalformed} - } - - var err error - token := &Token{Raw: tokenString} - // parse Header - var headerBytes []byte - if headerBytes, err = DecodeSegment(parts[0]); err != nil { - return token, &ValidationError{err: err.Error(), Errors: ValidationErrorMalformed} - } - if err = json.Unmarshal(headerBytes, &token.Header); err != nil { - return token, &ValidationError{err: err.Error(), Errors: ValidationErrorMalformed} - } - - // parse Claims - var claimBytes []byte - if claimBytes, err = DecodeSegment(parts[1]); err != nil { - return token, &ValidationError{err: err.Error(), Errors: ValidationErrorMalformed} - } - dec := json.NewDecoder(bytes.NewBuffer(claimBytes)) - if p.UseJSONNumber { - dec.UseNumber() - } - if err = dec.Decode(&token.Claims); err != nil { - return token, &ValidationError{err: err.Error(), Errors: ValidationErrorMalformed} - } - - // Lookup signature method - if method, ok := token.Header["alg"].(string); ok { - if token.Method = GetSigningMethod(method); token.Method == nil { - return token, &ValidationError{err: "signing method (alg) is unavailable.", Errors: ValidationErrorUnverifiable} - } - } else { - return token, &ValidationError{err: "signing method (alg) is unspecified.", Errors: ValidationErrorUnverifiable} - } - - // Verify signing method is in the required set - if p.ValidMethods != nil { - var signingMethodValid = false - var alg = token.Method.Alg() - for _, m := range p.ValidMethods { - if m == alg { - signingMethodValid = true - break - } - } - if !signingMethodValid { - // signing method is not in the listed set - return token, &ValidationError{err: fmt.Sprintf("signing method %v is invalid", alg), Errors: ValidationErrorSignatureInvalid} - } - } - - // Lookup key - var key interface{} - if keyFunc == nil { - // keyFunc was not provided. short circuiting validation - return token, &ValidationError{err: "no Keyfunc was provided.", Errors: ValidationErrorUnverifiable} - } - if key, err = keyFunc(token); err != nil { - // keyFunc returned an error - return token, &ValidationError{err: err.Error(), Errors: ValidationErrorUnverifiable} - } - - // Check expiration times - vErr := &ValidationError{} - now := TimeFunc().Unix() - if exp, ok := token.Claims["exp"].(float64); ok { - if now > int64(exp) { - vErr.err = "token is expired" - vErr.Errors |= ValidationErrorExpired - } - } - if nbf, ok := token.Claims["nbf"].(float64); ok { - if now < int64(nbf) { - vErr.err = "token is not valid yet" - vErr.Errors |= ValidationErrorNotValidYet - } - } - - // Perform validation - token.Signature = parts[2] - if err = token.Method.Verify(strings.Join(parts[0:2], "."), token.Signature, key); err != nil { - vErr.err = err.Error() - vErr.Errors |= ValidationErrorSignatureInvalid - } - - if vErr.valid() { - token.Valid = true - return token, nil - } - - return token, vErr -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/rsa.go b/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/rsa.go deleted file mode 100644 index cddffced..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/rsa.go +++ /dev/null @@ -1,114 +0,0 @@ -package jwt - -import ( - "crypto" - "crypto/rand" - "crypto/rsa" -) - -// Implements the RSA family of signing methods signing methods -type SigningMethodRSA struct { - Name string - Hash crypto.Hash -} - -// Specific instances for RS256 and company -var ( - SigningMethodRS256 *SigningMethodRSA - SigningMethodRS384 *SigningMethodRSA - SigningMethodRS512 *SigningMethodRSA -) - -func init() { - // RS256 - SigningMethodRS256 = &SigningMethodRSA{"RS256", crypto.SHA256} - RegisterSigningMethod(SigningMethodRS256.Alg(), func() SigningMethod { - return SigningMethodRS256 - }) - - // RS384 - SigningMethodRS384 = &SigningMethodRSA{"RS384", crypto.SHA384} - RegisterSigningMethod(SigningMethodRS384.Alg(), func() SigningMethod { - return SigningMethodRS384 - }) - - // RS512 - SigningMethodRS512 = &SigningMethodRSA{"RS512", crypto.SHA512} - RegisterSigningMethod(SigningMethodRS512.Alg(), func() SigningMethod { - return SigningMethodRS512 - }) -} - -func (m *SigningMethodRSA) Alg() string { - return m.Name -} - -// Implements the Verify method from SigningMethod -// For this signing method, must be either a PEM encoded PKCS1 or PKCS8 RSA public key as -// []byte, or an rsa.PublicKey structure. -func (m *SigningMethodRSA) Verify(signingString, signature string, key interface{}) error { - var err error - - // Decode the signature - var sig []byte - if sig, err = DecodeSegment(signature); err != nil { - return err - } - - var rsaKey *rsa.PublicKey - - switch k := key.(type) { - case []byte: - if rsaKey, err = ParseRSAPublicKeyFromPEM(k); err != nil { - return err - } - case *rsa.PublicKey: - rsaKey = k - default: - return ErrInvalidKey - } - - // Create hasher - if !m.Hash.Available() { - return ErrHashUnavailable - } - hasher := m.Hash.New() - hasher.Write([]byte(signingString)) - - // Verify the signature - return rsa.VerifyPKCS1v15(rsaKey, m.Hash, hasher.Sum(nil), sig) -} - -// Implements the Sign method from SigningMethod -// For this signing method, must be either a PEM encoded PKCS1 or PKCS8 RSA private key as -// []byte, or an rsa.PrivateKey structure. -func (m *SigningMethodRSA) Sign(signingString string, key interface{}) (string, error) { - var err error - var rsaKey *rsa.PrivateKey - - switch k := key.(type) { - case []byte: - if rsaKey, err = ParseRSAPrivateKeyFromPEM(k); err != nil { - return "", err - } - case *rsa.PrivateKey: - rsaKey = k - default: - return "", ErrInvalidKey - } - - // Create the hasher - if !m.Hash.Available() { - return "", ErrHashUnavailable - } - - hasher := m.Hash.New() - hasher.Write([]byte(signingString)) - - // Sign the string and return the encoded bytes - if sigBytes, err := rsa.SignPKCS1v15(rand.Reader, rsaKey, m.Hash, hasher.Sum(nil)); err == nil { - return EncodeSegment(sigBytes), nil - } else { - return "", err - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/rsa_pss.go b/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/rsa_pss.go deleted file mode 100644 index b5b70735..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/rsa_pss.go +++ /dev/null @@ -1,126 +0,0 @@ -// +build go1.4 - -package jwt - -import ( - "crypto" - "crypto/rand" - "crypto/rsa" -) - -// Implements the RSAPSS family of signing methods signing methods -type SigningMethodRSAPSS struct { - *SigningMethodRSA - Options *rsa.PSSOptions -} - -// Specific instances for RS/PS and company -var ( - SigningMethodPS256 *SigningMethodRSAPSS - SigningMethodPS384 *SigningMethodRSAPSS - SigningMethodPS512 *SigningMethodRSAPSS -) - -func init() { - // PS256 - SigningMethodPS256 = &SigningMethodRSAPSS{ - &SigningMethodRSA{ - Name: "PS256", - Hash: crypto.SHA256, - }, - &rsa.PSSOptions{ - SaltLength: rsa.PSSSaltLengthAuto, - Hash: crypto.SHA256, - }, - } - RegisterSigningMethod(SigningMethodPS256.Alg(), func() SigningMethod { - return SigningMethodPS256 - }) - - // PS384 - SigningMethodPS384 = &SigningMethodRSAPSS{ - &SigningMethodRSA{ - Name: "PS384", - Hash: crypto.SHA384, - }, - &rsa.PSSOptions{ - SaltLength: rsa.PSSSaltLengthAuto, - Hash: crypto.SHA384, - }, - } - RegisterSigningMethod(SigningMethodPS384.Alg(), func() SigningMethod { - return SigningMethodPS384 - }) - - // PS512 - SigningMethodPS512 = &SigningMethodRSAPSS{ - &SigningMethodRSA{ - Name: "PS512", - Hash: crypto.SHA512, - }, - &rsa.PSSOptions{ - SaltLength: rsa.PSSSaltLengthAuto, - Hash: crypto.SHA512, - }, - } - RegisterSigningMethod(SigningMethodPS512.Alg(), func() SigningMethod { - return SigningMethodPS512 - }) -} - -// Implements the Verify method from SigningMethod -// For this verify method, key must be an rsa.PublicKey struct -func (m *SigningMethodRSAPSS) Verify(signingString, signature string, key interface{}) error { - var err error - - // Decode the signature - var sig []byte - if sig, err = DecodeSegment(signature); err != nil { - return err - } - - var rsaKey *rsa.PublicKey - switch k := key.(type) { - case *rsa.PublicKey: - rsaKey = k - default: - return ErrInvalidKey - } - - // Create hasher - if !m.Hash.Available() { - return ErrHashUnavailable - } - hasher := m.Hash.New() - hasher.Write([]byte(signingString)) - - return rsa.VerifyPSS(rsaKey, m.Hash, hasher.Sum(nil), sig, m.Options) -} - -// Implements the Sign method from SigningMethod -// For this signing method, key must be an rsa.PrivateKey struct -func (m *SigningMethodRSAPSS) Sign(signingString string, key interface{}) (string, error) { - var rsaKey *rsa.PrivateKey - - switch k := key.(type) { - case *rsa.PrivateKey: - rsaKey = k - default: - return "", ErrInvalidKey - } - - // Create the hasher - if !m.Hash.Available() { - return "", ErrHashUnavailable - } - - hasher := m.Hash.New() - hasher.Write([]byte(signingString)) - - // Sign the string and return the encoded bytes - if sigBytes, err := rsa.SignPSS(rand.Reader, rsaKey, m.Hash, hasher.Sum(nil), m.Options); err == nil { - return EncodeSegment(sigBytes), nil - } else { - return "", err - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/rsa_utils.go b/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/rsa_utils.go deleted file mode 100644 index 6f3b6ff0..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/rsa_utils.go +++ /dev/null @@ -1,68 +0,0 @@ -package jwt - -import ( - "crypto/rsa" - "crypto/x509" - "encoding/pem" - "errors" -) - -var ( - ErrKeyMustBePEMEncoded = errors.New("Invalid Key: Key must be PEM encoded PKCS1 or PKCS8 private key") - ErrNotRSAPrivateKey = errors.New("Key is not a valid RSA private key") -) - -// Parse PEM encoded PKCS1 or PKCS8 private key -func ParseRSAPrivateKeyFromPEM(key []byte) (*rsa.PrivateKey, error) { - var err error - - // Parse PEM block - var block *pem.Block - if block, _ = pem.Decode(key); block == nil { - return nil, ErrKeyMustBePEMEncoded - } - - var parsedKey interface{} - if parsedKey, err = x509.ParsePKCS1PrivateKey(block.Bytes); err != nil { - if parsedKey, err = x509.ParsePKCS8PrivateKey(block.Bytes); err != nil { - return nil, err - } - } - - var pkey *rsa.PrivateKey - var ok bool - if pkey, ok = parsedKey.(*rsa.PrivateKey); !ok { - return nil, ErrNotRSAPrivateKey - } - - return pkey, nil -} - -// Parse PEM encoded PKCS1 or PKCS8 public key -func ParseRSAPublicKeyFromPEM(key []byte) (*rsa.PublicKey, error) { - var err error - - // Parse PEM block - var block *pem.Block - if block, _ = pem.Decode(key); block == nil { - return nil, ErrKeyMustBePEMEncoded - } - - // Parse the key - var parsedKey interface{} - if parsedKey, err = x509.ParsePKIXPublicKey(block.Bytes); err != nil { - if cert, err := x509.ParseCertificate(block.Bytes); err == nil { - parsedKey = cert.PublicKey - } else { - return nil, err - } - } - - var pkey *rsa.PublicKey - var ok bool - if pkey, ok = parsedKey.(*rsa.PublicKey); !ok { - return nil, ErrNotRSAPrivateKey - } - - return pkey, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/signing_method.go b/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/signing_method.go deleted file mode 100644 index 12cf0f3d..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/signing_method.go +++ /dev/null @@ -1,24 +0,0 @@ -package jwt - -var signingMethods = map[string]func() SigningMethod{} - -// Implement SigningMethod to add new methods for signing or verifying tokens. -type SigningMethod interface { - Verify(signingString, signature string, key interface{}) error // Returns nil if signature is valid - Sign(signingString string, key interface{}) (string, error) // Returns encoded signature or error - Alg() string // returns the alg identifier for this method (example: 'HS256') -} - -// Register the "alg" name and a factory function for signing method. -// This is typically done during init() in the method's implementation -func RegisterSigningMethod(alg string, f func() SigningMethod) { - signingMethods[alg] = f -} - -// Get a signing method from an "alg" string -func GetSigningMethod(alg string) (method SigningMethod) { - if methodF, ok := signingMethods[alg]; ok { - method = methodF() - } - return -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/token.go b/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/token.go deleted file mode 100644 index d35aaa4a..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/dgrijalva/jwt-go/token.go +++ /dev/null @@ -1,126 +0,0 @@ -package jwt - -import ( - "encoding/base64" - "encoding/json" - "net/http" - "strings" - "time" -) - -// TimeFunc provides the current time when parsing token to validate "exp" claim (expiration time). -// You can override it to use another time value. This is useful for testing or if your -// server uses a different time zone than your tokens. -var TimeFunc = time.Now - -// Parse methods use this callback function to supply -// the key for verification. The function receives the parsed, -// but unverified Token. This allows you to use propries in the -// Header of the token (such as `kid`) to identify which key to use. -type Keyfunc func(*Token) (interface{}, error) - -// A JWT Token. Different fields will be used depending on whether you're -// creating or parsing/verifying a token. -type Token struct { - Raw string // The raw token. Populated when you Parse a token - Method SigningMethod // The signing method used or to be used - Header map[string]interface{} // The first segment of the token - Claims map[string]interface{} // The second segment of the token - Signature string // The third segment of the token. Populated when you Parse a token - Valid bool // Is the token valid? Populated when you Parse/Verify a token -} - -// Create a new Token. Takes a signing method -func New(method SigningMethod) *Token { - return &Token{ - Header: map[string]interface{}{ - "typ": "JWT", - "alg": method.Alg(), - }, - Claims: make(map[string]interface{}), - Method: method, - } -} - -// Get the complete, signed token -func (t *Token) SignedString(key interface{}) (string, error) { - var sig, sstr string - var err error - if sstr, err = t.SigningString(); err != nil { - return "", err - } - if sig, err = t.Method.Sign(sstr, key); err != nil { - return "", err - } - return strings.Join([]string{sstr, sig}, "."), nil -} - -// Generate the signing string. This is the -// most expensive part of the whole deal. Unless you -// need this for something special, just go straight for -// the SignedString. -func (t *Token) SigningString() (string, error) { - var err error - parts := make([]string, 2) - for i, _ := range parts { - var source map[string]interface{} - if i == 0 { - source = t.Header - } else { - source = t.Claims - } - - var jsonValue []byte - if jsonValue, err = json.Marshal(source); err != nil { - return "", err - } - - parts[i] = EncodeSegment(jsonValue) - } - return strings.Join(parts, "."), nil -} - -// Parse, validate, and return a token. -// keyFunc will receive the parsed token and should return the key for validating. -// If everything is kosher, err will be nil -func Parse(tokenString string, keyFunc Keyfunc) (*Token, error) { - return new(Parser).Parse(tokenString, keyFunc) -} - -// Try to find the token in an http.Request. -// This method will call ParseMultipartForm if there's no token in the header. -// Currently, it looks in the Authorization header as well as -// looking for an 'access_token' request parameter in req.Form. -func ParseFromRequest(req *http.Request, keyFunc Keyfunc) (token *Token, err error) { - - // Look for an Authorization header - if ah := req.Header.Get("Authorization"); ah != "" { - // Should be a bearer token - if len(ah) > 6 && strings.ToUpper(ah[0:6]) == "BEARER" { - return Parse(ah[7:], keyFunc) - } - } - - // Look for "access_token" parameter - req.ParseMultipartForm(10e6) - if tokStr := req.Form.Get("access_token"); tokStr != "" { - return Parse(tokStr, keyFunc) - } - - return nil, ErrNoTokenInRequest - -} - -// Encode JWT specific base64url encoding with padding stripped -func EncodeSegment(seg []byte) string { - return strings.TrimRight(base64.URLEncoding.EncodeToString(seg), "=") -} - -// Decode JWT specific base64url encoding with padding stripped -func DecodeSegment(seg string) ([]byte, error) { - if l := len(seg) % 4; l > 0 { - seg += strings.Repeat("=", 4-l) - } - - return base64.URLEncoding.DecodeString(seg) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/.travis.yml b/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/.travis.yml deleted file mode 100644 index 245a2f51..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/.travis.yml +++ /dev/null @@ -1,6 +0,0 @@ -language: go - -go: - - 1.3 - - 1.4 - - tip diff --git a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/CONTRIBUTING.md b/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/CONTRIBUTING.md deleted file mode 100644 index f27200a7..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/CONTRIBUTING.md +++ /dev/null @@ -1,23 +0,0 @@ -# Contributing - -If you submit a pull request, please keep the following guidelines in mind: - -1. Code should be `go fmt` compliant. -2. Types, structs and funcs should be documented. -3. Tests pass. - -## Getting set up - -Assuming your `$GOPATH` is set up according to your desires, run: - -```sh -go get github.com/digitalocean/godo -``` - -## Running tests - -When working on code in this repository, tests can be run via: - -```sh -go test . -``` diff --git a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/LICENSE.txt b/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/LICENSE.txt deleted file mode 100644 index d9cd60c4..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/LICENSE.txt +++ /dev/null @@ -1,55 +0,0 @@ -Copyright (c) 2014 The godo AUTHORS. All rights reserved. - -MIT License - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -====================== -Portions of the client are based on code at: -https://github.com/google/go-github/ - -Copyright (c) 2013 The go-github AUTHORS. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - diff --git a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/README.md b/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/README.md deleted file mode 100644 index 03d0c076..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/README.md +++ /dev/null @@ -1,136 +0,0 @@ -[![Build Status](https://travis-ci.org/digitalocean/godo.svg)](https://travis-ci.org/digitalocean/godo) - -# Godo - -Godo is a Go client library for accessing the DigitalOcean V2 API. - -You can view the client API docs here: [http://godoc.org/github.com/digitalocean/godo](http://godoc.org/github.com/digitalocean/godo) - -You can view DigitalOcean API docs here: [https://developers.digitalocean.com/documentation/v2/](https://developers.digitalocean.com/documentation/v2/) - - -## Usage - -```go -import "github.com/digitalocean/godo" -``` - -Create a new DigitalOcean client, then use the exposed services to -access different parts of the DigitalOcean API. - -### Authentication - -Currently, Personal Access Token (PAT) is the only method of -authenticating with the API. You can manage your tokens -at the DigitalOcean Control Panel [Applications Page](https://cloud.digitalocean.com/settings/applications). - -You can then use your token to create a new client: - -```go -import "golang.org/x/oauth2" - -pat := "mytoken" -type TokenSource struct { - AccessToken string -} - -func (t *TokenSource) Token() (*oauth2.Token, error) { - token := &oauth2.Token{ - AccessToken: t.AccessToken, - } - return token, nil -} - -tokenSource := &TokenSource{ - AccessToken: pat, -} -oauthClient := oauth2.NewClient(oauth2.NoContext, tokenSource) -client := godo.NewClient(oauthClient) -``` - -## Examples - - -To create a new Droplet: - -```go -dropletName := "super-cool-droplet" - -createRequest := &godo.DropletCreateRequest{ - Name: dropletName, - Region: "nyc3", - Size: "512mb", - Image: godo.DropletCreateImage{ - Slug: "ubuntu-14-04-x64", - }, -} - -newDroplet, _, err := client.Droplets.Create(createRequest) - -if err != nil { - fmt.Printf("Something bad happened: %s\n\n", err) - return err -} -``` - -### Pagination - -If a list of items is paginated by the API, you must request pages individually. For example, to fetch all Droplets: - -```go -func DropletList(client *godo.Client) ([]godo.Droplet, error) { - // create a list to hold our droplets - list := []godo.Droplet{} - - // create options. initially, these will be blank - opt := &godo.ListOptions{} - for { - droplets, resp, err := client.Droplets.List(opt) - if err != nil { - return nil, err - } - - // append the current page's droplets to our list - for _, d := range droplets { - list = append(list, d) - } - - // if we are at the last page, break out the for loop - if resp.Links == nil || resp.Links.IsLastPage() { - break - } - - page, err := resp.Links.CurrentPage() - if err != nil { - return nil, err - } - - // set the page we want for the next request - opt.Page = page + 1 - } - - return list, nil -} -``` - -## Versioning - -Each version of the client is tagged and the version is updated accordingly. - -Since Go does not have a built-in versioning, a package management tool is -recommended - a good one that works with git tags is -[gopkg.in](http://labix.org/gopkg.in). - -To see the list of past versions, run `git tag`. - - -## Documentation - -For a comprehensive list of examples, check out the [API documentation](https://developers.digitalocean.com/documentation/v2/). - -For details on all the functionality in this library, see the [GoDoc](http://godoc.org/github.com/digitalocean/godo) documentation. - - -## Contributing - -We love pull requests! Please see the [contribution guidelines](CONTRIBUTING.md). diff --git a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/account.go b/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/account.go deleted file mode 100644 index b8ea64a3..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/account.go +++ /dev/null @@ -1,52 +0,0 @@ -package godo - -// AccountService is an interface for interfacing with the Account -// endpoints of the DigitalOcean API -// See: https://developers.digitalocean.com/documentation/v2/#account -type AccountService interface { - Get() (*Account, *Response, error) -} - -// AccountServiceOp handles communication with the Account related methods of -// the DigitalOcean API. -type AccountServiceOp struct { - client *Client -} - -var _ AccountService = &AccountServiceOp{} - -// Account represents a DigitalOcean Account -type Account struct { - DropletLimit int `json:"droplet_limit,omitempty"` - Email string `json:"email,omitempty"` - UUID string `json:"uuid,omitempty"` - EmailVerified bool `json:"email_verified,omitempty"` - Status string `json:"status,omitempty"` - StatusMessage string `json:"status_message,omitempty"` -} - -type accountRoot struct { - Account *Account `json:"account"` -} - -func (r Account) String() string { - return Stringify(r) -} - -// Get DigitalOcean account info -func (s *AccountServiceOp) Get() (*Account, *Response, error) { - path := "v2/account" - - req, err := s.client.NewRequest("GET", path, nil) - if err != nil { - return nil, nil, err - } - - root := new(accountRoot) - resp, err := s.client.Do(req, root) - if err != nil { - return nil, resp, err - } - - return root.Account, resp, err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/action.go b/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/action.go deleted file mode 100644 index e19493b9..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/action.go +++ /dev/null @@ -1,100 +0,0 @@ -package godo - -import "fmt" - -const ( - actionsBasePath = "v2/actions" - - // ActionInProgress is an in progress action status - ActionInProgress = "in-progress" - - //ActionCompleted is a completed action status - ActionCompleted = "completed" -) - -// ActionsService handles communction with action related methods of the -// DigitalOcean API: https://developers.digitalocean.com/documentation/v2#actions -type ActionsService interface { - List(*ListOptions) ([]Action, *Response, error) - Get(int) (*Action, *Response, error) -} - -// ActionsServiceOp handles communition with the image action related methods of the -// DigitalOcean API. -type ActionsServiceOp struct { - client *Client -} - -var _ ActionsService = &ActionsServiceOp{} - -type actionsRoot struct { - Actions []Action `json:"actions"` - Links *Links `json:"links"` -} - -type actionRoot struct { - Event Action `json:"action"` -} - -// Action represents a DigitalOcean Action -type Action struct { - ID int `json:"id"` - Status string `json:"status"` - Type string `json:"type"` - StartedAt *Timestamp `json:"started_at"` - CompletedAt *Timestamp `json:"completed_at"` - ResourceID int `json:"resource_id"` - ResourceType string `json:"resource_type"` - Region *Region `json:"region,omitempty"` - RegionSlug string `json:"region_slug,omitempty"` -} - -// List all actions -func (s *ActionsServiceOp) List(opt *ListOptions) ([]Action, *Response, error) { - path := actionsBasePath - path, err := addOptions(path, opt) - if err != nil { - return nil, nil, err - } - - req, err := s.client.NewRequest("GET", path, nil) - if err != nil { - return nil, nil, err - } - - root := new(actionsRoot) - resp, err := s.client.Do(req, root) - if err != nil { - return nil, resp, err - } - if l := root.Links; l != nil { - resp.Links = l - } - - return root.Actions, resp, err -} - -// Get an action by ID. -func (s *ActionsServiceOp) Get(id int) (*Action, *Response, error) { - if id < 1 { - return nil, nil, NewArgError("id", "cannot be less than 1") - } - - path := fmt.Sprintf("%s/%d", actionsBasePath, id) - req, err := s.client.NewRequest("GET", path, nil) - if err != nil { - return nil, nil, err - } - - root := new(actionRoot) - resp, err := s.client.Do(req, root) - if err != nil { - return nil, resp, err - } - - return &root.Event, resp, err -} - -func (a Action) String() string { - return Stringify(a) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/doc.go b/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/doc.go deleted file mode 100644 index e660f794..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/doc.go +++ /dev/null @@ -1,2 +0,0 @@ -// Package godo is the DigtalOcean API v2 client for Go -package godo diff --git a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/domains.go b/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/domains.go deleted file mode 100644 index 31de1786..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/domains.go +++ /dev/null @@ -1,323 +0,0 @@ -package godo - -import "fmt" - -const domainsBasePath = "v2/domains" - -// DomainsService is an interface for managing DNS with the DigitalOcean API. -// See: https://developers.digitalocean.com/documentation/v2#domains and -// https://developers.digitalocean.com/documentation/v2#domain-records -type DomainsService interface { - List(*ListOptions) ([]Domain, *Response, error) - Get(string) (*Domain, *Response, error) - Create(*DomainCreateRequest) (*Domain, *Response, error) - Delete(string) (*Response, error) - - Records(string, *ListOptions) ([]DomainRecord, *Response, error) - Record(string, int) (*DomainRecord, *Response, error) - DeleteRecord(string, int) (*Response, error) - EditRecord(string, int, *DomainRecordEditRequest) (*DomainRecord, *Response, error) - CreateRecord(string, *DomainRecordEditRequest) (*DomainRecord, *Response, error) -} - -// DomainsServiceOp handles communication with the domain related methods of the -// DigitalOcean API. -type DomainsServiceOp struct { - client *Client -} - -var _ DomainsService = &DomainsServiceOp{} - -// Domain represents a DigitalOcean domain -type Domain struct { - Name string `json:"name"` - TTL int `json:"ttl"` - ZoneFile string `json:"zone_file"` -} - -// domainRoot represents a response from the DigitalOcean API -type domainRoot struct { - Domain *Domain `json:"domain"` -} - -type domainsRoot struct { - Domains []Domain `json:"domains"` - Links *Links `json:"links"` -} - -// DomainCreateRequest respresents a request to create a domain. -type DomainCreateRequest struct { - Name string `json:"name"` - IPAddress string `json:"ip_address"` -} - -// DomainRecordRoot is the root of an individual Domain Record response -type domainRecordRoot struct { - DomainRecord *DomainRecord `json:"domain_record"` -} - -// DomainRecordsRoot is the root of a group of Domain Record responses -type domainRecordsRoot struct { - DomainRecords []DomainRecord `json:"domain_records"` - Links *Links `json:"links"` -} - -// DomainRecord represents a DigitalOcean DomainRecord -type DomainRecord struct { - ID int `json:"id,float64,omitempty"` - Type string `json:"type,omitempty"` - Name string `json:"name,omitempty"` - Data string `json:"data,omitempty"` - Priority int `json:"priority,omitempty"` - Port int `json:"port,omitempty"` - Weight int `json:"weight,omitempty"` -} - -// DomainRecordEditRequest represents a request to update a domain record. -type DomainRecordEditRequest struct { - Type string `json:"type,omitempty"` - Name string `json:"name,omitempty"` - Data string `json:"data,omitempty"` - Priority int `json:"priority,omitempty"` - Port int `json:"port,omitempty"` - Weight int `json:"weight,omitempty"` -} - -func (d Domain) String() string { - return Stringify(d) -} - -// List all domains. -func (s DomainsServiceOp) List(opt *ListOptions) ([]Domain, *Response, error) { - path := domainsBasePath - path, err := addOptions(path, opt) - if err != nil { - return nil, nil, err - } - - req, err := s.client.NewRequest("GET", path, nil) - if err != nil { - return nil, nil, err - } - - root := new(domainsRoot) - resp, err := s.client.Do(req, root) - if err != nil { - return nil, resp, err - } - if l := root.Links; l != nil { - resp.Links = l - } - - return root.Domains, resp, err -} - -// Get individual domain. It requires a non-empty domain name. -func (s *DomainsServiceOp) Get(name string) (*Domain, *Response, error) { - if len(name) < 1 { - return nil, nil, NewArgError("name", "cannot be an empty string") - } - - path := fmt.Sprintf("%s/%s", domainsBasePath, name) - - req, err := s.client.NewRequest("GET", path, nil) - if err != nil { - return nil, nil, err - } - - root := new(domainRoot) - resp, err := s.client.Do(req, root) - if err != nil { - return nil, resp, err - } - - return root.Domain, resp, err -} - -// Create a new domain -func (s *DomainsServiceOp) Create(createRequest *DomainCreateRequest) (*Domain, *Response, error) { - if createRequest == nil { - return nil, nil, NewArgError("createRequest", "cannot be nil") - } - - path := domainsBasePath - - req, err := s.client.NewRequest("POST", path, createRequest) - if err != nil { - return nil, nil, err - } - - root := new(domainRoot) - resp, err := s.client.Do(req, root) - if err != nil { - return nil, resp, err - } - return root.Domain, resp, err -} - -// Delete domain -func (s *DomainsServiceOp) Delete(name string) (*Response, error) { - if len(name) < 1 { - return nil, NewArgError("name", "cannot be an empty string") - } - - path := fmt.Sprintf("%s/%s", domainsBasePath, name) - - req, err := s.client.NewRequest("DELETE", path, nil) - if err != nil { - return nil, err - } - - resp, err := s.client.Do(req, nil) - - return resp, err -} - -// Converts a DomainRecord to a string. -func (d DomainRecord) String() string { - return Stringify(d) -} - -// Converts a DomainRecordEditRequest to a string. -func (d DomainRecordEditRequest) String() string { - return Stringify(d) -} - -// Records returns a slice of DomainRecords for a domain -func (s *DomainsServiceOp) Records(domain string, opt *ListOptions) ([]DomainRecord, *Response, error) { - if len(domain) < 1 { - return nil, nil, NewArgError("domain", "cannot be an empty string") - } - - path := fmt.Sprintf("%s/%s/records", domainsBasePath, domain) - path, err := addOptions(path, opt) - if err != nil { - return nil, nil, err - } - - req, err := s.client.NewRequest("GET", path, nil) - if err != nil { - return nil, nil, err - } - - root := new(domainRecordsRoot) - resp, err := s.client.Do(req, root) - if err != nil { - return nil, resp, err - } - if l := root.Links; l != nil { - resp.Links = l - } - - return root.DomainRecords, resp, err -} - -// Record returns the record id from a domain -func (s *DomainsServiceOp) Record(domain string, id int) (*DomainRecord, *Response, error) { - if len(domain) < 1 { - return nil, nil, NewArgError("domain", "cannot be an empty string") - } - - if id < 1 { - return nil, nil, NewArgError("id", "cannot be less than 1") - } - - path := fmt.Sprintf("%s/%s/records/%d", domainsBasePath, domain, id) - - req, err := s.client.NewRequest("GET", path, nil) - if err != nil { - return nil, nil, err - } - - record := new(domainRecordRoot) - resp, err := s.client.Do(req, record) - if err != nil { - return nil, resp, err - } - - return record.DomainRecord, resp, err -} - -// DeleteRecord deletes a record from a domain identified by id -func (s *DomainsServiceOp) DeleteRecord(domain string, id int) (*Response, error) { - if len(domain) < 1 { - return nil, NewArgError("domain", "cannot be an empty string") - } - - if id < 1 { - return nil, NewArgError("id", "cannot be less than 1") - } - - path := fmt.Sprintf("%s/%s/records/%d", domainsBasePath, domain, id) - - req, err := s.client.NewRequest("DELETE", path, nil) - if err != nil { - return nil, err - } - - resp, err := s.client.Do(req, nil) - - return resp, err -} - -// EditRecord edits a record using a DomainRecordEditRequest -func (s *DomainsServiceOp) EditRecord( - domain string, - id int, - editRequest *DomainRecordEditRequest, -) (*DomainRecord, *Response, error) { - if len(domain) < 1 { - return nil, nil, NewArgError("domain", "cannot be an empty string") - } - - if id < 1 { - return nil, nil, NewArgError("id", "cannot be less than 1") - } - - if editRequest == nil { - return nil, nil, NewArgError("editRequest", "cannot be nil") - } - - path := fmt.Sprintf("%s/%s/records/%d", domainsBasePath, domain, id) - - req, err := s.client.NewRequest("PUT", path, editRequest) - if err != nil { - return nil, nil, err - } - - d := new(DomainRecord) - resp, err := s.client.Do(req, d) - if err != nil { - return nil, resp, err - } - - return d, resp, err -} - -// CreateRecord creates a record using a DomainRecordEditRequest -func (s *DomainsServiceOp) CreateRecord( - domain string, - createRequest *DomainRecordEditRequest) (*DomainRecord, *Response, error) { - if len(domain) < 1 { - return nil, nil, NewArgError("domain", "cannot be empty string") - } - - if createRequest == nil { - return nil, nil, NewArgError("createRequest", "cannot be nil") - } - - path := fmt.Sprintf("%s/%s/records", domainsBasePath, domain) - req, err := s.client.NewRequest("POST", path, createRequest) - - if err != nil { - return nil, nil, err - } - - d := new(domainRecordRoot) - resp, err := s.client.Do(req, d) - if err != nil { - return nil, resp, err - } - - return d.DomainRecord, resp, err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/droplet_actions.go b/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/droplet_actions.go deleted file mode 100644 index 7012aee7..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/droplet_actions.go +++ /dev/null @@ -1,238 +0,0 @@ -package godo - -import ( - "fmt" - "net/url" -) - -// ActionRequest reprents DigitalOcean Action Request -type ActionRequest map[string]interface{} - -// DropletActionsService is an interface for interfacing with the droplet actions -// endpoints of the DigitalOcean API -// See: https://developers.digitalocean.com/documentation/v2#droplet-actions -type DropletActionsService interface { - Shutdown(int) (*Action, *Response, error) - PowerOff(int) (*Action, *Response, error) - PowerOn(int) (*Action, *Response, error) - PowerCycle(int) (*Action, *Response, error) - Reboot(int) (*Action, *Response, error) - Restore(int, int) (*Action, *Response, error) - Resize(int, string, bool) (*Action, *Response, error) - Rename(int, string) (*Action, *Response, error) - Snapshot(int, string) (*Action, *Response, error) - EnableBackups(int) (*Action, *Response, error) - DisableBackups(int) (*Action, *Response, error) - PasswordReset(int) (*Action, *Response, error) - RebuildByImageID(int, int) (*Action, *Response, error) - RebuildByImageSlug(int, string) (*Action, *Response, error) - ChangeKernel(int, int) (*Action, *Response, error) - EnableIPv6(int) (*Action, *Response, error) - EnablePrivateNetworking(int) (*Action, *Response, error) - Upgrade(int) (*Action, *Response, error) - Get(int, int) (*Action, *Response, error) - GetByURI(string) (*Action, *Response, error) -} - -// DropletActionsServiceOp handles communication with the droplet action related -// methods of the DigitalOcean API. -type DropletActionsServiceOp struct { - client *Client -} - -var _ DropletActionsService = &DropletActionsServiceOp{} - -// Shutdown a Droplet -func (s *DropletActionsServiceOp) Shutdown(id int) (*Action, *Response, error) { - request := &ActionRequest{"type": "shutdown"} - return s.doAction(id, request) -} - -// PowerOff a Droplet -func (s *DropletActionsServiceOp) PowerOff(id int) (*Action, *Response, error) { - request := &ActionRequest{"type": "power_off"} - return s.doAction(id, request) -} - -// PowerOn a Droplet -func (s *DropletActionsServiceOp) PowerOn(id int) (*Action, *Response, error) { - request := &ActionRequest{"type": "power_on"} - return s.doAction(id, request) -} - -// PowerCycle a Droplet -func (s *DropletActionsServiceOp) PowerCycle(id int) (*Action, *Response, error) { - request := &ActionRequest{"type": "power_cycle"} - return s.doAction(id, request) -} - -// Reboot a Droplet -func (s *DropletActionsServiceOp) Reboot(id int) (*Action, *Response, error) { - request := &ActionRequest{"type": "reboot"} - return s.doAction(id, request) -} - -// Restore an image to a Droplet -func (s *DropletActionsServiceOp) Restore(id, imageID int) (*Action, *Response, error) { - requestType := "restore" - request := &ActionRequest{ - "type": requestType, - "image": float64(imageID), - } - return s.doAction(id, request) -} - -// Resize a Droplet -func (s *DropletActionsServiceOp) Resize(id int, sizeSlug string, resizeDisk bool) (*Action, *Response, error) { - requestType := "resize" - request := &ActionRequest{ - "type": requestType, - "size": sizeSlug, - "disk": resizeDisk, - } - return s.doAction(id, request) -} - -// Rename a Droplet -func (s *DropletActionsServiceOp) Rename(id int, name string) (*Action, *Response, error) { - requestType := "rename" - request := &ActionRequest{ - "type": requestType, - "name": name, - } - return s.doAction(id, request) -} - -// Snapshot a Droplet. -func (s *DropletActionsServiceOp) Snapshot(id int, name string) (*Action, *Response, error) { - requestType := "snapshot" - request := &ActionRequest{ - "type": requestType, - "name": name, - } - return s.doAction(id, request) -} - -// EnableBackups enables backups for a droplet. -func (s *DropletActionsServiceOp) EnableBackups(id int) (*Action, *Response, error) { - request := &ActionRequest{"type": "enable_backups"} - return s.doAction(id, request) -} - -// DisableBackups disables backups for a droplet. -func (s *DropletActionsServiceOp) DisableBackups(id int) (*Action, *Response, error) { - request := &ActionRequest{"type": "disable_backups"} - return s.doAction(id, request) -} - -// PasswordReset resets the password for a droplet. -func (s *DropletActionsServiceOp) PasswordReset(id int) (*Action, *Response, error) { - request := &ActionRequest{"type": "password_reset"} - return s.doAction(id, request) -} - -// RebuildByImageID rebuilds a droplet droplet from an image with a given id. -func (s *DropletActionsServiceOp) RebuildByImageID(id, imageID int) (*Action, *Response, error) { - request := &ActionRequest{"type": "rebuild", "image": imageID} - return s.doAction(id, request) -} - -// RebuildByImageSlug rebuilds a droplet from an image with a given slug. -func (s *DropletActionsServiceOp) RebuildByImageSlug(id int, slug string) (*Action, *Response, error) { - request := &ActionRequest{"type": "rebuild", "image": slug} - return s.doAction(id, request) -} - -// ChangeKernel changes the kernel for a droplet. -func (s *DropletActionsServiceOp) ChangeKernel(id, kernelID int) (*Action, *Response, error) { - request := &ActionRequest{"type": "change_kernel", "kernel": kernelID} - return s.doAction(id, request) -} - -// EnableIPv6 enables IPv6 for a droplet. -func (s *DropletActionsServiceOp) EnableIPv6(id int) (*Action, *Response, error) { - request := &ActionRequest{"type": "enable_ipv6"} - return s.doAction(id, request) -} - -// EnablePrivateNetworking enables private networking for a droplet. -func (s *DropletActionsServiceOp) EnablePrivateNetworking(id int) (*Action, *Response, error) { - request := &ActionRequest{"type": "enable_private_networking"} - return s.doAction(id, request) -} - -// Upgrade a droplet. -func (s *DropletActionsServiceOp) Upgrade(id int) (*Action, *Response, error) { - request := &ActionRequest{"type": "upgrade"} - return s.doAction(id, request) -} - -func (s *DropletActionsServiceOp) doAction(id int, request *ActionRequest) (*Action, *Response, error) { - if id < 1 { - return nil, nil, NewArgError("id", "cannot be less than 1") - } - - if request == nil { - return nil, nil, NewArgError("request", "request can't be nil") - } - - path := dropletActionPath(id) - - req, err := s.client.NewRequest("POST", path, request) - if err != nil { - return nil, nil, err - } - - root := new(actionRoot) - resp, err := s.client.Do(req, root) - if err != nil { - return nil, resp, err - } - - return &root.Event, resp, err -} - -// Get an action for a particular droplet by id. -func (s *DropletActionsServiceOp) Get(dropletID, actionID int) (*Action, *Response, error) { - if dropletID < 1 { - return nil, nil, NewArgError("dropletID", "cannot be less than 1") - } - - if actionID < 1 { - return nil, nil, NewArgError("actionID", "cannot be less than 1") - } - - path := fmt.Sprintf("%s/%d", dropletActionPath(dropletID), actionID) - return s.get(path) -} - -// GetByURI gets an action for a particular droplet by id. -func (s *DropletActionsServiceOp) GetByURI(rawurl string) (*Action, *Response, error) { - u, err := url.Parse(rawurl) - if err != nil { - return nil, nil, err - } - - return s.get(u.Path) - -} - -func (s *DropletActionsServiceOp) get(path string) (*Action, *Response, error) { - req, err := s.client.NewRequest("GET", path, nil) - if err != nil { - return nil, nil, err - } - - root := new(actionRoot) - resp, err := s.client.Do(req, root) - if err != nil { - return nil, resp, err - } - - return &root.Event, resp, err - -} - -func dropletActionPath(dropletID int) string { - return fmt.Sprintf("v2/droplets/%d/actions", dropletID) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/droplets.go b/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/droplets.go deleted file mode 100644 index 696d6210..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/droplets.go +++ /dev/null @@ -1,403 +0,0 @@ -package godo - -import ( - "encoding/json" - "fmt" -) - -const dropletBasePath = "v2/droplets" - -// DropletsService is an interface for interfacing with the droplet -// endpoints of the DigitalOcean API -// See: https://developers.digitalocean.com/documentation/v2#droplets -type DropletsService interface { - List(*ListOptions) ([]Droplet, *Response, error) - Get(int) (*Droplet, *Response, error) - Create(*DropletCreateRequest) (*Droplet, *Response, error) - Delete(int) (*Response, error) - Kernels(int, *ListOptions) ([]Kernel, *Response, error) - Snapshots(int, *ListOptions) ([]Image, *Response, error) - Backups(int, *ListOptions) ([]Image, *Response, error) - Actions(int, *ListOptions) ([]Action, *Response, error) - Neighbors(int) ([]Droplet, *Response, error) -} - -// DropletsServiceOp handles communication with the droplet related methods of the -// DigitalOcean API. -type DropletsServiceOp struct { - client *Client -} - -var _ DropletsService = &DropletsServiceOp{} - -// Droplet represents a DigitalOcean Droplet -type Droplet struct { - ID int `json:"id,float64,omitempty"` - Name string `json:"name,omitempty"` - Memory int `json:"memory,omitempty"` - Vcpus int `json:"vcpus,omitempty"` - Disk int `json:"disk,omitempty"` - Region *Region `json:"region,omitempty"` - Image *Image `json:"image,omitempty"` - Size *Size `json:"size,omitempty"` - SizeSlug string `json:"size_slug,omitempty"` - BackupIDs []int `json:"backup_ids,omitempty"` - SnapshotIDs []int `json:"snapshot_ids,omitempty"` - Locked bool `json:"locked,bool,omitempty"` - Status string `json:"status,omitempty"` - Networks *Networks `json:"networks,omitempty"` - ActionIDs []int `json:"action_ids,omitempty"` - Created string `json:"created_at,omitempty"` -} - -// Kernel object -type Kernel struct { - ID int `json:"id,float64,omitempty"` - Name string `json:"name,omitempty"` - Version string `json:"version,omitempty"` -} - -// Convert Droplet to a string -func (d Droplet) String() string { - return Stringify(d) -} - -// DropletRoot represents a Droplet root -type dropletRoot struct { - Droplet *Droplet `json:"droplet"` - Links *Links `json:"links,omitempty"` -} - -type dropletsRoot struct { - Droplets []Droplet `json:"droplets"` - Links *Links `json:"links"` -} - -type kernelsRoot struct { - Kernels []Kernel `json:"kernels,omitempty"` - Links *Links `json:"links"` -} - -type snapshotsRoot struct { - Snapshots []Image `json:"snapshots,omitempty"` - Links *Links `json:"links"` -} - -type backupsRoot struct { - Backups []Image `json:"backups,omitempty"` - Links *Links `json:"links"` -} - -// DropletCreateImage identifies an image for the create request. It prefers slug over ID. -type DropletCreateImage struct { - ID int - Slug string -} - -// MarshalJSON returns either the slug or id of the image. It returns the id -// if the slug is empty. -func (d DropletCreateImage) MarshalJSON() ([]byte, error) { - if d.Slug != "" { - return json.Marshal(d.Slug) - } - - return json.Marshal(d.ID) -} - -// DropletCreateSSHKey identifies a SSH Key for the create request. It prefers fingerprint over ID. -type DropletCreateSSHKey struct { - ID int - Fingerprint string -} - -// MarshalJSON returns either the fingerprint or id of the ssh key. It returns -// the id if the fingerprint is empty. -func (d DropletCreateSSHKey) MarshalJSON() ([]byte, error) { - if d.Fingerprint != "" { - return json.Marshal(d.Fingerprint) - } - - return json.Marshal(d.ID) -} - -// DropletCreateRequest represents a request to create a droplet. -type DropletCreateRequest struct { - Name string `json:"name"` - Region string `json:"region"` - Size string `json:"size"` - Image DropletCreateImage `json:"image"` - SSHKeys []DropletCreateSSHKey `json:"ssh_keys"` - Backups bool `json:"backups"` - IPv6 bool `json:"ipv6"` - PrivateNetworking bool `json:"private_networking"` - UserData string `json:"user_data,omitempty"` -} - -func (d DropletCreateRequest) String() string { - return Stringify(d) -} - -// Networks represents the droplet's networks -type Networks struct { - V4 []NetworkV4 `json:"v4,omitempty"` - V6 []NetworkV6 `json:"v6,omitempty"` -} - -// NetworkV4 represents a DigitalOcean IPv4 Network -type NetworkV4 struct { - IPAddress string `json:"ip_address,omitempty"` - Netmask string `json:"netmask,omitempty"` - Gateway string `json:"gateway,omitempty"` - Type string `json:"type,omitempty"` -} - -func (n NetworkV4) String() string { - return Stringify(n) -} - -// NetworkV6 represents a DigitalOcean IPv6 network. -type NetworkV6 struct { - IPAddress string `json:"ip_address,omitempty"` - Netmask int `json:"netmask,omitempty"` - Gateway string `json:"gateway,omitempty"` - Type string `json:"type,omitempty"` -} - -func (n NetworkV6) String() string { - return Stringify(n) -} - -// List all droplets -func (s *DropletsServiceOp) List(opt *ListOptions) ([]Droplet, *Response, error) { - path := dropletBasePath - path, err := addOptions(path, opt) - if err != nil { - return nil, nil, err - } - - req, err := s.client.NewRequest("GET", path, nil) - if err != nil { - return nil, nil, err - } - - root := new(dropletsRoot) - resp, err := s.client.Do(req, root) - if err != nil { - return nil, resp, err - } - if l := root.Links; l != nil { - resp.Links = l - } - - return root.Droplets, resp, err -} - -// Get individual droplet -func (s *DropletsServiceOp) Get(dropletID int) (*Droplet, *Response, error) { - if dropletID < 1 { - return nil, nil, NewArgError("dropletID", "cannot be less than 1") - } - - path := fmt.Sprintf("%s/%d", dropletBasePath, dropletID) - - req, err := s.client.NewRequest("GET", path, nil) - if err != nil { - return nil, nil, err - } - - root := new(dropletRoot) - resp, err := s.client.Do(req, root) - if err != nil { - return nil, resp, err - } - - return root.Droplet, resp, err -} - -// Create droplet -func (s *DropletsServiceOp) Create(createRequest *DropletCreateRequest) (*Droplet, *Response, error) { - if createRequest == nil { - return nil, nil, NewArgError("createRequest", "cannot be nil") - } - - path := dropletBasePath - - req, err := s.client.NewRequest("POST", path, createRequest) - if err != nil { - return nil, nil, err - } - - root := new(dropletRoot) - resp, err := s.client.Do(req, root) - if err != nil { - return nil, resp, err - } - if l := root.Links; l != nil { - resp.Links = l - } - - return root.Droplet, resp, err -} - -// Delete droplet -func (s *DropletsServiceOp) Delete(dropletID int) (*Response, error) { - if dropletID < 1 { - return nil, NewArgError("dropletID", "cannot be less than 1") - } - - path := fmt.Sprintf("%s/%d", dropletBasePath, dropletID) - - req, err := s.client.NewRequest("DELETE", path, nil) - if err != nil { - return nil, err - } - - resp, err := s.client.Do(req, nil) - - return resp, err -} - -// Kernels lists kernels available for a droplet. -func (s *DropletsServiceOp) Kernels(dropletID int, opt *ListOptions) ([]Kernel, *Response, error) { - if dropletID < 1 { - return nil, nil, NewArgError("dropletID", "cannot be less than 1") - } - - path := fmt.Sprintf("%s/%d/kernels", dropletBasePath, dropletID) - path, err := addOptions(path, opt) - if err != nil { - return nil, nil, err - } - - req, err := s.client.NewRequest("GET", path, nil) - if err != nil { - return nil, nil, err - } - - root := new(kernelsRoot) - resp, err := s.client.Do(req, root) - if l := root.Links; l != nil { - resp.Links = l - } - - return root.Kernels, resp, err -} - -// Actions lists the actions for a droplet. -func (s *DropletsServiceOp) Actions(dropletID int, opt *ListOptions) ([]Action, *Response, error) { - if dropletID < 1 { - return nil, nil, NewArgError("dropletID", "cannot be less than 1") - } - - path := fmt.Sprintf("%s/%d/actions", dropletBasePath, dropletID) - path, err := addOptions(path, opt) - if err != nil { - return nil, nil, err - } - - req, err := s.client.NewRequest("GET", path, nil) - if err != nil { - return nil, nil, err - } - - root := new(actionsRoot) - resp, err := s.client.Do(req, root) - if err != nil { - return nil, resp, err - } - if l := root.Links; l != nil { - resp.Links = l - } - - return root.Actions, resp, err -} - -// Backups lists the backups for a droplet. -func (s *DropletsServiceOp) Backups(dropletID int, opt *ListOptions) ([]Image, *Response, error) { - if dropletID < 1 { - return nil, nil, NewArgError("dropletID", "cannot be less than 1") - } - - path := fmt.Sprintf("%s/%d/backups", dropletBasePath, dropletID) - path, err := addOptions(path, opt) - if err != nil { - return nil, nil, err - } - - req, err := s.client.NewRequest("GET", path, nil) - if err != nil { - return nil, nil, err - } - - root := new(backupsRoot) - resp, err := s.client.Do(req, root) - if err != nil { - return nil, resp, err - } - if l := root.Links; l != nil { - resp.Links = l - } - - return root.Backups, resp, err -} - -// Snapshots lists the snapshots available for a droplet. -func (s *DropletsServiceOp) Snapshots(dropletID int, opt *ListOptions) ([]Image, *Response, error) { - if dropletID < 1 { - return nil, nil, NewArgError("dropletID", "cannot be less than 1") - } - - path := fmt.Sprintf("%s/%d/snapshots", dropletBasePath, dropletID) - path, err := addOptions(path, opt) - if err != nil { - return nil, nil, err - } - - req, err := s.client.NewRequest("GET", path, nil) - if err != nil { - return nil, nil, err - } - - root := new(snapshotsRoot) - resp, err := s.client.Do(req, root) - if err != nil { - return nil, resp, err - } - if l := root.Links; l != nil { - resp.Links = l - } - - return root.Snapshots, resp, err -} - -// Neighbors lists the neighbors for a droplet. -func (s *DropletsServiceOp) Neighbors(dropletID int) ([]Droplet, *Response, error) { - if dropletID < 1 { - return nil, nil, NewArgError("dropletID", "cannot be less than 1") - } - - path := fmt.Sprintf("%s/%d/neighbors", dropletBasePath, dropletID) - - req, err := s.client.NewRequest("GET", path, nil) - if err != nil { - return nil, nil, err - } - - root := new(dropletsRoot) - resp, err := s.client.Do(req, root) - if err != nil { - return nil, resp, err - } - - return root.Droplets, resp, err -} - -func (s *DropletsServiceOp) dropletActionStatus(uri string) (string, error) { - action, _, err := s.client.DropletActions.GetByURI(uri) - - if err != nil { - return "", err - } - - return action.Status, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/errors.go b/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/errors.go deleted file mode 100644 index a65ebd76..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/errors.go +++ /dev/null @@ -1,24 +0,0 @@ -package godo - -import "fmt" - -// ArgError is an error that represents an error with an input to godo. It -// identifies the argument and the cause (if possible). -type ArgError struct { - arg string - reason string -} - -var _ error = &ArgError{} - -// NewArgError creates an InputError. -func NewArgError(arg, reason string) *ArgError { - return &ArgError{ - arg: arg, - reason: reason, - } -} - -func (e *ArgError) Error() string { - return fmt.Sprintf("%s is invalid because %s", e.arg, e.reason) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/floating_ips.go b/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/floating_ips.go deleted file mode 100644 index bad04b96..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/floating_ips.go +++ /dev/null @@ -1,131 +0,0 @@ -package godo - -import "fmt" - -const floatingBasePath = "v2/floating_ips" - -// FloatingIPsService is an interface for interfacing with the floating IPs -// endpoints of the Digital Ocean API. -// See: https://developers.digitalocean.com/documentation/v2#floating-ips -type FloatingIPsService interface { - List(*ListOptions) ([]FloatingIP, *Response, error) - Get(string) (*FloatingIP, *Response, error) - Create(*FloatingIPCreateRequest) (*FloatingIP, *Response, error) - Delete(string) (*Response, error) -} - -// FloatingIPsServiceOp handles communication with the floating IPs related methods of the -// DigitalOcean API. -type FloatingIPsServiceOp struct { - client *Client -} - -var _ FloatingIPsService = &FloatingIPsServiceOp{} - -// FloatingIP represents a Digital Ocean floating IP. -type FloatingIP struct { - Region *Region `json:"region"` - Droplet *Droplet `json:"droplet"` - IP string `json:"ip"` -} - -func (f FloatingIP) String() string { - return Stringify(f) -} - -type floatingIPsRoot struct { - FloatingIPs []FloatingIP `json:"floating_ips"` - Links *Links `json:"links"` -} - -type floatingIPRoot struct { - FloatingIP *FloatingIP `json:"floating_ip"` - Links *Links `json:"links,omitempty"` -} - -// FloatingIPCreateRequest represents a request to create a floating IP. -// If DropletID is not empty, the floating IP will be assigned to the -// droplet. -type FloatingIPCreateRequest struct { - Region string `json:"region"` - DropletID int `json:"droplet_id,omitempty"` -} - -// List all floating IPs. -func (f *FloatingIPsServiceOp) List(opt *ListOptions) ([]FloatingIP, *Response, error) { - path := floatingBasePath - path, err := addOptions(path, opt) - if err != nil { - return nil, nil, err - } - - req, err := f.client.NewRequest("GET", path, nil) - if err != nil { - return nil, nil, err - } - - root := new(floatingIPsRoot) - resp, err := f.client.Do(req, root) - if err != nil { - return nil, resp, err - } - if l := root.Links; l != nil { - resp.Links = l - } - - return root.FloatingIPs, resp, err -} - -// Get an individual floating IP. -func (f *FloatingIPsServiceOp) Get(ip string) (*FloatingIP, *Response, error) { - path := fmt.Sprintf("%s/%s", floatingBasePath, ip) - - req, err := f.client.NewRequest("GET", path, nil) - if err != nil { - return nil, nil, err - } - - root := new(floatingIPRoot) - resp, err := f.client.Do(req, root) - if err != nil { - return nil, resp, err - } - - return root.FloatingIP, resp, err -} - -// Create a floating IP. If the DropletID field of the request is not empty, -// the floating IP will also be assigned to the droplet. -func (f *FloatingIPsServiceOp) Create(createRequest *FloatingIPCreateRequest) (*FloatingIP, *Response, error) { - path := floatingBasePath - - req, err := f.client.NewRequest("POST", path, createRequest) - if err != nil { - return nil, nil, err - } - - root := new(floatingIPRoot) - resp, err := f.client.Do(req, root) - if err != nil { - return nil, resp, err - } - if l := root.Links; l != nil { - resp.Links = l - } - - return root.FloatingIP, resp, err -} - -// Delete a floating IP. -func (f *FloatingIPsServiceOp) Delete(ip string) (*Response, error) { - path := fmt.Sprintf("%s/%s", floatingBasePath, ip) - - req, err := f.client.NewRequest("DELETE", path, nil) - if err != nil { - return nil, err - } - - resp, err := f.client.Do(req, nil) - - return resp, err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/floating_ips_actions.go b/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/floating_ips_actions.go deleted file mode 100644 index 2465208d..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/floating_ips_actions.go +++ /dev/null @@ -1,97 +0,0 @@ -package godo - -import "fmt" - -// FloatingIPActionsService is an interface for interfacing with the -// floating IPs actions endpoints of the Digital Ocean API. -// See: https://developers.digitalocean.com/documentation/v2#floating-ips-action -type FloatingIPActionsService interface { - Assign(ip string, dropletID int) (*Action, *Response, error) - Unassign(ip string) (*Action, *Response, error) - Get(ip string, actionID int) (*Action, *Response, error) - List(ip string) ([]Action, *Response, error) -} - -// FloatingIPActionsServiceOp handles communication with the floating IPs -// action related methods of the DigitalOcean API. -type FloatingIPActionsServiceOp struct { - client *Client -} - -// Assign a floating IP to a droplet. -func (s *FloatingIPActionsServiceOp) Assign(ip string, dropletID int) (*Action, *Response, error) { - request := &ActionRequest{ - "type": "assign", - "droplet_id": dropletID, - } - return s.doAction(ip, request) -} - -// Unassign a floating IP from the droplet it is currently assigned to. -func (s *FloatingIPActionsServiceOp) Unassign(ip string) (*Action, *Response, error) { - request := &ActionRequest{"type": "unassign"} - return s.doAction(ip, request) -} - -// Get an action for a particular floating IP by id. -func (s *FloatingIPActionsServiceOp) Get(ip string, actionID int) (*Action, *Response, error) { - path := fmt.Sprintf("%s/%d", floatingIPActionPath(ip), actionID) - return s.get(path) -} - -// List the actions for a particular floating IP. -func (s *FloatingIPActionsServiceOp) List(ip string) ([]Action, *Response, error) { - path := floatingIPActionPath(ip) - return s.list(path) -} - -func (s *FloatingIPActionsServiceOp) doAction(ip string, request *ActionRequest) (*Action, *Response, error) { - path := floatingIPActionPath(ip) - - req, err := s.client.NewRequest("POST", path, request) - if err != nil { - return nil, nil, err - } - - root := new(actionRoot) - resp, err := s.client.Do(req, root) - if err != nil { - return nil, resp, err - } - - return &root.Event, resp, err -} - -func (s *FloatingIPActionsServiceOp) get(path string) (*Action, *Response, error) { - req, err := s.client.NewRequest("GET", path, nil) - if err != nil { - return nil, nil, err - } - - root := new(actionRoot) - resp, err := s.client.Do(req, root) - if err != nil { - return nil, resp, err - } - - return &root.Event, resp, err -} - -func (s *FloatingIPActionsServiceOp) list(path string) ([]Action, *Response, error) { - req, err := s.client.NewRequest("GET", path, nil) - if err != nil { - return nil, nil, err - } - - root := new(actionsRoot) - resp, err := s.client.Do(req, root) - if err != nil { - return nil, resp, err - } - - return root.Actions, resp, err -} - -func floatingIPActionPath(ip string) string { - return fmt.Sprintf("%s/%s/actions", floatingBasePath, ip) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/godo.go b/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/godo.go deleted file mode 100644 index 7d9c513f..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/godo.go +++ /dev/null @@ -1,341 +0,0 @@ -package godo - -import ( - "bytes" - "encoding/json" - "fmt" - "io" - "io/ioutil" - "net/http" - "net/url" - "reflect" - "strconv" - "time" - - "github.com/google/go-querystring/query" - headerLink "github.com/tent/http-link-go" -) - -const ( - libraryVersion = "0.1.0" - defaultBaseURL = "https://api.digitalocean.com/" - userAgent = "godo/" + libraryVersion - mediaType = "application/json" - - headerRateLimit = "X-RateLimit-Limit" - headerRateRemaining = "X-RateLimit-Remaining" - headerRateReset = "X-RateLimit-Reset" -) - -// Client manages communication with DigitalOcean V2 API. -type Client struct { - // HTTP client used to communicate with the DO API. - client *http.Client - - // Base URL for API requests. - BaseURL *url.URL - - // User agent for client - UserAgent string - - // Rate contains the current rate limit for the client as determined by the most recent - // API call. - Rate Rate - - // Services used for communicating with the API - Account AccountService - Actions ActionsService - Domains DomainsService - Droplets DropletsService - DropletActions DropletActionsService - Images ImagesService - ImageActions ImageActionsService - Keys KeysService - Regions RegionsService - Sizes SizesService - FloatingIPs FloatingIPsService - FloatingIPActions FloatingIPActionsService - - // Optional function called after every successful request made to the DO APIs - onRequestCompleted RequestCompletionCallback -} - -// RequestCompletionCallback defines the type of the request callback function -type RequestCompletionCallback func(*http.Request, *http.Response) - -// ListOptions specifies the optional parameters to various List methods that -// support pagination. -type ListOptions struct { - // For paginated result sets, page of results to retrieve. - Page int `url:"page,omitempty"` - - // For paginated result sets, the number of results to include per page. - PerPage int `url:"per_page,omitempty"` -} - -// Response is a DigitalOcean response. This wraps the standard http.Response returned from DigitalOcean. -type Response struct { - *http.Response - - // Links that were returned with the response. These are parsed from - // request body and not the header. - Links *Links - - // Monitoring URI - Monitor string - - Rate -} - -// An ErrorResponse reports the error caused by an API request -type ErrorResponse struct { - // HTTP response that caused this error - Response *http.Response - - // Error message - Message string -} - -// Rate contains the rate limit for the current client. -type Rate struct { - // The number of request per hour the client is currently limited to. - Limit int `json:"limit"` - - // The number of remaining requests the client can make this hour. - Remaining int `json:"remaining"` - - // The time at w\hic the current rate limit will reset. - Reset Timestamp `json:"reset"` -} - -func addOptions(s string, opt interface{}) (string, error) { - v := reflect.ValueOf(opt) - - if v.Kind() == reflect.Ptr && v.IsNil() { - return s, nil - } - - origURL, err := url.Parse(s) - if err != nil { - return s, err - } - - origValues := origURL.Query() - - newValues, err := query.Values(opt) - if err != nil { - return s, err - } - - for k, v := range newValues { - origValues[k] = v - } - - origURL.RawQuery = origValues.Encode() - return origURL.String(), nil -} - -// NewClient returns a new DigitalOcean API client. -func NewClient(httpClient *http.Client) *Client { - if httpClient == nil { - httpClient = http.DefaultClient - } - - baseURL, _ := url.Parse(defaultBaseURL) - - c := &Client{client: httpClient, BaseURL: baseURL, UserAgent: userAgent} - c.Account = &AccountServiceOp{client: c} - c.Actions = &ActionsServiceOp{client: c} - c.Domains = &DomainsServiceOp{client: c} - c.Droplets = &DropletsServiceOp{client: c} - c.DropletActions = &DropletActionsServiceOp{client: c} - c.Images = &ImagesServiceOp{client: c} - c.ImageActions = &ImageActionsServiceOp{client: c} - c.Keys = &KeysServiceOp{client: c} - c.Regions = &RegionsServiceOp{client: c} - c.Sizes = &SizesServiceOp{client: c} - c.FloatingIPs = &FloatingIPsServiceOp{client: c} - c.FloatingIPActions = &FloatingIPActionsServiceOp{client: c} - - return c -} - -// NewRequest creates an API request. A relative URL can be provided in urlStr, which will be resolved to the -// BaseURL of the Client. Relative URLS should always be specified without a preceding slash. If specified, the -// value pointed to by body is JSON encoded and included in as the request body. -func (c *Client) NewRequest(method, urlStr string, body interface{}) (*http.Request, error) { - rel, err := url.Parse(urlStr) - if err != nil { - return nil, err - } - - u := c.BaseURL.ResolveReference(rel) - - buf := new(bytes.Buffer) - if body != nil { - err := json.NewEncoder(buf).Encode(body) - if err != nil { - return nil, err - } - } - - req, err := http.NewRequest(method, u.String(), buf) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", mediaType) - req.Header.Add("Accept", mediaType) - req.Header.Add("User-Agent", userAgent) - return req, nil -} - -// OnRequestCompleted sets the DO API request completion callback -func (c *Client) OnRequestCompleted(rc RequestCompletionCallback) { - c.onRequestCompleted = rc -} - -// newResponse creates a new Response for the provided http.Response -func newResponse(r *http.Response) *Response { - response := Response{Response: r} - response.populateRate() - - return &response -} - -func (r *Response) links() (map[string]headerLink.Link, error) { - if linkText, ok := r.Response.Header["Link"]; ok { - links, err := headerLink.Parse(linkText[0]) - - if err != nil { - return nil, err - } - - linkMap := map[string]headerLink.Link{} - for _, link := range links { - linkMap[link.Rel] = link - } - - return linkMap, nil - } - - return map[string]headerLink.Link{}, nil -} - -// populateRate parses the rate related headers and populates the response Rate. -func (r *Response) populateRate() { - if limit := r.Header.Get(headerRateLimit); limit != "" { - r.Rate.Limit, _ = strconv.Atoi(limit) - } - if remaining := r.Header.Get(headerRateRemaining); remaining != "" { - r.Rate.Remaining, _ = strconv.Atoi(remaining) - } - if reset := r.Header.Get(headerRateReset); reset != "" { - if v, _ := strconv.ParseInt(reset, 10, 64); v != 0 { - r.Rate.Reset = Timestamp{time.Unix(v, 0)} - } - } -} - -// Do sends an API request and returns the API response. The API response is JSON decoded and stored in the value -// pointed to by v, or returned as an error if an API error has occurred. If v implements the io.Writer interface, -// the raw response will be written to v, without attempting to decode it. -func (c *Client) Do(req *http.Request, v interface{}) (*Response, error) { - resp, err := c.client.Do(req) - if err != nil { - return nil, err - } - if c.onRequestCompleted != nil { - c.onRequestCompleted(req, resp) - } - - defer func() { - if rerr := resp.Body.Close(); err == nil { - err = rerr - } - }() - - response := newResponse(resp) - c.Rate = response.Rate - - err = CheckResponse(resp) - if err != nil { - return response, err - } - - if v != nil { - if w, ok := v.(io.Writer); ok { - _, err := io.Copy(w, resp.Body) - if err != nil { - return nil, err - } - } else { - err := json.NewDecoder(resp.Body).Decode(v) - if err != nil { - return nil, err - } - } - } - - return response, err -} -func (r *ErrorResponse) Error() string { - return fmt.Sprintf("%v %v: %d %v", - r.Response.Request.Method, r.Response.Request.URL, r.Response.StatusCode, r.Message) -} - -// CheckResponse checks the API response for errors, and returns them if present. A response is considered an -// error if it has a status code outside the 200 range. API error responses are expected to have either no response -// body, or a JSON response body that maps to ErrorResponse. Any other response body will be silently ignored. -func CheckResponse(r *http.Response) error { - if c := r.StatusCode; c >= 200 && c <= 299 { - return nil - } - - errorResponse := &ErrorResponse{Response: r} - data, err := ioutil.ReadAll(r.Body) - if err == nil && len(data) > 0 { - err := json.Unmarshal(data, errorResponse) - if err != nil { - return err - } - } - - return errorResponse -} - -func (r Rate) String() string { - return Stringify(r) -} - -// String is a helper routine that allocates a new string value -// to store v and returns a pointer to it. -func String(v string) *string { - p := new(string) - *p = v - return p -} - -// Int is a helper routine that allocates a new int32 value -// to store v and returns a pointer to it, but unlike Int32 -// its argument value is an int. -func Int(v int) *int { - p := new(int) - *p = v - return p -} - -// Bool is a helper routine that allocates a new bool value -// to store v and returns a pointer to it. -func Bool(v bool) *bool { - p := new(bool) - *p = v - return p -} - -// StreamToString converts a reader to a string -func StreamToString(stream io.Reader) string { - buf := new(bytes.Buffer) - _, _ = buf.ReadFrom(stream) - return buf.String() -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/image_actions.go b/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/image_actions.go deleted file mode 100644 index 2d053856..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/image_actions.go +++ /dev/null @@ -1,71 +0,0 @@ -package godo - -import "fmt" - -// ImageActionsService is an interface for interfacing with the image actions -// endpoints of the DigitalOcean API -// See: https://developers.digitalocean.com/documentation/v2#image-actions -type ImageActionsService interface { - Get(int, int) (*Action, *Response, error) - Transfer(int, *ActionRequest) (*Action, *Response, error) -} - -// ImageActionsServiceOp handles communition with the image action related methods of the -// DigitalOcean API. -type ImageActionsServiceOp struct { - client *Client -} - -var _ ImageActionsService = &ImageActionsServiceOp{} - -// Transfer an image -func (i *ImageActionsServiceOp) Transfer(imageID int, transferRequest *ActionRequest) (*Action, *Response, error) { - if imageID < 1 { - return nil, nil, NewArgError("imageID", "cannot be less than 1") - } - - if transferRequest == nil { - return nil, nil, NewArgError("transferRequest", "cannot be nil") - } - - path := fmt.Sprintf("v2/images/%d/actions", imageID) - - req, err := i.client.NewRequest("POST", path, transferRequest) - if err != nil { - return nil, nil, err - } - - root := new(actionRoot) - resp, err := i.client.Do(req, root) - if err != nil { - return nil, resp, err - } - - return &root.Event, resp, err -} - -// Get an action for a particular image by id. -func (i *ImageActionsServiceOp) Get(imageID, actionID int) (*Action, *Response, error) { - if imageID < 1 { - return nil, nil, NewArgError("imageID", "cannot be less than 1") - } - - if actionID < 1 { - return nil, nil, NewArgError("actionID", "cannot be less than 1") - } - - path := fmt.Sprintf("v2/images/%d/actions/%d", imageID, actionID) - - req, err := i.client.NewRequest("GET", path, nil) - if err != nil { - return nil, nil, err - } - - root := new(actionRoot) - resp, err := i.client.Do(req, root) - if err != nil { - return nil, resp, err - } - - return &root.Event, resp, err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/images.go b/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/images.go deleted file mode 100644 index 96894f88..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/images.go +++ /dev/null @@ -1,194 +0,0 @@ -package godo - -import "fmt" - -const imageBasePath = "v2/images" - -// ImagesService is an interface for interfacing with the images -// endpoints of the DigitalOcean API -// See: https://developers.digitalocean.com/documentation/v2#images -type ImagesService interface { - List(*ListOptions) ([]Image, *Response, error) - ListDistribution(opt *ListOptions) ([]Image, *Response, error) - ListApplication(opt *ListOptions) ([]Image, *Response, error) - ListUser(opt *ListOptions) ([]Image, *Response, error) - GetByID(int) (*Image, *Response, error) - GetBySlug(string) (*Image, *Response, error) - Update(int, *ImageUpdateRequest) (*Image, *Response, error) - Delete(int) (*Response, error) -} - -// ImagesServiceOp handles communication with the image related methods of the -// DigitalOcean API. -type ImagesServiceOp struct { - client *Client -} - -var _ ImagesService = &ImagesServiceOp{} - -// Image represents a DigitalOcean Image -type Image struct { - ID int `json:"id,float64,omitempty"` - Name string `json:"name,omitempty"` - Type string `json:"type,omitempty"` - Distribution string `json:"distribution,omitempty"` - Slug string `json:"slug,omitempty"` - Public bool `json:"public,omitempty"` - Regions []string `json:"regions,omitempty"` - MinDiskSize int `json:"min_disk_size,omitempty"` - Created string `json:"created_at,omitempty"` -} - -// ImageUpdateRequest represents a request to update an image. -type ImageUpdateRequest struct { - Name string `json:"name"` -} - -type imageRoot struct { - Image Image -} - -type imagesRoot struct { - Images []Image - Links *Links `json:"links"` -} - -type listImageOptions struct { - Private bool `url:"private,omitempty"` - Type string `url:"type,omitempty"` -} - -func (i Image) String() string { - return Stringify(i) -} - -// List lists all the images available. -func (s *ImagesServiceOp) List(opt *ListOptions) ([]Image, *Response, error) { - return s.list(opt, nil) -} - -// ListDistribution lists all the distribution images. -func (s *ImagesServiceOp) ListDistribution(opt *ListOptions) ([]Image, *Response, error) { - listOpt := listImageOptions{Type: "distribution"} - return s.list(opt, &listOpt) -} - -// ListApplication lists all the application images. -func (s *ImagesServiceOp) ListApplication(opt *ListOptions) ([]Image, *Response, error) { - listOpt := listImageOptions{Type: "application"} - return s.list(opt, &listOpt) -} - -// ListUser lists all the user images. -func (s *ImagesServiceOp) ListUser(opt *ListOptions) ([]Image, *Response, error) { - listOpt := listImageOptions{Private: true} - return s.list(opt, &listOpt) -} - -// GetByID retrieves an image by id. -func (s *ImagesServiceOp) GetByID(imageID int) (*Image, *Response, error) { - if imageID < 1 { - return nil, nil, NewArgError("imageID", "cannot be less than 1") - } - - return s.get(interface{}(imageID)) -} - -// GetBySlug retrieves an image by slug. -func (s *ImagesServiceOp) GetBySlug(slug string) (*Image, *Response, error) { - if len(slug) < 1 { - return nil, nil, NewArgError("slug", "cannot be blank") - } - - return s.get(interface{}(slug)) -} - -// Update an image name. -func (s *ImagesServiceOp) Update(imageID int, updateRequest *ImageUpdateRequest) (*Image, *Response, error) { - if imageID < 1 { - return nil, nil, NewArgError("imageID", "cannot be less than 1") - } - - if updateRequest == nil { - return nil, nil, NewArgError("updateRequest", "cannot be nil") - } - - path := fmt.Sprintf("%s/%d", imageBasePath, imageID) - req, err := s.client.NewRequest("PUT", path, updateRequest) - if err != nil { - return nil, nil, err - } - - root := new(imageRoot) - resp, err := s.client.Do(req, root) - if err != nil { - return nil, resp, err - } - - return &root.Image, resp, err -} - -// Delete an image. -func (s *ImagesServiceOp) Delete(imageID int) (*Response, error) { - if imageID < 1 { - return nil, NewArgError("imageID", "cannot be less than 1") - } - - path := fmt.Sprintf("%s/%d", imageBasePath, imageID) - - req, err := s.client.NewRequest("DELETE", path, nil) - if err != nil { - return nil, err - } - - resp, err := s.client.Do(req, nil) - - return resp, err -} - -// Helper method for getting an individual image -func (s *ImagesServiceOp) get(ID interface{}) (*Image, *Response, error) { - path := fmt.Sprintf("%s/%v", imageBasePath, ID) - - req, err := s.client.NewRequest("GET", path, nil) - if err != nil { - return nil, nil, err - } - - root := new(imageRoot) - resp, err := s.client.Do(req, root) - if err != nil { - return nil, resp, err - } - - return &root.Image, resp, err -} - -// Helper method for listing images -func (s *ImagesServiceOp) list(opt *ListOptions, listOpt *listImageOptions) ([]Image, *Response, error) { - path := imageBasePath - path, err := addOptions(path, opt) - if err != nil { - return nil, nil, err - } - path, err = addOptions(path, listOpt) - if err != nil { - return nil, nil, err - } - - req, err := s.client.NewRequest("GET", path, nil) - if err != nil { - return nil, nil, err - } - - root := new(imagesRoot) - resp, err := s.client.Do(req, root) - if err != nil { - return nil, resp, err - } - if l := root.Links; l != nil { - resp.Links = l - } - - return root.Images, resp, err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/keys.go b/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/keys.go deleted file mode 100644 index 8dc50f8a..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/keys.go +++ /dev/null @@ -1,222 +0,0 @@ -package godo - -import "fmt" - -const keysBasePath = "v2/account/keys" - -// KeysService is an interface for interfacing with the keys -// endpoints of the DigitalOcean API -// See: https://developers.digitalocean.com/documentation/v2#keys -type KeysService interface { - List(*ListOptions) ([]Key, *Response, error) - GetByID(int) (*Key, *Response, error) - GetByFingerprint(string) (*Key, *Response, error) - Create(*KeyCreateRequest) (*Key, *Response, error) - UpdateByID(int, *KeyUpdateRequest) (*Key, *Response, error) - UpdateByFingerprint(string, *KeyUpdateRequest) (*Key, *Response, error) - DeleteByID(int) (*Response, error) - DeleteByFingerprint(string) (*Response, error) -} - -// KeysServiceOp handles communication with key related method of the -// DigitalOcean API. -type KeysServiceOp struct { - client *Client -} - -var _ KeysService = &KeysServiceOp{} - -// Key represents a DigitalOcean Key. -type Key struct { - ID int `json:"id,float64,omitempty"` - Name string `json:"name,omitempty"` - Fingerprint string `json:"fingerprint,omitempty"` - PublicKey string `json:"public_key,omitempty"` -} - -// KeyUpdateRequest represents a request to update a DigitalOcean key. -type KeyUpdateRequest struct { - Name string `json:"name"` -} - -type keysRoot struct { - SSHKeys []Key `json:"ssh_keys"` - Links *Links `json:"links"` -} - -type keyRoot struct { - SSHKey Key `json:"ssh_key"` -} - -func (s Key) String() string { - return Stringify(s) -} - -// KeyCreateRequest represents a request to create a new key. -type KeyCreateRequest struct { - Name string `json:"name"` - PublicKey string `json:"public_key"` -} - -// List all keys -func (s *KeysServiceOp) List(opt *ListOptions) ([]Key, *Response, error) { - path := keysBasePath - path, err := addOptions(path, opt) - if err != nil { - return nil, nil, err - } - - req, err := s.client.NewRequest("GET", path, nil) - if err != nil { - return nil, nil, err - } - - root := new(keysRoot) - resp, err := s.client.Do(req, root) - if err != nil { - return nil, resp, err - } - if l := root.Links; l != nil { - resp.Links = l - } - - return root.SSHKeys, resp, err -} - -// Performs a get given a path -func (s *KeysServiceOp) get(path string) (*Key, *Response, error) { - req, err := s.client.NewRequest("GET", path, nil) - if err != nil { - return nil, nil, err - } - - root := new(keyRoot) - resp, err := s.client.Do(req, root) - if err != nil { - return nil, resp, err - } - - return &root.SSHKey, resp, err -} - -// GetByID gets a Key by id -func (s *KeysServiceOp) GetByID(keyID int) (*Key, *Response, error) { - if keyID < 1 { - return nil, nil, NewArgError("keyID", "cannot be less than 1") - } - - path := fmt.Sprintf("%s/%d", keysBasePath, keyID) - return s.get(path) -} - -// GetByFingerprint gets a Key by by fingerprint -func (s *KeysServiceOp) GetByFingerprint(fingerprint string) (*Key, *Response, error) { - if len(fingerprint) < 1 { - return nil, nil, NewArgError("fingerprint", "cannot not be empty") - } - - path := fmt.Sprintf("%s/%s", keysBasePath, fingerprint) - return s.get(path) -} - -// Create a key using a KeyCreateRequest -func (s *KeysServiceOp) Create(createRequest *KeyCreateRequest) (*Key, *Response, error) { - if createRequest == nil { - return nil, nil, NewArgError("createRequest", "cannot be nil") - } - - req, err := s.client.NewRequest("POST", keysBasePath, createRequest) - if err != nil { - return nil, nil, err - } - - root := new(keyRoot) - resp, err := s.client.Do(req, root) - if err != nil { - return nil, resp, err - } - - return &root.SSHKey, resp, err -} - -// UpdateByID updates a key name by ID. -func (s *KeysServiceOp) UpdateByID(keyID int, updateRequest *KeyUpdateRequest) (*Key, *Response, error) { - if keyID < 1 { - return nil, nil, NewArgError("keyID", "cannot be less than 1") - } - - if updateRequest == nil { - return nil, nil, NewArgError("updateRequest", "cannot be nil") - } - - path := fmt.Sprintf("%s/%d", keysBasePath, keyID) - req, err := s.client.NewRequest("PUT", path, updateRequest) - if err != nil { - return nil, nil, err - } - - root := new(keyRoot) - resp, err := s.client.Do(req, root) - if err != nil { - return nil, resp, err - } - - return &root.SSHKey, resp, err -} - -// UpdateByFingerprint updates a key name by fingerprint. -func (s *KeysServiceOp) UpdateByFingerprint(fingerprint string, updateRequest *KeyUpdateRequest) (*Key, *Response, error) { - if len(fingerprint) < 1 { - return nil, nil, NewArgError("fingerprint", "cannot be empty") - } - - if updateRequest == nil { - return nil, nil, NewArgError("updateRequest", "cannot be nil") - } - - path := fmt.Sprintf("%s/%s", keysBasePath, fingerprint) - req, err := s.client.NewRequest("PUT", path, updateRequest) - if err != nil { - return nil, nil, err - } - - root := new(keyRoot) - resp, err := s.client.Do(req, root) - if err != nil { - return nil, resp, err - } - - return &root.SSHKey, resp, err -} - -// Delete key using a path -func (s *KeysServiceOp) delete(path string) (*Response, error) { - req, err := s.client.NewRequest("DELETE", path, nil) - if err != nil { - return nil, err - } - - resp, err := s.client.Do(req, nil) - - return resp, err -} - -// DeleteByID deletes a key by its id -func (s *KeysServiceOp) DeleteByID(keyID int) (*Response, error) { - if keyID < 1 { - return nil, NewArgError("keyID", "cannot be less than 1") - } - - path := fmt.Sprintf("%s/%d", keysBasePath, keyID) - return s.delete(path) -} - -// DeleteByFingerprint deletes a key by its fingerprint -func (s *KeysServiceOp) DeleteByFingerprint(fingerprint string) (*Response, error) { - if len(fingerprint) < 1 { - return nil, NewArgError("fingerprint", "cannot be empty") - } - - path := fmt.Sprintf("%s/%s", keysBasePath, fingerprint) - return s.delete(path) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/links.go b/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/links.go deleted file mode 100644 index 46351052..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/links.go +++ /dev/null @@ -1,86 +0,0 @@ -package godo - -import ( - "net/url" - "strconv" -) - -// Links manages links that are returned along with a List -type Links struct { - Pages *Pages `json:"pages,omitempty"` - Actions []LinkAction `json:"actions,omitempty"` -} - -// Pages are pages specified in Links -type Pages struct { - First string `json:"first,omitempty"` - Prev string `json:"prev,omitempty"` - Last string `json:"last,omitempty"` - Next string `json:"next,omitempty"` -} - -// LinkAction is a pointer to an action -type LinkAction struct { - ID int `json:"id,omitempty"` - Rel string `json:"rel,omitempty"` - HREF string `json:"href,omitempty"` -} - -// CurrentPage is current page of the list -func (l *Links) CurrentPage() (int, error) { - return l.Pages.current() -} - -func (p *Pages) current() (int, error) { - switch { - case p == nil: - return 1, nil - case p.Prev == "" && p.Next != "": - return 1, nil - case p.Prev != "": - prevPage, err := pageForURL(p.Prev) - if err != nil { - return 0, err - } - - return prevPage + 1, nil - } - - return 0, nil -} - -// IsLastPage returns true if the current page is the last -func (l *Links) IsLastPage() bool { - if l.Pages == nil { - return true - } - return l.Pages.isLast() -} - -func (p *Pages) isLast() bool { - if p.Last == "" { - return true - } - - return false -} - -func pageForURL(urlText string) (int, error) { - u, err := url.ParseRequestURI(urlText) - if err != nil { - return 0, err - } - - pageStr := u.Query().Get("page") - page, err := strconv.Atoi(pageStr) - if err != nil { - return 0, err - } - - return page, nil -} - -// Get a link action by id. -func (la *LinkAction) Get(client *Client) (*Action, *Response, error) { - return client.Actions.Get(la.ID) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/regions.go b/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/regions.go deleted file mode 100644 index e44e8bcd..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/regions.go +++ /dev/null @@ -1,63 +0,0 @@ -package godo - -// RegionsService is an interface for interfacing with the regions -// endpoints of the DigitalOcean API -// See: https://developers.digitalocean.com/documentation/v2#regions -type RegionsService interface { - List(*ListOptions) ([]Region, *Response, error) -} - -// RegionsServiceOp handles communication with the region related methods of the -// DigitalOcean API. -type RegionsServiceOp struct { - client *Client -} - -var _ RegionsService = &RegionsServiceOp{} - -// Region represents a DigitalOcean Region -type Region struct { - Slug string `json:"slug,omitempty"` - Name string `json:"name,omitempty"` - Sizes []string `json:"sizes,omitempty"` - Available bool `json:"available,omitempty"` - Features []string `json:"features,omitempty"` -} - -type regionsRoot struct { - Regions []Region - Links *Links `json:"links"` -} - -type regionRoot struct { - Region Region -} - -func (r Region) String() string { - return Stringify(r) -} - -// List all regions -func (s *RegionsServiceOp) List(opt *ListOptions) ([]Region, *Response, error) { - path := "v2/regions" - path, err := addOptions(path, opt) - if err != nil { - return nil, nil, err - } - - req, err := s.client.NewRequest("GET", path, nil) - if err != nil { - return nil, nil, err - } - - root := new(regionsRoot) - resp, err := s.client.Do(req, root) - if err != nil { - return nil, resp, err - } - if l := root.Links; l != nil { - resp.Links = l - } - - return root.Regions, resp, err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/sizes.go b/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/sizes.go deleted file mode 100644 index 7f454e7e..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/sizes.go +++ /dev/null @@ -1,63 +0,0 @@ -package godo - -// SizesService is an interface for interfacing with the size -// endpoints of the DigitalOcean API -// See: https://developers.digitalocean.com/documentation/v2#sizes -type SizesService interface { - List(*ListOptions) ([]Size, *Response, error) -} - -// SizesServiceOp handles communication with the size related methods of the -// DigitalOcean API. -type SizesServiceOp struct { - client *Client -} - -var _ SizesService = &SizesServiceOp{} - -// Size represents a DigitalOcean Size -type Size struct { - Slug string `json:"slug,omitempty"` - Memory int `json:"memory,omitempty"` - Vcpus int `json:"vcpus,omitempty"` - Disk int `json:"disk,omitempty"` - PriceMonthly float64 `json:"price_monthly,omitempty"` - PriceHourly float64 `json:"price_hourly,omitempty"` - Regions []string `json:"regions,omitempty"` - Available bool `json:"available,omitempty"` - Transfer float64 `json:"transfer,omitempty"` -} - -func (s Size) String() string { - return Stringify(s) -} - -type sizesRoot struct { - Sizes []Size - Links *Links `json:"links"` -} - -// List all images -func (s *SizesServiceOp) List(opt *ListOptions) ([]Size, *Response, error) { - path := "v2/sizes" - path, err := addOptions(path, opt) - if err != nil { - return nil, nil, err - } - - req, err := s.client.NewRequest("GET", path, nil) - if err != nil { - return nil, nil, err - } - - root := new(sizesRoot) - resp, err := s.client.Do(req, root) - if err != nil { - return nil, resp, err - } - if l := root.Links; l != nil { - resp.Links = l - } - - return root.Sizes, resp, err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/strings.go b/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/strings.go deleted file mode 100644 index bbdbc924..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/strings.go +++ /dev/null @@ -1,83 +0,0 @@ -package godo - -import ( - "bytes" - "fmt" - "reflect" -) - -var timestampType = reflect.TypeOf(Timestamp{}) - -// Stringify attempts to create a string representation of DigitalOcean types -func Stringify(message interface{}) string { - var buf bytes.Buffer - v := reflect.ValueOf(message) - stringifyValue(&buf, v) - return buf.String() -} - -// stringifyValue was graciously cargoculted from the goprotubuf library -func stringifyValue(w *bytes.Buffer, val reflect.Value) { - if val.Kind() == reflect.Ptr && val.IsNil() { - _, _ = w.Write([]byte("")) - return - } - - v := reflect.Indirect(val) - - switch v.Kind() { - case reflect.String: - fmt.Fprintf(w, `"%s"`, v) - case reflect.Slice: - _, _ = w.Write([]byte{'['}) - for i := 0; i < v.Len(); i++ { - if i > 0 { - _, _ = w.Write([]byte{' '}) - } - - stringifyValue(w, v.Index(i)) - } - - _, _ = w.Write([]byte{']'}) - return - case reflect.Struct: - if v.Type().Name() != "" { - _, _ = w.Write([]byte(v.Type().String())) - } - - // special handling of Timestamp values - if v.Type() == timestampType { - fmt.Fprintf(w, "{%s}", v.Interface()) - return - } - - _, _ = w.Write([]byte{'{'}) - - var sep bool - for i := 0; i < v.NumField(); i++ { - fv := v.Field(i) - if fv.Kind() == reflect.Ptr && fv.IsNil() { - continue - } - if fv.Kind() == reflect.Slice && fv.IsNil() { - continue - } - - if sep { - _, _ = w.Write([]byte(", ")) - } else { - sep = true - } - - _, _ = w.Write([]byte(v.Type().Field(i).Name)) - _, _ = w.Write([]byte{':'}) - stringifyValue(w, fv) - } - - _, _ = w.Write([]byte{'}'}) - default: - if v.CanInterface() { - fmt.Fprint(w, v.Interface()) - } - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/timestamp.go b/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/timestamp.go deleted file mode 100644 index 37a28e5f..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/digitalocean/godo/timestamp.go +++ /dev/null @@ -1,35 +0,0 @@ -package godo - -import ( - "strconv" - "time" -) - -// Timestamp represents a time that can be unmarshalled from a JSON string -// formatted as either an RFC3339 or Unix timestamp. All -// exported methods of time.Time can be called on Timestamp. -type Timestamp struct { - time.Time -} - -func (t Timestamp) String() string { - return t.Time.String() -} - -// UnmarshalJSON implements the json.Unmarshaler interface. -// Time is expected in RFC3339 or Unix format. -func (t *Timestamp) UnmarshalJSON(data []byte) error { - str := string(data) - i, err := strconv.ParseInt(str, 10, 64) - if err == nil { - t.Time = time.Unix(i, 0) - } else { - t.Time, err = time.Parse(`"`+time.RFC3339+`"`, str) - } - return err -} - -// Equal reports whether t and u are equal based on time.Equal -func (t Timestamp) Equal(u Timestamp) bool { - return t.Time.Equal(u.Time) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/LICENSE b/vendor/github.com/docker/machine/vendor/github.com/docker/docker/LICENSE deleted file mode 100644 index 508036ef..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/LICENSE +++ /dev/null @@ -1,191 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - Copyright 2013-2015 Docker, Inc. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/NOTICE b/vendor/github.com/docker/machine/vendor/github.com/docker/docker/NOTICE deleted file mode 100644 index d0e0639a..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/NOTICE +++ /dev/null @@ -1,19 +0,0 @@ -Docker -Copyright 2012-2014 Docker, Inc. - -This product includes software developed at Docker, Inc. (http://www.docker.com). - -This product contains software (https://github.com/kr/pty) developed -by Keith Rarick, licensed under the MIT License. - -The following is courtesy of our legal counsel: - - -Use and transfer of Docker may be subject to certain restrictions by the -United States and other governments. -It is your responsibility to ensure that your use and/or transfer does not -violate applicable laws. - -For more information, please see http://www.bis.doc.gov - -See also http://www.apache.org/dev/crypto.html and/or seek legal counsel. diff --git a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/contrib/syntax/vim/LICENSE b/vendor/github.com/docker/machine/vendor/github.com/docker/docker/contrib/syntax/vim/LICENSE deleted file mode 100644 index e67cdabd..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/contrib/syntax/vim/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2013 Honza Pokorny -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/mflag/LICENSE b/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/mflag/LICENSE deleted file mode 100644 index ac74d8f0..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/mflag/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2014-2015 The Docker & Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/symlink/LICENSE.APACHE b/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/symlink/LICENSE.APACHE deleted file mode 100644 index 9e4bd4db..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/symlink/LICENSE.APACHE +++ /dev/null @@ -1,191 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - Copyright 2014-2015 Docker, Inc. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/symlink/LICENSE.BSD b/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/symlink/LICENSE.BSD deleted file mode 100644 index ac74d8f0..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/symlink/LICENSE.BSD +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2014-2015 The Docker & Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/MAINTAINERS b/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/MAINTAINERS deleted file mode 100644 index aee10c84..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/MAINTAINERS +++ /dev/null @@ -1 +0,0 @@ -Solomon Hykes (@shykes) diff --git a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/console_windows.go b/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/console_windows.go deleted file mode 100644 index 6335b2b8..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/console_windows.go +++ /dev/null @@ -1,87 +0,0 @@ -// +build windows - -package term - -import ( - "syscall" - "unsafe" -) - -const ( - // Consts for Get/SetConsoleMode function - // see http://msdn.microsoft.com/en-us/library/windows/desktop/ms683167(v=vs.85).aspx - ENABLE_ECHO_INPUT = 0x0004 - ENABLE_INSERT_MODE = 0x0020 - ENABLE_LINE_INPUT = 0x0002 - ENABLE_MOUSE_INPUT = 0x0010 - ENABLE_PROCESSED_INPUT = 0x0001 - ENABLE_QUICK_EDIT_MODE = 0x0040 - ENABLE_WINDOW_INPUT = 0x0008 - // If parameter is a screen buffer handle, additional values - ENABLE_PROCESSED_OUTPUT = 0x0001 - ENABLE_WRAP_AT_EOL_OUTPUT = 0x0002 -) - -var kernel32DLL = syscall.NewLazyDLL("kernel32.dll") - -var ( - setConsoleModeProc = kernel32DLL.NewProc("SetConsoleMode") - getConsoleScreenBufferInfoProc = kernel32DLL.NewProc("GetConsoleScreenBufferInfo") -) - -func GetConsoleMode(fileDesc uintptr) (uint32, error) { - var mode uint32 - err := syscall.GetConsoleMode(syscall.Handle(fileDesc), &mode) - return mode, err -} - -func SetConsoleMode(fileDesc uintptr, mode uint32) error { - r, _, err := setConsoleModeProc.Call(fileDesc, uintptr(mode), 0) - if r == 0 { - if err != nil { - return err - } - return syscall.EINVAL - } - return nil -} - -// types for calling GetConsoleScreenBufferInfo -// see http://msdn.microsoft.com/en-us/library/windows/desktop/ms682093(v=vs.85).aspx -type ( - SHORT int16 - - SMALL_RECT struct { - Left SHORT - Top SHORT - Right SHORT - Bottom SHORT - } - - COORD struct { - X SHORT - Y SHORT - } - - WORD uint16 - - CONSOLE_SCREEN_BUFFER_INFO struct { - dwSize COORD - dwCursorPosition COORD - wAttributes WORD - srWindow SMALL_RECT - dwMaximumWindowSize COORD - } -) - -func GetConsoleScreenBufferInfo(fileDesc uintptr) (*CONSOLE_SCREEN_BUFFER_INFO, error) { - var info CONSOLE_SCREEN_BUFFER_INFO - r, _, err := getConsoleScreenBufferInfoProc.Call(uintptr(fileDesc), uintptr(unsafe.Pointer(&info)), 0) - if r == 0 { - if err != nil { - return nil, err - } - return nil, syscall.EINVAL - } - return &info, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/tc_linux_cgo.go b/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/tc_linux_cgo.go deleted file mode 100644 index ae9516c9..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/tc_linux_cgo.go +++ /dev/null @@ -1,47 +0,0 @@ -// +build linux,cgo - -package term - -import ( - "syscall" - "unsafe" -) - -// #include -import "C" - -type Termios syscall.Termios - -// MakeRaw put the terminal connected to the given file descriptor into raw -// mode and returns the previous state of the terminal so that it can be -// restored. -func MakeRaw(fd uintptr) (*State, error) { - var oldState State - if err := tcget(fd, &oldState.termios); err != 0 { - return nil, err - } - - newState := oldState.termios - - C.cfmakeraw((*C.struct_termios)(unsafe.Pointer(&newState))) - if err := tcset(fd, &newState); err != 0 { - return nil, err - } - return &oldState, nil -} - -func tcget(fd uintptr, p *Termios) syscall.Errno { - ret, err := C.tcgetattr(C.int(fd), (*C.struct_termios)(unsafe.Pointer(p))) - if ret != 0 { - return err.(syscall.Errno) - } - return 0 -} - -func tcset(fd uintptr, p *Termios) syscall.Errno { - ret, err := C.tcsetattr(C.int(fd), C.TCSANOW, (*C.struct_termios)(unsafe.Pointer(p))) - if ret != 0 { - return err.(syscall.Errno) - } - return 0 -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/tc_other.go b/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/tc_other.go deleted file mode 100644 index 266039ba..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/tc_other.go +++ /dev/null @@ -1,19 +0,0 @@ -// +build !windows -// +build !linux !cgo - -package term - -import ( - "syscall" - "unsafe" -) - -func tcget(fd uintptr, p *Termios) syscall.Errno { - _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(getTermios), uintptr(unsafe.Pointer(p))) - return err -} - -func tcset(fd uintptr, p *Termios) syscall.Errno { - _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, setTermios, uintptr(unsafe.Pointer(p))) - return err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/term.go b/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/term.go deleted file mode 100644 index 8d807d8d..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/term.go +++ /dev/null @@ -1,103 +0,0 @@ -// +build !windows - -package term - -import ( - "errors" - "os" - "os/signal" - "syscall" - "unsafe" -) - -var ( - ErrInvalidState = errors.New("Invalid terminal state") -) - -type State struct { - termios Termios -} - -type Winsize struct { - Height uint16 - Width uint16 - x uint16 - y uint16 -} - -func GetWinsize(fd uintptr) (*Winsize, error) { - ws := &Winsize{} - _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(syscall.TIOCGWINSZ), uintptr(unsafe.Pointer(ws))) - // Skipp errno = 0 - if err == 0 { - return ws, nil - } - return ws, err -} - -func SetWinsize(fd uintptr, ws *Winsize) error { - _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(syscall.TIOCSWINSZ), uintptr(unsafe.Pointer(ws))) - // Skipp errno = 0 - if err == 0 { - return nil - } - return err -} - -// IsTerminal returns true if the given file descriptor is a terminal. -func IsTerminal(fd uintptr) bool { - var termios Termios - return tcget(fd, &termios) == 0 -} - -// Restore restores the terminal connected to the given file descriptor to a -// previous state. -func RestoreTerminal(fd uintptr, state *State) error { - if state == nil { - return ErrInvalidState - } - if err := tcset(fd, &state.termios); err != 0 { - return err - } - return nil -} - -func SaveState(fd uintptr) (*State, error) { - var oldState State - if err := tcget(fd, &oldState.termios); err != 0 { - return nil, err - } - - return &oldState, nil -} - -func DisableEcho(fd uintptr, state *State) error { - newState := state.termios - newState.Lflag &^= syscall.ECHO - - if err := tcset(fd, &newState); err != 0 { - return err - } - handleInterrupt(fd, state) - return nil -} - -func SetRawTerminal(fd uintptr) (*State, error) { - oldState, err := MakeRaw(fd) - if err != nil { - return nil, err - } - handleInterrupt(fd, oldState) - return oldState, err -} - -func handleInterrupt(fd uintptr, state *State) { - sigchan := make(chan os.Signal, 1) - signal.Notify(sigchan, os.Interrupt) - - go func() { - _ = <-sigchan - RestoreTerminal(fd, state) - os.Exit(0) - }() -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/term_windows.go b/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/term_windows.go deleted file mode 100644 index d372e86a..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/term_windows.go +++ /dev/null @@ -1,89 +0,0 @@ -// +build windows - -package term - -type State struct { - mode uint32 -} - -type Winsize struct { - Height uint16 - Width uint16 - x uint16 - y uint16 -} - -func GetWinsize(fd uintptr) (*Winsize, error) { - ws := &Winsize{} - var info *CONSOLE_SCREEN_BUFFER_INFO - info, err := GetConsoleScreenBufferInfo(fd) - if err != nil { - return nil, err - } - ws.Height = uint16(info.srWindow.Right - info.srWindow.Left + 1) - ws.Width = uint16(info.srWindow.Bottom - info.srWindow.Top + 1) - - ws.x = 0 // todo azlinux -- this is the pixel size of the Window, and not currently used by any caller - ws.y = 0 - - return ws, nil -} - -func SetWinsize(fd uintptr, ws *Winsize) error { - return nil -} - -// IsTerminal returns true if the given file descriptor is a terminal. -func IsTerminal(fd uintptr) bool { - _, e := GetConsoleMode(fd) - return e == nil -} - -// Restore restores the terminal connected to the given file descriptor to a -// previous state. -func RestoreTerminal(fd uintptr, state *State) error { - return SetConsoleMode(fd, state.mode) -} - -func SaveState(fd uintptr) (*State, error) { - mode, e := GetConsoleMode(fd) - if e != nil { - return nil, e - } - return &State{mode}, nil -} - -// see http://msdn.microsoft.com/en-us/library/windows/desktop/ms683462(v=vs.85).aspx for these flag settings -func DisableEcho(fd uintptr, state *State) error { - state.mode &^= (ENABLE_ECHO_INPUT) - state.mode |= (ENABLE_PROCESSED_INPUT | ENABLE_LINE_INPUT) - return SetConsoleMode(fd, state.mode) -} - -func SetRawTerminal(fd uintptr) (*State, error) { - oldState, err := MakeRaw(fd) - if err != nil { - return nil, err - } - // TODO (azlinux): implement handling interrupt and restore state of terminal - return oldState, err -} - -// MakeRaw puts the terminal connected to the given file descriptor into raw -// mode and returns the previous state of the terminal so that it can be -// restored. -func MakeRaw(fd uintptr) (*State, error) { - var state *State - state, err := SaveState(fd) - if err != nil { - return nil, err - } - - // see http://msdn.microsoft.com/en-us/library/windows/desktop/ms683462(v=vs.85).aspx for these flag settings - state.mode &^= (ENABLE_ECHO_INPUT | ENABLE_PROCESSED_INPUT | ENABLE_LINE_INPUT) - err = SetConsoleMode(fd, state.mode) - if err != nil { - return nil, err - } - return state, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/termios_darwin.go b/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/termios_darwin.go deleted file mode 100644 index 11cd70d1..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/termios_darwin.go +++ /dev/null @@ -1,65 +0,0 @@ -package term - -import ( - "syscall" - "unsafe" -) - -const ( - getTermios = syscall.TIOCGETA - setTermios = syscall.TIOCSETA - - IGNBRK = syscall.IGNBRK - PARMRK = syscall.PARMRK - INLCR = syscall.INLCR - IGNCR = syscall.IGNCR - ECHONL = syscall.ECHONL - CSIZE = syscall.CSIZE - ICRNL = syscall.ICRNL - ISTRIP = syscall.ISTRIP - PARENB = syscall.PARENB - ECHO = syscall.ECHO - ICANON = syscall.ICANON - ISIG = syscall.ISIG - IXON = syscall.IXON - BRKINT = syscall.BRKINT - INPCK = syscall.INPCK - OPOST = syscall.OPOST - CS8 = syscall.CS8 - IEXTEN = syscall.IEXTEN -) - -type Termios struct { - Iflag uint64 - Oflag uint64 - Cflag uint64 - Lflag uint64 - Cc [20]byte - Ispeed uint64 - Ospeed uint64 -} - -// MakeRaw put the terminal connected to the given file descriptor into raw -// mode and returns the previous state of the terminal so that it can be -// restored. -func MakeRaw(fd uintptr) (*State, error) { - var oldState State - if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(getTermios), uintptr(unsafe.Pointer(&oldState.termios))); err != 0 { - return nil, err - } - - newState := oldState.termios - newState.Iflag &^= (IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL | IXON) - newState.Oflag &^= OPOST - newState.Lflag &^= (ECHO | ECHONL | ICANON | ISIG | IEXTEN) - newState.Cflag &^= (CSIZE | PARENB) - newState.Cflag |= CS8 - newState.Cc[syscall.VMIN] = 1 - newState.Cc[syscall.VTIME] = 0 - - if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(setTermios), uintptr(unsafe.Pointer(&newState))); err != 0 { - return nil, err - } - - return &oldState, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/termios_freebsd.go b/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/termios_freebsd.go deleted file mode 100644 index ed365957..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/termios_freebsd.go +++ /dev/null @@ -1,65 +0,0 @@ -package term - -import ( - "syscall" - "unsafe" -) - -const ( - getTermios = syscall.TIOCGETA - setTermios = syscall.TIOCSETA - - IGNBRK = syscall.IGNBRK - PARMRK = syscall.PARMRK - INLCR = syscall.INLCR - IGNCR = syscall.IGNCR - ECHONL = syscall.ECHONL - CSIZE = syscall.CSIZE - ICRNL = syscall.ICRNL - ISTRIP = syscall.ISTRIP - PARENB = syscall.PARENB - ECHO = syscall.ECHO - ICANON = syscall.ICANON - ISIG = syscall.ISIG - IXON = syscall.IXON - BRKINT = syscall.BRKINT - INPCK = syscall.INPCK - OPOST = syscall.OPOST - CS8 = syscall.CS8 - IEXTEN = syscall.IEXTEN -) - -type Termios struct { - Iflag uint32 - Oflag uint32 - Cflag uint32 - Lflag uint32 - Cc [20]byte - Ispeed uint32 - Ospeed uint32 -} - -// MakeRaw put the terminal connected to the given file descriptor into raw -// mode and returns the previous state of the terminal so that it can be -// restored. -func MakeRaw(fd uintptr) (*State, error) { - var oldState State - if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(getTermios), uintptr(unsafe.Pointer(&oldState.termios))); err != 0 { - return nil, err - } - - newState := oldState.termios - newState.Iflag &^= (IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL | IXON) - newState.Oflag &^= OPOST - newState.Lflag &^= (ECHO | ECHONL | ICANON | ISIG | IEXTEN) - newState.Cflag &^= (CSIZE | PARENB) - newState.Cflag |= CS8 - newState.Cc[syscall.VMIN] = 1 - newState.Cc[syscall.VTIME] = 0 - - if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(setTermios), uintptr(unsafe.Pointer(&newState))); err != 0 { - return nil, err - } - - return &oldState, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/termios_linux.go b/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/termios_linux.go deleted file mode 100644 index 024187ff..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/docker/docker/pkg/term/termios_linux.go +++ /dev/null @@ -1,46 +0,0 @@ -// +build !cgo - -package term - -import ( - "syscall" - "unsafe" -) - -const ( - getTermios = syscall.TCGETS - setTermios = syscall.TCSETS -) - -type Termios struct { - Iflag uint32 - Oflag uint32 - Cflag uint32 - Lflag uint32 - Cc [20]byte - Ispeed uint32 - Ospeed uint32 -} - -// MakeRaw put the terminal connected to the given file descriptor into raw -// mode and returns the previous state of the terminal so that it can be -// restored. -func MakeRaw(fd uintptr) (*State, error) { - var oldState State - if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, getTermios, uintptr(unsafe.Pointer(&oldState.termios))); err != 0 { - return nil, err - } - - newState := oldState.termios - - newState.Iflag &^= (syscall.IGNBRK | syscall.BRKINT | syscall.PARMRK | syscall.ISTRIP | syscall.INLCR | syscall.IGNCR | syscall.ICRNL | syscall.IXON) - newState.Oflag &^= syscall.OPOST - newState.Lflag &^= (syscall.ECHO | syscall.ECHONL | syscall.ICANON | syscall.ISIG | syscall.IEXTEN) - newState.Cflag &^= (syscall.CSIZE | syscall.PARENB) - newState.Cflag |= syscall.CS8 - - if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, setTermios, uintptr(unsafe.Pointer(&newState))); err != 0 { - return nil, err - } - return &oldState, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/docker/go-units/CONTRIBUTING.md b/vendor/github.com/docker/machine/vendor/github.com/docker/go-units/CONTRIBUTING.md deleted file mode 100644 index 9ea86d78..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/docker/go-units/CONTRIBUTING.md +++ /dev/null @@ -1,67 +0,0 @@ -# Contributing to go-units - -Want to hack on go-units? Awesome! Here are instructions to get you started. - -go-units is a part of the [Docker](https://www.docker.com) project, and follows -the same rules and principles. If you're already familiar with the way -Docker does things, you'll feel right at home. - -Otherwise, go read Docker's -[contributions guidelines](https://github.com/docker/docker/blob/master/CONTRIBUTING.md), -[issue triaging](https://github.com/docker/docker/blob/master/project/ISSUE-TRIAGE.md), -[review process](https://github.com/docker/docker/blob/master/project/REVIEWING.md) and -[branches and tags](https://github.com/docker/docker/blob/master/project/BRANCHES-AND-TAGS.md). - -### Sign your work - -The sign-off is a simple line at the end of the explanation for the patch. Your -signature certifies that you wrote the patch or otherwise have the right to pass -it on as an open-source patch. The rules are pretty simple: if you can certify -the below (from [developercertificate.org](http://developercertificate.org/)): - -``` -Developer Certificate of Origin -Version 1.1 - -Copyright (C) 2004, 2006 The Linux Foundation and its contributors. -660 York Street, Suite 102, -San Francisco, CA 94110 USA - -Everyone is permitted to copy and distribute verbatim copies of this -license document, but changing it is not allowed. - -Developer's Certificate of Origin 1.1 - -By making a contribution to this project, I certify that: - -(a) The contribution was created in whole or in part by me and I - have the right to submit it under the open source license - indicated in the file; or - -(b) The contribution is based upon previous work that, to the best - of my knowledge, is covered under an appropriate open source - license and I have the right under that license to submit that - work with modifications, whether created in whole or in part - by me, under the same open source license (unless I am - permitted to submit under a different license), as indicated - in the file; or - -(c) The contribution was provided directly to me by some other - person who certified (a), (b) or (c) and I have not modified - it. - -(d) I understand and agree that this project and the contribution - are public and that a record of the contribution (including all - personal information I submit with it, including my sign-off) is - maintained indefinitely and may be redistributed consistent with - this project or the open source license(s) involved. -``` - -Then you just add a line to every git commit message: - - Signed-off-by: Joe Smith - -Use your real name (sorry, no pseudonyms or anonymous contributions.) - -If you set your `user.name` and `user.email` git configs, you can sign your -commit automatically with `git commit -s`. diff --git a/vendor/github.com/docker/machine/vendor/github.com/docker/go-units/LICENSE.code b/vendor/github.com/docker/machine/vendor/github.com/docker/go-units/LICENSE.code deleted file mode 100644 index b55b37bc..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/docker/go-units/LICENSE.code +++ /dev/null @@ -1,191 +0,0 @@ - - Apache License - Version 2.0, January 2004 - https://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - Copyright 2015 Docker, Inc. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - https://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/github.com/docker/machine/vendor/github.com/docker/go-units/LICENSE.docs b/vendor/github.com/docker/machine/vendor/github.com/docker/go-units/LICENSE.docs deleted file mode 100644 index e26cd4fc..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/docker/go-units/LICENSE.docs +++ /dev/null @@ -1,425 +0,0 @@ -Attribution-ShareAlike 4.0 International - -======================================================================= - -Creative Commons Corporation ("Creative Commons") is not a law firm and -does not provide legal services or legal advice. Distribution of -Creative Commons public licenses does not create a lawyer-client or -other relationship. Creative Commons makes its licenses and related -information available on an "as-is" basis. Creative Commons gives no -warranties regarding its licenses, any material licensed under their -terms and conditions, or any related information. Creative Commons -disclaims all liability for damages resulting from their use to the -fullest extent possible. - -Using Creative Commons Public Licenses - -Creative Commons public licenses provide a standard set of terms and -conditions that creators and other rights holders may use to share -original works of authorship and other material subject to copyright -and certain other rights specified in the public license below. The -following considerations are for informational purposes only, are not -exhaustive, and do not form part of our licenses. - - Considerations for licensors: Our public licenses are - intended for use by those authorized to give the public - permission to use material in ways otherwise restricted by - copyright and certain other rights. Our licenses are - irrevocable. Licensors should read and understand the terms - and conditions of the license they choose before applying it. - Licensors should also secure all rights necessary before - applying our licenses so that the public can reuse the - material as expected. Licensors should clearly mark any - material not subject to the license. This includes other CC- - licensed material, or material used under an exception or - limitation to copyright. More considerations for licensors: - wiki.creativecommons.org/Considerations_for_licensors - - Considerations for the public: By using one of our public - licenses, a licensor grants the public permission to use the - licensed material under specified terms and conditions. If - the licensor's permission is not necessary for any reason--for - example, because of any applicable exception or limitation to - copyright--then that use is not regulated by the license. Our - licenses grant only permissions under copyright and certain - other rights that a licensor has authority to grant. Use of - the licensed material may still be restricted for other - reasons, including because others have copyright or other - rights in the material. A licensor may make special requests, - such as asking that all changes be marked or described. - Although not required by our licenses, you are encouraged to - respect those requests where reasonable. More_considerations - for the public: - wiki.creativecommons.org/Considerations_for_licensees - -======================================================================= - -Creative Commons Attribution-ShareAlike 4.0 International Public -License - -By exercising the Licensed Rights (defined below), You accept and agree -to be bound by the terms and conditions of this Creative Commons -Attribution-ShareAlike 4.0 International Public License ("Public -License"). To the extent this Public License may be interpreted as a -contract, You are granted the Licensed Rights in consideration of Your -acceptance of these terms and conditions, and the Licensor grants You -such rights in consideration of benefits the Licensor receives from -making the Licensed Material available under these terms and -conditions. - - -Section 1 -- Definitions. - - a. Adapted Material means material subject to Copyright and Similar - Rights that is derived from or based upon the Licensed Material - and in which the Licensed Material is translated, altered, - arranged, transformed, or otherwise modified in a manner requiring - permission under the Copyright and Similar Rights held by the - Licensor. For purposes of this Public License, where the Licensed - Material is a musical work, performance, or sound recording, - Adapted Material is always produced where the Licensed Material is - synched in timed relation with a moving image. - - b. Adapter's License means the license You apply to Your Copyright - and Similar Rights in Your contributions to Adapted Material in - accordance with the terms and conditions of this Public License. - - c. BY-SA Compatible License means a license listed at - creativecommons.org/compatiblelicenses, approved by Creative - Commons as essentially the equivalent of this Public License. - - d. Copyright and Similar Rights means copyright and/or similar rights - closely related to copyright including, without limitation, - performance, broadcast, sound recording, and Sui Generis Database - Rights, without regard to how the rights are labeled or - categorized. For purposes of this Public License, the rights - specified in Section 2(b)(1)-(2) are not Copyright and Similar - Rights. - - e. Effective Technological Measures means those measures that, in the - absence of proper authority, may not be circumvented under laws - fulfilling obligations under Article 11 of the WIPO Copyright - Treaty adopted on December 20, 1996, and/or similar international - agreements. - - f. Exceptions and Limitations means fair use, fair dealing, and/or - any other exception or limitation to Copyright and Similar Rights - that applies to Your use of the Licensed Material. - - g. License Elements means the license attributes listed in the name - of a Creative Commons Public License. The License Elements of this - Public License are Attribution and ShareAlike. - - h. Licensed Material means the artistic or literary work, database, - or other material to which the Licensor applied this Public - License. - - i. Licensed Rights means the rights granted to You subject to the - terms and conditions of this Public License, which are limited to - all Copyright and Similar Rights that apply to Your use of the - Licensed Material and that the Licensor has authority to license. - - j. Licensor means the individual(s) or entity(ies) granting rights - under this Public License. - - k. Share means to provide material to the public by any means or - process that requires permission under the Licensed Rights, such - as reproduction, public display, public performance, distribution, - dissemination, communication, or importation, and to make material - available to the public including in ways that members of the - public may access the material from a place and at a time - individually chosen by them. - - l. Sui Generis Database Rights means rights other than copyright - resulting from Directive 96/9/EC of the European Parliament and of - the Council of 11 March 1996 on the legal protection of databases, - as amended and/or succeeded, as well as other essentially - equivalent rights anywhere in the world. - - m. You means the individual or entity exercising the Licensed Rights - under this Public License. Your has a corresponding meaning. - - -Section 2 -- Scope. - - a. License grant. - - 1. Subject to the terms and conditions of this Public License, - the Licensor hereby grants You a worldwide, royalty-free, - non-sublicensable, non-exclusive, irrevocable license to - exercise the Licensed Rights in the Licensed Material to: - - a. reproduce and Share the Licensed Material, in whole or - in part; and - - b. produce, reproduce, and Share Adapted Material. - - 2. Exceptions and Limitations. For the avoidance of doubt, where - Exceptions and Limitations apply to Your use, this Public - License does not apply, and You do not need to comply with - its terms and conditions. - - 3. Term. The term of this Public License is specified in Section - 6(a). - - 4. Media and formats; technical modifications allowed. The - Licensor authorizes You to exercise the Licensed Rights in - all media and formats whether now known or hereafter created, - and to make technical modifications necessary to do so. The - Licensor waives and/or agrees not to assert any right or - authority to forbid You from making technical modifications - necessary to exercise the Licensed Rights, including - technical modifications necessary to circumvent Effective - Technological Measures. For purposes of this Public License, - simply making modifications authorized by this Section 2(a) - (4) never produces Adapted Material. - - 5. Downstream recipients. - - a. Offer from the Licensor -- Licensed Material. Every - recipient of the Licensed Material automatically - receives an offer from the Licensor to exercise the - Licensed Rights under the terms and conditions of this - Public License. - - b. Additional offer from the Licensor -- Adapted Material. - Every recipient of Adapted Material from You - automatically receives an offer from the Licensor to - exercise the Licensed Rights in the Adapted Material - under the conditions of the Adapter's License You apply. - - c. No downstream restrictions. You may not offer or impose - any additional or different terms or conditions on, or - apply any Effective Technological Measures to, the - Licensed Material if doing so restricts exercise of the - Licensed Rights by any recipient of the Licensed - Material. - - 6. No endorsement. Nothing in this Public License constitutes or - may be construed as permission to assert or imply that You - are, or that Your use of the Licensed Material is, connected - with, or sponsored, endorsed, or granted official status by, - the Licensor or others designated to receive attribution as - provided in Section 3(a)(1)(A)(i). - - b. Other rights. - - 1. Moral rights, such as the right of integrity, are not - licensed under this Public License, nor are publicity, - privacy, and/or other similar personality rights; however, to - the extent possible, the Licensor waives and/or agrees not to - assert any such rights held by the Licensor to the limited - extent necessary to allow You to exercise the Licensed - Rights, but not otherwise. - - 2. Patent and trademark rights are not licensed under this - Public License. - - 3. To the extent possible, the Licensor waives any right to - collect royalties from You for the exercise of the Licensed - Rights, whether directly or through a collecting society - under any voluntary or waivable statutory or compulsory - licensing scheme. In all other cases the Licensor expressly - reserves any right to collect such royalties. - - -Section 3 -- License Conditions. - -Your exercise of the Licensed Rights is expressly made subject to the -following conditions. - - a. Attribution. - - 1. If You Share the Licensed Material (including in modified - form), You must: - - a. retain the following if it is supplied by the Licensor - with the Licensed Material: - - i. identification of the creator(s) of the Licensed - Material and any others designated to receive - attribution, in any reasonable manner requested by - the Licensor (including by pseudonym if - designated); - - ii. a copyright notice; - - iii. a notice that refers to this Public License; - - iv. a notice that refers to the disclaimer of - warranties; - - v. a URI or hyperlink to the Licensed Material to the - extent reasonably practicable; - - b. indicate if You modified the Licensed Material and - retain an indication of any previous modifications; and - - c. indicate the Licensed Material is licensed under this - Public License, and include the text of, or the URI or - hyperlink to, this Public License. - - 2. You may satisfy the conditions in Section 3(a)(1) in any - reasonable manner based on the medium, means, and context in - which You Share the Licensed Material. For example, it may be - reasonable to satisfy the conditions by providing a URI or - hyperlink to a resource that includes the required - information. - - 3. If requested by the Licensor, You must remove any of the - information required by Section 3(a)(1)(A) to the extent - reasonably practicable. - - b. ShareAlike. - - In addition to the conditions in Section 3(a), if You Share - Adapted Material You produce, the following conditions also apply. - - 1. The Adapter's License You apply must be a Creative Commons - license with the same License Elements, this version or - later, or a BY-SA Compatible License. - - 2. You must include the text of, or the URI or hyperlink to, the - Adapter's License You apply. You may satisfy this condition - in any reasonable manner based on the medium, means, and - context in which You Share Adapted Material. - - 3. You may not offer or impose any additional or different terms - or conditions on, or apply any Effective Technological - Measures to, Adapted Material that restrict exercise of the - rights granted under the Adapter's License You apply. - - -Section 4 -- Sui Generis Database Rights. - -Where the Licensed Rights include Sui Generis Database Rights that -apply to Your use of the Licensed Material: - - a. for the avoidance of doubt, Section 2(a)(1) grants You the right - to extract, reuse, reproduce, and Share all or a substantial - portion of the contents of the database; - - b. if You include all or a substantial portion of the database - contents in a database in which You have Sui Generis Database - Rights, then the database in which You have Sui Generis Database - Rights (but not its individual contents) is Adapted Material, - - including for purposes of Section 3(b); and - c. You must comply with the conditions in Section 3(a) if You Share - all or a substantial portion of the contents of the database. - -For the avoidance of doubt, this Section 4 supplements and does not -replace Your obligations under this Public License where the Licensed -Rights include other Copyright and Similar Rights. - - -Section 5 -- Disclaimer of Warranties and Limitation of Liability. - - a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE - EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS - AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF - ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, - IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, - WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, - ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT - KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT - ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. - - b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE - TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, - NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, - INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, - COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR - USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN - ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR - DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR - IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. - - c. The disclaimer of warranties and limitation of liability provided - above shall be interpreted in a manner that, to the extent - possible, most closely approximates an absolute disclaimer and - waiver of all liability. - - -Section 6 -- Term and Termination. - - a. This Public License applies for the term of the Copyright and - Similar Rights licensed here. However, if You fail to comply with - this Public License, then Your rights under this Public License - terminate automatically. - - b. Where Your right to use the Licensed Material has terminated under - Section 6(a), it reinstates: - - 1. automatically as of the date the violation is cured, provided - it is cured within 30 days of Your discovery of the - violation; or - - 2. upon express reinstatement by the Licensor. - - For the avoidance of doubt, this Section 6(b) does not affect any - right the Licensor may have to seek remedies for Your violations - of this Public License. - - c. For the avoidance of doubt, the Licensor may also offer the - Licensed Material under separate terms or conditions or stop - distributing the Licensed Material at any time; however, doing so - will not terminate this Public License. - - d. Sections 1, 5, 6, 7, and 8 survive termination of this Public - License. - - -Section 7 -- Other Terms and Conditions. - - a. The Licensor shall not be bound by any additional or different - terms or conditions communicated by You unless expressly agreed. - - b. Any arrangements, understandings, or agreements regarding the - Licensed Material not stated herein are separate from and - independent of the terms and conditions of this Public License. - - -Section 8 -- Interpretation. - - a. For the avoidance of doubt, this Public License does not, and - shall not be interpreted to, reduce, limit, restrict, or impose - conditions on any use of the Licensed Material that could lawfully - be made without permission under this Public License. - - b. To the extent possible, if any provision of this Public License is - deemed unenforceable, it shall be automatically reformed to the - minimum extent necessary to make it enforceable. If the provision - cannot be reformed, it shall be severed from this Public License - without affecting the enforceability of the remaining terms and - conditions. - - c. No term or condition of this Public License will be waived and no - failure to comply consented to unless expressly agreed to by the - Licensor. - - d. Nothing in this Public License constitutes or may be interpreted - as a limitation upon, or waiver of, any privileges and immunities - that apply to the Licensor or You, including from the legal - processes of any jurisdiction or authority. - - -======================================================================= - -Creative Commons is not a party to its public licenses. -Notwithstanding, Creative Commons may elect to apply one of its public -licenses to material it publishes and in those instances will be -considered the "Licensor." Except for the limited purpose of indicating -that material is shared under a Creative Commons public license or as -otherwise permitted by the Creative Commons policies published at -creativecommons.org/policies, Creative Commons does not authorize the -use of the trademark "Creative Commons" or any other trademark or logo -of Creative Commons without its prior written consent including, -without limitation, in connection with any unauthorized modifications -to any of its public licenses or any other arrangements, -understandings, or agreements concerning use of licensed material. For -the avoidance of doubt, this paragraph does not form part of the public -licenses. - -Creative Commons may be contacted at creativecommons.org. diff --git a/vendor/github.com/docker/machine/vendor/github.com/docker/go-units/MAINTAINERS b/vendor/github.com/docker/machine/vendor/github.com/docker/go-units/MAINTAINERS deleted file mode 100644 index 477be8b2..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/docker/go-units/MAINTAINERS +++ /dev/null @@ -1,27 +0,0 @@ -# go-connections maintainers file -# -# This file describes who runs the docker/go-connections project and how. -# This is a living document - if you see something out of date or missing, speak up! -# -# It is structured to be consumable by both humans and programs. -# To extract its contents programmatically, use any TOML-compliant parser. -# -# This file is compiled into the MAINTAINERS file in docker/opensource. -# -[Org] - [Org."Core maintainers"] - people = [ - "calavera", - ] - -[people] - -# A reference list of all people associated with the project. -# All other sections should refer to people by their canonical key -# in the people section. - - # ADD YOURSELF HERE IN ALPHABETICAL ORDER - [people.calavera] - Name = "David Calavera" - Email = "david.calavera@gmail.com" - GitHub = "calavera" diff --git a/vendor/github.com/docker/machine/vendor/github.com/docker/go-units/README.md b/vendor/github.com/docker/machine/vendor/github.com/docker/go-units/README.md deleted file mode 100644 index 3ce4d79d..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/docker/go-units/README.md +++ /dev/null @@ -1,18 +0,0 @@ -[![GoDoc](https://godoc.org/github.com/docker/go-units?status.svg)](https://godoc.org/github.com/docker/go-units) - -# Introduction - -go-units is a library to transform human friendly measurements into machine friendly values. - -## Usage - -See the [docs in godoc](https://godoc.org/github.com/docker/go-units) for examples and documentation. - -## Copyright and license - -Copyright © 2015 Docker, Inc. All rights reserved, except as follows. Code -is released under the Apache 2.0 license. The README.md file, and files in the -"docs" folder are licensed under the Creative Commons Attribution 4.0 -International License under the terms and conditions set forth in the file -"LICENSE.docs". You may obtain a duplicate copy of the same license, titled -CC-BY-SA-4.0, at http://creativecommons.org/licenses/by/4.0/. diff --git a/vendor/github.com/docker/machine/vendor/github.com/docker/go-units/circle.yml b/vendor/github.com/docker/machine/vendor/github.com/docker/go-units/circle.yml deleted file mode 100644 index 9043b354..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/docker/go-units/circle.yml +++ /dev/null @@ -1,11 +0,0 @@ -dependencies: - post: - # install golint - - go get github.com/golang/lint/golint - -test: - pre: - # run analysis before tests - - go vet ./... - - test -z "$(golint ./... | tee /dev/stderr)" - - test -z "$(gofmt -s -l . | tee /dev/stderr)" diff --git a/vendor/github.com/docker/machine/vendor/github.com/docker/go-units/duration.go b/vendor/github.com/docker/machine/vendor/github.com/docker/go-units/duration.go deleted file mode 100644 index c219a8a9..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/docker/go-units/duration.go +++ /dev/null @@ -1,33 +0,0 @@ -// Package units provides helper function to parse and print size and time units -// in human-readable format. -package units - -import ( - "fmt" - "time" -) - -// HumanDuration returns a human-readable approximation of a duration -// (eg. "About a minute", "4 hours ago", etc.). -func HumanDuration(d time.Duration) string { - if seconds := int(d.Seconds()); seconds < 1 { - return "Less than a second" - } else if seconds < 60 { - return fmt.Sprintf("%d seconds", seconds) - } else if minutes := int(d.Minutes()); minutes == 1 { - return "About a minute" - } else if minutes < 60 { - return fmt.Sprintf("%d minutes", minutes) - } else if hours := int(d.Hours()); hours == 1 { - return "About an hour" - } else if hours < 48 { - return fmt.Sprintf("%d hours", hours) - } else if hours < 24*7*2 { - return fmt.Sprintf("%d days", hours/24) - } else if hours < 24*30*3 { - return fmt.Sprintf("%d weeks", hours/24/7) - } else if hours < 24*365*2 { - return fmt.Sprintf("%d months", hours/24/30) - } - return fmt.Sprintf("%d years", int(d.Hours())/24/365) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/docker/go-units/size.go b/vendor/github.com/docker/machine/vendor/github.com/docker/go-units/size.go deleted file mode 100644 index 3b59daff..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/docker/go-units/size.go +++ /dev/null @@ -1,95 +0,0 @@ -package units - -import ( - "fmt" - "regexp" - "strconv" - "strings" -) - -// See: http://en.wikipedia.org/wiki/Binary_prefix -const ( - // Decimal - - KB = 1000 - MB = 1000 * KB - GB = 1000 * MB - TB = 1000 * GB - PB = 1000 * TB - - // Binary - - KiB = 1024 - MiB = 1024 * KiB - GiB = 1024 * MiB - TiB = 1024 * GiB - PiB = 1024 * TiB -) - -type unitMap map[string]int64 - -var ( - decimalMap = unitMap{"k": KB, "m": MB, "g": GB, "t": TB, "p": PB} - binaryMap = unitMap{"k": KiB, "m": MiB, "g": GiB, "t": TiB, "p": PiB} - sizeRegex = regexp.MustCompile(`^(\d+)([kKmMgGtTpP])?[bB]?$`) -) - -var decimapAbbrs = []string{"B", "kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"} -var binaryAbbrs = []string{"B", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"} - -// CustomSize returns a human-readable approximation of a size -// using custom format. -func CustomSize(format string, size float64, base float64, _map []string) string { - i := 0 - for size >= base { - size = size / base - i++ - } - return fmt.Sprintf(format, size, _map[i]) -} - -// HumanSize returns a human-readable approximation of a size -// capped at 4 valid numbers (eg. "2.746 MB", "796 KB"). -func HumanSize(size float64) string { - return CustomSize("%.4g %s", size, 1000.0, decimapAbbrs) -} - -// BytesSize returns a human-readable size in bytes, kibibytes, -// mebibytes, gibibytes, or tebibytes (eg. "44kiB", "17MiB"). -func BytesSize(size float64) string { - return CustomSize("%.4g %s", size, 1024.0, binaryAbbrs) -} - -// FromHumanSize returns an integer from a human-readable specification of a -// size using SI standard (eg. "44kB", "17MB"). -func FromHumanSize(size string) (int64, error) { - return parseSize(size, decimalMap) -} - -// RAMInBytes parses a human-readable string representing an amount of RAM -// in bytes, kibibytes, mebibytes, gibibytes, or tebibytes and -// returns the number of bytes, or -1 if the string is unparseable. -// Units are case-insensitive, and the 'b' suffix is optional. -func RAMInBytes(size string) (int64, error) { - return parseSize(size, binaryMap) -} - -// Parses the human-readable size string into the amount it represents. -func parseSize(sizeStr string, uMap unitMap) (int64, error) { - matches := sizeRegex.FindStringSubmatch(sizeStr) - if len(matches) != 3 { - return -1, fmt.Errorf("invalid size: '%s'", sizeStr) - } - - size, err := strconv.ParseInt(matches[1], 10, 0) - if err != nil { - return -1, err - } - - unitPrefix := strings.ToLower(matches[2]) - if mul, ok := uMap[unitPrefix]; ok { - size *= mul - } - - return size, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/docker/go-units/ulimit.go b/vendor/github.com/docker/machine/vendor/github.com/docker/go-units/ulimit.go deleted file mode 100644 index 5ac7fd82..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/docker/go-units/ulimit.go +++ /dev/null @@ -1,118 +0,0 @@ -package units - -import ( - "fmt" - "strconv" - "strings" -) - -// Ulimit is a human friendly version of Rlimit. -type Ulimit struct { - Name string - Hard int64 - Soft int64 -} - -// Rlimit specifies the resource limits, such as max open files. -type Rlimit struct { - Type int `json:"type,omitempty"` - Hard uint64 `json:"hard,omitempty"` - Soft uint64 `json:"soft,omitempty"` -} - -const ( - // magic numbers for making the syscall - // some of these are defined in the syscall package, but not all. - // Also since Windows client doesn't get access to the syscall package, need to - // define these here - rlimitAs = 9 - rlimitCore = 4 - rlimitCPU = 0 - rlimitData = 2 - rlimitFsize = 1 - rlimitLocks = 10 - rlimitMemlock = 8 - rlimitMsgqueue = 12 - rlimitNice = 13 - rlimitNofile = 7 - rlimitNproc = 6 - rlimitRss = 5 - rlimitRtprio = 14 - rlimitRttime = 15 - rlimitSigpending = 11 - rlimitStack = 3 -) - -var ulimitNameMapping = map[string]int{ - //"as": rlimitAs, // Disabled since this doesn't seem usable with the way Docker inits a container. - "core": rlimitCore, - "cpu": rlimitCPU, - "data": rlimitData, - "fsize": rlimitFsize, - "locks": rlimitLocks, - "memlock": rlimitMemlock, - "msgqueue": rlimitMsgqueue, - "nice": rlimitNice, - "nofile": rlimitNofile, - "nproc": rlimitNproc, - "rss": rlimitRss, - "rtprio": rlimitRtprio, - "rttime": rlimitRttime, - "sigpending": rlimitSigpending, - "stack": rlimitStack, -} - -// ParseUlimit parses and returns a Ulimit from the specified string. -func ParseUlimit(val string) (*Ulimit, error) { - parts := strings.SplitN(val, "=", 2) - if len(parts) != 2 { - return nil, fmt.Errorf("invalid ulimit argument: %s", val) - } - - if _, exists := ulimitNameMapping[parts[0]]; !exists { - return nil, fmt.Errorf("invalid ulimit type: %s", parts[0]) - } - - var ( - soft int64 - hard = &soft // default to soft in case no hard was set - temp int64 - err error - ) - switch limitVals := strings.Split(parts[1], ":"); len(limitVals) { - case 2: - temp, err = strconv.ParseInt(limitVals[1], 10, 64) - if err != nil { - return nil, err - } - hard = &temp - fallthrough - case 1: - soft, err = strconv.ParseInt(limitVals[0], 10, 64) - if err != nil { - return nil, err - } - default: - return nil, fmt.Errorf("too many limit value arguments - %s, can only have up to two, `soft[:hard]`", parts[1]) - } - - if soft > *hard { - return nil, fmt.Errorf("ulimit soft limit must be less than or equal to hard limit: %d > %d", soft, *hard) - } - - return &Ulimit{Name: parts[0], Soft: soft, Hard: *hard}, nil -} - -// GetRlimit returns the RLimit corresponding to Ulimit. -func (u *Ulimit) GetRlimit() (*Rlimit, error) { - t, exists := ulimitNameMapping[u.Name] - if !exists { - return nil, fmt.Errorf("invalid ulimit name %s", u.Name) - } - - return &Rlimit{Type: t, Soft: uint64(u.Soft), Hard: uint64(u.Hard)}, nil -} - -func (u *Ulimit) String() string { - return fmt.Sprintf("%s=%d:%d", u.Name, u.Soft, u.Hard) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/go-ini/ini/.gitignore b/vendor/github.com/docker/machine/vendor/github.com/go-ini/ini/.gitignore deleted file mode 100644 index 7adca943..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/go-ini/ini/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -testdata/conf_out.ini -ini.sublime-project -ini.sublime-workspace -testdata/conf_reflect.ini diff --git a/vendor/github.com/docker/machine/vendor/github.com/go-ini/ini/LICENSE b/vendor/github.com/docker/machine/vendor/github.com/go-ini/ini/LICENSE deleted file mode 100644 index 37ec93a1..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/go-ini/ini/LICENSE +++ /dev/null @@ -1,191 +0,0 @@ -Apache License -Version 2.0, January 2004 -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and -distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright -owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities -that control, are controlled by, or are under common control with that entity. -For the purposes of this definition, "control" means (i) the power, direct or -indirect, to cause the direction or management of such entity, whether by -contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the -outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising -permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including -but not limited to software source code, documentation source, and configuration -files. - -"Object" form shall mean any form resulting from mechanical transformation or -translation of a Source form, including but not limited to compiled object code, -generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made -available under the License, as indicated by a copyright notice that is included -in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that -is based on (or derived from) the Work and for which the editorial revisions, -annotations, elaborations, or other modifications represent, as a whole, an -original work of authorship. For the purposes of this License, Derivative Works -shall not include works that remain separable from, or merely link (or bind by -name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version -of the Work and any modifications or additions to that Work or Derivative Works -thereof, that is intentionally submitted to Licensor for inclusion in the Work -by the copyright owner or by an individual or Legal Entity authorized to submit -on behalf of the copyright owner. For the purposes of this definition, -"submitted" means any form of electronic, verbal, or written communication sent -to the Licensor or its representatives, including but not limited to -communication on electronic mailing lists, source code control systems, and -issue tracking systems that are managed by, or on behalf of, the Licensor for -the purpose of discussing and improving the Work, but excluding communication -that is conspicuously marked or otherwise designated in writing by the copyright -owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf -of whom a Contribution has been received by Licensor and subsequently -incorporated within the Work. - -2. Grant of Copyright License. - -Subject to the terms and conditions of this License, each Contributor hereby -grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, -irrevocable copyright license to reproduce, prepare Derivative Works of, -publicly display, publicly perform, sublicense, and distribute the Work and such -Derivative Works in Source or Object form. - -3. Grant of Patent License. - -Subject to the terms and conditions of this License, each Contributor hereby -grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, -irrevocable (except as stated in this section) patent license to make, have -made, use, offer to sell, sell, import, and otherwise transfer the Work, where -such license applies only to those patent claims licensable by such Contributor -that are necessarily infringed by their Contribution(s) alone or by combination -of their Contribution(s) with the Work to which such Contribution(s) was -submitted. If You institute patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Work or a -Contribution incorporated within the Work constitutes direct or contributory -patent infringement, then any patent licenses granted to You under this License -for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. - -You may reproduce and distribute copies of the Work or Derivative Works thereof -in any medium, with or without modifications, and in Source or Object form, -provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of -this License; and -You must cause any modified files to carry prominent notices stating that You -changed the files; and -You must retain, in the Source form of any Derivative Works that You distribute, -all copyright, patent, trademark, and attribution notices from the Source form -of the Work, excluding those notices that do not pertain to any part of the -Derivative Works; and -If the Work includes a "NOTICE" text file as part of its distribution, then any -Derivative Works that You distribute must include a readable copy of the -attribution notices contained within such NOTICE file, excluding those notices -that do not pertain to any part of the Derivative Works, in at least one of the -following places: within a NOTICE text file distributed as part of the -Derivative Works; within the Source form or documentation, if provided along -with the Derivative Works; or, within a display generated by the Derivative -Works, if and wherever such third-party notices normally appear. The contents of -the NOTICE file are for informational purposes only and do not modify the -License. You may add Your own attribution notices within Derivative Works that -You distribute, alongside or as an addendum to the NOTICE text from the Work, -provided that such additional attribution notices cannot be construed as -modifying the License. -You may add Your own copyright statement to Your modifications and may provide -additional or different license terms and conditions for use, reproduction, or -distribution of Your modifications, or for any such Derivative Works as a whole, -provided Your use, reproduction, and distribution of the Work otherwise complies -with the conditions stated in this License. - -5. Submission of Contributions. - -Unless You explicitly state otherwise, any Contribution intentionally submitted -for inclusion in the Work by You to the Licensor shall be under the terms and -conditions of this License, without any additional terms or conditions. -Notwithstanding the above, nothing herein shall supersede or modify the terms of -any separate license agreement you may have executed with Licensor regarding -such Contributions. - -6. Trademarks. - -This License does not grant permission to use the trade names, trademarks, -service marks, or product names of the Licensor, except as required for -reasonable and customary use in describing the origin of the Work and -reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. - -Unless required by applicable law or agreed to in writing, Licensor provides the -Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, -including, without limitation, any warranties or conditions of TITLE, -NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are -solely responsible for determining the appropriateness of using or -redistributing the Work and assume any risks associated with Your exercise of -permissions under this License. - -8. Limitation of Liability. - -In no event and under no legal theory, whether in tort (including negligence), -contract, or otherwise, unless required by applicable law (such as deliberate -and grossly negligent acts) or agreed to in writing, shall any Contributor be -liable to You for damages, including any direct, indirect, special, incidental, -or consequential damages of any character arising as a result of this License or -out of the use or inability to use the Work (including but not limited to -damages for loss of goodwill, work stoppage, computer failure or malfunction, or -any and all other commercial damages or losses), even if such Contributor has -been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. - -While redistributing the Work or Derivative Works thereof, You may choose to -offer, and charge a fee for, acceptance of support, warranty, indemnity, or -other liability obligations and/or rights consistent with this License. However, -in accepting such obligations, You may act only on Your own behalf and on Your -sole responsibility, not on behalf of any other Contributor, and only if You -agree to indemnify, defend, and hold each Contributor harmless for any liability -incurred by, or claims asserted against, such Contributor by reason of your -accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work - -To apply the Apache License to your work, attach the following boilerplate -notice, with the fields enclosed by brackets "[]" replaced with your own -identifying information. (Don't include the brackets!) The text should be -enclosed in the appropriate comment syntax for the file format. We also -recommend that a file or class name and description of purpose be included on -the same "printed page" as the copyright notice for easier identification within -third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/github.com/docker/machine/vendor/github.com/go-ini/ini/README.md b/vendor/github.com/docker/machine/vendor/github.com/go-ini/ini/README.md deleted file mode 100644 index 5d7f1c71..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/go-ini/ini/README.md +++ /dev/null @@ -1,578 +0,0 @@ -ini [![Build Status](https://drone.io/github.com/go-ini/ini/status.png)](https://drone.io/github.com/go-ini/ini/latest) [![](http://gocover.io/_badge/github.com/go-ini/ini)](http://gocover.io/github.com/go-ini/ini) -=== - -![](https://avatars0.githubusercontent.com/u/10216035?v=3&s=200) - -Package ini provides INI file read and write functionality in Go. - -[简体中文](README_ZH.md) - -## Feature - -- Load multiple data sources(`[]byte` or file) with overwrites. -- Read with recursion values. -- Read with parent-child sections. -- Read with auto-increment key names. -- Read with multiple-line values. -- Read with tons of helper methods. -- Read and convert values to Go types. -- Read and **WRITE** comments of sections and keys. -- Manipulate sections, keys and comments with ease. -- Keep sections and keys in order as you parse and save. - -## Installation - - go get gopkg.in/ini.v1 - -## Getting Started - -### Loading from data sources - -A **Data Source** is either raw data in type `[]byte` or a file name with type `string` and you can load **as many as** data sources you want. Passing other types will simply return an error. - -```go -cfg, err := ini.Load([]byte("raw data"), "filename") -``` - -Or start with an empty object: - -```go -cfg := ini.Empty() -``` - -When you cannot decide how many data sources to load at the beginning, you still able to **Append()** them later. - -```go -err := cfg.Append("other file", []byte("other raw data")) -``` - -### Working with sections - -To get a section, you would need to: - -```go -section, err := cfg.GetSection("section name") -``` - -For a shortcut for default section, just give an empty string as name: - -```go -section, err := cfg.GetSection("") -``` - -When you're pretty sure the section exists, following code could make your life easier: - -```go -section := cfg.Section("") -``` - -What happens when the section somehow does not exist? Don't panic, it automatically creates and returns a new section to you. - -To create a new section: - -```go -err := cfg.NewSection("new section") -``` - -To get a list of sections or section names: - -```go -sections := cfg.Sections() -names := cfg.SectionStrings() -``` - -### Working with keys - -To get a key under a section: - -```go -key, err := cfg.Section("").GetKey("key name") -``` - -Same rule applies to key operations: - -```go -key := cfg.Section("").Key("key name") -``` - -To check if a key exists: - -```go -yes := cfg.Section("").HasKey("key name") -``` - -To create a new key: - -```go -err := cfg.Section("").NewKey("name", "value") -``` - -To get a list of keys or key names: - -```go -keys := cfg.Section("").Keys() -names := cfg.Section("").KeyStrings() -``` - -To get a clone hash of keys and corresponding values: - -```go -hash := cfg.GetSection("").KeysHash() -``` - -### Working with values - -To get a string value: - -```go -val := cfg.Section("").Key("key name").String() -``` - -To validate key value on the fly: - -```go -val := cfg.Section("").Key("key name").Validate(func(in string) string { - if len(in) == 0 { - return "default" - } - return in -}) -``` - -If you do not want any auto-transformation (such as recursive read) for the values, you can get raw value directly (this way you get much better performance): - -```go -val := cfg.Section("").Key("key name").Value() -``` - -To check if raw value exists: - -```go -yes := cfg.Section("").HasValue("test value") -``` - -To get value with types: - -```go -// For boolean values: -// true when value is: 1, t, T, TRUE, true, True, YES, yes, Yes, ON, on, On -// false when value is: 0, f, F, FALSE, false, False, NO, no, No, OFF, off, Off -v, err = cfg.Section("").Key("BOOL").Bool() -v, err = cfg.Section("").Key("FLOAT64").Float64() -v, err = cfg.Section("").Key("INT").Int() -v, err = cfg.Section("").Key("INT64").Int64() -v, err = cfg.Section("").Key("UINT").Uint() -v, err = cfg.Section("").Key("UINT64").Uint64() -v, err = cfg.Section("").Key("TIME").TimeFormat(time.RFC3339) -v, err = cfg.Section("").Key("TIME").Time() // RFC3339 - -v = cfg.Section("").Key("BOOL").MustBool() -v = cfg.Section("").Key("FLOAT64").MustFloat64() -v = cfg.Section("").Key("INT").MustInt() -v = cfg.Section("").Key("INT64").MustInt64() -v = cfg.Section("").Key("UINT").MustUint() -v = cfg.Section("").Key("UINT64").MustUint64() -v = cfg.Section("").Key("TIME").MustTimeFormat(time.RFC3339) -v = cfg.Section("").Key("TIME").MustTime() // RFC3339 - -// Methods start with Must also accept one argument for default value -// when key not found or fail to parse value to given type. -// Except method MustString, which you have to pass a default value. - -v = cfg.Section("").Key("String").MustString("default") -v = cfg.Section("").Key("BOOL").MustBool(true) -v = cfg.Section("").Key("FLOAT64").MustFloat64(1.25) -v = cfg.Section("").Key("INT").MustInt(10) -v = cfg.Section("").Key("INT64").MustInt64(99) -v = cfg.Section("").Key("UINT").MustUint(3) -v = cfg.Section("").Key("UINT64").MustUint64(6) -v = cfg.Section("").Key("TIME").MustTimeFormat(time.RFC3339, time.Now()) -v = cfg.Section("").Key("TIME").MustTime(time.Now()) // RFC3339 -``` - -What if my value is three-line long? - -```ini -[advance] -ADDRESS = """404 road, -NotFound, State, 5000 -Earth""" -``` - -Not a problem! - -```go -cfg.Section("advance").Key("ADDRESS").String() - -/* --- start --- -404 road, -NotFound, State, 5000 -Earth ------- end --- */ -``` - -That's cool, how about continuation lines? - -```ini -[advance] -two_lines = how about \ - continuation lines? -lots_of_lines = 1 \ - 2 \ - 3 \ - 4 -``` - -Piece of cake! - -```go -cfg.Section("advance").Key("two_lines").String() // how about continuation lines? -cfg.Section("advance").Key("lots_of_lines").String() // 1 2 3 4 -``` - -Note that single quotes around values will be stripped: - -```ini -foo = "some value" // foo: some value -bar = 'some value' // bar: some value -``` - -That's all? Hmm, no. - -#### Helper methods of working with values - -To get value with given candidates: - -```go -v = cfg.Section("").Key("STRING").In("default", []string{"str", "arr", "types"}) -v = cfg.Section("").Key("FLOAT64").InFloat64(1.1, []float64{1.25, 2.5, 3.75}) -v = cfg.Section("").Key("INT").InInt(5, []int{10, 20, 30}) -v = cfg.Section("").Key("INT64").InInt64(10, []int64{10, 20, 30}) -v = cfg.Section("").Key("UINT").InUint(4, []int{3, 6, 9}) -v = cfg.Section("").Key("UINT64").InUint64(8, []int64{3, 6, 9}) -v = cfg.Section("").Key("TIME").InTimeFormat(time.RFC3339, time.Now(), []time.Time{time1, time2, time3}) -v = cfg.Section("").Key("TIME").InTime(time.Now(), []time.Time{time1, time2, time3}) // RFC3339 -``` - -Default value will be presented if value of key is not in candidates you given, and default value does not need be one of candidates. - -To validate value in a given range: - -```go -vals = cfg.Section("").Key("FLOAT64").RangeFloat64(0.0, 1.1, 2.2) -vals = cfg.Section("").Key("INT").RangeInt(0, 10, 20) -vals = cfg.Section("").Key("INT64").RangeInt64(0, 10, 20) -vals = cfg.Section("").Key("UINT").RangeUint(0, 3, 9) -vals = cfg.Section("").Key("UINT64").RangeUint64(0, 3, 9) -vals = cfg.Section("").Key("TIME").RangeTimeFormat(time.RFC3339, time.Now(), minTime, maxTime) -vals = cfg.Section("").Key("TIME").RangeTime(time.Now(), minTime, maxTime) // RFC3339 -``` - -To auto-split value into slice: - -```go -vals = cfg.Section("").Key("STRINGS").Strings(",") -vals = cfg.Section("").Key("FLOAT64S").Float64s(",") -vals = cfg.Section("").Key("INTS").Ints(",") -vals = cfg.Section("").Key("INT64S").Int64s(",") -vals = cfg.Section("").Key("UINTS").Uints(",") -vals = cfg.Section("").Key("UINT64S").Uint64s(",") -vals = cfg.Section("").Key("TIMES").Times(",") -``` - -### Save your configuration - -Finally, it's time to save your configuration to somewhere. - -A typical way to save configuration is writing it to a file: - -```go -// ... -err = cfg.SaveTo("my.ini") -err = cfg.SaveToIndent("my.ini", "\t") -``` - -Another way to save is writing to a `io.Writer` interface: - -```go -// ... -cfg.WriteTo(writer) -cfg.WriteToIndent(writer, "\t") -``` - -## Advanced Usage - -### Recursive Values - -For all value of keys, there is a special syntax `%()s`, where `` is the key name in same section or default section, and `%()s` will be replaced by corresponding value(empty string if key not found). You can use this syntax at most 99 level of recursions. - -```ini -NAME = ini - -[author] -NAME = Unknwon -GITHUB = https://github.com/%(NAME)s - -[package] -FULL_NAME = github.com/go-ini/%(NAME)s -``` - -```go -cfg.Section("author").Key("GITHUB").String() // https://github.com/Unknwon -cfg.Section("package").Key("FULL_NAME").String() // github.com/go-ini/ini -``` - -### Parent-child Sections - -You can use `.` in section name to indicate parent-child relationship between two or more sections. If the key not found in the child section, library will try again on its parent section until there is no parent section. - -```ini -NAME = ini -VERSION = v1 -IMPORT_PATH = gopkg.in/%(NAME)s.%(VERSION)s - -[package] -CLONE_URL = https://%(IMPORT_PATH)s - -[package.sub] -``` - -```go -cfg.Section("package.sub").Key("CLONE_URL").String() // https://gopkg.in/ini.v1 -``` - -### Auto-increment Key Names - -If key name is `-` in data source, then it would be seen as special syntax for auto-increment key name start from 1, and every section is independent on counter. - -```ini -[features] --: Support read/write comments of keys and sections --: Support auto-increment of key names --: Support load multiple files to overwrite key values -``` - -```go -cfg.Section("features").KeyStrings() // []{"#1", "#2", "#3"} -``` - -### Map To Struct - -Want more objective way to play with INI? Cool. - -```ini -Name = Unknwon -age = 21 -Male = true -Born = 1993-01-01T20:17:05Z - -[Note] -Content = Hi is a good man! -Cities = HangZhou, Boston -``` - -```go -type Note struct { - Content string - Cities []string -} - -type Person struct { - Name string - Age int `ini:"age"` - Male bool - Born time.Time - Note - Created time.Time `ini:"-"` -} - -func main() { - cfg, err := ini.Load("path/to/ini") - // ... - p := new(Person) - err = cfg.MapTo(p) - // ... - - // Things can be simpler. - err = ini.MapTo(p, "path/to/ini") - // ... - - // Just map a section? Fine. - n := new(Note) - err = cfg.Section("Note").MapTo(n) - // ... -} -``` - -Can I have default value for field? Absolutely. - -Assign it before you map to struct. It will keep the value as it is if the key is not presented or got wrong type. - -```go -// ... -p := &Person{ - Name: "Joe", -} -// ... -``` - -It's really cool, but what's the point if you can't give me my file back from struct? - -### Reflect From Struct - -Why not? - -```go -type Embeded struct { - Dates []time.Time `delim:"|"` - Places []string - None []int -} - -type Author struct { - Name string `ini:"NAME"` - Male bool - Age int - GPA float64 - NeverMind string `ini:"-"` - *Embeded -} - -func main() { - a := &Author{"Unknwon", true, 21, 2.8, "", - &Embeded{ - []time.Time{time.Now(), time.Now()}, - []string{"HangZhou", "Boston"}, - []int{}, - }} - cfg := ini.Empty() - err = ini.ReflectFrom(cfg, a) - // ... -} -``` - -So, what do I get? - -```ini -NAME = Unknwon -Male = true -Age = 21 -GPA = 2.8 - -[Embeded] -Dates = 2015-08-07T22:14:22+08:00|2015-08-07T22:14:22+08:00 -Places = HangZhou,Boston -None = -``` - -#### Name Mapper - -To save your time and make your code cleaner, this library supports [`NameMapper`](https://gowalker.org/gopkg.in/ini.v1#NameMapper) between struct field and actual section and key name. - -There are 2 built-in name mappers: - -- `AllCapsUnderscore`: it converts to format `ALL_CAPS_UNDERSCORE` then match section or key. -- `TitleUnderscore`: it converts to format `title_underscore` then match section or key. - -To use them: - -```go -type Info struct { - PackageName string -} - -func main() { - err = ini.MapToWithMapper(&Info{}, ini.TitleUnderscore, []byte("package_name=ini")) - // ... - - cfg, err := ini.Load([]byte("PACKAGE_NAME=ini")) - // ... - info := new(Info) - cfg.NameMapper = ini.AllCapsUnderscore - err = cfg.MapTo(info) - // ... -} -``` - -Same rules of name mapper apply to `ini.ReflectFromWithMapper` function. - -#### Other Notes On Map/Reflect - -Any embedded struct is treated as a section by default, and there is no automatic parent-child relations in map/reflect feature: - -```go -type Child struct { - Age string -} - -type Parent struct { - Name string - Child -} - -type Config struct { - City string - Parent -} -``` - -Example configuration: - -```ini -City = Boston - -[Parent] -Name = Unknwon - -[Child] -Age = 21 -``` - -What if, yes, I'm paranoid, I want embedded struct to be in the same section. Well, all roads lead to Rome. - -```go -type Child struct { - Age string -} - -type Parent struct { - Name string - Child `ini:"Parent"` -} - -type Config struct { - City string - Parent -} -``` - -Example configuration: - -```ini -City = Boston - -[Parent] -Name = Unknwon -Age = 21 -``` - -## Getting Help - -- [API Documentation](https://gowalker.org/gopkg.in/ini.v1) -- [File An Issue](https://github.com/go-ini/ini/issues/new) - -## FAQs - -### What does `BlockMode` field do? - -By default, library lets you read and write values so we need a locker to make sure your data is safe. But in cases that you are very sure about only reading data through the library, you can set `cfg.BlockMode = false` to speed up read operations about **50-70%** faster. - -### Why another INI library? - -Many people are using my another INI library [goconfig](https://github.com/Unknwon/goconfig), so the reason for this one is I would like to make more Go style code. Also when you set `cfg.BlockMode = false`, this one is about **10-30%** faster. - -To make those changes I have to confirm API broken, so it's safer to keep it in another place and start using `gopkg.in` to version my package at this time.(PS: shorter import path) - -## License - -This project is under Apache v2 License. See the [LICENSE](LICENSE) file for the full license text. diff --git a/vendor/github.com/docker/machine/vendor/github.com/go-ini/ini/README_ZH.md b/vendor/github.com/docker/machine/vendor/github.com/go-ini/ini/README_ZH.md deleted file mode 100644 index acda259b..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/go-ini/ini/README_ZH.md +++ /dev/null @@ -1,565 +0,0 @@ -本包提供了 Go 语言中读写 INI 文件的功能。 - -## 功能特性 - -- 支持覆盖加载多个数据源(`[]byte` 或文件) -- 支持递归读取键值 -- 支持读取父子分区 -- 支持读取自增键名 -- 支持读取多行的键值 -- 支持大量辅助方法 -- 支持在读取时直接转换为 Go 语言类型 -- 支持读取和 **写入** 分区和键的注释 -- 轻松操作分区、键值和注释 -- 在保存文件时分区和键值会保持原有的顺序 - -## 下载安装 - - go get gopkg.in/ini.v1 - -## 开始使用 - -### 从数据源加载 - -一个 **数据源** 可以是 `[]byte` 类型的原始数据,或 `string` 类型的文件路径。您可以加载 **任意多个** 数据源。如果您传递其它类型的数据源,则会直接返回错误。 - -```go -cfg, err := ini.Load([]byte("raw data"), "filename") -``` - -或者从一个空白的文件开始: - -```go -cfg := ini.Empty() -``` - -当您在一开始无法决定需要加载哪些数据源时,仍可以使用 **Append()** 在需要的时候加载它们。 - -```go -err := cfg.Append("other file", []byte("other raw data")) -``` - -### 操作分区(Section) - -获取指定分区: - -```go -section, err := cfg.GetSection("section name") -``` - -如果您想要获取默认分区,则可以用空字符串代替分区名: - -```go -section, err := cfg.GetSection("") -``` - -当您非常确定某个分区是存在的,可以使用以下简便方法: - -```go -section := cfg.Section("") -``` - -如果不小心判断错了,要获取的分区其实是不存在的,那会发生什么呢?没事的,它会自动创建并返回一个对应的分区对象给您。 - -创建一个分区: - -```go -err := cfg.NewSection("new section") -``` - -获取所有分区对象或名称: - -```go -sections := cfg.Sections() -names := cfg.SectionStrings() -``` - -### 操作键(Key) - -获取某个分区下的键: - -```go -key, err := cfg.Section("").GetKey("key name") -``` - -和分区一样,您也可以直接获取键而忽略错误处理: - -```go -key := cfg.Section("").Key("key name") -``` - -判断某个键是否存在: - -```go -yes := cfg.Section("").HasKey("key name") -``` - -创建一个新的键: - -```go -err := cfg.Section("").NewKey("name", "value") -``` - -获取分区下的所有键或键名: - -```go -keys := cfg.Section("").Keys() -names := cfg.Section("").KeyStrings() -``` - -获取分区下的所有键值对的克隆: - -```go -hash := cfg.GetSection("").KeysHash() -``` - -### 操作键值(Value) - -获取一个类型为字符串(string)的值: - -```go -val := cfg.Section("").Key("key name").String() -``` - -获取值的同时通过自定义函数进行处理验证: - -```go -val := cfg.Section("").Key("key name").Validate(func(in string) string { - if len(in) == 0 { - return "default" - } - return in -}) -``` - -如果您不需要任何对值的自动转变功能(例如递归读取),可以直接获取原值(这种方式性能最佳): - -```go -val := cfg.Section("").Key("key name").Value() -``` - -判断某个原值是否存在: - -```go -yes := cfg.Section("").HasValue("test value") -``` - -获取其它类型的值: - -```go -// 布尔值的规则: -// true 当值为:1, t, T, TRUE, true, True, YES, yes, Yes, ON, on, On -// false 当值为:0, f, F, FALSE, false, False, NO, no, No, OFF, off, Off -v, err = cfg.Section("").Key("BOOL").Bool() -v, err = cfg.Section("").Key("FLOAT64").Float64() -v, err = cfg.Section("").Key("INT").Int() -v, err = cfg.Section("").Key("INT64").Int64() -v, err = cfg.Section("").Key("UINT").Uint() -v, err = cfg.Section("").Key("UINT64").Uint64() -v, err = cfg.Section("").Key("TIME").TimeFormat(time.RFC3339) -v, err = cfg.Section("").Key("TIME").Time() // RFC3339 - -v = cfg.Section("").Key("BOOL").MustBool() -v = cfg.Section("").Key("FLOAT64").MustFloat64() -v = cfg.Section("").Key("INT").MustInt() -v = cfg.Section("").Key("INT64").MustInt64() -v = cfg.Section("").Key("UINT").MustUint() -v = cfg.Section("").Key("UINT64").MustUint64() -v = cfg.Section("").Key("TIME").MustTimeFormat(time.RFC3339) -v = cfg.Section("").Key("TIME").MustTime() // RFC3339 - -// 由 Must 开头的方法名允许接收一个相同类型的参数来作为默认值, -// 当键不存在或者转换失败时,则会直接返回该默认值。 -// 但是,MustString 方法必须传递一个默认值。 - -v = cfg.Seciont("").Key("String").MustString("default") -v = cfg.Section("").Key("BOOL").MustBool(true) -v = cfg.Section("").Key("FLOAT64").MustFloat64(1.25) -v = cfg.Section("").Key("INT").MustInt(10) -v = cfg.Section("").Key("INT64").MustInt64(99) -v = cfg.Section("").Key("UINT").MustUint(3) -v = cfg.Section("").Key("UINT64").MustUint64(6) -v = cfg.Section("").Key("TIME").MustTimeFormat(time.RFC3339, time.Now()) -v = cfg.Section("").Key("TIME").MustTime(time.Now()) // RFC3339 -``` - -如果我的值有好多行怎么办? - -```ini -[advance] -ADDRESS = """404 road, -NotFound, State, 5000 -Earth""" -``` - -嗯哼?小 case! - -```go -cfg.Section("advance").Key("ADDRESS").String() - -/* --- start --- -404 road, -NotFound, State, 5000 -Earth ------- end --- */ -``` - -赞爆了!那要是我属于一行的内容写不下想要写到第二行怎么办? - -```ini -[advance] -two_lines = how about \ - continuation lines? -lots_of_lines = 1 \ - 2 \ - 3 \ - 4 -``` - -简直是小菜一碟! - -```go -cfg.Section("advance").Key("two_lines").String() // how about continuation lines? -cfg.Section("advance").Key("lots_of_lines").String() // 1 2 3 4 -``` - -需要注意的是,值两侧的单引号会被自动剔除: - -```ini -foo = "some value" // foo: some value -bar = 'some value' // bar: some value -``` - -这就是全部了?哈哈,当然不是。 - -#### 操作键值的辅助方法 - -获取键值时设定候选值: - -```go -v = cfg.Section("").Key("STRING").In("default", []string{"str", "arr", "types"}) -v = cfg.Section("").Key("FLOAT64").InFloat64(1.1, []float64{1.25, 2.5, 3.75}) -v = cfg.Section("").Key("INT").InInt(5, []int{10, 20, 30}) -v = cfg.Section("").Key("INT64").InInt64(10, []int64{10, 20, 30}) -v = cfg.Section("").Key("UINT").InUint(4, []int{3, 6, 9}) -v = cfg.Section("").Key("UINT64").InUint64(8, []int64{3, 6, 9}) -v = cfg.Section("").Key("TIME").InTimeFormat(time.RFC3339, time.Now(), []time.Time{time1, time2, time3}) -v = cfg.Section("").Key("TIME").InTime(time.Now(), []time.Time{time1, time2, time3}) // RFC3339 -``` - -如果获取到的值不是候选值的任意一个,则会返回默认值,而默认值不需要是候选值中的一员。 - -验证获取的值是否在指定范围内: - -```go -vals = cfg.Section("").Key("FLOAT64").RangeFloat64(0.0, 1.1, 2.2) -vals = cfg.Section("").Key("INT").RangeInt(0, 10, 20) -vals = cfg.Section("").Key("INT64").RangeInt64(0, 10, 20) -vals = cfg.Section("").Key("UINT").RangeUint(0, 3, 9) -vals = cfg.Section("").Key("UINT64").RangeUint64(0, 3, 9) -vals = cfg.Section("").Key("TIME").RangeTimeFormat(time.RFC3339, time.Now(), minTime, maxTime) -vals = cfg.Section("").Key("TIME").RangeTime(time.Now(), minTime, maxTime) // RFC3339 -``` - -自动分割键值为切片(slice): - -```go -vals = cfg.Section("").Key("STRINGS").Strings(",") -vals = cfg.Section("").Key("FLOAT64S").Float64s(",") -vals = cfg.Section("").Key("INTS").Ints(",") -vals = cfg.Section("").Key("INT64S").Int64s(",") -vals = cfg.Section("").Key("UINTS").Uints(",") -vals = cfg.Section("").Key("UINT64S").Uint64s(",") -vals = cfg.Section("").Key("TIMES").Times(",") -``` - -### 保存配置 - -终于到了这个时刻,是时候保存一下配置了。 - -比较原始的做法是输出配置到某个文件: - -```go -// ... -err = cfg.SaveTo("my.ini") -err = cfg.SaveToIndent("my.ini", "\t") -``` - -另一个比较高级的做法是写入到任何实现 `io.Writer` 接口的对象中: - -```go -// ... -cfg.WriteTo(writer) -cfg.WriteToIndent(writer, "\t") -``` - -### 高级用法 - -#### 递归读取键值 - -在获取所有键值的过程中,特殊语法 `%()s` 会被应用,其中 `` 可以是相同分区或者默认分区下的键名。字符串 `%()s` 会被相应的键值所替代,如果指定的键不存在,则会用空字符串替代。您可以最多使用 99 层的递归嵌套。 - -```ini -NAME = ini - -[author] -NAME = Unknwon -GITHUB = https://github.com/%(NAME)s - -[package] -FULL_NAME = github.com/go-ini/%(NAME)s -``` - -```go -cfg.Section("author").Key("GITHUB").String() // https://github.com/Unknwon -cfg.Section("package").Key("FULL_NAME").String() // github.com/go-ini/ini -``` - -#### 读取父子分区 - -您可以在分区名称中使用 `.` 来表示两个或多个分区之间的父子关系。如果某个键在子分区中不存在,则会去它的父分区中再次寻找,直到没有父分区为止。 - -```ini -NAME = ini -VERSION = v1 -IMPORT_PATH = gopkg.in/%(NAME)s.%(VERSION)s - -[package] -CLONE_URL = https://%(IMPORT_PATH)s - -[package.sub] -``` - -```go -cfg.Section("package.sub").Key("CLONE_URL").String() // https://gopkg.in/ini.v1 -``` - -#### 读取自增键名 - -如果数据源中的键名为 `-`,则认为该键使用了自增键名的特殊语法。计数器从 1 开始,并且分区之间是相互独立的。 - -```ini -[features] --: Support read/write comments of keys and sections --: Support auto-increment of key names --: Support load multiple files to overwrite key values -``` - -```go -cfg.Section("features").KeyStrings() // []{"#1", "#2", "#3"} -``` - -### 映射到结构 - -想要使用更加面向对象的方式玩转 INI 吗?好主意。 - -```ini -Name = Unknwon -age = 21 -Male = true -Born = 1993-01-01T20:17:05Z - -[Note] -Content = Hi is a good man! -Cities = HangZhou, Boston -``` - -```go -type Note struct { - Content string - Cities []string -} - -type Person struct { - Name string - Age int `ini:"age"` - Male bool - Born time.Time - Note - Created time.Time `ini:"-"` -} - -func main() { - cfg, err := ini.Load("path/to/ini") - // ... - p := new(Person) - err = cfg.MapTo(p) - // ... - - // 一切竟可以如此的简单。 - err = ini.MapTo(p, "path/to/ini") - // ... - - // 嗯哼?只需要映射一个分区吗? - n := new(Note) - err = cfg.Section("Note").MapTo(n) - // ... -} -``` - -结构的字段怎么设置默认值呢?很简单,只要在映射之前对指定字段进行赋值就可以了。如果键未找到或者类型错误,该值不会发生改变。 - -```go -// ... -p := &Person{ - Name: "Joe", -} -// ... -``` - -这样玩 INI 真的好酷啊!然而,如果不能还给我原来的配置文件,有什么卵用? - -### 从结构反射 - -可是,我有说不能吗? - -```go -type Embeded struct { - Dates []time.Time `delim:"|"` - Places []string - None []int -} - -type Author struct { - Name string `ini:"NAME"` - Male bool - Age int - GPA float64 - NeverMind string `ini:"-"` - *Embeded -} - -func main() { - a := &Author{"Unknwon", true, 21, 2.8, "", - &Embeded{ - []time.Time{time.Now(), time.Now()}, - []string{"HangZhou", "Boston"}, - []int{}, - }} - cfg := ini.Empty() - err = ini.ReflectFrom(cfg, a) - // ... -} -``` - -瞧瞧,奇迹发生了。 - -```ini -NAME = Unknwon -Male = true -Age = 21 -GPA = 2.8 - -[Embeded] -Dates = 2015-08-07T22:14:22+08:00|2015-08-07T22:14:22+08:00 -Places = HangZhou,Boston -None = -``` - -#### 名称映射器(Name Mapper) - -为了节省您的时间并简化代码,本库支持类型为 [`NameMapper`](https://gowalker.org/gopkg.in/ini.v1#NameMapper) 的名称映射器,该映射器负责结构字段名与分区名和键名之间的映射。 - -目前有 2 款内置的映射器: - -- `AllCapsUnderscore`:该映射器将字段名转换至格式 `ALL_CAPS_UNDERSCORE` 后再去匹配分区名和键名。 -- `TitleUnderscore`:该映射器将字段名转换至格式 `title_underscore` 后再去匹配分区名和键名。 - -使用方法: - -```go -type Info struct{ - PackageName string -} - -func main() { - err = ini.MapToWithMapper(&Info{}, ini.TitleUnderscore, []byte("package_name=ini")) - // ... - - cfg, err := ini.Load([]byte("PACKAGE_NAME=ini")) - // ... - info := new(Info) - cfg.NameMapper = ini.AllCapsUnderscore - err = cfg.MapTo(info) - // ... -} -``` - -使用函数 `ini.ReflectFromWithMapper` 时也可应用相同的规则。 - -#### 映射/反射的其它说明 - -任何嵌入的结构都会被默认认作一个不同的分区,并且不会自动产生所谓的父子分区关联: - -```go -type Child struct { - Age string -} - -type Parent struct { - Name string - Child -} - -type Config struct { - City string - Parent -} -``` - -示例配置文件: - -```ini -City = Boston - -[Parent] -Name = Unknwon - -[Child] -Age = 21 -``` - -很好,但是,我就是要嵌入结构也在同一个分区。好吧,你爹是李刚! - -```go -type Child struct { - Age string -} - -type Parent struct { - Name string - Child `ini:"Parent"` -} - -type Config struct { - City string - Parent -} -``` - -示例配置文件: - -```ini -City = Boston - -[Parent] -Name = Unknwon -Age = 21 -``` - -## 获取帮助 - -- [API 文档](https://gowalker.org/gopkg.in/ini.v1) -- [创建工单](https://github.com/go-ini/ini/issues/new) - -## 常见问题 - -### 字段 `BlockMode` 是什么? - -默认情况下,本库会在您进行读写操作时采用锁机制来确保数据时间。但在某些情况下,您非常确定只进行读操作。此时,您可以通过设置 `cfg.BlockMode = false` 来将读操作提升大约 **50-70%** 的性能。 - -### 为什么要写另一个 INI 解析库? - -许多人都在使用我的 [goconfig](https://github.com/Unknwon/goconfig) 来完成对 INI 文件的操作,但我希望使用更加 Go 风格的代码。并且当您设置 `cfg.BlockMode = false` 时,会有大约 **10-30%** 的性能提升。 - -为了做出这些改变,我必须对 API 进行破坏,所以新开一个仓库是最安全的做法。除此之外,本库直接使用 `gopkg.in` 来进行版本化发布。(其实真相是导入路径更短了) diff --git a/vendor/github.com/docker/machine/vendor/github.com/go-ini/ini/ini.go b/vendor/github.com/docker/machine/vendor/github.com/go-ini/ini/ini.go deleted file mode 100644 index a8d21739..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/go-ini/ini/ini.go +++ /dev/null @@ -1,1250 +0,0 @@ -// Copyright 2014 Unknwon -// -// Licensed under the Apache License, Version 2.0 (the "License"): you may -// not use this file except in compliance with the License. You may obtain -// a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -// License for the specific language governing permissions and limitations -// under the License. - -// Package ini provides INI file read and write functionality in Go. -package ini - -import ( - "bufio" - "bytes" - "errors" - "fmt" - "io" - "os" - "regexp" - "runtime" - "strconv" - "strings" - "sync" - "time" -) - -const ( - DEFAULT_SECTION = "DEFAULT" - // Maximum allowed depth when recursively substituing variable names. - _DEPTH_VALUES = 99 - - _VERSION = "1.7.0" -) - -func Version() string { - return _VERSION -} - -var ( - LineBreak = "\n" - - // Variable regexp pattern: %(variable)s - varPattern = regexp.MustCompile(`%\(([^\)]+)\)s`) - - // Write spaces around "=" to look better. - PrettyFormat = true -) - -func init() { - if runtime.GOOS == "windows" { - LineBreak = "\r\n" - } -} - -func inSlice(str string, s []string) bool { - for _, v := range s { - if str == v { - return true - } - } - return false -} - -// dataSource is a interface that returns file content. -type dataSource interface { - ReadCloser() (io.ReadCloser, error) -} - -type sourceFile struct { - name string -} - -func (s sourceFile) ReadCloser() (_ io.ReadCloser, err error) { - return os.Open(s.name) -} - -type bytesReadCloser struct { - reader io.Reader -} - -func (rc *bytesReadCloser) Read(p []byte) (n int, err error) { - return rc.reader.Read(p) -} - -func (rc *bytesReadCloser) Close() error { - return nil -} - -type sourceData struct { - data []byte -} - -func (s *sourceData) ReadCloser() (io.ReadCloser, error) { - return &bytesReadCloser{bytes.NewReader(s.data)}, nil -} - -// ____ __. -// | |/ _|____ ___.__. -// | <_/ __ < | | -// | | \ ___/\___ | -// |____|__ \___ > ____| -// \/ \/\/ - -// Key represents a key under a section. -type Key struct { - s *Section - Comment string - name string - value string - isAutoIncr bool -} - -// Name returns name of key. -func (k *Key) Name() string { - return k.name -} - -// Value returns raw value of key for performance purpose. -func (k *Key) Value() string { - return k.value -} - -// String returns string representation of value. -func (k *Key) String() string { - val := k.value - if strings.Index(val, "%") == -1 { - return val - } - - for i := 0; i < _DEPTH_VALUES; i++ { - vr := varPattern.FindString(val) - if len(vr) == 0 { - break - } - - // Take off leading '%(' and trailing ')s'. - noption := strings.TrimLeft(vr, "%(") - noption = strings.TrimRight(noption, ")s") - - // Search in the same section. - nk, err := k.s.GetKey(noption) - if err != nil { - // Search again in default section. - nk, _ = k.s.f.Section("").GetKey(noption) - } - - // Substitute by new value and take off leading '%(' and trailing ')s'. - val = strings.Replace(val, vr, nk.value, -1) - } - return val -} - -// Validate accepts a validate function which can -// return modifed result as key value. -func (k *Key) Validate(fn func(string) string) string { - return fn(k.String()) -} - -// parseBool returns the boolean value represented by the string. -// -// It accepts 1, t, T, TRUE, true, True, YES, yes, Yes, ON, on, On, -// 0, f, F, FALSE, false, False, NO, no, No, OFF, off, Off. -// Any other value returns an error. -func parseBool(str string) (value bool, err error) { - switch str { - case "1", "t", "T", "true", "TRUE", "True", "YES", "yes", "Yes", "ON", "on", "On": - return true, nil - case "0", "f", "F", "false", "FALSE", "False", "NO", "no", "No", "OFF", "off", "Off": - return false, nil - } - return false, fmt.Errorf("parsing \"%s\": invalid syntax", str) -} - -// Bool returns bool type value. -func (k *Key) Bool() (bool, error) { - return parseBool(k.String()) -} - -// Float64 returns float64 type value. -func (k *Key) Float64() (float64, error) { - return strconv.ParseFloat(k.String(), 64) -} - -// Int returns int type value. -func (k *Key) Int() (int, error) { - return strconv.Atoi(k.String()) -} - -// Int64 returns int64 type value. -func (k *Key) Int64() (int64, error) { - return strconv.ParseInt(k.String(), 10, 64) -} - -// Uint returns uint type valued. -func (k *Key) Uint() (uint, error) { - u, e := strconv.ParseUint(k.String(), 10, 64) - return uint(u), e -} - -// Uint64 returns uint64 type value. -func (k *Key) Uint64() (uint64, error) { - return strconv.ParseUint(k.String(), 10, 64) -} - -// Duration returns time.Duration type value. -func (k *Key) Duration() (time.Duration, error) { - return time.ParseDuration(k.String()) -} - -// TimeFormat parses with given format and returns time.Time type value. -func (k *Key) TimeFormat(format string) (time.Time, error) { - return time.Parse(format, k.String()) -} - -// Time parses with RFC3339 format and returns time.Time type value. -func (k *Key) Time() (time.Time, error) { - return k.TimeFormat(time.RFC3339) -} - -// MustString returns default value if key value is empty. -func (k *Key) MustString(defaultVal string) string { - val := k.String() - if len(val) == 0 { - return defaultVal - } - return val -} - -// MustBool always returns value without error, -// it returns false if error occurs. -func (k *Key) MustBool(defaultVal ...bool) bool { - val, err := k.Bool() - if len(defaultVal) > 0 && err != nil { - return defaultVal[0] - } - return val -} - -// MustFloat64 always returns value without error, -// it returns 0.0 if error occurs. -func (k *Key) MustFloat64(defaultVal ...float64) float64 { - val, err := k.Float64() - if len(defaultVal) > 0 && err != nil { - return defaultVal[0] - } - return val -} - -// MustInt always returns value without error, -// it returns 0 if error occurs. -func (k *Key) MustInt(defaultVal ...int) int { - val, err := k.Int() - if len(defaultVal) > 0 && err != nil { - return defaultVal[0] - } - return val -} - -// MustInt64 always returns value without error, -// it returns 0 if error occurs. -func (k *Key) MustInt64(defaultVal ...int64) int64 { - val, err := k.Int64() - if len(defaultVal) > 0 && err != nil { - return defaultVal[0] - } - return val -} - -// MustUint always returns value without error, -// it returns 0 if error occurs. -func (k *Key) MustUint(defaultVal ...uint) uint { - val, err := k.Uint() - if len(defaultVal) > 0 && err != nil { - return defaultVal[0] - } - return val -} - -// MustUint64 always returns value without error, -// it returns 0 if error occurs. -func (k *Key) MustUint64(defaultVal ...uint64) uint64 { - val, err := k.Uint64() - if len(defaultVal) > 0 && err != nil { - return defaultVal[0] - } - return val -} - -// MustDuration always returns value without error, -// it returns zero value if error occurs. -func (k *Key) MustDuration(defaultVal ...time.Duration) time.Duration { - val, err := k.Duration() - if len(defaultVal) > 0 && err != nil { - return defaultVal[0] - } - return val -} - -// MustTimeFormat always parses with given format and returns value without error, -// it returns zero value if error occurs. -func (k *Key) MustTimeFormat(format string, defaultVal ...time.Time) time.Time { - val, err := k.TimeFormat(format) - if len(defaultVal) > 0 && err != nil { - return defaultVal[0] - } - return val -} - -// MustTime always parses with RFC3339 format and returns value without error, -// it returns zero value if error occurs. -func (k *Key) MustTime(defaultVal ...time.Time) time.Time { - return k.MustTimeFormat(time.RFC3339, defaultVal...) -} - -// In always returns value without error, -// it returns default value if error occurs or doesn't fit into candidates. -func (k *Key) In(defaultVal string, candidates []string) string { - val := k.String() - for _, cand := range candidates { - if val == cand { - return val - } - } - return defaultVal -} - -// InFloat64 always returns value without error, -// it returns default value if error occurs or doesn't fit into candidates. -func (k *Key) InFloat64(defaultVal float64, candidates []float64) float64 { - val := k.MustFloat64() - for _, cand := range candidates { - if val == cand { - return val - } - } - return defaultVal -} - -// InInt always returns value without error, -// it returns default value if error occurs or doesn't fit into candidates. -func (k *Key) InInt(defaultVal int, candidates []int) int { - val := k.MustInt() - for _, cand := range candidates { - if val == cand { - return val - } - } - return defaultVal -} - -// InInt64 always returns value without error, -// it returns default value if error occurs or doesn't fit into candidates. -func (k *Key) InInt64(defaultVal int64, candidates []int64) int64 { - val := k.MustInt64() - for _, cand := range candidates { - if val == cand { - return val - } - } - return defaultVal -} - -// InUint always returns value without error, -// it returns default value if error occurs or doesn't fit into candidates. -func (k *Key) InUint(defaultVal uint, candidates []uint) uint { - val := k.MustUint() - for _, cand := range candidates { - if val == cand { - return val - } - } - return defaultVal -} - -// InUint64 always returns value without error, -// it returns default value if error occurs or doesn't fit into candidates. -func (k *Key) InUint64(defaultVal uint64, candidates []uint64) uint64 { - val := k.MustUint64() - for _, cand := range candidates { - if val == cand { - return val - } - } - return defaultVal -} - -// InTimeFormat always parses with given format and returns value without error, -// it returns default value if error occurs or doesn't fit into candidates. -func (k *Key) InTimeFormat(format string, defaultVal time.Time, candidates []time.Time) time.Time { - val := k.MustTimeFormat(format) - for _, cand := range candidates { - if val == cand { - return val - } - } - return defaultVal -} - -// InTime always parses with RFC3339 format and returns value without error, -// it returns default value if error occurs or doesn't fit into candidates. -func (k *Key) InTime(defaultVal time.Time, candidates []time.Time) time.Time { - return k.InTimeFormat(time.RFC3339, defaultVal, candidates) -} - -// RangeFloat64 checks if value is in given range inclusively, -// and returns default value if it's not. -func (k *Key) RangeFloat64(defaultVal, min, max float64) float64 { - val := k.MustFloat64() - if val < min || val > max { - return defaultVal - } - return val -} - -// RangeInt checks if value is in given range inclusively, -// and returns default value if it's not. -func (k *Key) RangeInt(defaultVal, min, max int) int { - val := k.MustInt() - if val < min || val > max { - return defaultVal - } - return val -} - -// RangeInt64 checks if value is in given range inclusively, -// and returns default value if it's not. -func (k *Key) RangeInt64(defaultVal, min, max int64) int64 { - val := k.MustInt64() - if val < min || val > max { - return defaultVal - } - return val -} - -// RangeTimeFormat checks if value with given format is in given range inclusively, -// and returns default value if it's not. -func (k *Key) RangeTimeFormat(format string, defaultVal, min, max time.Time) time.Time { - val := k.MustTimeFormat(format) - if val.Unix() < min.Unix() || val.Unix() > max.Unix() { - return defaultVal - } - return val -} - -// RangeTime checks if value with RFC3339 format is in given range inclusively, -// and returns default value if it's not. -func (k *Key) RangeTime(defaultVal, min, max time.Time) time.Time { - return k.RangeTimeFormat(time.RFC3339, defaultVal, min, max) -} - -// Strings returns list of string devide by given delimiter. -func (k *Key) Strings(delim string) []string { - str := k.String() - if len(str) == 0 { - return []string{} - } - - vals := strings.Split(str, delim) - for i := range vals { - vals[i] = strings.TrimSpace(vals[i]) - } - return vals -} - -// Float64s returns list of float64 devide by given delimiter. -func (k *Key) Float64s(delim string) []float64 { - strs := k.Strings(delim) - vals := make([]float64, len(strs)) - for i := range strs { - vals[i], _ = strconv.ParseFloat(strs[i], 64) - } - return vals -} - -// Ints returns list of int devide by given delimiter. -func (k *Key) Ints(delim string) []int { - strs := k.Strings(delim) - vals := make([]int, len(strs)) - for i := range strs { - vals[i], _ = strconv.Atoi(strs[i]) - } - return vals -} - -// Int64s returns list of int64 devide by given delimiter. -func (k *Key) Int64s(delim string) []int64 { - strs := k.Strings(delim) - vals := make([]int64, len(strs)) - for i := range strs { - vals[i], _ = strconv.ParseInt(strs[i], 10, 64) - } - return vals -} - -// Uints returns list of uint devide by given delimiter. -func (k *Key) Uints(delim string) []uint { - strs := k.Strings(delim) - vals := make([]uint, len(strs)) - for i := range strs { - u, _ := strconv.ParseUint(strs[i], 10, 64) - vals[i] = uint(u) - } - return vals -} - -// Uint64s returns list of uint64 devide by given delimiter. -func (k *Key) Uint64s(delim string) []uint64 { - strs := k.Strings(delim) - vals := make([]uint64, len(strs)) - for i := range strs { - vals[i], _ = strconv.ParseUint(strs[i], 10, 64) - } - return vals -} - -// TimesFormat parses with given format and returns list of time.Time devide by given delimiter. -func (k *Key) TimesFormat(format, delim string) []time.Time { - strs := k.Strings(delim) - vals := make([]time.Time, len(strs)) - for i := range strs { - vals[i], _ = time.Parse(format, strs[i]) - } - return vals -} - -// Times parses with RFC3339 format and returns list of time.Time devide by given delimiter. -func (k *Key) Times(delim string) []time.Time { - return k.TimesFormat(time.RFC3339, delim) -} - -// SetValue changes key value. -func (k *Key) SetValue(v string) { - k.value = v -} - -// _________ __ .__ -// / _____/ ____ _____/ |_|__| ____ ____ -// \_____ \_/ __ \_/ ___\ __\ |/ _ \ / \ -// / \ ___/\ \___| | | ( <_> ) | \ -// /_______ /\___ >\___ >__| |__|\____/|___| / -// \/ \/ \/ \/ - -// Section represents a config section. -type Section struct { - f *File - Comment string - name string - keys map[string]*Key - keyList []string - keysHash map[string]string -} - -func newSection(f *File, name string) *Section { - return &Section{f, "", name, make(map[string]*Key), make([]string, 0, 10), make(map[string]string)} -} - -// Name returns name of Section. -func (s *Section) Name() string { - return s.name -} - -// NewKey creates a new key to given section. -func (s *Section) NewKey(name, val string) (*Key, error) { - if len(name) == 0 { - return nil, errors.New("error creating new key: empty key name") - } - - if s.f.BlockMode { - s.f.lock.Lock() - defer s.f.lock.Unlock() - } - - if inSlice(name, s.keyList) { - s.keys[name].value = val - return s.keys[name], nil - } - - s.keyList = append(s.keyList, name) - s.keys[name] = &Key{s, "", name, val, false} - s.keysHash[name] = val - return s.keys[name], nil -} - -// GetKey returns key in section by given name. -func (s *Section) GetKey(name string) (*Key, error) { - // FIXME: change to section level lock? - if s.f.BlockMode { - s.f.lock.RLock() - } - key := s.keys[name] - if s.f.BlockMode { - s.f.lock.RUnlock() - } - - if key == nil { - // Check if it is a child-section. - sname := s.name - for { - if i := strings.LastIndex(sname, "."); i > -1 { - sname = sname[:i] - sec, err := s.f.GetSection(sname) - if err != nil { - continue - } - return sec.GetKey(name) - } else { - break - } - } - return nil, fmt.Errorf("error when getting key of section '%s': key '%s' not exists", s.name, name) - } - return key, nil -} - -// HasKey returns true if section contains a key with given name. -func (s *Section) Haskey(name string) bool { - key, _ := s.GetKey(name) - return key != nil -} - -// HasKey returns true if section contains given raw value. -func (s *Section) HasValue(value string) bool { - if s.f.BlockMode { - s.f.lock.RLock() - defer s.f.lock.RUnlock() - } - - for _, k := range s.keys { - if value == k.value { - return true - } - } - return false -} - -// Key assumes named Key exists in section and returns a zero-value when not. -func (s *Section) Key(name string) *Key { - key, err := s.GetKey(name) - if err != nil { - // It's OK here because the only possible error is empty key name, - // but if it's empty, this piece of code won't be executed. - key, _ = s.NewKey(name, "") - return key - } - return key -} - -// Keys returns list of keys of section. -func (s *Section) Keys() []*Key { - keys := make([]*Key, len(s.keyList)) - for i := range s.keyList { - keys[i] = s.Key(s.keyList[i]) - } - return keys -} - -// KeyStrings returns list of key names of section. -func (s *Section) KeyStrings() []string { - list := make([]string, len(s.keyList)) - copy(list, s.keyList) - return list -} - -// KeysHash returns keys hash consisting of names and values. -func (s *Section) KeysHash() map[string]string { - if s.f.BlockMode { - s.f.lock.RLock() - defer s.f.lock.RUnlock() - } - - hash := map[string]string{} - for key, value := range s.keysHash { - hash[key] = value - } - return hash -} - -// DeleteKey deletes a key from section. -func (s *Section) DeleteKey(name string) { - if s.f.BlockMode { - s.f.lock.Lock() - defer s.f.lock.Unlock() - } - - for i, k := range s.keyList { - if k == name { - s.keyList = append(s.keyList[:i], s.keyList[i+1:]...) - delete(s.keys, name) - return - } - } -} - -// ___________.__.__ -// \_ _____/|__| | ____ -// | __) | | | _/ __ \ -// | \ | | |_\ ___/ -// \___ / |__|____/\___ > -// \/ \/ - -// File represents a combination of a or more INI file(s) in memory. -type File struct { - // Should make things safe, but sometimes doesn't matter. - BlockMode bool - // Make sure data is safe in multiple goroutines. - lock sync.RWMutex - - // Allow combination of multiple data sources. - dataSources []dataSource - // Actual data is stored here. - sections map[string]*Section - - // To keep data in order. - sectionList []string - - NameMapper -} - -// newFile initializes File object with given data sources. -func newFile(dataSources []dataSource) *File { - return &File{ - BlockMode: true, - dataSources: dataSources, - sections: make(map[string]*Section), - sectionList: make([]string, 0, 10), - } -} - -func parseDataSource(source interface{}) (dataSource, error) { - switch s := source.(type) { - case string: - return sourceFile{s}, nil - case []byte: - return &sourceData{s}, nil - default: - return nil, fmt.Errorf("error parsing data source: unknown type '%s'", s) - } -} - -// Load loads and parses from INI data sources. -// Arguments can be mixed of file name with string type, or raw data in []byte. -func Load(source interface{}, others ...interface{}) (_ *File, err error) { - sources := make([]dataSource, len(others)+1) - sources[0], err = parseDataSource(source) - if err != nil { - return nil, err - } - for i := range others { - sources[i+1], err = parseDataSource(others[i]) - if err != nil { - return nil, err - } - } - f := newFile(sources) - if err = f.Reload(); err != nil { - return nil, err - } - return f, nil -} - -// Empty returns an empty file object. -func Empty() *File { - // Ignore error here, we sure our data is good. - f, _ := Load([]byte("")) - return f -} - -// NewSection creates a new section. -func (f *File) NewSection(name string) (*Section, error) { - if len(name) == 0 { - return nil, errors.New("error creating new section: empty section name") - } - - if f.BlockMode { - f.lock.Lock() - defer f.lock.Unlock() - } - - if inSlice(name, f.sectionList) { - return f.sections[name], nil - } - - f.sectionList = append(f.sectionList, name) - f.sections[name] = newSection(f, name) - return f.sections[name], nil -} - -// NewSections creates a list of sections. -func (f *File) NewSections(names ...string) (err error) { - for _, name := range names { - if _, err = f.NewSection(name); err != nil { - return err - } - } - return nil -} - -// GetSection returns section by given name. -func (f *File) GetSection(name string) (*Section, error) { - if len(name) == 0 { - name = DEFAULT_SECTION - } - - if f.BlockMode { - f.lock.RLock() - defer f.lock.RUnlock() - } - - sec := f.sections[name] - if sec == nil { - return nil, fmt.Errorf("error when getting section: section '%s' not exists", name) - } - return sec, nil -} - -// Section assumes named section exists and returns a zero-value when not. -func (f *File) Section(name string) *Section { - sec, err := f.GetSection(name) - if err != nil { - // Note: It's OK here because the only possible error is empty section name, - // but if it's empty, this piece of code won't be executed. - sec, _ = f.NewSection(name) - return sec - } - return sec -} - -// Section returns list of Section. -func (f *File) Sections() []*Section { - sections := make([]*Section, len(f.sectionList)) - for i := range f.sectionList { - sections[i] = f.Section(f.sectionList[i]) - } - return sections -} - -// SectionStrings returns list of section names. -func (f *File) SectionStrings() []string { - list := make([]string, len(f.sectionList)) - copy(list, f.sectionList) - return list -} - -// DeleteSection deletes a section. -func (f *File) DeleteSection(name string) { - if f.BlockMode { - f.lock.Lock() - defer f.lock.Unlock() - } - - if len(name) == 0 { - name = DEFAULT_SECTION - } - - for i, s := range f.sectionList { - if s == name { - f.sectionList = append(f.sectionList[:i], f.sectionList[i+1:]...) - delete(f.sections, name) - return - } - } -} - -func cutComment(str string) string { - i := strings.Index(str, "#") - if i == -1 { - return str - } - return str[:i] -} - -func checkMultipleLines(buf *bufio.Reader, line, val, valQuote string) (string, error) { - isEnd := false - for { - next, err := buf.ReadString('\n') - if err != nil { - if err != io.EOF { - return "", err - } - isEnd = true - } - pos := strings.LastIndex(next, valQuote) - if pos > -1 { - val += next[:pos] - break - } - val += next - if isEnd { - return "", fmt.Errorf("error parsing line: missing closing key quote from '%s' to '%s'", line, next) - } - } - return val, nil -} - -func checkContinuationLines(buf *bufio.Reader, val string) (string, bool, error) { - isEnd := false - for { - valLen := len(val) - if valLen == 0 || val[valLen-1] != '\\' { - break - } - val = val[:valLen-1] - - next, err := buf.ReadString('\n') - if err != nil { - if err != io.EOF { - return "", isEnd, err - } - isEnd = true - } - - next = strings.TrimSpace(next) - if len(next) == 0 { - break - } - val += next - } - return val, isEnd, nil -} - -// parse parses data through an io.Reader. -func (f *File) parse(reader io.Reader) error { - buf := bufio.NewReader(reader) - - // Handle BOM-UTF8. - // http://en.wikipedia.org/wiki/Byte_order_mark#Representations_of_byte_order_marks_by_encoding - mask, err := buf.Peek(3) - if err == nil && len(mask) >= 3 && mask[0] == 239 && mask[1] == 187 && mask[2] == 191 { - buf.Read(mask) - } - - count := 1 - comments := "" - isEnd := false - - section, err := f.NewSection(DEFAULT_SECTION) - if err != nil { - return err - } - - for { - line, err := buf.ReadString('\n') - line = strings.TrimSpace(line) - length := len(line) - - // Check error and ignore io.EOF just for a moment. - if err != nil { - if err != io.EOF { - return fmt.Errorf("error reading next line: %v", err) - } - // The last line of file could be an empty line. - if length == 0 { - break - } - isEnd = true - } - - // Skip empty lines. - if length == 0 { - continue - } - - switch { - case line[0] == '#' || line[0] == ';': // Comments. - if len(comments) == 0 { - comments = line - } else { - comments += LineBreak + line - } - continue - case line[0] == '[' && line[length-1] == ']': // New sction. - section, err = f.NewSection(strings.TrimSpace(line[1 : length-1])) - if err != nil { - return err - } - - if len(comments) > 0 { - section.Comment = comments - comments = "" - } - // Reset counter. - count = 1 - continue - } - - // Other possibilities. - var ( - i int - keyQuote string - kname string - valQuote string - val string - ) - - // Key name surrounded by quotes. - if line[0] == '"' { - if length > 6 && line[0:3] == `"""` { - keyQuote = `"""` - } else { - keyQuote = `"` - } - } else if line[0] == '`' { - keyQuote = "`" - } - if len(keyQuote) > 0 { - qLen := len(keyQuote) - pos := strings.Index(line[qLen:], keyQuote) - if pos == -1 { - return fmt.Errorf("error parsing line: missing closing key quote: %s", line) - } - pos = pos + qLen - i = strings.IndexAny(line[pos:], "=:") - if i < 0 { - return fmt.Errorf("error parsing line: key-value delimiter not found: %s", line) - } else if i == pos { - return fmt.Errorf("error parsing line: key is empty: %s", line) - } - i = i + pos - kname = line[qLen:pos] // Just keep spaces inside quotes. - } else { - i = strings.IndexAny(line, "=:") - if i < 0 { - return fmt.Errorf("error parsing line: key-value delimiter not found: %s", line) - } else if i == 0 { - return fmt.Errorf("error parsing line: key is empty: %s", line) - } - kname = strings.TrimSpace(line[0:i]) - } - - isAutoIncr := false - // Auto increment. - if kname == "-" { - isAutoIncr = true - kname = "#" + fmt.Sprint(count) - count++ - } - - lineRight := strings.TrimSpace(line[i+1:]) - lineRightLength := len(lineRight) - firstChar := "" - if lineRightLength >= 2 { - firstChar = lineRight[0:1] - } - if firstChar == "`" { - valQuote = "`" - } else if firstChar == `"` { - if lineRightLength >= 3 && lineRight[0:3] == `"""` { - valQuote = `"""` - } else { - valQuote = `"` - } - } else if firstChar == `'` { - valQuote = `'` - } - - if len(valQuote) > 0 { - qLen := len(valQuote) - pos := strings.LastIndex(lineRight[qLen:], valQuote) - // For multiple-line value check. - if pos == -1 { - if valQuote == `"` || valQuote == `'` { - return fmt.Errorf("error parsing line: single quote does not allow multiple-line value: %s", line) - } - - val = lineRight[qLen:] + "\n" - val, err = checkMultipleLines(buf, line, val, valQuote) - if err != nil { - return err - } - } else { - val = lineRight[qLen : pos+qLen] - } - } else { - val = strings.TrimSpace(cutComment(lineRight)) - val, isEnd, err = checkContinuationLines(buf, val) - if err != nil { - return err - } - } - - k, err := section.NewKey(kname, val) - if err != nil { - return err - } - k.isAutoIncr = isAutoIncr - if len(comments) > 0 { - k.Comment = comments - comments = "" - } - - if isEnd { - break - } - } - return nil -} - -func (f *File) reload(s dataSource) error { - r, err := s.ReadCloser() - if err != nil { - return err - } - defer r.Close() - - return f.parse(r) -} - -// Reload reloads and parses all data sources. -func (f *File) Reload() (err error) { - for _, s := range f.dataSources { - if err = f.reload(s); err != nil { - return err - } - } - return nil -} - -// Append appends one or more data sources and reloads automatically. -func (f *File) Append(source interface{}, others ...interface{}) error { - ds, err := parseDataSource(source) - if err != nil { - return err - } - f.dataSources = append(f.dataSources, ds) - for _, s := range others { - ds, err = parseDataSource(s) - if err != nil { - return err - } - f.dataSources = append(f.dataSources, ds) - } - return f.Reload() -} - -// WriteToIndent writes file content into io.Writer with given value indention. -func (f *File) WriteToIndent(w io.Writer, indent string) (n int64, err error) { - equalSign := "=" - if PrettyFormat { - equalSign = " = " - } - - // Use buffer to make sure target is safe until finish encoding. - buf := bytes.NewBuffer(nil) - for i, sname := range f.sectionList { - sec := f.Section(sname) - if len(sec.Comment) > 0 { - if sec.Comment[0] != '#' && sec.Comment[0] != ';' { - sec.Comment = "; " + sec.Comment - } - if _, err = buf.WriteString(sec.Comment + LineBreak); err != nil { - return 0, err - } - } - - if i > 0 { - if _, err = buf.WriteString("[" + sname + "]" + LineBreak); err != nil { - return 0, err - } - } else { - // Write nothing if default section is empty. - if len(sec.keyList) == 0 { - continue - } - } - - for _, kname := range sec.keyList { - key := sec.Key(kname) - if len(key.Comment) > 0 { - if len(indent) > 0 && sname != DEFAULT_SECTION { - buf.WriteString(indent) - } - if key.Comment[0] != '#' && key.Comment[0] != ';' { - key.Comment = "; " + key.Comment - } - if _, err = buf.WriteString(key.Comment + LineBreak); err != nil { - return 0, err - } - } - - if len(indent) > 0 && sname != DEFAULT_SECTION { - buf.WriteString(indent) - } - - switch { - case key.isAutoIncr: - kname = "-" - case strings.Contains(kname, "`") || strings.Contains(kname, `"`): - kname = `"""` + kname + `"""` - case strings.Contains(kname, `=`) || strings.Contains(kname, `:`): - kname = "`" + kname + "`" - } - - val := key.value - // In case key value contains "\n", "`" or "\"". - if strings.Contains(val, "\n") || strings.Contains(val, "`") || strings.Contains(val, `"`) || - strings.Contains(val, "#") { - val = `"""` + val + `"""` - } - if _, err = buf.WriteString(kname + equalSign + val + LineBreak); err != nil { - return 0, err - } - } - - // Put a line between sections. - if _, err = buf.WriteString(LineBreak); err != nil { - return 0, err - } - } - - return buf.WriteTo(w) -} - -// WriteTo writes file content into io.Writer. -func (f *File) WriteTo(w io.Writer) (int64, error) { - return f.WriteToIndent(w, "") -} - -// SaveToIndent writes content to file system with given value indention. -func (f *File) SaveToIndent(filename, indent string) error { - // Note: Because we are truncating with os.Create, - // so it's safer to save to a temporary file location and rename afte done. - tmpPath := filename + "." + strconv.Itoa(time.Now().Nanosecond()) + ".tmp" - defer os.Remove(tmpPath) - - fw, err := os.Create(tmpPath) - if err != nil { - return err - } - - if _, err = f.WriteToIndent(fw, indent); err != nil { - fw.Close() - return err - } - fw.Close() - - // Remove old file and rename the new one. - os.Remove(filename) - return os.Rename(tmpPath, filename) -} - -// SaveTo writes content to file system. -func (f *File) SaveTo(filename string) error { - return f.SaveToIndent(filename, "") -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/go-ini/ini/struct.go b/vendor/github.com/docker/machine/vendor/github.com/go-ini/ini/struct.go deleted file mode 100644 index c1184371..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/go-ini/ini/struct.go +++ /dev/null @@ -1,350 +0,0 @@ -// Copyright 2014 Unknwon -// -// Licensed under the Apache License, Version 2.0 (the "License"): you may -// not use this file except in compliance with the License. You may obtain -// a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -// License for the specific language governing permissions and limitations -// under the License. - -package ini - -import ( - "bytes" - "errors" - "fmt" - "reflect" - "time" - "unicode" -) - -// NameMapper represents a ini tag name mapper. -type NameMapper func(string) string - -// Built-in name getters. -var ( - // AllCapsUnderscore converts to format ALL_CAPS_UNDERSCORE. - AllCapsUnderscore NameMapper = func(raw string) string { - newstr := make([]rune, 0, len(raw)) - for i, chr := range raw { - if isUpper := 'A' <= chr && chr <= 'Z'; isUpper { - if i > 0 { - newstr = append(newstr, '_') - } - } - newstr = append(newstr, unicode.ToUpper(chr)) - } - return string(newstr) - } - // TitleUnderscore converts to format title_underscore. - TitleUnderscore NameMapper = func(raw string) string { - newstr := make([]rune, 0, len(raw)) - for i, chr := range raw { - if isUpper := 'A' <= chr && chr <= 'Z'; isUpper { - if i > 0 { - newstr = append(newstr, '_') - } - chr -= ('A' - 'a') - } - newstr = append(newstr, chr) - } - return string(newstr) - } -) - -func (s *Section) parseFieldName(raw, actual string) string { - if len(actual) > 0 { - return actual - } - if s.f.NameMapper != nil { - return s.f.NameMapper(raw) - } - return raw -} - -func parseDelim(actual string) string { - if len(actual) > 0 { - return actual - } - return "," -} - -var reflectTime = reflect.TypeOf(time.Now()).Kind() - -// setWithProperType sets proper value to field based on its type, -// but it does not return error for failing parsing, -// because we want to use default value that is already assigned to strcut. -func setWithProperType(t reflect.Type, key *Key, field reflect.Value, delim string) error { - switch t.Kind() { - case reflect.String: - if len(key.String()) == 0 { - return nil - } - field.SetString(key.String()) - case reflect.Bool: - boolVal, err := key.Bool() - if err != nil { - return nil - } - field.SetBool(boolVal) - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - durationVal, err := key.Duration() - if err == nil { - field.Set(reflect.ValueOf(durationVal)) - return nil - } - - intVal, err := key.Int64() - if err != nil { - return nil - } - field.SetInt(intVal) - // byte is an alias for uint8, so supporting uint8 breaks support for byte - case reflect.Uint, reflect.Uint16, reflect.Uint32, reflect.Uint64: - durationVal, err := key.Duration() - if err == nil { - field.Set(reflect.ValueOf(durationVal)) - return nil - } - - uintVal, err := key.Uint64() - if err != nil { - return nil - } - field.SetUint(uintVal) - - case reflect.Float64: - floatVal, err := key.Float64() - if err != nil { - return nil - } - field.SetFloat(floatVal) - case reflectTime: - timeVal, err := key.Time() - if err != nil { - return nil - } - field.Set(reflect.ValueOf(timeVal)) - case reflect.Slice: - vals := key.Strings(delim) - numVals := len(vals) - if numVals == 0 { - return nil - } - - sliceOf := field.Type().Elem().Kind() - - var times []time.Time - if sliceOf == reflectTime { - times = key.Times(delim) - } - - slice := reflect.MakeSlice(field.Type(), numVals, numVals) - for i := 0; i < numVals; i++ { - switch sliceOf { - case reflectTime: - slice.Index(i).Set(reflect.ValueOf(times[i])) - default: - slice.Index(i).Set(reflect.ValueOf(vals[i])) - } - } - field.Set(slice) - default: - return fmt.Errorf("unsupported type '%s'", t) - } - return nil -} - -func (s *Section) mapTo(val reflect.Value) error { - if val.Kind() == reflect.Ptr { - val = val.Elem() - } - typ := val.Type() - - for i := 0; i < typ.NumField(); i++ { - field := val.Field(i) - tpField := typ.Field(i) - - tag := tpField.Tag.Get("ini") - if tag == "-" { - continue - } - - fieldName := s.parseFieldName(tpField.Name, tag) - if len(fieldName) == 0 || !field.CanSet() { - continue - } - - isAnonymous := tpField.Type.Kind() == reflect.Ptr && tpField.Anonymous - isStruct := tpField.Type.Kind() == reflect.Struct - if isAnonymous { - field.Set(reflect.New(tpField.Type.Elem())) - } - - if isAnonymous || isStruct { - if sec, err := s.f.GetSection(fieldName); err == nil { - if err = sec.mapTo(field); err != nil { - return fmt.Errorf("error mapping field(%s): %v", fieldName, err) - } - continue - } - } - - if key, err := s.GetKey(fieldName); err == nil { - if err = setWithProperType(tpField.Type, key, field, parseDelim(tpField.Tag.Get("delim"))); err != nil { - return fmt.Errorf("error mapping field(%s): %v", fieldName, err) - } - } - } - return nil -} - -// MapTo maps section to given struct. -func (s *Section) MapTo(v interface{}) error { - typ := reflect.TypeOf(v) - val := reflect.ValueOf(v) - if typ.Kind() == reflect.Ptr { - typ = typ.Elem() - val = val.Elem() - } else { - return errors.New("cannot map to non-pointer struct") - } - - return s.mapTo(val) -} - -// MapTo maps file to given struct. -func (f *File) MapTo(v interface{}) error { - return f.Section("").MapTo(v) -} - -// MapTo maps data sources to given struct with name mapper. -func MapToWithMapper(v interface{}, mapper NameMapper, source interface{}, others ...interface{}) error { - cfg, err := Load(source, others...) - if err != nil { - return err - } - cfg.NameMapper = mapper - return cfg.MapTo(v) -} - -// MapTo maps data sources to given struct. -func MapTo(v, source interface{}, others ...interface{}) error { - return MapToWithMapper(v, nil, source, others...) -} - -// reflectWithProperType does the opposite thing with setWithProperType. -func reflectWithProperType(t reflect.Type, key *Key, field reflect.Value, delim string) error { - switch t.Kind() { - case reflect.String: - key.SetValue(field.String()) - case reflect.Bool, - reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, - reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, - reflect.Float64, - reflectTime: - key.SetValue(fmt.Sprint(field)) - case reflect.Slice: - vals := field.Slice(0, field.Len()) - if field.Len() == 0 { - return nil - } - - var buf bytes.Buffer - isTime := fmt.Sprint(field.Type()) == "[]time.Time" - for i := 0; i < field.Len(); i++ { - if isTime { - buf.WriteString(vals.Index(i).Interface().(time.Time).Format(time.RFC3339)) - } else { - buf.WriteString(fmt.Sprint(vals.Index(i))) - } - buf.WriteString(delim) - } - key.SetValue(buf.String()[:buf.Len()-1]) - default: - return fmt.Errorf("unsupported type '%s'", t) - } - return nil -} - -func (s *Section) reflectFrom(val reflect.Value) error { - if val.Kind() == reflect.Ptr { - val = val.Elem() - } - typ := val.Type() - - for i := 0; i < typ.NumField(); i++ { - field := val.Field(i) - tpField := typ.Field(i) - - tag := tpField.Tag.Get("ini") - if tag == "-" { - continue - } - - fieldName := s.parseFieldName(tpField.Name, tag) - if len(fieldName) == 0 || !field.CanSet() { - continue - } - - if (tpField.Type.Kind() == reflect.Ptr && tpField.Anonymous) || - (tpField.Type.Kind() == reflect.Struct) { - // Note: The only error here is section doesn't exist. - sec, err := s.f.GetSection(fieldName) - if err != nil { - // Note: fieldName can never be empty here, ignore error. - sec, _ = s.f.NewSection(fieldName) - } - if err = sec.reflectFrom(field); err != nil { - return fmt.Errorf("error reflecting field(%s): %v", fieldName, err) - } - continue - } - - // Note: Same reason as secion. - key, err := s.GetKey(fieldName) - if err != nil { - key, _ = s.NewKey(fieldName, "") - } - if err = reflectWithProperType(tpField.Type, key, field, parseDelim(tpField.Tag.Get("delim"))); err != nil { - return fmt.Errorf("error reflecting field(%s): %v", fieldName, err) - } - - } - return nil -} - -// ReflectFrom reflects secion from given struct. -func (s *Section) ReflectFrom(v interface{}) error { - typ := reflect.TypeOf(v) - val := reflect.ValueOf(v) - if typ.Kind() == reflect.Ptr { - typ = typ.Elem() - val = val.Elem() - } else { - return errors.New("cannot reflect from non-pointer struct") - } - - return s.reflectFrom(val) -} - -// ReflectFrom reflects file from given struct. -func (f *File) ReflectFrom(v interface{}) error { - return f.Section("").ReflectFrom(v) -} - -// ReflectFrom reflects data sources from given struct with name mapper. -func ReflectFromWithMapper(cfg *File, v interface{}, mapper NameMapper) error { - cfg.NameMapper = mapper - return cfg.ReflectFrom(v) -} - -// ReflectFrom reflects data sources from given struct. -func ReflectFrom(cfg *File, v interface{}) error { - return ReflectFromWithMapper(cfg, v, nil) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/LICENSE b/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/LICENSE deleted file mode 100644 index 1b1b1921..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/LICENSE +++ /dev/null @@ -1,31 +0,0 @@ -Go support for Protocol Buffers - Google's data interchange format - -Copyright 2010 The Go Authors. All rights reserved. -https://github.com/golang/protobuf - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - diff --git a/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/Makefile b/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/Makefile deleted file mode 100644 index f1f06564..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/Makefile +++ /dev/null @@ -1,43 +0,0 @@ -# Go support for Protocol Buffers - Google's data interchange format -# -# Copyright 2010 The Go Authors. All rights reserved. -# https://github.com/golang/protobuf -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -install: - go install - -test: install generate-test-pbs - go test - - -generate-test-pbs: - make install - make -C testdata - protoc --go_out=Mtestdata/test.proto=github.com/golang/protobuf/proto/testdata:. proto3_proto/proto3.proto - make diff --git a/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/clone.go b/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/clone.go deleted file mode 100644 index e98ddec9..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/clone.go +++ /dev/null @@ -1,223 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2011 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Protocol buffer deep copy and merge. -// TODO: RawMessage. - -package proto - -import ( - "log" - "reflect" - "strings" -) - -// Clone returns a deep copy of a protocol buffer. -func Clone(pb Message) Message { - in := reflect.ValueOf(pb) - if in.IsNil() { - return pb - } - - out := reflect.New(in.Type().Elem()) - // out is empty so a merge is a deep copy. - mergeStruct(out.Elem(), in.Elem()) - return out.Interface().(Message) -} - -// Merge merges src into dst. -// Required and optional fields that are set in src will be set to that value in dst. -// Elements of repeated fields will be appended. -// Merge panics if src and dst are not the same type, or if dst is nil. -func Merge(dst, src Message) { - in := reflect.ValueOf(src) - out := reflect.ValueOf(dst) - if out.IsNil() { - panic("proto: nil destination") - } - if in.Type() != out.Type() { - // Explicit test prior to mergeStruct so that mistyped nils will fail - panic("proto: type mismatch") - } - if in.IsNil() { - // Merging nil into non-nil is a quiet no-op - return - } - mergeStruct(out.Elem(), in.Elem()) -} - -func mergeStruct(out, in reflect.Value) { - sprop := GetProperties(in.Type()) - for i := 0; i < in.NumField(); i++ { - f := in.Type().Field(i) - if strings.HasPrefix(f.Name, "XXX_") { - continue - } - mergeAny(out.Field(i), in.Field(i), false, sprop.Prop[i]) - } - - if emIn, ok := in.Addr().Interface().(extendableProto); ok { - emOut := out.Addr().Interface().(extendableProto) - mergeExtension(emOut.ExtensionMap(), emIn.ExtensionMap()) - } - - uf := in.FieldByName("XXX_unrecognized") - if !uf.IsValid() { - return - } - uin := uf.Bytes() - if len(uin) > 0 { - out.FieldByName("XXX_unrecognized").SetBytes(append([]byte(nil), uin...)) - } -} - -// mergeAny performs a merge between two values of the same type. -// viaPtr indicates whether the values were indirected through a pointer (implying proto2). -// prop is set if this is a struct field (it may be nil). -func mergeAny(out, in reflect.Value, viaPtr bool, prop *Properties) { - if in.Type() == protoMessageType { - if !in.IsNil() { - if out.IsNil() { - out.Set(reflect.ValueOf(Clone(in.Interface().(Message)))) - } else { - Merge(out.Interface().(Message), in.Interface().(Message)) - } - } - return - } - switch in.Kind() { - case reflect.Bool, reflect.Float32, reflect.Float64, reflect.Int32, reflect.Int64, - reflect.String, reflect.Uint32, reflect.Uint64: - if !viaPtr && isProto3Zero(in) { - return - } - out.Set(in) - case reflect.Interface: - // Probably a oneof field; copy non-nil values. - if in.IsNil() { - return - } - // Allocate destination if it is not set, or set to a different type. - // Otherwise we will merge as normal. - if out.IsNil() || out.Elem().Type() != in.Elem().Type() { - out.Set(reflect.New(in.Elem().Elem().Type())) // interface -> *T -> T -> new(T) - } - mergeAny(out.Elem(), in.Elem(), false, nil) - case reflect.Map: - if in.Len() == 0 { - return - } - if out.IsNil() { - out.Set(reflect.MakeMap(in.Type())) - } - // For maps with value types of *T or []byte we need to deep copy each value. - elemKind := in.Type().Elem().Kind() - for _, key := range in.MapKeys() { - var val reflect.Value - switch elemKind { - case reflect.Ptr: - val = reflect.New(in.Type().Elem().Elem()) - mergeAny(val, in.MapIndex(key), false, nil) - case reflect.Slice: - val = in.MapIndex(key) - val = reflect.ValueOf(append([]byte{}, val.Bytes()...)) - default: - val = in.MapIndex(key) - } - out.SetMapIndex(key, val) - } - case reflect.Ptr: - if in.IsNil() { - return - } - if out.IsNil() { - out.Set(reflect.New(in.Elem().Type())) - } - mergeAny(out.Elem(), in.Elem(), true, nil) - case reflect.Slice: - if in.IsNil() { - return - } - if in.Type().Elem().Kind() == reflect.Uint8 { - // []byte is a scalar bytes field, not a repeated field. - - // Edge case: if this is in a proto3 message, a zero length - // bytes field is considered the zero value, and should not - // be merged. - if prop != nil && prop.proto3 && in.Len() == 0 { - return - } - - // Make a deep copy. - // Append to []byte{} instead of []byte(nil) so that we never end up - // with a nil result. - out.SetBytes(append([]byte{}, in.Bytes()...)) - return - } - n := in.Len() - if out.IsNil() { - out.Set(reflect.MakeSlice(in.Type(), 0, n)) - } - switch in.Type().Elem().Kind() { - case reflect.Bool, reflect.Float32, reflect.Float64, reflect.Int32, reflect.Int64, - reflect.String, reflect.Uint32, reflect.Uint64: - out.Set(reflect.AppendSlice(out, in)) - default: - for i := 0; i < n; i++ { - x := reflect.Indirect(reflect.New(in.Type().Elem())) - mergeAny(x, in.Index(i), false, nil) - out.Set(reflect.Append(out, x)) - } - } - case reflect.Struct: - mergeStruct(out, in) - default: - // unknown type, so not a protocol buffer - log.Printf("proto: don't know how to copy %v", in) - } -} - -func mergeExtension(out, in map[int32]Extension) { - for extNum, eIn := range in { - eOut := Extension{desc: eIn.desc} - if eIn.value != nil { - v := reflect.New(reflect.TypeOf(eIn.value)).Elem() - mergeAny(v, reflect.ValueOf(eIn.value), false, nil) - eOut.value = v.Interface() - } - if eIn.enc != nil { - eOut.enc = make([]byte, len(eIn.enc)) - copy(eOut.enc, eIn.enc) - } - - out[extNum] = eOut - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/decode.go b/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/decode.go deleted file mode 100644 index 5810782f..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/decode.go +++ /dev/null @@ -1,867 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto - -/* - * Routines for decoding protocol buffer data to construct in-memory representations. - */ - -import ( - "errors" - "fmt" - "io" - "os" - "reflect" -) - -// errOverflow is returned when an integer is too large to be represented. -var errOverflow = errors.New("proto: integer overflow") - -// ErrInternalBadWireType is returned by generated code when an incorrect -// wire type is encountered. It does not get returned to user code. -var ErrInternalBadWireType = errors.New("proto: internal error: bad wiretype for oneof") - -// The fundamental decoders that interpret bytes on the wire. -// Those that take integer types all return uint64 and are -// therefore of type valueDecoder. - -// DecodeVarint reads a varint-encoded integer from the slice. -// It returns the integer and the number of bytes consumed, or -// zero if there is not enough. -// This is the format for the -// int32, int64, uint32, uint64, bool, and enum -// protocol buffer types. -func DecodeVarint(buf []byte) (x uint64, n int) { - // x, n already 0 - for shift := uint(0); shift < 64; shift += 7 { - if n >= len(buf) { - return 0, 0 - } - b := uint64(buf[n]) - n++ - x |= (b & 0x7F) << shift - if (b & 0x80) == 0 { - return x, n - } - } - - // The number is too large to represent in a 64-bit value. - return 0, 0 -} - -// DecodeVarint reads a varint-encoded integer from the Buffer. -// This is the format for the -// int32, int64, uint32, uint64, bool, and enum -// protocol buffer types. -func (p *Buffer) DecodeVarint() (x uint64, err error) { - // x, err already 0 - - i := p.index - l := len(p.buf) - - for shift := uint(0); shift < 64; shift += 7 { - if i >= l { - err = io.ErrUnexpectedEOF - return - } - b := p.buf[i] - i++ - x |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - p.index = i - return - } - } - - // The number is too large to represent in a 64-bit value. - err = errOverflow - return -} - -// DecodeFixed64 reads a 64-bit integer from the Buffer. -// This is the format for the -// fixed64, sfixed64, and double protocol buffer types. -func (p *Buffer) DecodeFixed64() (x uint64, err error) { - // x, err already 0 - i := p.index + 8 - if i < 0 || i > len(p.buf) { - err = io.ErrUnexpectedEOF - return - } - p.index = i - - x = uint64(p.buf[i-8]) - x |= uint64(p.buf[i-7]) << 8 - x |= uint64(p.buf[i-6]) << 16 - x |= uint64(p.buf[i-5]) << 24 - x |= uint64(p.buf[i-4]) << 32 - x |= uint64(p.buf[i-3]) << 40 - x |= uint64(p.buf[i-2]) << 48 - x |= uint64(p.buf[i-1]) << 56 - return -} - -// DecodeFixed32 reads a 32-bit integer from the Buffer. -// This is the format for the -// fixed32, sfixed32, and float protocol buffer types. -func (p *Buffer) DecodeFixed32() (x uint64, err error) { - // x, err already 0 - i := p.index + 4 - if i < 0 || i > len(p.buf) { - err = io.ErrUnexpectedEOF - return - } - p.index = i - - x = uint64(p.buf[i-4]) - x |= uint64(p.buf[i-3]) << 8 - x |= uint64(p.buf[i-2]) << 16 - x |= uint64(p.buf[i-1]) << 24 - return -} - -// DecodeZigzag64 reads a zigzag-encoded 64-bit integer -// from the Buffer. -// This is the format used for the sint64 protocol buffer type. -func (p *Buffer) DecodeZigzag64() (x uint64, err error) { - x, err = p.DecodeVarint() - if err != nil { - return - } - x = (x >> 1) ^ uint64((int64(x&1)<<63)>>63) - return -} - -// DecodeZigzag32 reads a zigzag-encoded 32-bit integer -// from the Buffer. -// This is the format used for the sint32 protocol buffer type. -func (p *Buffer) DecodeZigzag32() (x uint64, err error) { - x, err = p.DecodeVarint() - if err != nil { - return - } - x = uint64((uint32(x) >> 1) ^ uint32((int32(x&1)<<31)>>31)) - return -} - -// These are not ValueDecoders: they produce an array of bytes or a string. -// bytes, embedded messages - -// DecodeRawBytes reads a count-delimited byte buffer from the Buffer. -// This is the format used for the bytes protocol buffer -// type and for embedded messages. -func (p *Buffer) DecodeRawBytes(alloc bool) (buf []byte, err error) { - n, err := p.DecodeVarint() - if err != nil { - return nil, err - } - - nb := int(n) - if nb < 0 { - return nil, fmt.Errorf("proto: bad byte length %d", nb) - } - end := p.index + nb - if end < p.index || end > len(p.buf) { - return nil, io.ErrUnexpectedEOF - } - - if !alloc { - // todo: check if can get more uses of alloc=false - buf = p.buf[p.index:end] - p.index += nb - return - } - - buf = make([]byte, nb) - copy(buf, p.buf[p.index:]) - p.index += nb - return -} - -// DecodeStringBytes reads an encoded string from the Buffer. -// This is the format used for the proto2 string type. -func (p *Buffer) DecodeStringBytes() (s string, err error) { - buf, err := p.DecodeRawBytes(false) - if err != nil { - return - } - return string(buf), nil -} - -// Skip the next item in the buffer. Its wire type is decoded and presented as an argument. -// If the protocol buffer has extensions, and the field matches, add it as an extension. -// Otherwise, if the XXX_unrecognized field exists, append the skipped data there. -func (o *Buffer) skipAndSave(t reflect.Type, tag, wire int, base structPointer, unrecField field) error { - oi := o.index - - err := o.skip(t, tag, wire) - if err != nil { - return err - } - - if !unrecField.IsValid() { - return nil - } - - ptr := structPointer_Bytes(base, unrecField) - - // Add the skipped field to struct field - obuf := o.buf - - o.buf = *ptr - o.EncodeVarint(uint64(tag<<3 | wire)) - *ptr = append(o.buf, obuf[oi:o.index]...) - - o.buf = obuf - - return nil -} - -// Skip the next item in the buffer. Its wire type is decoded and presented as an argument. -func (o *Buffer) skip(t reflect.Type, tag, wire int) error { - - var u uint64 - var err error - - switch wire { - case WireVarint: - _, err = o.DecodeVarint() - case WireFixed64: - _, err = o.DecodeFixed64() - case WireBytes: - _, err = o.DecodeRawBytes(false) - case WireFixed32: - _, err = o.DecodeFixed32() - case WireStartGroup: - for { - u, err = o.DecodeVarint() - if err != nil { - break - } - fwire := int(u & 0x7) - if fwire == WireEndGroup { - break - } - ftag := int(u >> 3) - err = o.skip(t, ftag, fwire) - if err != nil { - break - } - } - default: - err = fmt.Errorf("proto: can't skip unknown wire type %d for %s", wire, t) - } - return err -} - -// Unmarshaler is the interface representing objects that can -// unmarshal themselves. The method should reset the receiver before -// decoding starts. The argument points to data that may be -// overwritten, so implementations should not keep references to the -// buffer. -type Unmarshaler interface { - Unmarshal([]byte) error -} - -// Unmarshal parses the protocol buffer representation in buf and places the -// decoded result in pb. If the struct underlying pb does not match -// the data in buf, the results can be unpredictable. -// -// Unmarshal resets pb before starting to unmarshal, so any -// existing data in pb is always removed. Use UnmarshalMerge -// to preserve and append to existing data. -func Unmarshal(buf []byte, pb Message) error { - pb.Reset() - return UnmarshalMerge(buf, pb) -} - -// UnmarshalMerge parses the protocol buffer representation in buf and -// writes the decoded result to pb. If the struct underlying pb does not match -// the data in buf, the results can be unpredictable. -// -// UnmarshalMerge merges into existing data in pb. -// Most code should use Unmarshal instead. -func UnmarshalMerge(buf []byte, pb Message) error { - // If the object can unmarshal itself, let it. - if u, ok := pb.(Unmarshaler); ok { - return u.Unmarshal(buf) - } - return NewBuffer(buf).Unmarshal(pb) -} - -// DecodeMessage reads a count-delimited message from the Buffer. -func (p *Buffer) DecodeMessage(pb Message) error { - enc, err := p.DecodeRawBytes(false) - if err != nil { - return err - } - return NewBuffer(enc).Unmarshal(pb) -} - -// DecodeGroup reads a tag-delimited group from the Buffer. -func (p *Buffer) DecodeGroup(pb Message) error { - typ, base, err := getbase(pb) - if err != nil { - return err - } - return p.unmarshalType(typ.Elem(), GetProperties(typ.Elem()), true, base) -} - -// Unmarshal parses the protocol buffer representation in the -// Buffer and places the decoded result in pb. If the struct -// underlying pb does not match the data in the buffer, the results can be -// unpredictable. -func (p *Buffer) Unmarshal(pb Message) error { - // If the object can unmarshal itself, let it. - if u, ok := pb.(Unmarshaler); ok { - err := u.Unmarshal(p.buf[p.index:]) - p.index = len(p.buf) - return err - } - - typ, base, err := getbase(pb) - if err != nil { - return err - } - - err = p.unmarshalType(typ.Elem(), GetProperties(typ.Elem()), false, base) - - if collectStats { - stats.Decode++ - } - - return err -} - -// unmarshalType does the work of unmarshaling a structure. -func (o *Buffer) unmarshalType(st reflect.Type, prop *StructProperties, is_group bool, base structPointer) error { - var state errorState - required, reqFields := prop.reqCount, uint64(0) - - var err error - for err == nil && o.index < len(o.buf) { - oi := o.index - var u uint64 - u, err = o.DecodeVarint() - if err != nil { - break - } - wire := int(u & 0x7) - if wire == WireEndGroup { - if is_group { - return nil // input is satisfied - } - return fmt.Errorf("proto: %s: wiretype end group for non-group", st) - } - tag := int(u >> 3) - if tag <= 0 { - return fmt.Errorf("proto: %s: illegal tag %d (wire type %d)", st, tag, wire) - } - fieldnum, ok := prop.decoderTags.get(tag) - if !ok { - // Maybe it's an extension? - if prop.extendable { - if e := structPointer_Interface(base, st).(extendableProto); isExtensionField(e, int32(tag)) { - if err = o.skip(st, tag, wire); err == nil { - ext := e.ExtensionMap()[int32(tag)] // may be missing - ext.enc = append(ext.enc, o.buf[oi:o.index]...) - e.ExtensionMap()[int32(tag)] = ext - } - continue - } - } - // Maybe it's a oneof? - if prop.oneofUnmarshaler != nil { - m := structPointer_Interface(base, st).(Message) - // First return value indicates whether tag is a oneof field. - ok, err = prop.oneofUnmarshaler(m, tag, wire, o) - if err == ErrInternalBadWireType { - // Map the error to something more descriptive. - // Do the formatting here to save generated code space. - err = fmt.Errorf("bad wiretype for oneof field in %T", m) - } - if ok { - continue - } - } - err = o.skipAndSave(st, tag, wire, base, prop.unrecField) - continue - } - p := prop.Prop[fieldnum] - - if p.dec == nil { - fmt.Fprintf(os.Stderr, "proto: no protobuf decoder for %s.%s\n", st, st.Field(fieldnum).Name) - continue - } - dec := p.dec - if wire != WireStartGroup && wire != p.WireType { - if wire == WireBytes && p.packedDec != nil { - // a packable field - dec = p.packedDec - } else { - err = fmt.Errorf("proto: bad wiretype for field %s.%s: got wiretype %d, want %d", st, st.Field(fieldnum).Name, wire, p.WireType) - continue - } - } - decErr := dec(o, p, base) - if decErr != nil && !state.shouldContinue(decErr, p) { - err = decErr - } - if err == nil && p.Required { - // Successfully decoded a required field. - if tag <= 64 { - // use bitmap for fields 1-64 to catch field reuse. - var mask uint64 = 1 << uint64(tag-1) - if reqFields&mask == 0 { - // new required field - reqFields |= mask - required-- - } - } else { - // This is imprecise. It can be fooled by a required field - // with a tag > 64 that is encoded twice; that's very rare. - // A fully correct implementation would require allocating - // a data structure, which we would like to avoid. - required-- - } - } - } - if err == nil { - if is_group { - return io.ErrUnexpectedEOF - } - if state.err != nil { - return state.err - } - if required > 0 { - // Not enough information to determine the exact field. If we use extra - // CPU, we could determine the field only if the missing required field - // has a tag <= 64 and we check reqFields. - return &RequiredNotSetError{"{Unknown}"} - } - } - return err -} - -// Individual type decoders -// For each, -// u is the decoded value, -// v is a pointer to the field (pointer) in the struct - -// Sizes of the pools to allocate inside the Buffer. -// The goal is modest amortization and allocation -// on at least 16-byte boundaries. -const ( - boolPoolSize = 16 - uint32PoolSize = 8 - uint64PoolSize = 4 -) - -// Decode a bool. -func (o *Buffer) dec_bool(p *Properties, base structPointer) error { - u, err := p.valDec(o) - if err != nil { - return err - } - if len(o.bools) == 0 { - o.bools = make([]bool, boolPoolSize) - } - o.bools[0] = u != 0 - *structPointer_Bool(base, p.field) = &o.bools[0] - o.bools = o.bools[1:] - return nil -} - -func (o *Buffer) dec_proto3_bool(p *Properties, base structPointer) error { - u, err := p.valDec(o) - if err != nil { - return err - } - *structPointer_BoolVal(base, p.field) = u != 0 - return nil -} - -// Decode an int32. -func (o *Buffer) dec_int32(p *Properties, base structPointer) error { - u, err := p.valDec(o) - if err != nil { - return err - } - word32_Set(structPointer_Word32(base, p.field), o, uint32(u)) - return nil -} - -func (o *Buffer) dec_proto3_int32(p *Properties, base structPointer) error { - u, err := p.valDec(o) - if err != nil { - return err - } - word32Val_Set(structPointer_Word32Val(base, p.field), uint32(u)) - return nil -} - -// Decode an int64. -func (o *Buffer) dec_int64(p *Properties, base structPointer) error { - u, err := p.valDec(o) - if err != nil { - return err - } - word64_Set(structPointer_Word64(base, p.field), o, u) - return nil -} - -func (o *Buffer) dec_proto3_int64(p *Properties, base structPointer) error { - u, err := p.valDec(o) - if err != nil { - return err - } - word64Val_Set(structPointer_Word64Val(base, p.field), o, u) - return nil -} - -// Decode a string. -func (o *Buffer) dec_string(p *Properties, base structPointer) error { - s, err := o.DecodeStringBytes() - if err != nil { - return err - } - *structPointer_String(base, p.field) = &s - return nil -} - -func (o *Buffer) dec_proto3_string(p *Properties, base structPointer) error { - s, err := o.DecodeStringBytes() - if err != nil { - return err - } - *structPointer_StringVal(base, p.field) = s - return nil -} - -// Decode a slice of bytes ([]byte). -func (o *Buffer) dec_slice_byte(p *Properties, base structPointer) error { - b, err := o.DecodeRawBytes(true) - if err != nil { - return err - } - *structPointer_Bytes(base, p.field) = b - return nil -} - -// Decode a slice of bools ([]bool). -func (o *Buffer) dec_slice_bool(p *Properties, base structPointer) error { - u, err := p.valDec(o) - if err != nil { - return err - } - v := structPointer_BoolSlice(base, p.field) - *v = append(*v, u != 0) - return nil -} - -// Decode a slice of bools ([]bool) in packed format. -func (o *Buffer) dec_slice_packed_bool(p *Properties, base structPointer) error { - v := structPointer_BoolSlice(base, p.field) - - nn, err := o.DecodeVarint() - if err != nil { - return err - } - nb := int(nn) // number of bytes of encoded bools - fin := o.index + nb - if fin < o.index { - return errOverflow - } - - y := *v - for o.index < fin { - u, err := p.valDec(o) - if err != nil { - return err - } - y = append(y, u != 0) - } - - *v = y - return nil -} - -// Decode a slice of int32s ([]int32). -func (o *Buffer) dec_slice_int32(p *Properties, base structPointer) error { - u, err := p.valDec(o) - if err != nil { - return err - } - structPointer_Word32Slice(base, p.field).Append(uint32(u)) - return nil -} - -// Decode a slice of int32s ([]int32) in packed format. -func (o *Buffer) dec_slice_packed_int32(p *Properties, base structPointer) error { - v := structPointer_Word32Slice(base, p.field) - - nn, err := o.DecodeVarint() - if err != nil { - return err - } - nb := int(nn) // number of bytes of encoded int32s - - fin := o.index + nb - if fin < o.index { - return errOverflow - } - for o.index < fin { - u, err := p.valDec(o) - if err != nil { - return err - } - v.Append(uint32(u)) - } - return nil -} - -// Decode a slice of int64s ([]int64). -func (o *Buffer) dec_slice_int64(p *Properties, base structPointer) error { - u, err := p.valDec(o) - if err != nil { - return err - } - - structPointer_Word64Slice(base, p.field).Append(u) - return nil -} - -// Decode a slice of int64s ([]int64) in packed format. -func (o *Buffer) dec_slice_packed_int64(p *Properties, base structPointer) error { - v := structPointer_Word64Slice(base, p.field) - - nn, err := o.DecodeVarint() - if err != nil { - return err - } - nb := int(nn) // number of bytes of encoded int64s - - fin := o.index + nb - if fin < o.index { - return errOverflow - } - for o.index < fin { - u, err := p.valDec(o) - if err != nil { - return err - } - v.Append(u) - } - return nil -} - -// Decode a slice of strings ([]string). -func (o *Buffer) dec_slice_string(p *Properties, base structPointer) error { - s, err := o.DecodeStringBytes() - if err != nil { - return err - } - v := structPointer_StringSlice(base, p.field) - *v = append(*v, s) - return nil -} - -// Decode a slice of slice of bytes ([][]byte). -func (o *Buffer) dec_slice_slice_byte(p *Properties, base structPointer) error { - b, err := o.DecodeRawBytes(true) - if err != nil { - return err - } - v := structPointer_BytesSlice(base, p.field) - *v = append(*v, b) - return nil -} - -// Decode a map field. -func (o *Buffer) dec_new_map(p *Properties, base structPointer) error { - raw, err := o.DecodeRawBytes(false) - if err != nil { - return err - } - oi := o.index // index at the end of this map entry - o.index -= len(raw) // move buffer back to start of map entry - - mptr := structPointer_NewAt(base, p.field, p.mtype) // *map[K]V - if mptr.Elem().IsNil() { - mptr.Elem().Set(reflect.MakeMap(mptr.Type().Elem())) - } - v := mptr.Elem() // map[K]V - - // Prepare addressable doubly-indirect placeholders for the key and value types. - // See enc_new_map for why. - keyptr := reflect.New(reflect.PtrTo(p.mtype.Key())).Elem() // addressable *K - keybase := toStructPointer(keyptr.Addr()) // **K - - var valbase structPointer - var valptr reflect.Value - switch p.mtype.Elem().Kind() { - case reflect.Slice: - // []byte - var dummy []byte - valptr = reflect.ValueOf(&dummy) // *[]byte - valbase = toStructPointer(valptr) // *[]byte - case reflect.Ptr: - // message; valptr is **Msg; need to allocate the intermediate pointer - valptr = reflect.New(reflect.PtrTo(p.mtype.Elem())).Elem() // addressable *V - valptr.Set(reflect.New(valptr.Type().Elem())) - valbase = toStructPointer(valptr) - default: - // everything else - valptr = reflect.New(reflect.PtrTo(p.mtype.Elem())).Elem() // addressable *V - valbase = toStructPointer(valptr.Addr()) // **V - } - - // Decode. - // This parses a restricted wire format, namely the encoding of a message - // with two fields. See enc_new_map for the format. - for o.index < oi { - // tagcode for key and value properties are always a single byte - // because they have tags 1 and 2. - tagcode := o.buf[o.index] - o.index++ - switch tagcode { - case p.mkeyprop.tagcode[0]: - if err := p.mkeyprop.dec(o, p.mkeyprop, keybase); err != nil { - return err - } - case p.mvalprop.tagcode[0]: - if err := p.mvalprop.dec(o, p.mvalprop, valbase); err != nil { - return err - } - default: - // TODO: Should we silently skip this instead? - return fmt.Errorf("proto: bad map data tag %d", raw[0]) - } - } - keyelem, valelem := keyptr.Elem(), valptr.Elem() - if !keyelem.IsValid() || !valelem.IsValid() { - // We did not decode the key or the value in the map entry. - // Either way, it's an invalid map entry. - return fmt.Errorf("proto: bad map data: missing key/val") - } - - v.SetMapIndex(keyelem, valelem) - return nil -} - -// Decode a group. -func (o *Buffer) dec_struct_group(p *Properties, base structPointer) error { - bas := structPointer_GetStructPointer(base, p.field) - if structPointer_IsNil(bas) { - // allocate new nested message - bas = toStructPointer(reflect.New(p.stype)) - structPointer_SetStructPointer(base, p.field, bas) - } - return o.unmarshalType(p.stype, p.sprop, true, bas) -} - -// Decode an embedded message. -func (o *Buffer) dec_struct_message(p *Properties, base structPointer) (err error) { - raw, e := o.DecodeRawBytes(false) - if e != nil { - return e - } - - bas := structPointer_GetStructPointer(base, p.field) - if structPointer_IsNil(bas) { - // allocate new nested message - bas = toStructPointer(reflect.New(p.stype)) - structPointer_SetStructPointer(base, p.field, bas) - } - - // If the object can unmarshal itself, let it. - if p.isUnmarshaler { - iv := structPointer_Interface(bas, p.stype) - return iv.(Unmarshaler).Unmarshal(raw) - } - - obuf := o.buf - oi := o.index - o.buf = raw - o.index = 0 - - err = o.unmarshalType(p.stype, p.sprop, false, bas) - o.buf = obuf - o.index = oi - - return err -} - -// Decode a slice of embedded messages. -func (o *Buffer) dec_slice_struct_message(p *Properties, base structPointer) error { - return o.dec_slice_struct(p, false, base) -} - -// Decode a slice of embedded groups. -func (o *Buffer) dec_slice_struct_group(p *Properties, base structPointer) error { - return o.dec_slice_struct(p, true, base) -} - -// Decode a slice of structs ([]*struct). -func (o *Buffer) dec_slice_struct(p *Properties, is_group bool, base structPointer) error { - v := reflect.New(p.stype) - bas := toStructPointer(v) - structPointer_StructPointerSlice(base, p.field).Append(bas) - - if is_group { - err := o.unmarshalType(p.stype, p.sprop, is_group, bas) - return err - } - - raw, err := o.DecodeRawBytes(false) - if err != nil { - return err - } - - // If the object can unmarshal itself, let it. - if p.isUnmarshaler { - iv := v.Interface() - return iv.(Unmarshaler).Unmarshal(raw) - } - - obuf := o.buf - oi := o.index - o.buf = raw - o.index = 0 - - err = o.unmarshalType(p.stype, p.sprop, is_group, bas) - - o.buf = obuf - o.index = oi - - return err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/encode.go b/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/encode.go deleted file mode 100644 index 231b0740..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/encode.go +++ /dev/null @@ -1,1325 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto - -/* - * Routines for encoding data into the wire format for protocol buffers. - */ - -import ( - "errors" - "fmt" - "reflect" - "sort" -) - -// RequiredNotSetError is the error returned if Marshal is called with -// a protocol buffer struct whose required fields have not -// all been initialized. It is also the error returned if Unmarshal is -// called with an encoded protocol buffer that does not include all the -// required fields. -// -// When printed, RequiredNotSetError reports the first unset required field in a -// message. If the field cannot be precisely determined, it is reported as -// "{Unknown}". -type RequiredNotSetError struct { - field string -} - -func (e *RequiredNotSetError) Error() string { - return fmt.Sprintf("proto: required field %q not set", e.field) -} - -var ( - // errRepeatedHasNil is the error returned if Marshal is called with - // a struct with a repeated field containing a nil element. - errRepeatedHasNil = errors.New("proto: repeated field has nil element") - - // ErrNil is the error returned if Marshal is called with nil. - ErrNil = errors.New("proto: Marshal called with nil") -) - -// The fundamental encoders that put bytes on the wire. -// Those that take integer types all accept uint64 and are -// therefore of type valueEncoder. - -const maxVarintBytes = 10 // maximum length of a varint - -// EncodeVarint returns the varint encoding of x. -// This is the format for the -// int32, int64, uint32, uint64, bool, and enum -// protocol buffer types. -// Not used by the package itself, but helpful to clients -// wishing to use the same encoding. -func EncodeVarint(x uint64) []byte { - var buf [maxVarintBytes]byte - var n int - for n = 0; x > 127; n++ { - buf[n] = 0x80 | uint8(x&0x7F) - x >>= 7 - } - buf[n] = uint8(x) - n++ - return buf[0:n] -} - -// EncodeVarint writes a varint-encoded integer to the Buffer. -// This is the format for the -// int32, int64, uint32, uint64, bool, and enum -// protocol buffer types. -func (p *Buffer) EncodeVarint(x uint64) error { - for x >= 1<<7 { - p.buf = append(p.buf, uint8(x&0x7f|0x80)) - x >>= 7 - } - p.buf = append(p.buf, uint8(x)) - return nil -} - -// SizeVarint returns the varint encoding size of an integer. -func SizeVarint(x uint64) int { - return sizeVarint(x) -} - -func sizeVarint(x uint64) (n int) { - for { - n++ - x >>= 7 - if x == 0 { - break - } - } - return n -} - -// EncodeFixed64 writes a 64-bit integer to the Buffer. -// This is the format for the -// fixed64, sfixed64, and double protocol buffer types. -func (p *Buffer) EncodeFixed64(x uint64) error { - p.buf = append(p.buf, - uint8(x), - uint8(x>>8), - uint8(x>>16), - uint8(x>>24), - uint8(x>>32), - uint8(x>>40), - uint8(x>>48), - uint8(x>>56)) - return nil -} - -func sizeFixed64(x uint64) int { - return 8 -} - -// EncodeFixed32 writes a 32-bit integer to the Buffer. -// This is the format for the -// fixed32, sfixed32, and float protocol buffer types. -func (p *Buffer) EncodeFixed32(x uint64) error { - p.buf = append(p.buf, - uint8(x), - uint8(x>>8), - uint8(x>>16), - uint8(x>>24)) - return nil -} - -func sizeFixed32(x uint64) int { - return 4 -} - -// EncodeZigzag64 writes a zigzag-encoded 64-bit integer -// to the Buffer. -// This is the format used for the sint64 protocol buffer type. -func (p *Buffer) EncodeZigzag64(x uint64) error { - // use signed number to get arithmetic right shift. - return p.EncodeVarint(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} - -func sizeZigzag64(x uint64) int { - return sizeVarint(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} - -// EncodeZigzag32 writes a zigzag-encoded 32-bit integer -// to the Buffer. -// This is the format used for the sint32 protocol buffer type. -func (p *Buffer) EncodeZigzag32(x uint64) error { - // use signed number to get arithmetic right shift. - return p.EncodeVarint(uint64((uint32(x) << 1) ^ uint32((int32(x) >> 31)))) -} - -func sizeZigzag32(x uint64) int { - return sizeVarint(uint64((uint32(x) << 1) ^ uint32((int32(x) >> 31)))) -} - -// EncodeRawBytes writes a count-delimited byte buffer to the Buffer. -// This is the format used for the bytes protocol buffer -// type and for embedded messages. -func (p *Buffer) EncodeRawBytes(b []byte) error { - p.EncodeVarint(uint64(len(b))) - p.buf = append(p.buf, b...) - return nil -} - -func sizeRawBytes(b []byte) int { - return sizeVarint(uint64(len(b))) + - len(b) -} - -// EncodeStringBytes writes an encoded string to the Buffer. -// This is the format used for the proto2 string type. -func (p *Buffer) EncodeStringBytes(s string) error { - p.EncodeVarint(uint64(len(s))) - p.buf = append(p.buf, s...) - return nil -} - -func sizeStringBytes(s string) int { - return sizeVarint(uint64(len(s))) + - len(s) -} - -// Marshaler is the interface representing objects that can marshal themselves. -type Marshaler interface { - Marshal() ([]byte, error) -} - -// Marshal takes the protocol buffer -// and encodes it into the wire format, returning the data. -func Marshal(pb Message) ([]byte, error) { - // Can the object marshal itself? - if m, ok := pb.(Marshaler); ok { - return m.Marshal() - } - p := NewBuffer(nil) - err := p.Marshal(pb) - var state errorState - if err != nil && !state.shouldContinue(err, nil) { - return nil, err - } - if p.buf == nil && err == nil { - // Return a non-nil slice on success. - return []byte{}, nil - } - return p.buf, err -} - -// EncodeMessage writes the protocol buffer to the Buffer, -// prefixed by a varint-encoded length. -func (p *Buffer) EncodeMessage(pb Message) error { - t, base, err := getbase(pb) - if structPointer_IsNil(base) { - return ErrNil - } - if err == nil { - var state errorState - err = p.enc_len_struct(GetProperties(t.Elem()), base, &state) - } - return err -} - -// Marshal takes the protocol buffer -// and encodes it into the wire format, writing the result to the -// Buffer. -func (p *Buffer) Marshal(pb Message) error { - // Can the object marshal itself? - if m, ok := pb.(Marshaler); ok { - data, err := m.Marshal() - if err != nil { - return err - } - p.buf = append(p.buf, data...) - return nil - } - - t, base, err := getbase(pb) - if structPointer_IsNil(base) { - return ErrNil - } - if err == nil { - err = p.enc_struct(GetProperties(t.Elem()), base) - } - - if collectStats { - stats.Encode++ - } - - return err -} - -// Size returns the encoded size of a protocol buffer. -func Size(pb Message) (n int) { - // Can the object marshal itself? If so, Size is slow. - // TODO: add Size to Marshaler, or add a Sizer interface. - if m, ok := pb.(Marshaler); ok { - b, _ := m.Marshal() - return len(b) - } - - t, base, err := getbase(pb) - if structPointer_IsNil(base) { - return 0 - } - if err == nil { - n = size_struct(GetProperties(t.Elem()), base) - } - - if collectStats { - stats.Size++ - } - - return -} - -// Individual type encoders. - -// Encode a bool. -func (o *Buffer) enc_bool(p *Properties, base structPointer) error { - v := *structPointer_Bool(base, p.field) - if v == nil { - return ErrNil - } - x := 0 - if *v { - x = 1 - } - o.buf = append(o.buf, p.tagcode...) - p.valEnc(o, uint64(x)) - return nil -} - -func (o *Buffer) enc_proto3_bool(p *Properties, base structPointer) error { - v := *structPointer_BoolVal(base, p.field) - if !v { - return ErrNil - } - o.buf = append(o.buf, p.tagcode...) - p.valEnc(o, 1) - return nil -} - -func size_bool(p *Properties, base structPointer) int { - v := *structPointer_Bool(base, p.field) - if v == nil { - return 0 - } - return len(p.tagcode) + 1 // each bool takes exactly one byte -} - -func size_proto3_bool(p *Properties, base structPointer) int { - v := *structPointer_BoolVal(base, p.field) - if !v && !p.oneof { - return 0 - } - return len(p.tagcode) + 1 // each bool takes exactly one byte -} - -// Encode an int32. -func (o *Buffer) enc_int32(p *Properties, base structPointer) error { - v := structPointer_Word32(base, p.field) - if word32_IsNil(v) { - return ErrNil - } - x := int32(word32_Get(v)) // permit sign extension to use full 64-bit range - o.buf = append(o.buf, p.tagcode...) - p.valEnc(o, uint64(x)) - return nil -} - -func (o *Buffer) enc_proto3_int32(p *Properties, base structPointer) error { - v := structPointer_Word32Val(base, p.field) - x := int32(word32Val_Get(v)) // permit sign extension to use full 64-bit range - if x == 0 { - return ErrNil - } - o.buf = append(o.buf, p.tagcode...) - p.valEnc(o, uint64(x)) - return nil -} - -func size_int32(p *Properties, base structPointer) (n int) { - v := structPointer_Word32(base, p.field) - if word32_IsNil(v) { - return 0 - } - x := int32(word32_Get(v)) // permit sign extension to use full 64-bit range - n += len(p.tagcode) - n += p.valSize(uint64(x)) - return -} - -func size_proto3_int32(p *Properties, base structPointer) (n int) { - v := structPointer_Word32Val(base, p.field) - x := int32(word32Val_Get(v)) // permit sign extension to use full 64-bit range - if x == 0 && !p.oneof { - return 0 - } - n += len(p.tagcode) - n += p.valSize(uint64(x)) - return -} - -// Encode a uint32. -// Exactly the same as int32, except for no sign extension. -func (o *Buffer) enc_uint32(p *Properties, base structPointer) error { - v := structPointer_Word32(base, p.field) - if word32_IsNil(v) { - return ErrNil - } - x := word32_Get(v) - o.buf = append(o.buf, p.tagcode...) - p.valEnc(o, uint64(x)) - return nil -} - -func (o *Buffer) enc_proto3_uint32(p *Properties, base structPointer) error { - v := structPointer_Word32Val(base, p.field) - x := word32Val_Get(v) - if x == 0 { - return ErrNil - } - o.buf = append(o.buf, p.tagcode...) - p.valEnc(o, uint64(x)) - return nil -} - -func size_uint32(p *Properties, base structPointer) (n int) { - v := structPointer_Word32(base, p.field) - if word32_IsNil(v) { - return 0 - } - x := word32_Get(v) - n += len(p.tagcode) - n += p.valSize(uint64(x)) - return -} - -func size_proto3_uint32(p *Properties, base structPointer) (n int) { - v := structPointer_Word32Val(base, p.field) - x := word32Val_Get(v) - if x == 0 && !p.oneof { - return 0 - } - n += len(p.tagcode) - n += p.valSize(uint64(x)) - return -} - -// Encode an int64. -func (o *Buffer) enc_int64(p *Properties, base structPointer) error { - v := structPointer_Word64(base, p.field) - if word64_IsNil(v) { - return ErrNil - } - x := word64_Get(v) - o.buf = append(o.buf, p.tagcode...) - p.valEnc(o, x) - return nil -} - -func (o *Buffer) enc_proto3_int64(p *Properties, base structPointer) error { - v := structPointer_Word64Val(base, p.field) - x := word64Val_Get(v) - if x == 0 { - return ErrNil - } - o.buf = append(o.buf, p.tagcode...) - p.valEnc(o, x) - return nil -} - -func size_int64(p *Properties, base structPointer) (n int) { - v := structPointer_Word64(base, p.field) - if word64_IsNil(v) { - return 0 - } - x := word64_Get(v) - n += len(p.tagcode) - n += p.valSize(x) - return -} - -func size_proto3_int64(p *Properties, base structPointer) (n int) { - v := structPointer_Word64Val(base, p.field) - x := word64Val_Get(v) - if x == 0 && !p.oneof { - return 0 - } - n += len(p.tagcode) - n += p.valSize(x) - return -} - -// Encode a string. -func (o *Buffer) enc_string(p *Properties, base structPointer) error { - v := *structPointer_String(base, p.field) - if v == nil { - return ErrNil - } - x := *v - o.buf = append(o.buf, p.tagcode...) - o.EncodeStringBytes(x) - return nil -} - -func (o *Buffer) enc_proto3_string(p *Properties, base structPointer) error { - v := *structPointer_StringVal(base, p.field) - if v == "" { - return ErrNil - } - o.buf = append(o.buf, p.tagcode...) - o.EncodeStringBytes(v) - return nil -} - -func size_string(p *Properties, base structPointer) (n int) { - v := *structPointer_String(base, p.field) - if v == nil { - return 0 - } - x := *v - n += len(p.tagcode) - n += sizeStringBytes(x) - return -} - -func size_proto3_string(p *Properties, base structPointer) (n int) { - v := *structPointer_StringVal(base, p.field) - if v == "" && !p.oneof { - return 0 - } - n += len(p.tagcode) - n += sizeStringBytes(v) - return -} - -// All protocol buffer fields are nillable, but be careful. -func isNil(v reflect.Value) bool { - switch v.Kind() { - case reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice: - return v.IsNil() - } - return false -} - -// Encode a message struct. -func (o *Buffer) enc_struct_message(p *Properties, base structPointer) error { - var state errorState - structp := structPointer_GetStructPointer(base, p.field) - if structPointer_IsNil(structp) { - return ErrNil - } - - // Can the object marshal itself? - if p.isMarshaler { - m := structPointer_Interface(structp, p.stype).(Marshaler) - data, err := m.Marshal() - if err != nil && !state.shouldContinue(err, nil) { - return err - } - o.buf = append(o.buf, p.tagcode...) - o.EncodeRawBytes(data) - return state.err - } - - o.buf = append(o.buf, p.tagcode...) - return o.enc_len_struct(p.sprop, structp, &state) -} - -func size_struct_message(p *Properties, base structPointer) int { - structp := structPointer_GetStructPointer(base, p.field) - if structPointer_IsNil(structp) { - return 0 - } - - // Can the object marshal itself? - if p.isMarshaler { - m := structPointer_Interface(structp, p.stype).(Marshaler) - data, _ := m.Marshal() - n0 := len(p.tagcode) - n1 := sizeRawBytes(data) - return n0 + n1 - } - - n0 := len(p.tagcode) - n1 := size_struct(p.sprop, structp) - n2 := sizeVarint(uint64(n1)) // size of encoded length - return n0 + n1 + n2 -} - -// Encode a group struct. -func (o *Buffer) enc_struct_group(p *Properties, base structPointer) error { - var state errorState - b := structPointer_GetStructPointer(base, p.field) - if structPointer_IsNil(b) { - return ErrNil - } - - o.EncodeVarint(uint64((p.Tag << 3) | WireStartGroup)) - err := o.enc_struct(p.sprop, b) - if err != nil && !state.shouldContinue(err, nil) { - return err - } - o.EncodeVarint(uint64((p.Tag << 3) | WireEndGroup)) - return state.err -} - -func size_struct_group(p *Properties, base structPointer) (n int) { - b := structPointer_GetStructPointer(base, p.field) - if structPointer_IsNil(b) { - return 0 - } - - n += sizeVarint(uint64((p.Tag << 3) | WireStartGroup)) - n += size_struct(p.sprop, b) - n += sizeVarint(uint64((p.Tag << 3) | WireEndGroup)) - return -} - -// Encode a slice of bools ([]bool). -func (o *Buffer) enc_slice_bool(p *Properties, base structPointer) error { - s := *structPointer_BoolSlice(base, p.field) - l := len(s) - if l == 0 { - return ErrNil - } - for _, x := range s { - o.buf = append(o.buf, p.tagcode...) - v := uint64(0) - if x { - v = 1 - } - p.valEnc(o, v) - } - return nil -} - -func size_slice_bool(p *Properties, base structPointer) int { - s := *structPointer_BoolSlice(base, p.field) - l := len(s) - if l == 0 { - return 0 - } - return l * (len(p.tagcode) + 1) // each bool takes exactly one byte -} - -// Encode a slice of bools ([]bool) in packed format. -func (o *Buffer) enc_slice_packed_bool(p *Properties, base structPointer) error { - s := *structPointer_BoolSlice(base, p.field) - l := len(s) - if l == 0 { - return ErrNil - } - o.buf = append(o.buf, p.tagcode...) - o.EncodeVarint(uint64(l)) // each bool takes exactly one byte - for _, x := range s { - v := uint64(0) - if x { - v = 1 - } - p.valEnc(o, v) - } - return nil -} - -func size_slice_packed_bool(p *Properties, base structPointer) (n int) { - s := *structPointer_BoolSlice(base, p.field) - l := len(s) - if l == 0 { - return 0 - } - n += len(p.tagcode) - n += sizeVarint(uint64(l)) - n += l // each bool takes exactly one byte - return -} - -// Encode a slice of bytes ([]byte). -func (o *Buffer) enc_slice_byte(p *Properties, base structPointer) error { - s := *structPointer_Bytes(base, p.field) - if s == nil { - return ErrNil - } - o.buf = append(o.buf, p.tagcode...) - o.EncodeRawBytes(s) - return nil -} - -func (o *Buffer) enc_proto3_slice_byte(p *Properties, base structPointer) error { - s := *structPointer_Bytes(base, p.field) - if len(s) == 0 { - return ErrNil - } - o.buf = append(o.buf, p.tagcode...) - o.EncodeRawBytes(s) - return nil -} - -func size_slice_byte(p *Properties, base structPointer) (n int) { - s := *structPointer_Bytes(base, p.field) - if s == nil && !p.oneof { - return 0 - } - n += len(p.tagcode) - n += sizeRawBytes(s) - return -} - -func size_proto3_slice_byte(p *Properties, base structPointer) (n int) { - s := *structPointer_Bytes(base, p.field) - if len(s) == 0 && !p.oneof { - return 0 - } - n += len(p.tagcode) - n += sizeRawBytes(s) - return -} - -// Encode a slice of int32s ([]int32). -func (o *Buffer) enc_slice_int32(p *Properties, base structPointer) error { - s := structPointer_Word32Slice(base, p.field) - l := s.Len() - if l == 0 { - return ErrNil - } - for i := 0; i < l; i++ { - o.buf = append(o.buf, p.tagcode...) - x := int32(s.Index(i)) // permit sign extension to use full 64-bit range - p.valEnc(o, uint64(x)) - } - return nil -} - -func size_slice_int32(p *Properties, base structPointer) (n int) { - s := structPointer_Word32Slice(base, p.field) - l := s.Len() - if l == 0 { - return 0 - } - for i := 0; i < l; i++ { - n += len(p.tagcode) - x := int32(s.Index(i)) // permit sign extension to use full 64-bit range - n += p.valSize(uint64(x)) - } - return -} - -// Encode a slice of int32s ([]int32) in packed format. -func (o *Buffer) enc_slice_packed_int32(p *Properties, base structPointer) error { - s := structPointer_Word32Slice(base, p.field) - l := s.Len() - if l == 0 { - return ErrNil - } - // TODO: Reuse a Buffer. - buf := NewBuffer(nil) - for i := 0; i < l; i++ { - x := int32(s.Index(i)) // permit sign extension to use full 64-bit range - p.valEnc(buf, uint64(x)) - } - - o.buf = append(o.buf, p.tagcode...) - o.EncodeVarint(uint64(len(buf.buf))) - o.buf = append(o.buf, buf.buf...) - return nil -} - -func size_slice_packed_int32(p *Properties, base structPointer) (n int) { - s := structPointer_Word32Slice(base, p.field) - l := s.Len() - if l == 0 { - return 0 - } - var bufSize int - for i := 0; i < l; i++ { - x := int32(s.Index(i)) // permit sign extension to use full 64-bit range - bufSize += p.valSize(uint64(x)) - } - - n += len(p.tagcode) - n += sizeVarint(uint64(bufSize)) - n += bufSize - return -} - -// Encode a slice of uint32s ([]uint32). -// Exactly the same as int32, except for no sign extension. -func (o *Buffer) enc_slice_uint32(p *Properties, base structPointer) error { - s := structPointer_Word32Slice(base, p.field) - l := s.Len() - if l == 0 { - return ErrNil - } - for i := 0; i < l; i++ { - o.buf = append(o.buf, p.tagcode...) - x := s.Index(i) - p.valEnc(o, uint64(x)) - } - return nil -} - -func size_slice_uint32(p *Properties, base structPointer) (n int) { - s := structPointer_Word32Slice(base, p.field) - l := s.Len() - if l == 0 { - return 0 - } - for i := 0; i < l; i++ { - n += len(p.tagcode) - x := s.Index(i) - n += p.valSize(uint64(x)) - } - return -} - -// Encode a slice of uint32s ([]uint32) in packed format. -// Exactly the same as int32, except for no sign extension. -func (o *Buffer) enc_slice_packed_uint32(p *Properties, base structPointer) error { - s := structPointer_Word32Slice(base, p.field) - l := s.Len() - if l == 0 { - return ErrNil - } - // TODO: Reuse a Buffer. - buf := NewBuffer(nil) - for i := 0; i < l; i++ { - p.valEnc(buf, uint64(s.Index(i))) - } - - o.buf = append(o.buf, p.tagcode...) - o.EncodeVarint(uint64(len(buf.buf))) - o.buf = append(o.buf, buf.buf...) - return nil -} - -func size_slice_packed_uint32(p *Properties, base structPointer) (n int) { - s := structPointer_Word32Slice(base, p.field) - l := s.Len() - if l == 0 { - return 0 - } - var bufSize int - for i := 0; i < l; i++ { - bufSize += p.valSize(uint64(s.Index(i))) - } - - n += len(p.tagcode) - n += sizeVarint(uint64(bufSize)) - n += bufSize - return -} - -// Encode a slice of int64s ([]int64). -func (o *Buffer) enc_slice_int64(p *Properties, base structPointer) error { - s := structPointer_Word64Slice(base, p.field) - l := s.Len() - if l == 0 { - return ErrNil - } - for i := 0; i < l; i++ { - o.buf = append(o.buf, p.tagcode...) - p.valEnc(o, s.Index(i)) - } - return nil -} - -func size_slice_int64(p *Properties, base structPointer) (n int) { - s := structPointer_Word64Slice(base, p.field) - l := s.Len() - if l == 0 { - return 0 - } - for i := 0; i < l; i++ { - n += len(p.tagcode) - n += p.valSize(s.Index(i)) - } - return -} - -// Encode a slice of int64s ([]int64) in packed format. -func (o *Buffer) enc_slice_packed_int64(p *Properties, base structPointer) error { - s := structPointer_Word64Slice(base, p.field) - l := s.Len() - if l == 0 { - return ErrNil - } - // TODO: Reuse a Buffer. - buf := NewBuffer(nil) - for i := 0; i < l; i++ { - p.valEnc(buf, s.Index(i)) - } - - o.buf = append(o.buf, p.tagcode...) - o.EncodeVarint(uint64(len(buf.buf))) - o.buf = append(o.buf, buf.buf...) - return nil -} - -func size_slice_packed_int64(p *Properties, base structPointer) (n int) { - s := structPointer_Word64Slice(base, p.field) - l := s.Len() - if l == 0 { - return 0 - } - var bufSize int - for i := 0; i < l; i++ { - bufSize += p.valSize(s.Index(i)) - } - - n += len(p.tagcode) - n += sizeVarint(uint64(bufSize)) - n += bufSize - return -} - -// Encode a slice of slice of bytes ([][]byte). -func (o *Buffer) enc_slice_slice_byte(p *Properties, base structPointer) error { - ss := *structPointer_BytesSlice(base, p.field) - l := len(ss) - if l == 0 { - return ErrNil - } - for i := 0; i < l; i++ { - o.buf = append(o.buf, p.tagcode...) - o.EncodeRawBytes(ss[i]) - } - return nil -} - -func size_slice_slice_byte(p *Properties, base structPointer) (n int) { - ss := *structPointer_BytesSlice(base, p.field) - l := len(ss) - if l == 0 { - return 0 - } - n += l * len(p.tagcode) - for i := 0; i < l; i++ { - n += sizeRawBytes(ss[i]) - } - return -} - -// Encode a slice of strings ([]string). -func (o *Buffer) enc_slice_string(p *Properties, base structPointer) error { - ss := *structPointer_StringSlice(base, p.field) - l := len(ss) - for i := 0; i < l; i++ { - o.buf = append(o.buf, p.tagcode...) - o.EncodeStringBytes(ss[i]) - } - return nil -} - -func size_slice_string(p *Properties, base structPointer) (n int) { - ss := *structPointer_StringSlice(base, p.field) - l := len(ss) - n += l * len(p.tagcode) - for i := 0; i < l; i++ { - n += sizeStringBytes(ss[i]) - } - return -} - -// Encode a slice of message structs ([]*struct). -func (o *Buffer) enc_slice_struct_message(p *Properties, base structPointer) error { - var state errorState - s := structPointer_StructPointerSlice(base, p.field) - l := s.Len() - - for i := 0; i < l; i++ { - structp := s.Index(i) - if structPointer_IsNil(structp) { - return errRepeatedHasNil - } - - // Can the object marshal itself? - if p.isMarshaler { - m := structPointer_Interface(structp, p.stype).(Marshaler) - data, err := m.Marshal() - if err != nil && !state.shouldContinue(err, nil) { - return err - } - o.buf = append(o.buf, p.tagcode...) - o.EncodeRawBytes(data) - continue - } - - o.buf = append(o.buf, p.tagcode...) - err := o.enc_len_struct(p.sprop, structp, &state) - if err != nil && !state.shouldContinue(err, nil) { - if err == ErrNil { - return errRepeatedHasNil - } - return err - } - } - return state.err -} - -func size_slice_struct_message(p *Properties, base structPointer) (n int) { - s := structPointer_StructPointerSlice(base, p.field) - l := s.Len() - n += l * len(p.tagcode) - for i := 0; i < l; i++ { - structp := s.Index(i) - if structPointer_IsNil(structp) { - return // return the size up to this point - } - - // Can the object marshal itself? - if p.isMarshaler { - m := structPointer_Interface(structp, p.stype).(Marshaler) - data, _ := m.Marshal() - n += len(p.tagcode) - n += sizeRawBytes(data) - continue - } - - n0 := size_struct(p.sprop, structp) - n1 := sizeVarint(uint64(n0)) // size of encoded length - n += n0 + n1 - } - return -} - -// Encode a slice of group structs ([]*struct). -func (o *Buffer) enc_slice_struct_group(p *Properties, base structPointer) error { - var state errorState - s := structPointer_StructPointerSlice(base, p.field) - l := s.Len() - - for i := 0; i < l; i++ { - b := s.Index(i) - if structPointer_IsNil(b) { - return errRepeatedHasNil - } - - o.EncodeVarint(uint64((p.Tag << 3) | WireStartGroup)) - - err := o.enc_struct(p.sprop, b) - - if err != nil && !state.shouldContinue(err, nil) { - if err == ErrNil { - return errRepeatedHasNil - } - return err - } - - o.EncodeVarint(uint64((p.Tag << 3) | WireEndGroup)) - } - return state.err -} - -func size_slice_struct_group(p *Properties, base structPointer) (n int) { - s := structPointer_StructPointerSlice(base, p.field) - l := s.Len() - - n += l * sizeVarint(uint64((p.Tag<<3)|WireStartGroup)) - n += l * sizeVarint(uint64((p.Tag<<3)|WireEndGroup)) - for i := 0; i < l; i++ { - b := s.Index(i) - if structPointer_IsNil(b) { - return // return size up to this point - } - - n += size_struct(p.sprop, b) - } - return -} - -// Encode an extension map. -func (o *Buffer) enc_map(p *Properties, base structPointer) error { - v := *structPointer_ExtMap(base, p.field) - if err := encodeExtensionMap(v); err != nil { - return err - } - // Fast-path for common cases: zero or one extensions. - if len(v) <= 1 { - for _, e := range v { - o.buf = append(o.buf, e.enc...) - } - return nil - } - - // Sort keys to provide a deterministic encoding. - keys := make([]int, 0, len(v)) - for k := range v { - keys = append(keys, int(k)) - } - sort.Ints(keys) - - for _, k := range keys { - o.buf = append(o.buf, v[int32(k)].enc...) - } - return nil -} - -func size_map(p *Properties, base structPointer) int { - v := *structPointer_ExtMap(base, p.field) - return sizeExtensionMap(v) -} - -// Encode a map field. -func (o *Buffer) enc_new_map(p *Properties, base structPointer) error { - var state errorState // XXX: or do we need to plumb this through? - - /* - A map defined as - map map_field = N; - is encoded in the same way as - message MapFieldEntry { - key_type key = 1; - value_type value = 2; - } - repeated MapFieldEntry map_field = N; - */ - - v := structPointer_NewAt(base, p.field, p.mtype).Elem() // map[K]V - if v.Len() == 0 { - return nil - } - - keycopy, valcopy, keybase, valbase := mapEncodeScratch(p.mtype) - - enc := func() error { - if err := p.mkeyprop.enc(o, p.mkeyprop, keybase); err != nil { - return err - } - if err := p.mvalprop.enc(o, p.mvalprop, valbase); err != nil { - return err - } - return nil - } - - // Don't sort map keys. It is not required by the spec, and C++ doesn't do it. - for _, key := range v.MapKeys() { - val := v.MapIndex(key) - - // The only illegal map entry values are nil message pointers. - if val.Kind() == reflect.Ptr && val.IsNil() { - return errors.New("proto: map has nil element") - } - - keycopy.Set(key) - valcopy.Set(val) - - o.buf = append(o.buf, p.tagcode...) - if err := o.enc_len_thing(enc, &state); err != nil { - return err - } - } - return nil -} - -func size_new_map(p *Properties, base structPointer) int { - v := structPointer_NewAt(base, p.field, p.mtype).Elem() // map[K]V - - keycopy, valcopy, keybase, valbase := mapEncodeScratch(p.mtype) - - n := 0 - for _, key := range v.MapKeys() { - val := v.MapIndex(key) - keycopy.Set(key) - valcopy.Set(val) - - // Tag codes for key and val are the responsibility of the sub-sizer. - keysize := p.mkeyprop.size(p.mkeyprop, keybase) - valsize := p.mvalprop.size(p.mvalprop, valbase) - entry := keysize + valsize - // Add on tag code and length of map entry itself. - n += len(p.tagcode) + sizeVarint(uint64(entry)) + entry - } - return n -} - -// mapEncodeScratch returns a new reflect.Value matching the map's value type, -// and a structPointer suitable for passing to an encoder or sizer. -func mapEncodeScratch(mapType reflect.Type) (keycopy, valcopy reflect.Value, keybase, valbase structPointer) { - // Prepare addressable doubly-indirect placeholders for the key and value types. - // This is needed because the element-type encoders expect **T, but the map iteration produces T. - - keycopy = reflect.New(mapType.Key()).Elem() // addressable K - keyptr := reflect.New(reflect.PtrTo(keycopy.Type())).Elem() // addressable *K - keyptr.Set(keycopy.Addr()) // - keybase = toStructPointer(keyptr.Addr()) // **K - - // Value types are more varied and require special handling. - switch mapType.Elem().Kind() { - case reflect.Slice: - // []byte - var dummy []byte - valcopy = reflect.ValueOf(&dummy).Elem() // addressable []byte - valbase = toStructPointer(valcopy.Addr()) - case reflect.Ptr: - // message; the generated field type is map[K]*Msg (so V is *Msg), - // so we only need one level of indirection. - valcopy = reflect.New(mapType.Elem()).Elem() // addressable V - valbase = toStructPointer(valcopy.Addr()) - default: - // everything else - valcopy = reflect.New(mapType.Elem()).Elem() // addressable V - valptr := reflect.New(reflect.PtrTo(valcopy.Type())).Elem() // addressable *V - valptr.Set(valcopy.Addr()) // - valbase = toStructPointer(valptr.Addr()) // **V - } - return -} - -// Encode a struct. -func (o *Buffer) enc_struct(prop *StructProperties, base structPointer) error { - var state errorState - // Encode fields in tag order so that decoders may use optimizations - // that depend on the ordering. - // https://developers.google.com/protocol-buffers/docs/encoding#order - for _, i := range prop.order { - p := prop.Prop[i] - if p.enc != nil { - err := p.enc(o, p, base) - if err != nil { - if err == ErrNil { - if p.Required && state.err == nil { - state.err = &RequiredNotSetError{p.Name} - } - } else if err == errRepeatedHasNil { - // Give more context to nil values in repeated fields. - return errors.New("repeated field " + p.OrigName + " has nil element") - } else if !state.shouldContinue(err, p) { - return err - } - } - } - } - - // Do oneof fields. - if prop.oneofMarshaler != nil { - m := structPointer_Interface(base, prop.stype).(Message) - if err := prop.oneofMarshaler(m, o); err != nil { - return err - } - } - - // Add unrecognized fields at the end. - if prop.unrecField.IsValid() { - v := *structPointer_Bytes(base, prop.unrecField) - if len(v) > 0 { - o.buf = append(o.buf, v...) - } - } - - return state.err -} - -func size_struct(prop *StructProperties, base structPointer) (n int) { - for _, i := range prop.order { - p := prop.Prop[i] - if p.size != nil { - n += p.size(p, base) - } - } - - // Add unrecognized fields at the end. - if prop.unrecField.IsValid() { - v := *structPointer_Bytes(base, prop.unrecField) - n += len(v) - } - - // Factor in any oneof fields. - if prop.oneofSizer != nil { - m := structPointer_Interface(base, prop.stype).(Message) - n += prop.oneofSizer(m) - } - - return -} - -var zeroes [20]byte // longer than any conceivable sizeVarint - -// Encode a struct, preceded by its encoded length (as a varint). -func (o *Buffer) enc_len_struct(prop *StructProperties, base structPointer, state *errorState) error { - return o.enc_len_thing(func() error { return o.enc_struct(prop, base) }, state) -} - -// Encode something, preceded by its encoded length (as a varint). -func (o *Buffer) enc_len_thing(enc func() error, state *errorState) error { - iLen := len(o.buf) - o.buf = append(o.buf, 0, 0, 0, 0) // reserve four bytes for length - iMsg := len(o.buf) - err := enc() - if err != nil && !state.shouldContinue(err, nil) { - return err - } - lMsg := len(o.buf) - iMsg - lLen := sizeVarint(uint64(lMsg)) - switch x := lLen - (iMsg - iLen); { - case x > 0: // actual length is x bytes larger than the space we reserved - // Move msg x bytes right. - o.buf = append(o.buf, zeroes[:x]...) - copy(o.buf[iMsg+x:], o.buf[iMsg:iMsg+lMsg]) - case x < 0: // actual length is x bytes smaller than the space we reserved - // Move msg x bytes left. - copy(o.buf[iMsg+x:], o.buf[iMsg:iMsg+lMsg]) - o.buf = o.buf[:len(o.buf)+x] // x is negative - } - // Encode the length in the reserved space. - o.buf = o.buf[:iLen] - o.EncodeVarint(uint64(lMsg)) - o.buf = o.buf[:len(o.buf)+lMsg] - return state.err -} - -// errorState maintains the first error that occurs and updates that error -// with additional context. -type errorState struct { - err error -} - -// shouldContinue reports whether encoding should continue upon encountering the -// given error. If the error is RequiredNotSetError, shouldContinue returns true -// and, if this is the first appearance of that error, remembers it for future -// reporting. -// -// If prop is not nil, it may update any error with additional context about the -// field with the error. -func (s *errorState) shouldContinue(err error, prop *Properties) bool { - // Ignore unset required fields. - reqNotSet, ok := err.(*RequiredNotSetError) - if !ok { - return false - } - if s.err == nil { - if prop != nil { - err = &RequiredNotSetError{prop.Name + "." + reqNotSet.field} - } - s.err = err - } - return true -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/equal.go b/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/equal.go deleted file mode 100644 index f5db1def..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/equal.go +++ /dev/null @@ -1,276 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2011 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Protocol buffer comparison. - -package proto - -import ( - "bytes" - "log" - "reflect" - "strings" -) - -/* -Equal returns true iff protocol buffers a and b are equal. -The arguments must both be pointers to protocol buffer structs. - -Equality is defined in this way: - - Two messages are equal iff they are the same type, - corresponding fields are equal, unknown field sets - are equal, and extensions sets are equal. - - Two set scalar fields are equal iff their values are equal. - If the fields are of a floating-point type, remember that - NaN != x for all x, including NaN. If the message is defined - in a proto3 .proto file, fields are not "set"; specifically, - zero length proto3 "bytes" fields are equal (nil == {}). - - Two repeated fields are equal iff their lengths are the same, - and their corresponding elements are equal (a "bytes" field, - although represented by []byte, is not a repeated field) - - Two unset fields are equal. - - Two unknown field sets are equal if their current - encoded state is equal. - - Two extension sets are equal iff they have corresponding - elements that are pairwise equal. - - Every other combination of things are not equal. - -The return value is undefined if a and b are not protocol buffers. -*/ -func Equal(a, b Message) bool { - if a == nil || b == nil { - return a == b - } - v1, v2 := reflect.ValueOf(a), reflect.ValueOf(b) - if v1.Type() != v2.Type() { - return false - } - if v1.Kind() == reflect.Ptr { - if v1.IsNil() { - return v2.IsNil() - } - if v2.IsNil() { - return false - } - v1, v2 = v1.Elem(), v2.Elem() - } - if v1.Kind() != reflect.Struct { - return false - } - return equalStruct(v1, v2) -} - -// v1 and v2 are known to have the same type. -func equalStruct(v1, v2 reflect.Value) bool { - sprop := GetProperties(v1.Type()) - for i := 0; i < v1.NumField(); i++ { - f := v1.Type().Field(i) - if strings.HasPrefix(f.Name, "XXX_") { - continue - } - f1, f2 := v1.Field(i), v2.Field(i) - if f.Type.Kind() == reflect.Ptr { - if n1, n2 := f1.IsNil(), f2.IsNil(); n1 && n2 { - // both unset - continue - } else if n1 != n2 { - // set/unset mismatch - return false - } - b1, ok := f1.Interface().(raw) - if ok { - b2 := f2.Interface().(raw) - // RawMessage - if !bytes.Equal(b1.Bytes(), b2.Bytes()) { - return false - } - continue - } - f1, f2 = f1.Elem(), f2.Elem() - } - if !equalAny(f1, f2, sprop.Prop[i]) { - return false - } - } - - if em1 := v1.FieldByName("XXX_extensions"); em1.IsValid() { - em2 := v2.FieldByName("XXX_extensions") - if !equalExtensions(v1.Type(), em1.Interface().(map[int32]Extension), em2.Interface().(map[int32]Extension)) { - return false - } - } - - uf := v1.FieldByName("XXX_unrecognized") - if !uf.IsValid() { - return true - } - - u1 := uf.Bytes() - u2 := v2.FieldByName("XXX_unrecognized").Bytes() - if !bytes.Equal(u1, u2) { - return false - } - - return true -} - -// v1 and v2 are known to have the same type. -// prop may be nil. -func equalAny(v1, v2 reflect.Value, prop *Properties) bool { - if v1.Type() == protoMessageType { - m1, _ := v1.Interface().(Message) - m2, _ := v2.Interface().(Message) - return Equal(m1, m2) - } - switch v1.Kind() { - case reflect.Bool: - return v1.Bool() == v2.Bool() - case reflect.Float32, reflect.Float64: - return v1.Float() == v2.Float() - case reflect.Int32, reflect.Int64: - return v1.Int() == v2.Int() - case reflect.Interface: - // Probably a oneof field; compare the inner values. - n1, n2 := v1.IsNil(), v2.IsNil() - if n1 || n2 { - return n1 == n2 - } - e1, e2 := v1.Elem(), v2.Elem() - if e1.Type() != e2.Type() { - return false - } - return equalAny(e1, e2, nil) - case reflect.Map: - if v1.Len() != v2.Len() { - return false - } - for _, key := range v1.MapKeys() { - val2 := v2.MapIndex(key) - if !val2.IsValid() { - // This key was not found in the second map. - return false - } - if !equalAny(v1.MapIndex(key), val2, nil) { - return false - } - } - return true - case reflect.Ptr: - return equalAny(v1.Elem(), v2.Elem(), prop) - case reflect.Slice: - if v1.Type().Elem().Kind() == reflect.Uint8 { - // short circuit: []byte - - // Edge case: if this is in a proto3 message, a zero length - // bytes field is considered the zero value. - if prop != nil && prop.proto3 && v1.Len() == 0 && v2.Len() == 0 { - return true - } - if v1.IsNil() != v2.IsNil() { - return false - } - return bytes.Equal(v1.Interface().([]byte), v2.Interface().([]byte)) - } - - if v1.Len() != v2.Len() { - return false - } - for i := 0; i < v1.Len(); i++ { - if !equalAny(v1.Index(i), v2.Index(i), prop) { - return false - } - } - return true - case reflect.String: - return v1.Interface().(string) == v2.Interface().(string) - case reflect.Struct: - return equalStruct(v1, v2) - case reflect.Uint32, reflect.Uint64: - return v1.Uint() == v2.Uint() - } - - // unknown type, so not a protocol buffer - log.Printf("proto: don't know how to compare %v", v1) - return false -} - -// base is the struct type that the extensions are based on. -// em1 and em2 are extension maps. -func equalExtensions(base reflect.Type, em1, em2 map[int32]Extension) bool { - if len(em1) != len(em2) { - return false - } - - for extNum, e1 := range em1 { - e2, ok := em2[extNum] - if !ok { - return false - } - - m1, m2 := e1.value, e2.value - - if m1 != nil && m2 != nil { - // Both are unencoded. - if !equalAny(reflect.ValueOf(m1), reflect.ValueOf(m2), nil) { - return false - } - continue - } - - // At least one is encoded. To do a semantically correct comparison - // we need to unmarshal them first. - var desc *ExtensionDesc - if m := extensionMaps[base]; m != nil { - desc = m[extNum] - } - if desc == nil { - log.Printf("proto: don't know how to compare extension %d of %v", extNum, base) - continue - } - var err error - if m1 == nil { - m1, err = decodeExtension(e1.enc, desc) - } - if m2 == nil && err == nil { - m2, err = decodeExtension(e2.enc, desc) - } - if err != nil { - // The encoded form is invalid. - log.Printf("proto: badly encoded extension %d of %v: %v", extNum, base, err) - return false - } - if !equalAny(reflect.ValueOf(m1), reflect.ValueOf(m2), nil) { - return false - } - } - - return true -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/extensions.go b/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/extensions.go deleted file mode 100644 index 054f4f1d..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/extensions.go +++ /dev/null @@ -1,399 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto - -/* - * Types and routines for supporting protocol buffer extensions. - */ - -import ( - "errors" - "fmt" - "reflect" - "strconv" - "sync" -) - -// ErrMissingExtension is the error returned by GetExtension if the named extension is not in the message. -var ErrMissingExtension = errors.New("proto: missing extension") - -// ExtensionRange represents a range of message extensions for a protocol buffer. -// Used in code generated by the protocol compiler. -type ExtensionRange struct { - Start, End int32 // both inclusive -} - -// extendableProto is an interface implemented by any protocol buffer that may be extended. -type extendableProto interface { - Message - ExtensionRangeArray() []ExtensionRange - ExtensionMap() map[int32]Extension -} - -var extendableProtoType = reflect.TypeOf((*extendableProto)(nil)).Elem() - -// ExtensionDesc represents an extension specification. -// Used in generated code from the protocol compiler. -type ExtensionDesc struct { - ExtendedType Message // nil pointer to the type that is being extended - ExtensionType interface{} // nil pointer to the extension type - Field int32 // field number - Name string // fully-qualified name of extension, for text formatting - Tag string // protobuf tag style -} - -func (ed *ExtensionDesc) repeated() bool { - t := reflect.TypeOf(ed.ExtensionType) - return t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8 -} - -// Extension represents an extension in a message. -type Extension struct { - // When an extension is stored in a message using SetExtension - // only desc and value are set. When the message is marshaled - // enc will be set to the encoded form of the message. - // - // When a message is unmarshaled and contains extensions, each - // extension will have only enc set. When such an extension is - // accessed using GetExtension (or GetExtensions) desc and value - // will be set. - desc *ExtensionDesc - value interface{} - enc []byte -} - -// SetRawExtension is for testing only. -func SetRawExtension(base extendableProto, id int32, b []byte) { - base.ExtensionMap()[id] = Extension{enc: b} -} - -// isExtensionField returns true iff the given field number is in an extension range. -func isExtensionField(pb extendableProto, field int32) bool { - for _, er := range pb.ExtensionRangeArray() { - if er.Start <= field && field <= er.End { - return true - } - } - return false -} - -// checkExtensionTypes checks that the given extension is valid for pb. -func checkExtensionTypes(pb extendableProto, extension *ExtensionDesc) error { - // Check the extended type. - if a, b := reflect.TypeOf(pb), reflect.TypeOf(extension.ExtendedType); a != b { - return errors.New("proto: bad extended type; " + b.String() + " does not extend " + a.String()) - } - // Check the range. - if !isExtensionField(pb, extension.Field) { - return errors.New("proto: bad extension number; not in declared ranges") - } - return nil -} - -// extPropKey is sufficient to uniquely identify an extension. -type extPropKey struct { - base reflect.Type - field int32 -} - -var extProp = struct { - sync.RWMutex - m map[extPropKey]*Properties -}{ - m: make(map[extPropKey]*Properties), -} - -func extensionProperties(ed *ExtensionDesc) *Properties { - key := extPropKey{base: reflect.TypeOf(ed.ExtendedType), field: ed.Field} - - extProp.RLock() - if prop, ok := extProp.m[key]; ok { - extProp.RUnlock() - return prop - } - extProp.RUnlock() - - extProp.Lock() - defer extProp.Unlock() - // Check again. - if prop, ok := extProp.m[key]; ok { - return prop - } - - prop := new(Properties) - prop.Init(reflect.TypeOf(ed.ExtensionType), "unknown_name", ed.Tag, nil) - extProp.m[key] = prop - return prop -} - -// encodeExtensionMap encodes any unmarshaled (unencoded) extensions in m. -func encodeExtensionMap(m map[int32]Extension) error { - for k, e := range m { - if e.value == nil || e.desc == nil { - // Extension is only in its encoded form. - continue - } - - // We don't skip extensions that have an encoded form set, - // because the extension value may have been mutated after - // the last time this function was called. - - et := reflect.TypeOf(e.desc.ExtensionType) - props := extensionProperties(e.desc) - - p := NewBuffer(nil) - // If e.value has type T, the encoder expects a *struct{ X T }. - // Pass a *T with a zero field and hope it all works out. - x := reflect.New(et) - x.Elem().Set(reflect.ValueOf(e.value)) - if err := props.enc(p, props, toStructPointer(x)); err != nil { - return err - } - e.enc = p.buf - m[k] = e - } - return nil -} - -func sizeExtensionMap(m map[int32]Extension) (n int) { - for _, e := range m { - if e.value == nil || e.desc == nil { - // Extension is only in its encoded form. - n += len(e.enc) - continue - } - - // We don't skip extensions that have an encoded form set, - // because the extension value may have been mutated after - // the last time this function was called. - - et := reflect.TypeOf(e.desc.ExtensionType) - props := extensionProperties(e.desc) - - // If e.value has type T, the encoder expects a *struct{ X T }. - // Pass a *T with a zero field and hope it all works out. - x := reflect.New(et) - x.Elem().Set(reflect.ValueOf(e.value)) - n += props.size(props, toStructPointer(x)) - } - return -} - -// HasExtension returns whether the given extension is present in pb. -func HasExtension(pb extendableProto, extension *ExtensionDesc) bool { - // TODO: Check types, field numbers, etc.? - _, ok := pb.ExtensionMap()[extension.Field] - return ok -} - -// ClearExtension removes the given extension from pb. -func ClearExtension(pb extendableProto, extension *ExtensionDesc) { - // TODO: Check types, field numbers, etc.? - delete(pb.ExtensionMap(), extension.Field) -} - -// GetExtension parses and returns the given extension of pb. -// If the extension is not present and has no default value it returns ErrMissingExtension. -func GetExtension(pb extendableProto, extension *ExtensionDesc) (interface{}, error) { - if err := checkExtensionTypes(pb, extension); err != nil { - return nil, err - } - - emap := pb.ExtensionMap() - e, ok := emap[extension.Field] - if !ok { - // defaultExtensionValue returns the default value or - // ErrMissingExtension if there is no default. - return defaultExtensionValue(extension) - } - - if e.value != nil { - // Already decoded. Check the descriptor, though. - if e.desc != extension { - // This shouldn't happen. If it does, it means that - // GetExtension was called twice with two different - // descriptors with the same field number. - return nil, errors.New("proto: descriptor conflict") - } - return e.value, nil - } - - v, err := decodeExtension(e.enc, extension) - if err != nil { - return nil, err - } - - // Remember the decoded version and drop the encoded version. - // That way it is safe to mutate what we return. - e.value = v - e.desc = extension - e.enc = nil - emap[extension.Field] = e - return e.value, nil -} - -// defaultExtensionValue returns the default value for extension. -// If no default for an extension is defined ErrMissingExtension is returned. -func defaultExtensionValue(extension *ExtensionDesc) (interface{}, error) { - t := reflect.TypeOf(extension.ExtensionType) - props := extensionProperties(extension) - - sf, _, err := fieldDefault(t, props) - if err != nil { - return nil, err - } - - if sf == nil || sf.value == nil { - // There is no default value. - return nil, ErrMissingExtension - } - - if t.Kind() != reflect.Ptr { - // We do not need to return a Ptr, we can directly return sf.value. - return sf.value, nil - } - - // We need to return an interface{} that is a pointer to sf.value. - value := reflect.New(t).Elem() - value.Set(reflect.New(value.Type().Elem())) - if sf.kind == reflect.Int32 { - // We may have an int32 or an enum, but the underlying data is int32. - // Since we can't set an int32 into a non int32 reflect.value directly - // set it as a int32. - value.Elem().SetInt(int64(sf.value.(int32))) - } else { - value.Elem().Set(reflect.ValueOf(sf.value)) - } - return value.Interface(), nil -} - -// decodeExtension decodes an extension encoded in b. -func decodeExtension(b []byte, extension *ExtensionDesc) (interface{}, error) { - o := NewBuffer(b) - - t := reflect.TypeOf(extension.ExtensionType) - - props := extensionProperties(extension) - - // t is a pointer to a struct, pointer to basic type or a slice. - // Allocate a "field" to store the pointer/slice itself; the - // pointer/slice will be stored here. We pass - // the address of this field to props.dec. - // This passes a zero field and a *t and lets props.dec - // interpret it as a *struct{ x t }. - value := reflect.New(t).Elem() - - for { - // Discard wire type and field number varint. It isn't needed. - if _, err := o.DecodeVarint(); err != nil { - return nil, err - } - - if err := props.dec(o, props, toStructPointer(value.Addr())); err != nil { - return nil, err - } - - if o.index >= len(o.buf) { - break - } - } - return value.Interface(), nil -} - -// GetExtensions returns a slice of the extensions present in pb that are also listed in es. -// The returned slice has the same length as es; missing extensions will appear as nil elements. -func GetExtensions(pb Message, es []*ExtensionDesc) (extensions []interface{}, err error) { - epb, ok := pb.(extendableProto) - if !ok { - err = errors.New("proto: not an extendable proto") - return - } - extensions = make([]interface{}, len(es)) - for i, e := range es { - extensions[i], err = GetExtension(epb, e) - if err == ErrMissingExtension { - err = nil - } - if err != nil { - return - } - } - return -} - -// SetExtension sets the specified extension of pb to the specified value. -func SetExtension(pb extendableProto, extension *ExtensionDesc, value interface{}) error { - if err := checkExtensionTypes(pb, extension); err != nil { - return err - } - typ := reflect.TypeOf(extension.ExtensionType) - if typ != reflect.TypeOf(value) { - return errors.New("proto: bad extension value type") - } - // nil extension values need to be caught early, because the - // encoder can't distinguish an ErrNil due to a nil extension - // from an ErrNil due to a missing field. Extensions are - // always optional, so the encoder would just swallow the error - // and drop all the extensions from the encoded message. - if reflect.ValueOf(value).IsNil() { - return fmt.Errorf("proto: SetExtension called with nil value of type %T", value) - } - - pb.ExtensionMap()[extension.Field] = Extension{desc: extension, value: value} - return nil -} - -// A global registry of extensions. -// The generated code will register the generated descriptors by calling RegisterExtension. - -var extensionMaps = make(map[reflect.Type]map[int32]*ExtensionDesc) - -// RegisterExtension is called from the generated code. -func RegisterExtension(desc *ExtensionDesc) { - st := reflect.TypeOf(desc.ExtendedType).Elem() - m := extensionMaps[st] - if m == nil { - m = make(map[int32]*ExtensionDesc) - extensionMaps[st] = m - } - if _, ok := m[desc.Field]; ok { - panic("proto: duplicate extension registered: " + st.String() + " " + strconv.Itoa(int(desc.Field))) - } - m[desc.Field] = desc -} - -// RegisteredExtensions returns a map of the registered extensions of a -// protocol buffer struct, indexed by the extension number. -// The argument pb should be a nil pointer to the struct type. -func RegisteredExtensions(pb Message) map[int32]*ExtensionDesc { - return extensionMaps[reflect.TypeOf(pb).Elem()] -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/lib.go b/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/lib.go deleted file mode 100644 index 0de8f8df..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/lib.go +++ /dev/null @@ -1,894 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -/* -Package proto converts data structures to and from the wire format of -protocol buffers. It works in concert with the Go source code generated -for .proto files by the protocol compiler. - -A summary of the properties of the protocol buffer interface -for a protocol buffer variable v: - - - Names are turned from camel_case to CamelCase for export. - - There are no methods on v to set fields; just treat - them as structure fields. - - There are getters that return a field's value if set, - and return the field's default value if unset. - The getters work even if the receiver is a nil message. - - The zero value for a struct is its correct initialization state. - All desired fields must be set before marshaling. - - A Reset() method will restore a protobuf struct to its zero state. - - Non-repeated fields are pointers to the values; nil means unset. - That is, optional or required field int32 f becomes F *int32. - - Repeated fields are slices. - - Helper functions are available to aid the setting of fields. - msg.Foo = proto.String("hello") // set field - - Constants are defined to hold the default values of all fields that - have them. They have the form Default_StructName_FieldName. - Because the getter methods handle defaulted values, - direct use of these constants should be rare. - - Enums are given type names and maps from names to values. - Enum values are prefixed by the enclosing message's name, or by the - enum's type name if it is a top-level enum. Enum types have a String - method, and a Enum method to assist in message construction. - - Nested messages, groups and enums have type names prefixed with the name of - the surrounding message type. - - Extensions are given descriptor names that start with E_, - followed by an underscore-delimited list of the nested messages - that contain it (if any) followed by the CamelCased name of the - extension field itself. HasExtension, ClearExtension, GetExtension - and SetExtension are functions for manipulating extensions. - - Oneof field sets are given a single field in their message, - with distinguished wrapper types for each possible field value. - - Marshal and Unmarshal are functions to encode and decode the wire format. - -When the .proto file specifies `syntax="proto3"`, there are some differences: - - - Non-repeated fields of non-message type are values instead of pointers. - - Getters are only generated for message and oneof fields. - - Enum types do not get an Enum method. - -The simplest way to describe this is to see an example. -Given file test.proto, containing - - package example; - - enum FOO { X = 17; } - - message Test { - required string label = 1; - optional int32 type = 2 [default=77]; - repeated int64 reps = 3; - optional group OptionalGroup = 4 { - required string RequiredField = 5; - } - oneof union { - int32 number = 6; - string name = 7; - } - } - -The resulting file, test.pb.go, is: - - package example - - import proto "github.com/golang/protobuf/proto" - import math "math" - - type FOO int32 - const ( - FOO_X FOO = 17 - ) - var FOO_name = map[int32]string{ - 17: "X", - } - var FOO_value = map[string]int32{ - "X": 17, - } - - func (x FOO) Enum() *FOO { - p := new(FOO) - *p = x - return p - } - func (x FOO) String() string { - return proto.EnumName(FOO_name, int32(x)) - } - func (x *FOO) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(FOO_value, data) - if err != nil { - return err - } - *x = FOO(value) - return nil - } - - type Test struct { - Label *string `protobuf:"bytes,1,req,name=label" json:"label,omitempty"` - Type *int32 `protobuf:"varint,2,opt,name=type,def=77" json:"type,omitempty"` - Reps []int64 `protobuf:"varint,3,rep,name=reps" json:"reps,omitempty"` - Optionalgroup *Test_OptionalGroup `protobuf:"group,4,opt,name=OptionalGroup" json:"optionalgroup,omitempty"` - // Types that are valid to be assigned to Union: - // *Test_Number - // *Test_Name - Union isTest_Union `protobuf_oneof:"union"` - XXX_unrecognized []byte `json:"-"` - } - func (m *Test) Reset() { *m = Test{} } - func (m *Test) String() string { return proto.CompactTextString(m) } - func (*Test) ProtoMessage() {} - - type isTest_Union interface { - isTest_Union() - } - - type Test_Number struct { - Number int32 `protobuf:"varint,6,opt,name=number"` - } - type Test_Name struct { - Name string `protobuf:"bytes,7,opt,name=name"` - } - - func (*Test_Number) isTest_Union() {} - func (*Test_Name) isTest_Union() {} - - func (m *Test) GetUnion() isTest_Union { - if m != nil { - return m.Union - } - return nil - } - const Default_Test_Type int32 = 77 - - func (m *Test) GetLabel() string { - if m != nil && m.Label != nil { - return *m.Label - } - return "" - } - - func (m *Test) GetType() int32 { - if m != nil && m.Type != nil { - return *m.Type - } - return Default_Test_Type - } - - func (m *Test) GetOptionalgroup() *Test_OptionalGroup { - if m != nil { - return m.Optionalgroup - } - return nil - } - - type Test_OptionalGroup struct { - RequiredField *string `protobuf:"bytes,5,req" json:"RequiredField,omitempty"` - } - func (m *Test_OptionalGroup) Reset() { *m = Test_OptionalGroup{} } - func (m *Test_OptionalGroup) String() string { return proto.CompactTextString(m) } - - func (m *Test_OptionalGroup) GetRequiredField() string { - if m != nil && m.RequiredField != nil { - return *m.RequiredField - } - return "" - } - - func (m *Test) GetNumber() int32 { - if x, ok := m.GetUnion().(*Test_Number); ok { - return x.Number - } - return 0 - } - - func (m *Test) GetName() string { - if x, ok := m.GetUnion().(*Test_Name); ok { - return x.Name - } - return "" - } - - func init() { - proto.RegisterEnum("example.FOO", FOO_name, FOO_value) - } - -To create and play with a Test object: - - package main - - import ( - "log" - - "github.com/golang/protobuf/proto" - pb "./example.pb" - ) - - func main() { - test := &pb.Test{ - Label: proto.String("hello"), - Type: proto.Int32(17), - Reps: []int64{1, 2, 3}, - Optionalgroup: &pb.Test_OptionalGroup{ - RequiredField: proto.String("good bye"), - }, - Union: &pb.Test_Name{"fred"}, - } - data, err := proto.Marshal(test) - if err != nil { - log.Fatal("marshaling error: ", err) - } - newTest := &pb.Test{} - err = proto.Unmarshal(data, newTest) - if err != nil { - log.Fatal("unmarshaling error: ", err) - } - // Now test and newTest contain the same data. - if test.GetLabel() != newTest.GetLabel() { - log.Fatalf("data mismatch %q != %q", test.GetLabel(), newTest.GetLabel()) - } - // Use a type switch to determine which oneof was set. - switch u := test.Union.(type) { - case *pb.Test_Number: // u.Number contains the number. - case *pb.Test_Name: // u.Name contains the string. - } - // etc. - } -*/ -package proto - -import ( - "encoding/json" - "fmt" - "log" - "reflect" - "sort" - "strconv" - "sync" -) - -// Message is implemented by generated protocol buffer messages. -type Message interface { - Reset() - String() string - ProtoMessage() -} - -// Stats records allocation details about the protocol buffer encoders -// and decoders. Useful for tuning the library itself. -type Stats struct { - Emalloc uint64 // mallocs in encode - Dmalloc uint64 // mallocs in decode - Encode uint64 // number of encodes - Decode uint64 // number of decodes - Chit uint64 // number of cache hits - Cmiss uint64 // number of cache misses - Size uint64 // number of sizes -} - -// Set to true to enable stats collection. -const collectStats = false - -var stats Stats - -// GetStats returns a copy of the global Stats structure. -func GetStats() Stats { return stats } - -// A Buffer is a buffer manager for marshaling and unmarshaling -// protocol buffers. It may be reused between invocations to -// reduce memory usage. It is not necessary to use a Buffer; -// the global functions Marshal and Unmarshal create a -// temporary Buffer and are fine for most applications. -type Buffer struct { - buf []byte // encode/decode byte stream - index int // write point - - // pools of basic types to amortize allocation. - bools []bool - uint32s []uint32 - uint64s []uint64 - - // extra pools, only used with pointer_reflect.go - int32s []int32 - int64s []int64 - float32s []float32 - float64s []float64 -} - -// NewBuffer allocates a new Buffer and initializes its internal data to -// the contents of the argument slice. -func NewBuffer(e []byte) *Buffer { - return &Buffer{buf: e} -} - -// Reset resets the Buffer, ready for marshaling a new protocol buffer. -func (p *Buffer) Reset() { - p.buf = p.buf[0:0] // for reading/writing - p.index = 0 // for reading -} - -// SetBuf replaces the internal buffer with the slice, -// ready for unmarshaling the contents of the slice. -func (p *Buffer) SetBuf(s []byte) { - p.buf = s - p.index = 0 -} - -// Bytes returns the contents of the Buffer. -func (p *Buffer) Bytes() []byte { return p.buf } - -/* - * Helper routines for simplifying the creation of optional fields of basic type. - */ - -// Bool is a helper routine that allocates a new bool value -// to store v and returns a pointer to it. -func Bool(v bool) *bool { - return &v -} - -// Int32 is a helper routine that allocates a new int32 value -// to store v and returns a pointer to it. -func Int32(v int32) *int32 { - return &v -} - -// Int is a helper routine that allocates a new int32 value -// to store v and returns a pointer to it, but unlike Int32 -// its argument value is an int. -func Int(v int) *int32 { - p := new(int32) - *p = int32(v) - return p -} - -// Int64 is a helper routine that allocates a new int64 value -// to store v and returns a pointer to it. -func Int64(v int64) *int64 { - return &v -} - -// Float32 is a helper routine that allocates a new float32 value -// to store v and returns a pointer to it. -func Float32(v float32) *float32 { - return &v -} - -// Float64 is a helper routine that allocates a new float64 value -// to store v and returns a pointer to it. -func Float64(v float64) *float64 { - return &v -} - -// Uint32 is a helper routine that allocates a new uint32 value -// to store v and returns a pointer to it. -func Uint32(v uint32) *uint32 { - return &v -} - -// Uint64 is a helper routine that allocates a new uint64 value -// to store v and returns a pointer to it. -func Uint64(v uint64) *uint64 { - return &v -} - -// String is a helper routine that allocates a new string value -// to store v and returns a pointer to it. -func String(v string) *string { - return &v -} - -// EnumName is a helper function to simplify printing protocol buffer enums -// by name. Given an enum map and a value, it returns a useful string. -func EnumName(m map[int32]string, v int32) string { - s, ok := m[v] - if ok { - return s - } - return strconv.Itoa(int(v)) -} - -// UnmarshalJSONEnum is a helper function to simplify recovering enum int values -// from their JSON-encoded representation. Given a map from the enum's symbolic -// names to its int values, and a byte buffer containing the JSON-encoded -// value, it returns an int32 that can be cast to the enum type by the caller. -// -// The function can deal with both JSON representations, numeric and symbolic. -func UnmarshalJSONEnum(m map[string]int32, data []byte, enumName string) (int32, error) { - if data[0] == '"' { - // New style: enums are strings. - var repr string - if err := json.Unmarshal(data, &repr); err != nil { - return -1, err - } - val, ok := m[repr] - if !ok { - return 0, fmt.Errorf("unrecognized enum %s value %q", enumName, repr) - } - return val, nil - } - // Old style: enums are ints. - var val int32 - if err := json.Unmarshal(data, &val); err != nil { - return 0, fmt.Errorf("cannot unmarshal %#q into enum %s", data, enumName) - } - return val, nil -} - -// DebugPrint dumps the encoded data in b in a debugging format with a header -// including the string s. Used in testing but made available for general debugging. -func (p *Buffer) DebugPrint(s string, b []byte) { - var u uint64 - - obuf := p.buf - index := p.index - p.buf = b - p.index = 0 - depth := 0 - - fmt.Printf("\n--- %s ---\n", s) - -out: - for { - for i := 0; i < depth; i++ { - fmt.Print(" ") - } - - index := p.index - if index == len(p.buf) { - break - } - - op, err := p.DecodeVarint() - if err != nil { - fmt.Printf("%3d: fetching op err %v\n", index, err) - break out - } - tag := op >> 3 - wire := op & 7 - - switch wire { - default: - fmt.Printf("%3d: t=%3d unknown wire=%d\n", - index, tag, wire) - break out - - case WireBytes: - var r []byte - - r, err = p.DecodeRawBytes(false) - if err != nil { - break out - } - fmt.Printf("%3d: t=%3d bytes [%d]", index, tag, len(r)) - if len(r) <= 6 { - for i := 0; i < len(r); i++ { - fmt.Printf(" %.2x", r[i]) - } - } else { - for i := 0; i < 3; i++ { - fmt.Printf(" %.2x", r[i]) - } - fmt.Printf(" ..") - for i := len(r) - 3; i < len(r); i++ { - fmt.Printf(" %.2x", r[i]) - } - } - fmt.Printf("\n") - - case WireFixed32: - u, err = p.DecodeFixed32() - if err != nil { - fmt.Printf("%3d: t=%3d fix32 err %v\n", index, tag, err) - break out - } - fmt.Printf("%3d: t=%3d fix32 %d\n", index, tag, u) - - case WireFixed64: - u, err = p.DecodeFixed64() - if err != nil { - fmt.Printf("%3d: t=%3d fix64 err %v\n", index, tag, err) - break out - } - fmt.Printf("%3d: t=%3d fix64 %d\n", index, tag, u) - - case WireVarint: - u, err = p.DecodeVarint() - if err != nil { - fmt.Printf("%3d: t=%3d varint err %v\n", index, tag, err) - break out - } - fmt.Printf("%3d: t=%3d varint %d\n", index, tag, u) - - case WireStartGroup: - fmt.Printf("%3d: t=%3d start\n", index, tag) - depth++ - - case WireEndGroup: - depth-- - fmt.Printf("%3d: t=%3d end\n", index, tag) - } - } - - if depth != 0 { - fmt.Printf("%3d: start-end not balanced %d\n", p.index, depth) - } - fmt.Printf("\n") - - p.buf = obuf - p.index = index -} - -// SetDefaults sets unset protocol buffer fields to their default values. -// It only modifies fields that are both unset and have defined defaults. -// It recursively sets default values in any non-nil sub-messages. -func SetDefaults(pb Message) { - setDefaults(reflect.ValueOf(pb), true, false) -} - -// v is a pointer to a struct. -func setDefaults(v reflect.Value, recur, zeros bool) { - v = v.Elem() - - defaultMu.RLock() - dm, ok := defaults[v.Type()] - defaultMu.RUnlock() - if !ok { - dm = buildDefaultMessage(v.Type()) - defaultMu.Lock() - defaults[v.Type()] = dm - defaultMu.Unlock() - } - - for _, sf := range dm.scalars { - f := v.Field(sf.index) - if !f.IsNil() { - // field already set - continue - } - dv := sf.value - if dv == nil && !zeros { - // no explicit default, and don't want to set zeros - continue - } - fptr := f.Addr().Interface() // **T - // TODO: Consider batching the allocations we do here. - switch sf.kind { - case reflect.Bool: - b := new(bool) - if dv != nil { - *b = dv.(bool) - } - *(fptr.(**bool)) = b - case reflect.Float32: - f := new(float32) - if dv != nil { - *f = dv.(float32) - } - *(fptr.(**float32)) = f - case reflect.Float64: - f := new(float64) - if dv != nil { - *f = dv.(float64) - } - *(fptr.(**float64)) = f - case reflect.Int32: - // might be an enum - if ft := f.Type(); ft != int32PtrType { - // enum - f.Set(reflect.New(ft.Elem())) - if dv != nil { - f.Elem().SetInt(int64(dv.(int32))) - } - } else { - // int32 field - i := new(int32) - if dv != nil { - *i = dv.(int32) - } - *(fptr.(**int32)) = i - } - case reflect.Int64: - i := new(int64) - if dv != nil { - *i = dv.(int64) - } - *(fptr.(**int64)) = i - case reflect.String: - s := new(string) - if dv != nil { - *s = dv.(string) - } - *(fptr.(**string)) = s - case reflect.Uint8: - // exceptional case: []byte - var b []byte - if dv != nil { - db := dv.([]byte) - b = make([]byte, len(db)) - copy(b, db) - } else { - b = []byte{} - } - *(fptr.(*[]byte)) = b - case reflect.Uint32: - u := new(uint32) - if dv != nil { - *u = dv.(uint32) - } - *(fptr.(**uint32)) = u - case reflect.Uint64: - u := new(uint64) - if dv != nil { - *u = dv.(uint64) - } - *(fptr.(**uint64)) = u - default: - log.Printf("proto: can't set default for field %v (sf.kind=%v)", f, sf.kind) - } - } - - for _, ni := range dm.nested { - f := v.Field(ni) - // f is *T or []*T or map[T]*T - switch f.Kind() { - case reflect.Ptr: - if f.IsNil() { - continue - } - setDefaults(f, recur, zeros) - - case reflect.Slice: - for i := 0; i < f.Len(); i++ { - e := f.Index(i) - if e.IsNil() { - continue - } - setDefaults(e, recur, zeros) - } - - case reflect.Map: - for _, k := range f.MapKeys() { - e := f.MapIndex(k) - if e.IsNil() { - continue - } - setDefaults(e, recur, zeros) - } - } - } -} - -var ( - // defaults maps a protocol buffer struct type to a slice of the fields, - // with its scalar fields set to their proto-declared non-zero default values. - defaultMu sync.RWMutex - defaults = make(map[reflect.Type]defaultMessage) - - int32PtrType = reflect.TypeOf((*int32)(nil)) -) - -// defaultMessage represents information about the default values of a message. -type defaultMessage struct { - scalars []scalarField - nested []int // struct field index of nested messages -} - -type scalarField struct { - index int // struct field index - kind reflect.Kind // element type (the T in *T or []T) - value interface{} // the proto-declared default value, or nil -} - -// t is a struct type. -func buildDefaultMessage(t reflect.Type) (dm defaultMessage) { - sprop := GetProperties(t) - for _, prop := range sprop.Prop { - fi, ok := sprop.decoderTags.get(prop.Tag) - if !ok { - // XXX_unrecognized - continue - } - ft := t.Field(fi).Type - - sf, nested, err := fieldDefault(ft, prop) - switch { - case err != nil: - log.Print(err) - case nested: - dm.nested = append(dm.nested, fi) - case sf != nil: - sf.index = fi - dm.scalars = append(dm.scalars, *sf) - } - } - - return dm -} - -// fieldDefault returns the scalarField for field type ft. -// sf will be nil if the field can not have a default. -// nestedMessage will be true if this is a nested message. -// Note that sf.index is not set on return. -func fieldDefault(ft reflect.Type, prop *Properties) (sf *scalarField, nestedMessage bool, err error) { - var canHaveDefault bool - switch ft.Kind() { - case reflect.Ptr: - if ft.Elem().Kind() == reflect.Struct { - nestedMessage = true - } else { - canHaveDefault = true // proto2 scalar field - } - - case reflect.Slice: - switch ft.Elem().Kind() { - case reflect.Ptr: - nestedMessage = true // repeated message - case reflect.Uint8: - canHaveDefault = true // bytes field - } - - case reflect.Map: - if ft.Elem().Kind() == reflect.Ptr { - nestedMessage = true // map with message values - } - } - - if !canHaveDefault { - if nestedMessage { - return nil, true, nil - } - return nil, false, nil - } - - // We now know that ft is a pointer or slice. - sf = &scalarField{kind: ft.Elem().Kind()} - - // scalar fields without defaults - if !prop.HasDefault { - return sf, false, nil - } - - // a scalar field: either *T or []byte - switch ft.Elem().Kind() { - case reflect.Bool: - x, err := strconv.ParseBool(prop.Default) - if err != nil { - return nil, false, fmt.Errorf("proto: bad default bool %q: %v", prop.Default, err) - } - sf.value = x - case reflect.Float32: - x, err := strconv.ParseFloat(prop.Default, 32) - if err != nil { - return nil, false, fmt.Errorf("proto: bad default float32 %q: %v", prop.Default, err) - } - sf.value = float32(x) - case reflect.Float64: - x, err := strconv.ParseFloat(prop.Default, 64) - if err != nil { - return nil, false, fmt.Errorf("proto: bad default float64 %q: %v", prop.Default, err) - } - sf.value = x - case reflect.Int32: - x, err := strconv.ParseInt(prop.Default, 10, 32) - if err != nil { - return nil, false, fmt.Errorf("proto: bad default int32 %q: %v", prop.Default, err) - } - sf.value = int32(x) - case reflect.Int64: - x, err := strconv.ParseInt(prop.Default, 10, 64) - if err != nil { - return nil, false, fmt.Errorf("proto: bad default int64 %q: %v", prop.Default, err) - } - sf.value = x - case reflect.String: - sf.value = prop.Default - case reflect.Uint8: - // []byte (not *uint8) - sf.value = []byte(prop.Default) - case reflect.Uint32: - x, err := strconv.ParseUint(prop.Default, 10, 32) - if err != nil { - return nil, false, fmt.Errorf("proto: bad default uint32 %q: %v", prop.Default, err) - } - sf.value = uint32(x) - case reflect.Uint64: - x, err := strconv.ParseUint(prop.Default, 10, 64) - if err != nil { - return nil, false, fmt.Errorf("proto: bad default uint64 %q: %v", prop.Default, err) - } - sf.value = x - default: - return nil, false, fmt.Errorf("proto: unhandled def kind %v", ft.Elem().Kind()) - } - - return sf, false, nil -} - -// Map fields may have key types of non-float scalars, strings and enums. -// The easiest way to sort them in some deterministic order is to use fmt. -// If this turns out to be inefficient we can always consider other options, -// such as doing a Schwartzian transform. - -func mapKeys(vs []reflect.Value) sort.Interface { - s := mapKeySorter{ - vs: vs, - // default Less function: textual comparison - less: func(a, b reflect.Value) bool { - return fmt.Sprint(a.Interface()) < fmt.Sprint(b.Interface()) - }, - } - - // Type specialization per https://developers.google.com/protocol-buffers/docs/proto#maps; - // numeric keys are sorted numerically. - if len(vs) == 0 { - return s - } - switch vs[0].Kind() { - case reflect.Int32, reflect.Int64: - s.less = func(a, b reflect.Value) bool { return a.Int() < b.Int() } - case reflect.Uint32, reflect.Uint64: - s.less = func(a, b reflect.Value) bool { return a.Uint() < b.Uint() } - } - - return s -} - -type mapKeySorter struct { - vs []reflect.Value - less func(a, b reflect.Value) bool -} - -func (s mapKeySorter) Len() int { return len(s.vs) } -func (s mapKeySorter) Swap(i, j int) { s.vs[i], s.vs[j] = s.vs[j], s.vs[i] } -func (s mapKeySorter) Less(i, j int) bool { - return s.less(s.vs[i], s.vs[j]) -} - -// isProto3Zero reports whether v is a zero proto3 value. -func isProto3Zero(v reflect.Value) bool { - switch v.Kind() { - case reflect.Bool: - return !v.Bool() - case reflect.Int32, reflect.Int64: - return v.Int() == 0 - case reflect.Uint32, reflect.Uint64: - return v.Uint() == 0 - case reflect.Float32, reflect.Float64: - return v.Float() == 0 - case reflect.String: - return v.String() == "" - } - return false -} - -// ProtoPackageIsVersion1 is referenced from generated protocol buffer files -// to assert that that code is compatible with this version of the proto package. -const ProtoPackageIsVersion1 = true diff --git a/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/message_set.go b/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/message_set.go deleted file mode 100644 index e25e01e6..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/message_set.go +++ /dev/null @@ -1,280 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto - -/* - * Support for message sets. - */ - -import ( - "bytes" - "encoding/json" - "errors" - "fmt" - "reflect" - "sort" -) - -// errNoMessageTypeID occurs when a protocol buffer does not have a message type ID. -// A message type ID is required for storing a protocol buffer in a message set. -var errNoMessageTypeID = errors.New("proto does not have a message type ID") - -// The first two types (_MessageSet_Item and messageSet) -// model what the protocol compiler produces for the following protocol message: -// message MessageSet { -// repeated group Item = 1 { -// required int32 type_id = 2; -// required string message = 3; -// }; -// } -// That is the MessageSet wire format. We can't use a proto to generate these -// because that would introduce a circular dependency between it and this package. - -type _MessageSet_Item struct { - TypeId *int32 `protobuf:"varint,2,req,name=type_id"` - Message []byte `protobuf:"bytes,3,req,name=message"` -} - -type messageSet struct { - Item []*_MessageSet_Item `protobuf:"group,1,rep"` - XXX_unrecognized []byte - // TODO: caching? -} - -// Make sure messageSet is a Message. -var _ Message = (*messageSet)(nil) - -// messageTypeIder is an interface satisfied by a protocol buffer type -// that may be stored in a MessageSet. -type messageTypeIder interface { - MessageTypeId() int32 -} - -func (ms *messageSet) find(pb Message) *_MessageSet_Item { - mti, ok := pb.(messageTypeIder) - if !ok { - return nil - } - id := mti.MessageTypeId() - for _, item := range ms.Item { - if *item.TypeId == id { - return item - } - } - return nil -} - -func (ms *messageSet) Has(pb Message) bool { - if ms.find(pb) != nil { - return true - } - return false -} - -func (ms *messageSet) Unmarshal(pb Message) error { - if item := ms.find(pb); item != nil { - return Unmarshal(item.Message, pb) - } - if _, ok := pb.(messageTypeIder); !ok { - return errNoMessageTypeID - } - return nil // TODO: return error instead? -} - -func (ms *messageSet) Marshal(pb Message) error { - msg, err := Marshal(pb) - if err != nil { - return err - } - if item := ms.find(pb); item != nil { - // reuse existing item - item.Message = msg - return nil - } - - mti, ok := pb.(messageTypeIder) - if !ok { - return errNoMessageTypeID - } - - mtid := mti.MessageTypeId() - ms.Item = append(ms.Item, &_MessageSet_Item{ - TypeId: &mtid, - Message: msg, - }) - return nil -} - -func (ms *messageSet) Reset() { *ms = messageSet{} } -func (ms *messageSet) String() string { return CompactTextString(ms) } -func (*messageSet) ProtoMessage() {} - -// Support for the message_set_wire_format message option. - -func skipVarint(buf []byte) []byte { - i := 0 - for ; buf[i]&0x80 != 0; i++ { - } - return buf[i+1:] -} - -// MarshalMessageSet encodes the extension map represented by m in the message set wire format. -// It is called by generated Marshal methods on protocol buffer messages with the message_set_wire_format option. -func MarshalMessageSet(m map[int32]Extension) ([]byte, error) { - if err := encodeExtensionMap(m); err != nil { - return nil, err - } - - // Sort extension IDs to provide a deterministic encoding. - // See also enc_map in encode.go. - ids := make([]int, 0, len(m)) - for id := range m { - ids = append(ids, int(id)) - } - sort.Ints(ids) - - ms := &messageSet{Item: make([]*_MessageSet_Item, 0, len(m))} - for _, id := range ids { - e := m[int32(id)] - // Remove the wire type and field number varint, as well as the length varint. - msg := skipVarint(skipVarint(e.enc)) - - ms.Item = append(ms.Item, &_MessageSet_Item{ - TypeId: Int32(int32(id)), - Message: msg, - }) - } - return Marshal(ms) -} - -// UnmarshalMessageSet decodes the extension map encoded in buf in the message set wire format. -// It is called by generated Unmarshal methods on protocol buffer messages with the message_set_wire_format option. -func UnmarshalMessageSet(buf []byte, m map[int32]Extension) error { - ms := new(messageSet) - if err := Unmarshal(buf, ms); err != nil { - return err - } - for _, item := range ms.Item { - id := *item.TypeId - msg := item.Message - - // Restore wire type and field number varint, plus length varint. - // Be careful to preserve duplicate items. - b := EncodeVarint(uint64(id)<<3 | WireBytes) - if ext, ok := m[id]; ok { - // Existing data; rip off the tag and length varint - // so we join the new data correctly. - // We can assume that ext.enc is set because we are unmarshaling. - o := ext.enc[len(b):] // skip wire type and field number - _, n := DecodeVarint(o) // calculate length of length varint - o = o[n:] // skip length varint - msg = append(o, msg...) // join old data and new data - } - b = append(b, EncodeVarint(uint64(len(msg)))...) - b = append(b, msg...) - - m[id] = Extension{enc: b} - } - return nil -} - -// MarshalMessageSetJSON encodes the extension map represented by m in JSON format. -// It is called by generated MarshalJSON methods on protocol buffer messages with the message_set_wire_format option. -func MarshalMessageSetJSON(m map[int32]Extension) ([]byte, error) { - var b bytes.Buffer - b.WriteByte('{') - - // Process the map in key order for deterministic output. - ids := make([]int32, 0, len(m)) - for id := range m { - ids = append(ids, id) - } - sort.Sort(int32Slice(ids)) // int32Slice defined in text.go - - for i, id := range ids { - ext := m[id] - if i > 0 { - b.WriteByte(',') - } - - msd, ok := messageSetMap[id] - if !ok { - // Unknown type; we can't render it, so skip it. - continue - } - fmt.Fprintf(&b, `"[%s]":`, msd.name) - - x := ext.value - if x == nil { - x = reflect.New(msd.t.Elem()).Interface() - if err := Unmarshal(ext.enc, x.(Message)); err != nil { - return nil, err - } - } - d, err := json.Marshal(x) - if err != nil { - return nil, err - } - b.Write(d) - } - b.WriteByte('}') - return b.Bytes(), nil -} - -// UnmarshalMessageSetJSON decodes the extension map encoded in buf in JSON format. -// It is called by generated UnmarshalJSON methods on protocol buffer messages with the message_set_wire_format option. -func UnmarshalMessageSetJSON(buf []byte, m map[int32]Extension) error { - // Common-case fast path. - if len(buf) == 0 || bytes.Equal(buf, []byte("{}")) { - return nil - } - - // This is fairly tricky, and it's not clear that it is needed. - return errors.New("TODO: UnmarshalMessageSetJSON not yet implemented") -} - -// A global registry of types that can be used in a MessageSet. - -var messageSetMap = make(map[int32]messageSetDesc) - -type messageSetDesc struct { - t reflect.Type // pointer to struct - name string -} - -// RegisterMessageSetType is called from the generated code. -func RegisterMessageSetType(m Message, fieldNum int32, name string) { - messageSetMap[fieldNum] = messageSetDesc{ - t: reflect.TypeOf(m), - name: name, - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/pointer_reflect.go b/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/pointer_reflect.go deleted file mode 100644 index 749919d2..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/pointer_reflect.go +++ /dev/null @@ -1,479 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2012 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// +build appengine - -// This file contains an implementation of proto field accesses using package reflect. -// It is slower than the code in pointer_unsafe.go but it avoids package unsafe and can -// be used on App Engine. - -package proto - -import ( - "math" - "reflect" -) - -// A structPointer is a pointer to a struct. -type structPointer struct { - v reflect.Value -} - -// toStructPointer returns a structPointer equivalent to the given reflect value. -// The reflect value must itself be a pointer to a struct. -func toStructPointer(v reflect.Value) structPointer { - return structPointer{v} -} - -// IsNil reports whether p is nil. -func structPointer_IsNil(p structPointer) bool { - return p.v.IsNil() -} - -// Interface returns the struct pointer as an interface value. -func structPointer_Interface(p structPointer, _ reflect.Type) interface{} { - return p.v.Interface() -} - -// A field identifies a field in a struct, accessible from a structPointer. -// In this implementation, a field is identified by the sequence of field indices -// passed to reflect's FieldByIndex. -type field []int - -// toField returns a field equivalent to the given reflect field. -func toField(f *reflect.StructField) field { - return f.Index -} - -// invalidField is an invalid field identifier. -var invalidField = field(nil) - -// IsValid reports whether the field identifier is valid. -func (f field) IsValid() bool { return f != nil } - -// field returns the given field in the struct as a reflect value. -func structPointer_field(p structPointer, f field) reflect.Value { - // Special case: an extension map entry with a value of type T - // passes a *T to the struct-handling code with a zero field, - // expecting that it will be treated as equivalent to *struct{ X T }, - // which has the same memory layout. We have to handle that case - // specially, because reflect will panic if we call FieldByIndex on a - // non-struct. - if f == nil { - return p.v.Elem() - } - - return p.v.Elem().FieldByIndex(f) -} - -// ifield returns the given field in the struct as an interface value. -func structPointer_ifield(p structPointer, f field) interface{} { - return structPointer_field(p, f).Addr().Interface() -} - -// Bytes returns the address of a []byte field in the struct. -func structPointer_Bytes(p structPointer, f field) *[]byte { - return structPointer_ifield(p, f).(*[]byte) -} - -// BytesSlice returns the address of a [][]byte field in the struct. -func structPointer_BytesSlice(p structPointer, f field) *[][]byte { - return structPointer_ifield(p, f).(*[][]byte) -} - -// Bool returns the address of a *bool field in the struct. -func structPointer_Bool(p structPointer, f field) **bool { - return structPointer_ifield(p, f).(**bool) -} - -// BoolVal returns the address of a bool field in the struct. -func structPointer_BoolVal(p structPointer, f field) *bool { - return structPointer_ifield(p, f).(*bool) -} - -// BoolSlice returns the address of a []bool field in the struct. -func structPointer_BoolSlice(p structPointer, f field) *[]bool { - return structPointer_ifield(p, f).(*[]bool) -} - -// String returns the address of a *string field in the struct. -func structPointer_String(p structPointer, f field) **string { - return structPointer_ifield(p, f).(**string) -} - -// StringVal returns the address of a string field in the struct. -func structPointer_StringVal(p structPointer, f field) *string { - return structPointer_ifield(p, f).(*string) -} - -// StringSlice returns the address of a []string field in the struct. -func structPointer_StringSlice(p structPointer, f field) *[]string { - return structPointer_ifield(p, f).(*[]string) -} - -// ExtMap returns the address of an extension map field in the struct. -func structPointer_ExtMap(p structPointer, f field) *map[int32]Extension { - return structPointer_ifield(p, f).(*map[int32]Extension) -} - -// NewAt returns the reflect.Value for a pointer to a field in the struct. -func structPointer_NewAt(p structPointer, f field, typ reflect.Type) reflect.Value { - return structPointer_field(p, f).Addr() -} - -// SetStructPointer writes a *struct field in the struct. -func structPointer_SetStructPointer(p structPointer, f field, q structPointer) { - structPointer_field(p, f).Set(q.v) -} - -// GetStructPointer reads a *struct field in the struct. -func structPointer_GetStructPointer(p structPointer, f field) structPointer { - return structPointer{structPointer_field(p, f)} -} - -// StructPointerSlice the address of a []*struct field in the struct. -func structPointer_StructPointerSlice(p structPointer, f field) structPointerSlice { - return structPointerSlice{structPointer_field(p, f)} -} - -// A structPointerSlice represents the address of a slice of pointers to structs -// (themselves messages or groups). That is, v.Type() is *[]*struct{...}. -type structPointerSlice struct { - v reflect.Value -} - -func (p structPointerSlice) Len() int { return p.v.Len() } -func (p structPointerSlice) Index(i int) structPointer { return structPointer{p.v.Index(i)} } -func (p structPointerSlice) Append(q structPointer) { - p.v.Set(reflect.Append(p.v, q.v)) -} - -var ( - int32Type = reflect.TypeOf(int32(0)) - uint32Type = reflect.TypeOf(uint32(0)) - float32Type = reflect.TypeOf(float32(0)) - int64Type = reflect.TypeOf(int64(0)) - uint64Type = reflect.TypeOf(uint64(0)) - float64Type = reflect.TypeOf(float64(0)) -) - -// A word32 represents a field of type *int32, *uint32, *float32, or *enum. -// That is, v.Type() is *int32, *uint32, *float32, or *enum and v is assignable. -type word32 struct { - v reflect.Value -} - -// IsNil reports whether p is nil. -func word32_IsNil(p word32) bool { - return p.v.IsNil() -} - -// Set sets p to point at a newly allocated word with bits set to x. -func word32_Set(p word32, o *Buffer, x uint32) { - t := p.v.Type().Elem() - switch t { - case int32Type: - if len(o.int32s) == 0 { - o.int32s = make([]int32, uint32PoolSize) - } - o.int32s[0] = int32(x) - p.v.Set(reflect.ValueOf(&o.int32s[0])) - o.int32s = o.int32s[1:] - return - case uint32Type: - if len(o.uint32s) == 0 { - o.uint32s = make([]uint32, uint32PoolSize) - } - o.uint32s[0] = x - p.v.Set(reflect.ValueOf(&o.uint32s[0])) - o.uint32s = o.uint32s[1:] - return - case float32Type: - if len(o.float32s) == 0 { - o.float32s = make([]float32, uint32PoolSize) - } - o.float32s[0] = math.Float32frombits(x) - p.v.Set(reflect.ValueOf(&o.float32s[0])) - o.float32s = o.float32s[1:] - return - } - - // must be enum - p.v.Set(reflect.New(t)) - p.v.Elem().SetInt(int64(int32(x))) -} - -// Get gets the bits pointed at by p, as a uint32. -func word32_Get(p word32) uint32 { - elem := p.v.Elem() - switch elem.Kind() { - case reflect.Int32: - return uint32(elem.Int()) - case reflect.Uint32: - return uint32(elem.Uint()) - case reflect.Float32: - return math.Float32bits(float32(elem.Float())) - } - panic("unreachable") -} - -// Word32 returns a reference to a *int32, *uint32, *float32, or *enum field in the struct. -func structPointer_Word32(p structPointer, f field) word32 { - return word32{structPointer_field(p, f)} -} - -// A word32Val represents a field of type int32, uint32, float32, or enum. -// That is, v.Type() is int32, uint32, float32, or enum and v is assignable. -type word32Val struct { - v reflect.Value -} - -// Set sets *p to x. -func word32Val_Set(p word32Val, x uint32) { - switch p.v.Type() { - case int32Type: - p.v.SetInt(int64(x)) - return - case uint32Type: - p.v.SetUint(uint64(x)) - return - case float32Type: - p.v.SetFloat(float64(math.Float32frombits(x))) - return - } - - // must be enum - p.v.SetInt(int64(int32(x))) -} - -// Get gets the bits pointed at by p, as a uint32. -func word32Val_Get(p word32Val) uint32 { - elem := p.v - switch elem.Kind() { - case reflect.Int32: - return uint32(elem.Int()) - case reflect.Uint32: - return uint32(elem.Uint()) - case reflect.Float32: - return math.Float32bits(float32(elem.Float())) - } - panic("unreachable") -} - -// Word32Val returns a reference to a int32, uint32, float32, or enum field in the struct. -func structPointer_Word32Val(p structPointer, f field) word32Val { - return word32Val{structPointer_field(p, f)} -} - -// A word32Slice is a slice of 32-bit values. -// That is, v.Type() is []int32, []uint32, []float32, or []enum. -type word32Slice struct { - v reflect.Value -} - -func (p word32Slice) Append(x uint32) { - n, m := p.v.Len(), p.v.Cap() - if n < m { - p.v.SetLen(n + 1) - } else { - t := p.v.Type().Elem() - p.v.Set(reflect.Append(p.v, reflect.Zero(t))) - } - elem := p.v.Index(n) - switch elem.Kind() { - case reflect.Int32: - elem.SetInt(int64(int32(x))) - case reflect.Uint32: - elem.SetUint(uint64(x)) - case reflect.Float32: - elem.SetFloat(float64(math.Float32frombits(x))) - } -} - -func (p word32Slice) Len() int { - return p.v.Len() -} - -func (p word32Slice) Index(i int) uint32 { - elem := p.v.Index(i) - switch elem.Kind() { - case reflect.Int32: - return uint32(elem.Int()) - case reflect.Uint32: - return uint32(elem.Uint()) - case reflect.Float32: - return math.Float32bits(float32(elem.Float())) - } - panic("unreachable") -} - -// Word32Slice returns a reference to a []int32, []uint32, []float32, or []enum field in the struct. -func structPointer_Word32Slice(p structPointer, f field) word32Slice { - return word32Slice{structPointer_field(p, f)} -} - -// word64 is like word32 but for 64-bit values. -type word64 struct { - v reflect.Value -} - -func word64_Set(p word64, o *Buffer, x uint64) { - t := p.v.Type().Elem() - switch t { - case int64Type: - if len(o.int64s) == 0 { - o.int64s = make([]int64, uint64PoolSize) - } - o.int64s[0] = int64(x) - p.v.Set(reflect.ValueOf(&o.int64s[0])) - o.int64s = o.int64s[1:] - return - case uint64Type: - if len(o.uint64s) == 0 { - o.uint64s = make([]uint64, uint64PoolSize) - } - o.uint64s[0] = x - p.v.Set(reflect.ValueOf(&o.uint64s[0])) - o.uint64s = o.uint64s[1:] - return - case float64Type: - if len(o.float64s) == 0 { - o.float64s = make([]float64, uint64PoolSize) - } - o.float64s[0] = math.Float64frombits(x) - p.v.Set(reflect.ValueOf(&o.float64s[0])) - o.float64s = o.float64s[1:] - return - } - panic("unreachable") -} - -func word64_IsNil(p word64) bool { - return p.v.IsNil() -} - -func word64_Get(p word64) uint64 { - elem := p.v.Elem() - switch elem.Kind() { - case reflect.Int64: - return uint64(elem.Int()) - case reflect.Uint64: - return elem.Uint() - case reflect.Float64: - return math.Float64bits(elem.Float()) - } - panic("unreachable") -} - -func structPointer_Word64(p structPointer, f field) word64 { - return word64{structPointer_field(p, f)} -} - -// word64Val is like word32Val but for 64-bit values. -type word64Val struct { - v reflect.Value -} - -func word64Val_Set(p word64Val, o *Buffer, x uint64) { - switch p.v.Type() { - case int64Type: - p.v.SetInt(int64(x)) - return - case uint64Type: - p.v.SetUint(x) - return - case float64Type: - p.v.SetFloat(math.Float64frombits(x)) - return - } - panic("unreachable") -} - -func word64Val_Get(p word64Val) uint64 { - elem := p.v - switch elem.Kind() { - case reflect.Int64: - return uint64(elem.Int()) - case reflect.Uint64: - return elem.Uint() - case reflect.Float64: - return math.Float64bits(elem.Float()) - } - panic("unreachable") -} - -func structPointer_Word64Val(p structPointer, f field) word64Val { - return word64Val{structPointer_field(p, f)} -} - -type word64Slice struct { - v reflect.Value -} - -func (p word64Slice) Append(x uint64) { - n, m := p.v.Len(), p.v.Cap() - if n < m { - p.v.SetLen(n + 1) - } else { - t := p.v.Type().Elem() - p.v.Set(reflect.Append(p.v, reflect.Zero(t))) - } - elem := p.v.Index(n) - switch elem.Kind() { - case reflect.Int64: - elem.SetInt(int64(int64(x))) - case reflect.Uint64: - elem.SetUint(uint64(x)) - case reflect.Float64: - elem.SetFloat(float64(math.Float64frombits(x))) - } -} - -func (p word64Slice) Len() int { - return p.v.Len() -} - -func (p word64Slice) Index(i int) uint64 { - elem := p.v.Index(i) - switch elem.Kind() { - case reflect.Int64: - return uint64(elem.Int()) - case reflect.Uint64: - return uint64(elem.Uint()) - case reflect.Float64: - return math.Float64bits(float64(elem.Float())) - } - panic("unreachable") -} - -func structPointer_Word64Slice(p structPointer, f field) word64Slice { - return word64Slice{structPointer_field(p, f)} -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/pointer_unsafe.go b/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/pointer_unsafe.go deleted file mode 100644 index e9be0fe9..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/pointer_unsafe.go +++ /dev/null @@ -1,266 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2012 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// +build !appengine - -// This file contains the implementation of the proto field accesses using package unsafe. - -package proto - -import ( - "reflect" - "unsafe" -) - -// NOTE: These type_Foo functions would more idiomatically be methods, -// but Go does not allow methods on pointer types, and we must preserve -// some pointer type for the garbage collector. We use these -// funcs with clunky names as our poor approximation to methods. -// -// An alternative would be -// type structPointer struct { p unsafe.Pointer } -// but that does not registerize as well. - -// A structPointer is a pointer to a struct. -type structPointer unsafe.Pointer - -// toStructPointer returns a structPointer equivalent to the given reflect value. -func toStructPointer(v reflect.Value) structPointer { - return structPointer(unsafe.Pointer(v.Pointer())) -} - -// IsNil reports whether p is nil. -func structPointer_IsNil(p structPointer) bool { - return p == nil -} - -// Interface returns the struct pointer, assumed to have element type t, -// as an interface value. -func structPointer_Interface(p structPointer, t reflect.Type) interface{} { - return reflect.NewAt(t, unsafe.Pointer(p)).Interface() -} - -// A field identifies a field in a struct, accessible from a structPointer. -// In this implementation, a field is identified by its byte offset from the start of the struct. -type field uintptr - -// toField returns a field equivalent to the given reflect field. -func toField(f *reflect.StructField) field { - return field(f.Offset) -} - -// invalidField is an invalid field identifier. -const invalidField = ^field(0) - -// IsValid reports whether the field identifier is valid. -func (f field) IsValid() bool { - return f != ^field(0) -} - -// Bytes returns the address of a []byte field in the struct. -func structPointer_Bytes(p structPointer, f field) *[]byte { - return (*[]byte)(unsafe.Pointer(uintptr(p) + uintptr(f))) -} - -// BytesSlice returns the address of a [][]byte field in the struct. -func structPointer_BytesSlice(p structPointer, f field) *[][]byte { - return (*[][]byte)(unsafe.Pointer(uintptr(p) + uintptr(f))) -} - -// Bool returns the address of a *bool field in the struct. -func structPointer_Bool(p structPointer, f field) **bool { - return (**bool)(unsafe.Pointer(uintptr(p) + uintptr(f))) -} - -// BoolVal returns the address of a bool field in the struct. -func structPointer_BoolVal(p structPointer, f field) *bool { - return (*bool)(unsafe.Pointer(uintptr(p) + uintptr(f))) -} - -// BoolSlice returns the address of a []bool field in the struct. -func structPointer_BoolSlice(p structPointer, f field) *[]bool { - return (*[]bool)(unsafe.Pointer(uintptr(p) + uintptr(f))) -} - -// String returns the address of a *string field in the struct. -func structPointer_String(p structPointer, f field) **string { - return (**string)(unsafe.Pointer(uintptr(p) + uintptr(f))) -} - -// StringVal returns the address of a string field in the struct. -func structPointer_StringVal(p structPointer, f field) *string { - return (*string)(unsafe.Pointer(uintptr(p) + uintptr(f))) -} - -// StringSlice returns the address of a []string field in the struct. -func structPointer_StringSlice(p structPointer, f field) *[]string { - return (*[]string)(unsafe.Pointer(uintptr(p) + uintptr(f))) -} - -// ExtMap returns the address of an extension map field in the struct. -func structPointer_ExtMap(p structPointer, f field) *map[int32]Extension { - return (*map[int32]Extension)(unsafe.Pointer(uintptr(p) + uintptr(f))) -} - -// NewAt returns the reflect.Value for a pointer to a field in the struct. -func structPointer_NewAt(p structPointer, f field, typ reflect.Type) reflect.Value { - return reflect.NewAt(typ, unsafe.Pointer(uintptr(p)+uintptr(f))) -} - -// SetStructPointer writes a *struct field in the struct. -func structPointer_SetStructPointer(p structPointer, f field, q structPointer) { - *(*structPointer)(unsafe.Pointer(uintptr(p) + uintptr(f))) = q -} - -// GetStructPointer reads a *struct field in the struct. -func structPointer_GetStructPointer(p structPointer, f field) structPointer { - return *(*structPointer)(unsafe.Pointer(uintptr(p) + uintptr(f))) -} - -// StructPointerSlice the address of a []*struct field in the struct. -func structPointer_StructPointerSlice(p structPointer, f field) *structPointerSlice { - return (*structPointerSlice)(unsafe.Pointer(uintptr(p) + uintptr(f))) -} - -// A structPointerSlice represents a slice of pointers to structs (themselves submessages or groups). -type structPointerSlice []structPointer - -func (v *structPointerSlice) Len() int { return len(*v) } -func (v *structPointerSlice) Index(i int) structPointer { return (*v)[i] } -func (v *structPointerSlice) Append(p structPointer) { *v = append(*v, p) } - -// A word32 is the address of a "pointer to 32-bit value" field. -type word32 **uint32 - -// IsNil reports whether *v is nil. -func word32_IsNil(p word32) bool { - return *p == nil -} - -// Set sets *v to point at a newly allocated word set to x. -func word32_Set(p word32, o *Buffer, x uint32) { - if len(o.uint32s) == 0 { - o.uint32s = make([]uint32, uint32PoolSize) - } - o.uint32s[0] = x - *p = &o.uint32s[0] - o.uint32s = o.uint32s[1:] -} - -// Get gets the value pointed at by *v. -func word32_Get(p word32) uint32 { - return **p -} - -// Word32 returns the address of a *int32, *uint32, *float32, or *enum field in the struct. -func structPointer_Word32(p structPointer, f field) word32 { - return word32((**uint32)(unsafe.Pointer(uintptr(p) + uintptr(f)))) -} - -// A word32Val is the address of a 32-bit value field. -type word32Val *uint32 - -// Set sets *p to x. -func word32Val_Set(p word32Val, x uint32) { - *p = x -} - -// Get gets the value pointed at by p. -func word32Val_Get(p word32Val) uint32 { - return *p -} - -// Word32Val returns the address of a *int32, *uint32, *float32, or *enum field in the struct. -func structPointer_Word32Val(p structPointer, f field) word32Val { - return word32Val((*uint32)(unsafe.Pointer(uintptr(p) + uintptr(f)))) -} - -// A word32Slice is a slice of 32-bit values. -type word32Slice []uint32 - -func (v *word32Slice) Append(x uint32) { *v = append(*v, x) } -func (v *word32Slice) Len() int { return len(*v) } -func (v *word32Slice) Index(i int) uint32 { return (*v)[i] } - -// Word32Slice returns the address of a []int32, []uint32, []float32, or []enum field in the struct. -func structPointer_Word32Slice(p structPointer, f field) *word32Slice { - return (*word32Slice)(unsafe.Pointer(uintptr(p) + uintptr(f))) -} - -// word64 is like word32 but for 64-bit values. -type word64 **uint64 - -func word64_Set(p word64, o *Buffer, x uint64) { - if len(o.uint64s) == 0 { - o.uint64s = make([]uint64, uint64PoolSize) - } - o.uint64s[0] = x - *p = &o.uint64s[0] - o.uint64s = o.uint64s[1:] -} - -func word64_IsNil(p word64) bool { - return *p == nil -} - -func word64_Get(p word64) uint64 { - return **p -} - -func structPointer_Word64(p structPointer, f field) word64 { - return word64((**uint64)(unsafe.Pointer(uintptr(p) + uintptr(f)))) -} - -// word64Val is like word32Val but for 64-bit values. -type word64Val *uint64 - -func word64Val_Set(p word64Val, o *Buffer, x uint64) { - *p = x -} - -func word64Val_Get(p word64Val) uint64 { - return *p -} - -func structPointer_Word64Val(p structPointer, f field) word64Val { - return word64Val((*uint64)(unsafe.Pointer(uintptr(p) + uintptr(f)))) -} - -// word64Slice is like word32Slice but for 64-bit values. -type word64Slice []uint64 - -func (v *word64Slice) Append(x uint64) { *v = append(*v, x) } -func (v *word64Slice) Len() int { return len(*v) } -func (v *word64Slice) Index(i int) uint64 { return (*v)[i] } - -func structPointer_Word64Slice(p structPointer, f field) *word64Slice { - return (*word64Slice)(unsafe.Pointer(uintptr(p) + uintptr(f))) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/properties.go b/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/properties.go deleted file mode 100644 index 4fe2ec22..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/properties.go +++ /dev/null @@ -1,846 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto - -/* - * Routines for encoding data into the wire format for protocol buffers. - */ - -import ( - "fmt" - "log" - "os" - "reflect" - "sort" - "strconv" - "strings" - "sync" -) - -const debug bool = false - -// Constants that identify the encoding of a value on the wire. -const ( - WireVarint = 0 - WireFixed64 = 1 - WireBytes = 2 - WireStartGroup = 3 - WireEndGroup = 4 - WireFixed32 = 5 -) - -const startSize = 10 // initial slice/string sizes - -// Encoders are defined in encode.go -// An encoder outputs the full representation of a field, including its -// tag and encoder type. -type encoder func(p *Buffer, prop *Properties, base structPointer) error - -// A valueEncoder encodes a single integer in a particular encoding. -type valueEncoder func(o *Buffer, x uint64) error - -// Sizers are defined in encode.go -// A sizer returns the encoded size of a field, including its tag and encoder -// type. -type sizer func(prop *Properties, base structPointer) int - -// A valueSizer returns the encoded size of a single integer in a particular -// encoding. -type valueSizer func(x uint64) int - -// Decoders are defined in decode.go -// A decoder creates a value from its wire representation. -// Unrecognized subelements are saved in unrec. -type decoder func(p *Buffer, prop *Properties, base structPointer) error - -// A valueDecoder decodes a single integer in a particular encoding. -type valueDecoder func(o *Buffer) (x uint64, err error) - -// A oneofMarshaler does the marshaling for all oneof fields in a message. -type oneofMarshaler func(Message, *Buffer) error - -// A oneofUnmarshaler does the unmarshaling for a oneof field in a message. -type oneofUnmarshaler func(Message, int, int, *Buffer) (bool, error) - -// A oneofSizer does the sizing for all oneof fields in a message. -type oneofSizer func(Message) int - -// tagMap is an optimization over map[int]int for typical protocol buffer -// use-cases. Encoded protocol buffers are often in tag order with small tag -// numbers. -type tagMap struct { - fastTags []int - slowTags map[int]int -} - -// tagMapFastLimit is the upper bound on the tag number that will be stored in -// the tagMap slice rather than its map. -const tagMapFastLimit = 1024 - -func (p *tagMap) get(t int) (int, bool) { - if t > 0 && t < tagMapFastLimit { - if t >= len(p.fastTags) { - return 0, false - } - fi := p.fastTags[t] - return fi, fi >= 0 - } - fi, ok := p.slowTags[t] - return fi, ok -} - -func (p *tagMap) put(t int, fi int) { - if t > 0 && t < tagMapFastLimit { - for len(p.fastTags) < t+1 { - p.fastTags = append(p.fastTags, -1) - } - p.fastTags[t] = fi - return - } - if p.slowTags == nil { - p.slowTags = make(map[int]int) - } - p.slowTags[t] = fi -} - -// StructProperties represents properties for all the fields of a struct. -// decoderTags and decoderOrigNames should only be used by the decoder. -type StructProperties struct { - Prop []*Properties // properties for each field - reqCount int // required count - decoderTags tagMap // map from proto tag to struct field number - decoderOrigNames map[string]int // map from original name to struct field number - order []int // list of struct field numbers in tag order - unrecField field // field id of the XXX_unrecognized []byte field - extendable bool // is this an extendable proto - - oneofMarshaler oneofMarshaler - oneofUnmarshaler oneofUnmarshaler - oneofSizer oneofSizer - stype reflect.Type - - // OneofTypes contains information about the oneof fields in this message. - // It is keyed by the original name of a field. - OneofTypes map[string]*OneofProperties -} - -// OneofProperties represents information about a specific field in a oneof. -type OneofProperties struct { - Type reflect.Type // pointer to generated struct type for this oneof field - Field int // struct field number of the containing oneof in the message - Prop *Properties -} - -// Implement the sorting interface so we can sort the fields in tag order, as recommended by the spec. -// See encode.go, (*Buffer).enc_struct. - -func (sp *StructProperties) Len() int { return len(sp.order) } -func (sp *StructProperties) Less(i, j int) bool { - return sp.Prop[sp.order[i]].Tag < sp.Prop[sp.order[j]].Tag -} -func (sp *StructProperties) Swap(i, j int) { sp.order[i], sp.order[j] = sp.order[j], sp.order[i] } - -// Properties represents the protocol-specific behavior of a single struct field. -type Properties struct { - Name string // name of the field, for error messages - OrigName string // original name before protocol compiler (always set) - JSONName string // name to use for JSON; determined by protoc - Wire string - WireType int - Tag int - Required bool - Optional bool - Repeated bool - Packed bool // relevant for repeated primitives only - Enum string // set for enum types only - proto3 bool // whether this is known to be a proto3 field; set for []byte only - oneof bool // whether this is a oneof field - - Default string // default value - HasDefault bool // whether an explicit default was provided - def_uint64 uint64 - - enc encoder - valEnc valueEncoder // set for bool and numeric types only - field field - tagcode []byte // encoding of EncodeVarint((Tag<<3)|WireType) - tagbuf [8]byte - stype reflect.Type // set for struct types only - sprop *StructProperties // set for struct types only - isMarshaler bool - isUnmarshaler bool - - mtype reflect.Type // set for map types only - mkeyprop *Properties // set for map types only - mvalprop *Properties // set for map types only - - size sizer - valSize valueSizer // set for bool and numeric types only - - dec decoder - valDec valueDecoder // set for bool and numeric types only - - // If this is a packable field, this will be the decoder for the packed version of the field. - packedDec decoder -} - -// String formats the properties in the protobuf struct field tag style. -func (p *Properties) String() string { - s := p.Wire - s = "," - s += strconv.Itoa(p.Tag) - if p.Required { - s += ",req" - } - if p.Optional { - s += ",opt" - } - if p.Repeated { - s += ",rep" - } - if p.Packed { - s += ",packed" - } - s += ",name=" + p.OrigName - if p.JSONName != p.OrigName { - s += ",json=" + p.JSONName - } - if p.proto3 { - s += ",proto3" - } - if p.oneof { - s += ",oneof" - } - if len(p.Enum) > 0 { - s += ",enum=" + p.Enum - } - if p.HasDefault { - s += ",def=" + p.Default - } - return s -} - -// Parse populates p by parsing a string in the protobuf struct field tag style. -func (p *Properties) Parse(s string) { - // "bytes,49,opt,name=foo,def=hello!" - fields := strings.Split(s, ",") // breaks def=, but handled below. - if len(fields) < 2 { - fmt.Fprintf(os.Stderr, "proto: tag has too few fields: %q\n", s) - return - } - - p.Wire = fields[0] - switch p.Wire { - case "varint": - p.WireType = WireVarint - p.valEnc = (*Buffer).EncodeVarint - p.valDec = (*Buffer).DecodeVarint - p.valSize = sizeVarint - case "fixed32": - p.WireType = WireFixed32 - p.valEnc = (*Buffer).EncodeFixed32 - p.valDec = (*Buffer).DecodeFixed32 - p.valSize = sizeFixed32 - case "fixed64": - p.WireType = WireFixed64 - p.valEnc = (*Buffer).EncodeFixed64 - p.valDec = (*Buffer).DecodeFixed64 - p.valSize = sizeFixed64 - case "zigzag32": - p.WireType = WireVarint - p.valEnc = (*Buffer).EncodeZigzag32 - p.valDec = (*Buffer).DecodeZigzag32 - p.valSize = sizeZigzag32 - case "zigzag64": - p.WireType = WireVarint - p.valEnc = (*Buffer).EncodeZigzag64 - p.valDec = (*Buffer).DecodeZigzag64 - p.valSize = sizeZigzag64 - case "bytes", "group": - p.WireType = WireBytes - // no numeric converter for non-numeric types - default: - fmt.Fprintf(os.Stderr, "proto: tag has unknown wire type: %q\n", s) - return - } - - var err error - p.Tag, err = strconv.Atoi(fields[1]) - if err != nil { - return - } - - for i := 2; i < len(fields); i++ { - f := fields[i] - switch { - case f == "req": - p.Required = true - case f == "opt": - p.Optional = true - case f == "rep": - p.Repeated = true - case f == "packed": - p.Packed = true - case strings.HasPrefix(f, "name="): - p.OrigName = f[5:] - case strings.HasPrefix(f, "json="): - p.JSONName = f[5:] - case strings.HasPrefix(f, "enum="): - p.Enum = f[5:] - case f == "proto3": - p.proto3 = true - case f == "oneof": - p.oneof = true - case strings.HasPrefix(f, "def="): - p.HasDefault = true - p.Default = f[4:] // rest of string - if i+1 < len(fields) { - // Commas aren't escaped, and def is always last. - p.Default += "," + strings.Join(fields[i+1:], ",") - break - } - } - } -} - -func logNoSliceEnc(t1, t2 reflect.Type) { - fmt.Fprintf(os.Stderr, "proto: no slice oenc for %T = []%T\n", t1, t2) -} - -var protoMessageType = reflect.TypeOf((*Message)(nil)).Elem() - -// Initialize the fields for encoding and decoding. -func (p *Properties) setEncAndDec(typ reflect.Type, f *reflect.StructField, lockGetProp bool) { - p.enc = nil - p.dec = nil - p.size = nil - - switch t1 := typ; t1.Kind() { - default: - fmt.Fprintf(os.Stderr, "proto: no coders for %v\n", t1) - - // proto3 scalar types - - case reflect.Bool: - p.enc = (*Buffer).enc_proto3_bool - p.dec = (*Buffer).dec_proto3_bool - p.size = size_proto3_bool - case reflect.Int32: - p.enc = (*Buffer).enc_proto3_int32 - p.dec = (*Buffer).dec_proto3_int32 - p.size = size_proto3_int32 - case reflect.Uint32: - p.enc = (*Buffer).enc_proto3_uint32 - p.dec = (*Buffer).dec_proto3_int32 // can reuse - p.size = size_proto3_uint32 - case reflect.Int64, reflect.Uint64: - p.enc = (*Buffer).enc_proto3_int64 - p.dec = (*Buffer).dec_proto3_int64 - p.size = size_proto3_int64 - case reflect.Float32: - p.enc = (*Buffer).enc_proto3_uint32 // can just treat them as bits - p.dec = (*Buffer).dec_proto3_int32 - p.size = size_proto3_uint32 - case reflect.Float64: - p.enc = (*Buffer).enc_proto3_int64 // can just treat them as bits - p.dec = (*Buffer).dec_proto3_int64 - p.size = size_proto3_int64 - case reflect.String: - p.enc = (*Buffer).enc_proto3_string - p.dec = (*Buffer).dec_proto3_string - p.size = size_proto3_string - - case reflect.Ptr: - switch t2 := t1.Elem(); t2.Kind() { - default: - fmt.Fprintf(os.Stderr, "proto: no encoder function for %v -> %v\n", t1, t2) - break - case reflect.Bool: - p.enc = (*Buffer).enc_bool - p.dec = (*Buffer).dec_bool - p.size = size_bool - case reflect.Int32: - p.enc = (*Buffer).enc_int32 - p.dec = (*Buffer).dec_int32 - p.size = size_int32 - case reflect.Uint32: - p.enc = (*Buffer).enc_uint32 - p.dec = (*Buffer).dec_int32 // can reuse - p.size = size_uint32 - case reflect.Int64, reflect.Uint64: - p.enc = (*Buffer).enc_int64 - p.dec = (*Buffer).dec_int64 - p.size = size_int64 - case reflect.Float32: - p.enc = (*Buffer).enc_uint32 // can just treat them as bits - p.dec = (*Buffer).dec_int32 - p.size = size_uint32 - case reflect.Float64: - p.enc = (*Buffer).enc_int64 // can just treat them as bits - p.dec = (*Buffer).dec_int64 - p.size = size_int64 - case reflect.String: - p.enc = (*Buffer).enc_string - p.dec = (*Buffer).dec_string - p.size = size_string - case reflect.Struct: - p.stype = t1.Elem() - p.isMarshaler = isMarshaler(t1) - p.isUnmarshaler = isUnmarshaler(t1) - if p.Wire == "bytes" { - p.enc = (*Buffer).enc_struct_message - p.dec = (*Buffer).dec_struct_message - p.size = size_struct_message - } else { - p.enc = (*Buffer).enc_struct_group - p.dec = (*Buffer).dec_struct_group - p.size = size_struct_group - } - } - - case reflect.Slice: - switch t2 := t1.Elem(); t2.Kind() { - default: - logNoSliceEnc(t1, t2) - break - case reflect.Bool: - if p.Packed { - p.enc = (*Buffer).enc_slice_packed_bool - p.size = size_slice_packed_bool - } else { - p.enc = (*Buffer).enc_slice_bool - p.size = size_slice_bool - } - p.dec = (*Buffer).dec_slice_bool - p.packedDec = (*Buffer).dec_slice_packed_bool - case reflect.Int32: - if p.Packed { - p.enc = (*Buffer).enc_slice_packed_int32 - p.size = size_slice_packed_int32 - } else { - p.enc = (*Buffer).enc_slice_int32 - p.size = size_slice_int32 - } - p.dec = (*Buffer).dec_slice_int32 - p.packedDec = (*Buffer).dec_slice_packed_int32 - case reflect.Uint32: - if p.Packed { - p.enc = (*Buffer).enc_slice_packed_uint32 - p.size = size_slice_packed_uint32 - } else { - p.enc = (*Buffer).enc_slice_uint32 - p.size = size_slice_uint32 - } - p.dec = (*Buffer).dec_slice_int32 - p.packedDec = (*Buffer).dec_slice_packed_int32 - case reflect.Int64, reflect.Uint64: - if p.Packed { - p.enc = (*Buffer).enc_slice_packed_int64 - p.size = size_slice_packed_int64 - } else { - p.enc = (*Buffer).enc_slice_int64 - p.size = size_slice_int64 - } - p.dec = (*Buffer).dec_slice_int64 - p.packedDec = (*Buffer).dec_slice_packed_int64 - case reflect.Uint8: - p.enc = (*Buffer).enc_slice_byte - p.dec = (*Buffer).dec_slice_byte - p.size = size_slice_byte - // This is a []byte, which is either a bytes field, - // or the value of a map field. In the latter case, - // we always encode an empty []byte, so we should not - // use the proto3 enc/size funcs. - // f == nil iff this is the key/value of a map field. - if p.proto3 && f != nil { - p.enc = (*Buffer).enc_proto3_slice_byte - p.size = size_proto3_slice_byte - } - case reflect.Float32, reflect.Float64: - switch t2.Bits() { - case 32: - // can just treat them as bits - if p.Packed { - p.enc = (*Buffer).enc_slice_packed_uint32 - p.size = size_slice_packed_uint32 - } else { - p.enc = (*Buffer).enc_slice_uint32 - p.size = size_slice_uint32 - } - p.dec = (*Buffer).dec_slice_int32 - p.packedDec = (*Buffer).dec_slice_packed_int32 - case 64: - // can just treat them as bits - if p.Packed { - p.enc = (*Buffer).enc_slice_packed_int64 - p.size = size_slice_packed_int64 - } else { - p.enc = (*Buffer).enc_slice_int64 - p.size = size_slice_int64 - } - p.dec = (*Buffer).dec_slice_int64 - p.packedDec = (*Buffer).dec_slice_packed_int64 - default: - logNoSliceEnc(t1, t2) - break - } - case reflect.String: - p.enc = (*Buffer).enc_slice_string - p.dec = (*Buffer).dec_slice_string - p.size = size_slice_string - case reflect.Ptr: - switch t3 := t2.Elem(); t3.Kind() { - default: - fmt.Fprintf(os.Stderr, "proto: no ptr oenc for %T -> %T -> %T\n", t1, t2, t3) - break - case reflect.Struct: - p.stype = t2.Elem() - p.isMarshaler = isMarshaler(t2) - p.isUnmarshaler = isUnmarshaler(t2) - if p.Wire == "bytes" { - p.enc = (*Buffer).enc_slice_struct_message - p.dec = (*Buffer).dec_slice_struct_message - p.size = size_slice_struct_message - } else { - p.enc = (*Buffer).enc_slice_struct_group - p.dec = (*Buffer).dec_slice_struct_group - p.size = size_slice_struct_group - } - } - case reflect.Slice: - switch t2.Elem().Kind() { - default: - fmt.Fprintf(os.Stderr, "proto: no slice elem oenc for %T -> %T -> %T\n", t1, t2, t2.Elem()) - break - case reflect.Uint8: - p.enc = (*Buffer).enc_slice_slice_byte - p.dec = (*Buffer).dec_slice_slice_byte - p.size = size_slice_slice_byte - } - } - - case reflect.Map: - p.enc = (*Buffer).enc_new_map - p.dec = (*Buffer).dec_new_map - p.size = size_new_map - - p.mtype = t1 - p.mkeyprop = &Properties{} - p.mkeyprop.init(reflect.PtrTo(p.mtype.Key()), "Key", f.Tag.Get("protobuf_key"), nil, lockGetProp) - p.mvalprop = &Properties{} - vtype := p.mtype.Elem() - if vtype.Kind() != reflect.Ptr && vtype.Kind() != reflect.Slice { - // The value type is not a message (*T) or bytes ([]byte), - // so we need encoders for the pointer to this type. - vtype = reflect.PtrTo(vtype) - } - p.mvalprop.init(vtype, "Value", f.Tag.Get("protobuf_val"), nil, lockGetProp) - } - - // precalculate tag code - wire := p.WireType - if p.Packed { - wire = WireBytes - } - x := uint32(p.Tag)<<3 | uint32(wire) - i := 0 - for i = 0; x > 127; i++ { - p.tagbuf[i] = 0x80 | uint8(x&0x7F) - x >>= 7 - } - p.tagbuf[i] = uint8(x) - p.tagcode = p.tagbuf[0 : i+1] - - if p.stype != nil { - if lockGetProp { - p.sprop = GetProperties(p.stype) - } else { - p.sprop = getPropertiesLocked(p.stype) - } - } -} - -var ( - marshalerType = reflect.TypeOf((*Marshaler)(nil)).Elem() - unmarshalerType = reflect.TypeOf((*Unmarshaler)(nil)).Elem() -) - -// isMarshaler reports whether type t implements Marshaler. -func isMarshaler(t reflect.Type) bool { - // We're checking for (likely) pointer-receiver methods - // so if t is not a pointer, something is very wrong. - // The calls above only invoke isMarshaler on pointer types. - if t.Kind() != reflect.Ptr { - panic("proto: misuse of isMarshaler") - } - return t.Implements(marshalerType) -} - -// isUnmarshaler reports whether type t implements Unmarshaler. -func isUnmarshaler(t reflect.Type) bool { - // We're checking for (likely) pointer-receiver methods - // so if t is not a pointer, something is very wrong. - // The calls above only invoke isUnmarshaler on pointer types. - if t.Kind() != reflect.Ptr { - panic("proto: misuse of isUnmarshaler") - } - return t.Implements(unmarshalerType) -} - -// Init populates the properties from a protocol buffer struct tag. -func (p *Properties) Init(typ reflect.Type, name, tag string, f *reflect.StructField) { - p.init(typ, name, tag, f, true) -} - -func (p *Properties) init(typ reflect.Type, name, tag string, f *reflect.StructField, lockGetProp bool) { - // "bytes,49,opt,def=hello!" - p.Name = name - p.OrigName = name - if f != nil { - p.field = toField(f) - } - if tag == "" { - return - } - p.Parse(tag) - p.setEncAndDec(typ, f, lockGetProp) -} - -var ( - propertiesMu sync.RWMutex - propertiesMap = make(map[reflect.Type]*StructProperties) -) - -// GetProperties returns the list of properties for the type represented by t. -// t must represent a generated struct type of a protocol message. -func GetProperties(t reflect.Type) *StructProperties { - if t.Kind() != reflect.Struct { - panic("proto: type must have kind struct") - } - - // Most calls to GetProperties in a long-running program will be - // retrieving details for types we have seen before. - propertiesMu.RLock() - sprop, ok := propertiesMap[t] - propertiesMu.RUnlock() - if ok { - if collectStats { - stats.Chit++ - } - return sprop - } - - propertiesMu.Lock() - sprop = getPropertiesLocked(t) - propertiesMu.Unlock() - return sprop -} - -// getPropertiesLocked requires that propertiesMu is held. -func getPropertiesLocked(t reflect.Type) *StructProperties { - if prop, ok := propertiesMap[t]; ok { - if collectStats { - stats.Chit++ - } - return prop - } - if collectStats { - stats.Cmiss++ - } - - prop := new(StructProperties) - // in case of recursive protos, fill this in now. - propertiesMap[t] = prop - - // build properties - prop.extendable = reflect.PtrTo(t).Implements(extendableProtoType) - prop.unrecField = invalidField - prop.Prop = make([]*Properties, t.NumField()) - prop.order = make([]int, t.NumField()) - - for i := 0; i < t.NumField(); i++ { - f := t.Field(i) - p := new(Properties) - name := f.Name - p.init(f.Type, name, f.Tag.Get("protobuf"), &f, false) - - if f.Name == "XXX_extensions" { // special case - p.enc = (*Buffer).enc_map - p.dec = nil // not needed - p.size = size_map - } - if f.Name == "XXX_unrecognized" { // special case - prop.unrecField = toField(&f) - } - oneof := f.Tag.Get("protobuf_oneof") != "" // special case - prop.Prop[i] = p - prop.order[i] = i - if debug { - print(i, " ", f.Name, " ", t.String(), " ") - if p.Tag > 0 { - print(p.String()) - } - print("\n") - } - if p.enc == nil && !strings.HasPrefix(f.Name, "XXX_") && !oneof { - fmt.Fprintln(os.Stderr, "proto: no encoder for", f.Name, f.Type.String(), "[GetProperties]") - } - } - - // Re-order prop.order. - sort.Sort(prop) - - type oneofMessage interface { - XXX_OneofFuncs() (func(Message, *Buffer) error, func(Message, int, int, *Buffer) (bool, error), func(Message) int, []interface{}) - } - if om, ok := reflect.Zero(reflect.PtrTo(t)).Interface().(oneofMessage); ok { - var oots []interface{} - prop.oneofMarshaler, prop.oneofUnmarshaler, prop.oneofSizer, oots = om.XXX_OneofFuncs() - prop.stype = t - - // Interpret oneof metadata. - prop.OneofTypes = make(map[string]*OneofProperties) - for _, oot := range oots { - oop := &OneofProperties{ - Type: reflect.ValueOf(oot).Type(), // *T - Prop: new(Properties), - } - sft := oop.Type.Elem().Field(0) - oop.Prop.Name = sft.Name - oop.Prop.Parse(sft.Tag.Get("protobuf")) - // There will be exactly one interface field that - // this new value is assignable to. - for i := 0; i < t.NumField(); i++ { - f := t.Field(i) - if f.Type.Kind() != reflect.Interface { - continue - } - if !oop.Type.AssignableTo(f.Type) { - continue - } - oop.Field = i - break - } - prop.OneofTypes[oop.Prop.OrigName] = oop - } - } - - // build required counts - // build tags - reqCount := 0 - prop.decoderOrigNames = make(map[string]int) - for i, p := range prop.Prop { - if strings.HasPrefix(p.Name, "XXX_") { - // Internal fields should not appear in tags/origNames maps. - // They are handled specially when encoding and decoding. - continue - } - if p.Required { - reqCount++ - } - prop.decoderTags.put(p.Tag, i) - prop.decoderOrigNames[p.OrigName] = i - } - prop.reqCount = reqCount - - return prop -} - -// Return the Properties object for the x[0]'th field of the structure. -func propByIndex(t reflect.Type, x []int) *Properties { - if len(x) != 1 { - fmt.Fprintf(os.Stderr, "proto: field index dimension %d (not 1) for type %s\n", len(x), t) - return nil - } - prop := GetProperties(t) - return prop.Prop[x[0]] -} - -// Get the address and type of a pointer to a struct from an interface. -func getbase(pb Message) (t reflect.Type, b structPointer, err error) { - if pb == nil { - err = ErrNil - return - } - // get the reflect type of the pointer to the struct. - t = reflect.TypeOf(pb) - // get the address of the struct. - value := reflect.ValueOf(pb) - b = toStructPointer(value) - return -} - -// A global registry of enum types. -// The generated code will register the generated maps by calling RegisterEnum. - -var enumValueMaps = make(map[string]map[string]int32) - -// RegisterEnum is called from the generated code to install the enum descriptor -// maps into the global table to aid parsing text format protocol buffers. -func RegisterEnum(typeName string, unusedNameMap map[int32]string, valueMap map[string]int32) { - if _, ok := enumValueMaps[typeName]; ok { - panic("proto: duplicate enum registered: " + typeName) - } - enumValueMaps[typeName] = valueMap -} - -// EnumValueMap returns the mapping from names to integers of the -// enum type enumType, or a nil if not found. -func EnumValueMap(enumType string) map[string]int32 { - return enumValueMaps[enumType] -} - -// A registry of all linked message types. -// The string is a fully-qualified proto name ("pkg.Message"). -var ( - protoTypes = make(map[string]reflect.Type) - revProtoTypes = make(map[reflect.Type]string) -) - -// RegisterType is called from generated code and maps from the fully qualified -// proto name to the type (pointer to struct) of the protocol buffer. -func RegisterType(x Message, name string) { - if _, ok := protoTypes[name]; ok { - // TODO: Some day, make this a panic. - log.Printf("proto: duplicate proto type registered: %s", name) - return - } - t := reflect.TypeOf(x) - protoTypes[name] = t - revProtoTypes[t] = name -} - -// MessageName returns the fully-qualified proto name for the given message type. -func MessageName(x Message) string { return revProtoTypes[reflect.TypeOf(x)] } - -// MessageType returns the message type (pointer to struct) for a named message. -func MessageType(name string) reflect.Type { return protoTypes[name] } diff --git a/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/text.go b/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/text.go deleted file mode 100644 index 1cbaf86d..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/text.go +++ /dev/null @@ -1,762 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto - -// Functions for writing the text protocol buffer format. - -import ( - "bufio" - "bytes" - "encoding" - "errors" - "fmt" - "io" - "log" - "math" - "reflect" - "sort" - "strings" -) - -var ( - newline = []byte("\n") - spaces = []byte(" ") - gtNewline = []byte(">\n") - endBraceNewline = []byte("}\n") - backslashN = []byte{'\\', 'n'} - backslashR = []byte{'\\', 'r'} - backslashT = []byte{'\\', 't'} - backslashDQ = []byte{'\\', '"'} - backslashBS = []byte{'\\', '\\'} - posInf = []byte("inf") - negInf = []byte("-inf") - nan = []byte("nan") -) - -type writer interface { - io.Writer - WriteByte(byte) error -} - -// textWriter is an io.Writer that tracks its indentation level. -type textWriter struct { - ind int - complete bool // if the current position is a complete line - compact bool // whether to write out as a one-liner - w writer -} - -func (w *textWriter) WriteString(s string) (n int, err error) { - if !strings.Contains(s, "\n") { - if !w.compact && w.complete { - w.writeIndent() - } - w.complete = false - return io.WriteString(w.w, s) - } - // WriteString is typically called without newlines, so this - // codepath and its copy are rare. We copy to avoid - // duplicating all of Write's logic here. - return w.Write([]byte(s)) -} - -func (w *textWriter) Write(p []byte) (n int, err error) { - newlines := bytes.Count(p, newline) - if newlines == 0 { - if !w.compact && w.complete { - w.writeIndent() - } - n, err = w.w.Write(p) - w.complete = false - return n, err - } - - frags := bytes.SplitN(p, newline, newlines+1) - if w.compact { - for i, frag := range frags { - if i > 0 { - if err := w.w.WriteByte(' '); err != nil { - return n, err - } - n++ - } - nn, err := w.w.Write(frag) - n += nn - if err != nil { - return n, err - } - } - return n, nil - } - - for i, frag := range frags { - if w.complete { - w.writeIndent() - } - nn, err := w.w.Write(frag) - n += nn - if err != nil { - return n, err - } - if i+1 < len(frags) { - if err := w.w.WriteByte('\n'); err != nil { - return n, err - } - n++ - } - } - w.complete = len(frags[len(frags)-1]) == 0 - return n, nil -} - -func (w *textWriter) WriteByte(c byte) error { - if w.compact && c == '\n' { - c = ' ' - } - if !w.compact && w.complete { - w.writeIndent() - } - err := w.w.WriteByte(c) - w.complete = c == '\n' - return err -} - -func (w *textWriter) indent() { w.ind++ } - -func (w *textWriter) unindent() { - if w.ind == 0 { - log.Printf("proto: textWriter unindented too far") - return - } - w.ind-- -} - -func writeName(w *textWriter, props *Properties) error { - if _, err := w.WriteString(props.OrigName); err != nil { - return err - } - if props.Wire != "group" { - return w.WriteByte(':') - } - return nil -} - -// raw is the interface satisfied by RawMessage. -type raw interface { - Bytes() []byte -} - -func writeStruct(w *textWriter, sv reflect.Value) error { - st := sv.Type() - sprops := GetProperties(st) - for i := 0; i < sv.NumField(); i++ { - fv := sv.Field(i) - props := sprops.Prop[i] - name := st.Field(i).Name - - if strings.HasPrefix(name, "XXX_") { - // There are two XXX_ fields: - // XXX_unrecognized []byte - // XXX_extensions map[int32]proto.Extension - // The first is handled here; - // the second is handled at the bottom of this function. - if name == "XXX_unrecognized" && !fv.IsNil() { - if err := writeUnknownStruct(w, fv.Interface().([]byte)); err != nil { - return err - } - } - continue - } - if fv.Kind() == reflect.Ptr && fv.IsNil() { - // Field not filled in. This could be an optional field or - // a required field that wasn't filled in. Either way, there - // isn't anything we can show for it. - continue - } - if fv.Kind() == reflect.Slice && fv.IsNil() { - // Repeated field that is empty, or a bytes field that is unused. - continue - } - - if props.Repeated && fv.Kind() == reflect.Slice { - // Repeated field. - for j := 0; j < fv.Len(); j++ { - if err := writeName(w, props); err != nil { - return err - } - if !w.compact { - if err := w.WriteByte(' '); err != nil { - return err - } - } - v := fv.Index(j) - if v.Kind() == reflect.Ptr && v.IsNil() { - // A nil message in a repeated field is not valid, - // but we can handle that more gracefully than panicking. - if _, err := w.Write([]byte("\n")); err != nil { - return err - } - continue - } - if err := writeAny(w, v, props); err != nil { - return err - } - if err := w.WriteByte('\n'); err != nil { - return err - } - } - continue - } - if fv.Kind() == reflect.Map { - // Map fields are rendered as a repeated struct with key/value fields. - keys := fv.MapKeys() - sort.Sort(mapKeys(keys)) - for _, key := range keys { - val := fv.MapIndex(key) - if err := writeName(w, props); err != nil { - return err - } - if !w.compact { - if err := w.WriteByte(' '); err != nil { - return err - } - } - // open struct - if err := w.WriteByte('<'); err != nil { - return err - } - if !w.compact { - if err := w.WriteByte('\n'); err != nil { - return err - } - } - w.indent() - // key - if _, err := w.WriteString("key:"); err != nil { - return err - } - if !w.compact { - if err := w.WriteByte(' '); err != nil { - return err - } - } - if err := writeAny(w, key, props.mkeyprop); err != nil { - return err - } - if err := w.WriteByte('\n'); err != nil { - return err - } - // nil values aren't legal, but we can avoid panicking because of them. - if val.Kind() != reflect.Ptr || !val.IsNil() { - // value - if _, err := w.WriteString("value:"); err != nil { - return err - } - if !w.compact { - if err := w.WriteByte(' '); err != nil { - return err - } - } - if err := writeAny(w, val, props.mvalprop); err != nil { - return err - } - if err := w.WriteByte('\n'); err != nil { - return err - } - } - // close struct - w.unindent() - if err := w.WriteByte('>'); err != nil { - return err - } - if err := w.WriteByte('\n'); err != nil { - return err - } - } - continue - } - if props.proto3 && fv.Kind() == reflect.Slice && fv.Len() == 0 { - // empty bytes field - continue - } - if fv.Kind() != reflect.Ptr && fv.Kind() != reflect.Slice { - // proto3 non-repeated scalar field; skip if zero value - if isProto3Zero(fv) { - continue - } - } - - if fv.Kind() == reflect.Interface { - // Check if it is a oneof. - if st.Field(i).Tag.Get("protobuf_oneof") != "" { - // fv is nil, or holds a pointer to generated struct. - // That generated struct has exactly one field, - // which has a protobuf struct tag. - if fv.IsNil() { - continue - } - inner := fv.Elem().Elem() // interface -> *T -> T - tag := inner.Type().Field(0).Tag.Get("protobuf") - props = new(Properties) // Overwrite the outer props var, but not its pointee. - props.Parse(tag) - // Write the value in the oneof, not the oneof itself. - fv = inner.Field(0) - - // Special case to cope with malformed messages gracefully: - // If the value in the oneof is a nil pointer, don't panic - // in writeAny. - if fv.Kind() == reflect.Ptr && fv.IsNil() { - // Use errors.New so writeAny won't render quotes. - msg := errors.New("/* nil */") - fv = reflect.ValueOf(&msg).Elem() - } - } - } - - if err := writeName(w, props); err != nil { - return err - } - if !w.compact { - if err := w.WriteByte(' '); err != nil { - return err - } - } - if b, ok := fv.Interface().(raw); ok { - if err := writeRaw(w, b.Bytes()); err != nil { - return err - } - continue - } - - // Enums have a String method, so writeAny will work fine. - if err := writeAny(w, fv, props); err != nil { - return err - } - - if err := w.WriteByte('\n'); err != nil { - return err - } - } - - // Extensions (the XXX_extensions field). - pv := sv.Addr() - if pv.Type().Implements(extendableProtoType) { - if err := writeExtensions(w, pv); err != nil { - return err - } - } - - return nil -} - -// writeRaw writes an uninterpreted raw message. -func writeRaw(w *textWriter, b []byte) error { - if err := w.WriteByte('<'); err != nil { - return err - } - if !w.compact { - if err := w.WriteByte('\n'); err != nil { - return err - } - } - w.indent() - if err := writeUnknownStruct(w, b); err != nil { - return err - } - w.unindent() - if err := w.WriteByte('>'); err != nil { - return err - } - return nil -} - -// writeAny writes an arbitrary field. -func writeAny(w *textWriter, v reflect.Value, props *Properties) error { - v = reflect.Indirect(v) - - // Floats have special cases. - if v.Kind() == reflect.Float32 || v.Kind() == reflect.Float64 { - x := v.Float() - var b []byte - switch { - case math.IsInf(x, 1): - b = posInf - case math.IsInf(x, -1): - b = negInf - case math.IsNaN(x): - b = nan - } - if b != nil { - _, err := w.Write(b) - return err - } - // Other values are handled below. - } - - // We don't attempt to serialise every possible value type; only those - // that can occur in protocol buffers. - switch v.Kind() { - case reflect.Slice: - // Should only be a []byte; repeated fields are handled in writeStruct. - if err := writeString(w, string(v.Interface().([]byte))); err != nil { - return err - } - case reflect.String: - if err := writeString(w, v.String()); err != nil { - return err - } - case reflect.Struct: - // Required/optional group/message. - var bra, ket byte = '<', '>' - if props != nil && props.Wire == "group" { - bra, ket = '{', '}' - } - if err := w.WriteByte(bra); err != nil { - return err - } - if !w.compact { - if err := w.WriteByte('\n'); err != nil { - return err - } - } - w.indent() - if tm, ok := v.Interface().(encoding.TextMarshaler); ok { - text, err := tm.MarshalText() - if err != nil { - return err - } - if _, err = w.Write(text); err != nil { - return err - } - } else if err := writeStruct(w, v); err != nil { - return err - } - w.unindent() - if err := w.WriteByte(ket); err != nil { - return err - } - default: - _, err := fmt.Fprint(w, v.Interface()) - return err - } - return nil -} - -// equivalent to C's isprint. -func isprint(c byte) bool { - return c >= 0x20 && c < 0x7f -} - -// writeString writes a string in the protocol buffer text format. -// It is similar to strconv.Quote except we don't use Go escape sequences, -// we treat the string as a byte sequence, and we use octal escapes. -// These differences are to maintain interoperability with the other -// languages' implementations of the text format. -func writeString(w *textWriter, s string) error { - // use WriteByte here to get any needed indent - if err := w.WriteByte('"'); err != nil { - return err - } - // Loop over the bytes, not the runes. - for i := 0; i < len(s); i++ { - var err error - // Divergence from C++: we don't escape apostrophes. - // There's no need to escape them, and the C++ parser - // copes with a naked apostrophe. - switch c := s[i]; c { - case '\n': - _, err = w.w.Write(backslashN) - case '\r': - _, err = w.w.Write(backslashR) - case '\t': - _, err = w.w.Write(backslashT) - case '"': - _, err = w.w.Write(backslashDQ) - case '\\': - _, err = w.w.Write(backslashBS) - default: - if isprint(c) { - err = w.w.WriteByte(c) - } else { - _, err = fmt.Fprintf(w.w, "\\%03o", c) - } - } - if err != nil { - return err - } - } - return w.WriteByte('"') -} - -func writeUnknownStruct(w *textWriter, data []byte) (err error) { - if !w.compact { - if _, err := fmt.Fprintf(w, "/* %d unknown bytes */\n", len(data)); err != nil { - return err - } - } - b := NewBuffer(data) - for b.index < len(b.buf) { - x, err := b.DecodeVarint() - if err != nil { - _, err := fmt.Fprintf(w, "/* %v */\n", err) - return err - } - wire, tag := x&7, x>>3 - if wire == WireEndGroup { - w.unindent() - if _, err := w.Write(endBraceNewline); err != nil { - return err - } - continue - } - if _, err := fmt.Fprint(w, tag); err != nil { - return err - } - if wire != WireStartGroup { - if err := w.WriteByte(':'); err != nil { - return err - } - } - if !w.compact || wire == WireStartGroup { - if err := w.WriteByte(' '); err != nil { - return err - } - } - switch wire { - case WireBytes: - buf, e := b.DecodeRawBytes(false) - if e == nil { - _, err = fmt.Fprintf(w, "%q", buf) - } else { - _, err = fmt.Fprintf(w, "/* %v */", e) - } - case WireFixed32: - x, err = b.DecodeFixed32() - err = writeUnknownInt(w, x, err) - case WireFixed64: - x, err = b.DecodeFixed64() - err = writeUnknownInt(w, x, err) - case WireStartGroup: - err = w.WriteByte('{') - w.indent() - case WireVarint: - x, err = b.DecodeVarint() - err = writeUnknownInt(w, x, err) - default: - _, err = fmt.Fprintf(w, "/* unknown wire type %d */", wire) - } - if err != nil { - return err - } - if err = w.WriteByte('\n'); err != nil { - return err - } - } - return nil -} - -func writeUnknownInt(w *textWriter, x uint64, err error) error { - if err == nil { - _, err = fmt.Fprint(w, x) - } else { - _, err = fmt.Fprintf(w, "/* %v */", err) - } - return err -} - -type int32Slice []int32 - -func (s int32Slice) Len() int { return len(s) } -func (s int32Slice) Less(i, j int) bool { return s[i] < s[j] } -func (s int32Slice) Swap(i, j int) { s[i], s[j] = s[j], s[i] } - -// writeExtensions writes all the extensions in pv. -// pv is assumed to be a pointer to a protocol message struct that is extendable. -func writeExtensions(w *textWriter, pv reflect.Value) error { - emap := extensionMaps[pv.Type().Elem()] - ep := pv.Interface().(extendableProto) - - // Order the extensions by ID. - // This isn't strictly necessary, but it will give us - // canonical output, which will also make testing easier. - m := ep.ExtensionMap() - ids := make([]int32, 0, len(m)) - for id := range m { - ids = append(ids, id) - } - sort.Sort(int32Slice(ids)) - - for _, extNum := range ids { - ext := m[extNum] - var desc *ExtensionDesc - if emap != nil { - desc = emap[extNum] - } - if desc == nil { - // Unknown extension. - if err := writeUnknownStruct(w, ext.enc); err != nil { - return err - } - continue - } - - pb, err := GetExtension(ep, desc) - if err != nil { - return fmt.Errorf("failed getting extension: %v", err) - } - - // Repeated extensions will appear as a slice. - if !desc.repeated() { - if err := writeExtension(w, desc.Name, pb); err != nil { - return err - } - } else { - v := reflect.ValueOf(pb) - for i := 0; i < v.Len(); i++ { - if err := writeExtension(w, desc.Name, v.Index(i).Interface()); err != nil { - return err - } - } - } - } - return nil -} - -func writeExtension(w *textWriter, name string, pb interface{}) error { - if _, err := fmt.Fprintf(w, "[%s]:", name); err != nil { - return err - } - if !w.compact { - if err := w.WriteByte(' '); err != nil { - return err - } - } - if err := writeAny(w, reflect.ValueOf(pb), nil); err != nil { - return err - } - if err := w.WriteByte('\n'); err != nil { - return err - } - return nil -} - -func (w *textWriter) writeIndent() { - if !w.complete { - return - } - remain := w.ind * 2 - for remain > 0 { - n := remain - if n > len(spaces) { - n = len(spaces) - } - w.w.Write(spaces[:n]) - remain -= n - } - w.complete = false -} - -// TextMarshaler is a configurable text format marshaler. -type TextMarshaler struct { - Compact bool // use compact text format (one line). -} - -// Marshal writes a given protocol buffer in text format. -// The only errors returned are from w. -func (m *TextMarshaler) Marshal(w io.Writer, pb Message) error { - val := reflect.ValueOf(pb) - if pb == nil || val.IsNil() { - w.Write([]byte("")) - return nil - } - var bw *bufio.Writer - ww, ok := w.(writer) - if !ok { - bw = bufio.NewWriter(w) - ww = bw - } - aw := &textWriter{ - w: ww, - complete: true, - compact: m.Compact, - } - - if tm, ok := pb.(encoding.TextMarshaler); ok { - text, err := tm.MarshalText() - if err != nil { - return err - } - if _, err = aw.Write(text); err != nil { - return err - } - if bw != nil { - return bw.Flush() - } - return nil - } - // Dereference the received pointer so we don't have outer < and >. - v := reflect.Indirect(val) - if err := writeStruct(aw, v); err != nil { - return err - } - if bw != nil { - return bw.Flush() - } - return nil -} - -// Text is the same as Marshal, but returns the string directly. -func (m *TextMarshaler) Text(pb Message) string { - var buf bytes.Buffer - m.Marshal(&buf, pb) - return buf.String() -} - -var ( - defaultTextMarshaler = TextMarshaler{} - compactTextMarshaler = TextMarshaler{Compact: true} -) - -// TODO: consider removing some of the Marshal functions below. - -// MarshalText writes a given protocol buffer in text format. -// The only errors returned are from w. -func MarshalText(w io.Writer, pb Message) error { return defaultTextMarshaler.Marshal(w, pb) } - -// MarshalTextString is the same as MarshalText, but returns the string directly. -func MarshalTextString(pb Message) string { return defaultTextMarshaler.Text(pb) } - -// CompactText writes a given protocol buffer in compact text format (one line). -func CompactText(w io.Writer, pb Message) error { return compactTextMarshaler.Marshal(w, pb) } - -// CompactTextString is the same as CompactText, but returns the string directly. -func CompactTextString(pb Message) string { return compactTextMarshaler.Text(pb) } diff --git a/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/text_parser.go b/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/text_parser.go deleted file mode 100644 index 45132326..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/golang/protobuf/proto/text_parser.go +++ /dev/null @@ -1,806 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto - -// Functions for parsing the Text protocol buffer format. -// TODO: message sets. - -import ( - "encoding" - "errors" - "fmt" - "reflect" - "strconv" - "strings" - "unicode/utf8" -) - -type ParseError struct { - Message string - Line int // 1-based line number - Offset int // 0-based byte offset from start of input -} - -func (p *ParseError) Error() string { - if p.Line == 1 { - // show offset only for first line - return fmt.Sprintf("line 1.%d: %v", p.Offset, p.Message) - } - return fmt.Sprintf("line %d: %v", p.Line, p.Message) -} - -type token struct { - value string - err *ParseError - line int // line number - offset int // byte number from start of input, not start of line - unquoted string // the unquoted version of value, if it was a quoted string -} - -func (t *token) String() string { - if t.err == nil { - return fmt.Sprintf("%q (line=%d, offset=%d)", t.value, t.line, t.offset) - } - return fmt.Sprintf("parse error: %v", t.err) -} - -type textParser struct { - s string // remaining input - done bool // whether the parsing is finished (success or error) - backed bool // whether back() was called - offset, line int - cur token -} - -func newTextParser(s string) *textParser { - p := new(textParser) - p.s = s - p.line = 1 - p.cur.line = 1 - return p -} - -func (p *textParser) errorf(format string, a ...interface{}) *ParseError { - pe := &ParseError{fmt.Sprintf(format, a...), p.cur.line, p.cur.offset} - p.cur.err = pe - p.done = true - return pe -} - -// Numbers and identifiers are matched by [-+._A-Za-z0-9] -func isIdentOrNumberChar(c byte) bool { - switch { - case 'A' <= c && c <= 'Z', 'a' <= c && c <= 'z': - return true - case '0' <= c && c <= '9': - return true - } - switch c { - case '-', '+', '.', '_': - return true - } - return false -} - -func isWhitespace(c byte) bool { - switch c { - case ' ', '\t', '\n', '\r': - return true - } - return false -} - -func isQuote(c byte) bool { - switch c { - case '"', '\'': - return true - } - return false -} - -func (p *textParser) skipWhitespace() { - i := 0 - for i < len(p.s) && (isWhitespace(p.s[i]) || p.s[i] == '#') { - if p.s[i] == '#' { - // comment; skip to end of line or input - for i < len(p.s) && p.s[i] != '\n' { - i++ - } - if i == len(p.s) { - break - } - } - if p.s[i] == '\n' { - p.line++ - } - i++ - } - p.offset += i - p.s = p.s[i:len(p.s)] - if len(p.s) == 0 { - p.done = true - } -} - -func (p *textParser) advance() { - // Skip whitespace - p.skipWhitespace() - if p.done { - return - } - - // Start of non-whitespace - p.cur.err = nil - p.cur.offset, p.cur.line = p.offset, p.line - p.cur.unquoted = "" - switch p.s[0] { - case '<', '>', '{', '}', ':', '[', ']', ';', ',': - // Single symbol - p.cur.value, p.s = p.s[0:1], p.s[1:len(p.s)] - case '"', '\'': - // Quoted string - i := 1 - for i < len(p.s) && p.s[i] != p.s[0] && p.s[i] != '\n' { - if p.s[i] == '\\' && i+1 < len(p.s) { - // skip escaped char - i++ - } - i++ - } - if i >= len(p.s) || p.s[i] != p.s[0] { - p.errorf("unmatched quote") - return - } - unq, err := unquoteC(p.s[1:i], rune(p.s[0])) - if err != nil { - p.errorf("invalid quoted string %s: %v", p.s[0:i+1], err) - return - } - p.cur.value, p.s = p.s[0:i+1], p.s[i+1:len(p.s)] - p.cur.unquoted = unq - default: - i := 0 - for i < len(p.s) && isIdentOrNumberChar(p.s[i]) { - i++ - } - if i == 0 { - p.errorf("unexpected byte %#x", p.s[0]) - return - } - p.cur.value, p.s = p.s[0:i], p.s[i:len(p.s)] - } - p.offset += len(p.cur.value) -} - -var ( - errBadUTF8 = errors.New("proto: bad UTF-8") - errBadHex = errors.New("proto: bad hexadecimal") -) - -func unquoteC(s string, quote rune) (string, error) { - // This is based on C++'s tokenizer.cc. - // Despite its name, this is *not* parsing C syntax. - // For instance, "\0" is an invalid quoted string. - - // Avoid allocation in trivial cases. - simple := true - for _, r := range s { - if r == '\\' || r == quote { - simple = false - break - } - } - if simple { - return s, nil - } - - buf := make([]byte, 0, 3*len(s)/2) - for len(s) > 0 { - r, n := utf8.DecodeRuneInString(s) - if r == utf8.RuneError && n == 1 { - return "", errBadUTF8 - } - s = s[n:] - if r != '\\' { - if r < utf8.RuneSelf { - buf = append(buf, byte(r)) - } else { - buf = append(buf, string(r)...) - } - continue - } - - ch, tail, err := unescape(s) - if err != nil { - return "", err - } - buf = append(buf, ch...) - s = tail - } - return string(buf), nil -} - -func unescape(s string) (ch string, tail string, err error) { - r, n := utf8.DecodeRuneInString(s) - if r == utf8.RuneError && n == 1 { - return "", "", errBadUTF8 - } - s = s[n:] - switch r { - case 'a': - return "\a", s, nil - case 'b': - return "\b", s, nil - case 'f': - return "\f", s, nil - case 'n': - return "\n", s, nil - case 'r': - return "\r", s, nil - case 't': - return "\t", s, nil - case 'v': - return "\v", s, nil - case '?': - return "?", s, nil // trigraph workaround - case '\'', '"', '\\': - return string(r), s, nil - case '0', '1', '2', '3', '4', '5', '6', '7', 'x', 'X': - if len(s) < 2 { - return "", "", fmt.Errorf(`\%c requires 2 following digits`, r) - } - base := 8 - ss := s[:2] - s = s[2:] - if r == 'x' || r == 'X' { - base = 16 - } else { - ss = string(r) + ss - } - i, err := strconv.ParseUint(ss, base, 8) - if err != nil { - return "", "", err - } - return string([]byte{byte(i)}), s, nil - case 'u', 'U': - n := 4 - if r == 'U' { - n = 8 - } - if len(s) < n { - return "", "", fmt.Errorf(`\%c requires %d digits`, r, n) - } - - bs := make([]byte, n/2) - for i := 0; i < n; i += 2 { - a, ok1 := unhex(s[i]) - b, ok2 := unhex(s[i+1]) - if !ok1 || !ok2 { - return "", "", errBadHex - } - bs[i/2] = a<<4 | b - } - s = s[n:] - return string(bs), s, nil - } - return "", "", fmt.Errorf(`unknown escape \%c`, r) -} - -// Adapted from src/pkg/strconv/quote.go. -func unhex(b byte) (v byte, ok bool) { - switch { - case '0' <= b && b <= '9': - return b - '0', true - case 'a' <= b && b <= 'f': - return b - 'a' + 10, true - case 'A' <= b && b <= 'F': - return b - 'A' + 10, true - } - return 0, false -} - -// Back off the parser by one token. Can only be done between calls to next(). -// It makes the next advance() a no-op. -func (p *textParser) back() { p.backed = true } - -// Advances the parser and returns the new current token. -func (p *textParser) next() *token { - if p.backed || p.done { - p.backed = false - return &p.cur - } - p.advance() - if p.done { - p.cur.value = "" - } else if len(p.cur.value) > 0 && isQuote(p.cur.value[0]) { - // Look for multiple quoted strings separated by whitespace, - // and concatenate them. - cat := p.cur - for { - p.skipWhitespace() - if p.done || !isQuote(p.s[0]) { - break - } - p.advance() - if p.cur.err != nil { - return &p.cur - } - cat.value += " " + p.cur.value - cat.unquoted += p.cur.unquoted - } - p.done = false // parser may have seen EOF, but we want to return cat - p.cur = cat - } - return &p.cur -} - -func (p *textParser) consumeToken(s string) error { - tok := p.next() - if tok.err != nil { - return tok.err - } - if tok.value != s { - p.back() - return p.errorf("expected %q, found %q", s, tok.value) - } - return nil -} - -// Return a RequiredNotSetError indicating which required field was not set. -func (p *textParser) missingRequiredFieldError(sv reflect.Value) *RequiredNotSetError { - st := sv.Type() - sprops := GetProperties(st) - for i := 0; i < st.NumField(); i++ { - if !isNil(sv.Field(i)) { - continue - } - - props := sprops.Prop[i] - if props.Required { - return &RequiredNotSetError{fmt.Sprintf("%v.%v", st, props.OrigName)} - } - } - return &RequiredNotSetError{fmt.Sprintf("%v.", st)} // should not happen -} - -// Returns the index in the struct for the named field, as well as the parsed tag properties. -func structFieldByName(sprops *StructProperties, name string) (int, *Properties, bool) { - i, ok := sprops.decoderOrigNames[name] - if ok { - return i, sprops.Prop[i], true - } - return -1, nil, false -} - -// Consume a ':' from the input stream (if the next token is a colon), -// returning an error if a colon is needed but not present. -func (p *textParser) checkForColon(props *Properties, typ reflect.Type) *ParseError { - tok := p.next() - if tok.err != nil { - return tok.err - } - if tok.value != ":" { - // Colon is optional when the field is a group or message. - needColon := true - switch props.Wire { - case "group": - needColon = false - case "bytes": - // A "bytes" field is either a message, a string, or a repeated field; - // those three become *T, *string and []T respectively, so we can check for - // this field being a pointer to a non-string. - if typ.Kind() == reflect.Ptr { - // *T or *string - if typ.Elem().Kind() == reflect.String { - break - } - } else if typ.Kind() == reflect.Slice { - // []T or []*T - if typ.Elem().Kind() != reflect.Ptr { - break - } - } else if typ.Kind() == reflect.String { - // The proto3 exception is for a string field, - // which requires a colon. - break - } - needColon = false - } - if needColon { - return p.errorf("expected ':', found %q", tok.value) - } - p.back() - } - return nil -} - -func (p *textParser) readStruct(sv reflect.Value, terminator string) error { - st := sv.Type() - sprops := GetProperties(st) - reqCount := sprops.reqCount - var reqFieldErr error - fieldSet := make(map[string]bool) - // A struct is a sequence of "name: value", terminated by one of - // '>' or '}', or the end of the input. A name may also be - // "[extension]". - for { - tok := p.next() - if tok.err != nil { - return tok.err - } - if tok.value == terminator { - break - } - if tok.value == "[" { - // Looks like an extension. - // - // TODO: Check whether we need to handle - // namespace rooted names (e.g. ".something.Foo"). - tok = p.next() - if tok.err != nil { - return tok.err - } - var desc *ExtensionDesc - // This could be faster, but it's functional. - // TODO: Do something smarter than a linear scan. - for _, d := range RegisteredExtensions(reflect.New(st).Interface().(Message)) { - if d.Name == tok.value { - desc = d - break - } - } - if desc == nil { - return p.errorf("unrecognized extension %q", tok.value) - } - // Check the extension terminator. - tok = p.next() - if tok.err != nil { - return tok.err - } - if tok.value != "]" { - return p.errorf("unrecognized extension terminator %q", tok.value) - } - - props := &Properties{} - props.Parse(desc.Tag) - - typ := reflect.TypeOf(desc.ExtensionType) - if err := p.checkForColon(props, typ); err != nil { - return err - } - - rep := desc.repeated() - - // Read the extension structure, and set it in - // the value we're constructing. - var ext reflect.Value - if !rep { - ext = reflect.New(typ).Elem() - } else { - ext = reflect.New(typ.Elem()).Elem() - } - if err := p.readAny(ext, props); err != nil { - if _, ok := err.(*RequiredNotSetError); !ok { - return err - } - reqFieldErr = err - } - ep := sv.Addr().Interface().(extendableProto) - if !rep { - SetExtension(ep, desc, ext.Interface()) - } else { - old, err := GetExtension(ep, desc) - var sl reflect.Value - if err == nil { - sl = reflect.ValueOf(old) // existing slice - } else { - sl = reflect.MakeSlice(typ, 0, 1) - } - sl = reflect.Append(sl, ext) - SetExtension(ep, desc, sl.Interface()) - } - if err := p.consumeOptionalSeparator(); err != nil { - return err - } - continue - } - - // This is a normal, non-extension field. - name := tok.value - var dst reflect.Value - fi, props, ok := structFieldByName(sprops, name) - if ok { - dst = sv.Field(fi) - } else if oop, ok := sprops.OneofTypes[name]; ok { - // It is a oneof. - props = oop.Prop - nv := reflect.New(oop.Type.Elem()) - dst = nv.Elem().Field(0) - sv.Field(oop.Field).Set(nv) - } - if !dst.IsValid() { - return p.errorf("unknown field name %q in %v", name, st) - } - - if dst.Kind() == reflect.Map { - // Consume any colon. - if err := p.checkForColon(props, dst.Type()); err != nil { - return err - } - - // Construct the map if it doesn't already exist. - if dst.IsNil() { - dst.Set(reflect.MakeMap(dst.Type())) - } - key := reflect.New(dst.Type().Key()).Elem() - val := reflect.New(dst.Type().Elem()).Elem() - - // The map entry should be this sequence of tokens: - // < key : KEY value : VALUE > - // Technically the "key" and "value" could come in any order, - // but in practice they won't. - - tok := p.next() - var terminator string - switch tok.value { - case "<": - terminator = ">" - case "{": - terminator = "}" - default: - return p.errorf("expected '{' or '<', found %q", tok.value) - } - if err := p.consumeToken("key"); err != nil { - return err - } - if err := p.consumeToken(":"); err != nil { - return err - } - if err := p.readAny(key, props.mkeyprop); err != nil { - return err - } - if err := p.consumeOptionalSeparator(); err != nil { - return err - } - if err := p.consumeToken("value"); err != nil { - return err - } - if err := p.checkForColon(props.mvalprop, dst.Type().Elem()); err != nil { - return err - } - if err := p.readAny(val, props.mvalprop); err != nil { - return err - } - if err := p.consumeOptionalSeparator(); err != nil { - return err - } - if err := p.consumeToken(terminator); err != nil { - return err - } - - dst.SetMapIndex(key, val) - continue - } - - // Check that it's not already set if it's not a repeated field. - if !props.Repeated && fieldSet[name] { - return p.errorf("non-repeated field %q was repeated", name) - } - - if err := p.checkForColon(props, dst.Type()); err != nil { - return err - } - - // Parse into the field. - fieldSet[name] = true - if err := p.readAny(dst, props); err != nil { - if _, ok := err.(*RequiredNotSetError); !ok { - return err - } - reqFieldErr = err - } else if props.Required { - reqCount-- - } - - if err := p.consumeOptionalSeparator(); err != nil { - return err - } - - } - - if reqCount > 0 { - return p.missingRequiredFieldError(sv) - } - return reqFieldErr -} - -// consumeOptionalSeparator consumes an optional semicolon or comma. -// It is used in readStruct to provide backward compatibility. -func (p *textParser) consumeOptionalSeparator() error { - tok := p.next() - if tok.err != nil { - return tok.err - } - if tok.value != ";" && tok.value != "," { - p.back() - } - return nil -} - -func (p *textParser) readAny(v reflect.Value, props *Properties) error { - tok := p.next() - if tok.err != nil { - return tok.err - } - if tok.value == "" { - return p.errorf("unexpected EOF") - } - - switch fv := v; fv.Kind() { - case reflect.Slice: - at := v.Type() - if at.Elem().Kind() == reflect.Uint8 { - // Special case for []byte - if tok.value[0] != '"' && tok.value[0] != '\'' { - // Deliberately written out here, as the error after - // this switch statement would write "invalid []byte: ...", - // which is not as user-friendly. - return p.errorf("invalid string: %v", tok.value) - } - bytes := []byte(tok.unquoted) - fv.Set(reflect.ValueOf(bytes)) - return nil - } - // Repeated field. - if tok.value == "[" { - // Repeated field with list notation, like [1,2,3]. - for { - fv.Set(reflect.Append(fv, reflect.New(at.Elem()).Elem())) - err := p.readAny(fv.Index(fv.Len()-1), props) - if err != nil { - return err - } - tok := p.next() - if tok.err != nil { - return tok.err - } - if tok.value == "]" { - break - } - if tok.value != "," { - return p.errorf("Expected ']' or ',' found %q", tok.value) - } - } - return nil - } - // One value of the repeated field. - p.back() - fv.Set(reflect.Append(fv, reflect.New(at.Elem()).Elem())) - return p.readAny(fv.Index(fv.Len()-1), props) - case reflect.Bool: - // Either "true", "false", 1 or 0. - switch tok.value { - case "true", "1": - fv.SetBool(true) - return nil - case "false", "0": - fv.SetBool(false) - return nil - } - case reflect.Float32, reflect.Float64: - v := tok.value - // Ignore 'f' for compatibility with output generated by C++, but don't - // remove 'f' when the value is "-inf" or "inf". - if strings.HasSuffix(v, "f") && tok.value != "-inf" && tok.value != "inf" { - v = v[:len(v)-1] - } - if f, err := strconv.ParseFloat(v, fv.Type().Bits()); err == nil { - fv.SetFloat(f) - return nil - } - case reflect.Int32: - if x, err := strconv.ParseInt(tok.value, 0, 32); err == nil { - fv.SetInt(x) - return nil - } - - if len(props.Enum) == 0 { - break - } - m, ok := enumValueMaps[props.Enum] - if !ok { - break - } - x, ok := m[tok.value] - if !ok { - break - } - fv.SetInt(int64(x)) - return nil - case reflect.Int64: - if x, err := strconv.ParseInt(tok.value, 0, 64); err == nil { - fv.SetInt(x) - return nil - } - - case reflect.Ptr: - // A basic field (indirected through pointer), or a repeated message/group - p.back() - fv.Set(reflect.New(fv.Type().Elem())) - return p.readAny(fv.Elem(), props) - case reflect.String: - if tok.value[0] == '"' || tok.value[0] == '\'' { - fv.SetString(tok.unquoted) - return nil - } - case reflect.Struct: - var terminator string - switch tok.value { - case "{": - terminator = "}" - case "<": - terminator = ">" - default: - return p.errorf("expected '{' or '<', found %q", tok.value) - } - // TODO: Handle nested messages which implement encoding.TextUnmarshaler. - return p.readStruct(fv, terminator) - case reflect.Uint32: - if x, err := strconv.ParseUint(tok.value, 0, 32); err == nil { - fv.SetUint(uint64(x)) - return nil - } - case reflect.Uint64: - if x, err := strconv.ParseUint(tok.value, 0, 64); err == nil { - fv.SetUint(x) - return nil - } - } - return p.errorf("invalid %v: %v", v.Type(), tok.value) -} - -// UnmarshalText reads a protocol buffer in Text format. UnmarshalText resets pb -// before starting to unmarshal, so any existing data in pb is always removed. -// If a required field is not set and no other error occurs, -// UnmarshalText returns *RequiredNotSetError. -func UnmarshalText(s string, pb Message) error { - if um, ok := pb.(encoding.TextUnmarshaler); ok { - err := um.UnmarshalText([]byte(s)) - return err - } - pb.Reset() - v := reflect.ValueOf(pb) - if pe := newTextParser(s).readStruct(v.Elem(), ""); pe != nil { - return pe - } - return nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/google/go-querystring/LICENSE b/vendor/github.com/docker/machine/vendor/github.com/google/go-querystring/LICENSE deleted file mode 100644 index ae121a1e..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/google/go-querystring/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2013 Google. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/docker/machine/vendor/github.com/google/go-querystring/query/encode.go b/vendor/github.com/docker/machine/vendor/github.com/google/go-querystring/query/encode.go deleted file mode 100644 index 4ae9173d..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/google/go-querystring/query/encode.go +++ /dev/null @@ -1,274 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package query implements encoding of structs into URL query parameters. -// -// As a simple example: -// -// type Options struct { -// Query string `url:"q"` -// ShowAll bool `url:"all"` -// Page int `url:"page"` -// } -// -// opt := Options{ "foo", true, 2 } -// v, _ := query.Values(opt) -// fmt.Print(v.Encode()) // will output: "q=foo&all=true&page=2" -// -// The exact mapping between Go values and url.Values is described in the -// documentation for the Values() function. -package query - -import ( - "bytes" - "errors" - "fmt" - "net/url" - "reflect" - "strconv" - "strings" - "time" -) - -var timeType = reflect.TypeOf(time.Time{}) - -var encoderType = reflect.TypeOf(new(Encoder)).Elem() - -// Encoder is an interface implemented by any type that wishes to encode -// itself into URL values in a non-standard way. -type Encoder interface { - EncodeValues(v *url.Values) error -} - -// Values returns the url.Values encoding of v. -// -// Values expects to be passed a struct, and traverses it recursively using the -// following encoding rules. -// -// Each exported struct field is encoded as a URL parameter unless -// -// - the field's tag is "-", or -// - the field is empty and its tag specifies the "omitempty" option -// -// The empty values are false, 0, any nil pointer or interface value, any array -// slice, map, or string of length zero, and any time.Time that returns true -// for IsZero(). -// -// The URL parameter name defaults to the struct field name but can be -// specified in the struct field's tag value. The "url" key in the struct -// field's tag value is the key name, followed by an optional comma and -// options. For example: -// -// // Field is ignored by this package. -// Field int `url:"-"` -// -// // Field appears as URL parameter "myName". -// Field int `url:"myName"` -// -// // Field appears as URL parameter "myName" and the field is omitted if -// // its value is empty -// Field int `url:"myName,omitempty"` -// -// // Field appears as URL parameter "Field" (the default), but the field -// // is skipped if empty. Note the leading comma. -// Field int `url:",omitempty"` -// -// For encoding individual field values, the following type-dependent rules -// apply: -// -// Boolean values default to encoding as the strings "true" or "false". -// Including the "int" option signals that the field should be encoded as the -// strings "1" or "0". -// -// time.Time values default to encoding as RFC3339 timestamps. Including the -// "unix" option signals that the field should be encoded as a Unix time (see -// time.Unix()) -// -// Slice and Array values default to encoding as multiple URL values of the -// same name. Including the "comma" option signals that the field should be -// encoded as a single comma-delimited value. Including the "space" option -// similarly encodes the value as a single space-delimited string. -// -// Anonymous struct fields are usually encoded as if their inner exported -// fields were fields in the outer struct, subject to the standard Go -// visibility rules. An anonymous struct field with a name given in its URL -// tag is treated as having that name, rather than being anonymous. -// -// Non-nil pointer values are encoded as the value pointed to. -// -// All other values are encoded using their default string representation. -// -// Multiple fields that encode to the same URL parameter name will be included -// as multiple URL values of the same name. -func Values(v interface{}) (url.Values, error) { - val := reflect.ValueOf(v) - for val.Kind() == reflect.Ptr { - if val.IsNil() { - return nil, errors.New("query: Values() expects non-nil value") - } - val = val.Elem() - } - - if val.Kind() != reflect.Struct { - return nil, fmt.Errorf("query: Values() expects struct input. Got %v", val.Kind()) - } - - values := make(url.Values) - err := reflectValue(values, val) - return values, err -} - -// reflectValue populates the values parameter from the struct fields in val. -// Embedded structs are followed recursively (using the rules defined in the -// Values function documentation) breadth-first. -func reflectValue(values url.Values, val reflect.Value) error { - var embedded []reflect.Value - - typ := val.Type() - for i := 0; i < typ.NumField(); i++ { - sf := typ.Field(i) - if sf.PkgPath != "" { // unexported - continue - } - - sv := val.Field(i) - tag := sf.Tag.Get("url") - if tag == "-" { - continue - } - name, opts := parseTag(tag) - if name == "" { - if sf.Anonymous && sv.Kind() == reflect.Struct { - // save embedded struct for later processing - embedded = append(embedded, sv) - continue - } - - name = sf.Name - } - - if opts.Contains("omitempty") && isEmptyValue(sv) { - continue - } - - if sv.Type().Implements(encoderType) { - m := sv.Interface().(Encoder) - if err := m.EncodeValues(&values); err != nil { - return err - } - continue - } - - if sv.Kind() == reflect.Slice || sv.Kind() == reflect.Array { - var del byte - if opts.Contains("comma") { - del = ',' - } else if opts.Contains("space") { - del = ' ' - } - - if del != 0 { - s := new(bytes.Buffer) - first := true - for i := 0; i < sv.Len(); i++ { - if first { - first = false - } else { - s.WriteByte(del) - } - s.WriteString(valueString(sv.Index(i), opts)) - } - values.Add(name, s.String()) - } else { - for i := 0; i < sv.Len(); i++ { - values.Add(name, valueString(sv.Index(i), opts)) - } - } - continue - } - - values.Add(name, valueString(sv, opts)) - } - - for _, f := range embedded { - if err := reflectValue(values, f); err != nil { - return err - } - } - - return nil -} - -// valueString returns the string representation of a value. -func valueString(v reflect.Value, opts tagOptions) string { - for v.Kind() == reflect.Ptr { - if v.IsNil() { - return "" - } - v = v.Elem() - } - - if v.Kind() == reflect.Bool && opts.Contains("int") { - if v.Bool() { - return "1" - } - return "0" - } - - if v.Type() == timeType { - t := v.Interface().(time.Time) - if opts.Contains("unix") { - return strconv.FormatInt(t.Unix(), 10) - } - return t.Format(time.RFC3339) - } - - return fmt.Sprint(v.Interface()) -} - -// isEmptyValue checks if a value should be considered empty for the purposes -// of omitting fields with the "omitempty" option. -func isEmptyValue(v reflect.Value) bool { - switch v.Kind() { - case reflect.Array, reflect.Map, reflect.Slice, reflect.String: - return v.Len() == 0 - case reflect.Bool: - return !v.Bool() - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return v.Int() == 0 - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - return v.Uint() == 0 - case reflect.Float32, reflect.Float64: - return v.Float() == 0 - case reflect.Interface, reflect.Ptr: - return v.IsNil() - } - - if v.Type() == timeType { - return v.Interface().(time.Time).IsZero() - } - - return false -} - -// tagOptions is the string following a comma in a struct field's "url" tag, or -// the empty string. It does not include the leading comma. -type tagOptions []string - -// parseTag splits a struct field's url tag into its name and comma-separated -// options. -func parseTag(tag string) (string, tagOptions) { - s := strings.Split(tag, ",") - return s[0], s[1:] -} - -// Contains checks whether the tagOptions contains the specified option. -func (o tagOptions) Contains(option string) bool { - for _, s := range o { - if s == option { - return true - } - } - return false -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/.gitignore b/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/.gitignore deleted file mode 100644 index 531fcc11..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -jpgo -jmespath-fuzz.zip -cpu.out -go-jmespath.test diff --git a/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/.travis.yml b/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/.travis.yml deleted file mode 100644 index 1f980775..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/.travis.yml +++ /dev/null @@ -1,9 +0,0 @@ -language: go - -sudo: false - -go: - - 1.4 - -install: go get -v -t ./... -script: make test diff --git a/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/LICENSE b/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/LICENSE deleted file mode 100644 index b03310a9..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/LICENSE +++ /dev/null @@ -1,13 +0,0 @@ -Copyright 2015 James Saryerwinnie - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/Makefile b/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/Makefile deleted file mode 100644 index ad17bf00..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/Makefile +++ /dev/null @@ -1,44 +0,0 @@ - -CMD = jpgo - -help: - @echo "Please use \`make ' where is one of" - @echo " test to run all the tests" - @echo " build to build the library and jp executable" - @echo " generate to run codegen" - - -generate: - go generate ./... - -build: - rm -f $(CMD) - go build ./... - rm -f cmd/$(CMD)/$(CMD) && cd cmd/$(CMD)/ && go build ./... - mv cmd/$(CMD)/$(CMD) . - -test: - go test -v ./... - -check: - go vet ./... - @echo "golint ./..." - @lint=`golint ./...`; \ - lint=`echo "$$lint" | grep -v "astnodetype_string.go" | grep -v "toktype_string.go"`; \ - echo "$$lint"; \ - if [ "$$lint" != "" ]; then exit 1; fi - -htmlc: - go test -coverprofile="/tmp/jpcov" && go tool cover -html="/tmp/jpcov" && unlink /tmp/jpcov - -buildfuzz: - go-fuzz-build github.com/jmespath/go-jmespath/fuzz - -fuzz: buildfuzz - go-fuzz -bin=./jmespath-fuzz.zip -workdir=fuzz/corpus - -bench: - go test -bench . -cpuprofile cpu.out - -pprof-cpu: - go tool pprof ./go-jmespath.test ./cpu.out diff --git a/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/README.md b/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/README.md deleted file mode 100644 index 187ef676..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# go-jmespath - A JMESPath implementation in Go - -[![Build Status](https://img.shields.io/travis/jmespath/go-jmespath.svg)](https://travis-ci.org/jmespath/go-jmespath) - - - -See http://jmespath.org for more info. diff --git a/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/api.go b/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/api.go deleted file mode 100644 index 67df3fc1..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/api.go +++ /dev/null @@ -1,12 +0,0 @@ -package jmespath - -// Search evaluates a JMESPath expression against input data and returns the result. -func Search(expression string, data interface{}) (interface{}, error) { - intr := newInterpreter() - parser := NewParser() - ast, err := parser.Parse(expression) - if err != nil { - return nil, err - } - return intr.Execute(ast, data) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/astnodetype_string.go b/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/astnodetype_string.go deleted file mode 100644 index 1cd2d239..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/astnodetype_string.go +++ /dev/null @@ -1,16 +0,0 @@ -// generated by stringer -type astNodeType; DO NOT EDIT - -package jmespath - -import "fmt" - -const _astNodeType_name = "ASTEmptyASTComparatorASTCurrentNodeASTExpRefASTFunctionExpressionASTFieldASTFilterProjectionASTFlattenASTIdentityASTIndexASTIndexExpressionASTKeyValPairASTLiteralASTMultiSelectHashASTMultiSelectListASTOrExpressionASTAndExpressionASTNotExpressionASTPipeASTProjectionASTSubexpressionASTSliceASTValueProjection" - -var _astNodeType_index = [...]uint16{0, 8, 21, 35, 44, 65, 73, 92, 102, 113, 121, 139, 152, 162, 180, 198, 213, 229, 245, 252, 265, 281, 289, 307} - -func (i astNodeType) String() string { - if i < 0 || i >= astNodeType(len(_astNodeType_index)-1) { - return fmt.Sprintf("astNodeType(%d)", i) - } - return _astNodeType_name[_astNodeType_index[i]:_astNodeType_index[i+1]] -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/functions.go b/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/functions.go deleted file mode 100644 index 8a3f2ef0..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/functions.go +++ /dev/null @@ -1,840 +0,0 @@ -package jmespath - -import ( - "encoding/json" - "errors" - "fmt" - "math" - "sort" - "strconv" - "strings" - "unicode/utf8" -) - -type jpFunction func(arguments []interface{}) (interface{}, error) - -type jpType string - -const ( - jpUnknown jpType = "unknown" - jpNumber jpType = "number" - jpString jpType = "string" - jpArray jpType = "array" - jpObject jpType = "object" - jpArrayNumber jpType = "array[number]" - jpArrayString jpType = "array[string]" - jpExpref jpType = "expref" - jpAny jpType = "any" -) - -type functionEntry struct { - name string - arguments []argSpec - handler jpFunction - hasExpRef bool -} - -type argSpec struct { - types []jpType - variadic bool -} - -type byExprString struct { - intr *treeInterpreter - node ASTNode - items []interface{} - hasError bool -} - -func (a *byExprString) Len() int { - return len(a.items) -} -func (a *byExprString) Swap(i, j int) { - a.items[i], a.items[j] = a.items[j], a.items[i] -} -func (a *byExprString) Less(i, j int) bool { - first, err := a.intr.Execute(a.node, a.items[i]) - if err != nil { - a.hasError = true - // Return a dummy value. - return true - } - ith, ok := first.(string) - if !ok { - a.hasError = true - return true - } - second, err := a.intr.Execute(a.node, a.items[j]) - if err != nil { - a.hasError = true - // Return a dummy value. - return true - } - jth, ok := second.(string) - if !ok { - a.hasError = true - return true - } - return ith < jth -} - -type byExprFloat struct { - intr *treeInterpreter - node ASTNode - items []interface{} - hasError bool -} - -func (a *byExprFloat) Len() int { - return len(a.items) -} -func (a *byExprFloat) Swap(i, j int) { - a.items[i], a.items[j] = a.items[j], a.items[i] -} -func (a *byExprFloat) Less(i, j int) bool { - first, err := a.intr.Execute(a.node, a.items[i]) - if err != nil { - a.hasError = true - // Return a dummy value. - return true - } - ith, ok := first.(float64) - if !ok { - a.hasError = true - return true - } - second, err := a.intr.Execute(a.node, a.items[j]) - if err != nil { - a.hasError = true - // Return a dummy value. - return true - } - jth, ok := second.(float64) - if !ok { - a.hasError = true - return true - } - return ith < jth -} - -type functionCaller struct { - functionTable map[string]functionEntry -} - -func newFunctionCaller() *functionCaller { - caller := &functionCaller{} - caller.functionTable = map[string]functionEntry{ - "length": functionEntry{ - name: "length", - arguments: []argSpec{ - argSpec{types: []jpType{jpString, jpArray, jpObject}}, - }, - handler: jpfLength, - }, - "starts_with": functionEntry{ - name: "starts_with", - arguments: []argSpec{ - argSpec{types: []jpType{jpString}}, - argSpec{types: []jpType{jpString}}, - }, - handler: jpfStartsWith, - }, - "abs": functionEntry{ - name: "abs", - arguments: []argSpec{ - argSpec{types: []jpType{jpNumber}}, - }, - handler: jpfAbs, - }, - "avg": functionEntry{ - name: "avg", - arguments: []argSpec{ - argSpec{types: []jpType{jpArrayNumber}}, - }, - handler: jpfAvg, - }, - "ceil": functionEntry{ - name: "ceil", - arguments: []argSpec{ - argSpec{types: []jpType{jpNumber}}, - }, - handler: jpfCeil, - }, - "contains": functionEntry{ - name: "contains", - arguments: []argSpec{ - argSpec{types: []jpType{jpArray, jpString}}, - argSpec{types: []jpType{jpAny}}, - }, - handler: jpfContains, - }, - "ends_with": functionEntry{ - name: "ends_with", - arguments: []argSpec{ - argSpec{types: []jpType{jpString}}, - argSpec{types: []jpType{jpString}}, - }, - handler: jpfEndsWith, - }, - "floor": functionEntry{ - name: "floor", - arguments: []argSpec{ - argSpec{types: []jpType{jpNumber}}, - }, - handler: jpfFloor, - }, - "map": functionEntry{ - name: "amp", - arguments: []argSpec{ - argSpec{types: []jpType{jpExpref}}, - argSpec{types: []jpType{jpArray}}, - }, - handler: jpfMap, - hasExpRef: true, - }, - "max": functionEntry{ - name: "max", - arguments: []argSpec{ - argSpec{types: []jpType{jpArrayNumber, jpArrayString}}, - }, - handler: jpfMax, - }, - "merge": functionEntry{ - name: "merge", - arguments: []argSpec{ - argSpec{types: []jpType{jpObject}, variadic: true}, - }, - handler: jpfMerge, - }, - "max_by": functionEntry{ - name: "max_by", - arguments: []argSpec{ - argSpec{types: []jpType{jpArray}}, - argSpec{types: []jpType{jpExpref}}, - }, - handler: jpfMaxBy, - hasExpRef: true, - }, - "sum": functionEntry{ - name: "sum", - arguments: []argSpec{ - argSpec{types: []jpType{jpArrayNumber}}, - }, - handler: jpfSum, - }, - "min": functionEntry{ - name: "min", - arguments: []argSpec{ - argSpec{types: []jpType{jpArrayNumber, jpArrayString}}, - }, - handler: jpfMin, - }, - "min_by": functionEntry{ - name: "min_by", - arguments: []argSpec{ - argSpec{types: []jpType{jpArray}}, - argSpec{types: []jpType{jpExpref}}, - }, - handler: jpfMinBy, - hasExpRef: true, - }, - "type": functionEntry{ - name: "type", - arguments: []argSpec{ - argSpec{types: []jpType{jpAny}}, - }, - handler: jpfType, - }, - "keys": functionEntry{ - name: "keys", - arguments: []argSpec{ - argSpec{types: []jpType{jpObject}}, - }, - handler: jpfKeys, - }, - "values": functionEntry{ - name: "values", - arguments: []argSpec{ - argSpec{types: []jpType{jpObject}}, - }, - handler: jpfValues, - }, - "sort": functionEntry{ - name: "sort", - arguments: []argSpec{ - argSpec{types: []jpType{jpArrayString, jpArrayNumber}}, - }, - handler: jpfSort, - }, - "sort_by": functionEntry{ - name: "sort_by", - arguments: []argSpec{ - argSpec{types: []jpType{jpArray}}, - argSpec{types: []jpType{jpExpref}}, - }, - handler: jpfSortBy, - hasExpRef: true, - }, - "join": functionEntry{ - name: "join", - arguments: []argSpec{ - argSpec{types: []jpType{jpString}}, - argSpec{types: []jpType{jpArrayString}}, - }, - handler: jpfJoin, - }, - "reverse": functionEntry{ - name: "reverse", - arguments: []argSpec{ - argSpec{types: []jpType{jpArray, jpString}}, - }, - handler: jpfReverse, - }, - "to_array": functionEntry{ - name: "to_array", - arguments: []argSpec{ - argSpec{types: []jpType{jpAny}}, - }, - handler: jpfToArray, - }, - "to_string": functionEntry{ - name: "to_string", - arguments: []argSpec{ - argSpec{types: []jpType{jpAny}}, - }, - handler: jpfToString, - }, - "to_number": functionEntry{ - name: "to_number", - arguments: []argSpec{ - argSpec{types: []jpType{jpAny}}, - }, - handler: jpfToNumber, - }, - "not_null": functionEntry{ - name: "not_null", - arguments: []argSpec{ - argSpec{types: []jpType{jpAny}, variadic: true}, - }, - handler: jpfNotNull, - }, - } - return caller -} - -func (e *functionEntry) resolveArgs(arguments []interface{}) ([]interface{}, error) { - if len(e.arguments) == 0 { - return arguments, nil - } - if !e.arguments[len(e.arguments)-1].variadic { - if len(e.arguments) != len(arguments) { - return nil, errors.New("incorrect number of args") - } - for i, spec := range e.arguments { - userArg := arguments[i] - err := spec.typeCheck(userArg) - if err != nil { - return nil, err - } - } - return arguments, nil - } - if len(arguments) < len(e.arguments) { - return nil, errors.New("Invalid arity.") - } - return arguments, nil -} - -func (a *argSpec) typeCheck(arg interface{}) error { - for _, t := range a.types { - switch t { - case jpNumber: - if _, ok := arg.(float64); ok { - return nil - } - case jpString: - if _, ok := arg.(string); ok { - return nil - } - case jpArray: - if _, ok := arg.([]interface{}); ok { - return nil - } - case jpObject: - if _, ok := arg.(map[string]interface{}); ok { - return nil - } - case jpArrayNumber: - if _, ok := toArrayNum(arg); ok { - return nil - } - case jpArrayString: - if _, ok := toArrayStr(arg); ok { - return nil - } - case jpAny: - return nil - case jpExpref: - if _, ok := arg.(expRef); ok { - return nil - } - } - } - return fmt.Errorf("Invalid type for: %v, expected: %#v", arg, a.types) -} - -func (f *functionCaller) CallFunction(name string, arguments []interface{}, intr *treeInterpreter) (interface{}, error) { - entry, ok := f.functionTable[name] - if !ok { - return nil, errors.New("unknown function: " + name) - } - resolvedArgs, err := entry.resolveArgs(arguments) - if err != nil { - return nil, err - } - if entry.hasExpRef { - var extra []interface{} - extra = append(extra, intr) - resolvedArgs = append(extra, resolvedArgs...) - } - return entry.handler(resolvedArgs) -} - -func jpfAbs(arguments []interface{}) (interface{}, error) { - num := arguments[0].(float64) - return math.Abs(num), nil -} - -func jpfLength(arguments []interface{}) (interface{}, error) { - arg := arguments[0] - if c, ok := arg.(string); ok { - return float64(utf8.RuneCountInString(c)), nil - } else if c, ok := arg.([]interface{}); ok { - return float64(len(c)), nil - } else if c, ok := arg.(map[string]interface{}); ok { - return float64(len(c)), nil - } - return nil, errors.New("could not compute length()") -} - -func jpfStartsWith(arguments []interface{}) (interface{}, error) { - search := arguments[0].(string) - prefix := arguments[1].(string) - return strings.HasPrefix(search, prefix), nil -} - -func jpfAvg(arguments []interface{}) (interface{}, error) { - // We've already type checked the value so we can safely use - // type assertions. - args := arguments[0].([]interface{}) - length := float64(len(args)) - numerator := 0.0 - for _, n := range args { - numerator += n.(float64) - } - return numerator / length, nil -} -func jpfCeil(arguments []interface{}) (interface{}, error) { - val := arguments[0].(float64) - return math.Ceil(val), nil -} -func jpfContains(arguments []interface{}) (interface{}, error) { - search := arguments[0] - el := arguments[1] - if searchStr, ok := search.(string); ok { - if elStr, ok := el.(string); ok { - return strings.Index(searchStr, elStr) != -1, nil - } - return false, nil - } - // Otherwise this is a generic contains for []interface{} - general := search.([]interface{}) - for _, item := range general { - if item == el { - return true, nil - } - } - return false, nil -} -func jpfEndsWith(arguments []interface{}) (interface{}, error) { - search := arguments[0].(string) - suffix := arguments[1].(string) - return strings.HasSuffix(search, suffix), nil -} -func jpfFloor(arguments []interface{}) (interface{}, error) { - val := arguments[0].(float64) - return math.Floor(val), nil -} -func jpfMap(arguments []interface{}) (interface{}, error) { - intr := arguments[0].(*treeInterpreter) - exp := arguments[1].(expRef) - node := exp.ref - arr := arguments[2].([]interface{}) - mapped := make([]interface{}, 0, len(arr)) - for _, value := range arr { - current, err := intr.Execute(node, value) - if err != nil { - return nil, err - } - mapped = append(mapped, current) - } - return mapped, nil -} -func jpfMax(arguments []interface{}) (interface{}, error) { - if items, ok := toArrayNum(arguments[0]); ok { - if len(items) == 0 { - return nil, nil - } - if len(items) == 1 { - return items[0], nil - } - best := items[0] - for _, item := range items[1:] { - if item > best { - best = item - } - } - return best, nil - } - // Otherwise we're dealing with a max() of strings. - items, _ := toArrayStr(arguments[0]) - if len(items) == 0 { - return nil, nil - } - if len(items) == 1 { - return items[0], nil - } - best := items[0] - for _, item := range items[1:] { - if item > best { - best = item - } - } - return best, nil -} -func jpfMerge(arguments []interface{}) (interface{}, error) { - final := make(map[string]interface{}) - for _, m := range arguments { - mapped := m.(map[string]interface{}) - for key, value := range mapped { - final[key] = value - } - } - return final, nil -} -func jpfMaxBy(arguments []interface{}) (interface{}, error) { - intr := arguments[0].(*treeInterpreter) - arr := arguments[1].([]interface{}) - exp := arguments[2].(expRef) - node := exp.ref - if len(arr) == 0 { - return nil, nil - } else if len(arr) == 1 { - return arr[0], nil - } - start, err := intr.Execute(node, arr[0]) - if err != nil { - return nil, err - } - switch t := start.(type) { - case float64: - bestVal := t - bestItem := arr[0] - for _, item := range arr[1:] { - result, err := intr.Execute(node, item) - if err != nil { - return nil, err - } - current, ok := result.(float64) - if !ok { - return nil, errors.New("invalid type, must be number") - } - if current > bestVal { - bestVal = current - bestItem = item - } - } - return bestItem, nil - case string: - bestVal := t - bestItem := arr[0] - for _, item := range arr[1:] { - result, err := intr.Execute(node, item) - if err != nil { - return nil, err - } - current, ok := result.(string) - if !ok { - return nil, errors.New("invalid type, must be string") - } - if current > bestVal { - bestVal = current - bestItem = item - } - } - return bestItem, nil - default: - return nil, errors.New("invalid type, must be number of string") - } -} -func jpfSum(arguments []interface{}) (interface{}, error) { - items, _ := toArrayNum(arguments[0]) - sum := 0.0 - for _, item := range items { - sum += item - } - return sum, nil -} - -func jpfMin(arguments []interface{}) (interface{}, error) { - if items, ok := toArrayNum(arguments[0]); ok { - if len(items) == 0 { - return nil, nil - } - if len(items) == 1 { - return items[0], nil - } - best := items[0] - for _, item := range items[1:] { - if item < best { - best = item - } - } - return best, nil - } - items, _ := toArrayStr(arguments[0]) - if len(items) == 0 { - return nil, nil - } - if len(items) == 1 { - return items[0], nil - } - best := items[0] - for _, item := range items[1:] { - if item < best { - best = item - } - } - return best, nil -} - -func jpfMinBy(arguments []interface{}) (interface{}, error) { - intr := arguments[0].(*treeInterpreter) - arr := arguments[1].([]interface{}) - exp := arguments[2].(expRef) - node := exp.ref - if len(arr) == 0 { - return nil, nil - } else if len(arr) == 1 { - return arr[0], nil - } - start, err := intr.Execute(node, arr[0]) - if err != nil { - return nil, err - } - if t, ok := start.(float64); ok { - bestVal := t - bestItem := arr[0] - for _, item := range arr[1:] { - result, err := intr.Execute(node, item) - if err != nil { - return nil, err - } - current, ok := result.(float64) - if !ok { - return nil, errors.New("invalid type, must be number") - } - if current < bestVal { - bestVal = current - bestItem = item - } - } - return bestItem, nil - } else if t, ok := start.(string); ok { - bestVal := t - bestItem := arr[0] - for _, item := range arr[1:] { - result, err := intr.Execute(node, item) - if err != nil { - return nil, err - } - current, ok := result.(string) - if !ok { - return nil, errors.New("invalid type, must be string") - } - if current < bestVal { - bestVal = current - bestItem = item - } - } - return bestItem, nil - } else { - return nil, errors.New("invalid type, must be number of string") - } -} -func jpfType(arguments []interface{}) (interface{}, error) { - arg := arguments[0] - if _, ok := arg.(float64); ok { - return "number", nil - } - if _, ok := arg.(string); ok { - return "string", nil - } - if _, ok := arg.([]interface{}); ok { - return "array", nil - } - if _, ok := arg.(map[string]interface{}); ok { - return "object", nil - } - if arg == nil { - return "null", nil - } - if arg == true || arg == false { - return "boolean", nil - } - return nil, errors.New("unknown type") -} -func jpfKeys(arguments []interface{}) (interface{}, error) { - arg := arguments[0].(map[string]interface{}) - collected := make([]interface{}, 0, len(arg)) - for key := range arg { - collected = append(collected, key) - } - return collected, nil -} -func jpfValues(arguments []interface{}) (interface{}, error) { - arg := arguments[0].(map[string]interface{}) - collected := make([]interface{}, 0, len(arg)) - for _, value := range arg { - collected = append(collected, value) - } - return collected, nil -} -func jpfSort(arguments []interface{}) (interface{}, error) { - if items, ok := toArrayNum(arguments[0]); ok { - d := sort.Float64Slice(items) - sort.Stable(d) - final := make([]interface{}, len(d)) - for i, val := range d { - final[i] = val - } - return final, nil - } - // Otherwise we're dealing with sort()'ing strings. - items, _ := toArrayStr(arguments[0]) - d := sort.StringSlice(items) - sort.Stable(d) - final := make([]interface{}, len(d)) - for i, val := range d { - final[i] = val - } - return final, nil -} -func jpfSortBy(arguments []interface{}) (interface{}, error) { - intr := arguments[0].(*treeInterpreter) - arr := arguments[1].([]interface{}) - exp := arguments[2].(expRef) - node := exp.ref - if len(arr) == 0 { - return arr, nil - } else if len(arr) == 1 { - return arr, nil - } - start, err := intr.Execute(node, arr[0]) - if err != nil { - return nil, err - } - if _, ok := start.(float64); ok { - sortable := &byExprFloat{intr, node, arr, false} - sort.Stable(sortable) - if sortable.hasError { - return nil, errors.New("error in sort_by comparison") - } - return arr, nil - } else if _, ok := start.(string); ok { - sortable := &byExprString{intr, node, arr, false} - sort.Stable(sortable) - if sortable.hasError { - return nil, errors.New("error in sort_by comparison") - } - return arr, nil - } else { - return nil, errors.New("invalid type, must be number of string") - } -} -func jpfJoin(arguments []interface{}) (interface{}, error) { - sep := arguments[0].(string) - // We can't just do arguments[1].([]string), we have to - // manually convert each item to a string. - arrayStr := []string{} - for _, item := range arguments[1].([]interface{}) { - arrayStr = append(arrayStr, item.(string)) - } - return strings.Join(arrayStr, sep), nil -} -func jpfReverse(arguments []interface{}) (interface{}, error) { - if s, ok := arguments[0].(string); ok { - r := []rune(s) - for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 { - r[i], r[j] = r[j], r[i] - } - return string(r), nil - } - items := arguments[0].([]interface{}) - length := len(items) - reversed := make([]interface{}, length) - for i, item := range items { - reversed[length-(i+1)] = item - } - return reversed, nil -} -func jpfToArray(arguments []interface{}) (interface{}, error) { - if _, ok := arguments[0].([]interface{}); ok { - return arguments[0], nil - } - return arguments[:1:1], nil -} -func jpfToString(arguments []interface{}) (interface{}, error) { - if v, ok := arguments[0].(string); ok { - return v, nil - } - result, err := json.Marshal(arguments[0]) - if err != nil { - return nil, err - } - return string(result), nil -} -func jpfToNumber(arguments []interface{}) (interface{}, error) { - arg := arguments[0] - if v, ok := arg.(float64); ok { - return v, nil - } - if v, ok := arg.(string); ok { - conv, err := strconv.ParseFloat(v, 64) - if err != nil { - return nil, nil - } - return conv, nil - } - if _, ok := arg.([]interface{}); ok { - return nil, nil - } - if _, ok := arg.(map[string]interface{}); ok { - return nil, nil - } - if arg == nil { - return nil, nil - } - if arg == true || arg == false { - return nil, nil - } - return nil, errors.New("unknown type") -} -func jpfNotNull(arguments []interface{}) (interface{}, error) { - for _, arg := range arguments { - if arg != nil { - return arg, nil - } - } - return nil, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/interpreter.go b/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/interpreter.go deleted file mode 100644 index 13c74604..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/interpreter.go +++ /dev/null @@ -1,418 +0,0 @@ -package jmespath - -import ( - "errors" - "reflect" - "unicode" - "unicode/utf8" -) - -/* This is a tree based interpreter. It walks the AST and directly - interprets the AST to search through a JSON document. -*/ - -type treeInterpreter struct { - fCall *functionCaller -} - -func newInterpreter() *treeInterpreter { - interpreter := treeInterpreter{} - interpreter.fCall = newFunctionCaller() - return &interpreter -} - -type expRef struct { - ref ASTNode -} - -// Execute takes an ASTNode and input data and interprets the AST directly. -// It will produce the result of applying the JMESPath expression associated -// with the ASTNode to the input data "value". -func (intr *treeInterpreter) Execute(node ASTNode, value interface{}) (interface{}, error) { - switch node.nodeType { - case ASTComparator: - left, err := intr.Execute(node.children[0], value) - if err != nil { - return nil, err - } - right, err := intr.Execute(node.children[1], value) - if err != nil { - return nil, err - } - switch node.value { - case tEQ: - return objsEqual(left, right), nil - case tNE: - return !objsEqual(left, right), nil - } - leftNum, ok := left.(float64) - if !ok { - return nil, nil - } - rightNum, ok := right.(float64) - if !ok { - return nil, nil - } - switch node.value { - case tGT: - return leftNum > rightNum, nil - case tGTE: - return leftNum >= rightNum, nil - case tLT: - return leftNum < rightNum, nil - case tLTE: - return leftNum <= rightNum, nil - } - case ASTExpRef: - return expRef{ref: node.children[0]}, nil - case ASTFunctionExpression: - resolvedArgs := []interface{}{} - for _, arg := range node.children { - current, err := intr.Execute(arg, value) - if err != nil { - return nil, err - } - resolvedArgs = append(resolvedArgs, current) - } - return intr.fCall.CallFunction(node.value.(string), resolvedArgs, intr) - case ASTField: - if m, ok := value.(map[string]interface{}); ok { - key := node.value.(string) - return m[key], nil - } - return intr.fieldFromStruct(node.value.(string), value) - case ASTFilterProjection: - left, err := intr.Execute(node.children[0], value) - if err != nil { - return nil, nil - } - sliceType, ok := left.([]interface{}) - if !ok { - if isSliceType(left) { - return intr.filterProjectionWithReflection(node, left) - } - return nil, nil - } - compareNode := node.children[2] - collected := []interface{}{} - for _, element := range sliceType { - result, err := intr.Execute(compareNode, element) - if err != nil { - return nil, err - } - if !isFalse(result) { - current, err := intr.Execute(node.children[1], element) - if err != nil { - return nil, err - } - if current != nil { - collected = append(collected, current) - } - } - } - return collected, nil - case ASTFlatten: - left, err := intr.Execute(node.children[0], value) - if err != nil { - return nil, nil - } - sliceType, ok := left.([]interface{}) - if !ok { - // If we can't type convert to []interface{}, there's - // a chance this could still work via reflection if we're - // dealing with user provided types. - if isSliceType(left) { - return intr.flattenWithReflection(left) - } - return nil, nil - } - flattened := []interface{}{} - for _, element := range sliceType { - if elementSlice, ok := element.([]interface{}); ok { - flattened = append(flattened, elementSlice...) - } else if isSliceType(element) { - reflectFlat := []interface{}{} - v := reflect.ValueOf(element) - for i := 0; i < v.Len(); i++ { - reflectFlat = append(reflectFlat, v.Index(i).Interface()) - } - flattened = append(flattened, reflectFlat...) - } else { - flattened = append(flattened, element) - } - } - return flattened, nil - case ASTIdentity, ASTCurrentNode: - return value, nil - case ASTIndex: - if sliceType, ok := value.([]interface{}); ok { - index := node.value.(int) - if index < 0 { - index += len(sliceType) - } - if index < len(sliceType) && index >= 0 { - return sliceType[index], nil - } - return nil, nil - } - // Otherwise try via reflection. - rv := reflect.ValueOf(value) - if rv.Kind() == reflect.Slice { - index := node.value.(int) - if index < 0 { - index += rv.Len() - } - if index < rv.Len() && index >= 0 { - v := rv.Index(index) - return v.Interface(), nil - } - } - return nil, nil - case ASTKeyValPair: - return intr.Execute(node.children[0], value) - case ASTLiteral: - return node.value, nil - case ASTMultiSelectHash: - if value == nil { - return nil, nil - } - collected := make(map[string]interface{}) - for _, child := range node.children { - current, err := intr.Execute(child, value) - if err != nil { - return nil, err - } - key := child.value.(string) - collected[key] = current - } - return collected, nil - case ASTMultiSelectList: - if value == nil { - return nil, nil - } - collected := []interface{}{} - for _, child := range node.children { - current, err := intr.Execute(child, value) - if err != nil { - return nil, err - } - collected = append(collected, current) - } - return collected, nil - case ASTOrExpression: - matched, err := intr.Execute(node.children[0], value) - if err != nil { - return nil, err - } - if isFalse(matched) { - matched, err = intr.Execute(node.children[1], value) - if err != nil { - return nil, err - } - } - return matched, nil - case ASTAndExpression: - matched, err := intr.Execute(node.children[0], value) - if err != nil { - return nil, err - } - if isFalse(matched) { - return matched, nil - } - return intr.Execute(node.children[1], value) - case ASTNotExpression: - matched, err := intr.Execute(node.children[0], value) - if err != nil { - return nil, err - } - if isFalse(matched) { - return true, nil - } - return false, nil - case ASTPipe: - result := value - var err error - for _, child := range node.children { - result, err = intr.Execute(child, result) - if err != nil { - return nil, err - } - } - return result, nil - case ASTProjection: - left, err := intr.Execute(node.children[0], value) - if err != nil { - return nil, err - } - sliceType, ok := left.([]interface{}) - if !ok { - if isSliceType(left) { - return intr.projectWithReflection(node, left) - } - return nil, nil - } - collected := []interface{}{} - var current interface{} - for _, element := range sliceType { - current, err = intr.Execute(node.children[1], element) - if err != nil { - return nil, err - } - if current != nil { - collected = append(collected, current) - } - } - return collected, nil - case ASTSubexpression, ASTIndexExpression: - left, err := intr.Execute(node.children[0], value) - if err != nil { - return nil, err - } - return intr.Execute(node.children[1], left) - case ASTSlice: - sliceType, ok := value.([]interface{}) - if !ok { - if isSliceType(value) { - return intr.sliceWithReflection(node, value) - } - return nil, nil - } - parts := node.value.([]*int) - sliceParams := make([]sliceParam, 3) - for i, part := range parts { - if part != nil { - sliceParams[i].Specified = true - sliceParams[i].N = *part - } - } - return slice(sliceType, sliceParams) - case ASTValueProjection: - left, err := intr.Execute(node.children[0], value) - if err != nil { - return nil, nil - } - mapType, ok := left.(map[string]interface{}) - if !ok { - return nil, nil - } - values := make([]interface{}, len(mapType)) - for _, value := range mapType { - values = append(values, value) - } - collected := []interface{}{} - for _, element := range values { - current, err := intr.Execute(node.children[1], element) - if err != nil { - return nil, err - } - if current != nil { - collected = append(collected, current) - } - } - return collected, nil - } - return nil, errors.New("Unknown AST node: " + node.nodeType.String()) -} - -func (intr *treeInterpreter) fieldFromStruct(key string, value interface{}) (interface{}, error) { - rv := reflect.ValueOf(value) - first, n := utf8.DecodeRuneInString(key) - fieldName := string(unicode.ToUpper(first)) + key[n:] - if rv.Kind() == reflect.Struct { - v := rv.FieldByName(fieldName) - if !v.IsValid() { - return nil, nil - } - return v.Interface(), nil - } else if rv.Kind() == reflect.Ptr { - // Handle multiple levels of indirection? - if rv.IsNil() { - return nil, nil - } - rv = rv.Elem() - v := rv.FieldByName(fieldName) - if !v.IsValid() { - return nil, nil - } - return v.Interface(), nil - } - return nil, nil -} - -func (intr *treeInterpreter) flattenWithReflection(value interface{}) (interface{}, error) { - v := reflect.ValueOf(value) - flattened := []interface{}{} - for i := 0; i < v.Len(); i++ { - element := v.Index(i).Interface() - if reflect.TypeOf(element).Kind() == reflect.Slice { - // Then insert the contents of the element - // slice into the flattened slice, - // i.e flattened = append(flattened, mySlice...) - elementV := reflect.ValueOf(element) - for j := 0; j < elementV.Len(); j++ { - flattened = append( - flattened, elementV.Index(j).Interface()) - } - } else { - flattened = append(flattened, element) - } - } - return flattened, nil -} - -func (intr *treeInterpreter) sliceWithReflection(node ASTNode, value interface{}) (interface{}, error) { - v := reflect.ValueOf(value) - parts := node.value.([]*int) - sliceParams := make([]sliceParam, 3) - for i, part := range parts { - if part != nil { - sliceParams[i].Specified = true - sliceParams[i].N = *part - } - } - final := []interface{}{} - for i := 0; i < v.Len(); i++ { - element := v.Index(i).Interface() - final = append(final, element) - } - return slice(final, sliceParams) -} - -func (intr *treeInterpreter) filterProjectionWithReflection(node ASTNode, value interface{}) (interface{}, error) { - compareNode := node.children[2] - collected := []interface{}{} - v := reflect.ValueOf(value) - for i := 0; i < v.Len(); i++ { - element := v.Index(i).Interface() - result, err := intr.Execute(compareNode, element) - if err != nil { - return nil, err - } - if !isFalse(result) { - current, err := intr.Execute(node.children[1], element) - if err != nil { - return nil, err - } - if current != nil { - collected = append(collected, current) - } - } - } - return collected, nil -} - -func (intr *treeInterpreter) projectWithReflection(node ASTNode, value interface{}) (interface{}, error) { - collected := []interface{}{} - v := reflect.ValueOf(value) - for i := 0; i < v.Len(); i++ { - element := v.Index(i).Interface() - result, err := intr.Execute(node.children[1], element) - if err != nil { - return nil, err - } - if result != nil { - collected = append(collected, result) - } - } - return collected, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/lexer.go b/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/lexer.go deleted file mode 100644 index 817900c8..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/lexer.go +++ /dev/null @@ -1,420 +0,0 @@ -package jmespath - -import ( - "bytes" - "encoding/json" - "fmt" - "strconv" - "strings" - "unicode/utf8" -) - -type token struct { - tokenType tokType - value string - position int - length int -} - -type tokType int - -const eof = -1 - -// Lexer contains information about the expression being tokenized. -type Lexer struct { - expression string // The expression provided by the user. - currentPos int // The current position in the string. - lastWidth int // The width of the current rune. This - buf bytes.Buffer // Internal buffer used for building up values. -} - -// SyntaxError is the main error used whenever a lexing or parsing error occurs. -type SyntaxError struct { - msg string // Error message displayed to user - Expression string // Expression that generated a SyntaxError - Offset int // The location in the string where the error occurred -} - -func (e SyntaxError) Error() string { - // In the future, it would be good to underline the specific - // location where the error occurred. - return "SyntaxError: " + e.msg -} - -// HighlightLocation will show where the syntax error occurred. -// It will place a "^" character on a line below the expression -// at the point where the syntax error occurred. -func (e SyntaxError) HighlightLocation() string { - return e.Expression + "\n" + strings.Repeat(" ", e.Offset) + "^" -} - -//go:generate stringer -type=tokType -const ( - tUnknown tokType = iota - tStar - tDot - tFilter - tFlatten - tLparen - tRparen - tLbracket - tRbracket - tLbrace - tRbrace - tOr - tPipe - tNumber - tUnquotedIdentifier - tQuotedIdentifier - tComma - tColon - tLT - tLTE - tGT - tGTE - tEQ - tNE - tJSONLiteral - tStringLiteral - tCurrent - tExpref - tAnd - tNot - tEOF -) - -var basicTokens = map[rune]tokType{ - '.': tDot, - '*': tStar, - ',': tComma, - ':': tColon, - '{': tLbrace, - '}': tRbrace, - ']': tRbracket, // tLbracket not included because it could be "[]" - '(': tLparen, - ')': tRparen, - '@': tCurrent, -} - -// Bit mask for [a-zA-Z_] shifted down 64 bits to fit in a single uint64. -// When using this bitmask just be sure to shift the rune down 64 bits -// before checking against identifierStartBits. -const identifierStartBits uint64 = 576460745995190270 - -// Bit mask for [a-zA-Z0-9], 128 bits -> 2 uint64s. -var identifierTrailingBits = [2]uint64{287948901175001088, 576460745995190270} - -var whiteSpace = map[rune]bool{ - ' ': true, '\t': true, '\n': true, '\r': true, -} - -func (t token) String() string { - return fmt.Sprintf("Token{%+v, %s, %d, %d}", - t.tokenType, t.value, t.position, t.length) -} - -// NewLexer creates a new JMESPath lexer. -func NewLexer() *Lexer { - lexer := Lexer{} - return &lexer -} - -func (lexer *Lexer) next() rune { - if lexer.currentPos >= len(lexer.expression) { - lexer.lastWidth = 0 - return eof - } - r, w := utf8.DecodeRuneInString(lexer.expression[lexer.currentPos:]) - lexer.lastWidth = w - lexer.currentPos += w - return r -} - -func (lexer *Lexer) back() { - lexer.currentPos -= lexer.lastWidth -} - -func (lexer *Lexer) peek() rune { - t := lexer.next() - lexer.back() - return t -} - -// tokenize takes an expression and returns corresponding tokens. -func (lexer *Lexer) tokenize(expression string) ([]token, error) { - var tokens []token - lexer.expression = expression - lexer.currentPos = 0 - lexer.lastWidth = 0 -loop: - for { - r := lexer.next() - if identifierStartBits&(1<<(uint64(r)-64)) > 0 { - t := lexer.consumeUnquotedIdentifier() - tokens = append(tokens, t) - } else if val, ok := basicTokens[r]; ok { - // Basic single char token. - t := token{ - tokenType: val, - value: string(r), - position: lexer.currentPos - lexer.lastWidth, - length: 1, - } - tokens = append(tokens, t) - } else if r == '-' || (r >= '0' && r <= '9') { - t := lexer.consumeNumber() - tokens = append(tokens, t) - } else if r == '[' { - t := lexer.consumeLBracket() - tokens = append(tokens, t) - } else if r == '"' { - t, err := lexer.consumeQuotedIdentifier() - if err != nil { - return tokens, err - } - tokens = append(tokens, t) - } else if r == '\'' { - t, err := lexer.consumeRawStringLiteral() - if err != nil { - return tokens, err - } - tokens = append(tokens, t) - } else if r == '`' { - t, err := lexer.consumeLiteral() - if err != nil { - return tokens, err - } - tokens = append(tokens, t) - } else if r == '|' { - t := lexer.matchOrElse(r, '|', tOr, tPipe) - tokens = append(tokens, t) - } else if r == '<' { - t := lexer.matchOrElse(r, '=', tLTE, tLT) - tokens = append(tokens, t) - } else if r == '>' { - t := lexer.matchOrElse(r, '=', tGTE, tGT) - tokens = append(tokens, t) - } else if r == '!' { - t := lexer.matchOrElse(r, '=', tNE, tNot) - tokens = append(tokens, t) - } else if r == '=' { - t := lexer.matchOrElse(r, '=', tEQ, tUnknown) - tokens = append(tokens, t) - } else if r == '&' { - t := lexer.matchOrElse(r, '&', tAnd, tExpref) - tokens = append(tokens, t) - } else if r == eof { - break loop - } else if _, ok := whiteSpace[r]; ok { - // Ignore whitespace - } else { - return tokens, lexer.syntaxError(fmt.Sprintf("Unknown char: %s", strconv.QuoteRuneToASCII(r))) - } - } - tokens = append(tokens, token{tEOF, "", len(lexer.expression), 0}) - return tokens, nil -} - -// Consume characters until the ending rune "r" is reached. -// If the end of the expression is reached before seeing the -// terminating rune "r", then an error is returned. -// If no error occurs then the matching substring is returned. -// The returned string will not include the ending rune. -func (lexer *Lexer) consumeUntil(end rune) (string, error) { - start := lexer.currentPos - current := lexer.next() - for current != end && current != eof { - if current == '\\' && lexer.peek() != eof { - lexer.next() - } - current = lexer.next() - } - if lexer.lastWidth == 0 { - // Then we hit an EOF so we never reached the closing - // delimiter. - return "", SyntaxError{ - msg: "Unclosed delimiter: " + string(end), - Expression: lexer.expression, - Offset: len(lexer.expression), - } - } - return lexer.expression[start : lexer.currentPos-lexer.lastWidth], nil -} - -func (lexer *Lexer) consumeLiteral() (token, error) { - start := lexer.currentPos - value, err := lexer.consumeUntil('`') - if err != nil { - return token{}, err - } - value = strings.Replace(value, "\\`", "`", -1) - return token{ - tokenType: tJSONLiteral, - value: value, - position: start, - length: len(value), - }, nil -} - -func (lexer *Lexer) consumeRawStringLiteral() (token, error) { - start := lexer.currentPos - currentIndex := start - current := lexer.next() - for current != '\'' && lexer.peek() != eof { - if current == '\\' && lexer.peek() == '\'' { - chunk := lexer.expression[currentIndex : lexer.currentPos-1] - lexer.buf.WriteString(chunk) - lexer.buf.WriteString("'") - lexer.next() - currentIndex = lexer.currentPos - } - current = lexer.next() - } - if lexer.lastWidth == 0 { - // Then we hit an EOF so we never reached the closing - // delimiter. - return token{}, SyntaxError{ - msg: "Unclosed delimiter: '", - Expression: lexer.expression, - Offset: len(lexer.expression), - } - } - if currentIndex < lexer.currentPos { - lexer.buf.WriteString(lexer.expression[currentIndex : lexer.currentPos-1]) - } - value := lexer.buf.String() - // Reset the buffer so it can reused again. - lexer.buf.Reset() - return token{ - tokenType: tStringLiteral, - value: value, - position: start, - length: len(value), - }, nil -} - -func (lexer *Lexer) syntaxError(msg string) SyntaxError { - return SyntaxError{ - msg: msg, - Expression: lexer.expression, - Offset: lexer.currentPos - 1, - } -} - -// Checks for a two char token, otherwise matches a single character -// token. This is used whenever a two char token overlaps a single -// char token, e.g. "||" -> tPipe, "|" -> tOr. -func (lexer *Lexer) matchOrElse(first rune, second rune, matchedType tokType, singleCharType tokType) token { - start := lexer.currentPos - lexer.lastWidth - nextRune := lexer.next() - var t token - if nextRune == second { - t = token{ - tokenType: matchedType, - value: string(first) + string(second), - position: start, - length: 2, - } - } else { - lexer.back() - t = token{ - tokenType: singleCharType, - value: string(first), - position: start, - length: 1, - } - } - return t -} - -func (lexer *Lexer) consumeLBracket() token { - // There's three options here: - // 1. A filter expression "[?" - // 2. A flatten operator "[]" - // 3. A bare rbracket "[" - start := lexer.currentPos - lexer.lastWidth - nextRune := lexer.next() - var t token - if nextRune == '?' { - t = token{ - tokenType: tFilter, - value: "[?", - position: start, - length: 2, - } - } else if nextRune == ']' { - t = token{ - tokenType: tFlatten, - value: "[]", - position: start, - length: 2, - } - } else { - t = token{ - tokenType: tLbracket, - value: "[", - position: start, - length: 1, - } - lexer.back() - } - return t -} - -func (lexer *Lexer) consumeQuotedIdentifier() (token, error) { - start := lexer.currentPos - value, err := lexer.consumeUntil('"') - if err != nil { - return token{}, err - } - var decoded string - asJSON := []byte("\"" + value + "\"") - if err := json.Unmarshal([]byte(asJSON), &decoded); err != nil { - return token{}, err - } - return token{ - tokenType: tQuotedIdentifier, - value: decoded, - position: start - 1, - length: len(decoded), - }, nil -} - -func (lexer *Lexer) consumeUnquotedIdentifier() token { - // Consume runes until we reach the end of an unquoted - // identifier. - start := lexer.currentPos - lexer.lastWidth - for { - r := lexer.next() - if r < 0 || r > 128 || identifierTrailingBits[uint64(r)/64]&(1<<(uint64(r)%64)) == 0 { - lexer.back() - break - } - } - value := lexer.expression[start:lexer.currentPos] - return token{ - tokenType: tUnquotedIdentifier, - value: value, - position: start, - length: lexer.currentPos - start, - } -} - -func (lexer *Lexer) consumeNumber() token { - // Consume runes until we reach something that's not a number. - start := lexer.currentPos - lexer.lastWidth - for { - r := lexer.next() - if r < '0' || r > '9' { - lexer.back() - break - } - } - value := lexer.expression[start:lexer.currentPos] - return token{ - tokenType: tNumber, - value: value, - position: start, - length: lexer.currentPos - start, - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/parser.go b/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/parser.go deleted file mode 100644 index c8f4bceb..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/parser.go +++ /dev/null @@ -1,603 +0,0 @@ -package jmespath - -import ( - "encoding/json" - "fmt" - "strconv" - "strings" -) - -type astNodeType int - -//go:generate stringer -type astNodeType -const ( - ASTEmpty astNodeType = iota - ASTComparator - ASTCurrentNode - ASTExpRef - ASTFunctionExpression - ASTField - ASTFilterProjection - ASTFlatten - ASTIdentity - ASTIndex - ASTIndexExpression - ASTKeyValPair - ASTLiteral - ASTMultiSelectHash - ASTMultiSelectList - ASTOrExpression - ASTAndExpression - ASTNotExpression - ASTPipe - ASTProjection - ASTSubexpression - ASTSlice - ASTValueProjection -) - -// ASTNode represents the abstract syntax tree of a JMESPath expression. -type ASTNode struct { - nodeType astNodeType - value interface{} - children []ASTNode -} - -func (node ASTNode) String() string { - return node.PrettyPrint(0) -} - -// PrettyPrint will pretty print the parsed AST. -// The AST is an implementation detail and this pretty print -// function is provided as a convenience method to help with -// debugging. You should not rely on its output as the internal -// structure of the AST may change at any time. -func (node ASTNode) PrettyPrint(indent int) string { - spaces := strings.Repeat(" ", indent) - output := fmt.Sprintf("%s%s {\n", spaces, node.nodeType) - nextIndent := indent + 2 - if node.value != nil { - if converted, ok := node.value.(fmt.Stringer); ok { - // Account for things like comparator nodes - // that are enums with a String() method. - output += fmt.Sprintf("%svalue: %s\n", strings.Repeat(" ", nextIndent), converted.String()) - } else { - output += fmt.Sprintf("%svalue: %#v\n", strings.Repeat(" ", nextIndent), node.value) - } - } - lastIndex := len(node.children) - if lastIndex > 0 { - output += fmt.Sprintf("%schildren: {\n", strings.Repeat(" ", nextIndent)) - childIndent := nextIndent + 2 - for _, elem := range node.children { - output += elem.PrettyPrint(childIndent) - } - } - output += fmt.Sprintf("%s}\n", spaces) - return output -} - -var bindingPowers = map[tokType]int{ - tEOF: 0, - tUnquotedIdentifier: 0, - tQuotedIdentifier: 0, - tRbracket: 0, - tRparen: 0, - tComma: 0, - tRbrace: 0, - tNumber: 0, - tCurrent: 0, - tExpref: 0, - tColon: 0, - tPipe: 1, - tOr: 2, - tAnd: 3, - tEQ: 5, - tLT: 5, - tLTE: 5, - tGT: 5, - tGTE: 5, - tNE: 5, - tFlatten: 9, - tStar: 20, - tFilter: 21, - tDot: 40, - tNot: 45, - tLbrace: 50, - tLbracket: 55, - tLparen: 60, -} - -// Parser holds state about the current expression being parsed. -type Parser struct { - expression string - tokens []token - index int -} - -// NewParser creates a new JMESPath parser. -func NewParser() *Parser { - p := Parser{} - return &p -} - -// Parse will compile a JMESPath expression. -func (p *Parser) Parse(expression string) (ASTNode, error) { - lexer := NewLexer() - p.expression = expression - p.index = 0 - tokens, err := lexer.tokenize(expression) - if err != nil { - return ASTNode{}, err - } - p.tokens = tokens - parsed, err := p.parseExpression(0) - if err != nil { - return ASTNode{}, err - } - if p.current() != tEOF { - return ASTNode{}, p.syntaxError(fmt.Sprintf( - "Unexpected token at the end of the expresssion: %s", p.current())) - } - return parsed, nil -} - -func (p *Parser) parseExpression(bindingPower int) (ASTNode, error) { - var err error - leftToken := p.lookaheadToken(0) - p.advance() - leftNode, err := p.nud(leftToken) - if err != nil { - return ASTNode{}, err - } - currentToken := p.current() - for bindingPower < bindingPowers[currentToken] { - p.advance() - leftNode, err = p.led(currentToken, leftNode) - if err != nil { - return ASTNode{}, err - } - currentToken = p.current() - } - return leftNode, nil -} - -func (p *Parser) parseIndexExpression() (ASTNode, error) { - if p.lookahead(0) == tColon || p.lookahead(1) == tColon { - return p.parseSliceExpression() - } - indexStr := p.lookaheadToken(0).value - parsedInt, err := strconv.Atoi(indexStr) - if err != nil { - return ASTNode{}, err - } - indexNode := ASTNode{nodeType: ASTIndex, value: parsedInt} - p.advance() - if err := p.match(tRbracket); err != nil { - return ASTNode{}, err - } - return indexNode, nil -} - -func (p *Parser) parseSliceExpression() (ASTNode, error) { - parts := []*int{nil, nil, nil} - index := 0 - current := p.current() - for current != tRbracket && index < 3 { - if current == tColon { - index++ - p.advance() - } else if current == tNumber { - parsedInt, err := strconv.Atoi(p.lookaheadToken(0).value) - if err != nil { - return ASTNode{}, err - } - parts[index] = &parsedInt - p.advance() - } else { - return ASTNode{}, p.syntaxError( - "Expected tColon or tNumber" + ", received: " + p.current().String()) - } - current = p.current() - } - if err := p.match(tRbracket); err != nil { - return ASTNode{}, err - } - return ASTNode{ - nodeType: ASTSlice, - value: parts, - }, nil -} - -func (p *Parser) match(tokenType tokType) error { - if p.current() == tokenType { - p.advance() - return nil - } - return p.syntaxError("Expected " + tokenType.String() + ", received: " + p.current().String()) -} - -func (p *Parser) led(tokenType tokType, node ASTNode) (ASTNode, error) { - switch tokenType { - case tDot: - if p.current() != tStar { - right, err := p.parseDotRHS(bindingPowers[tDot]) - return ASTNode{ - nodeType: ASTSubexpression, - children: []ASTNode{node, right}, - }, err - } - p.advance() - right, err := p.parseProjectionRHS(bindingPowers[tDot]) - return ASTNode{ - nodeType: ASTValueProjection, - children: []ASTNode{node, right}, - }, err - case tPipe: - right, err := p.parseExpression(bindingPowers[tPipe]) - return ASTNode{nodeType: ASTPipe, children: []ASTNode{node, right}}, err - case tOr: - right, err := p.parseExpression(bindingPowers[tOr]) - return ASTNode{nodeType: ASTOrExpression, children: []ASTNode{node, right}}, err - case tAnd: - right, err := p.parseExpression(bindingPowers[tAnd]) - return ASTNode{nodeType: ASTAndExpression, children: []ASTNode{node, right}}, err - case tLparen: - name := node.value - var args []ASTNode - for p.current() != tRparen { - expression, err := p.parseExpression(0) - if err != nil { - return ASTNode{}, err - } - if p.current() == tComma { - if err := p.match(tComma); err != nil { - return ASTNode{}, err - } - } - args = append(args, expression) - } - if err := p.match(tRparen); err != nil { - return ASTNode{}, err - } - return ASTNode{ - nodeType: ASTFunctionExpression, - value: name, - children: args, - }, nil - case tFilter: - return p.parseFilter(node) - case tFlatten: - left := ASTNode{nodeType: ASTFlatten, children: []ASTNode{node}} - right, err := p.parseProjectionRHS(bindingPowers[tFlatten]) - return ASTNode{ - nodeType: ASTProjection, - children: []ASTNode{left, right}, - }, err - case tEQ, tNE, tGT, tGTE, tLT, tLTE: - right, err := p.parseExpression(bindingPowers[tokenType]) - if err != nil { - return ASTNode{}, err - } - return ASTNode{ - nodeType: ASTComparator, - value: tokenType, - children: []ASTNode{node, right}, - }, nil - case tLbracket: - tokenType := p.current() - var right ASTNode - var err error - if tokenType == tNumber || tokenType == tColon { - right, err = p.parseIndexExpression() - if err != nil { - return ASTNode{}, err - } - return p.projectIfSlice(node, right) - } - // Otherwise this is a projection. - if err := p.match(tStar); err != nil { - return ASTNode{}, err - } - if err := p.match(tRbracket); err != nil { - return ASTNode{}, err - } - right, err = p.parseProjectionRHS(bindingPowers[tStar]) - if err != nil { - return ASTNode{}, err - } - return ASTNode{ - nodeType: ASTProjection, - children: []ASTNode{node, right}, - }, nil - } - return ASTNode{}, p.syntaxError("Unexpected token: " + tokenType.String()) -} - -func (p *Parser) nud(token token) (ASTNode, error) { - switch token.tokenType { - case tJSONLiteral: - var parsed interface{} - err := json.Unmarshal([]byte(token.value), &parsed) - if err != nil { - return ASTNode{}, err - } - return ASTNode{nodeType: ASTLiteral, value: parsed}, nil - case tStringLiteral: - return ASTNode{nodeType: ASTLiteral, value: token.value}, nil - case tUnquotedIdentifier: - return ASTNode{ - nodeType: ASTField, - value: token.value, - }, nil - case tQuotedIdentifier: - node := ASTNode{nodeType: ASTField, value: token.value} - if p.current() == tLparen { - return ASTNode{}, p.syntaxErrorToken("Can't have quoted identifier as function name.", token) - } - return node, nil - case tStar: - left := ASTNode{nodeType: ASTIdentity} - var right ASTNode - var err error - if p.current() == tRbracket { - right = ASTNode{nodeType: ASTIdentity} - } else { - right, err = p.parseProjectionRHS(bindingPowers[tStar]) - } - return ASTNode{nodeType: ASTValueProjection, children: []ASTNode{left, right}}, err - case tFilter: - return p.parseFilter(ASTNode{nodeType: ASTIdentity}) - case tLbrace: - return p.parseMultiSelectHash() - case tFlatten: - left := ASTNode{ - nodeType: ASTFlatten, - children: []ASTNode{ASTNode{nodeType: ASTIdentity}}, - } - right, err := p.parseProjectionRHS(bindingPowers[tFlatten]) - if err != nil { - return ASTNode{}, err - } - return ASTNode{nodeType: ASTProjection, children: []ASTNode{left, right}}, nil - case tLbracket: - tokenType := p.current() - //var right ASTNode - if tokenType == tNumber || tokenType == tColon { - right, err := p.parseIndexExpression() - if err != nil { - return ASTNode{}, nil - } - return p.projectIfSlice(ASTNode{nodeType: ASTIdentity}, right) - } else if tokenType == tStar && p.lookahead(1) == tRbracket { - p.advance() - p.advance() - right, err := p.parseProjectionRHS(bindingPowers[tStar]) - if err != nil { - return ASTNode{}, err - } - return ASTNode{ - nodeType: ASTProjection, - children: []ASTNode{ASTNode{nodeType: ASTIdentity}, right}, - }, nil - } else { - return p.parseMultiSelectList() - } - case tCurrent: - return ASTNode{nodeType: ASTCurrentNode}, nil - case tExpref: - expression, err := p.parseExpression(bindingPowers[tExpref]) - if err != nil { - return ASTNode{}, err - } - return ASTNode{nodeType: ASTExpRef, children: []ASTNode{expression}}, nil - case tNot: - expression, err := p.parseExpression(bindingPowers[tNot]) - if err != nil { - return ASTNode{}, err - } - return ASTNode{nodeType: ASTNotExpression, children: []ASTNode{expression}}, nil - case tLparen: - expression, err := p.parseExpression(0) - if err != nil { - return ASTNode{}, err - } - if err := p.match(tRparen); err != nil { - return ASTNode{}, err - } - return expression, nil - case tEOF: - return ASTNode{}, p.syntaxErrorToken("Incomplete expression", token) - } - - return ASTNode{}, p.syntaxErrorToken("Invalid token: "+token.tokenType.String(), token) -} - -func (p *Parser) parseMultiSelectList() (ASTNode, error) { - var expressions []ASTNode - for { - expression, err := p.parseExpression(0) - if err != nil { - return ASTNode{}, err - } - expressions = append(expressions, expression) - if p.current() == tRbracket { - break - } - err = p.match(tComma) - if err != nil { - return ASTNode{}, err - } - } - err := p.match(tRbracket) - if err != nil { - return ASTNode{}, err - } - return ASTNode{ - nodeType: ASTMultiSelectList, - children: expressions, - }, nil -} - -func (p *Parser) parseMultiSelectHash() (ASTNode, error) { - var children []ASTNode - for { - keyToken := p.lookaheadToken(0) - if err := p.match(tUnquotedIdentifier); err != nil { - if err := p.match(tQuotedIdentifier); err != nil { - return ASTNode{}, p.syntaxError("Expected tQuotedIdentifier or tUnquotedIdentifier") - } - } - keyName := keyToken.value - err := p.match(tColon) - if err != nil { - return ASTNode{}, err - } - value, err := p.parseExpression(0) - if err != nil { - return ASTNode{}, err - } - node := ASTNode{ - nodeType: ASTKeyValPair, - value: keyName, - children: []ASTNode{value}, - } - children = append(children, node) - if p.current() == tComma { - err := p.match(tComma) - if err != nil { - return ASTNode{}, nil - } - } else if p.current() == tRbrace { - err := p.match(tRbrace) - if err != nil { - return ASTNode{}, nil - } - break - } - } - return ASTNode{ - nodeType: ASTMultiSelectHash, - children: children, - }, nil -} - -func (p *Parser) projectIfSlice(left ASTNode, right ASTNode) (ASTNode, error) { - indexExpr := ASTNode{ - nodeType: ASTIndexExpression, - children: []ASTNode{left, right}, - } - if right.nodeType == ASTSlice { - right, err := p.parseProjectionRHS(bindingPowers[tStar]) - return ASTNode{ - nodeType: ASTProjection, - children: []ASTNode{indexExpr, right}, - }, err - } - return indexExpr, nil -} -func (p *Parser) parseFilter(node ASTNode) (ASTNode, error) { - var right, condition ASTNode - var err error - condition, err = p.parseExpression(0) - if err != nil { - return ASTNode{}, err - } - if err := p.match(tRbracket); err != nil { - return ASTNode{}, err - } - if p.current() == tFlatten { - right = ASTNode{nodeType: ASTIdentity} - } else { - right, err = p.parseProjectionRHS(bindingPowers[tFilter]) - if err != nil { - return ASTNode{}, err - } - } - - return ASTNode{ - nodeType: ASTFilterProjection, - children: []ASTNode{node, right, condition}, - }, nil -} - -func (p *Parser) parseDotRHS(bindingPower int) (ASTNode, error) { - lookahead := p.current() - if tokensOneOf([]tokType{tQuotedIdentifier, tUnquotedIdentifier, tStar}, lookahead) { - return p.parseExpression(bindingPower) - } else if lookahead == tLbracket { - if err := p.match(tLbracket); err != nil { - return ASTNode{}, err - } - return p.parseMultiSelectList() - } else if lookahead == tLbrace { - if err := p.match(tLbrace); err != nil { - return ASTNode{}, err - } - return p.parseMultiSelectHash() - } - return ASTNode{}, p.syntaxError("Expected identifier, lbracket, or lbrace") -} - -func (p *Parser) parseProjectionRHS(bindingPower int) (ASTNode, error) { - current := p.current() - if bindingPowers[current] < 10 { - return ASTNode{nodeType: ASTIdentity}, nil - } else if current == tLbracket { - return p.parseExpression(bindingPower) - } else if current == tFilter { - return p.parseExpression(bindingPower) - } else if current == tDot { - err := p.match(tDot) - if err != nil { - return ASTNode{}, err - } - return p.parseDotRHS(bindingPower) - } else { - return ASTNode{}, p.syntaxError("Error") - } -} - -func (p *Parser) lookahead(number int) tokType { - return p.lookaheadToken(number).tokenType -} - -func (p *Parser) current() tokType { - return p.lookahead(0) -} - -func (p *Parser) lookaheadToken(number int) token { - return p.tokens[p.index+number] -} - -func (p *Parser) advance() { - p.index++ -} - -func tokensOneOf(elements []tokType, token tokType) bool { - for _, elem := range elements { - if elem == token { - return true - } - } - return false -} - -func (p *Parser) syntaxError(msg string) SyntaxError { - return SyntaxError{ - msg: msg, - Expression: p.expression, - Offset: p.lookaheadToken(0).position, - } -} - -// Create a SyntaxError based on the provided token. -// This differs from syntaxError() which creates a SyntaxError -// based on the current lookahead token. -func (p *Parser) syntaxErrorToken(msg string, t token) SyntaxError { - return SyntaxError{ - msg: msg, - Expression: p.expression, - Offset: t.position, - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/toktype_string.go b/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/toktype_string.go deleted file mode 100644 index dae79cbd..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/toktype_string.go +++ /dev/null @@ -1,16 +0,0 @@ -// generated by stringer -type=tokType; DO NOT EDIT - -package jmespath - -import "fmt" - -const _tokType_name = "tUnknowntStartDottFiltertFlattentLparentRparentLbrackettRbrackettLbracetRbracetOrtPipetNumbertUnquotedIdentifiertQuotedIdentifiertCommatColontLTtLTEtGTtGTEtEQtNEtJSONLiteraltStringLiteraltCurrenttExpreftAndtNottEOF" - -var _tokType_index = [...]uint8{0, 8, 13, 17, 24, 32, 39, 46, 55, 64, 71, 78, 81, 86, 93, 112, 129, 135, 141, 144, 148, 151, 155, 158, 161, 173, 187, 195, 202, 206, 210, 214} - -func (i tokType) String() string { - if i < 0 || i >= tokType(len(_tokType_index)-1) { - return fmt.Sprintf("tokType(%d)", i) - } - return _tokType_name[_tokType_index[i]:_tokType_index[i+1]] -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/util.go b/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/util.go deleted file mode 100644 index ddc1b7d7..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/jmespath/go-jmespath/util.go +++ /dev/null @@ -1,185 +0,0 @@ -package jmespath - -import ( - "errors" - "reflect" -) - -// IsFalse determines if an object is false based on the JMESPath spec. -// JMESPath defines false values to be any of: -// - An empty string array, or hash. -// - The boolean value false. -// - nil -func isFalse(value interface{}) bool { - switch v := value.(type) { - case bool: - return !v - case []interface{}: - return len(v) == 0 - case map[string]interface{}: - return len(v) == 0 - case string: - return len(v) == 0 - case nil: - return true - } - // Try the reflection cases before returning false. - rv := reflect.ValueOf(value) - switch rv.Kind() { - case reflect.Struct: - // A struct type will never be false, even if - // all of its values are the zero type. - return false - case reflect.Slice, reflect.Map: - return rv.Len() == 0 - case reflect.Ptr: - if rv.IsNil() { - return true - } - // If it's a pointer type, we'll try to deref the pointer - // and evaluate the pointer value for isFalse. - element := rv.Elem() - return isFalse(element.Interface()) - } - return false -} - -// ObjsEqual is a generic object equality check. -// It will take two arbitrary objects and recursively determine -// if they are equal. -func objsEqual(left interface{}, right interface{}) bool { - return reflect.DeepEqual(left, right) -} - -// SliceParam refers to a single part of a slice. -// A slice consists of a start, a stop, and a step, similar to -// python slices. -type sliceParam struct { - N int - Specified bool -} - -// Slice supports [start:stop:step] style slicing that's supported in JMESPath. -func slice(slice []interface{}, parts []sliceParam) ([]interface{}, error) { - computed, err := computeSliceParams(len(slice), parts) - if err != nil { - return nil, err - } - start, stop, step := computed[0], computed[1], computed[2] - result := []interface{}{} - if step > 0 { - for i := start; i < stop; i += step { - result = append(result, slice[i]) - } - } else { - for i := start; i > stop; i += step { - result = append(result, slice[i]) - } - } - return result, nil -} - -func computeSliceParams(length int, parts []sliceParam) ([]int, error) { - var start, stop, step int - if !parts[2].Specified { - step = 1 - } else if parts[2].N == 0 { - return nil, errors.New("Invalid slice, step cannot be 0") - } else { - step = parts[2].N - } - var stepValueNegative bool - if step < 0 { - stepValueNegative = true - } else { - stepValueNegative = false - } - - if !parts[0].Specified { - if stepValueNegative { - start = length - 1 - } else { - start = 0 - } - } else { - start = capSlice(length, parts[0].N, step) - } - - if !parts[1].Specified { - if stepValueNegative { - stop = -1 - } else { - stop = length - } - } else { - stop = capSlice(length, parts[1].N, step) - } - return []int{start, stop, step}, nil -} - -func capSlice(length int, actual int, step int) int { - if actual < 0 { - actual += length - if actual < 0 { - if step < 0 { - actual = -1 - } else { - actual = 0 - } - } - } else if actual >= length { - if step < 0 { - actual = length - 1 - } else { - actual = length - } - } - return actual -} - -// ToArrayNum converts an empty interface type to a slice of float64. -// If any element in the array cannot be converted, then nil is returned -// along with a second value of false. -func toArrayNum(data interface{}) ([]float64, bool) { - // Is there a better way to do this with reflect? - if d, ok := data.([]interface{}); ok { - result := make([]float64, len(d)) - for i, el := range d { - item, ok := el.(float64) - if !ok { - return nil, false - } - result[i] = item - } - return result, true - } - return nil, false -} - -// ToArrayStr converts an empty interface type to a slice of strings. -// If any element in the array cannot be converted, then nil is returned -// along with a second value of false. If the input data could be entirely -// converted, then the converted data, along with a second value of true, -// will be returned. -func toArrayStr(data interface{}) ([]string, bool) { - // Is there a better way to do this with reflect? - if d, ok := data.([]interface{}); ok { - result := make([]string, len(d)) - for i, el := range d { - item, ok := el.(string) - if !ok { - return nil, false - } - result[i] = item - } - return result, true - } - return nil, false -} - -func isSliceType(v interface{}) bool { - if v == nil { - return false - } - return reflect.TypeOf(v).Kind() == reflect.Slice -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/mitchellh/mapstructure/LICENSE b/vendor/github.com/docker/machine/vendor/github.com/mitchellh/mapstructure/LICENSE deleted file mode 100644 index f9c841a5..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/mitchellh/mapstructure/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013 Mitchell Hashimoto - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/github.com/docker/machine/vendor/github.com/mitchellh/mapstructure/README.md b/vendor/github.com/docker/machine/vendor/github.com/mitchellh/mapstructure/README.md deleted file mode 100644 index 659d6885..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/mitchellh/mapstructure/README.md +++ /dev/null @@ -1,46 +0,0 @@ -# mapstructure - -mapstructure is a Go library for decoding generic map values to structures -and vice versa, while providing helpful error handling. - -This library is most useful when decoding values from some data stream (JSON, -Gob, etc.) where you don't _quite_ know the structure of the underlying data -until you read a part of it. You can therefore read a `map[string]interface{}` -and use this library to decode it into the proper underlying native Go -structure. - -## Installation - -Standard `go get`: - -``` -$ go get github.com/mitchellh/mapstructure -``` - -## Usage & Example - -For usage and examples see the [Godoc](http://godoc.org/github.com/mitchellh/mapstructure). - -The `Decode` function has examples associated with it there. - -## But Why?! - -Go offers fantastic standard libraries for decoding formats such as JSON. -The standard method is to have a struct pre-created, and populate that struct -from the bytes of the encoded format. This is great, but the problem is if -you have configuration or an encoding that changes slightly depending on -specific fields. For example, consider this JSON: - -```json -{ - "type": "person", - "name": "Mitchell" -} -``` - -Perhaps we can't populate a specific structure without first reading -the "type" field from the JSON. We could always do two passes over the -decoding of the JSON (reading the "type" first, and the rest later). -However, it is much simpler to just decode this into a `map[string]interface{}` -structure, read the "type" key, then use something like this library -to decode it into the proper structure. diff --git a/vendor/github.com/docker/machine/vendor/github.com/mitchellh/mapstructure/decode_hooks.go b/vendor/github.com/docker/machine/vendor/github.com/mitchellh/mapstructure/decode_hooks.go deleted file mode 100644 index 087a392b..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/mitchellh/mapstructure/decode_hooks.go +++ /dev/null @@ -1,84 +0,0 @@ -package mapstructure - -import ( - "reflect" - "strconv" - "strings" -) - -// ComposeDecodeHookFunc creates a single DecodeHookFunc that -// automatically composes multiple DecodeHookFuncs. -// -// The composed funcs are called in order, with the result of the -// previous transformation. -func ComposeDecodeHookFunc(fs ...DecodeHookFunc) DecodeHookFunc { - return func( - f reflect.Kind, - t reflect.Kind, - data interface{}) (interface{}, error) { - var err error - for _, f1 := range fs { - data, err = f1(f, t, data) - if err != nil { - return nil, err - } - - // Modify the from kind to be correct with the new data - f = getKind(reflect.ValueOf(data)) - } - - return data, nil - } -} - -// StringToSliceHookFunc returns a DecodeHookFunc that converts -// string to []string by splitting on the given sep. -func StringToSliceHookFunc(sep string) DecodeHookFunc { - return func( - f reflect.Kind, - t reflect.Kind, - data interface{}) (interface{}, error) { - if f != reflect.String || t != reflect.Slice { - return data, nil - } - - raw := data.(string) - if raw == "" { - return []string{}, nil - } - - return strings.Split(raw, sep), nil - } -} - -func WeaklyTypedHook( - f reflect.Kind, - t reflect.Kind, - data interface{}) (interface{}, error) { - dataVal := reflect.ValueOf(data) - switch t { - case reflect.String: - switch f { - case reflect.Bool: - if dataVal.Bool() { - return "1", nil - } else { - return "0", nil - } - case reflect.Float32: - return strconv.FormatFloat(dataVal.Float(), 'f', -1, 64), nil - case reflect.Int: - return strconv.FormatInt(dataVal.Int(), 10), nil - case reflect.Slice: - dataType := dataVal.Type() - elemKind := dataType.Elem().Kind() - if elemKind == reflect.Uint8 { - return string(dataVal.Interface().([]uint8)), nil - } - case reflect.Uint: - return strconv.FormatUint(dataVal.Uint(), 10), nil - } - } - - return data, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/mitchellh/mapstructure/error.go b/vendor/github.com/docker/machine/vendor/github.com/mitchellh/mapstructure/error.go deleted file mode 100644 index 3460799f..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/mitchellh/mapstructure/error.go +++ /dev/null @@ -1,32 +0,0 @@ -package mapstructure - -import ( - "fmt" - "strings" -) - -// Error implements the error interface and can represents multiple -// errors that occur in the course of a single decode. -type Error struct { - Errors []string -} - -func (e *Error) Error() string { - points := make([]string, len(e.Errors)) - for i, err := range e.Errors { - points[i] = fmt.Sprintf("* %s", err) - } - - return fmt.Sprintf( - "%d error(s) decoding:\n\n%s", - len(e.Errors), strings.Join(points, "\n")) -} - -func appendErrors(errors []string, err error) []string { - switch e := err.(type) { - case *Error: - return append(errors, e.Errors...) - default: - return append(errors, e.Error()) - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/mitchellh/mapstructure/mapstructure.go b/vendor/github.com/docker/machine/vendor/github.com/mitchellh/mapstructure/mapstructure.go deleted file mode 100644 index 381ba5d4..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/mitchellh/mapstructure/mapstructure.go +++ /dev/null @@ -1,704 +0,0 @@ -// The mapstructure package exposes functionality to convert an -// abitrary map[string]interface{} into a native Go structure. -// -// The Go structure can be arbitrarily complex, containing slices, -// other structs, etc. and the decoder will properly decode nested -// maps and so on into the proper structures in the native Go struct. -// See the examples to see what the decoder is capable of. -package mapstructure - -import ( - "errors" - "fmt" - "reflect" - "sort" - "strconv" - "strings" -) - -// DecodeHookFunc is the callback function that can be used for -// data transformations. See "DecodeHook" in the DecoderConfig -// struct. -type DecodeHookFunc func( - from reflect.Kind, - to reflect.Kind, - data interface{}) (interface{}, error) - -// DecoderConfig is the configuration that is used to create a new decoder -// and allows customization of various aspects of decoding. -type DecoderConfig struct { - // DecodeHook, if set, will be called before any decoding and any - // type conversion (if WeaklyTypedInput is on). This lets you modify - // the values before they're set down onto the resulting struct. - // - // If an error is returned, the entire decode will fail with that - // error. - DecodeHook DecodeHookFunc - - // If ErrorUnused is true, then it is an error for there to exist - // keys in the original map that were unused in the decoding process - // (extra keys). - ErrorUnused bool - - // If WeaklyTypedInput is true, the decoder will make the following - // "weak" conversions: - // - // - bools to string (true = "1", false = "0") - // - numbers to string (base 10) - // - bools to int/uint (true = 1, false = 0) - // - strings to int/uint (base implied by prefix) - // - int to bool (true if value != 0) - // - string to bool (accepts: 1, t, T, TRUE, true, True, 0, f, F, - // FALSE, false, False. Anything else is an error) - // - empty array = empty map and vice versa - // - WeaklyTypedInput bool - - // Metadata is the struct that will contain extra metadata about - // the decoding. If this is nil, then no metadata will be tracked. - Metadata *Metadata - - // Result is a pointer to the struct that will contain the decoded - // value. - Result interface{} - - // The tag name that mapstructure reads for field names. This - // defaults to "mapstructure" - TagName string -} - -// A Decoder takes a raw interface value and turns it into structured -// data, keeping track of rich error information along the way in case -// anything goes wrong. Unlike the basic top-level Decode method, you can -// more finely control how the Decoder behaves using the DecoderConfig -// structure. The top-level Decode method is just a convenience that sets -// up the most basic Decoder. -type Decoder struct { - config *DecoderConfig -} - -// Metadata contains information about decoding a structure that -// is tedious or difficult to get otherwise. -type Metadata struct { - // Keys are the keys of the structure which were successfully decoded - Keys []string - - // Unused is a slice of keys that were found in the raw value but - // weren't decoded since there was no matching field in the result interface - Unused []string -} - -// Decode takes a map and uses reflection to convert it into the -// given Go native structure. val must be a pointer to a struct. -func Decode(m interface{}, rawVal interface{}) error { - config := &DecoderConfig{ - Metadata: nil, - Result: rawVal, - } - - decoder, err := NewDecoder(config) - if err != nil { - return err - } - - return decoder.Decode(m) -} - -// WeakDecode is the same as Decode but is shorthand to enable -// WeaklyTypedInput. See DecoderConfig for more info. -func WeakDecode(input, output interface{}) error { - config := &DecoderConfig{ - Metadata: nil, - Result: output, - WeaklyTypedInput: true, - } - - decoder, err := NewDecoder(config) - if err != nil { - return err - } - - return decoder.Decode(input) -} - -// NewDecoder returns a new decoder for the given configuration. Once -// a decoder has been returned, the same configuration must not be used -// again. -func NewDecoder(config *DecoderConfig) (*Decoder, error) { - val := reflect.ValueOf(config.Result) - if val.Kind() != reflect.Ptr { - return nil, errors.New("result must be a pointer") - } - - val = val.Elem() - if !val.CanAddr() { - return nil, errors.New("result must be addressable (a pointer)") - } - - if config.Metadata != nil { - if config.Metadata.Keys == nil { - config.Metadata.Keys = make([]string, 0) - } - - if config.Metadata.Unused == nil { - config.Metadata.Unused = make([]string, 0) - } - } - - if config.TagName == "" { - config.TagName = "mapstructure" - } - - result := &Decoder{ - config: config, - } - - return result, nil -} - -// Decode decodes the given raw interface to the target pointer specified -// by the configuration. -func (d *Decoder) Decode(raw interface{}) error { - return d.decode("", raw, reflect.ValueOf(d.config.Result).Elem()) -} - -// Decodes an unknown data type into a specific reflection value. -func (d *Decoder) decode(name string, data interface{}, val reflect.Value) error { - if data == nil { - // If the data is nil, then we don't set anything. - return nil - } - - dataVal := reflect.ValueOf(data) - if !dataVal.IsValid() { - // If the data value is invalid, then we just set the value - // to be the zero value. - val.Set(reflect.Zero(val.Type())) - return nil - } - - if d.config.DecodeHook != nil { - // We have a DecodeHook, so let's pre-process the data. - var err error - data, err = d.config.DecodeHook(getKind(dataVal), getKind(val), data) - if err != nil { - return err - } - } - - var err error - dataKind := getKind(val) - switch dataKind { - case reflect.Bool: - err = d.decodeBool(name, data, val) - case reflect.Interface: - err = d.decodeBasic(name, data, val) - case reflect.String: - err = d.decodeString(name, data, val) - case reflect.Int: - err = d.decodeInt(name, data, val) - case reflect.Uint: - err = d.decodeUint(name, data, val) - case reflect.Float32: - err = d.decodeFloat(name, data, val) - case reflect.Struct: - err = d.decodeStruct(name, data, val) - case reflect.Map: - err = d.decodeMap(name, data, val) - case reflect.Ptr: - err = d.decodePtr(name, data, val) - case reflect.Slice: - err = d.decodeSlice(name, data, val) - default: - // If we reached this point then we weren't able to decode it - return fmt.Errorf("%s: unsupported type: %s", name, dataKind) - } - - // If we reached here, then we successfully decoded SOMETHING, so - // mark the key as used if we're tracking metadata. - if d.config.Metadata != nil && name != "" { - d.config.Metadata.Keys = append(d.config.Metadata.Keys, name) - } - - return err -} - -// This decodes a basic type (bool, int, string, etc.) and sets the -// value to "data" of that type. -func (d *Decoder) decodeBasic(name string, data interface{}, val reflect.Value) error { - dataVal := reflect.ValueOf(data) - dataValType := dataVal.Type() - if !dataValType.AssignableTo(val.Type()) { - return fmt.Errorf( - "'%s' expected type '%s', got '%s'", - name, val.Type(), dataValType) - } - - val.Set(dataVal) - return nil -} - -func (d *Decoder) decodeString(name string, data interface{}, val reflect.Value) error { - dataVal := reflect.ValueOf(data) - dataKind := getKind(dataVal) - - converted := true - switch { - case dataKind == reflect.String: - val.SetString(dataVal.String()) - case dataKind == reflect.Bool && d.config.WeaklyTypedInput: - if dataVal.Bool() { - val.SetString("1") - } else { - val.SetString("0") - } - case dataKind == reflect.Int && d.config.WeaklyTypedInput: - val.SetString(strconv.FormatInt(dataVal.Int(), 10)) - case dataKind == reflect.Uint && d.config.WeaklyTypedInput: - val.SetString(strconv.FormatUint(dataVal.Uint(), 10)) - case dataKind == reflect.Float32 && d.config.WeaklyTypedInput: - val.SetString(strconv.FormatFloat(dataVal.Float(), 'f', -1, 64)) - case dataKind == reflect.Slice && d.config.WeaklyTypedInput: - dataType := dataVal.Type() - elemKind := dataType.Elem().Kind() - switch { - case elemKind == reflect.Uint8: - val.SetString(string(dataVal.Interface().([]uint8))) - default: - converted = false - } - default: - converted = false - } - - if !converted { - return fmt.Errorf( - "'%s' expected type '%s', got unconvertible type '%s'", - name, val.Type(), dataVal.Type()) - } - - return nil -} - -func (d *Decoder) decodeInt(name string, data interface{}, val reflect.Value) error { - dataVal := reflect.ValueOf(data) - dataKind := getKind(dataVal) - - switch { - case dataKind == reflect.Int: - val.SetInt(dataVal.Int()) - case dataKind == reflect.Uint: - val.SetInt(int64(dataVal.Uint())) - case dataKind == reflect.Float32: - val.SetInt(int64(dataVal.Float())) - case dataKind == reflect.Bool && d.config.WeaklyTypedInput: - if dataVal.Bool() { - val.SetInt(1) - } else { - val.SetInt(0) - } - case dataKind == reflect.String && d.config.WeaklyTypedInput: - i, err := strconv.ParseInt(dataVal.String(), 0, val.Type().Bits()) - if err == nil { - val.SetInt(i) - } else { - return fmt.Errorf("cannot parse '%s' as int: %s", name, err) - } - default: - return fmt.Errorf( - "'%s' expected type '%s', got unconvertible type '%s'", - name, val.Type(), dataVal.Type()) - } - - return nil -} - -func (d *Decoder) decodeUint(name string, data interface{}, val reflect.Value) error { - dataVal := reflect.ValueOf(data) - dataKind := getKind(dataVal) - - switch { - case dataKind == reflect.Int: - val.SetUint(uint64(dataVal.Int())) - case dataKind == reflect.Uint: - val.SetUint(dataVal.Uint()) - case dataKind == reflect.Float32: - val.SetUint(uint64(dataVal.Float())) - case dataKind == reflect.Bool && d.config.WeaklyTypedInput: - if dataVal.Bool() { - val.SetUint(1) - } else { - val.SetUint(0) - } - case dataKind == reflect.String && d.config.WeaklyTypedInput: - i, err := strconv.ParseUint(dataVal.String(), 0, val.Type().Bits()) - if err == nil { - val.SetUint(i) - } else { - return fmt.Errorf("cannot parse '%s' as uint: %s", name, err) - } - default: - return fmt.Errorf( - "'%s' expected type '%s', got unconvertible type '%s'", - name, val.Type(), dataVal.Type()) - } - - return nil -} - -func (d *Decoder) decodeBool(name string, data interface{}, val reflect.Value) error { - dataVal := reflect.ValueOf(data) - dataKind := getKind(dataVal) - - switch { - case dataKind == reflect.Bool: - val.SetBool(dataVal.Bool()) - case dataKind == reflect.Int && d.config.WeaklyTypedInput: - val.SetBool(dataVal.Int() != 0) - case dataKind == reflect.Uint && d.config.WeaklyTypedInput: - val.SetBool(dataVal.Uint() != 0) - case dataKind == reflect.Float32 && d.config.WeaklyTypedInput: - val.SetBool(dataVal.Float() != 0) - case dataKind == reflect.String && d.config.WeaklyTypedInput: - b, err := strconv.ParseBool(dataVal.String()) - if err == nil { - val.SetBool(b) - } else if dataVal.String() == "" { - val.SetBool(false) - } else { - return fmt.Errorf("cannot parse '%s' as bool: %s", name, err) - } - default: - return fmt.Errorf( - "'%s' expected type '%s', got unconvertible type '%s'", - name, val.Type(), dataVal.Type()) - } - - return nil -} - -func (d *Decoder) decodeFloat(name string, data interface{}, val reflect.Value) error { - dataVal := reflect.ValueOf(data) - dataKind := getKind(dataVal) - - switch { - case dataKind == reflect.Int: - val.SetFloat(float64(dataVal.Int())) - case dataKind == reflect.Uint: - val.SetFloat(float64(dataVal.Uint())) - case dataKind == reflect.Float32: - val.SetFloat(float64(dataVal.Float())) - case dataKind == reflect.Bool && d.config.WeaklyTypedInput: - if dataVal.Bool() { - val.SetFloat(1) - } else { - val.SetFloat(0) - } - case dataKind == reflect.String && d.config.WeaklyTypedInput: - f, err := strconv.ParseFloat(dataVal.String(), val.Type().Bits()) - if err == nil { - val.SetFloat(f) - } else { - return fmt.Errorf("cannot parse '%s' as float: %s", name, err) - } - default: - return fmt.Errorf( - "'%s' expected type '%s', got unconvertible type '%s'", - name, val.Type(), dataVal.Type()) - } - - return nil -} - -func (d *Decoder) decodeMap(name string, data interface{}, val reflect.Value) error { - valType := val.Type() - valKeyType := valType.Key() - valElemType := valType.Elem() - - // Make a new map to hold our result - mapType := reflect.MapOf(valKeyType, valElemType) - valMap := reflect.MakeMap(mapType) - - // Check input type - dataVal := reflect.Indirect(reflect.ValueOf(data)) - if dataVal.Kind() != reflect.Map { - // Accept empty array/slice instead of an empty map in weakly typed mode - if d.config.WeaklyTypedInput && - (dataVal.Kind() == reflect.Slice || dataVal.Kind() == reflect.Array) && - dataVal.Len() == 0 { - val.Set(valMap) - return nil - } else { - return fmt.Errorf("'%s' expected a map, got '%s'", name, dataVal.Kind()) - } - } - - // Accumulate errors - errors := make([]string, 0) - - for _, k := range dataVal.MapKeys() { - fieldName := fmt.Sprintf("%s[%s]", name, k) - - // First decode the key into the proper type - currentKey := reflect.Indirect(reflect.New(valKeyType)) - if err := d.decode(fieldName, k.Interface(), currentKey); err != nil { - errors = appendErrors(errors, err) - continue - } - - // Next decode the data into the proper type - v := dataVal.MapIndex(k).Interface() - currentVal := reflect.Indirect(reflect.New(valElemType)) - if err := d.decode(fieldName, v, currentVal); err != nil { - errors = appendErrors(errors, err) - continue - } - - valMap.SetMapIndex(currentKey, currentVal) - } - - // Set the built up map to the value - val.Set(valMap) - - // If we had errors, return those - if len(errors) > 0 { - return &Error{errors} - } - - return nil -} - -func (d *Decoder) decodePtr(name string, data interface{}, val reflect.Value) error { - // Create an element of the concrete (non pointer) type and decode - // into that. Then set the value of the pointer to this type. - valType := val.Type() - valElemType := valType.Elem() - realVal := reflect.New(valElemType) - if err := d.decode(name, data, reflect.Indirect(realVal)); err != nil { - return err - } - - val.Set(realVal) - return nil -} - -func (d *Decoder) decodeSlice(name string, data interface{}, val reflect.Value) error { - dataVal := reflect.Indirect(reflect.ValueOf(data)) - dataValKind := dataVal.Kind() - valType := val.Type() - valElemType := valType.Elem() - sliceType := reflect.SliceOf(valElemType) - - // Check input type - if dataValKind != reflect.Array && dataValKind != reflect.Slice { - // Accept empty map instead of array/slice in weakly typed mode - if d.config.WeaklyTypedInput && dataVal.Kind() == reflect.Map && dataVal.Len() == 0 { - val.Set(reflect.MakeSlice(sliceType, 0, 0)) - return nil - } else { - return fmt.Errorf( - "'%s': source data must be an array or slice, got %s", name, dataValKind) - } - } - - // Make a new slice to hold our result, same size as the original data. - valSlice := reflect.MakeSlice(sliceType, dataVal.Len(), dataVal.Len()) - - // Accumulate any errors - errors := make([]string, 0) - - for i := 0; i < dataVal.Len(); i++ { - currentData := dataVal.Index(i).Interface() - currentField := valSlice.Index(i) - - fieldName := fmt.Sprintf("%s[%d]", name, i) - if err := d.decode(fieldName, currentData, currentField); err != nil { - errors = appendErrors(errors, err) - } - } - - // Finally, set the value to the slice we built up - val.Set(valSlice) - - // If there were errors, we return those - if len(errors) > 0 { - return &Error{errors} - } - - return nil -} - -func (d *Decoder) decodeStruct(name string, data interface{}, val reflect.Value) error { - dataVal := reflect.Indirect(reflect.ValueOf(data)) - dataValKind := dataVal.Kind() - if dataValKind != reflect.Map { - return fmt.Errorf("'%s' expected a map, got '%s'", name, dataValKind) - } - - dataValType := dataVal.Type() - if kind := dataValType.Key().Kind(); kind != reflect.String && kind != reflect.Interface { - return fmt.Errorf( - "'%s' needs a map with string keys, has '%s' keys", - name, dataValType.Key().Kind()) - } - - dataValKeys := make(map[reflect.Value]struct{}) - dataValKeysUnused := make(map[interface{}]struct{}) - for _, dataValKey := range dataVal.MapKeys() { - dataValKeys[dataValKey] = struct{}{} - dataValKeysUnused[dataValKey.Interface()] = struct{}{} - } - - errors := make([]string, 0) - - // This slice will keep track of all the structs we'll be decoding. - // There can be more than one struct if there are embedded structs - // that are squashed. - structs := make([]reflect.Value, 1, 5) - structs[0] = val - - // Compile the list of all the fields that we're going to be decoding - // from all the structs. - fields := make(map[*reflect.StructField]reflect.Value) - for len(structs) > 0 { - structVal := structs[0] - structs = structs[1:] - - structType := structVal.Type() - for i := 0; i < structType.NumField(); i++ { - fieldType := structType.Field(i) - - if fieldType.Anonymous { - fieldKind := fieldType.Type.Kind() - if fieldKind != reflect.Struct { - errors = appendErrors(errors, - fmt.Errorf("%s: unsupported type: %s", fieldType.Name, fieldKind)) - continue - } - - // We have an embedded field. We "squash" the fields down - // if specified in the tag. - squash := false - tagParts := strings.Split(fieldType.Tag.Get(d.config.TagName), ",") - for _, tag := range tagParts[1:] { - if tag == "squash" { - squash = true - break - } - } - - if squash { - structs = append(structs, val.FieldByName(fieldType.Name)) - continue - } - } - - // Normal struct field, store it away - fields[&fieldType] = structVal.Field(i) - } - } - - for fieldType, field := range fields { - fieldName := fieldType.Name - - tagValue := fieldType.Tag.Get(d.config.TagName) - tagValue = strings.SplitN(tagValue, ",", 2)[0] - if tagValue != "" { - fieldName = tagValue - } - - rawMapKey := reflect.ValueOf(fieldName) - rawMapVal := dataVal.MapIndex(rawMapKey) - if !rawMapVal.IsValid() { - // Do a slower search by iterating over each key and - // doing case-insensitive search. - for dataValKey, _ := range dataValKeys { - mK, ok := dataValKey.Interface().(string) - if !ok { - // Not a string key - continue - } - - if strings.EqualFold(mK, fieldName) { - rawMapKey = dataValKey - rawMapVal = dataVal.MapIndex(dataValKey) - break - } - } - - if !rawMapVal.IsValid() { - // There was no matching key in the map for the value in - // the struct. Just ignore. - continue - } - } - - // Delete the key we're using from the unused map so we stop tracking - delete(dataValKeysUnused, rawMapKey.Interface()) - - if !field.IsValid() { - // This should never happen - panic("field is not valid") - } - - // If we can't set the field, then it is unexported or something, - // and we just continue onwards. - if !field.CanSet() { - continue - } - - // If the name is empty string, then we're at the root, and we - // don't dot-join the fields. - if name != "" { - fieldName = fmt.Sprintf("%s.%s", name, fieldName) - } - - if err := d.decode(fieldName, rawMapVal.Interface(), field); err != nil { - errors = appendErrors(errors, err) - } - } - - if d.config.ErrorUnused && len(dataValKeysUnused) > 0 { - keys := make([]string, 0, len(dataValKeysUnused)) - for rawKey, _ := range dataValKeysUnused { - keys = append(keys, rawKey.(string)) - } - sort.Strings(keys) - - err := fmt.Errorf("'%s' has invalid keys: %s", name, strings.Join(keys, ", ")) - errors = appendErrors(errors, err) - } - - if len(errors) > 0 { - return &Error{errors} - } - - // Add the unused keys to the list of unused keys if we're tracking metadata - if d.config.Metadata != nil { - for rawKey, _ := range dataValKeysUnused { - key := rawKey.(string) - if name != "" { - key = fmt.Sprintf("%s.%s", name, key) - } - - d.config.Metadata.Unused = append(d.config.Metadata.Unused, key) - } - } - - return nil -} - -func getKind(val reflect.Value) reflect.Kind { - kind := val.Kind() - - switch { - case kind >= reflect.Int && kind <= reflect.Int64: - return reflect.Int - case kind >= reflect.Uint && kind <= reflect.Uint64: - return reflect.Uint - case kind >= reflect.Float32 && kind <= reflect.Float64: - return reflect.Float32 - default: - return kind - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/pmezard/go-difflib/LICENSE b/vendor/github.com/docker/machine/vendor/github.com/pmezard/go-difflib/LICENSE deleted file mode 100644 index c67dad61..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/pmezard/go-difflib/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2013, Patrick Mezard -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. - The names of its contributors may not be used to endorse or promote -products derived from this software without specific prior written -permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED -TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/docker/machine/vendor/github.com/pmezard/go-difflib/difflib/difflib.go b/vendor/github.com/docker/machine/vendor/github.com/pmezard/go-difflib/difflib/difflib.go deleted file mode 100644 index 003e99fa..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/pmezard/go-difflib/difflib/difflib.go +++ /dev/null @@ -1,772 +0,0 @@ -// Package difflib is a partial port of Python difflib module. -// -// It provides tools to compare sequences of strings and generate textual diffs. -// -// The following class and functions have been ported: -// -// - SequenceMatcher -// -// - unified_diff -// -// - context_diff -// -// Getting unified diffs was the main goal of the port. Keep in mind this code -// is mostly suitable to output text differences in a human friendly way, there -// are no guarantees generated diffs are consumable by patch(1). -package difflib - -import ( - "bufio" - "bytes" - "fmt" - "io" - "strings" -) - -func min(a, b int) int { - if a < b { - return a - } - return b -} - -func max(a, b int) int { - if a > b { - return a - } - return b -} - -func calculateRatio(matches, length int) float64 { - if length > 0 { - return 2.0 * float64(matches) / float64(length) - } - return 1.0 -} - -type Match struct { - A int - B int - Size int -} - -type OpCode struct { - Tag byte - I1 int - I2 int - J1 int - J2 int -} - -// SequenceMatcher compares sequence of strings. The basic -// algorithm predates, and is a little fancier than, an algorithm -// published in the late 1980's by Ratcliff and Obershelp under the -// hyperbolic name "gestalt pattern matching". The basic idea is to find -// the longest contiguous matching subsequence that contains no "junk" -// elements (R-O doesn't address junk). The same idea is then applied -// recursively to the pieces of the sequences to the left and to the right -// of the matching subsequence. This does not yield minimal edit -// sequences, but does tend to yield matches that "look right" to people. -// -// SequenceMatcher tries to compute a "human-friendly diff" between two -// sequences. Unlike e.g. UNIX(tm) diff, the fundamental notion is the -// longest *contiguous* & junk-free matching subsequence. That's what -// catches peoples' eyes. The Windows(tm) windiff has another interesting -// notion, pairing up elements that appear uniquely in each sequence. -// That, and the method here, appear to yield more intuitive difference -// reports than does diff. This method appears to be the least vulnerable -// to synching up on blocks of "junk lines", though (like blank lines in -// ordinary text files, or maybe "

    . - re := regexp.MustCompile("\\.pN\\d+_") - if re.MatchString(functionPath) { - functionPath = re.Split(functionPath, -1)[0] - } - parts := strings.Split(functionPath, ".") - functionName := parts[len(parts)-1] - - found, call := m.findExpectedCall(functionName, arguments...) - - if found < 0 { - // we have to fail here - because we don't know what to do - // as the return arguments. This is because: - // - // a) this is a totally unexpected call to this method, - // b) the arguments are not what was expected, or - // c) the developer has forgotten to add an accompanying On...Return pair. - - closestFound, closestCall := m.findClosestCall(functionName, arguments...) - - if closestFound { - panic(fmt.Sprintf("\n\nmock: Unexpected Method Call\n-----------------------------\n\n%s\n\nThe closest call I have is: \n\n%s\n", callString(functionName, arguments, true), callString(functionName, closestCall.Arguments, true))) - } else { - panic(fmt.Sprintf("\nassert: mock: I don't know what to return because the method call was unexpected.\n\tEither do Mock.On(\"%s\").Return(...) first, or remove the %s() call.\n\tThis method was unexpected:\n\t\t%s\n\tat: %s", functionName, functionName, callString(functionName, arguments, true), assert.CallerInfo())) - } - } else { - m.mutex.Lock() - switch { - case call.Repeatability == 1: - call.Repeatability = -1 - - case call.Repeatability > 1: - call.Repeatability-- - } - m.mutex.Unlock() - } - - // add the call - m.mutex.Lock() - m.Calls = append(m.Calls, *newCall(m, functionName, arguments...)) - m.mutex.Unlock() - - // block if specified - if call.WaitFor != nil { - <-call.WaitFor - } - - if call.RunFn != nil { - call.RunFn(arguments) - } - - return call.ReturnArguments -} - -/* - Assertions -*/ - -// AssertExpectationsForObjects asserts that everything specified with On and Return -// of the specified objects was in fact called as expected. -// -// Calls may have occurred in any order. -func AssertExpectationsForObjects(t TestingT, testObjects ...interface{}) bool { - var success = true - for _, obj := range testObjects { - mockObj := obj.(Mock) - success = success && mockObj.AssertExpectations(t) - } - return success -} - -// AssertExpectations asserts that everything specified with On and Return was -// in fact called as expected. Calls may have occurred in any order. -func (m *Mock) AssertExpectations(t TestingT) bool { - var somethingMissing bool - var failedExpectations int - - // iterate through each expectation - expectedCalls := m.expectedCalls() - for _, expectedCall := range expectedCalls { - if !m.methodWasCalled(expectedCall.Method, expectedCall.Arguments) { - somethingMissing = true - failedExpectations++ - t.Logf("\u274C\t%s(%s)", expectedCall.Method, expectedCall.Arguments.String()) - } else { - m.mutex.Lock() - if expectedCall.Repeatability > 0 { - somethingMissing = true - failedExpectations++ - } else { - t.Logf("\u2705\t%s(%s)", expectedCall.Method, expectedCall.Arguments.String()) - } - m.mutex.Unlock() - } - } - - if somethingMissing { - t.Errorf("FAIL: %d out of %d expectation(s) were met.\n\tThe code you are testing needs to make %d more call(s).\n\tat: %s", len(expectedCalls)-failedExpectations, len(expectedCalls), failedExpectations, assert.CallerInfo()) - } - - return !somethingMissing -} - -// AssertNumberOfCalls asserts that the method was called expectedCalls times. -func (m *Mock) AssertNumberOfCalls(t TestingT, methodName string, expectedCalls int) bool { - var actualCalls int - for _, call := range m.calls() { - if call.Method == methodName { - actualCalls++ - } - } - return assert.Equal(t, expectedCalls, actualCalls, fmt.Sprintf("Expected number of calls (%d) does not match the actual number of calls (%d).", expectedCalls, actualCalls)) -} - -// AssertCalled asserts that the method was called. -func (m *Mock) AssertCalled(t TestingT, methodName string, arguments ...interface{}) bool { - if !assert.True(t, m.methodWasCalled(methodName, arguments), fmt.Sprintf("The \"%s\" method should have been called with %d argument(s), but was not.", methodName, len(arguments))) { - t.Logf("%v", m.expectedCalls()) - return false - } - return true -} - -// AssertNotCalled asserts that the method was not called. -func (m *Mock) AssertNotCalled(t TestingT, methodName string, arguments ...interface{}) bool { - if !assert.False(t, m.methodWasCalled(methodName, arguments), fmt.Sprintf("The \"%s\" method was called with %d argument(s), but should NOT have been.", methodName, len(arguments))) { - t.Logf("%v", m.expectedCalls()) - return false - } - return true -} - -func (m *Mock) methodWasCalled(methodName string, expected []interface{}) bool { - for _, call := range m.calls() { - if call.Method == methodName { - - _, differences := Arguments(expected).Diff(call.Arguments) - - if differences == 0 { - // found the expected call - return true - } - - } - } - // we didn't find the expected call - return false -} - -func (m *Mock) expectedCalls() []*Call { - m.mutex.Lock() - defer m.mutex.Unlock() - return append([]*Call{}, m.ExpectedCalls...) -} - -func (m *Mock) calls() []Call { - m.mutex.Lock() - defer m.mutex.Unlock() - return append([]Call{}, m.Calls...) -} - -/* - Arguments -*/ - -// Arguments holds an array of method arguments or return values. -type Arguments []interface{} - -const ( - // Anything is used in Diff and Assert when the argument being tested - // shouldn't be taken into consideration. - Anything string = "mock.Anything" -) - -// AnythingOfTypeArgument is a string that contains the type of an argument -// for use when type checking. Used in Diff and Assert. -type AnythingOfTypeArgument string - -// AnythingOfType returns an AnythingOfTypeArgument object containing the -// name of the type to check for. Used in Diff and Assert. -// -// For example: -// Assert(t, AnythingOfType("string"), AnythingOfType("int")) -func AnythingOfType(t string) AnythingOfTypeArgument { - return AnythingOfTypeArgument(t) -} - -// argumentMatcher performs custom argument matching, returning whether or -// not the argument is matched by the expectation fixture function. -type argumentMatcher struct { - // fn is a function which accepts one argument, and returns a bool. - fn reflect.Value -} - -func (f argumentMatcher) Matches(argument interface{}) bool { - expectType := f.fn.Type().In(0) - - if reflect.TypeOf(argument).AssignableTo(expectType) { - result := f.fn.Call([]reflect.Value{reflect.ValueOf(argument)}) - return result[0].Bool() - } - return false -} - -func (f argumentMatcher) String() string { - return fmt.Sprintf("func(%s) bool", f.fn.Type().In(0).Name()) -} - -// MatchedBy can be used to match a mock call based on only certain properties -// from a complex struct or some calculation. It takes a function that will be -// evaluated with the called argument and will return true when there's a match -// and false otherwise. -// -// Example: -// m.On("Do", func(req *http.Request) bool { return req.Host == "example.com" }) -// -// |fn|, must be a function accepting a single argument (of the expected type) -// which returns a bool. If |fn| doesn't match the required signature, -// MathedBy() panics. -func MatchedBy(fn interface{}) argumentMatcher { - fnType := reflect.TypeOf(fn) - - if fnType.Kind() != reflect.Func { - panic(fmt.Sprintf("assert: arguments: %s is not a func", fn)) - } - if fnType.NumIn() != 1 { - panic(fmt.Sprintf("assert: arguments: %s does not take exactly one argument", fn)) - } - if fnType.NumOut() != 1 || fnType.Out(0).Kind() != reflect.Bool { - panic(fmt.Sprintf("assert: arguments: %s does not return a bool", fn)) - } - - return argumentMatcher{fn: reflect.ValueOf(fn)} -} - -// Get Returns the argument at the specified index. -func (args Arguments) Get(index int) interface{} { - if index+1 > len(args) { - panic(fmt.Sprintf("assert: arguments: Cannot call Get(%d) because there are %d argument(s).", index, len(args))) - } - return args[index] -} - -// Is gets whether the objects match the arguments specified. -func (args Arguments) Is(objects ...interface{}) bool { - for i, obj := range args { - if obj != objects[i] { - return false - } - } - return true -} - -// Diff gets a string describing the differences between the arguments -// and the specified objects. -// -// Returns the diff string and number of differences found. -func (args Arguments) Diff(objects []interface{}) (string, int) { - - var output = "\n" - var differences int - - var maxArgCount = len(args) - if len(objects) > maxArgCount { - maxArgCount = len(objects) - } - - for i := 0; i < maxArgCount; i++ { - var actual, expected interface{} - - if len(objects) <= i { - actual = "(Missing)" - } else { - actual = objects[i] - } - - if len(args) <= i { - expected = "(Missing)" - } else { - expected = args[i] - } - - if matcher, ok := expected.(argumentMatcher); ok { - if matcher.Matches(actual) { - output = fmt.Sprintf("%s\t%d: \u2705 %s matched by %s\n", output, i, actual, matcher) - } else { - differences++ - output = fmt.Sprintf("%s\t%d: \u2705 %s not matched by %s\n", output, i, actual, matcher) - } - } else if reflect.TypeOf(expected) == reflect.TypeOf((*AnythingOfTypeArgument)(nil)).Elem() { - - // type checking - if reflect.TypeOf(actual).Name() != string(expected.(AnythingOfTypeArgument)) && reflect.TypeOf(actual).String() != string(expected.(AnythingOfTypeArgument)) { - // not match - differences++ - output = fmt.Sprintf("%s\t%d: \u274C type %s != type %s - %s\n", output, i, expected, reflect.TypeOf(actual).Name(), actual) - } - - } else { - - // normal checking - - if assert.ObjectsAreEqual(expected, Anything) || assert.ObjectsAreEqual(actual, Anything) || assert.ObjectsAreEqual(actual, expected) { - // match - output = fmt.Sprintf("%s\t%d: \u2705 %s == %s\n", output, i, actual, expected) - } else { - // not match - differences++ - output = fmt.Sprintf("%s\t%d: \u274C %s != %s\n", output, i, actual, expected) - } - } - - } - - if differences == 0 { - return "No differences.", differences - } - - return output, differences - -} - -// Assert compares the arguments with the specified objects and fails if -// they do not exactly match. -func (args Arguments) Assert(t TestingT, objects ...interface{}) bool { - - // get the differences - diff, diffCount := args.Diff(objects) - - if diffCount == 0 { - return true - } - - // there are differences... report them... - t.Logf(diff) - t.Errorf("%sArguments do not match.", assert.CallerInfo()) - - return false - -} - -// String gets the argument at the specified index. Panics if there is no argument, or -// if the argument is of the wrong type. -// -// If no index is provided, String() returns a complete string representation -// of the arguments. -func (args Arguments) String(indexOrNil ...int) string { - - if len(indexOrNil) == 0 { - // normal String() method - return a string representation of the args - var argsStr []string - for _, arg := range args { - argsStr = append(argsStr, fmt.Sprintf("%s", reflect.TypeOf(arg))) - } - return strings.Join(argsStr, ",") - } else if len(indexOrNil) == 1 { - // Index has been specified - get the argument at that index - var index = indexOrNil[0] - var s string - var ok bool - if s, ok = args.Get(index).(string); !ok { - panic(fmt.Sprintf("assert: arguments: String(%d) failed because object wasn't correct type: %s", index, args.Get(index))) - } - return s - } - - panic(fmt.Sprintf("assert: arguments: Wrong number of arguments passed to String. Must be 0 or 1, not %d", len(indexOrNil))) - -} - -// Int gets the argument at the specified index. Panics if there is no argument, or -// if the argument is of the wrong type. -func (args Arguments) Int(index int) int { - var s int - var ok bool - if s, ok = args.Get(index).(int); !ok { - panic(fmt.Sprintf("assert: arguments: Int(%d) failed because object wasn't correct type: %v", index, args.Get(index))) - } - return s -} - -// Error gets the argument at the specified index. Panics if there is no argument, or -// if the argument is of the wrong type. -func (args Arguments) Error(index int) error { - obj := args.Get(index) - var s error - var ok bool - if obj == nil { - return nil - } - if s, ok = obj.(error); !ok { - panic(fmt.Sprintf("assert: arguments: Error(%d) failed because object wasn't correct type: %v", index, args.Get(index))) - } - return s -} - -// Bool gets the argument at the specified index. Panics if there is no argument, or -// if the argument is of the wrong type. -func (args Arguments) Bool(index int) bool { - var s bool - var ok bool - if s, ok = args.Get(index).(bool); !ok { - panic(fmt.Sprintf("assert: arguments: Bool(%d) failed because object wasn't correct type: %v", index, args.Get(index))) - } - return s -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/tent/http-link-go/.gitignore b/vendor/github.com/docker/machine/vendor/github.com/tent/http-link-go/.gitignore deleted file mode 100644 index 9ed3b07c..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/tent/http-link-go/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.test diff --git a/vendor/github.com/docker/machine/vendor/github.com/tent/http-link-go/.travis.yml b/vendor/github.com/docker/machine/vendor/github.com/tent/http-link-go/.travis.yml deleted file mode 100644 index 7362f08e..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/tent/http-link-go/.travis.yml +++ /dev/null @@ -1,6 +0,0 @@ -language: go -go: - - 1.1 - - tip -before_install: - - go get launchpad.net/gocheck diff --git a/vendor/github.com/docker/machine/vendor/github.com/tent/http-link-go/LICENSE b/vendor/github.com/docker/machine/vendor/github.com/tent/http-link-go/LICENSE deleted file mode 100644 index 88dcd4af..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/tent/http-link-go/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2013 Tent.is, LLC. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Tent.is, LLC nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/docker/machine/vendor/github.com/tent/http-link-go/README.md b/vendor/github.com/docker/machine/vendor/github.com/tent/http-link-go/README.md deleted file mode 100644 index 07d470e4..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/tent/http-link-go/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# http-link-go [![Build Status](https://travis-ci.org/tent/http-link-go.png?branch=master)](https://travis-ci.org/tent/http-link-go) - -http-link-go implements parsing and serialization of Link header values as -defined in [RFC 5988](https://tools.ietf.org/html/rfc5988). - -[**Documentation**](http://godoc.org/github.com/tent/http-link-go) - -## Installation - -```text -go get github.com/tent/http-link-go -``` diff --git a/vendor/github.com/docker/machine/vendor/github.com/tent/http-link-go/link.go b/vendor/github.com/docker/machine/vendor/github.com/tent/http-link-go/link.go deleted file mode 100644 index 584dfd05..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/tent/http-link-go/link.go +++ /dev/null @@ -1,185 +0,0 @@ -// Package link implements parsing and serialization of Link header values as -// defined in RFC 5988. -package link - -import ( - "bytes" - "errors" - "sort" - "unicode" -) - -type Link struct { - URI string - Rel string - Params map[string]string -} - -// Format serializes a slice of Links into a header value. It does not currently -// implement RFC 2231 handling of non-ASCII character encoding and language -// information. -func Format(links []Link) string { - buf := &bytes.Buffer{} - for i, link := range links { - if i > 0 { - buf.Write([]byte(", ")) - } - buf.WriteByte('<') - buf.WriteString(link.URI) - buf.WriteByte('>') - - writeParam(buf, "rel", link.Rel) - - keys := make([]string, 0, len(link.Params)) - for k := range link.Params { - keys = append(keys, k) - } - sort.Strings(keys) - - for _, k := range keys { - writeParam(buf, k, link.Params[k]) - } - } - - return buf.String() -} - -func writeParam(buf *bytes.Buffer, key, value string) { - buf.Write([]byte("; ")) - buf.WriteString(key) - buf.Write([]byte(`="`)) - buf.WriteString(value) - buf.WriteByte('"') -} - -// Parse parses a Link header value into a slice of Links. It does not currently -// implement RFC 2231 handling of non-ASCII character encoding and language -// information. -func Parse(l string) ([]Link, error) { - v := []byte(l) - v = bytes.TrimSpace(v) - if len(v) == 0 { - return nil, nil - } - - links := make([]Link, 0, 1) - for len(v) > 0 { - if v[0] != '<' { - return nil, errors.New("link: does not start with <") - } - lend := bytes.IndexByte(v, '>') - if lend == -1 { - return nil, errors.New("link: does not contain ending >") - } - - params := make(map[string]string) - link := Link{URI: string(v[1:lend]), Params: params} - links = append(links, link) - - // trim off parsed url - v = v[lend+1:] - if len(v) == 0 { - break - } - v = bytes.TrimLeftFunc(v, unicode.IsSpace) - - for len(v) > 0 { - if v[0] != ';' && v[0] != ',' { - return nil, errors.New(`link: expected ";" or "'", got "` + string(v[0:1]) + `"`) - } - var next bool - if v[0] == ',' { - next = true - } - v = bytes.TrimLeftFunc(v[1:], unicode.IsSpace) - if next || len(v) == 0 { - break - } - var key, value []byte - key, value, v = consumeParam(v) - if key == nil || value == nil { - return nil, errors.New("link: malformed param") - } - if k := string(key); k == "rel" { - if links[len(links)-1].Rel == "" { - links[len(links)-1].Rel = string(value) - } - } else { - params[k] = string(value) - } - v = bytes.TrimLeftFunc(v, unicode.IsSpace) - } - } - - return links, nil -} - -func isTokenChar(r rune) bool { - return r > 0x20 && r < 0x7f && r != '"' && r != ',' && r != '=' && r != ';' -} - -func isNotTokenChar(r rune) bool { return !isTokenChar(r) } - -func consumeToken(v []byte) (token, rest []byte) { - notPos := bytes.IndexFunc(v, isNotTokenChar) - if notPos == -1 { - return v, nil - } - if notPos == 0 { - return nil, v - } - return v[0:notPos], v[notPos:] -} - -func consumeValue(v []byte) (value, rest []byte) { - if v[0] != '"' { - return nil, v - } - - rest = v[1:] - buffer := &bytes.Buffer{} - var nextIsLiteral bool - for idx, r := range string(rest) { - switch { - case nextIsLiteral: - buffer.WriteRune(r) - nextIsLiteral = false - case r == '"': - return buffer.Bytes(), rest[idx+1:] - case r == '\\': - nextIsLiteral = true - case r != '\r' && r != '\n': - buffer.WriteRune(r) - default: - return nil, v - } - } - return nil, v -} - -func consumeParam(v []byte) (param, value, rest []byte) { - param, rest = consumeToken(v) - param = bytes.ToLower(param) - if param == nil { - return nil, nil, v - } - - rest = bytes.TrimLeftFunc(rest, unicode.IsSpace) - if len(rest) == 0 || rest[0] != '=' { - return nil, nil, v - } - rest = rest[1:] // consume equals sign - rest = bytes.TrimLeftFunc(rest, unicode.IsSpace) - if len(rest) == 0 { - return nil, nil, v - } - if rest[0] != '"' { - value, rest = consumeToken(rest) - } else { - value, rest = consumeValue(rest) - } - if value == nil { - return nil, nil, v - } - return param, value, rest -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/.gitignore b/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/.gitignore deleted file mode 100644 index 97516283..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -# Compiled Object files, Static and Dynamic libs (Shared Objects) -*.o -*.a -*.so - -# Folders -_obj -_test -.cover - -# Architecture specific extensions/prefixes -*.[568vq] -[568vq].out - -*.cgo1.go -*.cgo2.c -_cgo_defun.c -_cgo_gotypes.go -_cgo_export.* - -_testmain.go - -*.exe -*.test -*.prof \ No newline at end of file diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/.travis.yml b/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/.travis.yml deleted file mode 100644 index a3bb17a0..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/.travis.yml +++ /dev/null @@ -1,10 +0,0 @@ -language: go - -install: - - go get -t ./... - - go get golang.org/x/tools/cmd/cover - - go get github.com/mattn/goveralls - -script: - - PATH="$HOME/gopath/bin:$PATH" - - script/coverage --coveralls \ No newline at end of file diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/LICENSE b/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/LICENSE deleted file mode 100644 index 6a5b84c7..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/LICENSE +++ /dev/null @@ -1,569 +0,0 @@ -govcloudair is distributed under the Apache License 2.0 - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2014 Fabio Rapposelli - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - -testutil/http.go is distributed with a Mozilla Public License 2.0 - - Mozilla Public License, version 2.0 - - 1. Definitions - - 1.1. "Contributor" - - means each individual or legal entity that creates, contributes to the - creation of, or owns Covered Software. - - 1.2. "Contributor Version" - - means the combination of the Contributions of others (if any) used by a - Contributor and that particular Contributor's Contribution. - - 1.3. "Contribution" - - means Covered Software of a particular Contributor. - - 1.4. "Covered Software" - - means Source Code Form to which the initial Contributor has attached the - notice in Exhibit A, the Executable Form of such Source Code Form, and - Modifications of such Source Code Form, in each case including portions - thereof. - - 1.5. "Incompatible With Secondary Licenses" - means - - a. that the initial Contributor has attached the notice described in - Exhibit B to the Covered Software; or - - b. that the Covered Software was made available under the terms of - version 1.1 or earlier of the License, but not also under the terms of - a Secondary License. - - 1.6. "Executable Form" - - means any form of the work other than Source Code Form. - - 1.7. "Larger Work" - - means a work that combines Covered Software with other material, in a - separate file or files, that is not Covered Software. - - 1.8. "License" - - means this document. - - 1.9. "Licensable" - - means having the right to grant, to the maximum extent possible, whether - at the time of the initial grant or subsequently, any and all of the - rights conveyed by this License. - - 1.10. "Modifications" - - means any of the following: - - a. any file in Source Code Form that results from an addition to, - deletion from, or modification of the contents of Covered Software; or - - b. any new file in Source Code Form that contains any Covered Software. - - 1.11. "Patent Claims" of a Contributor - - means any patent claim(s), including without limitation, method, - process, and apparatus claims, in any patent Licensable by such - Contributor that would be infringed, but for the grant of the License, - by the making, using, selling, offering for sale, having made, import, - or transfer of either its Contributions or its Contributor Version. - - 1.12. "Secondary License" - - means either the GNU General Public License, Version 2.0, the GNU Lesser - General Public License, Version 2.1, the GNU Affero General Public - License, Version 3.0, or any later versions of those licenses. - - 1.13. "Source Code Form" - - means the form of the work preferred for making modifications. - - 1.14. "You" (or "Your") - - means an individual or a legal entity exercising rights under this - License. For legal entities, "You" includes any entity that controls, is - controlled by, or is under common control with You. For purposes of this - definition, "control" means (a) the power, direct or indirect, to cause - the direction or management of such entity, whether by contract or - otherwise, or (b) ownership of more than fifty percent (50%) of the - outstanding shares or beneficial ownership of such entity. - - - 2. License Grants and Conditions - - 2.1. Grants - - Each Contributor hereby grants You a world-wide, royalty-free, - non-exclusive license: - - a. under intellectual property rights (other than patent or trademark) - Licensable by such Contributor to use, reproduce, make available, - modify, display, perform, distribute, and otherwise exploit its - Contributions, either on an unmodified basis, with Modifications, or - as part of a Larger Work; and - - b. under Patent Claims of such Contributor to make, use, sell, offer for - sale, have made, import, and otherwise transfer either its - Contributions or its Contributor Version. - - 2.2. Effective Date - - The licenses granted in Section 2.1 with respect to any Contribution - become effective for each Contribution on the date the Contributor first - distributes such Contribution. - - 2.3. Limitations on Grant Scope - - The licenses granted in this Section 2 are the only rights granted under - this License. No additional rights or licenses will be implied from the - distribution or licensing of Covered Software under this License. - Notwithstanding Section 2.1(b) above, no patent license is granted by a - Contributor: - - a. for any code that a Contributor has removed from Covered Software; or - - b. for infringements caused by: (i) Your and any other third party's - modifications of Covered Software, or (ii) the combination of its - Contributions with other software (except as part of its Contributor - Version); or - - c. under Patent Claims infringed by Covered Software in the absence of - its Contributions. - - This License does not grant any rights in the trademarks, service marks, - or logos of any Contributor (except as may be necessary to comply with - the notice requirements in Section 3.4). - - 2.4. Subsequent Licenses - - No Contributor makes additional grants as a result of Your choice to - distribute the Covered Software under a subsequent version of this - License (see Section 10.2) or under the terms of a Secondary License (if - permitted under the terms of Section 3.3). - - 2.5. Representation - - Each Contributor represents that the Contributor believes its - Contributions are its original creation(s) or it has sufficient rights to - grant the rights to its Contributions conveyed by this License. - - 2.6. Fair Use - - This License is not intended to limit any rights You have under - applicable copyright doctrines of fair use, fair dealing, or other - equivalents. - - 2.7. Conditions - - Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in - Section 2.1. - - - 3. Responsibilities - - 3.1. Distribution of Source Form - - All distribution of Covered Software in Source Code Form, including any - Modifications that You create or to which You contribute, must be under - the terms of this License. You must inform recipients that the Source - Code Form of the Covered Software is governed by the terms of this - License, and how they can obtain a copy of this License. You may not - attempt to alter or restrict the recipients' rights in the Source Code - Form. - - 3.2. Distribution of Executable Form - - If You distribute Covered Software in Executable Form then: - - a. such Covered Software must also be made available in Source Code Form, - as described in Section 3.1, and You must inform recipients of the - Executable Form how they can obtain a copy of such Source Code Form by - reasonable means in a timely manner, at a charge no more than the cost - of distribution to the recipient; and - - b. You may distribute such Executable Form under the terms of this - License, or sublicense it under different terms, provided that the - license for the Executable Form does not attempt to limit or alter the - recipients' rights in the Source Code Form under this License. - - 3.3. Distribution of a Larger Work - - You may create and distribute a Larger Work under terms of Your choice, - provided that You also comply with the requirements of this License for - the Covered Software. If the Larger Work is a combination of Covered - Software with a work governed by one or more Secondary Licenses, and the - Covered Software is not Incompatible With Secondary Licenses, this - License permits You to additionally distribute such Covered Software - under the terms of such Secondary License(s), so that the recipient of - the Larger Work may, at their option, further distribute the Covered - Software under the terms of either this License or such Secondary - License(s). - - 3.4. Notices - - You may not remove or alter the substance of any license notices - (including copyright notices, patent notices, disclaimers of warranty, or - limitations of liability) contained within the Source Code Form of the - Covered Software, except that You may alter any license notices to the - extent required to remedy known factual inaccuracies. - - 3.5. Application of Additional Terms - - You may choose to offer, and to charge a fee for, warranty, support, - indemnity or liability obligations to one or more recipients of Covered - Software. However, You may do so only on Your own behalf, and not on - behalf of any Contributor. You must make it absolutely clear that any - such warranty, support, indemnity, or liability obligation is offered by - You alone, and You hereby agree to indemnify every Contributor for any - liability incurred by such Contributor as a result of warranty, support, - indemnity or liability terms You offer. You may include additional - disclaimers of warranty and limitations of liability specific to any - jurisdiction. - - 4. Inability to Comply Due to Statute or Regulation - - If it is impossible for You to comply with any of the terms of this License - with respect to some or all of the Covered Software due to statute, - judicial order, or regulation then You must: (a) comply with the terms of - this License to the maximum extent possible; and (b) describe the - limitations and the code they affect. Such description must be placed in a - text file included with all distributions of the Covered Software under - this License. Except to the extent prohibited by statute or regulation, - such description must be sufficiently detailed for a recipient of ordinary - skill to be able to understand it. - - 5. Termination - - 5.1. The rights granted under this License will terminate automatically if You - fail to comply with any of its terms. However, if You become compliant, - then the rights granted under this License from a particular Contributor - are reinstated (a) provisionally, unless and until such Contributor - explicitly and finally terminates Your grants, and (b) on an ongoing - basis, if such Contributor fails to notify You of the non-compliance by - some reasonable means prior to 60 days after You have come back into - compliance. Moreover, Your grants from a particular Contributor are - reinstated on an ongoing basis if such Contributor notifies You of the - non-compliance by some reasonable means, this is the first time You have - received notice of non-compliance with this License from such - Contributor, and You become compliant prior to 30 days after Your receipt - of the notice. - - 5.2. If You initiate litigation against any entity by asserting a patent - infringement claim (excluding declaratory judgment actions, - counter-claims, and cross-claims) alleging that a Contributor Version - directly or indirectly infringes any patent, then the rights granted to - You by any and all Contributors for the Covered Software under Section - 2.1 of this License shall terminate. - - 5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user - license agreements (excluding distributors and resellers) which have been - validly granted by You or Your distributors under this License prior to - termination shall survive termination. - - 6. Disclaimer of Warranty - - Covered Software is provided under this License on an "as is" basis, - without warranty of any kind, either expressed, implied, or statutory, - including, without limitation, warranties that the Covered Software is free - of defects, merchantable, fit for a particular purpose or non-infringing. - The entire risk as to the quality and performance of the Covered Software - is with You. Should any Covered Software prove defective in any respect, - You (not any Contributor) assume the cost of any necessary servicing, - repair, or correction. This disclaimer of warranty constitutes an essential - part of this License. No use of any Covered Software is authorized under - this License except under this disclaimer. - - 7. Limitation of Liability - - Under no circumstances and under no legal theory, whether tort (including - negligence), contract, or otherwise, shall any Contributor, or anyone who - distributes Covered Software as permitted above, be liable to You for any - direct, indirect, special, incidental, or consequential damages of any - character including, without limitation, damages for lost profits, loss of - goodwill, work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses, even if such party shall have been - informed of the possibility of such damages. This limitation of liability - shall not apply to liability for death or personal injury resulting from - such party's negligence to the extent applicable law prohibits such - limitation. Some jurisdictions do not allow the exclusion or limitation of - incidental or consequential damages, so this exclusion and limitation may - not apply to You. - - 8. Litigation - - Any litigation relating to this License may be brought only in the courts - of a jurisdiction where the defendant maintains its principal place of - business and such litigation shall be governed by laws of that - jurisdiction, without reference to its conflict-of-law provisions. Nothing - in this Section shall prevent a party's ability to bring cross-claims or - counter-claims. - - 9. Miscellaneous - - This License represents the complete agreement concerning the subject - matter hereof. If any provision of this License is held to be - unenforceable, such provision shall be reformed only to the extent - necessary to make it enforceable. Any law or regulation which provides that - the language of a contract shall be construed against the drafter shall not - be used to construe this License against a Contributor. - - - 10. Versions of the License - - 10.1. New Versions - - Mozilla Foundation is the license steward. Except as provided in Section - 10.3, no one other than the license steward has the right to modify or - publish new versions of this License. Each version will be given a - distinguishing version number. - - 10.2. Effect of New Versions - - You may distribute the Covered Software under the terms of the version - of the License under which You originally received the Covered Software, - or under the terms of any subsequent version published by the license - steward. - - 10.3. Modified Versions - - If you create software not governed by this License, and you want to - create a new license for such software, you may create and use a - modified version of this License if you rename the license and remove - any references to the name of the license steward (except to note that - such modified license differs from this License). - - 10.4. Distributing Source Code Form that is Incompatible With Secondary - Licenses If You choose to distribute Source Code Form that is - Incompatible With Secondary Licenses under the terms of this version of - the License, the notice described in Exhibit B of this License must be - attached. - - Exhibit A - Source Code Form License Notice - - This Source Code Form is subject to the - terms of the Mozilla Public License, v. - 2.0. If a copy of the MPL was not - distributed with this file, You can - obtain one at - http://mozilla.org/MPL/2.0/. - - If it is not possible or desirable to put the notice in a particular file, - then You may include the notice in a location (such as a LICENSE file in a - relevant directory) where a recipient would be likely to look for such a - notice. - - You may add additional accurate notices of copyright ownership. - - Exhibit B - "Incompatible With Secondary Licenses" Notice - - This Source Code Form is "Incompatible - With Secondary Licenses", as defined by - the Mozilla Public License, v. 2.0. diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/Readme.md b/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/Readme.md deleted file mode 100644 index 8269c308..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/Readme.md +++ /dev/null @@ -1,7 +0,0 @@ -## govcloudair [![Build Status](https://travis-ci.org/vmware/govcloudair.svg?branch=master)](https://travis-ci.org/frapposelli/govcloudair) [![Coverage Status](https://img.shields.io/coveralls/vmware/govcloudair.svg)](https://coveralls.io/r/vmware/govcloudair) [![GoDoc](https://godoc.org/github.com/vmware/govcloudair?status.svg)](http://godoc.org/github.com/vmware/govcloudair) - -This package provides the `govcloudair` package which offers an interface to the vCloud Air 5.6 API. - -It serves as a foundation for a project currently in development, there are plans to make it a general purpose API in the future. - -The API is currently under heavy development, its coverage is extremely limited at the moment. \ No newline at end of file diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/api.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/api.go deleted file mode 100644 index 4b094249..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/api.go +++ /dev/null @@ -1,423 +0,0 @@ -/* - * Copyright 2014 VMware, Inc. All rights reserved. Licensed under the Apache v2 License. - */ - -// Package govcloudair provides a simple binding for vCloud Air REST APIs. -package govcloudair - -import ( - "encoding/xml" - "fmt" - "io" - "io/ioutil" - "net/http" - "net/url" - "os" - "time" - - "github.com/cenkalti/backoff" - types "github.com/vmware/govcloudair/types/v56" -) - -// Client provides a client to vCloud Air, values can be populated automatically using the Authenticate method. -type Client struct { - VAToken string // vCloud Air authorization token - VAEndpoint url.URL // vCloud Air API endpoint - Region string // Region where the compute resource lives. - VCDToken string // Access Token (authorization header) - VCDAuthHeader string // Authorization header - VCDVDCHREF url.URL // HREF of the backend VDC you're using - Http http.Client // HttpClient is the client to use. Default will be used if not provided. -} - -// VCHS API - -type services struct { - Service []struct { - Region string `xml:"region,attr"` - ServiceID string `xml:"serviceId,attr"` - ServiceType string `xml:"serviceType,attr"` - Type string `xml:"type,attr"` - HREF string `xml:"href,attr"` - } `xml:"Service"` -} - -type session struct { - Link []*types.Link `xml:"Link"` -} - -type computeResources struct { - VdcRef []struct { - Status string `xml:"status,attr"` - Name string `xml:"name,attr"` - Type string `xml:"type,attr"` - HREF string `xml:"href,attr"` - Link []*types.Link `xml:"Link"` - } `xml:"VdcRef"` -} - -type vCloudSession struct { - VdcLink []struct { - AuthorizationToken string `xml:"authorizationToken,attr"` - AuthorizationHeader string `xml:"authorizationHeader,attr"` - Name string `xml:"name,attr"` - HREF string `xml:"href,attr"` - } `xml:"VdcLink"` -} - -// - -func (c *Client) vaauthorize(user, pass string) (u url.URL, err error) { - - if user == "" { - user = os.Getenv("VCLOUDAIR_USERNAME") - } - - if pass == "" { - pass = os.Getenv("VCLOUDAIR_PASSWORD") - } - - s := c.VAEndpoint - s.Path += "/vchs/sessions" - - // No point in checking for errors here - req := c.NewRequest(map[string]string{}, "POST", s, nil) - - // Set Basic Authentication Header - req.SetBasicAuth(user, pass) - - // Add the Accept header for vCA - req.Header.Add("Accept", "application/xml;version=5.6") - - resp, err := checkResp(c.Http.Do(req)) - if err != nil { - return url.URL{}, err - } - defer resp.Body.Close() - - // Store the authentication header - c.VAToken = resp.Header.Get("X-Vchs-Authorization") - - session := new(session) - - if err = decodeBody(resp, session); err != nil { - return url.URL{}, fmt.Errorf("error decoding session response: %s", err) - } - - // Loop in the session struct to find right service and compute resource. - for _, s := range session.Link { - if s.Type == "application/xml;class=vnd.vmware.vchs.servicelist" && s.Rel == "down" { - u, err := url.ParseRequestURI(s.HREF) - return *u, err - } - } - return url.URL{}, fmt.Errorf("couldn't find a Service List in current session") -} - -func (c *Client) vaacquireservice(s url.URL, cid string) (u url.URL, err error) { - - if cid == "" { - cid = os.Getenv("VCLOUDAIR_COMPUTEID") - } - - req := c.NewRequest(map[string]string{}, "GET", s, nil) - - // Add the Accept header for vCA - req.Header.Add("Accept", "application/xml;version=5.6") - - // Set Authorization Header for vCA - req.Header.Add("x-vchs-authorization", c.VAToken) - - resp, err := checkResp(c.Http.Do(req)) - if err != nil { - return url.URL{}, fmt.Errorf("error processing compute action: %s", err) - } - - services := new(services) - - if err = decodeBody(resp, services); err != nil { - return url.URL{}, fmt.Errorf("error decoding services response: %s", err) - } - - // Loop in the Services struct to find right service and compute resource. - for _, s := range services.Service { - if s.ServiceID == cid { - c.Region = s.Region - u, err := url.ParseRequestURI(s.HREF) - return *u, err - } - } - return url.URL{}, fmt.Errorf("couldn't find a Compute Resource in current service list") -} - -func (c *Client) vaacquirecompute(s url.URL, vid string) (u url.URL, err error) { - - if vid == "" { - vid = os.Getenv("VCLOUDAIR_VDCID") - } - - req := c.NewRequest(map[string]string{}, "GET", s, nil) - - // Add the Accept header for vCA - req.Header.Add("Accept", "application/xml;version=5.6") - - // Set Authorization Header - req.Header.Add("x-vchs-authorization", c.VAToken) - - resp, err := checkResp(c.Http.Do(req)) - if err != nil { - return url.URL{}, fmt.Errorf("error processing compute action: %s", err) - } - - computeresources := new(computeResources) - - if err = decodeBody(resp, computeresources); err != nil { - return url.URL{}, fmt.Errorf("error decoding computeresources response: %s", err) - } - - // Iterate through the ComputeResources struct searching for the right - // backend server - for _, s := range computeresources.VdcRef { - if s.Name == vid { - for _, t := range s.Link { - if t.Name == vid { - u, err := url.ParseRequestURI(t.HREF) - return *u, err - } - } - } - } - return url.URL{}, fmt.Errorf("couldn't find a VDC Resource in current Compute list") -} - -func (c *Client) vagetbackendauth(s url.URL, cid string) error { - - if cid == "" { - cid = os.Getenv("VCLOUDAIR_COMPUTEID") - } - - req := c.NewRequest(map[string]string{}, "POST", s, nil) - - // Add the Accept header for vCA - req.Header.Add("Accept", "application/xml;version=5.6") - - // Set Authorization Header - req.Header.Add("x-vchs-authorization", c.VAToken) - - // Adding exponential backoff to retry - b := backoff.NewExponentialBackOff() - b.MaxElapsedTime = time.Duration(30 * time.Second) - - ticker := backoff.NewTicker(b) - - var err error - var resp *http.Response - - for t := range ticker.C { - resp, err = checkResp(c.Http.Do(req)) - if err != nil { - fmt.Println(err, "retrying...", t) - continue - } - ticker.Stop() - break - - } - - if err != nil { - return fmt.Errorf("error processing backend url action: %s", err) - } - - defer resp.Body.Close() - - vcloudsession := new(vCloudSession) - - if err = decodeBody(resp, vcloudsession); err != nil { - return fmt.Errorf("error decoding vcloudsession response: %s", err) - } - - // Get the backend session information - for _, s := range vcloudsession.VdcLink { - if s.Name == cid { - // Fetch the authorization token - c.VCDToken = s.AuthorizationToken - - // Fetch the authorization header - c.VCDAuthHeader = s.AuthorizationHeader - - u, err := url.ParseRequestURI(s.HREF) - if err != nil { - return fmt.Errorf("error decoding href: %s", err) - } - c.VCDVDCHREF = *u - return nil - } - } - return fmt.Errorf("error finding the right backend resource") -} - -// NewClient returns a new empty client to authenticate against the vCloud Air -// service, the vCloud Air endpoint can be overridden by setting the -// VCLOUDAIR_ENDPOINT environment variable. -func NewClient() (*Client, error) { - - var u *url.URL - var err error - - if os.Getenv("VCLOUDAIR_ENDPOINT") != "" { - u, err = url.ParseRequestURI(os.Getenv("VCLOUDAIR_ENDPOINT")) - if err != nil { - return &Client{}, fmt.Errorf("cannot parse endpoint coming from VCLOUDAIR_ENDPOINT") - } - } else { - // Implicitly trust this URL parse. - u, _ = url.ParseRequestURI("https://vchs.vmware.com/api") - } - - Client := Client{ - VAEndpoint: *u, - // Patching things up as we're hitting several TLS timeouts. - Http: http.Client{Transport: &http.Transport{TLSHandshakeTimeout: 120 * time.Second}}, - } - return &Client, nil -} - -// Authenticate is an helper function that performs a complete login in vCloud -// Air and in the backend vCloud Director instance. -func (c *Client) Authenticate(username, password, computeid, vdcid string) (Vdc, error) { - // Authorize - vaservicehref, err := c.vaauthorize(username, password) - if err != nil { - return Vdc{}, fmt.Errorf("error Authorizing: %s", err) - } - - // Get Service - vacomputehref, err := c.vaacquireservice(vaservicehref, computeid) - if err != nil { - return Vdc{}, fmt.Errorf("error Acquiring Service: %s", err) - } - - // Get Compute - vavdchref, err := c.vaacquirecompute(vacomputehref, vdcid) - if err != nil { - return Vdc{}, fmt.Errorf("error Acquiring Compute: %s", err) - } - - // Get Backend Authorization - if err = c.vagetbackendauth(vavdchref, computeid); err != nil { - return Vdc{}, fmt.Errorf("error Acquiring Backend Authorization: %s", err) - } - - v, err := c.retrieveVDC() - if err != nil { - return Vdc{}, fmt.Errorf("error Acquiring VDC: %s", err) - } - - return v, nil - -} - -// NewRequest creates a new HTTP request and applies necessary auth headers if -// set. -func (c *Client) NewRequest(params map[string]string, method string, u url.URL, body io.Reader) *http.Request { - - p := url.Values{} - - // Build up our request parameters - for k, v := range params { - p.Add(k, v) - } - - // Add the params to our URL - u.RawQuery = p.Encode() - - // Build the request, no point in checking for errors here as we're just - // passing a string version of an url.URL struct and http.NewRequest returns - // error only if can't process an url.ParseRequestURI(). - req, _ := http.NewRequest(method, u.String(), body) - - if c.VCDAuthHeader != "" && c.VCDToken != "" { - // Add the authorization header - req.Header.Add(c.VCDAuthHeader, c.VCDToken) - // Add the Accept header for VCD - req.Header.Add("Accept", "application/*+xml;version=5.6") - } - - return req - -} - -// Disconnect performs a disconnection from the vCloud Air API endpoint. -func (c *Client) Disconnect() error { - if c.VCDToken == "" && c.VCDAuthHeader == "" && c.VAToken == "" { - return fmt.Errorf("cannot disconnect, client is not authenticated") - } - - s := c.VAEndpoint - s.Path += "/vchs/session" - - req := c.NewRequest(map[string]string{}, "DELETE", s, nil) - - // Add the Accept header for vCA - req.Header.Add("Accept", "application/xml;version=5.6") - - // Set Authorization Header - req.Header.Add("x-vchs-authorization", c.VAToken) - - if _, err := checkResp(c.Http.Do(req)); err != nil { - return fmt.Errorf("error processing session delete for vchs: %s", err) - } - - return nil -} - -// parseErr takes an error XML resp and returns a single string for use in error messages. -func parseErr(resp *http.Response) error { - - errBody := new(types.Error) - - // if there was an error decoding the body, just return that - if err := decodeBody(resp, errBody); err != nil { - return fmt.Errorf("error parsing error body for non-200 request: %s", err) - } - - return fmt.Errorf("API Error: %d: %s", errBody.MajorErrorCode, errBody.Message) -} - -// decodeBody is used to XML decode a response body -func decodeBody(resp *http.Response, out interface{}) error { - - body, err := ioutil.ReadAll(resp.Body) - if err != nil { - return err - } - - // Unmarshal the XML. - if err = xml.Unmarshal(body, &out); err != nil { - return err - } - - return nil -} - -// checkResp wraps http.Client.Do() and verifies the request, if status code -// is 2XX it passes back the response, if it's a known invalid status code it -// parses the resultant XML error and returns a descriptive error, if the -// status code is not handled it returns a generic error with the status code. -func checkResp(resp *http.Response, err error) (*http.Response, error) { - if err != nil { - return resp, err - } - - switch i := resp.StatusCode; { - // Valid request, return the response. - case i == 200 || i == 201 || i == 202 || i == 204: - return resp, nil - // Invalid request, parse the XML error returned and return it. - case i == 400 || i == 401 || i == 403 || i == 404 || i == 405 || i == 406 || i == 409 || i == 415 || i == 500 || i == 503 || i == 504: - return nil, parseErr(resp) - // Unhandled response. - default: - return nil, fmt.Errorf("unhandled API response, please report this issue, status code: %s", resp.Status) - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/catalog.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/catalog.go deleted file mode 100644 index 1f292655..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/catalog.go +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2014 VMware, Inc. All rights reserved. Licensed under the Apache v2 License. - */ - -package govcloudair - -import ( - "fmt" - "net/url" - - types "github.com/vmware/govcloudair/types/v56" -) - -type Catalog struct { - Catalog *types.Catalog - c *Client -} - -func NewCatalog(c *Client) *Catalog { - return &Catalog{ - Catalog: new(types.Catalog), - c: c, - } -} - -func (c *Catalog) FindCatalogItem(catalogitem string) (CatalogItem, error) { - - for _, cis := range c.Catalog.CatalogItems { - for _, ci := range cis.CatalogItem { - if ci.Name == catalogitem && ci.Type == "application/vnd.vmware.vcloud.catalogItem+xml" { - u, err := url.ParseRequestURI(ci.HREF) - - if err != nil { - return CatalogItem{}, fmt.Errorf("error decoding catalog response: %s", err) - } - - req := c.c.NewRequest(map[string]string{}, "GET", *u, nil) - - resp, err := checkResp(c.c.Http.Do(req)) - if err != nil { - return CatalogItem{}, fmt.Errorf("error retreiving catalog: %s", err) - } - - cat := NewCatalogItem(c.c) - - if err = decodeBody(resp, cat.CatalogItem); err != nil { - return CatalogItem{}, fmt.Errorf("error decoding catalog response: %s", err) - } - - // The request was successful - return *cat, nil - } - } - } - - return CatalogItem{}, fmt.Errorf("can't find catalog item: %s", catalogitem) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/catalogitem.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/catalogitem.go deleted file mode 100644 index 4261ef96..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/catalogitem.go +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2014 VMware, Inc. All rights reserved. Licensed under the Apache v2 License. - */ - -package govcloudair - -import ( - "fmt" - "net/url" - - types "github.com/vmware/govcloudair/types/v56" -) - -type CatalogItem struct { - CatalogItem *types.CatalogItem - c *Client -} - -func NewCatalogItem(c *Client) *CatalogItem { - return &CatalogItem{ - CatalogItem: new(types.CatalogItem), - c: c, - } -} - -func (ci *CatalogItem) GetVAppTemplate() (VAppTemplate, error) { - url, err := url.ParseRequestURI(ci.CatalogItem.Entity.HREF) - - if err != nil { - return VAppTemplate{}, fmt.Errorf("error decoding catalogitem response: %s", err) - } - - req := ci.c.NewRequest(map[string]string{}, "GET", *url, nil) - - resp, err := checkResp(ci.c.Http.Do(req)) - if err != nil { - return VAppTemplate{}, fmt.Errorf("error retreiving vapptemplate: %s", err) - } - - cat := NewVAppTemplate(ci.c) - - if err = decodeBody(resp, cat.VAppTemplate); err != nil { - return VAppTemplate{}, fmt.Errorf("error decoding vapptemplate response: %s", err) - } - - // The request was successful - return *cat, nil - -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/edgegateway.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/edgegateway.go deleted file mode 100644 index 7de0bfb1..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/edgegateway.go +++ /dev/null @@ -1,311 +0,0 @@ -/* - * Copyright 2014 VMware, Inc. All rights reserved. Licensed under the Apache v2 License. - */ - -package govcloudair - -import ( - "bytes" - "encoding/xml" - "fmt" - "net/url" - "os" - - types "github.com/vmware/govcloudair/types/v56" -) - -type EdgeGateway struct { - EdgeGateway *types.EdgeGateway - c *Client -} - -func NewEdgeGateway(c *Client) *EdgeGateway { - return &EdgeGateway{ - EdgeGateway: new(types.EdgeGateway), - c: c, - } -} - -func (e *EdgeGateway) Refresh() error { - - if e.EdgeGateway == nil { - return fmt.Errorf("cannot refresh, Object is empty") - } - - u, _ := url.ParseRequestURI(e.EdgeGateway.HREF) - - req := e.c.NewRequest(map[string]string{}, "GET", *u, nil) - - resp, err := checkResp(e.c.Http.Do(req)) - if err != nil { - return fmt.Errorf("error retreiving Edge Gateway: %s", err) - } - - // Empty struct before a new unmarshal, otherwise we end up with duplicate - // elements in slices. - e.EdgeGateway = &types.EdgeGateway{} - - if err = decodeBody(resp, e.EdgeGateway); err != nil { - return fmt.Errorf("error decoding Edge Gateway response: %s", err) - } - - // The request was successful - return nil -} - -func (e *EdgeGateway) Remove1to1Mapping(internal, external string) (Task, error) { - - // Refresh EdgeGateway rules - err := e.Refresh() - if err != nil { - fmt.Printf("error: %v\n", err) - } - - var uplinkif string - for _, gifs := range e.EdgeGateway.Configuration.GatewayInterfaces.GatewayInterface { - if gifs.InterfaceType == "uplink" { - uplinkif = gifs.Network.HREF - } - } - - newedgeconfig := e.EdgeGateway.Configuration.EdgeGatewayServiceConfiguration - - // Take care of the NAT service - newnatservice := &types.NatService{} - - // Copy over the NAT configuration - newnatservice.IsEnabled = newedgeconfig.NatService.IsEnabled - newnatservice.NatType = newedgeconfig.NatService.NatType - newnatservice.Policy = newedgeconfig.NatService.Policy - newnatservice.ExternalIP = newedgeconfig.NatService.ExternalIP - - for k, v := range newedgeconfig.NatService.NatRule { - - // Kludgy IF to avoid deleting DNAT rules not created by us. - // If matches, let's skip it and continue the loop - if v.RuleType == "DNAT" && - v.GatewayNatRule.OriginalIP == external && - v.GatewayNatRule.TranslatedIP == internal && - v.GatewayNatRule.OriginalPort == "any" && - v.GatewayNatRule.TranslatedPort == "any" && - v.GatewayNatRule.Protocol == "any" && - v.GatewayNatRule.Interface.HREF == uplinkif { - continue - } - - // Kludgy IF to avoid deleting SNAT rules not created by us. - // If matches, let's skip it and continue the loop - if v.RuleType == "SNAT" && - v.GatewayNatRule.OriginalIP == internal && - v.GatewayNatRule.TranslatedIP == external && - v.GatewayNatRule.Interface.HREF == uplinkif { - continue - } - - // If doesn't match the above IFs, it's something we need to preserve, - // let's add it to the new NatService struct - newnatservice.NatRule = append(newnatservice.NatRule, newedgeconfig.NatService.NatRule[k]) - - } - - // Fill the new NatService Section - newedgeconfig.NatService = newnatservice - - // Take care of the Firewall service - newfwservice := &types.FirewallService{} - - // Copy over the firewall configuration - newfwservice.IsEnabled = newedgeconfig.FirewallService.IsEnabled - newfwservice.DefaultAction = newedgeconfig.FirewallService.DefaultAction - newfwservice.LogDefaultAction = newedgeconfig.FirewallService.LogDefaultAction - - for k, v := range newedgeconfig.FirewallService.FirewallRule { - - // Kludgy IF to avoid deleting inbound FW rules not created by us. - // If matches, let's skip it and continue the loop - if v.Policy == "allow" && - v.Protocols.Any == true && - v.DestinationPortRange == "Any" && - v.SourcePortRange == "Any" && - v.SourceIP == "Any" && - v.DestinationIP == external { - continue - } - - // Kludgy IF to avoid deleting outbound FW rules not created by us. - // If matches, let's skip it and continue the loop - if v.Policy == "allow" && - v.Protocols.Any == true && - v.DestinationPortRange == "Any" && - v.SourcePortRange == "Any" && - v.SourceIP == internal && - v.DestinationIP == "Any" { - continue - } - - // If doesn't match the above IFs, it's something we need to preserve, - // let's add it to the new FirewallService struct - newfwservice.FirewallRule = append(newfwservice.FirewallRule, newedgeconfig.FirewallService.FirewallRule[k]) - - } - - // Fill the new FirewallService Section - newedgeconfig.FirewallService = newfwservice - - // Fix - newedgeconfig.NatService.IsEnabled = true - - output, err := xml.MarshalIndent(newedgeconfig, " ", " ") - if err != nil { - fmt.Printf("error: %v\n", err) - } - - debug := os.Getenv("GOVCLOUDAIR_DEBUG") - - if debug == "true" { - fmt.Printf("\n\nXML DEBUG: %s\n\n", string(output)) - } - - b := bytes.NewBufferString(xml.Header + string(output)) - - s, _ := url.ParseRequestURI(e.EdgeGateway.HREF) - s.Path += "/action/configureServices" - - req := e.c.NewRequest(map[string]string{}, "POST", *s, b) - - req.Header.Add("Content-Type", "application/vnd.vmware.admin.edgeGatewayServiceConfiguration+xml") - - resp, err := checkResp(e.c.Http.Do(req)) - if err != nil { - return Task{}, fmt.Errorf("error reconfiguring Edge Gateway: %s", err) - } - - task := NewTask(e.c) - - if err = decodeBody(resp, task.Task); err != nil { - return Task{}, fmt.Errorf("error decoding Task response: %s", err) - } - - // The request was successful - return *task, nil - -} - -func (e *EdgeGateway) Create1to1Mapping(internal, external, description string) (Task, error) { - - // Refresh EdgeGateway rules - err := e.Refresh() - if err != nil { - fmt.Printf("error: %v\n", err) - } - - var uplinkif string - for _, gifs := range e.EdgeGateway.Configuration.GatewayInterfaces.GatewayInterface { - if gifs.InterfaceType == "uplink" { - uplinkif = gifs.Network.HREF - } - } - - newedgeconfig := e.EdgeGateway.Configuration.EdgeGatewayServiceConfiguration - - snat := &types.NatRule{ - Description: description, - RuleType: "SNAT", - IsEnabled: true, - GatewayNatRule: &types.GatewayNatRule{ - Interface: &types.Reference{ - HREF: uplinkif, - }, - OriginalIP: internal, - TranslatedIP: external, - Protocol: "any", - }, - } - - newedgeconfig.NatService.NatRule = append(newedgeconfig.NatService.NatRule, snat) - - dnat := &types.NatRule{ - Description: description, - RuleType: "DNAT", - IsEnabled: true, - GatewayNatRule: &types.GatewayNatRule{ - Interface: &types.Reference{ - HREF: uplinkif, - }, - OriginalIP: external, - OriginalPort: "any", - TranslatedIP: internal, - TranslatedPort: "any", - Protocol: "any", - }, - } - - newedgeconfig.NatService.NatRule = append(newedgeconfig.NatService.NatRule, dnat) - - fwin := &types.FirewallRule{ - Description: description, - IsEnabled: true, - Policy: "allow", - Protocols: &types.FirewallRuleProtocols{ - Any: true, - }, - DestinationPortRange: "Any", - DestinationIP: external, - SourcePortRange: "Any", - SourceIP: "Any", - EnableLogging: false, - } - - newedgeconfig.FirewallService.FirewallRule = append(newedgeconfig.FirewallService.FirewallRule, fwin) - - fwout := &types.FirewallRule{ - Description: description, - IsEnabled: true, - Policy: "allow", - Protocols: &types.FirewallRuleProtocols{ - Any: true, - }, - DestinationPortRange: "Any", - DestinationIP: "Any", - SourcePortRange: "Any", - SourceIP: internal, - EnableLogging: false, - } - - newedgeconfig.FirewallService.FirewallRule = append(newedgeconfig.FirewallService.FirewallRule, fwout) - - output, err := xml.MarshalIndent(newedgeconfig, " ", " ") - if err != nil { - fmt.Printf("error: %v\n", err) - } - - debug := os.Getenv("GOVCLOUDAIR_DEBUG") - - if debug == "true" { - fmt.Printf("\n\nXML DEBUG: %s\n\n", string(output)) - } - - b := bytes.NewBufferString(xml.Header + string(output)) - - s, _ := url.ParseRequestURI(e.EdgeGateway.HREF) - s.Path += "/action/configureServices" - - req := e.c.NewRequest(map[string]string{}, "POST", *s, b) - - req.Header.Add("Content-Type", "application/vnd.vmware.admin.edgeGatewayServiceConfiguration+xml") - - resp, err := checkResp(e.c.Http.Do(req)) - if err != nil { - return Task{}, fmt.Errorf("error reconfiguring Edge Gateway: %s", err) - } - - task := NewTask(e.c) - - if err = decodeBody(resp, task.Task); err != nil { - return Task{}, fmt.Errorf("error decoding Task response: %s", err) - } - - // The request was successful - return *task, nil - -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/org.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/org.go deleted file mode 100644 index e0059d31..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/org.go +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2014 VMware, Inc. All rights reserved. Licensed under the Apache v2 License. - */ - -package govcloudair - -import ( - "fmt" - "net/url" - - types "github.com/vmware/govcloudair/types/v56" -) - -type Org struct { - Org *types.Org - c *Client -} - -func NewOrg(c *Client) *Org { - return &Org{ - Org: new(types.Org), - c: c, - } -} - -func (o *Org) FindCatalog(catalog string) (Catalog, error) { - - for _, av := range o.Org.Link { - if av.Rel == "down" && av.Type == "application/vnd.vmware.vcloud.catalog+xml" && av.Name == catalog { - u, err := url.ParseRequestURI(av.HREF) - - if err != nil { - return Catalog{}, fmt.Errorf("error decoding org response: %s", err) - } - - req := o.c.NewRequest(map[string]string{}, "GET", *u, nil) - - resp, err := checkResp(o.c.Http.Do(req)) - if err != nil { - return Catalog{}, fmt.Errorf("error retreiving catalog: %s", err) - } - - cat := NewCatalog(o.c) - - if err = decodeBody(resp, cat.Catalog); err != nil { - return Catalog{}, fmt.Errorf("error decoding catalog response: %s", err) - } - - // The request was successful - return *cat, nil - - } - } - - return Catalog{}, fmt.Errorf("can't find catalog: %s", catalog) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/orgvdcnetwork.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/orgvdcnetwork.go deleted file mode 100644 index 979dfd0e..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/orgvdcnetwork.go +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2014 VMware, Inc. All rights reserved. Licensed under the Apache v2 License. - */ - -package govcloudair - -import ( - types "github.com/vmware/govcloudair/types/v56" -) - -type OrgVDCNetwork struct { - OrgVDCNetwork *types.OrgVDCNetwork - c *Client -} - -func NewOrgVDCNetwork(c *Client) *OrgVDCNetwork { - return &OrgVDCNetwork{ - OrgVDCNetwork: new(types.OrgVDCNetwork), - c: c, - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/task.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/task.go deleted file mode 100644 index c6629369..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/task.go +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2014 VMware, Inc. All rights reserved. Licensed under the Apache v2 License. - */ - -package govcloudair - -import ( - "fmt" - "net/url" - "time" - - types "github.com/vmware/govcloudair/types/v56" -) - -type Task struct { - Task *types.Task - c *Client -} - -func NewTask(c *Client) *Task { - return &Task{ - Task: new(types.Task), - c: c, - } -} - -func (t *Task) Refresh() error { - - if t.Task == nil { - return fmt.Errorf("cannot refresh, Object is empty") - } - - u, _ := url.ParseRequestURI(t.Task.HREF) - - req := t.c.NewRequest(map[string]string{}, "GET", *u, nil) - - resp, err := checkResp(t.c.Http.Do(req)) - if err != nil { - return fmt.Errorf("error retrieving task: %s", err) - } - - // Empty struct before a new unmarshal, otherwise we end up with duplicate - // elements in slices. - t.Task = &types.Task{} - - if err = decodeBody(resp, t.Task); err != nil { - return fmt.Errorf("error decoding task response: %s", err) - } - - // The request was successful - return nil -} - -func (t *Task) WaitTaskCompletion() error { - - if t.Task == nil { - return fmt.Errorf("cannot refresh, Object is empty") - } - - for { - err := t.Refresh() - if err != nil { - return fmt.Errorf("error retreiving task: %s", err) - } - - // If task is not in a waiting status we're done, check if there's an error and return it. - if t.Task.Status != "queued" && t.Task.Status != "preRunning" && t.Task.Status != "running" { - if t.Task.Status == "error" { - return fmt.Errorf("task did not complete succesfully: %s", t.Task.Description) - } - return nil - } - - // Sleep for 3 seconds and try again. - time.Sleep(3 * time.Second) - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/types/v56/types.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/types/v56/types.go deleted file mode 100644 index 186ae31f..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/types/v56/types.go +++ /dev/null @@ -1,1394 +0,0 @@ -/* - * Copyright 2014 VMware, Inc. All rights reserved. Licensed under the Apache v2 License. - */ - -package types - -import ( - "encoding/xml" -) - -// Maps status Attribute Values for VAppTemplate, VApp, Vm, and Media Objects -var VAppStatuses = map[int]string{ - -1: "FAILED_CREATION", - 0: "UNRESOLVED", - 1: "RESOLVED", - 2: "DEPLOYED", - 3: "SUSPENDED", - 4: "POWERED_ON", - 5: "WAITING_FOR_INPUT", - 6: "UNKNOWN", - 7: "UNRECOGNIZED", - 8: "POWERED_OFF", - 9: "INCONSISTENT_STATE", - 10: "MIXED", - 11: "DESCRIPTOR_PENDING", - 12: "COPYING_CONTENTS", - 13: "DISK_CONTENTS_PENDING", - 14: "QUARANTINED", - 15: "QUARANTINE_EXPIRED", - 16: "REJECTED", - 17: "TRANSFER_TIMEOUT", - 18: "VAPP_UNDEPLOYED", - 19: "VAPP_PARTIALLY_DEPLOYED", -} - -// Maps status Attribute Values for VDC Objects -var VDCStatuses = map[int]string{ - -1: "FAILED_CREATION", - 0: "NOT_READY", - 1: "READY", - 2: "UNKNOWN", - 3: "UNRECOGNIZED", -} - -// VCD API - -// Type: DefaultStorageProfileSection_Type -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Name of the storage profile that will be specified for this virtual machine. The named storage profile must exist in the organization vDC that contains the virtual machine. If not specified, the default storage profile for the vDC is used. -// Since: 5.1 -type DefaultStorageProfileSection struct { - StorageProfile string `xml:"StorageProfile,omitempty"` -} - -// Type: CustomizationSectionType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents a vApp template customization settings. -// Since: 1.0 -type CustomizationSection struct { - // FIXME: OVF Section needs to be laid down correctly - Info string `xml:"ovf:Info"` - // - GoldMaster bool `xml:"goldMaster,attr,omitempty"` - HREF string `xml:"href,attr,omitempty"` - Type string `xml:"type,attr,omitempty"` - CustomizeOnInstantiate bool `xml:"CustomizeOnInstantiate"` - Link []*Link `xml:"Link,omitempty"` -} - -// Type: LeaseSettingsSectionType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents vApp lease settings. -// Since: 0.9 -type LeaseSettingsSection struct { - HREF string `xml:"href,attr,omitempty"` - Type string `xml:"type,attr,omitempty"` - DeploymentLeaseExpiration string `xml:"DeploymentLeaseExpiration,omitempty"` - DeploymentLeaseInSeconds int `xml:"DeploymentLeaseInSeconds,omitempty"` - Link *Link `xml:"Link,omitempty"` - StorageLeaseExpiration string `xml:"StorageLeaseExpiration,omitempty"` - StorageLeaseInSeconds int `xml:"StorageLeaseInSeconds,omitempty"` -} - -// Type: IpRangeType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents a range of IP addresses, start and end inclusive. -// Since: 0.9 -type IPRange struct { - EndAddress string `xml:"EndAddress"` // End address of the IP range. - StartAddress string `xml:"StartAddress"` // Start address of the IP range. -} - -// Type: DhcpServiceType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents a DHCP network service. -// Since: -type DhcpService struct { - DefaultLeaseTime int `xml:"DefaultLeaseTime,omitempty"` // Default lease in seconds for DHCP addresses. - DomainName string `xml:"DomainName,omitempty"` // The domain name. - IPRange *IPRange `xml:"IpRange"` // IP range for DHCP addresses. - IsEnabled bool `xml:"IsEnabled"` // Enable or disable the service using this flag - MaxLeaseTime int `xml:"MaxLeaseTime"` // Max lease in seconds for DHCP addresses. - PrimaryNameServer string `xml:"PrimaryNameServer,omitempty"` // The primary name server. - RouterIP string `xml:"RouterIp,omitempty"` // Router IP. - SecondaryNameServer string `xml:"SecondaryNameServer,omitempty"` // The secondary name server. - SubMask string `xml:"SubMask,omitempty"` // The subnet mask. -} - -// Type: NetworkFeaturesType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents features of a network. -// Since: -type NetworkFeatures struct { - DhcpService *DhcpService `xml:"DhcpService,omitempty"` // Substitute for NetworkService. DHCP service settings - FirewallService *FirewallService `xml:"FirewallService,omitempty"` // Substitute for NetworkService. Firewall service settings - NatService *NatService `xml:"NatService,omitempty"` // Substitute for NetworkService. NAT service settings - LoadBalancerService *LoadBalancerService `xml:"LoadBalancerService,omitempty"` // Substitute for NetworkService. Load Balancer service settings - StaticRoutingService *StaticRoutingService `xml:"StaticRoutingService,omitempty"` // Substitute for NetworkService. Static Routing service settings - // TODO: Not Implemented - // IpsecVpnService IpsecVpnService `xml:"IpsecVpnService,omitempty"` // Substitute for NetworkService. Ipsec Vpn service settings -} - -// Type: IpAddressesType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: A list of IP addresses. -// Since: 0.9 -type IPAddresses struct { - IPAddress string `xml:"IpAddress,omitempty"` // An IP address. -} - -// Type: IpRangesType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents a list of IP ranges. -// Since: 0.9 -type IPRanges struct { - IPRange []*IPRange `xml:"IpRange,omitempty"` // IP range. -} - -// Type: IpScopeType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Specify network settings like gateway, network mask, DNS servers, IP ranges, etc. -// Since: 0.9 -type IPScope struct { - IsInherited bool `xml:"IsInherited"` // True if the IP scope is inherit from parent network. - Gateway string `xml:"Gateway,omitempty"` // Gateway of the network. - Netmask string `xml:"Netmask,omitempty"` // Network mask. - DNS1 string `xml:"Dns1,omitempty"` // Primary DNS server. - DNS2 string `xml:"Dns2,omitempty"` // Secondary DNS server. - DNSSuffix string `xml:"DnsSuffix,omitempty"` // DNS suffix. - IsEnabled bool `xml:"IsEnabled"` // Indicates if subnet is enabled or not. Default value is True. - IPRanges *IPRanges `xml:"IpRanges,omitempty"` // IP ranges used for static pool allocation in the network. - AllocatedIPAddresses *IPAddresses `xml:"AllocatedIpAddresses,omitempty"` // Read-only list of allocated IP addresses in the network. - SubAllocations *SubAllocations `xml:"SubAllocations,omitempty"` // Read-only list of IP addresses that are sub allocated to edge gateways. -} - -// Type: SubAllocationsType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: A list of IP addresses that are sub allocated to edge gateways. -// Since: 5.1 -type SubAllocations struct { - // Attributes - HREF string `xml:"href,attr,omitempty"` // The URI of the entity. - Type string `xml:"type,attr,omitempty"` // The MIME type of the entity. - // Elements - Link []*Link `xml:"Link,omitempty"` // A reference to an entity or operation associated with this object. - SubAllocation *SubAllocation `xml:"SubAllocation,omitempty"` // IP Range sub allocated to a edge gateway. -} - -// Type: SubAllocationType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: IP range sub allocated to an edge gateway. -// Since: 5.1 -type SubAllocation struct { - EdgeGateway *Reference `xml:"EdgeGateway,omitempty"` // Edge gateway that uses this sub allocation. - IPRanges *IPRanges `xml:"IpRanges,omitempty"` // IP range sub allocated to the edge gateway. -} - -// Type: IpScopesType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents a list of IP scopes. -// Since: 5.1 -type IPScopes struct { - IPScope IPScope `xml:"IpScope"` // IP scope. -} - -// Type: NetworkConfigurationType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: The configurations applied to a network. This is an abstract base type. The concrete types include those for vApp and Organization wide networks. -// Since: 0.9 -type NetworkConfiguration struct { - BackwardCompatibilityMode bool `xml:"BackwardCompatibilityMode"` - Features *NetworkFeatures `xml:"Features,omitempty"` - ParentNetwork *Reference `xml:"ParentNetwork,omitempty"` - FenceMode string `xml:"FenceMode"` - IPScopes *IPScopes `xml:"IpScopes,omitempty"` - RetainNetInfoAcrossDeployments bool `xml:"RetainNetInfoAcrossDeployments"` - // TODO: Not Implemented - // RouterInfo RouterInfo `xml:"RouterInfo,omitempty"` - // SyslogServerSettings SyslogServerSettings `xml:"SyslogServerSettings,omitempty"` -} - -// Type: VAppNetworkConfigurationType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents a vApp network configuration. -// Since: 0.9 -type VAppNetworkConfiguration struct { - HREF string `xml:"href,attr,omitempty"` - Type string `xml:"type,attr,omitempty"` - NetworkName string `xml:"networkName,attr"` - - Configuration *NetworkConfiguration `xml:"Configuration"` - Description string `xml:"Description,omitempty"` - IsDeployed bool `xml:"IsDeployed"` - Link *Link `xml:"Link,omitempty"` -} - -// Type: NetworkConfigSectionType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Container for vApp networks. -// Since: 0.9 -type NetworkConfigSection struct { - // Extends OVF Section_Type - // FIXME: Fix the OVF section - Info string `xml:"ovf:Info"` - // - HREF string `xml:"href,attr,omitempty"` - Type string `xml:"type,attr,omitempty"` - Link *Link `xml:"Link,omitempty"` - NetworkConfig *VAppNetworkConfiguration `xml:"NetworkConfig,omitempty"` -} - -// Type: NetworkConnectionType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents a network connection in the virtual machine. -// Since: 0.9 -type NetworkConnection struct { - Network string `xml:"network,attr"` // Name of the network to which this NIC is connected. - NetworkConnectionIndex int `xml:"NetworkConnectionIndex"` // Virtual slot number associated with this NIC. First slot number is 0. - IsConnected bool `xml:"IsConnected"` // If the virtual machine is undeployed, this value specifies whether the NIC should be connected upon deployment. If the virtual machine is deployed, this value reports the current status of this NIC's connection, and can be updated to change that connection status. - NeedsCustomization bool `xml:"needsCustomization,attr,omitempty"` // True if this NIC needs customization. - ExternalIPAddress string `xml:"ExternalIpAddress,omitempty"` // If the network to which this NIC connects provides NAT services, the external address assigned to this NIC appears here. - IPAddress string `xml:"IpAddress,omitempty"` // IP address assigned to this NIC. - IPAddressAllocationMode string `xml:"IpAddressAllocationMode"` // IP address allocation mode for this connection. One of: POOL (A static IP address is allocated automatically from a pool of addresses.) DHCP (The IP address is obtained from a DHCP service.) MANUAL (The IP address is assigned manually in the IpAddress element.) NONE (No IP addressing mode specified.) - MACAddress string `xml:"MACAddress,omitempty"` // MAC address associated with the NIC. -} - -// Type: NetworkConnectionSectionType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Container for the network connections of this virtual machine. -// Since: 0.9 -type NetworkConnectionSection struct { - // Extends OVF Section_Type - // FIXME: Fix the OVF section - Info string `xml:"ovf:Info"` - // - HREF string `xml:"href,attr,omitempty"` - Type string `xml:"type,attr,omitempty"` - Link *Link `xml:"Link,omitempty"` - PrimaryNetworkConnectionIndex int `xml:"PrimaryNetworkConnectionIndex"` - NetworkConnection *NetworkConnection `xml:"NetworkConnection,omitempty"` -} - -// Type: InstantiationParamsType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Container for ovf:Section_Type elements that specify vApp configuration on instantiate, compose, or recompose. -// Since: 0.9 -type InstantiationParams struct { - CustomizationSection *CustomizationSection `xml:"CustomizationSection,omitempty"` - DefaultStorageProfileSection *DefaultStorageProfileSection `xml:"DefaultStorageProfileSection,omitempty"` - GuestCustomizationSection *GuestCustomizationSection `xml:"GuestCustomizationSection,omitempty"` - LeaseSettingsSection *LeaseSettingsSection `xml:"LeaseSettingsSection,omitempty"` - NetworkConfigSection *NetworkConfigSection `xml:"NetworkConfigSection,omitempty"` - NetworkConnectionSection *NetworkConnectionSection `xml:"NetworkConnectionSection,omitempty"` - // TODO: Not Implemented - // SnapshotSection SnapshotSection `xml:"SnapshotSection,omitempty"` -} - -// Type: OrgVdcNetworkType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents an Org vDC network in the vCloud model. -// Since: 5.1 -type OrgVDCNetwork struct { - XMLName xml.Name `xml:"OrgVdcNetwork"` - HREF string `xml:"href,attr,omitempty"` - Type string `xml:"type,attr,omitempty"` - ID string `xml:"id,attr,omitempty"` - OperationKey string `xml:"operationKey,attr,omitempty"` - Name string `xml:"name,attr"` - Status string `xml:"status,attr,omitempty"` - Configuration *NetworkConfiguration `xml:"Configuration,omitempty"` - Description string `xml:"Description,omitempty"` - EdgeGateway *Reference `xml:"EdgeGateway,omitempty"` - IsShared bool `xml:"IsShared"` - Link []Link `xml:"Link"` - ServiceConfig *GatewayFeatures `xml:"ServiceConfig,omitempty"` // Specifies the service configuration for an isolated Org vDC networks - Tasks TasksInProgress `xml:"Tasks,omitempty"` -} - -// Type: SupportedHardwareVersionType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents a supported virtual hardware version. -// Since: 1.5 -type SupportedHardwareVersion struct { - SupportedHardwareVersion string `xml:"SupportedHardwareVersion"` -} - -// Type: SupportedHardwareVersionsType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Contains a list of VMware virtual hardware versions supported in this vDC. -// Since: 1.5 -type SupportedHardwareVersions struct { - SupportedHardwareVersion []*SupportedHardwareVersion `xml:"SupportedHardwareVersion,omitempty"` // A virtual hardware version supported in this vDC. -} - -// Type: CapabilitiesType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Collection of supported hardware capabilities. -// Since: 1.5 -type Capabilities struct { - SupportedHardwareVersions *SupportedHardwareVersions `xml:"SupportedHardwareVersions,omitempty"` // Read-only list of virtual hardware versions supported by this vDC. -} - -// Type: VdcType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents the user view of an organization vDC. -// Since: 0.9 -type Vdc struct { - HREF string `xml:"href,attr,omitempty"` - Type string `xml:"type,attr,omitempty"` - ID string `xml:"id,attr,omitempty"` - OperationKey string `xml:"operationKey,attr,omitempty"` - Name string `xml:"name,attr"` - Status string `xml:"status,attr,omitempty"` - - AllocationModel string `xml:"AllocationModel"` - AvailableNetworks []*AvailableNetworks `xml:"AvailableNetworks,omitempty"` - Capabilities []*Capabilities `xml:"Capabilities,omitempty"` - ComputeCapacity []*ComputeCapacity `xml:"ComputeCapacity"` - Description string `xml:"Description,omitempty"` - IsEnabled bool `xml:"IsEnabled"` - Link []*Link `xml:"Link,omitempty"` - NetworkQuota int `xml:"NetworkQuota"` - NicQuota int `xml:"NicQuota"` - ResourceEntities []*ResourceEntities `xml:"ResourceEntities,omitempty"` - Tasks *TasksInProgress `xml:"Taks,omitempty"` - UsedNetworkCount int `xml:"UsedNetworkCount,omitempty"` - VdcStorageProfiles []*VdcStorageProfiles `xml:"VdcStorageProfiles"` - VMQuota int `xml:"VmQuota"` -} - -// Type: TaskType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents an asynchronous operation in vCloud Director. -// Since: 0.9 -type Task struct { - HREF string `xml:"href,attr,omitempty"` - Type string `xml:"type,attr,omitempty"` - ID string `xml:"id,attr,omitempty"` - OperationKey string `xml:"operationKey,attr,omitempty"` - Name string `xml:"name,attr"` - Status string `xml:"status,attr"` - Operation string `xml:"operation,attr,omitempty"` - OperationName string `xml:"operationName,attr,omitempty"` - ServiceNamespace string `xml:"serviceNamespace,attr,omitempty"` - StartTime string `xml:"startTime,attr,omitempty"` - EndTime string `xml:"endTime,attr,omitempty"` - ExpiryTime string `xml:"expiryTime,attr,omitempty"` - CancelRequested bool `xml:"cancelRequested,attr,omitempty"` - Description string `xml:"Description,omitempty"` - Details string `xml:"Details,omitempty"` - Error *Error `xml:"Error,omitempty"` - Link *Link `xml:"Link,omitempty"` - Organization *Reference `xml:"Organization,omitempty"` - Owner *Reference `xml:"Owner,omitempty"` - Progress int `xml:"Progress,omitempty"` - Tasks *TasksInProgress `xml:"Tasks,omitempty"` - User *Reference `xml:"User,omitempty"` -} - -// Type: CapacityWithUsageType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents a capacity and usage of a given resource. -// Since: 0.9 -type CapacityWithUsage struct { - Allocated int64 `xml:"Allocated,omitempty"` - Limit int64 `xml:"Limit,omitempty"` - Overhead int64 `xml:"Overhead,omitempty"` - Reserved int64 `xml:"Reserved,omitempty"` - Units string `xml:"Units"` - Used int64 `xml:"Used,omitempty"` -} - -// Type: ComputeCapacityType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents vDC compute capacity. -// Since: 0.9 -type ComputeCapacity struct { - CPU *CapacityWithUsage `xml:"Cpu"` - Memory *CapacityWithUsage `xml:"Memory"` -} - -// Type: ReferenceType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: A reference to a resource. Contains an href attribute and optional name and type attributes. -// Since: 0.9 -type Reference struct { - HREF string `xml:"href,attr"` - ID string `xml:"id,attr,omitempty"` - Type string `xml:"type,attr,omitempty"` - Name string `xml:"name,attr,omitempty"` -} - -// Type: ResourceReferenceType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents a reference to a resource. Contains an href attribute, a resource status attribute, and optional name and type attributes. -// Since: 0.9 -type ResourceReference struct { - HREF string `xml:"href,attr"` - ID string `xml:"id,attr,omitempty"` - Type string `xml:"type,attr,omitempty"` - Name string `xml:"name,attr,omitempty"` - Status string `xml:"status,attr,omitempty"` -} - -// Element: VdcStorageProfiles -// Type: VdcStorageProfilesType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Container for references to storage profiles associated with a vDC. -// Since: 5.1 -type VdcStorageProfiles struct { - VdcStorageProfile []*Reference `xml:"VdcStorageProfile,omitempty"` -} - -// Type: ResourceEntitiesType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Container for references to ResourceEntity objects in this vDC. -// Since: 0.9 -type ResourceEntities struct { - ResourceEntity []*ResourceReference `xml:"ResourceEntity,omitempty"` -} - -// Type: AvailableNetworksType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Container for references to available organization vDC networks. -// Since: 0.9 -type AvailableNetworks struct { - Network []*Reference `xml:"Network,omitempty"` -} - -// Type: LinkType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Extends reference type by adding relation attribute. Defines a hyper-link with a relationship, hyper-link reference, and an optional MIME type. -// Since: 0.9 -type Link struct { - HREF string `xml:"href,attr"` - ID string `xml:"id,attr,omitempty"` - Type string `xml:"type,attr,omitempty"` - Name string `xml:"name,attr,omitempty"` - Rel string `xml:"rel,attr"` -} - -// Type: OrgType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents the user view of a vCloud Director organization. -// Since: 0.9 -type Org struct { - HREF string `xml:"href,attr,omitempty"` - Type string `xml:"type,attr,omitempty"` - ID string `xml:"id,attr,omitempty"` - OperationKey string `xml:"operationKey,attr,omitempty"` - Name string `xml:"name,attr"` - Description string `xml:"Description,omitempty"` - FullName string `xml:"FullName"` - IsEnabled bool `xml:"IsEnabled,omitempty"` - Link []*Link `xml:"Link,omitempty"` - Tasks *TasksInProgress `xml:"Tasks,omitempty"` -} - -// Type: CatalogItemType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Contains a reference to a VappTemplate or Media object and related metadata. -// Since: 0.9 -type CatalogItem struct { - HREF string `xml:"href,attr,omitempty"` - Type string `xml:"type,attr,omitempty"` - ID string `xml:"id,attr,omitempty"` - OperationKey string `xml:"operationKey,attr,omitempty"` - Name string `xml:"name,attr"` - Size int64 `xml:"size,attr,omitempty"` - DateCreated string `xml:"DateCreated,omitempty"` - Description string `xml:"Description,omitempty"` - Entity *Entity `xml:"Entity"` - Link []*Link `xml:"Link,omitempty"` - Tasks *TasksInProgress `xml:"Tasks,omitempty"` - VersionNumber int64 `xml:"VersionNumber,omitempty"` -} - -// Type: EntityType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Basic entity type in the vCloud object model. Includes a name, an optional description, and an optional list of links. -// Since: 0.9 -type Entity struct { - HREF string `xml:"href,attr,omitempty"` - Type string `xml:"type,attr,omitempty"` - ID string `xml:"id,attr,omitempty"` - OperationKey string `xml:"operationKey,attr,omitempty"` - Name string `xml:"name,attr"` - Description string `xml:"Description,omitempty"` - Link []*Link `xml:"Link,omitempty"` - Tasks *TasksInProgress `xml:"Tasks,omitempty"` -} - -// Type: CatalogItemsType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Container for references to catalog items. -// Since: 0.9 -type CatalogItems struct { - CatalogItem []*Reference `xml:"CatalogItem"` -} - -// Type: CatalogType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents the user view of a Catalog object. -// Since: 0.9 -type Catalog struct { - HREF string `xml:"href,attr,omitempty"` - Type string `xml:"type,attr,omitempty"` - ID string `xml:"id,attr,omitempty"` - OperationKey string `xml:"operationKey,attr,omitempty"` - Name string `xml:"name,attr"` - CatalogItems []*CatalogItems `xml:"CatalogItems"` - DateCreated string `xml:"DateCreated"` - Description string `xml:"Description"` - IsPublished bool `xml:"IsPublished"` - Link []*Link `xml:"Link"` - Owner *Owner `xml:"Owner,omitempty"` - Tasks *TasksInProgress `xml:"Tasks,omitempty"` - VersionNumber int64 `xml:"VersionNumber"` -} - -// Type: OwnerType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents the owner of this entity. -// Since: 1.5 -type Owner struct { - HREF string `xml:"href,attr,omitempty"` - Type string `xml:"type,attr,omitempty"` - Link []*Link `xml:"Link,omitempty"` - User *Reference `xml:"User"` -} - -// Type: ErrorType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: The standard error message type used in the vCloud REST API. -// Since: 0.9 -type Error struct { - Message string `xml:"message,attr"` - MajorErrorCode int `xml:"majorErrorCode,attr"` - MinorErrorCode string `xml:"minorErrorCode,attr"` - VendorSpecificErrorCode string `xml:"vendorSpecificErrorCode,attr,omitempty"` - StackTrace string `xml:"stackTrace,attr,omitempty"` -} - -// Type: FileType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents a file to be transferred (uploaded or downloaded). -// Since: 0.9 -type File struct { - HREF string `xml:"href,attr,omitempty"` - Type string `xml:"type,attr,omitempty"` - ID string `xml:"id,attr,omitempty"` - OperationKey string `xml:"operationKey,attr,omitempty"` - Name string `xml:"name,attr"` - Size int64 `xml:"size,attr,omitempty"` - BytesTransferred int64 `xml:"bytesTransferred,attr,omitempty"` - Checksum string `xml:"checksum,attr,omitempty"` - Description string `xml:"Description,omitempty"` - Link []*Link `xml:"Link,omitempty"` - Tasks *TasksInProgress `xml:"Tasks,omitempty"` -} - -// Type: FilesListType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents a list of files to be transferred (uploaded or downloaded). -// Since: 0.9 -type FilesList struct { - File []*File `xml:"File"` -} - -// Type: UndeployVAppParamsType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Parameters to an undeploy vApp request. -// Since: 0.9 -type UndeployVAppParams struct { - Xmlns string `xml:"xmlns,attr"` - UndeployPowerAction string `xml:"UndeployPowerAction,omitempty"` -} - -// Type: VmCapabilitiesType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Allows you to specify certain capabilities of this virtual machine. -// Since: 5.1 -type VMCapabilities struct { - HREF string `xml:"href,attr,omitempty"` - Type string `xml:"type,attr,omitempty"` - CPUHotAddEnabled bool `xml:"CpuHotAddEnabled,omitempty"` - Link []*Link `xml:"Link,omitempty"` - MemoryHotAddEnabled bool `xml:"MemoryHotAddEnabled,omitempty"` -} - -// Type: VmsType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents a list of virtual machines. -// Since: 5.1 -type VMs struct { - HREF string `xml:"href,attr,omitempty"` - Type string `xml:"type,attr,omitempty"` - Link []*Link `xml:"Link,omitempty"` - VMReference []*Reference `xml:"VmReference,omitempty"` -} - -/* - * Types that are completely valid (position, comment, coverage complete) - */ - -// Type: ComposeVAppParamsType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents vApp composition parameters. -// Since: 0.9 -type ComposeVAppParams struct { - XMLName xml.Name `xml:"ComposeVAppParams"` - Ovf string `xml:"xmlns:ovf,attr"` - Xsi string `xml:"xmlns:xsi,attr"` - Xmlns string `xml:"xmlns,attr"` - // Attributes - Name string `xml:"name,attr,omitempty"` // Typically used to name or identify the subject of the request. For example, the name of the object being created or modified. - Deploy bool `xml:"deploy,attr"` // True if the vApp should be deployed at instantiation. Defaults to true. - PowerOn bool `xml:"powerOn,attr"` // True if the vApp should be powered-on at instantiation. Defaults to true. - LinkedClone bool `xml:"linkedClone,attr,omitempty"` // Reserved. Unimplemented. - // Elements - Description string `xml:"Description,omitempty"` // Optional description. - VAppParent *Reference `xml:"VAppParent,omitempty"` // Reserved. Unimplemented. - InstantiationParams *InstantiationParams `xml:"InstantiationParams,omitempty"` // Instantiation parameters for the composed vApp. - SourcedItem *SourcedCompositionItemParam `xml:"SourcedItem,omitempty"` // Composition item. One of: vApp vAppTemplate Vm. - AllEULAsAccepted bool `xml:"AllEULAsAccepted,omitempty"` // True confirms acceptance of all EULAs in a vApp template. Instantiation fails if this element is missing, empty, or set to false and one or more EulaSection elements are present. -} - -// Type: SourcedCompositionItemParamType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents a vApp, vApp template or Vm to include in a composed vApp. -// Since: 0.9 -type SourcedCompositionItemParam struct { - // Attributes - SourceDelete bool `xml:"sourceDelete,attr,omitempty"` // True if the source item should be deleted after composition is complete. - // Elements - Source *Reference `xml:"Source"` // Reference to a vApp, vApp template or virtual machine to include in the composition. Changing the name of the newly created VM by specifying name attribute is deprecated. Include VmGeneralParams element instead. - VMGeneralParams *VMGeneralParams `xml:"VmGeneralParams,omitempty"` // Specify name, description, and other properties of a VM during instantiation. - VAppScopedLocalID string `xml:"VAppScopedLocalId,omitempty"` // If Source references a Vm, this value provides a unique identifier for the Vm in the scope of the composed vApp. - InstantiationParams *InstantiationParams `xml:"InstantiationParams,omitempty"` // If Source references a Vm this can include any of the following OVF sections: VirtualHardwareSection OperatingSystemSection NetworkConnectionSection GuestCustomizationSection. - NetworkAssignment *NetworkAssignment `xml:"NetworkAssignment,omitempty"` // If Source references a Vm, this element maps a network name specified in the Vm to the network name of a vApp network defined in the composed vApp. - StorageProfile *Reference `xml:"StorageProfile,omitempty"` // If Source references a Vm, this element contains a reference to a storage profile to be used for the Vm. The specified storage profile must exist in the organization vDC that contains the composed vApp. If not specified, the default storage profile for the vDC is used. - LocalityParams *LocalityParams `xml:"LocalityParams,omitempty"` // Represents locality parameters. Locality parameters provide a hint that may help the placement engine optimize placement of a VM and an independent a Disk so that the VM can make efficient use of the disk. -} - -// Type: LocalityParamsType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents locality parameters. Locality parameters provide a hint that may help the placement engine optimize placement of a VM with respect to another VM or an independent disk. -// Since: 5.1 -type LocalityParams struct { - // Elements - ResourceEntity *Reference `xml:"ResourceEntity,omitempty"` // Reference to a Disk, or a VM. -} - -// Type: NetworkAssignmentType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Maps a network name specified in a Vm to the network name of a vApp network defined in the VApp that contains the Vm -// Since: 0.9 -type NetworkAssignment struct { - // Attributes - InnerNetwork string `xml:"innerNetwork,attr"` // Name of the network as specified in the Vm. - ContainerNetwork string `xml:"containerNetwork,attr"` // Name of the vApp network to map to. -} - -// Type: VmGeneralParamsType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: A set of overrides to source VM properties to apply to target VM during copying. -// Since: 5.6 -type VMGeneralParams struct { - // Elements - Name string `xml:"Name,omitempty"` // Name of VM - Description string `xml:"Description,omitempty"` // VM description - NeedsCustomization bool `xml:"NeedsCustomization,omitempty"` // True if this VM needs guest customization -} - -// Type: VAppType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents a vApp. -// Since: 0.9 -type VApp struct { - // Attributes - HREF string `xml:"href,attr,omitempty"` // The URI of the entity. - Type string `xml:"type,attr,omitempty"` // The MIME type of the entity. - ID string `xml:"id,attr,omitempty"` // The entity identifier, expressed in URN format. The value of this attribute uniquely identifies the entity, persists for the life of the entity, and is never reused. - OperationKey string `xml:"operationKey,attr,omitempty"` // Optional unique identifier to support idempotent semantics for create and delete operations. - Name string `xml:"name,attr"` // The name of the entity. - Status int `xml:"status,attr,omitempty"` // Creation status of the resource entity. - Deployed bool `xml:"deployed,attr,omitempty"` // True if the virtual machine is deployed. - OvfDescriptorUploaded bool `xml:"ovfDescriptorUploaded,attr,omitempty"` // Read-only indicator that the OVF descriptor for this vApp has been uploaded. - // Elements - Link []*Link `xml:"Link,omitempty"` // A reference to an entity or operation associated with this object. - Description string `xml:"Description,omitempty"` // Optional description. - Tasks *TasksInProgress `xml:"Tasks,omitempty"` // A list of queued, running, or recently completed tasks associated with this entity. - Files *FilesList `xml:"Files,omitempty"` // Represents a list of files to be transferred (uploaded or downloaded). Each File in the list is part of the ResourceEntity. - VAppParent *Reference `xml:"VAppParent,omitempty"` // Reserved. Unimplemented. - // TODO: OVF Sections to be implemented - // Section OVF_Section `xml:"Section"` - DateCreated string `xml:"DateCreated,omitempty"` // Creation date/time of the vApp. - Owner *Owner `xml:"Owner,omitempty"` // vApp owner. - InMaintenanceMode bool `xml:"InMaintenanceMode,omitempty"` // True if this vApp is in maintenance mode. Prevents users from changing vApp metadata. - Children *VAppChildren `xml:"Children,omitempty"` // Container for virtual machines included in this vApp. -} - -// Type: VAppChildrenType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Container for virtual machines included in this vApp. -// Since: 0.9 -type VAppChildren struct { - VM []*VM `xml:"Vm,omitempty"` // Rerpresents a virtual machine. -} - -// Type: TasksInProgressType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: A list of queued, running, or recently completed tasks. -// Since: 0.9 -type TasksInProgress struct { - // Elements - Task []*Task `xml:"Task"` // A task. -} - -// Type: VAppTemplateChildrenType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Container for virtual machines included in this vApp template. -// Since: 0.9 -type VAppTemplateChildren struct { - // Elements - VM []*VAppTemplate `xml:"Vm"` // Represents a virtual machine in this vApp template. -} - -// Type: VAppTemplateType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents a vApp template. -// Since: 0.9 -type VAppTemplate struct { - // Attributes - HREF string `xml:"href,attr,omitempty"` // The URI of the entity. - Type string `xml:"type,attr,omitempty"` // The MIME type of the entity. - ID string `xml:"id,attr,omitempty"` // The entity identifier, expressed in URN format. The value of this attribute uniquely identifies the entity, persists for the life of the entity, and is never reused. - OperationKey string `xml:"operationKey,attr,omitempty"` // Optional unique identifier to support idempotent semantics for create and delete operations. - Name string `xml:"name,attr"` // The name of the entity. - Status int `xml:"status,attr,omitempty"` // Creation status of the resource entity. - OvfDescriptorUploaded string `xml:"ovfDescriptorUploaded,attr,omitempty"` // True if the OVF descriptor for this template has been uploaded. - GoldMaster bool `xml:"goldMaster,attr,omitempty"` // True if this template is a gold master. - // Elements - Link []*Link `xml:"Link,omitempty"` // A reference to an entity or operation associated with this object. - Description string `xml:"Description,omitempty"` // Optional description. - Tasks *TasksInProgress `xml:"Tasks,omitempty"` // A list of queued, running, or recently completed tasks associated with this entity. - Files *FilesList `xml:"Files,omitempty"` // Represents a list of files to be transferred (uploaded or downloaded). Each File in the list is part of the ResourceEntity. - Owner *Owner `xml:"Owner,omitempty"` // vAppTemplate owner. - Children *VAppTemplateChildren `xml:"Children,omitempty"` // Container for virtual machines included in this vApp template. - VAppScopedLocalID string `xml:"VAppScopedLocalId"` // A unique identifier for the Vm in the scope of the vApp template. - DefaultStorageProfile string `xml:"DefaultStorageProfile,omitempty"` // The name of the storage profile to be used for this object. The named storage profile must exist in the organization vDC that contains the object. If not specified, the default storage profile for the vDC is used. - DateCreated string `xml:"DateCreated,omitempty"` // Creation date/time of the template. - // FIXME: Upstream bug? Missing NetworkConfigSection, LeaseSettingSection and - // CustomizationSection at least, NetworkConnectionSection is required when - // using ComposeVApp action in the context of a Children VM (still - // referenced by VAppTemplateType). - NetworkConfigSection *NetworkConfigSection `xml:"NetworkConfigSection,omitempty"` - NetworkConnectionSection *NetworkConnectionSection `xml:"NetworkConnectionSection,omitempty"` - LeaseSettingsSection *LeaseSettingsSection `xml:"LeaseSettingsSection,omitempty"` - CustomizationSection *CustomizationSection `xml:"CustomizationSection,omitempty"` - // OVF Section needs to be added - // Section Section `xml:"Section,omitempty"` -} - -// Type: VmType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents a virtual machine. -// Since: 0.9 -type VM struct { - // Attributes - Ovf string `xml:"xmlns:ovf,attr,omitempty"` - Xsi string `xml:"xmlns:xsi,attr,omitempty"` - Xmlns string `xml:"xmlns,attr,omitempty"` - - HREF string `xml:"href,attr,omitempty"` // The URI of the entity. - Type string `xml:"type,attr,omitempty"` // The MIME type of the entity. - ID string `xml:"id,attr,omitempty"` // The entity identifier, expressed in URN format. The value of this attribute uniquely identifies the entity, persists for the life of the entity, and is never reused - OperationKey string `xml:"operationKey,attr,omitempty"` // Optional unique identifier to support idempotent semantics for create and delete operations. - Name string `xml:"name,attr"` // The name of the entity. - Status int `xml:"status,attr,omitempty"` // Creation status of the resource entity. - Deployed bool `xml:"deployed,attr,omitempty"` // True if the virtual machine is deployed. - NeedsCustomization bool `xml:"needsCustomization,attr,omitempty"` // True if this virtual machine needs customization. - NestedHypervisorEnabled bool `xml:"nestedHypervisorEnabled,attr,omitempty"` // True if hardware-assisted CPU virtualization capabilities in the host should be exposed to the guest operating system. - // Elements - Link []*Link `xml:"Link,omitempty"` // A reference to an entity or operation associated with this object. - Description string `xml:"Description,omitempty"` // Optional description. - Tasks *TasksInProgress `xml:"Tasks,omitempty"` // A list of queued, running, or recently completed tasks associated with this entity. - Files *FilesList `xml:"FilesList,omitempty"` // Represents a list of files to be transferred (uploaded or downloaded). Each File in the list is part of the ResourceEntity. - VAppParent *Reference `xml:"VAppParent,omitempty"` // Reserved. Unimplemented. - // TODO: OVF Sections to be implemented - // Section OVF_Section `xml:"Section,omitempty" - DateCreated string `xml:"DateCreated"` // Creation date/time of the vApp. - - // FIXME: Upstream bug? Missing NetworkConnectionSection - NetworkConnectionSection *NetworkConnectionSection `xml:"NetworkConnectionSection,omitempty"` - - VAppScopedLocalID string `xml:"VAppScopedLocalId,omitempty"` // A unique identifier for the virtual machine in the scope of the vApp. - - // TODO: OVF Sections to be implemented - // Environment OVF_Environment `xml:"Environment,omitempty" - - VMCapabilities *VMCapabilities `xml:"VmCapabilities,omitempty"` // Allows you to specify certain capabilities of this virtual machine. - StorageProfile *Reference `xml:"StorageProfile,omitempty"` // A reference to a storage profile to be used for this object. The specified storage profile must exist in the organization vDC that contains the object. If not specified, the default storage profile for the vDC is used. -} - -// Horrible kludge to process OVF, needs to be fixed with proper types. -type OVFItem struct { - XMLName xml.Name `xml:"vcloud:Item"` - XmlnsRasd string `xml:"xmlns:rasd,attr"` - XmlnsVCloud string `xml:"xmlns:vcloud,attr"` - XmlnsXsi string `xml:"xmlns:xsi,attr"` - VCloudHREF string `xml:"vcloud:href,attr"` - VCloudType string `xml:"vcloud:type,attr"` - AllocationUnits string `xml:"rasd:AllocationUnits"` - Description string `xml:"rasd:Description"` - ElementName string `xml:"rasd:ElementName"` - InstanceID int `xml:"rasd:InstanceID"` - Reservation int `xml:"rasd:Reservation"` - ResourceType int `xml:"rasd:ResourceType"` - VirtualQuantity int `xml:"rasd:VirtualQuantity"` - Weight int `xml:"rasd:Weight"` - Link *Link `xml:"vcloud:Link"` -} - -// Type: DeployVAppParamsType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Parameters to a deploy vApp request. -// Since: 0.9 -type DeployVAppParams struct { - XMLName xml.Name `xml:"DeployVAppParams"` - Xmlns string `xml:"xmlns,attr"` - // Attributes - PowerOn bool `xml:"powerOn,attr"` // Used to specify whether to power on vapp on deployment, if not set default value is true. - DeploymentLeaseSeconds int `xml:"deploymentLeaseSeconds,attr,omitempty"` // Lease in seconds for deployment. A value of 0 is replaced by the organization default deploymentLeaseSeconds value. - ForceCustomization bool `xml:"forceCustomization,attr,omitempty"` // Used to specify whether to force customization on deployment, if not set default value is false -} - -// Type: GuestCustomizationSectionType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents a guest customization settings. -// Since: 1.0 -type GuestCustomizationSection struct { - // Extends OVF Section_Type - // Attributes - Ovf string `xml:"xmlns:ovf,attr,omitempty"` - Xsi string `xml:"xmlns:xsi,attr,omitempty"` - Xmlns string `xml:"xmlns,attr,omitempty"` - - HREF string `xml:"href,attr,omitempty"` // A reference to the section in URL format. - Type string `xml:"type,attr,omitempty"` // The MIME type of the section. - // FIXME: Fix the OVF section - Info string `xml:"ovf:Info"` - // Elements - Enabled bool `xml:"Enabled,omitempty"` // True if guest customization is enabled. - ChangeSid bool `xml:"ChangeSid,omitempty"` // True if customization can change the Windows SID of this virtual machine. - VirtualMachineID string `xml:"VirtualMachineId,omitempty"` // Virtual machine ID to apply. - JoinDomainEnabled bool `xml:"JoinDomainEnabled,omitempty"` // True if this virtual machine can join a Windows Domain. - UseOrgSettings bool `xml:"UseOrgSettings,omitempty"` // True if customization should use organization settings (OrgGuestPersonalizationSettings) when joining a Windows Domain. - DomainName string `xml:"DomainName,omitempty"` // The name of the Windows Domain to join. - DomainUserName string `xml:"DomainUserName,omitempty"` // User name to specify when joining a Windows Domain. - DomainUserPassword string `xml:"DomainUserPassword,omitempty"` // Password to use with DomainUserName. - MachineObjectOU string `xml:"MachineObjectOU,omitempty"` // The name of the Windows Domain Organizational Unit (OU) in which the computer account for this virtual machine will be created. - AdminPasswordEnabled bool `xml:"AdminPasswordEnabled,omitempty"` // True if guest customization can modify administrator password settings for this virtual machine. - AdminPasswordAuto bool `xml:"AdminPasswordAuto,omitempty"` // True if the administrator password for this virtual machine should be automatically generated. - AdminPassword string `xml:"AdminPassword,omitempty"` // True if the administrator password for this virtual machine should be set to this string. (AdminPasswordAuto must be false.) - AdminAutoLogonEnabled bool `xml:"AdminAutoLogonEnabled,omitempty"` // True if guest administrator should automatically log into this virtual machine. - AdminAutoLogonCount int `xml:"AdminAutoLogonCount,omitempty"` // Number of times administrator can automatically log into this virtual machine. In case AdminAutoLogon is set to True, this value should be between 1 and 100. Otherwise, it should be 0. - ResetPasswordRequired bool `xml:"ResetPasswordRequired,omitempty"` // True if the administrator password for this virtual machine must be reset after first use. - CustomizationScript string `xml:"CustomizationScript,omitempty"` // Script to run on guest customization. The entire script must appear in this element. Use the XML entity to represent a newline. Unicode characters can be represented in the form &#xxxx; where xxxx is the character number. - ComputerName string `xml:"ComputerName,omitempty"` // Computer name to assign to this virtual machine. - Link []*Link `xml:"Link,omitempty"` // A link to an operation on this section. -} - -// Type: InstantiateVAppTemplateParamsType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents vApp template instantiation parameters. -// Since: 0.9 -type InstantiateVAppTemplateParams struct { - XMLName xml.Name `xml:"InstantiateVAppTemplateParams"` - Ovf string `xml:"xmlns:ovf,attr"` - Xsi string `xml:"xmlns:xsi,attr"` - Xmlns string `xml:"xmlns,attr"` - // Attributes - Name string `xml:"name,attr,omitempty"` // Typically used to name or identify the subject of the request. For example, the name of the object being created or modified. - Deploy bool `xml:"deploy,attr"` // True if the vApp should be deployed at instantiation. Defaults to true. - PowerOn bool `xml:"powerOn,attr"` // True if the vApp should be powered-on at instantiation. Defaults to true. - LinkedClone bool `xml:"linkedClone,attr,omitempty"` // Reserved. Unimplemented. - // Elements - Description string `xml:"Description,omitempty"` // Optional description. - VAppParent *Reference `xml:"VAppParent,omitempty"` // Reserved. Unimplemented. - InstantiationParams *InstantiationParams `xml:"InstantiationParams,omitempty"` // Instantiation parameters for the composed vApp. - Source *Reference `xml:"Source"` // A reference to a source object such as a vApp or vApp template. - IsSourceDelete bool `xml:"IsSourceDelete,omitempty"` // Set to true to delete the source object after the operation completes. - SourcedItem *SourcedCompositionItemParam `xml:"SourcedItem,omitempty"` // Composition item. One of: vApp vAppTemplate Vm. - AllEULAsAccepted bool `xml:"AllEULAsAccepted,omitempty"` // True confirms acceptance of all EULAs in a vApp template. Instantiation fails if this element is missing, empty, or set to false and one or more EulaSection elements are present. -} - -// Element: EdgeGateway -// Type: GatewayType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents a gateway. -// Since: 5.1 -type EdgeGateway struct { - // Attributes - HREF string `xml:"href,attr,omitempty"` // The URI of the entity. - Type string `xml:"type,attr,omitempty"` // The MIME type of the entity. - ID string `xml:"id,attr,omitempty"` // The entity identifier, expressed in URN format. The value of this attribute uniquely identifies the entity, persists for the life of the entity, and is never reused - OperationKey string `xml:"operationKey,attr,omitempty"` // Optional unique identifier to support idempotent semantics for create and delete operations. - Name string `xml:"name,attr"` // The name of the entity. - Status int `xml:"status,attr,omitempty"` // Creation status of the gateway. One of: 0 (The gateway is still being created) 1 (The gateway is ready) -1 (There was an error while creating the gateway). - // Elements - Link []*Link `xml:"Link,omitempty"` // A link to an operation on this section. - Description string `xml:"Description,omitempty"` // Optional description. - Tasks *TasksInProgress `xml:"Tasks,omitempty"` // A list of queued, running, or recently completed tasks associated with this entity. - Configuration *GatewayConfiguration `xml:"Configuration"` // Gateway configuration. -} - -// Type: GatewayConfigurationType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Gateway Configuration. -// Since: 5.1 -type GatewayConfiguration struct { - Xmlns string `xml:"xmlns,attr,omitempty"` - // Elements - BackwardCompatibilityMode bool `xml:"BackwardCompatibilityMode,omitempty"` // Compatibilty mode. Default is false. If set to true, will allow users to write firewall rules in the old 1.5 format. The new format does not require to use direction in firewall rules. Also, for firewall rules to allow NAT traffic the filter is applied on the original IP addresses. Once set to true cannot be reverted back to false. - GatewayBackingConfig string `xml:"GatewayBackingConfig"` // Configuration of the vShield edge VM for this gateway. One of: compact, full. - GatewayInterfaces *GatewayInterfaces `xml:"GatewayInterfaces"` // List of Gateway interfaces. - EdgeGatewayServiceConfiguration *GatewayFeatures `xml:"EdgeGatewayServiceConfiguration,omitempty"` // Represents Gateway Features. - HaEnabled bool `xml:"HaEnabled,omitempty"` // True if this gateway is highly available. (Requires two vShield edge VMs.) - UseDefaultRouteForDNSRelay bool `xml:"UseDefaultRouteForDnsRelay,omitempty"` // True if the default gateway on the external network selected for default route should be used as the DNS relay. -} - -// Type: GatewayInterfacesType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: A list of Gateway Interfaces. -// Since: 5.1 -type GatewayInterfaces struct { - GatewayInterface []*GatewayInterface `xml:"GatewayInterface"` // Gateway Interface. -} - -// Type: GatewayInterfaceType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Gateway Interface configuration. -// Since: 5.1 -type GatewayInterface struct { - Name string `xml:"Name,omitempty"` // Internally generated name for the Gateway Interface. - DisplayName string `xml:"DisplayName,omitempty"` // Gateway Interface display name. - Network *Reference `xml:"Network"` // A reference to the network connected to the gateway interface. - InterfaceType string `xml:"InterfaceType"` // The type of interface: One of: Uplink, Internal - SubnetParticipation *SubnetParticipation `xml:"SubnetParticipation,omitempty"` // IP allocation per subnet. - ApplyRateLimit bool `xml:"ApplyRateLimit,omitempty"` // True if rate limiting is applied on this interface. - InRateLimit float64 `xml:"InRateLimit,omitempty"` // Incoming rate limit expressed as Gbps. - OutRateLimit float64 `xml:"OutRateLimit,omitempty"` // Outgoing rate limit expressed as Gbps. - UseForDefaultRoute bool `xml:"UseForDefaultRoute,omitempty"` // True if this network is default route for the gateway. -} - -// Type: SubnetParticipationType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Allows to chose which subnets a gateway can be part of -// Since: 5.1 -type SubnetParticipation struct { - Gateway string `xml:"Gateway"` // Gateway for subnet - IPAddress string `xml:"IpAddress,omitempty"` // Ip Address to be assigned. Keep empty or ommit element for auto assignment - IPRanges *IPRanges `xml:"IpRanges,omitempty"` // Range of IP addresses available for external interfaces. - Netmask string `xml:"Netmask"` // Nestmask for the subnet -} - -// Element: EdgeGatewayServiceConfiguration -// Type: GatewayFeaturesType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents edge gateway services. -// Since: 5.1 -type GatewayFeatures struct { - XMLName xml.Name - Xmlns string `xml:"xmlns,attr,omitempty"` - FirewallService *FirewallService `xml:"FirewallService,omitempty"` // Substitute for NetworkService. Firewall service settings - NatService *NatService `xml:"NatService,omitempty"` // Substitute for NetworkService. NAT service settings - GatewayDhcpService *GatewayDhcpService `xml:"GatewayDhcpService,omitempty"` // Substitute for NetworkService. Gateway DHCP service settings - GatewayIpsecVpnService *GatewayIpsecVpnService `xml:"GatewayIpsecVpnService,omitempty"` // Substitute for NetworkService. Gateway Ipsec VPN service settings - LoadBalancerService *LoadBalancerService `xml:"LoadBalancerService,omitempty"` // Substitute for NetworkService. Load Balancer service settings - StaticRoutingService *StaticRoutingService `xml:"StaticRoutingService,omitempty"` // Substitute for NetworkService. Static Routing service settings -} - -// Type: StaticRoutingServiceType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents Static Routing network service. -// Since: 1.5 -type StaticRoutingService struct { - IsEnabled bool `xml:"IsEnabled"` // Enable or disable the service using this flag - StaticRoute *StaticRoute `xml:"StaticRoute,omitempty"` // Details of each Static Route. -} - -// Type: StaticRouteType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: -// Since: -type StaticRoute struct { - Name string `xml:"Name"` // Name for the static route. - Network string `xml:"Network"` // Network specification in CIDR. - NextHopIp string `xml:"NextHopIp"` // IP Address of Next Hop router/gateway. - Interface string `xml:"Interface,omitempty"` // Interface to use for static routing. Internal and External are the supported values. - GatewayInterface *Reference `xml:"GatewayInterface,omitempty"` // Gateway interface to which static route is bound. -} - -// Type: LoadBalancerServiceType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents gateway load balancer service. -// Since: 5.1 -type LoadBalancerService struct { - IsEnabled bool `xml:"IsEnabled"` // Enable or disable the service using this flag - Pool *LoadBalancerPool `xml:"Pool,omitempty"` // List of load balancer pools. - VirtualServer *LoadBalancerVirtualServer `xml:"VirtualServer,omitempty"` // List of load balancer virtual servers. -} - -// Type: LoadBalancerPoolType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents a load balancer pool. -// Since: 5.1 -type LoadBalancerPool struct { - ID string `xml:"Id,omitempty"` // Load balancer pool id. - Name string `xml:"Name"` // Load balancer pool name. - Description string `xml:"Description,omitempty"` // Load balancer pool description. - ServicePort *LBPoolServicePort `xml:"ServicePort"` // Load balancer pool service port. - Member *LBPoolMember `xml:"Member"` // Load balancer pool member. - Operational bool `xml:"Operational,omitempty"` // True if the load balancer pool is operational. - ErrorDetails string `xml:"ErrorDetails,omitempty"` // Error details for this pool. -} - -// Type: LBPoolServicePortType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents a service port in a load balancer pool. -// Since: 5.1 -type LBPoolServicePort struct { - IsEnabled bool `xml:"IsEnabled,omitempty"` // True if this service port is enabled. - Protocol string `xml:"Protocol"` // Load balancer protocol type. One of: HTTP, HTTPS, TCP. - Algorithm string `xml:"Algorithm"` // Load Balancer algorithm type. One of: IP_HASH, ROUND_ROBIN, URI, LEAST_CONN. - Port string `xml:"Port"` // Port for this service profile. - HealthCheckPort string `xml:"HealthCheckPort,omitempty"` // Health check port for this profile. - HealthCheck *LBPoolHealthCheck `xml:"HealthCheck,omitempty"` // Health check list. -} - -// Type: LBPoolHealthCheckType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents a service port health check list. -// Since: 5.1 -type LBPoolHealthCheck struct { - Mode string `xml:"Mode"` // Load balancer service port health check mode. One of: TCP, HTTP, SSL. - Uri string `xml:"Uri,omitempty"` // Load balancer service port health check URI. - HealthThreshold string `xml:"HealthThreshold,omitempty"` // Health threshold for this service port. - UnhealthThreshold string `xml:"UnhealthThreshold,omitempty"` // Unhealth check port for this profile. - Interval string `xml:"Interval,omitempty"` // Interval between health checks. - Timeout string `xml:"Timeout,omitempty"` // Health check timeout. -} - -// Type: LBPoolMemberType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents a member in a load balancer pool. -// Since: 5.1 -type LBPoolMember struct { - IPAddress string `xml:"IpAddress"` // Ip Address for load balancer member. - Weight string `xml:"Weight"` // Weight of this member. - ServicePort *LBPoolServicePort `xml:"ServicePort,omitempty"` // Load balancer member service port. -} - -// Type: LoadBalancerVirtualServerType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents a load balancer virtual server. -// Since: 5.1 -type LoadBalancerVirtualServer struct { - IsEnabled bool `xml:"IsEnabled,omitempty"` // True if this virtual server is enabled. - Name string `xml:"Name"` // Load balancer virtual server name. - Description string `xml:"Description,omitempty"` // Load balancer virtual server description. - Interface *Reference `xml:"Interface"` // Gateway Interface to which Load Balancer Virtual Server is bound. - IPAddress string `xml:"IpAddress"` // Load balancer virtual server Ip Address. - ServiceProfile *LBVirtualServerServiceProfile `xml:"ServiceProfile"` // Load balancer virtual server service profiles. - Logging bool `xml:"Logging,omitempty"` // Enable logging for this virtual server. - Pool string `xml:"Pool"` // Name of Load balancer pool associated with this virtual server. - LoadBalancerTemplates *VendorTemplate `xml:"LoadBalancerTemplates,omitempty"` // Service template related attributes. -} - -// Type: LBVirtualServerServiceProfileType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents service profile for a load balancing virtual server. -// Since: 5.1 -type LBVirtualServerServiceProfile struct { - IsEnabled bool `xml:"IsEnabled,omitempty"` // True if this service profile is enabled. - Protocol string `xml:"Protocol"` // Load balancer Protocol type. One of: HTTP, HTTPS, TCP. - Port string `xml:"Port"` // Port for this service profile. - Persistence *LBPersistence `xml:"Persistence,omitempty"` // Persistence type for service profile. -} - -// Type: LBPersistenceType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents persistence type for a load balancer service profile. -// Since: 5.1 -type LBPersistence struct { - Method string `xml:"Method"` // Persistence method. One of: COOKIE, SSL_SESSION_ID. - CookieName string `xml:"CookieName,omitempty"` // Cookie name when persistence method is COOKIE. - CookieMode string `xml:"CookieMode,omitempty"` // Cookie Mode. One of: INSERT, PREFIX, APP. -} - -// Type: VendorTemplateType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Information about a vendor service template. This is optional. -// Since: 5.1 -type VendorTemplate struct { - Name string `xml:"Name"` // Name of the vendor template. This is required. - ID string `xml:"Id"` // ID of the vendor template. This is required. -} - -// Type: GatewayIpsecVpnServiceType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents gateway IPsec VPN service. -// Since: 5.1 -type GatewayIpsecVpnService struct { - IsEnabled bool `xml:"IsEnabled"` // Enable or disable the service using this flag - Endpoint *GatewayIpsecVpnEndpoint `xml:"Endpoint,omitempty"` // List of IPSec VPN Service Endpoints. - Tunnel []*GatewayIpsecVpnTunnel `xml:"Tunnel"` // List of IPSec VPN tunnels. -} - -// Type: GatewayIpsecVpnEndpointType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents an IPSec VPN endpoint. -// Since: 5.1 -type GatewayIpsecVpnEndpoint struct { - Network *Reference `xml:"Network"` // External network reference. - PublicIP string `xml:"PublicIp,omitempty"` // Public IP for IPSec endpoint. -} - -// Type: GatewayIpsecVpnTunnelType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents an IPSec VPN tunnel. -// Since: 5.1 -type GatewayIpsecVpnTunnel struct { - Name string `xml:"Name"` // The name of the tunnel. - Description string `xml:"Description,omitempty"` // A description of the tunnel. - // TODO: Fix this in a better way - IpsecVpnThirdPartyPeer *IpsecVpnThirdPartyPeer `xml:"IpsecVpnThirdPartyPeer,omitempty"` // Details about the peer network. - PeerIPAddress string `xml:"PeerIpAddress"` // IP address of the peer endpoint. - PeerID string `xml:"PeerId"` // Id for the peer end point - LocalIPAddress string `xml:"LocalIpAddress"` // Address of the local network. - LocalID string `xml:"LocalId"` // Id for local end point - LocalSubnet *IpsecVpnSubnet `xml:"LocalSubnet"` // List of local subnets in the tunnel. - PeerSubnet *IpsecVpnSubnet `xml:"PeerSubnet"` // List of peer subnets in the tunnel. - SharedSecret string `xml:"SharedSecret"` // Shared secret used for authentication. - SharedSecretEncrypted bool `xml:"SharedSecretEncrypted,omitempty"` // True if shared secret is encrypted. - EncryptionProtocol string `xml:"EncryptionProtocol"` // Encryption protocol to be used. One of: AES, AES256, TRIPLEDES - Mtu int `xml:"Mtu"` // MTU for the tunnel. - IsEnabled bool `xml:"IsEnabled,omitempty"` // True if the tunnel is enabled. - IsOperational bool `xml:"IsOperational,omitempty"` // True if the tunnel is operational. - ErrorDetails string `xml:"ErrorDetails,omitempty"` // Error details of the tunnel. -} - -type IpsecVpnThirdPartyPeer struct { - PeerID string `xml:"PeerId,omitempty"` // Id for the peer end point -} - -// Type: IpsecVpnSubnetType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents subnet details. -// Since: 5.1 -type IpsecVpnSubnet struct { - Name string `xml:"Name"` // Gateway Name. - Gateway string `xml:"Gateway"` // Subnet Gateway. - Netmask string `xml:"Netmask"` // Subnet Netmask. -} - -// Type: GatewayDhcpServiceType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents Gateway DHCP service. -// Since: 5.1 -type GatewayDhcpService struct { - IsEnabled bool `xml:"IsEnabled,omitempty"` // Enable or disable the service using this flag - Pool *DhcpPoolService `xml:"Pool,omitempty"` // A DHCP pool. -} - -// Type: DhcpPoolServiceType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents DHCP pool service. -// Since: 5.1 -type DhcpPoolService struct { - IsEnabled bool `xml:"IsEnabled,omitempty"` // True if this DHCP Pool is enabled. - Network *Reference `xml:"Network"` // Org vDC network to which the DHCP range is applicable. - DefaultLeaseTime int `xml:"DefaultLeaseTime,omitempty"` // Default lease period for DHCP range. - MaxLeaseTime int `xml:"MaxLeaseTime"` // Maximum lease period for DHCP range. - LowIPAddress string `xml:"LowIpAddress"` // Low IP address in DHCP range. - HighIPAddress string `xml:"HighIpAddress"` // High IP address in DHCP range. -} - -// Type: VmSelectionType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents details of an vm+nic+iptype selection. -// Since: 5.1 -type VMSelection struct { - VAppScopedVMID string `xml:"VAppScopedVmId"` // VAppScopedVmId of VM to which this rule applies. - VMNicID int `xml:"VmNicId"` // VM NIC ID to which this rule applies. - IPType string `xml:"IpType"` // The value can be one of:- assigned: assigned internal IP be automatically choosen. NAT: NATed external IP will be automatically choosen. -} - -// Type: FirewallRuleType/Protocols -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: -// Since: -type FirewallRuleProtocols struct { - Icmp bool `xml:"Icmp,omitempty"` // True if the rule applies to the ICMP protocol. - Any bool `xml:"Any,omitempty"` // True if the rule applies to any protocol. - Tcp bool `xml:"Tcp,omitempty"` // True if the rule applies to the TCP protocol. - Udp bool `xml:"Udp,omitempty"` // True if the rule applies to the UDP protocol. - // FIXME: this is supposed to extend protocol support to all the VSM supported protocols - // Other string `xml:"Other,omitempty"` // Any other protocol supported by vShield Manager -} - -// Type: FirewallRuleType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents a firewall rule. -// Since: 0.9 -type FirewallRule struct { - ID string `xml:"Id,omitempty"` // Firewall rule identifier. - IsEnabled bool `xml:"IsEnabled"` // Used to enable or disable the firewall rule. Default value is true. - MatchOnTranslate bool `xml:"MatchOnTranslate"` // For DNATed traffic, match the firewall rules only after the destination IP is translated. - Description string `xml:"Description,omitempty"` // A description of the rule. - Policy string `xml:"Policy,omitempty"` // One of: drop (drop packets that match the rule), allow (allow packets that match the rule to pass through the firewall) - Protocols *FirewallRuleProtocols `xml:"Protocols,omitempty"` // Specify the protocols to which the rule should be applied. - IcmpSubType string `xml:"IcmpSubType,omitempty"` // ICMP subtype. One of: address-mask-request, address-mask-reply, destination-unreachable, echo-request, echo-reply, parameter-problem, redirect, router-advertisement, router-solicitation, source-quench, time-exceeded, timestamp-request, timestamp-reply, any. - Port int `xml:"Port,omitempty"` // The port to which this rule applies. A value of -1 matches any port. - DestinationPortRange string `xml:"DestinationPortRange,omitempty"` // Destination port range to which this rule applies. - DestinationIP string `xml:"DestinationIp,omitempty"` // Destination IP address to which the rule applies. A value of Any matches any IP address. - DestinationVM *VMSelection `xml:"DestinationVm,omitempty"` // Details of the destination VM - SourcePort int `xml:"SourcePort,omitempty"` // Destination port to which this rule applies. A value of -1 matches any port. - SourcePortRange string `xml:"SourcePortRange,omitempty"` // Source port range to which this rule applies. - SourceIP string `xml:"SourceIp,omitempty"` // Source IP address to which the rule applies. A value of Any matches any IP address. - SourceVM *VMSelection `xml:"SourceVm,omitempty"` // Details of the source Vm - Direction string `xml:"Direction,omitempty"` // Direction of traffic to which rule applies. One of: in (rule applies to incoming traffic. This is the default value), out (rule applies to outgoing traffic). - EnableLogging bool `xml:"EnableLogging"` // Used to enable or disable firewall rule logging. Default value is false. -} - -// Type: FirewallServiceType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents a network firewall service. -// Since: -type FirewallService struct { - IsEnabled bool `xml:"IsEnabled"` // Enable or disable the service using this flag - DefaultAction string `xml:"DefaultAction,omitempty"` // Default action of the firewall. One of: drop (Default. Drop packets that match the rule.), allow (Allow packets that match the rule to pass through the firewall) - LogDefaultAction bool `xml:"LogDefaultAction"` // Flag to enable logging for default action. Default value is false. - FirewallRule []*FirewallRule `xml:"FirewallRule,omitempty"` // A firewall rule. -} - -// Type: NatServiceType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents a NAT network service. -// Since: -type NatService struct { - Xmlns string `xml:"xmlns,attr,omitempty"` - // Elements - IsEnabled bool `xml:"IsEnabled"` // Enable or disable the service using this flag - NatType string `xml:"NatType,omitempty"` // One of: ipTranslation (use IP translation), portForwarding (use port forwarding) - Policy string `xml:"Policy,omitempty"` // One of: allowTraffic (Allow all traffic), allowTrafficIn (Allow inbound traffic only) - NatRule []*NatRule `xml:"NatRule,omitempty"` // A NAT rule. - ExternalIP string `xml:"ExternalIp,omitempty"` // External IP address for rule. -} - -// Type: NatRuleType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents a NAT rule. -// Since: 0.9 -type NatRule struct { - Xmlns string `xml:"xmlns,attr,omitempty"` - // Elements - Description string `xml:"Description,omitempty"` // A description of the rule. - RuleType string `xml:"RuleType,omitempty"` // Type of NAT rule. One of: SNAT (source NAT), DNAT (destination NAT) - IsEnabled bool `xml:"IsEnabled"` // Used to enable or disable the firewall rule. Default value is true. - ID string `xml:"Id,omitempty"` // Firewall rule identifier. - GatewayNatRule *GatewayNatRule `xml:"GatewayNatRule,omitempty"` // Defines SNAT and DNAT types. - OneToOneBasicRule *NatOneToOneBasicRule `xml:"OneToOneBasicRule,omitempty"` // Maps one internal IP address to one external IP address. - OneToOneVMRule *NatOneToOneVMRule `xml:"OneToOneVmRule,omitempty"` // Maps one VM NIC to one external IP addresses. - PortForwardingRule *NatPortForwardingRule `xml:"PortForwardingRule,omitempty"` // Port forwarding internal to external IP addresses. - VMRule *NatVMRule `xml:"VmRule,omitempty"` // Port forwarding VM NIC to external IP addresses. -} - -// Type: GatewayNatRuleType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents the SNAT and DNAT rules. -// Since: 5.1 -type GatewayNatRule struct { - Xmlns string `xml:"xmlns,attr,omitempty"` - // Elements - Interface *Reference `xml:"Interface,omitempty"` // Interface to which rule is applied. - OriginalIP string `xml:"OriginalIp"` // Original IP for rule. - OriginalPort string `xml:"OriginalPort,omitempty"` // Original port for rule. - TranslatedIP string `xml:"TranslatedIp"` // Translated IP for rule. - TranslatedPort string `xml:"TranslatedPort,omitempty"` // Translated port for rule. - Protocol string `xml:"Protocol,omitempty"` // Protocol for rule. - IcmpSubType string `xml:"IcmpSubType,omitempty"` // ICMP subtype. One of: address-mask-request, address-mask-reply, destination-unreachable, echo-request, echo-reply, parameter-problem, redirect, router-advertisement, router-solicitation, source-quench, time-exceeded, timestamp-request, timestamp-reply, any. -} - -// Type: NatOneToOneBasicRuleType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents the NAT basic rule for one to one mapping of internal and external IP addresses from a network. -// Since: 0.9 -type NatOneToOneBasicRule struct { - Xmlns string `xml:"xmlns,attr,omitempty"` - // Elements - MappingMode string `xml:"MappingMode"` // One of: automatic (map IP addresses automatically), manual (map IP addresses manually using ExternalIpAddress and InternalIpAddress) - ExternalIPAddress string `xml:"ExternalIpAddress"` // External IP address to map. - InternalIPAddress string `xml:"InternalIpAddress"` // Internal IP address to map. -} - -// Type: NatOneToOneVmRuleType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents the NAT rule for one to one mapping of VM NIC and external IP addresses from a network. -// Since: 0.9 -type NatOneToOneVMRule struct { - Xmlns string `xml:"xmlns,attr,omitempty"` - // Elements - MappingMode string `xml:"MappingMode"` // Mapping mode. - ExternalIPAddress string `xml:"ExternalIpAddress"` // External IP address to map. - VAppScopedVMID string `xml:"VAppScopedVmId"` // VAppScopedVmId of VM to which this rule applies. - VMNicID int `xml:"VmNicId"` // VM NIC ID to which this rule applies. -} - -// Type: NatPortForwardingRuleType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents the NAT rule for port forwarding between internal IP/port and external IP/port. -// Since: 0.9 -type NatPortForwardingRule struct { - ExternalIPAddress string `xml:"ExternalIpAddress"` // External IP address to map. - ExternalPort int `xml:"ExternalPort"` // External port to forward to. - InternalIPAddress string `xml:"InternalIpAddress"` // Internal IP address to map. - InternalPort int `xml:"InternalPort"` // Internal port to forward to. - Protocol string `xml:"Protocol,omitempty"` // Protocol to forward. One of: TCP (forward TCP packets), UDP (forward UDP packets), TCP_UDP (forward TCP and UDP packets). -} - -// Type: NatVmRuleType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Represents the NAT rule for port forwarding between VM NIC/port and external IP/port. -// Since: 0.9 -type NatVMRule struct { - ExternalIPAddress string `xml:"ExternalIpAddress,omitempty"` // External IP address to map. - ExternalPort int `xml:"ExternalPort"` // External port to forward to. - VAppScopedVMID string `xml:"VAppScopedVmId"` // VAppScopedVmId of VM to which this rule applies. - VMNicID int `xml:"VmNicId"` // VM NIC ID to which this rule applies. - InternalPort int `xml:"InternalPort"` // Internal port to forward to. - Protocol string `xml:"Protocol,omitempty"` // Protocol to forward. One of: TCP (forward TCP packets), UDP (forward UDP packets), TCP_UDP (forward TCP and UDP packets). -} - -// Type: QueryResultRecordsType -// Namespace: http://www.vmware.com/vcloud/v1.5 -// Description: Container for query results in records format. -// Since: 1.5 -type QueryResultEdgeGatewayRecordsType struct { - // Attributes - HREF string `xml:"href,attr,omitempty"` // The URI of the entity. - Type string `xml:"type,attr,omitempty"` // The MIME type of the entity. - Name string `xml:"name,attr,omitempty"` // The name of the entity. - Page int `xml:"page,attr,omitempty"` // Page of the result set that this container holds. The first page is page number 1. - PageSize int `xml:"pageSize,attr,omitempty"` // Page size, as a number of records or references. - Total float64 `xml:"total,attr,omitempty"` // Total number of records or references in the container. - // Elements - Link []*Link `xml:"Link,omitempty"` // A reference to an entity or operation associated with this object. - EdgeGatewayRecord *QueryResultEdgeGatewayRecordType `xml:"EdgeGatewayRecord"` // A record representing a query result. -} - -type QueryResultEdgeGatewayRecordType struct { - // Attributes - HREF string `xml:"href,attr,omitempty"` // The URI of the entity. - Type string `xml:"type,attr,omitempty"` // The MIME type of the entity. - Name string `xml:"name,attr,omitempty"` // EdgeGateway name. - Vdc string `xml:"vdc,attr,omitempty"` // VDC Reference or ID - NumberOfExtNetworks int `xml:"numberOfExtNetworks,attr,omitempty"` // Number of external networks connected to the edgeGateway. Yes Yes - NumberOfOrgNetworks int `xml:"numberOfOrgNetworks,attr,omitempty"` // Number of org VDC networks connected to the edgeGateway Yes Yes - IsBusy bool `xml:"isBusy,attr"` // True if this Edge Gateway is busy. Yes Yes - GatewayStatus string `xml:"gatewayStatus,attr,omitempty"` // - HaStatus string `xml:"haStatus,attr,omitempty"` // High Availability Status of the edgeGateway Yes Yes -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/vapp.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/vapp.go deleted file mode 100644 index d87f1e4b..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/vapp.go +++ /dev/null @@ -1,602 +0,0 @@ -/* - * Copyright 2014 VMware, Inc. All rights reserved. Licensed under the Apache v2 License. - */ - -package govcloudair - -import ( - "bytes" - "encoding/xml" - "fmt" - "net/url" - "os" - "strconv" - - types "github.com/vmware/govcloudair/types/v56" -) - -type VApp struct { - VApp *types.VApp - c *Client -} - -func NewVApp(c *Client) *VApp { - return &VApp{ - VApp: new(types.VApp), - c: c, - } -} - -func (v *VApp) Refresh() error { - - if v.VApp.HREF == "" { - return fmt.Errorf("cannot refresh, Object is empty") - } - - u, _ := url.ParseRequestURI(v.VApp.HREF) - - req := v.c.NewRequest(map[string]string{}, "GET", *u, nil) - - resp, err := checkResp(v.c.Http.Do(req)) - if err != nil { - return fmt.Errorf("error retrieving task: %s", err) - } - - // Empty struct before a new unmarshal, otherwise we end up with duplicate - // elements in slices. - v.VApp = &types.VApp{} - - if err = decodeBody(resp, v.VApp); err != nil { - return fmt.Errorf("error decoding task response: %s", err) - } - - // The request was successful - return nil -} - -func (v *VApp) ComposeVApp(orgvdcnetwork OrgVDCNetwork, vapptemplate VAppTemplate, name string, description string) (Task, error) { - - if vapptemplate.VAppTemplate.Children == nil || orgvdcnetwork.OrgVDCNetwork == nil { - return Task{}, fmt.Errorf("can't compose a new vApp, objects passed are not valid") - } - - // Build request XML - vcomp := &types.ComposeVAppParams{ - Ovf: "http://schemas.dmtf.org/ovf/envelope/1", - Xsi: "http://www.w3.org/2001/XMLSchema-instance", - Xmlns: "http://www.vmware.com/vcloud/v1.5", - Deploy: false, - Name: name, - PowerOn: false, - Description: description, - InstantiationParams: &types.InstantiationParams{ - NetworkConfigSection: &types.NetworkConfigSection{ - Info: "Configuration parameters for logical networks", - NetworkConfig: &types.VAppNetworkConfiguration{ - NetworkName: orgvdcnetwork.OrgVDCNetwork.Name, - Configuration: &types.NetworkConfiguration{ - FenceMode: "bridged", - ParentNetwork: &types.Reference{ - HREF: orgvdcnetwork.OrgVDCNetwork.HREF, - Name: orgvdcnetwork.OrgVDCNetwork.Name, - Type: orgvdcnetwork.OrgVDCNetwork.Type, - }, - }, - }, - }, - }, - SourcedItem: &types.SourcedCompositionItemParam{ - Source: &types.Reference{ - HREF: vapptemplate.VAppTemplate.Children.VM[0].HREF, - Name: vapptemplate.VAppTemplate.Children.VM[0].Name, - }, - InstantiationParams: &types.InstantiationParams{ - NetworkConnectionSection: &types.NetworkConnectionSection{ - Type: vapptemplate.VAppTemplate.Children.VM[0].NetworkConnectionSection.Type, - HREF: vapptemplate.VAppTemplate.Children.VM[0].NetworkConnectionSection.HREF, - Info: "Network config for sourced item", - PrimaryNetworkConnectionIndex: vapptemplate.VAppTemplate.Children.VM[0].NetworkConnectionSection.PrimaryNetworkConnectionIndex, - NetworkConnection: &types.NetworkConnection{ - Network: orgvdcnetwork.OrgVDCNetwork.Name, - NetworkConnectionIndex: vapptemplate.VAppTemplate.Children.VM[0].NetworkConnectionSection.NetworkConnection.NetworkConnectionIndex, - IsConnected: true, - IPAddressAllocationMode: "POOL", - }, - }, - }, - NetworkAssignment: &types.NetworkAssignment{ - InnerNetwork: orgvdcnetwork.OrgVDCNetwork.Name, - ContainerNetwork: orgvdcnetwork.OrgVDCNetwork.Name, - }, - }, - } - - output, err := xml.MarshalIndent(vcomp, " ", " ") - if err != nil { - return Task{}, fmt.Errorf("error marshaling vapp compose: %s", err) - } - - debug := os.Getenv("GOVCLOUDAIR_DEBUG") - - if debug == "true" { - fmt.Printf("\n\nXML DEBUG: %s\n\n", string(output)) - } - - b := bytes.NewBufferString(xml.Header + string(output)) - - s := v.c.VCDVDCHREF - s.Path += "/action/composeVApp" - - req := v.c.NewRequest(map[string]string{}, "POST", s, b) - - req.Header.Add("Content-Type", "application/vnd.vmware.vcloud.composeVAppParams+xml") - - resp, err := checkResp(v.c.Http.Do(req)) - if err != nil { - return Task{}, fmt.Errorf("error instantiating a new vApp: %s", err) - } - - if err = decodeBody(resp, v.VApp); err != nil { - return Task{}, fmt.Errorf("error decoding vApp response: %s", err) - } - - task := NewTask(v.c) - task.Task = v.VApp.Tasks.Task[0] - - // The request was successful - return *task, nil - -} - -func (v *VApp) PowerOn() (Task, error) { - - s, _ := url.ParseRequestURI(v.VApp.HREF) - s.Path += "/power/action/powerOn" - - req := v.c.NewRequest(map[string]string{}, "POST", *s, nil) - - resp, err := checkResp(v.c.Http.Do(req)) - if err != nil { - return Task{}, fmt.Errorf("error powering on vApp: %s", err) - } - - task := NewTask(v.c) - - if err = decodeBody(resp, task.Task); err != nil { - return Task{}, fmt.Errorf("error decoding Task response: %s", err) - } - - // The request was successful - return *task, nil - -} - -func (v *VApp) PowerOff() (Task, error) { - - s, _ := url.ParseRequestURI(v.VApp.HREF) - s.Path += "/power/action/powerOff" - - req := v.c.NewRequest(map[string]string{}, "POST", *s, nil) - - resp, err := checkResp(v.c.Http.Do(req)) - if err != nil { - return Task{}, fmt.Errorf("error powering off vApp: %s", err) - } - - task := NewTask(v.c) - - if err = decodeBody(resp, task.Task); err != nil { - return Task{}, fmt.Errorf("error decoding Task response: %s", err) - } - - // The request was successful - return *task, nil - -} - -func (v *VApp) Reboot() (Task, error) { - - s, _ := url.ParseRequestURI(v.VApp.HREF) - s.Path += "/power/action/reboot" - - req := v.c.NewRequest(map[string]string{}, "POST", *s, nil) - - resp, err := checkResp(v.c.Http.Do(req)) - if err != nil { - return Task{}, fmt.Errorf("error rebooting vApp: %s", err) - } - - task := NewTask(v.c) - - if err = decodeBody(resp, task.Task); err != nil { - return Task{}, fmt.Errorf("error decoding Task response: %s", err) - } - - // The request was successful - return *task, nil - -} - -func (v *VApp) Reset() (Task, error) { - - s, _ := url.ParseRequestURI(v.VApp.HREF) - s.Path += "/power/action/reset" - - req := v.c.NewRequest(map[string]string{}, "POST", *s, nil) - - resp, err := checkResp(v.c.Http.Do(req)) - if err != nil { - return Task{}, fmt.Errorf("error resetting vApp: %s", err) - } - - task := NewTask(v.c) - - if err = decodeBody(resp, task.Task); err != nil { - return Task{}, fmt.Errorf("error decoding Task response: %s", err) - } - - // The request was successful - return *task, nil - -} - -func (v *VApp) Suspend() (Task, error) { - - s, _ := url.ParseRequestURI(v.VApp.HREF) - s.Path += "/power/action/suspend" - - req := v.c.NewRequest(map[string]string{}, "POST", *s, nil) - - resp, err := checkResp(v.c.Http.Do(req)) - if err != nil { - return Task{}, fmt.Errorf("error suspending vApp: %s", err) - } - - task := NewTask(v.c) - - if err = decodeBody(resp, task.Task); err != nil { - return Task{}, fmt.Errorf("error decoding Task response: %s", err) - } - - // The request was successful - return *task, nil - -} - -func (v *VApp) Shutdown() (Task, error) { - - s, _ := url.ParseRequestURI(v.VApp.HREF) - s.Path += "/power/action/shutdown" - - req := v.c.NewRequest(map[string]string{}, "POST", *s, nil) - - resp, err := checkResp(v.c.Http.Do(req)) - if err != nil { - return Task{}, fmt.Errorf("error shutting down vApp: %s", err) - } - - task := NewTask(v.c) - - if err = decodeBody(resp, task.Task); err != nil { - return Task{}, fmt.Errorf("error decoding Task response: %s", err) - } - - // The request was successful - return *task, nil - -} - -func (v *VApp) Undeploy() (Task, error) { - - vu := &types.UndeployVAppParams{ - Xmlns: "http://www.vmware.com/vcloud/v1.5", - UndeployPowerAction: "powerOff", - } - - output, err := xml.MarshalIndent(vu, " ", " ") - if err != nil { - fmt.Printf("error: %v\n", err) - } - - debug := os.Getenv("GOVCLOUDAIR_DEBUG") - - if debug == "true" { - fmt.Printf("\n\nXML DEBUG: %s\n\n", string(output)) - } - - b := bytes.NewBufferString(xml.Header + string(output)) - - s, _ := url.ParseRequestURI(v.VApp.HREF) - s.Path += "/action/undeploy" - - req := v.c.NewRequest(map[string]string{}, "POST", *s, b) - - req.Header.Add("Content-Type", "application/vnd.vmware.vcloud.undeployVAppParams+xml") - - resp, err := checkResp(v.c.Http.Do(req)) - if err != nil { - return Task{}, fmt.Errorf("error undeploy vApp: %s", err) - } - - task := NewTask(v.c) - - if err = decodeBody(resp, task.Task); err != nil { - return Task{}, fmt.Errorf("error decoding Task response: %s", err) - } - - // The request was successful - return *task, nil - -} - -func (v *VApp) Deploy() (Task, error) { - - vu := &types.DeployVAppParams{ - Xmlns: "http://www.vmware.com/vcloud/v1.5", - PowerOn: false, - } - - output, err := xml.MarshalIndent(vu, " ", " ") - if err != nil { - fmt.Printf("error: %v\n", err) - } - - debug := os.Getenv("GOVCLOUDAIR_DEBUG") - - if debug == "true" { - fmt.Printf("\n\nXML DEBUG: %s\n\n", string(output)) - } - - b := bytes.NewBufferString(xml.Header + string(output)) - - s, _ := url.ParseRequestURI(v.VApp.HREF) - s.Path += "/action/deploy" - - req := v.c.NewRequest(map[string]string{}, "POST", *s, b) - - req.Header.Add("Content-Type", "application/vnd.vmware.vcloud.deployVAppParams+xml") - - resp, err := checkResp(v.c.Http.Do(req)) - if err != nil { - return Task{}, fmt.Errorf("error undeploy vApp: %s", err) - } - - task := NewTask(v.c) - - if err = decodeBody(resp, task.Task); err != nil { - return Task{}, fmt.Errorf("error decoding Task response: %s", err) - } - - // The request was successful - return *task, nil - -} - -func (v *VApp) Delete() (Task, error) { - - s, _ := url.ParseRequestURI(v.VApp.HREF) - - req := v.c.NewRequest(map[string]string{}, "DELETE", *s, nil) - - resp, err := checkResp(v.c.Http.Do(req)) - if err != nil { - return Task{}, fmt.Errorf("error deleting vApp: %s", err) - } - - task := NewTask(v.c) - - if err = decodeBody(resp, task.Task); err != nil { - return Task{}, fmt.Errorf("error decoding Task response: %s", err) - } - - // The request was successful - return *task, nil - -} - -func (v *VApp) RunCustomizationScript(computername, script string) (Task, error) { - - err := v.Refresh() - if err != nil { - return Task{}, fmt.Errorf("error refreshing vapp before running customization: %v", err) - } - - // Check if VApp Children is populated - if v.VApp.Children == nil { - return Task{}, fmt.Errorf("vApp doesn't contain any children, aborting customization") - } - - vu := &types.GuestCustomizationSection{ - Ovf: "http://schemas.dmtf.org/ovf/envelope/1", - Xsi: "http://www.w3.org/2001/XMLSchema-instance", - Xmlns: "http://www.vmware.com/vcloud/v1.5", - - HREF: v.VApp.Children.VM[0].HREF, - Type: "application/vnd.vmware.vcloud.guestCustomizationSection+xml", - Info: "Specifies Guest OS Customization Settings", - Enabled: true, - ComputerName: computername, - CustomizationScript: script, - } - - output, err := xml.MarshalIndent(vu, " ", " ") - if err != nil { - fmt.Printf("error: %v\n", err) - } - - debug := os.Getenv("GOVCLOUDAIR_DEBUG") - - if debug == "true" { - fmt.Printf("\n\nXML DEBUG: %s\n\n", string(output)) - } - - b := bytes.NewBufferString(xml.Header + string(output)) - - s, _ := url.ParseRequestURI(v.VApp.Children.VM[0].HREF) - s.Path += "/guestCustomizationSection/" - - req := v.c.NewRequest(map[string]string{}, "PUT", *s, b) - - req.Header.Add("Content-Type", "application/vnd.vmware.vcloud.guestCustomizationSection+xml") - - resp, err := checkResp(v.c.Http.Do(req)) - if err != nil { - return Task{}, fmt.Errorf("error customizing VM: %s", err) - } - - task := NewTask(v.c) - - if err = decodeBody(resp, task.Task); err != nil { - return Task{}, fmt.Errorf("error decoding Task response: %s", err) - } - - // The request was successful - return *task, nil - -} - -func (v *VApp) GetStatus() (string, error) { - err := v.Refresh() - if err != nil { - return "", fmt.Errorf("error refreshing vapp: %v", err) - } - return types.VAppStatuses[v.VApp.Status], nil -} - -func (v *VApp) ChangeCPUcount(size int) (Task, error) { - - err := v.Refresh() - if err != nil { - return Task{}, fmt.Errorf("error refreshing vapp before running customization: %v", err) - } - - // Check if VApp Children is populated - if v.VApp.Children == nil { - return Task{}, fmt.Errorf("vApp doesn't contain any children, aborting customization") - } - - newcpu := &types.OVFItem{ - XmlnsRasd: "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData", - XmlnsVCloud: "http://www.vmware.com/vcloud/v1.5", - XmlnsXsi: "http://www.w3.org/2001/XMLSchema-instance", - VCloudHREF: v.VApp.Children.VM[0].HREF + "/virtualHardwareSection/cpu", - VCloudType: "application/vnd.vmware.vcloud.rasdItem+xml", - AllocationUnits: "hertz * 10^6", - Description: "Number of Virtual CPUs", - ElementName: strconv.Itoa(size) + " virtual CPU(s)", - InstanceID: 4, - Reservation: 0, - ResourceType: 3, - VirtualQuantity: size, - Weight: 0, - Link: &types.Link{ - HREF: v.VApp.Children.VM[0].HREF + "/virtualHardwareSection/cpu", - Rel: "edit", - Type: "application/vnd.vmware.vcloud.rasdItem+xml", - }, - } - - output, err := xml.MarshalIndent(newcpu, " ", " ") - if err != nil { - fmt.Printf("error: %v\n", err) - } - - debug := os.Getenv("GOVCLOUDAIR_DEBUG") - - if debug == "true" { - fmt.Printf("\n\nXML DEBUG: %s\n\n", string(output)) - } - - b := bytes.NewBufferString(xml.Header + string(output)) - - s, _ := url.ParseRequestURI(v.VApp.Children.VM[0].HREF) - s.Path += "/virtualHardwareSection/cpu" - - req := v.c.NewRequest(map[string]string{}, "PUT", *s, b) - - req.Header.Add("Content-Type", "application/vnd.vmware.vcloud.rasdItem+xml") - - resp, err := checkResp(v.c.Http.Do(req)) - if err != nil { - return Task{}, fmt.Errorf("error customizing VM: %s", err) - } - - task := NewTask(v.c) - - if err = decodeBody(resp, task.Task); err != nil { - return Task{}, fmt.Errorf("error decoding Task response: %s", err) - } - - // The request was successful - return *task, nil - -} - -func (v *VApp) ChangeMemorySize(size int) (Task, error) { - - err := v.Refresh() - if err != nil { - return Task{}, fmt.Errorf("error refreshing vapp before running customization: %v", err) - } - - // Check if VApp Children is populated - if v.VApp.Children == nil { - return Task{}, fmt.Errorf("vApp doesn't contain any children, aborting customization") - } - - newmem := &types.OVFItem{ - XmlnsRasd: "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData", - XmlnsVCloud: "http://www.vmware.com/vcloud/v1.5", - XmlnsXsi: "http://www.w3.org/2001/XMLSchema-instance", - VCloudHREF: v.VApp.Children.VM[0].HREF + "/virtualHardwareSection/memory", - VCloudType: "application/vnd.vmware.vcloud.rasdItem+xml", - AllocationUnits: "byte * 2^20", - Description: "Memory Size", - ElementName: strconv.Itoa(size) + " MB of memory", - InstanceID: 5, - Reservation: 0, - ResourceType: 4, - VirtualQuantity: size, - Weight: 0, - Link: &types.Link{ - HREF: v.VApp.Children.VM[0].HREF + "/virtualHardwareSection/memory", - Rel: "edit", - Type: "application/vnd.vmware.vcloud.rasdItem+xml", - }, - } - - output, err := xml.MarshalIndent(newmem, " ", " ") - if err != nil { - fmt.Printf("error: %v\n", err) - } - - debug := os.Getenv("GOVCLOUDAIR_DEBUG") - - if debug == "true" { - fmt.Printf("\n\nXML DEBUG: %s\n\n", string(output)) - } - - b := bytes.NewBufferString(xml.Header + string(output)) - - s, _ := url.ParseRequestURI(v.VApp.Children.VM[0].HREF) - s.Path += "/virtualHardwareSection/memory" - - req := v.c.NewRequest(map[string]string{}, "PUT", *s, b) - - req.Header.Add("Content-Type", "application/vnd.vmware.vcloud.rasdItem+xml") - - resp, err := checkResp(v.c.Http.Do(req)) - if err != nil { - return Task{}, fmt.Errorf("error customizing VM: %s", err) - } - - task := NewTask(v.c) - - if err = decodeBody(resp, task.Task); err != nil { - return Task{}, fmt.Errorf("error decoding Task response: %s", err) - } - - // The request was successful - return *task, nil - -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/vapptemplate.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/vapptemplate.go deleted file mode 100644 index 8c4867fd..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/vapptemplate.go +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2014 VMware, Inc. All rights reserved. Licensed under the Apache v2 License. - */ - -package govcloudair - -import ( - types "github.com/vmware/govcloudair/types/v56" -) - -type VAppTemplate struct { - VAppTemplate *types.VAppTemplate - c *Client -} - -func NewVAppTemplate(c *Client) *VAppTemplate { - return &VAppTemplate{ - VAppTemplate: new(types.VAppTemplate), - c: c, - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/vdc.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/vdc.go deleted file mode 100644 index f233455b..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govcloudair/vdc.go +++ /dev/null @@ -1,277 +0,0 @@ -/* - * Copyright 2014 VMware, Inc. All rights reserved. Licensed under the Apache v2 License. - */ - -package govcloudair - -import ( - "fmt" - "net/url" - "strings" - - types "github.com/vmware/govcloudair/types/v56" -) - -type Vdc struct { - Vdc *types.Vdc - c *Client -} - -func NewVdc(c *Client) *Vdc { - return &Vdc{ - Vdc: new(types.Vdc), - c: c, - } -} - -func (c *Client) retrieveVDC() (Vdc, error) { - - req := c.NewRequest(map[string]string{}, "GET", c.VCDVDCHREF, nil) - - resp, err := checkResp(c.Http.Do(req)) - if err != nil { - return Vdc{}, fmt.Errorf("error retreiving vdc: %s", err) - } - - vdc := NewVdc(c) - - if err = decodeBody(resp, vdc.Vdc); err != nil { - return Vdc{}, fmt.Errorf("error decoding vdc response: %s", err) - } - - // The request was successful - return *vdc, nil -} - -func (v *Vdc) Refresh() error { - - if v.Vdc.HREF == "" { - return fmt.Errorf("cannot refresh, Object is empty") - } - - u, _ := url.ParseRequestURI(v.Vdc.HREF) - - req := v.c.NewRequest(map[string]string{}, "GET", *u, nil) - - resp, err := checkResp(v.c.Http.Do(req)) - if err != nil { - return fmt.Errorf("error retreiving Edge Gateway: %s", err) - } - - // Empty struct before a new unmarshal, otherwise we end up with duplicate - // elements in slices. - v.Vdc = &types.Vdc{} - - if err = decodeBody(resp, v.Vdc); err != nil { - return fmt.Errorf("error decoding Edge Gateway response: %s", err) - } - - // The request was successful - return nil -} - -func (v *Vdc) FindVDCNetwork(network string) (OrgVDCNetwork, error) { - - for _, an := range v.Vdc.AvailableNetworks { - for _, n := range an.Network { - if n.Name == network { - u, err := url.ParseRequestURI(n.HREF) - if err != nil { - return OrgVDCNetwork{}, fmt.Errorf("error decoding vdc response: %s", err) - } - - req := v.c.NewRequest(map[string]string{}, "GET", *u, nil) - - resp, err := checkResp(v.c.Http.Do(req)) - if err != nil { - return OrgVDCNetwork{}, fmt.Errorf("error retreiving orgvdcnetwork: %s", err) - } - - orgnet := NewOrgVDCNetwork(v.c) - - if err = decodeBody(resp, orgnet.OrgVDCNetwork); err != nil { - return OrgVDCNetwork{}, fmt.Errorf("error decoding orgvdcnetwork response: %s", err) - } - - // The request was successful - return *orgnet, nil - - } - } - } - - return OrgVDCNetwork{}, fmt.Errorf("can't find VDC Network: %s", network) -} - -func (v *Vdc) GetVDCOrg() (Org, error) { - - for _, av := range v.Vdc.Link { - if av.Rel == "up" && av.Type == "application/vnd.vmware.vcloud.org+xml" { - u, err := url.ParseRequestURI(av.HREF) - - if err != nil { - return Org{}, fmt.Errorf("error decoding vdc response: %s", err) - } - - req := v.c.NewRequest(map[string]string{}, "GET", *u, nil) - - resp, err := checkResp(v.c.Http.Do(req)) - if err != nil { - return Org{}, fmt.Errorf("error retreiving org: %s", err) - } - - org := NewOrg(v.c) - - if err = decodeBody(resp, org.Org); err != nil { - return Org{}, fmt.Errorf("error decoding org response: %s", err) - } - - // The request was successful - return *org, nil - - } - } - return Org{}, fmt.Errorf("can't find VDC Org") -} - -func (v *Vdc) FindEdgeGateway(edgegateway string) (EdgeGateway, error) { - - for _, av := range v.Vdc.Link { - if av.Rel == "edgeGateways" && av.Type == "application/vnd.vmware.vcloud.query.records+xml" { - u, err := url.ParseRequestURI(av.HREF) - - if err != nil { - return EdgeGateway{}, fmt.Errorf("error decoding vdc response: %s", err) - } - - // Querying the Result list - req := v.c.NewRequest(map[string]string{}, "GET", *u, nil) - - resp, err := checkResp(v.c.Http.Do(req)) - if err != nil { - return EdgeGateway{}, fmt.Errorf("error retrieving edge gateway records: %s", err) - } - - query := new(types.QueryResultEdgeGatewayRecordsType) - - if err = decodeBody(resp, query); err != nil { - return EdgeGateway{}, fmt.Errorf("error decoding edge gateway query response: %s", err) - } - - u, err = url.ParseRequestURI(query.EdgeGatewayRecord.HREF) - if err != nil { - return EdgeGateway{}, fmt.Errorf("error decoding edge gateway query response: %s", err) - } - - // Querying the Result list - req = v.c.NewRequest(map[string]string{}, "GET", *u, nil) - - resp, err = checkResp(v.c.Http.Do(req)) - if err != nil { - return EdgeGateway{}, fmt.Errorf("error retrieving edge gateway: %s", err) - } - - edge := NewEdgeGateway(v.c) - - if err = decodeBody(resp, edge.EdgeGateway); err != nil { - return EdgeGateway{}, fmt.Errorf("error decoding edge gateway response: %s", err) - } - - return *edge, nil - - } - } - return EdgeGateway{}, fmt.Errorf("can't find Edge Gateway") - -} - -func (v *Vdc) FindVAppByName(vapp string) (VApp, error) { - - err := v.Refresh() - if err != nil { - return VApp{}, fmt.Errorf("error refreshing vdc: %s", err) - } - - for _, resents := range v.Vdc.ResourceEntities { - for _, resent := range resents.ResourceEntity { - - if resent.Name == vapp && resent.Type == "application/vnd.vmware.vcloud.vApp+xml" { - - u, err := url.ParseRequestURI(resent.HREF) - - if err != nil { - return VApp{}, fmt.Errorf("error decoding vdc response: %s", err) - } - - // Querying the VApp - req := v.c.NewRequest(map[string]string{}, "GET", *u, nil) - - resp, err := checkResp(v.c.Http.Do(req)) - if err != nil { - return VApp{}, fmt.Errorf("error retrieving vApp: %s", err) - } - - newvapp := NewVApp(v.c) - - if err = decodeBody(resp, newvapp.VApp); err != nil { - return VApp{}, fmt.Errorf("error decoding vApp response: %s", err) - } - - return *newvapp, nil - - } - } - } - return VApp{}, fmt.Errorf("can't find vApp: %s", vapp) -} - -func (v *Vdc) FindVAppByID(vappid string) (VApp, error) { - - // Horrible hack to fetch a vapp with its id. - // urn:vcloud:vapp:00000000-0000-0000-0000-000000000000 - - err := v.Refresh() - if err != nil { - return VApp{}, fmt.Errorf("error refreshing vdc: %s", err) - } - - urnslice := strings.SplitAfter(vappid, ":") - urnid := urnslice[len(urnslice)-1] - - for _, resents := range v.Vdc.ResourceEntities { - for _, resent := range resents.ResourceEntity { - - hrefslice := strings.SplitAfter(resent.HREF, "/") - hrefslice = strings.SplitAfter(hrefslice[len(hrefslice)-1], "-") - res := strings.Join(hrefslice[1:], "") - - if res == urnid && resent.Type == "application/vnd.vmware.vcloud.vApp+xml" { - - u, err := url.ParseRequestURI(resent.HREF) - - if err != nil { - return VApp{}, fmt.Errorf("error decoding vdc response: %s", err) - } - - // Querying the VApp - req := v.c.NewRequest(map[string]string{}, "GET", *u, nil) - - resp, err := checkResp(v.c.Http.Do(req)) - if err != nil { - return VApp{}, fmt.Errorf("error retrieving vApp: %s", err) - } - - newvapp := NewVApp(v.c) - - if err = decodeBody(resp, newvapp.VApp); err != nil { - return VApp{}, fmt.Errorf("error decoding vApp response: %s", err) - } - - return *newvapp, nil - - } - } - } - return VApp{}, fmt.Errorf("can't find vApp") - -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/.drone.sec b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/.drone.sec deleted file mode 100644 index ad52e59a..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/.drone.sec +++ /dev/null @@ -1 +0,0 @@ -eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExMjhHQ00ifQ.kK6pryC8R-O1R0Gj9ydLvQuIZlcYLGze23WdW7xbpiEEKdz6nweJrMm7ysy8lgu1tM47JVo19p2_b26bNKSQshCUOETvd7Hb2UMZOjnyUnqdyAAyoi6UkIquXfUUbHTNS0iMxwSxxW9KMp2GXNq8-o6T8xQZTDirBJFKKd8ZNUasTaoa5j8U9IfdR1aCavTBuOhvk8IVs-jSbY5TVJMJiE0IOPXois7aRJ6uAiANQBk9VKLegEcZD_qAewecXHDsHi-u0jbmg3o3PPaJaK_Qv5dsPlR2M-E2kE3AGUn0-zn5zYRngoAZ8WZr2O4GvLdltJKq9i2z7jOrdOzzRcDRow.96qvwl_E1Hj15u7Q.hWs-jQ8FsqQFD7pE9N-UEP1BWQ9rsJIcCaPvQRIp8Fukm_vvlw9YEaEq0ERLrsUWsJWpd1ca8_h8x7xD6f_d5YppwRqRHIeGIsdBOTMhNs0lG8ikkQXLat-UroCpy8EC17nuUtDE2E2Kdxrk4Cdd6Bk-dKk0Ta4w3Ud0YBKa.P8zrO7xizgv0i98eVWWzEg \ No newline at end of file diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/.drone.yml b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/.drone.yml deleted file mode 100644 index c1febba3..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/.drone.yml +++ /dev/null @@ -1,17 +0,0 @@ -clone: - tags: true - path: github.com/vmware/govmomi -build: - image: golang:1.6 - pull: true - environment: - - GOVC_TEST_URL=$$GOVC_TEST_URL - - GOVC_INSECURE=1 - - VCA=1 - commands: - - make all install - - git clone https://github.com/sstephenson/bats.git /tmp/bats - - /tmp/bats/install.sh /usr/local - - apt-get -qq update && apt-get install -yqq uuid-runtime bsdmainutils jq - - govc/test/images/update.sh - - bats govc/test diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/.gitignore b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/.gitignore deleted file mode 100644 index 769c2440..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/.gitignore +++ /dev/null @@ -1 +0,0 @@ -secrets.yml diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/.travis.yml b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/.travis.yml deleted file mode 100644 index 3c12d877..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -sudo: false - -language: go - -go: - - 1.6 - -before_install: - - make vendor - -script: - - make check test diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/CHANGELOG.md b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/CHANGELOG.md deleted file mode 100644 index c695d4a1..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/CHANGELOG.md +++ /dev/null @@ -1,118 +0,0 @@ -# changelog - -### 0.6.2 (2016-05-11) - -* Get complete file details in Datastore.Stat - -* SOAP decoding fixes - -* Add VirtualMachine.RemoveAllSnapshot - -### 0.6.1 (2016-04-30) - -* Fix mo.Entity interface - -### 0.6.0 (2016-04-29) - -* Add Common.Rename method - -* Add mo.Entity interface - -* Add OptionManager - -* Add Finder.FolderList method - -* Add VirtualMachine.WaitForNetIP method - -* Add VirtualMachine.RevertToSnapshot method - -* Add Datastore.Download method - -### 0.5.0 (2016-03-30) - -Generated fields using xsd type 'int' change to Go type 'int32' - -VirtualDevice.UnitNumber field changed to pointer type - -### 0.4.0 (2016-02-26) - -* Add method to convert virtual device list to array with virtual device - changes that can be used in the VirtualMachineConfigSpec. - -* Make datastore cluster traversable in lister - -* Add finder.DatastoreCluster methods (also known as storage pods) - -* Add Drone CI check - -* Add object.Datastore Type and AttachedClusterHosts methods - -* Add finder.*OrDefault methods - -### 0.3.0 (2016-01-16) - -* Add object.VirtualNicManager wrapper - -* Add object.HostVsanSystem wrapper - -* Add object.HostSystem methods: EnterMaintenanceMode, ExitMaintenanceMode, Disconnect, Reconnect - -* Add finder.Folder method - -* Add object.Common.Destroy method - -* Add object.ComputeResource.Reconfigure method - -* Add license.AssignmentManager wrapper - -* Add object.HostFirewallSystem wrapper - -* Add object.DiagnosticManager wrapper - -* Add LoginExtensionByCertificate support - -* Add object.ExtensionManager - -... - -### 0.2.0 (2015-09-15) - -* Update to vim25/6.0 API - -* Stop returning children from `ManagedObjectList` - - Change the `ManagedObjectList` function in the `find` package to only - return the managed objects specified by the path argument and not their - children. The original behavior was used by govc's `ls` command and is - now available in the newly added function `ManagedObjectListChildren`. - -* Add retry functionality to vim25 package - -* Change finder functions to no longer take varargs - - The `find` package had functions to return a list of objects, given a - variable number of patterns. This makes it impossible to distinguish which - patterns produced results and which ones didn't. - - In particular for govc, where multiple arguments can be passed from the - command line, it is useful to let the user know which ones produce results - and which ones don't. - - To evaluate multiple patterns, the user should call the find functions - multiple times (either serially or in parallel). - -* Make optional boolean fields pointers (`vim25/types`). - - False is the zero value of a boolean field, which means they are not serialized - if the field is marked "omitempty". If the field is a pointer instead, the zero - value will be the nil pointer, and both true and false values are serialized. - -### 0.1.0 (2015-03-17) - -Prior to this version the API of this library was in flux. - -Notable changes w.r.t. the state of this library before March 2015 are: - -* All functions that may execute a request take a `context.Context` parameter. -* The `vim25` package contains a minimal client implementation. -* The property collector and its convenience functions live in the `property` package. diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/CONTRIBUTING.md b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/CONTRIBUTING.md deleted file mode 100644 index 18c7be51..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/CONTRIBUTING.md +++ /dev/null @@ -1,92 +0,0 @@ -# Contributing to govmomi - -## Getting started - -First, fork the repository on GitHub to your personal account. - -Note that _GOPATH_ can be any directory, the example below uses _$HOME/govmomi_. -Change _$USER_ below to your github username if they are not the same. - -``` shell -export GOPATH=$HOME/govmomi -mkdir -p $GOPATH/src/github.com/vmware -cd $GOPATH/src/github.com/vmware -git clone git@github.com:vmware/govmomi.git -cd govmomi -git config push.default nothing # anything to avoid pushing to vmware/govmomi by default -git remote rename origin vmware -git remote add $USER git@github.com:$USER/govmomi.git -git fetch $USER -``` - -## Contribution flow - -This is a rough outline of what a contributor's workflow looks like: - -- Create a topic branch from where you want to base your work. -- Make commits of logical units. -- Make sure your commit messages are in the proper format (see below). -- Push your changes to a topic branch in your fork of the repository. -- Submit a pull request to vmware/govmomi. - -Example: - -``` shell -git checkout -b my-new-feature vmware/master -git commit -a -git push $USER my-new-feature -``` - -### Stay in sync with upstream - -When your branch gets out of sync with the vmware/master branch, use the following to update: - -``` shell -git checkout my-new-feature -git fetch -a -git rebase vmware/master -git push --force-with-lease $USER my-new-feature -``` - -### Updating pull requests - -If your PR fails to pass CI or needs changes based on code review, you'll most likely want to squash these changes into -existing commits. - -If your pull request contains a single commit or your changes are related to the most recent commit, you can simply -amend the commit. - -``` shell -git add . -git commit --amend -git push --force-with-lease $USER my-new-feature -``` - -If you need to squash changes into an earlier commit, you can use: - -``` shell -git add . -git commit --fixup -git rebase -i --autosquash vmware/master -git push --force-with-lease $USER my-new-feature -``` - -Be sure to add a comment to the PR indicating your new changes are ready to review, as github does not generate a -notification when you git push. - -### Code style - -The coding style suggested by the Golang community is used in govmomi. See the -[style doc](https://github.com/golang/go/wiki/CodeReviewComments) for details. - -Try to limit column width to 120 characters for both code and markdown documents such as this one. - -### Format of the Commit Message - -We follow the conventions on [How to Write a Git Commit Message](http://chris.beams.io/posts/git-commit/). - -Be sure to include any related GitHub issue references in the commit message. - -## Reporting Bugs and Creating Issues - -When opening a new issue, try to roughly follow the commit message format conventions above. diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/CONTRIBUTORS b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/CONTRIBUTORS deleted file mode 100644 index 11b21943..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/CONTRIBUTORS +++ /dev/null @@ -1,39 +0,0 @@ -# People who can (and typically have) contributed to this repository. -# -# Please keep the list sorted. -# - -Alvaro Miranda -Amit Bathla -Andrew Chin -Arran Walker -Austin Parker -Bob Killen -Bruce Downs -Clint Greenwood -Cédric Blomart -Danny Lockard -Dave Tucker -Doug MacEachern -Eloy Coto -Eric Yutao -Fabio Rapposelli -Faiyaz Ahmed -Gavin Gray -Gavrie Philipson -George Hicken -Gerrit Renker -gthombare -Isaac Rodman -Louie Jiang -Mevan Samaratunga -Pieter Noordhuis -runner.mei -S.Çağlar Onur -Sergey Ignatov -Takaaki Furukawa -Steve Purcell -Yang Yang -Yuya Kusakabe -Zach Tucker -Zee Yang diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/LICENSE.txt b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/LICENSE.txt deleted file mode 100644 index d6456956..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/LICENSE.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/Makefile b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/Makefile deleted file mode 100644 index af148963..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/Makefile +++ /dev/null @@ -1,24 +0,0 @@ -.PHONY: test - -all: check test - -check: goimports govet - -vendor: - go get golang.org/x/tools/cmd/goimports - go get github.com/davecgh/go-spew/spew - go get golang.org/x/net/context - -goimports: vendor - @echo checking go imports... - @! goimports -d . 2>&1 | egrep -v '^$$' - -govet: - @echo checking go vet... - @go tool vet -structtags=false -methods=false . - -test: vendor - go test -v $(TEST_OPTS) ./... - -install: vendor - go install github.com/vmware/govmomi/govc diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/README.md b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/README.md deleted file mode 100644 index 5a9513b6..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/README.md +++ /dev/null @@ -1,54 +0,0 @@ -[![Build Status](https://travis-ci.org/vmware/govmomi.png?branch=master)](https://travis-ci.org/vmware/govmomi) -[![Build Status](https://ci.vmware.run/api/badges/vmware/govmomi/status.svg)](https://ci.vmware.run/vmware/govmomi) - -# govmomi - -A Go library for interacting with VMware vSphere APIs (ESXi and/or vCenter). - -For `govc`, a CLI built on top of govmomi, check out the [govc](./govc) directory. - -## Compatibility - -This library is built for and tested against ESXi and vCenter 5.5 and 6.0. - -If you're able to use it against older versions of ESXi and/or vCenter, please -leave a note and we'll include it in this compatibility list. - -## Documentation - -The APIs exposed by this library very closely follow the API described in the [VMware vSphere API Reference Documentation][apiref]. -Refer to this document to become familiar with the upstream API. - -The code in the `govmomi` package is a wrapper for the code that is generated from the vSphere API description. -It primarily provides convenience functions for working with the vSphere API. -See [godoc.org][godoc] for documentation. - -[apiref]:http://pubs.vmware.com/vsphere-60/index.jsp#com.vmware.wssdk.apiref.doc/right-pane.html -[godoc]:http://godoc.org/github.com/vmware/govmomi -[drone]:https://drone.io -[dronesrc]:https://github.com/drone/drone -[dronecli]:http://readme.drone.io/devs/cli/ - -#### Building with CI -Merges to this repository will trigger builds in both Travis and [Drone][drone]. - -To build locally with Drone: -- Ensure that you have Docker 1.6 or higher installed. -- Install the [Drone command line tools][dronecli]. -- Run `drone exec` from within the root directory of the govmomi repository. - -## Status - -Changes to the API are subject to [semantic versioning](http://semver.org). - -Refer to the [CHANGELOG](CHANGELOG.md) for version to version changes. - -## Projects using govmomi - -* [Docker Machine](https://github.com/docker/machine/tree/master/drivers/vmwarevsphere) - -* [Terraform](https://github.com/hashicorp/terraform/tree/master/builtin/providers/vsphere) - -## License - -govmomi is available under the [Apache 2 license](LICENSE). diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/client.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/client.go deleted file mode 100644 index 6068e2db..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/client.go +++ /dev/null @@ -1,167 +0,0 @@ -/* -Copyright (c) 2014-2016 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -/* -This package is the root package of the govmomi library. - -The library is structured as follows: - -Package vim25 - -The minimal usable functionality is available through the vim25 package. -It contains subpackages that contain generated types, managed objects, and all -available methods. The vim25 package is entirely independent of the other -packages in the govmomi tree -- it has no dependencies on its peers. - -The vim25 package itself contains a client structure that is -passed around throughout the entire library. It abstracts a session and its -immutable state. See the vim25 package for more information. - -Package session - -The session package contains an abstraction for the session manager that allows -a user to login and logout. It also provides access to the current session -(i.e. to determine if the user is in fact logged in) - -Package object - -The object package contains wrappers for a selection of managed objects. The -constructors of these objects all take a *vim25.Client, which they pass along -to derived objects, if applicable. - -Package govc - -The govc package contains the govc CLI. The code in this tree is not intended -to be used as a library. Any functionality that govc contains that _could_ be -used as a library function but isn't, _should_ live in a root level package. - -Other packages - -Other packages, such as "event", "guest", or "license", provide wrappers for -the respective subsystems. They are typically not needed in normal workflows so -are kept outside the object package. -*/ -package govmomi - -import ( - "crypto/tls" - "net/url" - - "github.com/vmware/govmomi/property" - "github.com/vmware/govmomi/session" - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/soap" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type Client struct { - *vim25.Client - - SessionManager *session.Manager -} - -// NewClient creates a new client from a URL. The client authenticates with the -// server with username/password before returning if the URL contains user information. -func NewClient(ctx context.Context, u *url.URL, insecure bool) (*Client, error) { - soapClient := soap.NewClient(u, insecure) - vimClient, err := vim25.NewClient(ctx, soapClient) - if err != nil { - return nil, err - } - - c := &Client{ - Client: vimClient, - SessionManager: session.NewManager(vimClient), - } - - // Only login if the URL contains user information. - if u.User != nil { - err = c.Login(ctx, u.User) - if err != nil { - return nil, err - } - } - - return c, nil -} - -// NewClientWithCertificate creates a new client from a URL. The client authenticates with the -// server with the certificate before returning if the URL contains user information. -func NewClientWithCertificate(ctx context.Context, u *url.URL, insecure bool, cert tls.Certificate) (*Client, error) { - soapClient := soap.NewClient(u, insecure) - soapClient.SetCertificate(cert) - vimClient, err := vim25.NewClient(ctx, soapClient) - if err != nil { - return nil, err - } - - c := &Client{ - Client: vimClient, - SessionManager: session.NewManager(vimClient), - } - - if u.User != nil { - err = c.LoginExtensionByCertificate(ctx, u.User.Username(), "") - if err != nil { - return nil, err - } - } - - return c, nil -} - -// Login dispatches to the SessionManager. -func (c *Client) Login(ctx context.Context, u *url.Userinfo) error { - return c.SessionManager.Login(ctx, u) -} - -// Login dispatches to the SessionManager. -func (c *Client) LoginExtensionByCertificate(ctx context.Context, key string, locale string) error { - return c.SessionManager.LoginExtensionByCertificate(ctx, key, locale) -} - -// Logout dispatches to the SessionManager. -func (c *Client) Logout(ctx context.Context) error { - // Close any idle connections after logging out. - defer c.Client.CloseIdleConnections() - return c.SessionManager.Logout(ctx) -} - -// PropertyCollector returns the session's default property collector. -func (c *Client) PropertyCollector() *property.Collector { - return property.DefaultCollector(c.Client) -} - -// RetrieveOne dispatches to the Retrieve function on the default property collector. -func (c *Client) RetrieveOne(ctx context.Context, obj types.ManagedObjectReference, p []string, dst interface{}) error { - return c.PropertyCollector().RetrieveOne(ctx, obj, p, dst) -} - -// Retrieve dispatches to the Retrieve function on the default property collector. -func (c *Client) Retrieve(ctx context.Context, objs []types.ManagedObjectReference, p []string, dst interface{}) error { - return c.PropertyCollector().Retrieve(ctx, objs, p, dst) -} - -// Wait dispatches to property.Wait. -func (c *Client) Wait(ctx context.Context, obj types.ManagedObjectReference, ps []string, f func([]types.PropertyChange) bool) error { - return property.Wait(ctx, c.PropertyCollector(), obj, ps, f) -} - -// IsVC returns true if we are connected to a vCenter -func (c *Client) IsVC() bool { - return c.Client.IsVC() -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/find/error.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/find/error.go deleted file mode 100644 index 684526da..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/find/error.go +++ /dev/null @@ -1,64 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package find - -import "fmt" - -type NotFoundError struct { - kind string - path string -} - -func (e *NotFoundError) Error() string { - return fmt.Sprintf("%s '%s' not found", e.kind, e.path) -} - -type MultipleFoundError struct { - kind string - path string -} - -func (e *MultipleFoundError) Error() string { - return fmt.Sprintf("path '%s' resolves to multiple %ss", e.path, e.kind) -} - -type DefaultNotFoundError struct { - kind string -} - -func (e *DefaultNotFoundError) Error() string { - return fmt.Sprintf("no default %s found", e.kind) -} - -type DefaultMultipleFoundError struct { - kind string -} - -func (e DefaultMultipleFoundError) Error() string { - return fmt.Sprintf("default %s resolves to multiple instances, please specify", e.kind) -} - -func toDefaultError(err error) error { - switch e := err.(type) { - case *NotFoundError: - return &DefaultNotFoundError{e.kind} - case *MultipleFoundError: - return &DefaultMultipleFoundError{e.kind} - default: - return err - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/find/finder.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/find/finder.go deleted file mode 100644 index 3e9c3acb..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/find/finder.go +++ /dev/null @@ -1,803 +0,0 @@ -/* -Copyright (c) 2014-2016 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package find - -import ( - "errors" - "path" - - "github.com/vmware/govmomi/list" - "github.com/vmware/govmomi/object" - "github.com/vmware/govmomi/property" - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/mo" - "golang.org/x/net/context" -) - -type Finder struct { - client *vim25.Client - recurser list.Recurser - - dc *object.Datacenter - folders *object.DatacenterFolders -} - -func NewFinder(client *vim25.Client, all bool) *Finder { - f := &Finder{ - client: client, - recurser: list.Recurser{ - Collector: property.DefaultCollector(client), - All: all, - }, - } - - return f -} - -func (f *Finder) SetDatacenter(dc *object.Datacenter) *Finder { - f.dc = dc - f.folders = nil - return f -} - -type findRelativeFunc func(ctx context.Context) (object.Reference, error) - -func (f *Finder) find(ctx context.Context, fn findRelativeFunc, tl bool, arg string) ([]list.Element, error) { - root := list.Element{ - Path: "/", - Object: object.NewRootFolder(f.client), - } - - parts := list.ToParts(arg) - - if len(parts) > 0 { - switch parts[0] { - case "..": // Not supported; many edge case, little value - return nil, errors.New("cannot traverse up a tree") - case ".": // Relative to whatever - pivot, err := fn(ctx) - if err != nil { - return nil, err - } - - mes, err := mo.Ancestors(ctx, f.client, f.client.ServiceContent.PropertyCollector, pivot.Reference()) - if err != nil { - return nil, err - } - - for _, me := range mes { - // Skip root entity in building inventory path. - if me.Parent == nil { - continue - } - root.Path = path.Join(root.Path, me.Name) - } - - root.Object = pivot - parts = parts[1:] - } - } - - f.recurser.TraverseLeafs = tl - es, err := f.recurser.Recurse(ctx, root, parts) - if err != nil { - return nil, err - } - - return es, nil -} - -func (f *Finder) datacenter() (*object.Datacenter, error) { - if f.dc == nil { - return nil, errors.New("please specify a datacenter") - } - - return f.dc, nil -} - -func (f *Finder) dcFolders(ctx context.Context) (*object.DatacenterFolders, error) { - if f.folders != nil { - return f.folders, nil - } - - dc, err := f.datacenter() - if err != nil { - return nil, err - } - - folders, err := dc.Folders(ctx) - if err != nil { - return nil, err - } - - f.folders = folders - - return f.folders, nil -} - -func (f *Finder) dcReference(_ context.Context) (object.Reference, error) { - dc, err := f.datacenter() - if err != nil { - return nil, err - } - - return dc, nil -} - -func (f *Finder) vmFolder(ctx context.Context) (object.Reference, error) { - folders, err := f.dcFolders(ctx) - if err != nil { - return nil, err - } - - return folders.VmFolder, nil -} - -func (f *Finder) hostFolder(ctx context.Context) (object.Reference, error) { - folders, err := f.dcFolders(ctx) - if err != nil { - return nil, err - } - - return folders.HostFolder, nil -} - -func (f *Finder) datastoreFolder(ctx context.Context) (object.Reference, error) { - folders, err := f.dcFolders(ctx) - if err != nil { - return nil, err - } - - return folders.DatastoreFolder, nil -} - -func (f *Finder) networkFolder(ctx context.Context) (object.Reference, error) { - folders, err := f.dcFolders(ctx) - if err != nil { - return nil, err - } - - return folders.NetworkFolder, nil -} - -func (f *Finder) rootFolder(_ context.Context) (object.Reference, error) { - return object.NewRootFolder(f.client), nil -} - -func (f *Finder) managedObjectList(ctx context.Context, path string, tl bool) ([]list.Element, error) { - fn := f.rootFolder - - if f.dc != nil { - fn = f.dcReference - } - - if len(path) == 0 { - path = "." - } - - return f.find(ctx, fn, tl, path) -} - -func (f *Finder) ManagedObjectList(ctx context.Context, path string) ([]list.Element, error) { - return f.managedObjectList(ctx, path, false) -} - -func (f *Finder) ManagedObjectListChildren(ctx context.Context, path string) ([]list.Element, error) { - return f.managedObjectList(ctx, path, true) -} - -func (f *Finder) DatacenterList(ctx context.Context, path string) ([]*object.Datacenter, error) { - es, err := f.find(ctx, f.rootFolder, false, path) - if err != nil { - return nil, err - } - - var dcs []*object.Datacenter - for _, e := range es { - ref := e.Object.Reference() - if ref.Type == "Datacenter" { - dcs = append(dcs, object.NewDatacenter(f.client, ref)) - } - } - - if len(dcs) == 0 { - return nil, &NotFoundError{"datacenter", path} - } - - return dcs, nil -} - -func (f *Finder) Datacenter(ctx context.Context, path string) (*object.Datacenter, error) { - dcs, err := f.DatacenterList(ctx, path) - if err != nil { - return nil, err - } - - if len(dcs) > 1 { - return nil, &MultipleFoundError{"datacenter", path} - } - - return dcs[0], nil -} - -func (f *Finder) DefaultDatacenter(ctx context.Context) (*object.Datacenter, error) { - dc, err := f.Datacenter(ctx, "*") - if err != nil { - return nil, toDefaultError(err) - } - - return dc, nil -} - -func (f *Finder) DatacenterOrDefault(ctx context.Context, path string) (*object.Datacenter, error) { - if path != "" { - dc, err := f.Datacenter(ctx, path) - if err != nil { - return nil, err - } - return dc, nil - } - - return f.DefaultDatacenter(ctx) -} - -func (f *Finder) DatastoreList(ctx context.Context, path string) ([]*object.Datastore, error) { - es, err := f.find(ctx, f.datastoreFolder, false, path) - if err != nil { - return nil, err - } - - var dss []*object.Datastore - for _, e := range es { - ref := e.Object.Reference() - if ref.Type == "Datastore" { - ds := object.NewDatastore(f.client, ref) - ds.InventoryPath = e.Path - - dss = append(dss, ds) - } - } - - if len(dss) == 0 { - return nil, &NotFoundError{"datastore", path} - } - - return dss, nil -} - -func (f *Finder) Datastore(ctx context.Context, path string) (*object.Datastore, error) { - dss, err := f.DatastoreList(ctx, path) - if err != nil { - return nil, err - } - - if len(dss) > 1 { - return nil, &MultipleFoundError{"datastore", path} - } - - return dss[0], nil -} - -func (f *Finder) DefaultDatastore(ctx context.Context) (*object.Datastore, error) { - ds, err := f.Datastore(ctx, "*") - if err != nil { - return nil, toDefaultError(err) - } - - return ds, nil -} - -func (f *Finder) DatastoreOrDefault(ctx context.Context, path string) (*object.Datastore, error) { - if path != "" { - ds, err := f.Datastore(ctx, path) - if err != nil { - return nil, err - } - return ds, nil - } - - return f.DefaultDatastore(ctx) -} - -func (f *Finder) DatastoreClusterList(ctx context.Context, path string) ([]*object.StoragePod, error) { - es, err := f.find(ctx, f.datastoreFolder, false, path) - if err != nil { - return nil, err - } - - var sps []*object.StoragePod - for _, e := range es { - ref := e.Object.Reference() - if ref.Type == "StoragePod" { - sp := object.NewStoragePod(f.client, ref) - sp.InventoryPath = e.Path - sps = append(sps, sp) - } - } - - if len(sps) == 0 { - return nil, &NotFoundError{"datastore cluster", path} - } - - return sps, nil -} - -func (f *Finder) DatastoreCluster(ctx context.Context, path string) (*object.StoragePod, error) { - sps, err := f.DatastoreClusterList(ctx, path) - if err != nil { - return nil, err - } - - if len(sps) > 1 { - return nil, &MultipleFoundError{"datastore cluster", path} - } - - return sps[0], nil -} - -func (f *Finder) DefaultDatastoreCluster(ctx context.Context) (*object.StoragePod, error) { - sp, err := f.DatastoreCluster(ctx, "*") - if err != nil { - return nil, toDefaultError(err) - } - - return sp, nil -} - -func (f *Finder) DatastoreClusterOrDefault(ctx context.Context, path string) (*object.StoragePod, error) { - if path != "" { - sp, err := f.DatastoreCluster(ctx, path) - if err != nil { - return nil, err - } - return sp, nil - } - - return f.DefaultDatastoreCluster(ctx) -} - -func (f *Finder) ComputeResourceList(ctx context.Context, path string) ([]*object.ComputeResource, error) { - es, err := f.find(ctx, f.hostFolder, false, path) - if err != nil { - return nil, err - } - - var crs []*object.ComputeResource - for _, e := range es { - var cr *object.ComputeResource - - switch o := e.Object.(type) { - case mo.ComputeResource, mo.ClusterComputeResource: - cr = object.NewComputeResource(f.client, o.Reference()) - default: - continue - } - - cr.InventoryPath = e.Path - crs = append(crs, cr) - } - - if len(crs) == 0 { - return nil, &NotFoundError{"compute resource", path} - } - - return crs, nil -} - -func (f *Finder) ComputeResource(ctx context.Context, path string) (*object.ComputeResource, error) { - crs, err := f.ComputeResourceList(ctx, path) - if err != nil { - return nil, err - } - - if len(crs) > 1 { - return nil, &MultipleFoundError{"compute resource", path} - } - - return crs[0], nil -} - -func (f *Finder) DefaultComputeResource(ctx context.Context) (*object.ComputeResource, error) { - cr, err := f.ComputeResource(ctx, "*") - if err != nil { - return nil, toDefaultError(err) - } - - return cr, nil -} - -func (f *Finder) ComputeResourceOrDefault(ctx context.Context, path string) (*object.ComputeResource, error) { - if path != "" { - cr, err := f.ComputeResource(ctx, path) - if err != nil { - return nil, err - } - return cr, nil - } - - return f.DefaultComputeResource(ctx) -} - -func (f *Finder) ClusterComputeResourceList(ctx context.Context, path string) ([]*object.ClusterComputeResource, error) { - es, err := f.find(ctx, f.hostFolder, false, path) - if err != nil { - return nil, err - } - - var ccrs []*object.ClusterComputeResource - for _, e := range es { - var ccr *object.ClusterComputeResource - - switch o := e.Object.(type) { - case mo.ClusterComputeResource: - ccr = object.NewClusterComputeResource(f.client, o.Reference()) - default: - continue - } - - ccr.InventoryPath = e.Path - ccrs = append(ccrs, ccr) - } - - if len(ccrs) == 0 { - return nil, &NotFoundError{"cluster", path} - } - - return ccrs, nil -} - -func (f *Finder) ClusterComputeResource(ctx context.Context, path string) (*object.ClusterComputeResource, error) { - ccrs, err := f.ClusterComputeResourceList(ctx, path) - if err != nil { - return nil, err - } - - if len(ccrs) > 1 { - return nil, &MultipleFoundError{"cluster", path} - } - - return ccrs[0], nil -} - -func (f *Finder) HostSystemList(ctx context.Context, path string) ([]*object.HostSystem, error) { - es, err := f.find(ctx, f.hostFolder, false, path) - if err != nil { - return nil, err - } - - var hss []*object.HostSystem - for _, e := range es { - var hs *object.HostSystem - - switch o := e.Object.(type) { - case mo.HostSystem: - hs = object.NewHostSystem(f.client, o.Reference()) - - hs.InventoryPath = e.Path - hss = append(hss, hs) - case mo.ComputeResource, mo.ClusterComputeResource: - cr := object.NewComputeResource(f.client, o.Reference()) - - cr.InventoryPath = e.Path - - hosts, err := cr.Hosts(ctx) - if err != nil { - return nil, err - } - - hss = append(hss, hosts...) - } - } - - if len(hss) == 0 { - return nil, &NotFoundError{"host", path} - } - - return hss, nil -} - -func (f *Finder) HostSystem(ctx context.Context, path string) (*object.HostSystem, error) { - hss, err := f.HostSystemList(ctx, path) - if err != nil { - return nil, err - } - - if len(hss) > 1 { - return nil, &MultipleFoundError{"host", path} - } - - return hss[0], nil -} - -func (f *Finder) DefaultHostSystem(ctx context.Context) (*object.HostSystem, error) { - hs, err := f.HostSystem(ctx, "*/*") - if err != nil { - return nil, toDefaultError(err) - } - - return hs, nil -} - -func (f *Finder) HostSystemOrDefault(ctx context.Context, path string) (*object.HostSystem, error) { - if path != "" { - hs, err := f.HostSystem(ctx, path) - if err != nil { - return nil, err - } - return hs, nil - } - - return f.DefaultHostSystem(ctx) -} - -func (f *Finder) NetworkList(ctx context.Context, path string) ([]object.NetworkReference, error) { - es, err := f.find(ctx, f.networkFolder, false, path) - if err != nil { - return nil, err - } - - var ns []object.NetworkReference - for _, e := range es { - ref := e.Object.Reference() - switch ref.Type { - case "Network": - r := object.NewNetwork(f.client, ref) - r.InventoryPath = e.Path - ns = append(ns, r) - case "DistributedVirtualPortgroup": - r := object.NewDistributedVirtualPortgroup(f.client, ref) - r.InventoryPath = e.Path - ns = append(ns, r) - case "DistributedVirtualSwitch", "VmwareDistributedVirtualSwitch": - r := object.NewDistributedVirtualSwitch(f.client, ref) - r.InventoryPath = e.Path - ns = append(ns, r) - } - } - - if len(ns) == 0 { - return nil, &NotFoundError{"network", path} - } - - return ns, nil -} - -func (f *Finder) Network(ctx context.Context, path string) (object.NetworkReference, error) { - networks, err := f.NetworkList(ctx, path) - if err != nil { - return nil, err - } - - if len(networks) > 1 { - return nil, &MultipleFoundError{"network", path} - } - - return networks[0], nil -} - -func (f *Finder) DefaultNetwork(ctx context.Context) (object.NetworkReference, error) { - network, err := f.Network(ctx, "*") - if err != nil { - return nil, toDefaultError(err) - } - - return network, nil -} - -func (f *Finder) NetworkOrDefault(ctx context.Context, path string) (object.NetworkReference, error) { - if path != "" { - network, err := f.Network(ctx, path) - if err != nil { - return nil, err - } - return network, nil - } - - return f.DefaultNetwork(ctx) -} - -func (f *Finder) ResourcePoolList(ctx context.Context, path string) ([]*object.ResourcePool, error) { - es, err := f.find(ctx, f.hostFolder, true, path) - if err != nil { - return nil, err - } - - var rps []*object.ResourcePool - for _, e := range es { - var rp *object.ResourcePool - - switch o := e.Object.(type) { - case mo.ResourcePool: - rp = object.NewResourcePool(f.client, o.Reference()) - rp.InventoryPath = e.Path - rps = append(rps, rp) - } - } - - if len(rps) == 0 { - return nil, &NotFoundError{"resource pool", path} - } - - return rps, nil -} - -func (f *Finder) ResourcePool(ctx context.Context, path string) (*object.ResourcePool, error) { - rps, err := f.ResourcePoolList(ctx, path) - if err != nil { - return nil, err - } - - if len(rps) > 1 { - return nil, &MultipleFoundError{"resource pool", path} - } - - return rps[0], nil -} - -func (f *Finder) DefaultResourcePool(ctx context.Context) (*object.ResourcePool, error) { - rp, err := f.ResourcePool(ctx, "*/Resources") - if err != nil { - return nil, toDefaultError(err) - } - - return rp, nil -} - -func (f *Finder) ResourcePoolOrDefault(ctx context.Context, path string) (*object.ResourcePool, error) { - if path != "" { - rp, err := f.ResourcePool(ctx, path) - if err != nil { - return nil, err - } - return rp, nil - } - - return f.DefaultResourcePool(ctx) -} - -func (f *Finder) DefaultFolder(ctx context.Context) (*object.Folder, error) { - ref, err := f.vmFolder(ctx) - if err != nil { - return nil, toDefaultError(err) - } - folder := object.NewFolder(f.client, ref.Reference()) - - return folder, nil -} - -func (f *Finder) FolderOrDefault(ctx context.Context, path string) (*object.Folder, error) { - if path != "" { - folder, err := f.Folder(ctx, path) - if err != nil { - return nil, err - } - return folder, nil - } - return f.DefaultFolder(ctx) -} - -func (f *Finder) VirtualMachineList(ctx context.Context, path string) ([]*object.VirtualMachine, error) { - es, err := f.find(ctx, f.vmFolder, false, path) - if err != nil { - return nil, err - } - - var vms []*object.VirtualMachine - for _, e := range es { - switch o := e.Object.(type) { - case mo.VirtualMachine: - vm := object.NewVirtualMachine(f.client, o.Reference()) - vm.InventoryPath = e.Path - vms = append(vms, vm) - } - } - - if len(vms) == 0 { - return nil, &NotFoundError{"vm", path} - } - - return vms, nil -} - -func (f *Finder) VirtualMachine(ctx context.Context, path string) (*object.VirtualMachine, error) { - vms, err := f.VirtualMachineList(ctx, path) - if err != nil { - return nil, err - } - - if len(vms) > 1 { - return nil, &MultipleFoundError{"vm", path} - } - - return vms[0], nil -} - -func (f *Finder) VirtualAppList(ctx context.Context, path string) ([]*object.VirtualApp, error) { - es, err := f.find(ctx, f.vmFolder, false, path) - if err != nil { - return nil, err - } - - var apps []*object.VirtualApp - for _, e := range es { - switch o := e.Object.(type) { - case mo.VirtualApp: - app := object.NewVirtualApp(f.client, o.Reference()) - app.InventoryPath = e.Path - apps = append(apps, app) - } - } - - if len(apps) == 0 { - return nil, &NotFoundError{"app", path} - } - - return apps, nil -} - -func (f *Finder) VirtualApp(ctx context.Context, path string) (*object.VirtualApp, error) { - apps, err := f.VirtualAppList(ctx, path) - if err != nil { - return nil, err - } - - if len(apps) > 1 { - return nil, &MultipleFoundError{"app", path} - } - - return apps[0], nil -} - -func (f *Finder) FolderList(ctx context.Context, path string) ([]*object.Folder, error) { - es, err := f.ManagedObjectList(ctx, path) - if err != nil { - return nil, err - } - - var folders []*object.Folder - - for _, e := range es { - switch o := e.Object.(type) { - case mo.Folder: - folder := object.NewFolder(f.client, o.Reference()) - folder.InventoryPath = e.Path - folders = append(folders, folder) - case *object.Folder: - // RootFolder - folders = append(folders, o) - } - } - - if len(folders) == 0 { - return nil, &NotFoundError{"folder", path} - } - - return folders, nil -} - -func (f *Finder) Folder(ctx context.Context, path string) (*object.Folder, error) { - folders, err := f.FolderList(ctx, path) - if err != nil { - return nil, err - } - - if len(folders) > 1 { - return nil, &MultipleFoundError{"folder", path} - } - - return folders[0], nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/guest/auth_manager.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/guest/auth_manager.go deleted file mode 100644 index c62f012c..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/guest/auth_manager.go +++ /dev/null @@ -1,79 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package guest - -import ( - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type AuthManager struct { - types.ManagedObjectReference - - vm types.ManagedObjectReference - - c *vim25.Client -} - -func (m AuthManager) Reference() types.ManagedObjectReference { - return m.ManagedObjectReference -} - -func (m AuthManager) AcquireCredentials(ctx context.Context, requestedAuth types.BaseGuestAuthentication, sessionID int64) (types.BaseGuestAuthentication, error) { - req := types.AcquireCredentialsInGuest{ - This: m.Reference(), - Vm: m.vm, - RequestedAuth: requestedAuth, - SessionID: sessionID, - } - - res, err := methods.AcquireCredentialsInGuest(ctx, m.c, &req) - if err != nil { - return nil, err - } - - return res.Returnval, nil -} - -func (m AuthManager) ReleaseCredentials(ctx context.Context, auth types.BaseGuestAuthentication) error { - req := types.ReleaseCredentialsInGuest{ - This: m.Reference(), - Vm: m.vm, - Auth: auth, - } - - _, err := methods.ReleaseCredentialsInGuest(ctx, m.c, &req) - - return err -} - -func (m AuthManager) ValidateCredentials(ctx context.Context, auth types.BaseGuestAuthentication) error { - req := types.ValidateCredentialsInGuest{ - This: m.Reference(), - Vm: m.vm, - Auth: auth, - } - - _, err := methods.ValidateCredentialsInGuest(ctx, m.c, &req) - if err != nil { - return err - } - - return nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/guest/file_manager.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/guest/file_manager.go deleted file mode 100644 index 3d2d9b62..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/guest/file_manager.go +++ /dev/null @@ -1,202 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package guest - -import ( - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type FileManager struct { - types.ManagedObjectReference - - vm types.ManagedObjectReference - - c *vim25.Client -} - -func (m FileManager) Reference() types.ManagedObjectReference { - return m.ManagedObjectReference -} - -func (m FileManager) ChangeFileAttributes(ctx context.Context, auth types.BaseGuestAuthentication, guestFilePath string, fileAttributes types.BaseGuestFileAttributes) error { - req := types.ChangeFileAttributesInGuest{ - This: m.Reference(), - Vm: m.vm, - Auth: auth, - GuestFilePath: guestFilePath, - FileAttributes: fileAttributes, - } - - _, err := methods.ChangeFileAttributesInGuest(ctx, m.c, &req) - return err -} - -func (m FileManager) CreateTemporaryDirectory(ctx context.Context, auth types.BaseGuestAuthentication, prefix, suffix string) (string, error) { - req := types.CreateTemporaryDirectoryInGuest{ - This: m.Reference(), - Vm: m.vm, - Auth: auth, - Prefix: prefix, - Suffix: suffix, - } - - res, err := methods.CreateTemporaryDirectoryInGuest(ctx, m.c, &req) - if err != nil { - return "", err - } - - return res.Returnval, nil -} - -func (m FileManager) CreateTemporaryFile(ctx context.Context, auth types.BaseGuestAuthentication, prefix, suffix string) (string, error) { - req := types.CreateTemporaryFileInGuest{ - This: m.Reference(), - Vm: m.vm, - Auth: auth, - Prefix: prefix, - Suffix: suffix, - } - - res, err := methods.CreateTemporaryFileInGuest(ctx, m.c, &req) - if err != nil { - return "", err - } - - return res.Returnval, nil -} - -func (m FileManager) DeleteDirectory(ctx context.Context, auth types.BaseGuestAuthentication, directoryPath string, recursive bool) error { - req := types.DeleteDirectoryInGuest{ - This: m.Reference(), - Vm: m.vm, - Auth: auth, - DirectoryPath: directoryPath, - Recursive: recursive, - } - - _, err := methods.DeleteDirectoryInGuest(ctx, m.c, &req) - return err -} - -func (m FileManager) DeleteFile(ctx context.Context, auth types.BaseGuestAuthentication, filePath string) error { - req := types.DeleteFileInGuest{ - This: m.Reference(), - Vm: m.vm, - Auth: auth, - FilePath: filePath, - } - - _, err := methods.DeleteFileInGuest(ctx, m.c, &req) - return err -} - -func (m FileManager) InitiateFileTransferFromGuest(ctx context.Context, auth types.BaseGuestAuthentication, guestFilePath string) (*types.FileTransferInformation, error) { - req := types.InitiateFileTransferFromGuest{ - This: m.Reference(), - Vm: m.vm, - Auth: auth, - GuestFilePath: guestFilePath, - } - - res, err := methods.InitiateFileTransferFromGuest(ctx, m.c, &req) - if err != nil { - return nil, err - } - - return &res.Returnval, nil -} - -func (m FileManager) InitiateFileTransferToGuest(ctx context.Context, auth types.BaseGuestAuthentication, guestFilePath string, fileAttributes types.BaseGuestFileAttributes, fileSize int64, overwrite bool) (string, error) { - req := types.InitiateFileTransferToGuest{ - This: m.Reference(), - Vm: m.vm, - Auth: auth, - GuestFilePath: guestFilePath, - FileAttributes: fileAttributes, - FileSize: fileSize, - Overwrite: overwrite, - } - - res, err := methods.InitiateFileTransferToGuest(ctx, m.c, &req) - if err != nil { - return "", err - } - - return res.Returnval, nil -} - -func (m FileManager) ListFiles(ctx context.Context, auth types.BaseGuestAuthentication, filePath string, index int32, maxResults int32, matchPattern string) (*types.GuestListFileInfo, error) { - req := types.ListFilesInGuest{ - This: m.Reference(), - Vm: m.vm, - Auth: auth, - FilePath: filePath, - Index: index, - MaxResults: maxResults, - MatchPattern: matchPattern, - } - - res, err := methods.ListFilesInGuest(ctx, m.c, &req) - if err != nil { - return nil, err - } - - return &res.Returnval, nil -} - -func (m FileManager) MakeDirectory(ctx context.Context, auth types.BaseGuestAuthentication, directoryPath string, createParentDirectories bool) error { - req := types.MakeDirectoryInGuest{ - This: m.Reference(), - Vm: m.vm, - Auth: auth, - DirectoryPath: directoryPath, - CreateParentDirectories: createParentDirectories, - } - - _, err := methods.MakeDirectoryInGuest(ctx, m.c, &req) - return err -} - -func (m FileManager) MoveDirectory(ctx context.Context, auth types.BaseGuestAuthentication, srcDirectoryPath string, dstDirectoryPath string) error { - req := types.MoveDirectoryInGuest{ - This: m.Reference(), - Vm: m.vm, - Auth: auth, - SrcDirectoryPath: srcDirectoryPath, - DstDirectoryPath: dstDirectoryPath, - } - - _, err := methods.MoveDirectoryInGuest(ctx, m.c, &req) - return err -} - -func (m FileManager) MoveFile(ctx context.Context, auth types.BaseGuestAuthentication, srcFilePath string, dstFilePath string, overwrite bool) error { - req := types.MoveFileInGuest{ - This: m.Reference(), - Vm: m.vm, - Auth: auth, - SrcFilePath: srcFilePath, - DstFilePath: dstFilePath, - Overwrite: overwrite, - } - - _, err := methods.MoveFileInGuest(ctx, m.c, &req) - return err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/guest/operations_manager.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/guest/operations_manager.go deleted file mode 100644 index 3c5394d9..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/guest/operations_manager.go +++ /dev/null @@ -1,72 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package guest - -import ( - "github.com/vmware/govmomi/property" - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/mo" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type OperationsManager struct { - c *vim25.Client - vm types.ManagedObjectReference -} - -func NewOperationsManager(c *vim25.Client, vm types.ManagedObjectReference) *OperationsManager { - return &OperationsManager{c, vm} -} - -func (m OperationsManager) retrieveOne(ctx context.Context, p string, dst *mo.GuestOperationsManager) error { - pc := property.DefaultCollector(m.c) - return pc.RetrieveOne(ctx, *m.c.ServiceContent.GuestOperationsManager, []string{p}, dst) -} - -func (m OperationsManager) AuthManager(ctx context.Context) (*AuthManager, error) { - var g mo.GuestOperationsManager - - err := m.retrieveOne(ctx, "authManager", &g) - if err != nil { - return nil, err - } - - return &AuthManager{*g.AuthManager, m.vm, m.c}, nil -} - -func (m OperationsManager) FileManager(ctx context.Context) (*FileManager, error) { - var g mo.GuestOperationsManager - - err := m.retrieveOne(ctx, "fileManager", &g) - if err != nil { - return nil, err - } - - return &FileManager{*g.FileManager, m.vm, m.c}, nil -} - -func (m OperationsManager) ProcessManager(ctx context.Context) (*ProcessManager, error) { - var g mo.GuestOperationsManager - - err := m.retrieveOne(ctx, "processManager", &g) - if err != nil { - return nil, err - } - - return &ProcessManager{*g.ProcessManager, m.vm, m.c}, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/guest/process_manager.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/guest/process_manager.go deleted file mode 100644 index 159a571d..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/guest/process_manager.go +++ /dev/null @@ -1,96 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package guest - -import ( - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type ProcessManager struct { - types.ManagedObjectReference - - vm types.ManagedObjectReference - - c *vim25.Client -} - -func (m ProcessManager) Reference() types.ManagedObjectReference { - return m.ManagedObjectReference -} - -func (m ProcessManager) ListProcesses(ctx context.Context, auth types.BaseGuestAuthentication, pids []int64) ([]types.GuestProcessInfo, error) { - req := types.ListProcessesInGuest{ - This: m.Reference(), - Vm: m.vm, - Auth: auth, - Pids: pids, - } - - res, err := methods.ListProcessesInGuest(ctx, m.c, &req) - if err != nil { - return nil, err - } - - return res.Returnval, err -} - -func (m ProcessManager) ReadEnvironmentVariable(ctx context.Context, auth types.BaseGuestAuthentication, names []string) ([]string, error) { - req := types.ReadEnvironmentVariableInGuest{ - This: m.Reference(), - Vm: m.vm, - Auth: auth, - Names: names, - } - - res, err := methods.ReadEnvironmentVariableInGuest(ctx, m.c, &req) - if err != nil { - return nil, err - } - - return res.Returnval, err -} - -func (m ProcessManager) StartProgram(ctx context.Context, auth types.BaseGuestAuthentication, spec types.BaseGuestProgramSpec) (int64, error) { - req := types.StartProgramInGuest{ - This: m.Reference(), - Vm: m.vm, - Auth: auth, - Spec: spec, - } - - res, err := methods.StartProgramInGuest(ctx, m.c, &req) - if err != nil { - return 0, err - } - - return res.Returnval, err -} - -func (m ProcessManager) TerminateProcess(ctx context.Context, auth types.BaseGuestAuthentication, pid int64) error { - req := types.TerminateProcessInGuest{ - This: m.Reference(), - Vm: m.vm, - Auth: auth, - Pid: pid, - } - - _, err := methods.TerminateProcessInGuest(ctx, m.c, &req) - return err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/list/lister.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/list/lister.go deleted file mode 100644 index 355208f5..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/list/lister.go +++ /dev/null @@ -1,572 +0,0 @@ -/* -Copyright (c) 2014-2016 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package list - -import ( - "fmt" - "path" - "reflect" - - "github.com/vmware/govmomi/property" - "github.com/vmware/govmomi/vim25/mo" - "github.com/vmware/govmomi/vim25/soap" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type Element struct { - Path string - Object mo.Reference -} - -func ToElement(r mo.Reference, prefix string) Element { - var name string - - // Comments about types to be expected in folders copied from the - // documentation of the Folder managed object: - // http://pubs.vmware.com/vsphere-55/topic/com.vmware.wssdk.apiref.doc/vim.Folder.html - switch m := r.(type) { - case mo.Folder: - name = m.Name - case mo.StoragePod: - name = m.Name - - // { "vim.Datacenter" } - Identifies the root folder and its descendant - // folders. Data center folders can contain child data center folders and - // Datacenter managed objects. Datacenter objects contain virtual machine, - // compute resource, network entity, and datastore folders. - case mo.Datacenter: - name = m.Name - - // { "vim.Virtualmachine", "vim.VirtualApp" } - Identifies a virtual machine - // folder. A virtual machine folder may contain child virtual machine - // folders. It also can contain VirtualMachine managed objects, templates, - // and VirtualApp managed objects. - case mo.VirtualMachine: - name = m.Name - case mo.VirtualApp: - name = m.Name - - // { "vim.ComputeResource" } - Identifies a compute resource - // folder, which contains child compute resource folders and ComputeResource - // hierarchies. - case mo.ComputeResource: - name = m.Name - case mo.ClusterComputeResource: - name = m.Name - case mo.HostSystem: - name = m.Name - case mo.ResourcePool: - name = m.Name - - // { "vim.Network" } - Identifies a network entity folder. - // Network entity folders on a vCenter Server can contain Network, - // DistributedVirtualSwitch, and DistributedVirtualPortgroup managed objects. - // Network entity folders on an ESXi host can contain only Network objects. - case mo.Network: - name = m.Name - case mo.DistributedVirtualSwitch: - name = m.Name - case mo.DistributedVirtualPortgroup: - name = m.Name - case mo.VmwareDistributedVirtualSwitch: - name = m.Name - - // { "vim.Datastore" } - Identifies a datastore folder. Datastore folders can - // contain child datastore folders and Datastore managed objects. - case mo.Datastore: - name = m.Name - - default: - panic("not implemented for type " + reflect.TypeOf(r).String()) - } - - e := Element{ - Path: path.Join(prefix, name), - Object: r, - } - - return e -} - -type Lister struct { - Collector *property.Collector - Reference types.ManagedObjectReference - Prefix string - All bool -} - -func traversable(ref types.ManagedObjectReference) bool { - switch ref.Type { - case "Folder": - case "Datacenter": - case "ComputeResource", "ClusterComputeResource": - // Treat ComputeResource and ClusterComputeResource as one and the same. - // It doesn't matter from the perspective of the lister. - case "HostSystem": - case "VirtualApp": - case "StoragePod": - default: - return false - } - - return true -} - -func (l Lister) retrieveProperties(ctx context.Context, req types.RetrieveProperties, dst *[]interface{}) error { - res, err := l.Collector.RetrieveProperties(ctx, req) - if err != nil { - return err - } - - // Instead of using mo.LoadRetrievePropertiesResponse, use a custom loop to - // iterate over the results and ignore entries that have properties that - // could not be retrieved (a non-empty `missingSet` property). Since the - // returned objects are enumerated by vSphere in the first place, any object - // that has a non-empty `missingSet` property is indicative of a race - // condition in vSphere where the object was enumerated initially, but was - // removed before its properties could be collected. - for _, p := range res.Returnval { - v, err := mo.ObjectContentToType(p) - if err != nil { - // Ignore fault if it is ManagedObjectNotFound - if soap.IsVimFault(err) { - switch soap.ToVimFault(err).(type) { - case *types.ManagedObjectNotFound: - continue - } - } - - return err - } - - *dst = append(*dst, v) - } - - return nil -} - -func (l Lister) List(ctx context.Context) ([]Element, error) { - switch l.Reference.Type { - case "Folder", "StoragePod": - return l.ListFolder(ctx) - case "Datacenter": - return l.ListDatacenter(ctx) - case "ComputeResource", "ClusterComputeResource": - // Treat ComputeResource and ClusterComputeResource as one and the same. - // It doesn't matter from the perspective of the lister. - return l.ListComputeResource(ctx) - case "ResourcePool": - return l.ListResourcePool(ctx) - case "HostSystem": - return l.ListHostSystem(ctx) - case "VirtualApp": - return l.ListVirtualApp(ctx) - default: - return nil, fmt.Errorf("cannot traverse type " + l.Reference.Type) - } -} - -func (l Lister) ListFolder(ctx context.Context) ([]Element, error) { - spec := types.PropertyFilterSpec{ - ObjectSet: []types.ObjectSpec{ - { - Obj: l.Reference, - SelectSet: []types.BaseSelectionSpec{ - &types.TraversalSpec{ - Path: "childEntity", - Skip: types.NewBool(false), - Type: "Folder", - }, - }, - Skip: types.NewBool(true), - }, - }, - } - - // Retrieve all objects that we can deal with - childTypes := []string{ - "Folder", - "Datacenter", - "VirtualApp", - "VirtualMachine", - "Network", - "ComputeResource", - "ClusterComputeResource", - "Datastore", - "DistributedVirtualSwitch", - } - - for _, t := range childTypes { - pspec := types.PropertySpec{ - Type: t, - } - - if l.All { - pspec.All = types.NewBool(true) - } else { - pspec.PathSet = []string{"name"} - - // Additional basic properties. - switch t { - case "ComputeResource", "ClusterComputeResource": - // The ComputeResource and ClusterComputeResource are dereferenced in - // the ResourcePoolFlag. Make sure they always have their resourcePool - // field populated. - pspec.PathSet = append(pspec.PathSet, "resourcePool") - } - } - - spec.PropSet = append(spec.PropSet, pspec) - } - - req := types.RetrieveProperties{ - SpecSet: []types.PropertyFilterSpec{spec}, - } - - var dst []interface{} - - err := l.retrieveProperties(ctx, req, &dst) - if err != nil { - return nil, err - } - - es := []Element{} - for _, v := range dst { - es = append(es, ToElement(v.(mo.Reference), l.Prefix)) - } - - return es, nil -} - -func (l Lister) ListDatacenter(ctx context.Context) ([]Element, error) { - ospec := types.ObjectSpec{ - Obj: l.Reference, - Skip: types.NewBool(true), - } - - // Include every datastore folder in the select set - fields := []string{ - "vmFolder", - "hostFolder", - "datastoreFolder", - "networkFolder", - } - - for _, f := range fields { - tspec := types.TraversalSpec{ - Path: f, - Skip: types.NewBool(false), - Type: "Datacenter", - } - - ospec.SelectSet = append(ospec.SelectSet, &tspec) - } - - pspec := types.PropertySpec{ - Type: "Folder", - } - - if l.All { - pspec.All = types.NewBool(true) - } else { - pspec.PathSet = []string{"name"} - } - - req := types.RetrieveProperties{ - SpecSet: []types.PropertyFilterSpec{ - { - ObjectSet: []types.ObjectSpec{ospec}, - PropSet: []types.PropertySpec{pspec}, - }, - }, - } - - var dst []interface{} - - err := l.retrieveProperties(ctx, req, &dst) - if err != nil { - return nil, err - } - - es := []Element{} - for _, v := range dst { - es = append(es, ToElement(v.(mo.Reference), l.Prefix)) - } - - return es, nil -} - -func (l Lister) ListComputeResource(ctx context.Context) ([]Element, error) { - ospec := types.ObjectSpec{ - Obj: l.Reference, - Skip: types.NewBool(true), - } - - fields := []string{ - "host", - "resourcePool", - } - - for _, f := range fields { - tspec := types.TraversalSpec{ - Path: f, - Skip: types.NewBool(false), - Type: "ComputeResource", - } - - ospec.SelectSet = append(ospec.SelectSet, &tspec) - } - - childTypes := []string{ - "HostSystem", - "ResourcePool", - } - - var pspecs []types.PropertySpec - for _, t := range childTypes { - pspec := types.PropertySpec{ - Type: t, - } - - if l.All { - pspec.All = types.NewBool(true) - } else { - pspec.PathSet = []string{"name"} - } - - pspecs = append(pspecs, pspec) - } - - req := types.RetrieveProperties{ - SpecSet: []types.PropertyFilterSpec{ - { - ObjectSet: []types.ObjectSpec{ospec}, - PropSet: pspecs, - }, - }, - } - - var dst []interface{} - - err := l.retrieveProperties(ctx, req, &dst) - if err != nil { - return nil, err - } - - es := []Element{} - for _, v := range dst { - es = append(es, ToElement(v.(mo.Reference), l.Prefix)) - } - - return es, nil -} - -func (l Lister) ListResourcePool(ctx context.Context) ([]Element, error) { - ospec := types.ObjectSpec{ - Obj: l.Reference, - Skip: types.NewBool(true), - } - - fields := []string{ - "resourcePool", - } - - for _, f := range fields { - tspec := types.TraversalSpec{ - Path: f, - Skip: types.NewBool(false), - Type: "ResourcePool", - } - - ospec.SelectSet = append(ospec.SelectSet, &tspec) - } - - childTypes := []string{ - "ResourcePool", - } - - var pspecs []types.PropertySpec - for _, t := range childTypes { - pspec := types.PropertySpec{ - Type: t, - } - - if l.All { - pspec.All = types.NewBool(true) - } else { - pspec.PathSet = []string{"name"} - } - - pspecs = append(pspecs, pspec) - } - - req := types.RetrieveProperties{ - SpecSet: []types.PropertyFilterSpec{ - { - ObjectSet: []types.ObjectSpec{ospec}, - PropSet: pspecs, - }, - }, - } - - var dst []interface{} - - err := l.retrieveProperties(ctx, req, &dst) - if err != nil { - return nil, err - } - - es := []Element{} - for _, v := range dst { - es = append(es, ToElement(v.(mo.Reference), l.Prefix)) - } - - return es, nil -} - -func (l Lister) ListHostSystem(ctx context.Context) ([]Element, error) { - ospec := types.ObjectSpec{ - Obj: l.Reference, - Skip: types.NewBool(true), - } - - fields := []string{ - "datastore", - "network", - "vm", - } - - for _, f := range fields { - tspec := types.TraversalSpec{ - Path: f, - Skip: types.NewBool(false), - Type: "HostSystem", - } - - ospec.SelectSet = append(ospec.SelectSet, &tspec) - } - - childTypes := []string{ - "Datastore", - "Network", - "VirtualMachine", - } - - var pspecs []types.PropertySpec - for _, t := range childTypes { - pspec := types.PropertySpec{ - Type: t, - } - - if l.All { - pspec.All = types.NewBool(true) - } else { - pspec.PathSet = []string{"name"} - } - - pspecs = append(pspecs, pspec) - } - - req := types.RetrieveProperties{ - SpecSet: []types.PropertyFilterSpec{ - { - ObjectSet: []types.ObjectSpec{ospec}, - PropSet: pspecs, - }, - }, - } - - var dst []interface{} - - err := l.retrieveProperties(ctx, req, &dst) - if err != nil { - return nil, err - } - - es := []Element{} - for _, v := range dst { - es = append(es, ToElement(v.(mo.Reference), l.Prefix)) - } - - return es, nil -} - -func (l Lister) ListVirtualApp(ctx context.Context) ([]Element, error) { - ospec := types.ObjectSpec{ - Obj: l.Reference, - Skip: types.NewBool(true), - } - - fields := []string{ - "resourcePool", - "vm", - } - - for _, f := range fields { - tspec := types.TraversalSpec{ - Path: f, - Skip: types.NewBool(false), - Type: "VirtualApp", - } - - ospec.SelectSet = append(ospec.SelectSet, &tspec) - } - - childTypes := []string{ - "ResourcePool", - "VirtualMachine", - } - - var pspecs []types.PropertySpec - for _, t := range childTypes { - pspec := types.PropertySpec{ - Type: t, - } - - if l.All { - pspec.All = types.NewBool(true) - } else { - pspec.PathSet = []string{"name"} - } - - pspecs = append(pspecs, pspec) - } - - req := types.RetrieveProperties{ - SpecSet: []types.PropertyFilterSpec{ - { - ObjectSet: []types.ObjectSpec{ospec}, - PropSet: pspecs, - }, - }, - } - - var dst []interface{} - - err := l.retrieveProperties(ctx, req, &dst) - if err != nil { - return nil, err - } - - es := []Element{} - for _, v := range dst { - es = append(es, ToElement(v.(mo.Reference), l.Prefix)) - } - - return es, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/list/path.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/list/path.go deleted file mode 100644 index f3a10652..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/list/path.go +++ /dev/null @@ -1,44 +0,0 @@ -/* -Copyright (c) 2014 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package list - -import ( - "path" - "strings" -) - -func ToParts(p string) []string { - p = path.Clean(p) - if p == "/" { - return []string{} - } - - if len(p) > 0 { - // Prefix ./ if relative - if p[0] != '/' && p[0] != '.' { - p = "./" + p - } - } - - ps := strings.Split(p, "/") - if ps[0] == "" { - // Start at root - ps = ps[1:] - } - - return ps -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/list/recurser.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/list/recurser.go deleted file mode 100644 index 4b78415b..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/list/recurser.go +++ /dev/null @@ -1,97 +0,0 @@ -/* -Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package list - -import ( - "path" - "path/filepath" - - "github.com/vmware/govmomi/property" - "golang.org/x/net/context" -) - -type Recurser struct { - Collector *property.Collector - - // All configures the recurses to fetch complete objects for leaf nodes. - All bool - - // TraverseLeafs configures the Recurser to traverse traversable leaf nodes. - // This is typically set to true when used from the ls command, where listing - // a folder means listing its contents. This is typically set to false for - // commands that take managed entities that are not folders as input. - TraverseLeafs bool -} - -func (r Recurser) Recurse(ctx context.Context, root Element, parts []string) ([]Element, error) { - if len(parts) == 0 { - // Include non-traversable leaf elements in result. For example, consider - // the pattern "./vm/my-vm-*", where the pattern should match the VMs and - // not try to traverse them. - // - // Include traversable leaf elements in result, if the TraverseLeafs - // field is set to false. - // - if !traversable(root.Object.Reference()) || !r.TraverseLeafs { - return []Element{root}, nil - } - } - - k := Lister{ - Collector: r.Collector, - Reference: root.Object.Reference(), - Prefix: root.Path, - } - - if r.All && len(parts) < 2 { - k.All = true - } - - in, err := k.List(ctx) - if err != nil { - return nil, err - } - - // This folder is a leaf as far as the glob goes. - if len(parts) == 0 { - return in, nil - } - - pattern := parts[0] - parts = parts[1:] - - var out []Element - for _, e := range in { - matched, err := filepath.Match(pattern, path.Base(e.Path)) - if err != nil { - return nil, err - } - - if !matched { - continue - } - - nres, err := r.Recurse(ctx, e, parts) - if err != nil { - return nil, err - } - - out = append(out, nres...) - } - - return out, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/authorization_manager.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/authorization_manager.go deleted file mode 100644 index 868db4f7..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/authorization_manager.go +++ /dev/null @@ -1,108 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/mo" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type AuthorizationManager struct { - Common -} - -func NewAuthorizationManager(c *vim25.Client) *AuthorizationManager { - m := AuthorizationManager{ - Common: NewCommon(c, *c.ServiceContent.AuthorizationManager), - } - - return &m -} - -type AuthorizationRoleList []types.AuthorizationRole - -func (l AuthorizationRoleList) ById(id int32) *types.AuthorizationRole { - for _, role := range l { - if role.RoleId == id { - return &role - } - } - - return nil -} - -func (l AuthorizationRoleList) ByName(name string) *types.AuthorizationRole { - for _, role := range l { - if role.Name == name { - return &role - } - } - - return nil -} - -func (m AuthorizationManager) RoleList(ctx context.Context) (AuthorizationRoleList, error) { - var am mo.AuthorizationManager - - err := m.Properties(ctx, m.Reference(), []string{"roleList"}, &am) - if err != nil { - return nil, err - } - - return AuthorizationRoleList(am.RoleList), nil -} - -func (m AuthorizationManager) RetrieveEntityPermissions(ctx context.Context, entity types.ManagedObjectReference, inherited bool) ([]types.Permission, error) { - req := types.RetrieveEntityPermissions{ - This: m.Reference(), - Entity: entity, - Inherited: inherited, - } - - res, err := methods.RetrieveEntityPermissions(ctx, m.Client(), &req) - if err != nil { - return nil, err - } - - return res.Returnval, nil -} - -func (m AuthorizationManager) RemoveEntityPermission(ctx context.Context, entity types.ManagedObjectReference, user string, isGroup bool) error { - req := types.RemoveEntityPermission{ - This: m.Reference(), - Entity: entity, - User: user, - IsGroup: isGroup, - } - - _, err := methods.RemoveEntityPermission(ctx, m.Client(), &req) - return err -} - -func (m AuthorizationManager) SetEntityPermissions(ctx context.Context, entity types.ManagedObjectReference, permission []types.Permission) error { - req := types.SetEntityPermissions{ - This: m.Reference(), - Entity: entity, - Permission: permission, - } - - _, err := methods.SetEntityPermissions(ctx, m.Client(), &req) - return err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/cluster_compute_resource.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/cluster_compute_resource.go deleted file mode 100644 index 3cd52f70..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/cluster_compute_resource.go +++ /dev/null @@ -1,87 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type ClusterComputeResource struct { - ComputeResource - - InventoryPath string -} - -func NewClusterComputeResource(c *vim25.Client, ref types.ManagedObjectReference) *ClusterComputeResource { - return &ClusterComputeResource{ - ComputeResource: *NewComputeResource(c, ref), - } -} - -func (c ClusterComputeResource) ReconfigureCluster(ctx context.Context, spec types.ClusterConfigSpec) (*Task, error) { - req := types.ReconfigureCluster_Task{ - This: c.Reference(), - Spec: spec, - Modify: true, - } - - res, err := methods.ReconfigureCluster_Task(ctx, c.c, &req) - if err != nil { - return nil, err - } - - return NewTask(c.c, res.Returnval), nil -} - -func (c ClusterComputeResource) AddHost(ctx context.Context, spec types.HostConnectSpec, asConnected bool, license *string, resourcePool *types.ManagedObjectReference) (*Task, error) { - req := types.AddHost_Task{ - This: c.Reference(), - Spec: spec, - AsConnected: asConnected, - } - - if license != nil { - req.License = *license - } - - if resourcePool != nil { - req.ResourcePool = resourcePool - } - - res, err := methods.AddHost_Task(ctx, c.c, &req) - if err != nil { - return nil, err - } - - return NewTask(c.c, res.Returnval), nil -} - -func (c ClusterComputeResource) Destroy(ctx context.Context) (*Task, error) { - req := types.Destroy_Task{ - This: c.Reference(), - } - - res, err := methods.Destroy_Task(ctx, c.c, &req) - if err != nil { - return nil, err - } - - return NewTask(c.c, res.Returnval), nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/common.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/common.go deleted file mode 100644 index 97972849..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/common.go +++ /dev/null @@ -1,85 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "errors" - "fmt" - - "github.com/vmware/govmomi/property" - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -var ( - ErrNotSupported = errors.New("not supported (vCenter only)") -) - -// Common contains the fields and functions common to all objects. -type Common struct { - c *vim25.Client - r types.ManagedObjectReference -} - -func (c Common) String() string { - return fmt.Sprintf("%v", c.Reference()) -} - -func NewCommon(c *vim25.Client, r types.ManagedObjectReference) Common { - return Common{c: c, r: r} -} - -func (c Common) Reference() types.ManagedObjectReference { - return c.r -} - -func (c Common) Client() *vim25.Client { - return c.c -} - -func (c Common) Properties(ctx context.Context, r types.ManagedObjectReference, ps []string, dst interface{}) error { - return property.DefaultCollector(c.c).RetrieveOne(ctx, r, ps, dst) -} - -func (c Common) Destroy(ctx context.Context) (*Task, error) { - req := types.Destroy_Task{ - This: c.Reference(), - } - - res, err := methods.Destroy_Task(ctx, c.c, &req) - if err != nil { - return nil, err - } - - return NewTask(c.c, res.Returnval), nil -} - -func (c Common) Rename(ctx context.Context, name string) (*Task, error) { - req := types.Rename_Task{ - This: c.Reference(), - NewName: name, - } - - res, err := methods.Rename_Task(ctx, c.c, &req) - if err != nil { - return nil, err - } - - return NewTask(c.c, res.Returnval), nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/compute_resource.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/compute_resource.go deleted file mode 100644 index 328c2e07..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/compute_resource.go +++ /dev/null @@ -1,126 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "path" - - "github.com/vmware/govmomi/property" - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/mo" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type ComputeResource struct { - Common - - InventoryPath string -} - -func NewComputeResource(c *vim25.Client, ref types.ManagedObjectReference) *ComputeResource { - return &ComputeResource{ - Common: NewCommon(c, ref), - } -} - -func (c ComputeResource) Hosts(ctx context.Context) ([]*HostSystem, error) { - var cr mo.ComputeResource - - err := c.Properties(ctx, c.Reference(), []string{"host"}, &cr) - if err != nil { - return nil, err - } - - if len(cr.Host) == 0 { - return nil, nil - } - - var hs []mo.HostSystem - pc := property.DefaultCollector(c.Client()) - err = pc.Retrieve(ctx, cr.Host, []string{"name"}, &hs) - if err != nil { - return nil, err - } - - var hosts []*HostSystem - - for _, h := range hs { - host := NewHostSystem(c.Client(), h.Reference()) - host.InventoryPath = path.Join(c.InventoryPath, h.Name) - hosts = append(hosts, host) - } - - return hosts, nil -} - -func (c ComputeResource) Datastores(ctx context.Context) ([]*Datastore, error) { - var cr mo.ComputeResource - - err := c.Properties(ctx, c.Reference(), []string{"datastore"}, &cr) - if err != nil { - return nil, err - } - - var dss []*Datastore - for _, ref := range cr.Datastore { - ds := NewDatastore(c.c, ref) - dss = append(dss, ds) - } - - return dss, nil -} - -func (c ComputeResource) ResourcePool(ctx context.Context) (*ResourcePool, error) { - var cr mo.ComputeResource - - err := c.Properties(ctx, c.Reference(), []string{"resourcePool"}, &cr) - if err != nil { - return nil, err - } - - return NewResourcePool(c.c, *cr.ResourcePool), nil -} - -func (c ComputeResource) Reconfigure(ctx context.Context, spec types.BaseComputeResourceConfigSpec, modify bool) (*Task, error) { - req := types.ReconfigureComputeResource_Task{ - This: c.Reference(), - Spec: spec, - Modify: modify, - } - - res, err := methods.ReconfigureComputeResource_Task(ctx, c.c, &req) - if err != nil { - return nil, err - } - - return NewTask(c.c, res.Returnval), nil -} - -func (c ComputeResource) Destroy(ctx context.Context) (*Task, error) { - req := types.Destroy_Task{ - This: c.Reference(), - } - - res, err := methods.Destroy_Task(ctx, c.c, &req) - if err != nil { - return nil, err - } - - return NewTask(c.c, res.Returnval), nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/custom_fields_manager.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/custom_fields_manager.go deleted file mode 100644 index ce9abf08..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/custom_fields_manager.go +++ /dev/null @@ -1,135 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "errors" - "strconv" - - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/mo" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -var ( - ErrKeyNameNotFound = errors.New("key name not found") -) - -type CustomFieldsManager struct { - Common -} - -// GetCustomFieldsManager wraps NewCustomFieldsManager, returning ErrNotSupported -// when the client is not connected to a vCenter instance. -func GetCustomFieldsManager(c *vim25.Client) (*CustomFieldsManager, error) { - if c.ServiceContent.CustomFieldsManager == nil { - return nil, ErrNotSupported - } - return NewCustomFieldsManager(c), nil -} - -func NewCustomFieldsManager(c *vim25.Client) *CustomFieldsManager { - m := CustomFieldsManager{ - Common: NewCommon(c, *c.ServiceContent.CustomFieldsManager), - } - - return &m -} - -func (m CustomFieldsManager) Add(ctx context.Context, name string, moType string, fieldDefPolicy *types.PrivilegePolicyDef, fieldPolicy *types.PrivilegePolicyDef) (*types.CustomFieldDef, error) { - req := types.AddCustomFieldDef{ - This: m.Reference(), - Name: name, - MoType: moType, - FieldDefPolicy: fieldDefPolicy, - FieldPolicy: fieldPolicy, - } - - res, err := methods.AddCustomFieldDef(ctx, m.c, &req) - if err != nil { - return nil, err - } - - return &res.Returnval, nil -} - -func (m CustomFieldsManager) Remove(ctx context.Context, key int32) error { - req := types.RemoveCustomFieldDef{ - This: m.Reference(), - Key: key, - } - - _, err := methods.RemoveCustomFieldDef(ctx, m.c, &req) - return err -} - -func (m CustomFieldsManager) Rename(ctx context.Context, key int32, name string) error { - req := types.RenameCustomFieldDef{ - This: m.Reference(), - Key: key, - Name: name, - } - - _, err := methods.RenameCustomFieldDef(ctx, m.c, &req) - return err -} - -func (m CustomFieldsManager) Set(ctx context.Context, entity types.ManagedObjectReference, key int32, value string) error { - req := types.SetField{ - This: m.Reference(), - Entity: entity, - Key: key, - Value: value, - } - - _, err := methods.SetField(ctx, m.c, &req) - return err -} - -func (m CustomFieldsManager) Field(ctx context.Context) ([]types.CustomFieldDef, error) { - var fm mo.CustomFieldsManager - - err := m.Properties(ctx, m.Reference(), []string{"field"}, &fm) - if err != nil { - return nil, err - } - - return fm.Field, nil -} - -func (m CustomFieldsManager) FindKey(ctx context.Context, key string) (int32, error) { - field, err := m.Field(ctx) - if err != nil { - return -1, err - } - - for _, def := range field { - if def.Name == key { - return def.Key, nil - } - } - - k, err := strconv.Atoi(key) - if err == nil { - // assume literal int key - return int32(k), nil - } - - return -1, ErrKeyNameNotFound -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/customization_spec_manager.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/customization_spec_manager.go deleted file mode 100644 index aebe73e8..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/customization_spec_manager.go +++ /dev/null @@ -1,165 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type CustomizationSpecManager struct { - Common -} - -func NewCustomizationSpecManager(c *vim25.Client) *CustomizationSpecManager { - cs := CustomizationSpecManager{ - Common: NewCommon(c, *c.ServiceContent.CustomizationSpecManager), - } - - return &cs -} - -func (cs CustomizationSpecManager) DoesCustomizationSpecExist(ctx context.Context, name string) (bool, error) { - req := types.DoesCustomizationSpecExist{ - This: cs.Reference(), - Name: name, - } - - res, err := methods.DoesCustomizationSpecExist(ctx, cs.c, &req) - - if err != nil { - return false, err - } - - return res.Returnval, nil -} - -func (cs CustomizationSpecManager) GetCustomizationSpec(ctx context.Context, name string) (*types.CustomizationSpecItem, error) { - req := types.GetCustomizationSpec{ - This: cs.Reference(), - Name: name, - } - - res, err := methods.GetCustomizationSpec(ctx, cs.c, &req) - - if err != nil { - return nil, err - } - - return &res.Returnval, nil -} - -func (cs CustomizationSpecManager) CreateCustomizationSpec(ctx context.Context, item types.CustomizationSpecItem) error { - req := types.CreateCustomizationSpec{ - This: cs.Reference(), - Item: item, - } - - _, err := methods.CreateCustomizationSpec(ctx, cs.c, &req) - if err != nil { - return err - } - - return nil -} - -func (cs CustomizationSpecManager) OverwriteCustomizationSpec(ctx context.Context, item types.CustomizationSpecItem) error { - req := types.OverwriteCustomizationSpec{ - This: cs.Reference(), - Item: item, - } - - _, err := methods.OverwriteCustomizationSpec(ctx, cs.c, &req) - if err != nil { - return err - } - - return nil -} - -func (cs CustomizationSpecManager) DeleteCustomizationSpec(ctx context.Context, name string) error { - req := types.DeleteCustomizationSpec{ - This: cs.Reference(), - Name: name, - } - - _, err := methods.DeleteCustomizationSpec(ctx, cs.c, &req) - if err != nil { - return err - } - - return nil -} - -func (cs CustomizationSpecManager) DuplicateCustomizationSpec(ctx context.Context, name string, newName string) error { - req := types.DuplicateCustomizationSpec{ - This: cs.Reference(), - Name: name, - NewName: newName, - } - - _, err := methods.DuplicateCustomizationSpec(ctx, cs.c, &req) - if err != nil { - return err - } - - return nil -} - -func (cs CustomizationSpecManager) RenameCustomizationSpec(ctx context.Context, name string, newName string) error { - req := types.RenameCustomizationSpec{ - This: cs.Reference(), - Name: name, - NewName: newName, - } - - _, err := methods.RenameCustomizationSpec(ctx, cs.c, &req) - if err != nil { - return err - } - - return nil -} - -func (cs CustomizationSpecManager) CustomizationSpecItemToXml(ctx context.Context, item types.CustomizationSpecItem) (string, error) { - req := types.CustomizationSpecItemToXml{ - This: cs.Reference(), - Item: item, - } - - res, err := methods.CustomizationSpecItemToXml(ctx, cs.c, &req) - if err != nil { - return "", err - } - - return res.Returnval, nil -} - -func (cs CustomizationSpecManager) XmlToCustomizationSpecItem(ctx context.Context, xml string) (*types.CustomizationSpecItem, error) { - req := types.XmlToCustomizationSpecItem{ - This: cs.Reference(), - SpecItemXml: xml, - } - - res, err := methods.XmlToCustomizationSpecItem(ctx, cs.c, &req) - if err != nil { - return nil, err - } - return &res.Returnval, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/datacenter.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/datacenter.go deleted file mode 100644 index fa522fb0..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/datacenter.go +++ /dev/null @@ -1,90 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "fmt" - - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/mo" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type DatacenterFolders struct { - VmFolder *Folder - HostFolder *Folder - DatastoreFolder *Folder - NetworkFolder *Folder -} - -type Datacenter struct { - Common -} - -func NewDatacenter(c *vim25.Client, ref types.ManagedObjectReference) *Datacenter { - return &Datacenter{ - Common: NewCommon(c, ref), - } -} - -func (d *Datacenter) Folders(ctx context.Context) (*DatacenterFolders, error) { - var md mo.Datacenter - - ps := []string{"name", "vmFolder", "hostFolder", "datastoreFolder", "networkFolder"} - err := d.Properties(ctx, d.Reference(), ps, &md) - if err != nil { - return nil, err - } - - df := &DatacenterFolders{ - VmFolder: NewFolder(d.c, md.VmFolder), - HostFolder: NewFolder(d.c, md.HostFolder), - DatastoreFolder: NewFolder(d.c, md.DatastoreFolder), - NetworkFolder: NewFolder(d.c, md.NetworkFolder), - } - - paths := []struct { - name string - path *string - }{ - {"vm", &df.VmFolder.InventoryPath}, - {"host", &df.HostFolder.InventoryPath}, - {"datastore", &df.DatastoreFolder.InventoryPath}, - {"network", &df.NetworkFolder.InventoryPath}, - } - - for _, p := range paths { - *p.path = fmt.Sprintf("/%s/%s", md.Name, p.name) - } - - return df, nil -} - -func (d Datacenter) Destroy(ctx context.Context) (*Task, error) { - req := types.Destroy_Task{ - This: d.Reference(), - } - - res, err := methods.Destroy_Task(ctx, d.c, &req) - if err != nil { - return nil, err - } - - return NewTask(d.c, res.Returnval), nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/datastore.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/datastore.go deleted file mode 100644 index 123dde8a..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/datastore.go +++ /dev/null @@ -1,362 +0,0 @@ -/* -Copyright (c) 2015-2016 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "fmt" - "io" - "math/rand" - "path" - "strings" - - "net/http" - "net/url" - - "github.com/vmware/govmomi/property" - "github.com/vmware/govmomi/session" - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/mo" - "github.com/vmware/govmomi/vim25/soap" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -// DatastoreNoSuchDirectoryError is returned when a directory could not be found. -type DatastoreNoSuchDirectoryError struct { - verb string - subject string -} - -func (e DatastoreNoSuchDirectoryError) Error() string { - return fmt.Sprintf("cannot %s '%s': No such directory", e.verb, e.subject) -} - -// DatastoreNoSuchFileError is returned when a file could not be found. -type DatastoreNoSuchFileError struct { - verb string - subject string -} - -func (e DatastoreNoSuchFileError) Error() string { - return fmt.Sprintf("cannot %s '%s': No such file", e.verb, e.subject) -} - -type Datastore struct { - Common - - InventoryPath string -} - -func NewDatastore(c *vim25.Client, ref types.ManagedObjectReference) *Datastore { - return &Datastore{ - Common: NewCommon(c, ref), - } -} - -func (d Datastore) Name() string { - return path.Base(d.InventoryPath) -} - -func (d Datastore) Path(path string) string { - name := d.Name() - if name == "" { - panic("expected non-empty name") - } - - return fmt.Sprintf("[%s] %s", name, path) -} - -// URL for datastore access over HTTP -func (d Datastore) URL(ctx context.Context, dc *Datacenter, path string) (*url.URL, error) { - var mdc mo.Datacenter - if err := dc.Properties(ctx, dc.Reference(), []string{"name"}, &mdc); err != nil { - return nil, err - } - - var mds mo.Datastore - if err := d.Properties(ctx, d.Reference(), []string{"name"}, &mds); err != nil { - return nil, err - } - - u := d.c.URL() - - return &url.URL{ - Scheme: u.Scheme, - Host: u.Host, - Path: fmt.Sprintf("/folder/%s", path), - RawQuery: url.Values{ - "dcPath": []string{mdc.Name}, - "dsName": []string{mds.Name}, - }.Encode(), - }, nil -} - -func (d Datastore) Browser(ctx context.Context) (*HostDatastoreBrowser, error) { - var do mo.Datastore - - err := d.Properties(ctx, d.Reference(), []string{"browser"}, &do) - if err != nil { - return nil, err - } - - return NewHostDatastoreBrowser(d.c, do.Browser), nil -} - -// ServiceTicket obtains a ticket via AcquireGenericServiceTicket and returns it an http.Cookie with the url.URL -// that can be used along with the ticket cookie to access the given path. -func (d Datastore) ServiceTicket(ctx context.Context, path string, method string) (*url.URL, *http.Cookie, error) { - // We are uploading to an ESX host - u := &url.URL{ - Scheme: d.c.URL().Scheme, - Host: d.c.URL().Host, - Path: fmt.Sprintf("/folder/%s", path), - RawQuery: url.Values{ - "dsName": []string{d.Name()}, - }.Encode(), - } - - // If connected to VC, the ticket request must be for an ESX host. - if d.c.IsVC() { - hosts, err := d.AttachedHosts(ctx) - if err != nil { - return nil, nil, err - } - - if len(hosts) == 0 { - return nil, nil, fmt.Errorf("no hosts attached to datastore %#v", d.Reference()) - } - - // Pick a random attached host - host := hosts[rand.Intn(len(hosts))] - name, err := host.Name(ctx) - if err != nil { - return nil, nil, err - } - u.Host = name - } - - spec := types.SessionManagerHttpServiceRequestSpec{ - Url: u.String(), - // See SessionManagerHttpServiceRequestSpecMethod enum - Method: fmt.Sprintf("http%s%s", method[0:1], strings.ToLower(method[1:])), - } - - sm := session.NewManager(d.Client()) - - ticket, err := sm.AcquireGenericServiceTicket(ctx, &spec) - if err != nil { - return nil, nil, err - } - - cookie := &http.Cookie{ - Name: "vmware_cgi_ticket", - Value: ticket.Id, - } - - return u, cookie, nil -} - -func (d Datastore) uploadTicket(ctx context.Context, path string, param *soap.Upload) (*url.URL, *soap.Upload, error) { - p := soap.DefaultUpload - if param != nil { - p = *param // copy - } - - u, ticket, err := d.ServiceTicket(ctx, path, p.Method) - if err != nil { - return nil, nil, err - } - - p.Ticket = ticket - - return u, &p, nil -} - -func (d Datastore) downloadTicket(ctx context.Context, path string, param *soap.Download) (*url.URL, *soap.Download, error) { - p := soap.DefaultDownload - if param != nil { - p = *param // copy - } - - u, ticket, err := d.ServiceTicket(ctx, path, p.Method) - if err != nil { - return nil, nil, err - } - - p.Ticket = ticket - - return u, &p, nil -} - -// Upload via soap.Upload with an http service ticket -func (d Datastore) Upload(ctx context.Context, f io.Reader, path string, param *soap.Upload) error { - u, p, err := d.uploadTicket(ctx, path, param) - if err != nil { - return err - } - return d.Client().Upload(f, u, p) -} - -// UploadFile via soap.Upload with an http service ticket -func (d Datastore) UploadFile(ctx context.Context, file string, path string, param *soap.Upload) error { - u, p, err := d.uploadTicket(ctx, path, param) - if err != nil { - return err - } - return d.Client().UploadFile(file, u, p) -} - -// Download via soap.Download with an http service ticket -func (d Datastore) Download(ctx context.Context, path string, param *soap.Download) (io.ReadCloser, int64, error) { - u, p, err := d.downloadTicket(ctx, path, param) - if err != nil { - return nil, 0, err - } - return d.Client().Download(u, p) -} - -// DownloadFile via soap.Download with an http service ticket -func (d Datastore) DownloadFile(ctx context.Context, path string, file string, param *soap.Download) error { - u, p, err := d.downloadTicket(ctx, path, param) - if err != nil { - return err - } - return d.Client().DownloadFile(file, u, p) -} - -// AttachedHosts returns hosts that have this Datastore attached, accessible and writable. -func (d Datastore) AttachedHosts(ctx context.Context) ([]*HostSystem, error) { - var ds mo.Datastore - var hosts []*HostSystem - - pc := property.DefaultCollector(d.Client()) - err := pc.RetrieveOne(ctx, d.Reference(), []string{"host"}, &ds) - if err != nil { - return nil, err - } - - mounts := make(map[types.ManagedObjectReference]types.DatastoreHostMount) - var refs []types.ManagedObjectReference - for _, host := range ds.Host { - refs = append(refs, host.Key) - mounts[host.Key] = host - } - - var hs []mo.HostSystem - err = pc.Retrieve(ctx, refs, []string{"runtime.connectionState", "runtime.powerState"}, &hs) - if err != nil { - return nil, err - } - - for _, host := range hs { - if host.Runtime.ConnectionState == types.HostSystemConnectionStateConnected && - host.Runtime.PowerState == types.HostSystemPowerStatePoweredOn { - - mount := mounts[host.Reference()] - info := mount.MountInfo - - if *info.Mounted && *info.Accessible && info.AccessMode == string(types.HostMountModeReadWrite) { - hosts = append(hosts, NewHostSystem(d.Client(), mount.Key)) - } - } - } - - return hosts, nil -} - -// AttachedHosts returns hosts that have this Datastore attached, accessible and writable and are members of the given cluster. -func (d Datastore) AttachedClusterHosts(ctx context.Context, cluster *ComputeResource) ([]*HostSystem, error) { - var hosts []*HostSystem - - clusterHosts, err := cluster.Hosts(ctx) - if err != nil { - return nil, err - } - - attachedHosts, err := d.AttachedHosts(ctx) - if err != nil { - return nil, err - } - - refs := make(map[types.ManagedObjectReference]bool) - for _, host := range attachedHosts { - refs[host.Reference()] = true - } - - for _, host := range clusterHosts { - if refs[host.Reference()] { - hosts = append(hosts, host) - } - } - - return hosts, nil -} - -func (d Datastore) Stat(ctx context.Context, file string) (types.BaseFileInfo, error) { - b, err := d.Browser(ctx) - if err != nil { - return nil, err - } - - spec := types.HostDatastoreBrowserSearchSpec{ - Details: &types.FileQueryFlags{ - FileType: true, - FileSize: true, - Modification: true, - FileOwner: types.NewBool(true), - }, - MatchPattern: []string{path.Base(file)}, - } - - dsPath := d.Path(path.Dir(file)) - task, err := b.SearchDatastore(context.TODO(), dsPath, &spec) - if err != nil { - return nil, err - } - - info, err := task.WaitForResult(context.TODO(), nil) - if err != nil { - if info == nil || info.Error != nil { - _, ok := info.Error.Fault.(*types.FileNotFound) - if ok { - // FileNotFound means the base path doesn't exist. - return nil, DatastoreNoSuchDirectoryError{"stat", dsPath} - } - } - - return nil, err - } - - res := info.Result.(types.HostDatastoreBrowserSearchResults) - if len(res.File) == 0 { - // File doesn't exist - return nil, DatastoreNoSuchFileError{"stat", d.Path(file)} - } - - return res.File[0], nil - -} - -// Type returns the type of file system volume. -func (d Datastore) Type(ctx context.Context) (types.HostFileSystemVolumeFileSystemType, error) { - var mds mo.Datastore - - if err := d.Properties(ctx, d.Reference(), []string{"summary.type"}, &mds); err != nil { - return types.HostFileSystemVolumeFileSystemType(""), err - } - return types.HostFileSystemVolumeFileSystemType(mds.Summary.Type), nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/diagnostic_manager.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/diagnostic_manager.go deleted file mode 100644 index 2a4cf1b8..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/diagnostic_manager.go +++ /dev/null @@ -1,95 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type DiagnosticManager struct { - Common -} - -func NewDiagnosticManager(c *vim25.Client) *DiagnosticManager { - m := DiagnosticManager{ - Common: NewCommon(c, *c.ServiceContent.DiagnosticManager), - } - - return &m -} - -func (m DiagnosticManager) BrowseLog(ctx context.Context, host *HostSystem, key string, start, lines int32) (*types.DiagnosticManagerLogHeader, error) { - req := types.BrowseDiagnosticLog{ - This: m.Reference(), - Key: key, - Start: start, - Lines: lines, - } - - if host != nil { - ref := host.Reference() - req.Host = &ref - } - - res, err := methods.BrowseDiagnosticLog(ctx, m.Client(), &req) - if err != nil { - return nil, err - } - - return &res.Returnval, nil -} - -func (m DiagnosticManager) GenerateLogBundles(ctx context.Context, includeDefault bool, host []*HostSystem) (*Task, error) { - req := types.GenerateLogBundles_Task{ - This: m.Reference(), - IncludeDefault: includeDefault, - } - - if host != nil { - for _, h := range host { - req.Host = append(req.Host, h.Reference()) - } - } - - res, err := methods.GenerateLogBundles_Task(ctx, m.c, &req) - if err != nil { - return nil, err - } - - return NewTask(m.c, res.Returnval), nil -} - -func (m DiagnosticManager) QueryDescriptions(ctx context.Context, host *HostSystem) ([]types.DiagnosticManagerLogDescriptor, error) { - req := types.QueryDescriptions{ - This: m.Reference(), - } - - if host != nil { - ref := host.Reference() - req.Host = &ref - } - - res, err := methods.QueryDescriptions(ctx, m.Client(), &req) - if err != nil { - return nil, err - } - - return res.Returnval, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/distributed_virtual_portgroup.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/distributed_virtual_portgroup.go deleted file mode 100644 index 0dbd4b58..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/distributed_virtual_portgroup.go +++ /dev/null @@ -1,64 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "path" - - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/mo" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type DistributedVirtualPortgroup struct { - Common - - InventoryPath string -} - -func NewDistributedVirtualPortgroup(c *vim25.Client, ref types.ManagedObjectReference) *DistributedVirtualPortgroup { - return &DistributedVirtualPortgroup{ - Common: NewCommon(c, ref), - } -} -func (p DistributedVirtualPortgroup) Name() string { - return path.Base(p.InventoryPath) -} - -// EthernetCardBackingInfo returns the VirtualDeviceBackingInfo for this DistributedVirtualPortgroup -func (p DistributedVirtualPortgroup) EthernetCardBackingInfo(ctx context.Context) (types.BaseVirtualDeviceBackingInfo, error) { - var dvp mo.DistributedVirtualPortgroup - var dvs mo.VmwareDistributedVirtualSwitch // TODO: should be mo.BaseDistributedVirtualSwitch - - if err := p.Properties(ctx, p.Reference(), []string{"key", "config.distributedVirtualSwitch"}, &dvp); err != nil { - return nil, err - } - - if err := p.Properties(ctx, *dvp.Config.DistributedVirtualSwitch, []string{"uuid"}, &dvs); err != nil { - return nil, err - } - - backing := &types.VirtualEthernetCardDistributedVirtualPortBackingInfo{ - Port: types.DistributedVirtualSwitchPortConnection{ - PortgroupKey: dvp.Key, - SwitchUuid: dvs.Uuid, - }, - } - - return backing, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/distributed_virtual_switch.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/distributed_virtual_switch.go deleted file mode 100644 index f2fb0abe..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/distributed_virtual_switch.go +++ /dev/null @@ -1,68 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type DistributedVirtualSwitch struct { - Common - - InventoryPath string -} - -func NewDistributedVirtualSwitch(c *vim25.Client, ref types.ManagedObjectReference) *DistributedVirtualSwitch { - return &DistributedVirtualSwitch{ - Common: NewCommon(c, ref), - } -} - -func (s DistributedVirtualSwitch) EthernetCardBackingInfo(ctx context.Context) (types.BaseVirtualDeviceBackingInfo, error) { - return nil, ErrNotSupported // TODO: just to satisfy NetworkReference interface for the finder -} - -func (s DistributedVirtualSwitch) Reconfigure(ctx context.Context, spec types.BaseDVSConfigSpec) (*Task, error) { - req := types.ReconfigureDvs_Task{ - This: s.Reference(), - Spec: spec, - } - - res, err := methods.ReconfigureDvs_Task(ctx, s.Client(), &req) - if err != nil { - return nil, err - } - - return NewTask(s.Client(), res.Returnval), nil -} - -func (s DistributedVirtualSwitch) AddPortgroup(ctx context.Context, spec []types.DVPortgroupConfigSpec) (*Task, error) { - req := types.AddDVPortgroup_Task{ - This: s.Reference(), - Spec: spec, - } - - res, err := methods.AddDVPortgroup_Task(ctx, s.Client(), &req) - if err != nil { - return nil, err - } - - return NewTask(s.Client(), res.Returnval), nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/extension_manager.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/extension_manager.go deleted file mode 100644 index b7ce77c5..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/extension_manager.go +++ /dev/null @@ -1,112 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/mo" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type ExtensionManager struct { - Common -} - -// GetExtensionManager wraps NewExtensionManager, returning ErrNotSupported -// when the client is not connected to a vCenter instance. -func GetExtensionManager(c *vim25.Client) (*ExtensionManager, error) { - if c.ServiceContent.ExtensionManager == nil { - return nil, ErrNotSupported - } - return NewExtensionManager(c), nil -} - -func NewExtensionManager(c *vim25.Client) *ExtensionManager { - o := ExtensionManager{ - Common: NewCommon(c, *c.ServiceContent.ExtensionManager), - } - - return &o -} - -func (m ExtensionManager) List(ctx context.Context) ([]types.Extension, error) { - var em mo.ExtensionManager - - err := m.Properties(ctx, m.Reference(), []string{"extensionList"}, &em) - if err != nil { - return nil, err - } - - return em.ExtensionList, nil -} - -func (m ExtensionManager) Find(ctx context.Context, key string) (*types.Extension, error) { - req := types.FindExtension{ - This: m.Reference(), - ExtensionKey: key, - } - - res, err := methods.FindExtension(ctx, m.c, &req) - if err != nil { - return nil, err - } - - return res.Returnval, nil -} - -func (m ExtensionManager) Register(ctx context.Context, extension types.Extension) error { - req := types.RegisterExtension{ - This: m.Reference(), - Extension: extension, - } - - _, err := methods.RegisterExtension(ctx, m.c, &req) - return err -} - -func (m ExtensionManager) SetCertificate(ctx context.Context, key string, certificatePem string) error { - req := types.SetExtensionCertificate{ - This: m.Reference(), - ExtensionKey: key, - CertificatePem: certificatePem, - } - - _, err := methods.SetExtensionCertificate(ctx, m.c, &req) - return err -} - -func (m ExtensionManager) Unregister(ctx context.Context, key string) error { - req := types.UnregisterExtension{ - This: m.Reference(), - ExtensionKey: key, - } - - _, err := methods.UnregisterExtension(ctx, m.c, &req) - return err -} - -func (m ExtensionManager) Update(ctx context.Context, extension types.Extension) error { - req := types.UpdateExtension{ - This: m.Reference(), - Extension: extension, - } - - _, err := methods.UpdateExtension(ctx, m.c, &req) - return err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/file_manager.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/file_manager.go deleted file mode 100644 index 71647282..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/file_manager.go +++ /dev/null @@ -1,125 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type FileManager struct { - Common -} - -func NewFileManager(c *vim25.Client) *FileManager { - f := FileManager{ - Common: NewCommon(c, *c.ServiceContent.FileManager), - } - - return &f -} - -func (f FileManager) CopyDatastoreFile(ctx context.Context, sourceName string, sourceDatacenter *Datacenter, destinationName string, destinationDatacenter *Datacenter, force bool) (*Task, error) { - req := types.CopyDatastoreFile_Task{ - This: f.Reference(), - SourceName: sourceName, - DestinationName: destinationName, - Force: types.NewBool(force), - } - - if sourceDatacenter != nil { - ref := sourceDatacenter.Reference() - req.SourceDatacenter = &ref - } - - if destinationDatacenter != nil { - ref := destinationDatacenter.Reference() - req.DestinationDatacenter = &ref - } - - res, err := methods.CopyDatastoreFile_Task(ctx, f.c, &req) - if err != nil { - return nil, err - } - - return NewTask(f.c, res.Returnval), nil -} - -// DeleteDatastoreFile deletes the specified file or folder from the datastore. -func (f FileManager) DeleteDatastoreFile(ctx context.Context, name string, dc *Datacenter) (*Task, error) { - req := types.DeleteDatastoreFile_Task{ - This: f.Reference(), - Name: name, - } - - if dc != nil { - ref := dc.Reference() - req.Datacenter = &ref - } - - res, err := methods.DeleteDatastoreFile_Task(ctx, f.c, &req) - if err != nil { - return nil, err - } - - return NewTask(f.c, res.Returnval), nil -} - -// MakeDirectory creates a folder using the specified name. -func (f FileManager) MakeDirectory(ctx context.Context, name string, dc *Datacenter, createParentDirectories bool) error { - req := types.MakeDirectory{ - This: f.Reference(), - Name: name, - CreateParentDirectories: types.NewBool(createParentDirectories), - } - - if dc != nil { - ref := dc.Reference() - req.Datacenter = &ref - } - - _, err := methods.MakeDirectory(ctx, f.c, &req) - return err -} - -func (f FileManager) MoveDatastoreFile(ctx context.Context, sourceName string, sourceDatacenter *Datacenter, destinationName string, destinationDatacenter *Datacenter, force bool) (*Task, error) { - req := types.MoveDatastoreFile_Task{ - This: f.Reference(), - SourceName: sourceName, - DestinationName: destinationName, - Force: types.NewBool(force), - } - - if sourceDatacenter != nil { - ref := sourceDatacenter.Reference() - req.SourceDatacenter = &ref - } - - if destinationDatacenter != nil { - ref := destinationDatacenter.Reference() - req.DestinationDatacenter = &ref - } - - res, err := methods.MoveDatastoreFile_Task(ctx, f.c, &req) - if err != nil { - return nil, err - } - - return NewTask(f.c, res.Returnval), nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/folder.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/folder.go deleted file mode 100644 index 97c79347..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/folder.go +++ /dev/null @@ -1,214 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/mo" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type Folder struct { - Common - - InventoryPath string -} - -func NewFolder(c *vim25.Client, ref types.ManagedObjectReference) *Folder { - return &Folder{ - Common: NewCommon(c, ref), - } -} - -func NewRootFolder(c *vim25.Client) *Folder { - f := NewFolder(c, c.ServiceContent.RootFolder) - f.InventoryPath = "/" - return f -} - -func (f Folder) Children(ctx context.Context) ([]Reference, error) { - var mf mo.Folder - - err := f.Properties(ctx, f.Reference(), []string{"childEntity"}, &mf) - if err != nil { - return nil, err - } - - var rs []Reference - for _, e := range mf.ChildEntity { - if r := NewReference(f.c, e); r != nil { - rs = append(rs, r) - } - } - - return rs, nil -} - -func (f Folder) CreateDatacenter(ctx context.Context, datacenter string) (*Datacenter, error) { - req := types.CreateDatacenter{ - This: f.Reference(), - Name: datacenter, - } - - res, err := methods.CreateDatacenter(ctx, f.c, &req) - if err != nil { - return nil, err - } - - // Response will be nil if this is an ESX host that does not belong to a vCenter - if res == nil { - return nil, nil - } - - return NewDatacenter(f.c, res.Returnval), nil -} - -func (f Folder) CreateCluster(ctx context.Context, cluster string, spec types.ClusterConfigSpecEx) (*ClusterComputeResource, error) { - req := types.CreateClusterEx{ - This: f.Reference(), - Name: cluster, - Spec: spec, - } - - res, err := methods.CreateClusterEx(ctx, f.c, &req) - if err != nil { - return nil, err - } - - // Response will be nil if this is an ESX host that does not belong to a vCenter - if res == nil { - return nil, nil - } - - return NewClusterComputeResource(f.c, res.Returnval), nil -} - -func (f Folder) CreateFolder(ctx context.Context, name string) (*Folder, error) { - req := types.CreateFolder{ - This: f.Reference(), - Name: name, - } - - res, err := methods.CreateFolder(ctx, f.c, &req) - if err != nil { - return nil, err - } - - return NewFolder(f.c, res.Returnval), err -} - -func (f Folder) AddStandaloneHost(ctx context.Context, spec types.HostConnectSpec, addConnected bool, license *string, compResSpec *types.BaseComputeResourceConfigSpec) (*Task, error) { - req := types.AddStandaloneHost_Task{ - This: f.Reference(), - Spec: spec, - AddConnected: addConnected, - } - - if license != nil { - req.License = *license - } - - if compResSpec != nil { - req.CompResSpec = *compResSpec - } - - res, err := methods.AddStandaloneHost_Task(ctx, f.c, &req) - if err != nil { - return nil, err - } - - return NewTask(f.c, res.Returnval), nil -} - -func (f Folder) CreateVM(ctx context.Context, config types.VirtualMachineConfigSpec, pool *ResourcePool, host *HostSystem) (*Task, error) { - req := types.CreateVM_Task{ - This: f.Reference(), - Config: config, - Pool: pool.Reference(), - } - - if host != nil { - ref := host.Reference() - req.Host = &ref - } - - res, err := methods.CreateVM_Task(ctx, f.c, &req) - if err != nil { - return nil, err - } - - return NewTask(f.c, res.Returnval), nil -} - -func (f Folder) RegisterVM(ctx context.Context, path string, name string, asTemplate bool, pool *ResourcePool, host *HostSystem) (*Task, error) { - req := types.RegisterVM_Task{ - This: f.Reference(), - Path: path, - AsTemplate: asTemplate, - } - - if name != "" { - req.Name = name - } - - if host != nil { - ref := host.Reference() - req.Host = &ref - } - - if pool != nil { - ref := pool.Reference() - req.Pool = &ref - } - - res, err := methods.RegisterVM_Task(ctx, f.c, &req) - if err != nil { - return nil, err - } - - return NewTask(f.c, res.Returnval), nil -} - -func (f Folder) CreateDVS(ctx context.Context, spec types.DVSCreateSpec) (*Task, error) { - req := types.CreateDVS_Task{ - This: f.Reference(), - Spec: spec, - } - - res, err := methods.CreateDVS_Task(ctx, f.c, &req) - if err != nil { - return nil, err - } - - return NewTask(f.c, res.Returnval), nil -} - -func (f Folder) MoveInto(ctx context.Context, list []types.ManagedObjectReference) (*Task, error) { - req := types.MoveIntoFolder_Task{ - This: f.Reference(), - List: list, - } - - res, err := methods.MoveIntoFolder_Task(ctx, f.c, &req) - if err != nil { - return nil, err - } - - return NewTask(f.c, res.Returnval), nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/history_collector.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/history_collector.go deleted file mode 100644 index 9d9ef4c9..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/history_collector.go +++ /dev/null @@ -1,71 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type HistoryCollector struct { - Common -} - -func NewHistoryCollector(c *vim25.Client, ref types.ManagedObjectReference) *HistoryCollector { - return &HistoryCollector{ - Common: NewCommon(c, ref), - } -} - -func (h HistoryCollector) Destroy(ctx context.Context) error { - req := types.DestroyCollector{ - This: h.Reference(), - } - - _, err := methods.DestroyCollector(ctx, h.c, &req) - return err -} - -func (h HistoryCollector) Reset(ctx context.Context) error { - req := types.ResetCollector{ - This: h.Reference(), - } - - _, err := methods.ResetCollector(ctx, h.c, &req) - return err -} - -func (h HistoryCollector) Rewind(ctx context.Context) error { - req := types.RewindCollector{ - This: h.Reference(), - } - - _, err := methods.RewindCollector(ctx, h.c, &req) - return err -} - -func (h HistoryCollector) SetPageSize(ctx context.Context, maxCount int32) error { - req := types.SetCollectorPageSize{ - This: h.Reference(), - MaxCount: maxCount, - } - - _, err := methods.SetCollectorPageSize(ctx, h.c, &req) - return err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_account_manager.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_account_manager.go deleted file mode 100644 index 9505f508..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_account_manager.go +++ /dev/null @@ -1,64 +0,0 @@ -/* -Copyright (c) 2016 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type HostAccountManager struct { - Common -} - -func NewHostAccountManager(c *vim25.Client, ref types.ManagedObjectReference) *HostAccountManager { - return &HostAccountManager{ - Common: NewCommon(c, ref), - } -} - -func (m HostAccountManager) Create(ctx context.Context, user *types.HostAccountSpec) error { - req := types.CreateUser{ - This: m.Reference(), - User: user, - } - - _, err := methods.CreateUser(ctx, m.Client(), &req) - return err -} - -func (m HostAccountManager) Update(ctx context.Context, user *types.HostAccountSpec) error { - req := types.UpdateUser{ - This: m.Reference(), - User: user, - } - - _, err := methods.UpdateUser(ctx, m.Client(), &req) - return err -} - -func (m HostAccountManager) Remove(ctx context.Context, userName string) error { - req := types.RemoveUser{ - This: m.Reference(), - UserName: userName, - } - - _, err := methods.RemoveUser(ctx, m.Client(), &req) - return err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_config_manager.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_config_manager.go deleted file mode 100644 index 12327ee0..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_config_manager.go +++ /dev/null @@ -1,122 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/mo" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type HostConfigManager struct { - Common -} - -func NewHostConfigManager(c *vim25.Client, ref types.ManagedObjectReference) *HostConfigManager { - return &HostConfigManager{ - Common: NewCommon(c, ref), - } -} - -func (m HostConfigManager) DatastoreSystem(ctx context.Context) (*HostDatastoreSystem, error) { - var h mo.HostSystem - - err := m.Properties(ctx, m.Reference(), []string{"configManager.datastoreSystem"}, &h) - if err != nil { - return nil, err - } - - return NewHostDatastoreSystem(m.c, *h.ConfigManager.DatastoreSystem), nil -} - -func (m HostConfigManager) NetworkSystem(ctx context.Context) (*HostNetworkSystem, error) { - var h mo.HostSystem - - err := m.Properties(ctx, m.Reference(), []string{"configManager.networkSystem"}, &h) - if err != nil { - return nil, err - } - - return NewHostNetworkSystem(m.c, *h.ConfigManager.NetworkSystem), nil -} - -func (m HostConfigManager) FirewallSystem(ctx context.Context) (*HostFirewallSystem, error) { - var h mo.HostSystem - - err := m.Properties(ctx, m.Reference(), []string{"configManager.firewallSystem"}, &h) - if err != nil { - return nil, err - } - - return NewHostFirewallSystem(m.c, *h.ConfigManager.FirewallSystem), nil -} - -func (m HostConfigManager) StorageSystem(ctx context.Context) (*HostStorageSystem, error) { - var h mo.HostSystem - - err := m.Properties(ctx, m.Reference(), []string{"configManager.storageSystem"}, &h) - if err != nil { - return nil, err - } - - return NewHostStorageSystem(m.c, *h.ConfigManager.StorageSystem), nil -} - -func (m HostConfigManager) VirtualNicManager(ctx context.Context) (*HostVirtualNicManager, error) { - var h mo.HostSystem - - err := m.Properties(ctx, m.Reference(), []string{"configManager.virtualNicManager"}, &h) - if err != nil { - return nil, err - } - - return NewHostVirtualNicManager(m.c, *h.ConfigManager.VirtualNicManager, m.Reference()), nil -} - -func (m HostConfigManager) VsanSystem(ctx context.Context) (*HostVsanSystem, error) { - var h mo.HostSystem - - err := m.Properties(ctx, m.Reference(), []string{"configManager.vsanSystem"}, &h) - if err != nil { - return nil, err - } - - return NewHostVsanSystem(m.c, *h.ConfigManager.VsanSystem), nil -} - -func (m HostConfigManager) AccountManager(ctx context.Context) (*HostAccountManager, error) { - var h mo.HostSystem - - err := m.Properties(ctx, m.Reference(), []string{"configManager.accountManager"}, &h) - if err != nil { - return nil, err - } - - return NewHostAccountManager(m.c, *h.ConfigManager.AccountManager), nil -} - -func (m HostConfigManager) OptionManager(ctx context.Context) (*OptionManager, error) { - var h mo.HostSystem - - err := m.Properties(ctx, m.Reference(), []string{"configManager.advancedOption"}, &h) - if err != nil { - return nil, err - } - - return NewOptionManager(m.c, *h.ConfigManager.AdvancedOption), nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_datastore_browser.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_datastore_browser.go deleted file mode 100644 index a2e20566..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_datastore_browser.go +++ /dev/null @@ -1,64 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type HostDatastoreBrowser struct { - Common -} - -func NewHostDatastoreBrowser(c *vim25.Client, ref types.ManagedObjectReference) *HostDatastoreBrowser { - return &HostDatastoreBrowser{ - Common: NewCommon(c, ref), - } -} - -func (b HostDatastoreBrowser) SearchDatastore(ctx context.Context, datastorePath string, searchSpec *types.HostDatastoreBrowserSearchSpec) (*Task, error) { - req := types.SearchDatastore_Task{ - This: b.Reference(), - DatastorePath: datastorePath, - SearchSpec: searchSpec, - } - - res, err := methods.SearchDatastore_Task(ctx, b.c, &req) - if err != nil { - return nil, err - } - - return NewTask(b.c, res.Returnval), nil -} - -func (b HostDatastoreBrowser) SearchDatastoreSubFolders(ctx context.Context, datastorePath string, searchSpec *types.HostDatastoreBrowserSearchSpec) (*Task, error) { - req := types.SearchDatastoreSubFolders_Task{ - This: b.Reference(), - DatastorePath: datastorePath, - SearchSpec: searchSpec, - } - - res, err := methods.SearchDatastoreSubFolders_Task(ctx, b.c, &req) - if err != nil { - return nil, err - } - - return NewTask(b.c, res.Returnval), nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_datastore_system.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_datastore_system.go deleted file mode 100644 index 632b7d25..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_datastore_system.go +++ /dev/null @@ -1,103 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type HostDatastoreSystem struct { - Common -} - -func NewHostDatastoreSystem(c *vim25.Client, ref types.ManagedObjectReference) *HostDatastoreSystem { - return &HostDatastoreSystem{ - Common: NewCommon(c, ref), - } -} - -func (s HostDatastoreSystem) CreateNasDatastore(ctx context.Context, spec types.HostNasVolumeSpec) (*Datastore, error) { - req := types.CreateNasDatastore{ - This: s.Reference(), - Spec: spec, - } - - res, err := methods.CreateNasDatastore(ctx, s.Client(), &req) - if err != nil { - return nil, err - } - - return NewDatastore(s.Client(), res.Returnval), nil -} - -func (s HostDatastoreSystem) CreateVmfsDatastore(ctx context.Context, spec types.VmfsDatastoreCreateSpec) (*Datastore, error) { - req := types.CreateVmfsDatastore{ - This: s.Reference(), - Spec: spec, - } - - res, err := methods.CreateVmfsDatastore(ctx, s.Client(), &req) - if err != nil { - return nil, err - } - - return NewDatastore(s.Client(), res.Returnval), nil -} - -func (s HostDatastoreSystem) Remove(ctx context.Context, ds *Datastore) error { - req := types.RemoveDatastore{ - This: s.Reference(), - Datastore: ds.Reference(), - } - - _, err := methods.RemoveDatastore(ctx, s.Client(), &req) - if err != nil { - return err - } - - return nil -} - -func (s HostDatastoreSystem) QueryAvailableDisksForVmfs(ctx context.Context) ([]types.HostScsiDisk, error) { - req := types.QueryAvailableDisksForVmfs{ - This: s.Reference(), - } - - res, err := methods.QueryAvailableDisksForVmfs(ctx, s.Client(), &req) - if err != nil { - return nil, err - } - - return res.Returnval, nil -} - -func (s HostDatastoreSystem) QueryVmfsDatastoreCreateOptions(ctx context.Context, devicePath string) ([]types.VmfsDatastoreOption, error) { - req := types.QueryVmfsDatastoreCreateOptions{ - This: s.Reference(), - DevicePath: devicePath, - } - - res, err := methods.QueryVmfsDatastoreCreateOptions(ctx, s.Client(), &req) - if err != nil { - return nil, err - } - - return res.Returnval, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_firewall_system.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_firewall_system.go deleted file mode 100644 index 143f0983..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_firewall_system.go +++ /dev/null @@ -1,181 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "errors" - "fmt" - "strings" - - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/mo" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type HostFirewallSystem struct { - Common -} - -func NewHostFirewallSystem(c *vim25.Client, ref types.ManagedObjectReference) *HostFirewallSystem { - return &HostFirewallSystem{ - Common: NewCommon(c, ref), - } -} - -func (s HostFirewallSystem) DisableRuleset(ctx context.Context, id string) error { - req := types.DisableRuleset{ - This: s.Reference(), - Id: id, - } - - _, err := methods.DisableRuleset(ctx, s.c, &req) - return err -} - -func (s HostFirewallSystem) EnableRuleset(ctx context.Context, id string) error { - req := types.EnableRuleset{ - This: s.Reference(), - Id: id, - } - - _, err := methods.EnableRuleset(ctx, s.c, &req) - return err -} - -func (s HostFirewallSystem) Refresh(ctx context.Context) error { - req := types.RefreshFirewall{ - This: s.Reference(), - } - - _, err := methods.RefreshFirewall(ctx, s.c, &req) - return err -} - -func (s HostFirewallSystem) Info(ctx context.Context) (*types.HostFirewallInfo, error) { - var fs mo.HostFirewallSystem - - err := s.Properties(ctx, s.Reference(), []string{"firewallInfo"}, &fs) - if err != nil { - return nil, err - } - - return fs.FirewallInfo, nil -} - -// HostFirewallRulesetList provides helpers for a slice of types.HostFirewallRuleset -type HostFirewallRulesetList []types.HostFirewallRuleset - -// ByRule returns a HostFirewallRulesetList where Direction, PortType and Protocol are equal and Port is within range -func (l HostFirewallRulesetList) ByRule(rule types.HostFirewallRule) HostFirewallRulesetList { - var matches HostFirewallRulesetList - - for _, rs := range l { - for _, r := range rs.Rule { - if r.PortType != rule.PortType || - r.Protocol != rule.Protocol || - r.Direction != rule.Direction { - continue - } - - if r.EndPort == 0 && rule.Port == r.Port || - rule.Port >= r.Port && rule.Port <= r.EndPort { - matches = append(matches, rs) - break - } - } - } - - return matches -} - -// EnabledByRule returns a HostFirewallRulesetList with Match(rule) applied and filtered via Enabled() -// if enabled param is true, otherwise filtered via Disabled(). -// An error is returned if the resulting list is empty. -func (l HostFirewallRulesetList) EnabledByRule(rule types.HostFirewallRule, enabled bool) (HostFirewallRulesetList, error) { - var matched, skipped HostFirewallRulesetList - var matchedKind, skippedKind string - - l = l.ByRule(rule) - - if enabled { - matched = l.Enabled() - matchedKind = "enabled" - - skipped = l.Disabled() - skippedKind = "disabled" - } else { - matched = l.Disabled() - matchedKind = "disabled" - - skipped = l.Enabled() - skippedKind = "enabled" - } - - if len(matched) == 0 { - msg := fmt.Sprintf("%d %s firewall rulesets match %s %s %s %d, %d %s rulesets match", - len(matched), matchedKind, - rule.Direction, rule.Protocol, rule.PortType, rule.Port, - len(skipped), skippedKind) - - if len(skipped) != 0 { - msg += fmt.Sprintf(": %s", strings.Join(skipped.Keys(), ", ")) - } - - return nil, errors.New(msg) - } - - return matched, nil -} - -// Enabled returns a HostFirewallRulesetList with enabled rules -func (l HostFirewallRulesetList) Enabled() HostFirewallRulesetList { - var matches HostFirewallRulesetList - - for _, rs := range l { - if rs.Enabled { - matches = append(matches, rs) - } - } - - return matches -} - -// Disabled returns a HostFirewallRulesetList with disabled rules -func (l HostFirewallRulesetList) Disabled() HostFirewallRulesetList { - var matches HostFirewallRulesetList - - for _, rs := range l { - if !rs.Enabled { - matches = append(matches, rs) - } - } - - return matches -} - -// Keys returns the HostFirewallRuleset.Key for each ruleset in the list -func (l HostFirewallRulesetList) Keys() []string { - var keys []string - - for _, rs := range l { - keys = append(keys, rs.Key) - } - - return keys -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_network_system.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_network_system.go deleted file mode 100644 index 1418de42..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_network_system.go +++ /dev/null @@ -1,357 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type HostNetworkSystem struct { - Common -} - -func NewHostNetworkSystem(c *vim25.Client, ref types.ManagedObjectReference) *HostNetworkSystem { - return &HostNetworkSystem{ - Common: NewCommon(c, ref), - } -} - -// AddPortGroup wraps methods.AddPortGroup -func (o HostNetworkSystem) AddPortGroup(ctx context.Context, portgrp types.HostPortGroupSpec) error { - req := types.AddPortGroup{ - This: o.Reference(), - Portgrp: portgrp, - } - - _, err := methods.AddPortGroup(ctx, o.c, &req) - if err != nil { - return err - } - - return nil -} - -// AddServiceConsoleVirtualNic wraps methods.AddServiceConsoleVirtualNic -func (o HostNetworkSystem) AddServiceConsoleVirtualNic(ctx context.Context, portgroup string, nic types.HostVirtualNicSpec) (string, error) { - req := types.AddServiceConsoleVirtualNic{ - This: o.Reference(), - Portgroup: portgroup, - Nic: nic, - } - - res, err := methods.AddServiceConsoleVirtualNic(ctx, o.c, &req) - if err != nil { - return "", err - } - - return res.Returnval, nil -} - -// AddVirtualNic wraps methods.AddVirtualNic -func (o HostNetworkSystem) AddVirtualNic(ctx context.Context, portgroup string, nic types.HostVirtualNicSpec) (string, error) { - req := types.AddVirtualNic{ - This: o.Reference(), - Portgroup: portgroup, - Nic: nic, - } - - res, err := methods.AddVirtualNic(ctx, o.c, &req) - if err != nil { - return "", err - } - - return res.Returnval, nil -} - -// AddVirtualSwitch wraps methods.AddVirtualSwitch -func (o HostNetworkSystem) AddVirtualSwitch(ctx context.Context, vswitchName string, spec *types.HostVirtualSwitchSpec) error { - req := types.AddVirtualSwitch{ - This: o.Reference(), - VswitchName: vswitchName, - Spec: spec, - } - - _, err := methods.AddVirtualSwitch(ctx, o.c, &req) - if err != nil { - return err - } - - return nil -} - -// QueryNetworkHint wraps methods.QueryNetworkHint -func (o HostNetworkSystem) QueryNetworkHint(ctx context.Context, device []string) error { - req := types.QueryNetworkHint{ - This: o.Reference(), - Device: device, - } - - _, err := methods.QueryNetworkHint(ctx, o.c, &req) - if err != nil { - return err - } - - return nil -} - -// RefreshNetworkSystem wraps methods.RefreshNetworkSystem -func (o HostNetworkSystem) RefreshNetworkSystem(ctx context.Context) error { - req := types.RefreshNetworkSystem{ - This: o.Reference(), - } - - _, err := methods.RefreshNetworkSystem(ctx, o.c, &req) - if err != nil { - return err - } - - return nil -} - -// RemovePortGroup wraps methods.RemovePortGroup -func (o HostNetworkSystem) RemovePortGroup(ctx context.Context, pgName string) error { - req := types.RemovePortGroup{ - This: o.Reference(), - PgName: pgName, - } - - _, err := methods.RemovePortGroup(ctx, o.c, &req) - if err != nil { - return err - } - - return nil -} - -// RemoveServiceConsoleVirtualNic wraps methods.RemoveServiceConsoleVirtualNic -func (o HostNetworkSystem) RemoveServiceConsoleVirtualNic(ctx context.Context, device string) error { - req := types.RemoveServiceConsoleVirtualNic{ - This: o.Reference(), - Device: device, - } - - _, err := methods.RemoveServiceConsoleVirtualNic(ctx, o.c, &req) - if err != nil { - return err - } - - return nil -} - -// RemoveVirtualNic wraps methods.RemoveVirtualNic -func (o HostNetworkSystem) RemoveVirtualNic(ctx context.Context, device string) error { - req := types.RemoveVirtualNic{ - This: o.Reference(), - Device: device, - } - - _, err := methods.RemoveVirtualNic(ctx, o.c, &req) - if err != nil { - return err - } - - return nil -} - -// RemoveVirtualSwitch wraps methods.RemoveVirtualSwitch -func (o HostNetworkSystem) RemoveVirtualSwitch(ctx context.Context, vswitchName string) error { - req := types.RemoveVirtualSwitch{ - This: o.Reference(), - VswitchName: vswitchName, - } - - _, err := methods.RemoveVirtualSwitch(ctx, o.c, &req) - if err != nil { - return err - } - - return nil -} - -// RestartServiceConsoleVirtualNic wraps methods.RestartServiceConsoleVirtualNic -func (o HostNetworkSystem) RestartServiceConsoleVirtualNic(ctx context.Context, device string) error { - req := types.RestartServiceConsoleVirtualNic{ - This: o.Reference(), - Device: device, - } - - _, err := methods.RestartServiceConsoleVirtualNic(ctx, o.c, &req) - if err != nil { - return err - } - - return nil -} - -// UpdateConsoleIpRouteConfig wraps methods.UpdateConsoleIpRouteConfig -func (o HostNetworkSystem) UpdateConsoleIpRouteConfig(ctx context.Context, config types.BaseHostIpRouteConfig) error { - req := types.UpdateConsoleIpRouteConfig{ - This: o.Reference(), - Config: config, - } - - _, err := methods.UpdateConsoleIpRouteConfig(ctx, o.c, &req) - if err != nil { - return err - } - - return nil -} - -// UpdateDnsConfig wraps methods.UpdateDnsConfig -func (o HostNetworkSystem) UpdateDnsConfig(ctx context.Context, config types.BaseHostDnsConfig) error { - req := types.UpdateDnsConfig{ - This: o.Reference(), - Config: config, - } - - _, err := methods.UpdateDnsConfig(ctx, o.c, &req) - if err != nil { - return err - } - - return nil -} - -// UpdateIpRouteConfig wraps methods.UpdateIpRouteConfig -func (o HostNetworkSystem) UpdateIpRouteConfig(ctx context.Context, config types.BaseHostIpRouteConfig) error { - req := types.UpdateIpRouteConfig{ - This: o.Reference(), - Config: config, - } - - _, err := methods.UpdateIpRouteConfig(ctx, o.c, &req) - if err != nil { - return err - } - - return nil -} - -// UpdateIpRouteTableConfig wraps methods.UpdateIpRouteTableConfig -func (o HostNetworkSystem) UpdateIpRouteTableConfig(ctx context.Context, config types.HostIpRouteTableConfig) error { - req := types.UpdateIpRouteTableConfig{ - This: o.Reference(), - Config: config, - } - - _, err := methods.UpdateIpRouteTableConfig(ctx, o.c, &req) - if err != nil { - return err - } - - return nil -} - -// UpdateNetworkConfig wraps methods.UpdateNetworkConfig -func (o HostNetworkSystem) UpdateNetworkConfig(ctx context.Context, config types.HostNetworkConfig, changeMode string) (*types.HostNetworkConfigResult, error) { - req := types.UpdateNetworkConfig{ - This: o.Reference(), - Config: config, - ChangeMode: changeMode, - } - - res, err := methods.UpdateNetworkConfig(ctx, o.c, &req) - if err != nil { - return nil, err - } - - return &res.Returnval, nil -} - -// UpdatePhysicalNicLinkSpeed wraps methods.UpdatePhysicalNicLinkSpeed -func (o HostNetworkSystem) UpdatePhysicalNicLinkSpeed(ctx context.Context, device string, linkSpeed *types.PhysicalNicLinkInfo) error { - req := types.UpdatePhysicalNicLinkSpeed{ - This: o.Reference(), - Device: device, - LinkSpeed: linkSpeed, - } - - _, err := methods.UpdatePhysicalNicLinkSpeed(ctx, o.c, &req) - if err != nil { - return err - } - - return nil -} - -// UpdatePortGroup wraps methods.UpdatePortGroup -func (o HostNetworkSystem) UpdatePortGroup(ctx context.Context, pgName string, portgrp types.HostPortGroupSpec) error { - req := types.UpdatePortGroup{ - This: o.Reference(), - PgName: pgName, - Portgrp: portgrp, - } - - _, err := methods.UpdatePortGroup(ctx, o.c, &req) - if err != nil { - return err - } - - return nil -} - -// UpdateServiceConsoleVirtualNic wraps methods.UpdateServiceConsoleVirtualNic -func (o HostNetworkSystem) UpdateServiceConsoleVirtualNic(ctx context.Context, device string, nic types.HostVirtualNicSpec) error { - req := types.UpdateServiceConsoleVirtualNic{ - This: o.Reference(), - Device: device, - Nic: nic, - } - - _, err := methods.UpdateServiceConsoleVirtualNic(ctx, o.c, &req) - if err != nil { - return err - } - - return nil -} - -// UpdateVirtualNic wraps methods.UpdateVirtualNic -func (o HostNetworkSystem) UpdateVirtualNic(ctx context.Context, device string, nic types.HostVirtualNicSpec) error { - req := types.UpdateVirtualNic{ - This: o.Reference(), - Device: device, - Nic: nic, - } - - _, err := methods.UpdateVirtualNic(ctx, o.c, &req) - if err != nil { - return err - } - - return nil -} - -// UpdateVirtualSwitch wraps methods.UpdateVirtualSwitch -func (o HostNetworkSystem) UpdateVirtualSwitch(ctx context.Context, vswitchName string, spec types.HostVirtualSwitchSpec) error { - req := types.UpdateVirtualSwitch{ - This: o.Reference(), - VswitchName: vswitchName, - Spec: spec, - } - - _, err := methods.UpdateVirtualSwitch(ctx, o.c, &req) - if err != nil { - return err - } - - return nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_storage_system.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_storage_system.go deleted file mode 100644 index 36cd68e3..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_storage_system.go +++ /dev/null @@ -1,80 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "errors" - - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type HostStorageSystem struct { - Common -} - -func NewHostStorageSystem(c *vim25.Client, ref types.ManagedObjectReference) *HostStorageSystem { - return &HostStorageSystem{ - Common: NewCommon(c, ref), - } -} - -func (s HostStorageSystem) RetrieveDiskPartitionInfo(ctx context.Context, devicePath string) (*types.HostDiskPartitionInfo, error) { - req := types.RetrieveDiskPartitionInfo{ - This: s.Reference(), - DevicePath: []string{devicePath}, - } - - res, err := methods.RetrieveDiskPartitionInfo(ctx, s.c, &req) - if err != nil { - return nil, err - } - - if res.Returnval == nil || len(res.Returnval) == 0 { - return nil, errors.New("no partition info") - } - - return &res.Returnval[0], nil -} - -func (s HostStorageSystem) ComputeDiskPartitionInfo(ctx context.Context, devicePath string, layout types.HostDiskPartitionLayout) (*types.HostDiskPartitionInfo, error) { - req := types.ComputeDiskPartitionInfo{ - This: s.Reference(), - DevicePath: devicePath, - Layout: layout, - } - - res, err := methods.ComputeDiskPartitionInfo(ctx, s.c, &req) - if err != nil { - return nil, err - } - - return &res.Returnval, nil -} - -func (s HostStorageSystem) UpdateDiskPartitionInfo(ctx context.Context, devicePath string, spec types.HostDiskPartitionSpec) error { - req := types.UpdateDiskPartitions{ - This: s.Reference(), - DevicePath: devicePath, - Spec: spec, - } - - _, err := methods.UpdateDiskPartitions(ctx, s.c, &req) - return err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_system.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_system.go deleted file mode 100644 index 0146d9ae..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_system.go +++ /dev/null @@ -1,173 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "fmt" - "net" - - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/mo" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type HostSystem struct { - Common - - InventoryPath string -} - -func (h HostSystem) String() string { - if h.InventoryPath == "" { - return h.Common.String() - } - return fmt.Sprintf("%v @ %v", h.Common, h.InventoryPath) -} - -func NewHostSystem(c *vim25.Client, ref types.ManagedObjectReference) *HostSystem { - return &HostSystem{ - Common: NewCommon(c, ref), - } -} - -func (h HostSystem) Name(ctx context.Context) (string, error) { - var mh mo.HostSystem - - err := h.Properties(ctx, h.Reference(), []string{"name"}, &mh) - if err != nil { - return "", err - } - - return mh.Name, nil -} - -func (h HostSystem) ConfigManager() *HostConfigManager { - return NewHostConfigManager(h.c, h.Reference()) -} - -func (h HostSystem) ResourcePool(ctx context.Context) (*ResourcePool, error) { - var mh mo.HostSystem - - err := h.Properties(ctx, h.Reference(), []string{"parent"}, &mh) - if err != nil { - return nil, err - } - - var mcr *mo.ComputeResource - var parent interface{} - - switch mh.Parent.Type { - case "ComputeResource": - mcr = new(mo.ComputeResource) - parent = mcr - case "ClusterComputeResource": - mcc := new(mo.ClusterComputeResource) - mcr = &mcc.ComputeResource - parent = mcc - default: - return nil, fmt.Errorf("unknown host parent type: %s", mh.Parent.Type) - } - - err = h.Properties(ctx, *mh.Parent, []string{"resourcePool"}, parent) - if err != nil { - return nil, err - } - - pool := NewResourcePool(h.c, *mcr.ResourcePool) - return pool, nil -} - -func (h HostSystem) ManagementIPs(ctx context.Context) ([]net.IP, error) { - var mh mo.HostSystem - - err := h.Properties(ctx, h.Reference(), []string{"config.virtualNicManagerInfo.netConfig"}, &mh) - if err != nil { - return nil, err - } - - var ips []net.IP - for _, nc := range mh.Config.VirtualNicManagerInfo.NetConfig { - if nc.NicType == "management" && len(nc.CandidateVnic) > 0 { - ip := net.ParseIP(nc.CandidateVnic[0].Spec.Ip.IpAddress) - if ip != nil { - ips = append(ips, ip) - } - } - } - - return ips, nil -} - -func (h HostSystem) Disconnect(ctx context.Context) (*Task, error) { - req := types.DisconnectHost_Task{ - This: h.Reference(), - } - - res, err := methods.DisconnectHost_Task(ctx, h.c, &req) - if err != nil { - return nil, err - } - - return NewTask(h.c, res.Returnval), nil -} - -func (h HostSystem) Reconnect(ctx context.Context, cnxSpec *types.HostConnectSpec, reconnectSpec *types.HostSystemReconnectSpec) (*Task, error) { - req := types.ReconnectHost_Task{ - This: h.Reference(), - CnxSpec: cnxSpec, - ReconnectSpec: reconnectSpec, - } - - res, err := methods.ReconnectHost_Task(ctx, h.c, &req) - if err != nil { - return nil, err - } - - return NewTask(h.c, res.Returnval), nil -} - -func (h HostSystem) EnterMaintenanceMode(ctx context.Context, timeout int32, evacuate bool, spec *types.HostMaintenanceSpec) (*Task, error) { - req := types.EnterMaintenanceMode_Task{ - This: h.Reference(), - Timeout: timeout, - EvacuatePoweredOffVms: types.NewBool(evacuate), - MaintenanceSpec: spec, - } - - res, err := methods.EnterMaintenanceMode_Task(ctx, h.c, &req) - if err != nil { - return nil, err - } - - return NewTask(h.c, res.Returnval), nil -} - -func (h HostSystem) ExitMaintenanceMode(ctx context.Context, timeout int32) (*Task, error) { - req := types.ExitMaintenanceMode_Task{ - This: h.Reference(), - Timeout: timeout, - } - - res, err := methods.ExitMaintenanceMode_Task(ctx, h.c, &req) - if err != nil { - return nil, err - } - - return NewTask(h.c, res.Returnval), nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_virtual_nic_manager.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_virtual_nic_manager.go deleted file mode 100644 index 05338b82..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_virtual_nic_manager.go +++ /dev/null @@ -1,92 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/mo" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type HostVirtualNicManager struct { - Common - Host *HostSystem -} - -func NewHostVirtualNicManager(c *vim25.Client, ref types.ManagedObjectReference, host types.ManagedObjectReference) *HostVirtualNicManager { - return &HostVirtualNicManager{ - Common: NewCommon(c, ref), - Host: NewHostSystem(c, host), - } -} - -func (m HostVirtualNicManager) Info(ctx context.Context) (*types.HostVirtualNicManagerInfo, error) { - var vnm mo.HostVirtualNicManager - - err := m.Properties(ctx, m.Reference(), []string{"info"}, &vnm) - if err != nil { - return nil, err - } - - return &vnm.Info, nil -} - -func (m HostVirtualNicManager) DeselectVnic(ctx context.Context, nicType string, device string) error { - if nicType == string(types.HostVirtualNicManagerNicTypeVsan) { - // Avoid fault.NotSupported: - // "Error deselecting device '$device': VSAN interfaces must be deselected using vim.host.VsanSystem" - s, err := m.Host.ConfigManager().VsanSystem(ctx) - if err != nil { - return err - } - - return s.updateVnic(ctx, device, false) - } - - req := types.DeselectVnicForNicType{ - This: m.Reference(), - NicType: nicType, - Device: device, - } - - _, err := methods.DeselectVnicForNicType(ctx, m.Client(), &req) - return err -} - -func (m HostVirtualNicManager) SelectVnic(ctx context.Context, nicType string, device string) error { - if nicType == string(types.HostVirtualNicManagerNicTypeVsan) { - // Avoid fault.NotSupported: - // "Error selecting device '$device': VSAN interfaces must be selected using vim.host.VsanSystem" - s, err := m.Host.ConfigManager().VsanSystem(ctx) - if err != nil { - return err - } - - return s.updateVnic(ctx, device, true) - } - - req := types.SelectVnicForNicType{ - This: m.Reference(), - NicType: nicType, - Device: device, - } - - _, err := methods.SelectVnicForNicType(ctx, m.Client(), &req) - return err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_vsan_system.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_vsan_system.go deleted file mode 100644 index 8c571421..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/host_vsan_system.go +++ /dev/null @@ -1,87 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/mo" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type HostVsanSystem struct { - Common -} - -func NewHostVsanSystem(c *vim25.Client, ref types.ManagedObjectReference) *HostVsanSystem { - return &HostVsanSystem{ - Common: NewCommon(c, ref), - } -} - -func (s HostVsanSystem) Update(ctx context.Context, config types.VsanHostConfigInfo) (*Task, error) { - req := types.UpdateVsan_Task{ - This: s.Reference(), - Config: config, - } - - res, err := methods.UpdateVsan_Task(ctx, s.Client(), &req) - if err != nil { - return nil, err - } - - return NewTask(s.Client(), res.Returnval), nil -} - -// updateVnic in support of the HostVirtualNicManager.{SelectVnic,DeselectVnic} methods -func (s HostVsanSystem) updateVnic(ctx context.Context, device string, enable bool) error { - var vsan mo.HostVsanSystem - - err := s.Properties(ctx, s.Reference(), []string{"config.networkInfo.port"}, &vsan) - if err != nil { - return err - } - - info := vsan.Config - - var port []types.VsanHostConfigInfoNetworkInfoPortConfig - - for _, p := range info.NetworkInfo.Port { - if p.Device == device { - continue - } - - port = append(port, p) - } - - if enable { - port = append(port, types.VsanHostConfigInfoNetworkInfoPortConfig{ - Device: device, - }) - } - - info.NetworkInfo.Port = port - - task, err := s.Update(ctx, info) - if err != nil { - return err - } - - _, err = task.WaitForResult(ctx, nil) - return err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/http_nfc_lease.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/http_nfc_lease.go deleted file mode 100644 index 3b06e3c3..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/http_nfc_lease.go +++ /dev/null @@ -1,143 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "errors" - "fmt" - - "github.com/vmware/govmomi/property" - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/mo" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type HttpNfcLease struct { - Common -} - -func NewHttpNfcLease(c *vim25.Client, ref types.ManagedObjectReference) *HttpNfcLease { - return &HttpNfcLease{ - Common: NewCommon(c, ref), - } -} - -// HttpNfcLeaseAbort wraps methods.HttpNfcLeaseAbort -func (o HttpNfcLease) HttpNfcLeaseAbort(ctx context.Context, fault *types.LocalizedMethodFault) error { - req := types.HttpNfcLeaseAbort{ - This: o.Reference(), - Fault: fault, - } - - _, err := methods.HttpNfcLeaseAbort(ctx, o.c, &req) - if err != nil { - return err - } - - return nil -} - -// HttpNfcLeaseComplete wraps methods.HttpNfcLeaseComplete -func (o HttpNfcLease) HttpNfcLeaseComplete(ctx context.Context) error { - req := types.HttpNfcLeaseComplete{ - This: o.Reference(), - } - - _, err := methods.HttpNfcLeaseComplete(ctx, o.c, &req) - if err != nil { - return err - } - - return nil -} - -// HttpNfcLeaseGetManifest wraps methods.HttpNfcLeaseGetManifest -func (o HttpNfcLease) HttpNfcLeaseGetManifest(ctx context.Context) error { - req := types.HttpNfcLeaseGetManifest{ - This: o.Reference(), - } - - _, err := methods.HttpNfcLeaseGetManifest(ctx, o.c, &req) - if err != nil { - return err - } - - return nil -} - -// HttpNfcLeaseProgress wraps methods.HttpNfcLeaseProgress -func (o HttpNfcLease) HttpNfcLeaseProgress(ctx context.Context, percent int32) error { - req := types.HttpNfcLeaseProgress{ - This: o.Reference(), - Percent: percent, - } - - _, err := methods.HttpNfcLeaseProgress(ctx, o.c, &req) - if err != nil { - return err - } - - return nil -} - -func (o HttpNfcLease) Wait(ctx context.Context) (*types.HttpNfcLeaseInfo, error) { - var lease mo.HttpNfcLease - - pc := property.DefaultCollector(o.c) - err := property.Wait(ctx, pc, o.Reference(), []string{"state", "info", "error"}, func(pc []types.PropertyChange) bool { - done := false - - for _, c := range pc { - if c.Val == nil { - continue - } - - switch c.Name { - case "error": - val := c.Val.(types.LocalizedMethodFault) - lease.Error = &val - done = true - case "info": - val := c.Val.(types.HttpNfcLeaseInfo) - lease.Info = &val - case "state": - lease.State = c.Val.(types.HttpNfcLeaseState) - if lease.State != types.HttpNfcLeaseStateInitializing { - done = true - } - } - } - - return done - }) - - if err != nil { - return nil, err - } - - if lease.State == types.HttpNfcLeaseStateReady { - return lease.Info, nil - } - - if lease.Error != nil { - return nil, errors.New(lease.Error.LocalizedMessage) - } - - return nil, fmt.Errorf("unexpected nfc lease state: %s", lease.State) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/list_view.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/list_view.go deleted file mode 100644 index a79d33bc..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/list_view.go +++ /dev/null @@ -1,43 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type ListView struct { - Common -} - -func NewListView(c *vim25.Client, ref types.ManagedObjectReference) *ListView { - return &ListView{ - Common: NewCommon(c, ref), - } -} - -func (v ListView) Destroy(ctx context.Context) error { - req := types.DestroyView{ - This: v.Reference(), - } - - _, err := methods.DestroyView(ctx, v.c, &req) - return err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/network.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/network.go deleted file mode 100644 index 9963744a..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/network.go +++ /dev/null @@ -1,54 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "path" - - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type Network struct { - Common - - InventoryPath string -} - -func NewNetwork(c *vim25.Client, ref types.ManagedObjectReference) *Network { - return &Network{ - Common: NewCommon(c, ref), - } -} - -func (n Network) Name() string { - return path.Base(n.InventoryPath) -} - -// EthernetCardBackingInfo returns the VirtualDeviceBackingInfo for this Network -func (n Network) EthernetCardBackingInfo(_ context.Context) (types.BaseVirtualDeviceBackingInfo, error) { - name := n.Name() - - backing := &types.VirtualEthernetCardNetworkBackingInfo{ - VirtualDeviceDeviceBackingInfo: types.VirtualDeviceDeviceBackingInfo{ - DeviceName: name, - }, - } - - return backing, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/network_reference.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/network_reference.go deleted file mode 100644 index 98dd5381..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/network_reference.go +++ /dev/null @@ -1,30 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -// The NetworkReference interface is implemented by managed objects -// which can be used as the backing for a VirtualEthernetCard. -type NetworkReference interface { - Reference - - EthernetCardBackingInfo(ctx context.Context) (types.BaseVirtualDeviceBackingInfo, error) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/option_manager.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/option_manager.go deleted file mode 100644 index eae1223c..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/option_manager.go +++ /dev/null @@ -1,58 +0,0 @@ -/* -Copyright (c) 2016 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type OptionManager struct { - Common -} - -func NewOptionManager(c *vim25.Client, ref types.ManagedObjectReference) *OptionManager { - return &OptionManager{ - Common: NewCommon(c, ref), - } -} - -func (m OptionManager) Query(ctx context.Context, name string) ([]types.BaseOptionValue, error) { - req := types.QueryOptions{ - This: m.Reference(), - Name: name, - } - - res, err := methods.QueryOptions(ctx, m.Client(), &req) - if err != nil { - return nil, err - } - - return res.Returnval, nil -} - -func (m OptionManager) Update(ctx context.Context, value []types.BaseOptionValue) error { - req := types.UpdateOptions{ - This: m.Reference(), - ChangedValue: value, - } - - _, err := methods.UpdateOptions(ctx, m.Client(), &req) - return err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/ovf_manager.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/ovf_manager.go deleted file mode 100644 index e7912d0f..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/ovf_manager.go +++ /dev/null @@ -1,103 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type OvfManager struct { - Common -} - -func NewOvfManager(c *vim25.Client) *OvfManager { - o := OvfManager{ - Common: NewCommon(c, *c.ServiceContent.OvfManager), - } - - return &o -} - -// CreateDescriptor wraps methods.CreateDescriptor -func (o OvfManager) CreateDescriptor(ctx context.Context, obj Reference, cdp types.OvfCreateDescriptorParams) (*types.OvfCreateDescriptorResult, error) { - req := types.CreateDescriptor{ - This: o.Reference(), - Obj: obj.Reference(), - Cdp: cdp, - } - - res, err := methods.CreateDescriptor(ctx, o.c, &req) - if err != nil { - return nil, err - } - - return &res.Returnval, nil -} - -// CreateImportSpec wraps methods.CreateImportSpec -func (o OvfManager) CreateImportSpec(ctx context.Context, ovfDescriptor string, resourcePool Reference, datastore Reference, cisp types.OvfCreateImportSpecParams) (*types.OvfCreateImportSpecResult, error) { - req := types.CreateImportSpec{ - This: o.Reference(), - OvfDescriptor: ovfDescriptor, - ResourcePool: resourcePool.Reference(), - Datastore: datastore.Reference(), - Cisp: cisp, - } - - res, err := methods.CreateImportSpec(ctx, o.c, &req) - if err != nil { - return nil, err - } - - return &res.Returnval, nil -} - -// ParseDescriptor wraps methods.ParseDescriptor -func (o OvfManager) ParseDescriptor(ctx context.Context, ovfDescriptor string, pdp types.OvfParseDescriptorParams) (*types.OvfParseDescriptorResult, error) { - req := types.ParseDescriptor{ - This: o.Reference(), - OvfDescriptor: ovfDescriptor, - Pdp: pdp, - } - - res, err := methods.ParseDescriptor(ctx, o.c, &req) - if err != nil { - return nil, err - } - - return &res.Returnval, nil -} - -// ValidateHost wraps methods.ValidateHost -func (o OvfManager) ValidateHost(ctx context.Context, ovfDescriptor string, host Reference, vhp types.OvfValidateHostParams) (*types.OvfValidateHostResult, error) { - req := types.ValidateHost{ - This: o.Reference(), - OvfDescriptor: ovfDescriptor, - Host: host.Reference(), - Vhp: vhp, - } - - res, err := methods.ValidateHost(ctx, o.c, &req) - if err != nil { - return nil, err - } - - return &res.Returnval, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/resource_pool.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/resource_pool.go deleted file mode 100644 index e0346085..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/resource_pool.go +++ /dev/null @@ -1,159 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "fmt" - - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/mo" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type ResourcePool struct { - Common - - InventoryPath string -} - -func (p ResourcePool) String() string { - if p.InventoryPath == "" { - return p.Common.String() - } - return fmt.Sprintf("%v @ %v", p.Common, p.InventoryPath) -} - -func NewResourcePool(c *vim25.Client, ref types.ManagedObjectReference) *ResourcePool { - return &ResourcePool{ - Common: NewCommon(c, ref), - } -} - -func (p ResourcePool) Name(ctx context.Context) (string, error) { - var o mo.ResourcePool - - err := p.Properties(ctx, p.Reference(), []string{"name"}, &o) - if err != nil { - return "", err - } - - return o.Name, nil -} - -func (p ResourcePool) ImportVApp(ctx context.Context, spec types.BaseImportSpec, folder *Folder, host *HostSystem) (*HttpNfcLease, error) { - req := types.ImportVApp{ - This: p.Reference(), - Spec: spec, - } - - if folder != nil { - ref := folder.Reference() - req.Folder = &ref - } - - if host != nil { - ref := host.Reference() - req.Host = &ref - } - - res, err := methods.ImportVApp(ctx, p.c, &req) - if err != nil { - return nil, err - } - - return NewHttpNfcLease(p.c, res.Returnval), nil -} - -func (p ResourcePool) Create(ctx context.Context, name string, spec types.ResourceConfigSpec) (*ResourcePool, error) { - req := types.CreateResourcePool{ - This: p.Reference(), - Name: name, - Spec: spec, - } - - res, err := methods.CreateResourcePool(ctx, p.c, &req) - if err != nil { - return nil, err - } - - return NewResourcePool(p.c, res.Returnval), nil -} - -func (p ResourcePool) CreateVApp(ctx context.Context, name string, resSpec types.ResourceConfigSpec, configSpec types.VAppConfigSpec, folder *Folder) (*VirtualApp, error) { - req := types.CreateVApp{ - This: p.Reference(), - Name: name, - ResSpec: resSpec, - ConfigSpec: configSpec, - } - - if folder != nil { - ref := folder.Reference() - req.VmFolder = &ref - } - - res, err := methods.CreateVApp(ctx, p.c, &req) - if err != nil { - return nil, err - } - - return NewVirtualApp(p.c, res.Returnval), nil -} - -func (p ResourcePool) UpdateConfig(ctx context.Context, name string, config *types.ResourceConfigSpec) error { - req := types.UpdateConfig{ - This: p.Reference(), - Name: name, - Config: config, - } - - if config != nil && config.Entity == nil { - ref := p.Reference() - - // Create copy of config so changes won't leak back to the caller - newConfig := *config - newConfig.Entity = &ref - req.Config = &newConfig - } - - _, err := methods.UpdateConfig(ctx, p.c, &req) - return err -} - -func (p ResourcePool) DestroyChildren(ctx context.Context) error { - req := types.DestroyChildren{ - This: p.Reference(), - } - - _, err := methods.DestroyChildren(ctx, p.c, &req) - return err -} - -func (p ResourcePool) Destroy(ctx context.Context) (*Task, error) { - req := types.Destroy_Task{ - This: p.Reference(), - } - - res, err := methods.Destroy_Task(ctx, p.c, &req) - if err != nil { - return nil, err - } - - return NewTask(p.c, res.Returnval), nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/search_index.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/search_index.go deleted file mode 100644 index 638c8de2..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/search_index.go +++ /dev/null @@ -1,162 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type SearchIndex struct { - Common -} - -func NewSearchIndex(c *vim25.Client) *SearchIndex { - s := SearchIndex{ - Common: NewCommon(c, *c.ServiceContent.SearchIndex), - } - - return &s -} - -// FindByDatastorePath finds a virtual machine by its location on a datastore. -func (s SearchIndex) FindByDatastorePath(ctx context.Context, dc *Datacenter, path string) (Reference, error) { - req := types.FindByDatastorePath{ - This: s.Reference(), - Datacenter: dc.Reference(), - Path: path, - } - - res, err := methods.FindByDatastorePath(ctx, s.c, &req) - if err != nil { - return nil, err - } - - if res.Returnval == nil { - return nil, nil - } - return NewReference(s.c, *res.Returnval), nil -} - -// FindByDnsName finds a virtual machine or host by DNS name. -func (s SearchIndex) FindByDnsName(ctx context.Context, dc *Datacenter, dnsName string, vmSearch bool) (Reference, error) { - req := types.FindByDnsName{ - This: s.Reference(), - DnsName: dnsName, - VmSearch: vmSearch, - } - if dc != nil { - ref := dc.Reference() - req.Datacenter = &ref - } - - res, err := methods.FindByDnsName(ctx, s.c, &req) - if err != nil { - return nil, err - } - - if res.Returnval == nil { - return nil, nil - } - return NewReference(s.c, *res.Returnval), nil -} - -// FindByInventoryPath finds a managed entity based on its location in the inventory. -func (s SearchIndex) FindByInventoryPath(ctx context.Context, path string) (Reference, error) { - req := types.FindByInventoryPath{ - This: s.Reference(), - InventoryPath: path, - } - - res, err := methods.FindByInventoryPath(ctx, s.c, &req) - if err != nil { - return nil, err - } - - if res.Returnval == nil { - return nil, nil - } - return NewReference(s.c, *res.Returnval), nil -} - -// FindByIp finds a virtual machine or host by IP address. -func (s SearchIndex) FindByIp(ctx context.Context, dc *Datacenter, ip string, vmSearch bool) (Reference, error) { - req := types.FindByIp{ - This: s.Reference(), - Ip: ip, - VmSearch: vmSearch, - } - if dc != nil { - ref := dc.Reference() - req.Datacenter = &ref - } - - res, err := methods.FindByIp(ctx, s.c, &req) - if err != nil { - return nil, err - } - - if res.Returnval == nil { - return nil, nil - } - return NewReference(s.c, *res.Returnval), nil -} - -// FindByUuid finds a virtual machine or host by UUID. -func (s SearchIndex) FindByUuid(ctx context.Context, dc *Datacenter, uuid string, vmSearch bool, instanceUuid *bool) (Reference, error) { - req := types.FindByUuid{ - This: s.Reference(), - Uuid: uuid, - VmSearch: vmSearch, - InstanceUuid: instanceUuid, - } - if dc != nil { - ref := dc.Reference() - req.Datacenter = &ref - } - - res, err := methods.FindByUuid(ctx, s.c, &req) - if err != nil { - return nil, err - } - - if res.Returnval == nil { - return nil, nil - } - return NewReference(s.c, *res.Returnval), nil -} - -// FindChild finds a particular child based on a managed entity name. -func (s SearchIndex) FindChild(ctx context.Context, entity Reference, name string) (Reference, error) { - req := types.FindChild{ - This: s.Reference(), - Entity: entity.Reference(), - Name: name, - } - - res, err := methods.FindChild(ctx, s.c, &req) - if err != nil { - return nil, err - } - - if res.Returnval == nil { - return nil, nil - } - return NewReference(s.c, *res.Returnval), nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/storage_pod.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/storage_pod.go deleted file mode 100644 index 188b91a0..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/storage_pod.go +++ /dev/null @@ -1,34 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/types" -) - -type StoragePod struct { - *Folder -} - -func NewStoragePod(c *vim25.Client, ref types.ManagedObjectReference) *StoragePod { - return &StoragePod{ - Folder: &Folder{ - Common: NewCommon(c, ref), - }, - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/storage_resource_manager.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/storage_resource_manager.go deleted file mode 100644 index 54fd0d9e..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/storage_resource_manager.go +++ /dev/null @@ -1,178 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type StorageResourceManager struct { - Common -} - -func NewStorageResourceManager(c *vim25.Client) *StorageResourceManager { - sr := StorageResourceManager{ - Common: NewCommon(c, *c.ServiceContent.StorageResourceManager), - } - - return &sr -} - -func (sr StorageResourceManager) ApplyStorageDrsRecommendation(ctx context.Context, key []string) (*Task, error) { - req := types.ApplyStorageDrsRecommendation_Task{ - This: sr.Reference(), - Key: key, - } - - res, err := methods.ApplyStorageDrsRecommendation_Task(ctx, sr.c, &req) - if err != nil { - return nil, err - } - - return NewTask(sr.c, res.Returnval), nil -} - -func (sr StorageResourceManager) ApplyStorageDrsRecommendationToPod(ctx context.Context, pod *StoragePod, key string) (*Task, error) { - req := types.ApplyStorageDrsRecommendationToPod_Task{ - This: sr.Reference(), - Key: key, - } - - if pod != nil { - req.Pod = pod.Reference() - } - - res, err := methods.ApplyStorageDrsRecommendationToPod_Task(ctx, sr.c, &req) - if err != nil { - return nil, err - } - - return NewTask(sr.c, res.Returnval), nil -} - -func (sr StorageResourceManager) CancelStorageDrsRecommendation(ctx context.Context, key []string) error { - req := types.CancelStorageDrsRecommendation{ - This: sr.Reference(), - Key: key, - } - - _, err := methods.CancelStorageDrsRecommendation(ctx, sr.c, &req) - - return err -} - -func (sr StorageResourceManager) ConfigureDatastoreIORM(ctx context.Context, datastore *Datastore, spec types.StorageIORMConfigSpec, key string) (*Task, error) { - req := types.ConfigureDatastoreIORM_Task{ - This: sr.Reference(), - Spec: spec, - } - - if datastore != nil { - req.Datastore = datastore.Reference() - } - - res, err := methods.ConfigureDatastoreIORM_Task(ctx, sr.c, &req) - if err != nil { - return nil, err - } - - return NewTask(sr.c, res.Returnval), nil -} - -func (sr StorageResourceManager) ConfigureStorageDrsForPod(ctx context.Context, pod *StoragePod, spec types.StorageDrsConfigSpec, modify bool) (*Task, error) { - req := types.ConfigureStorageDrsForPod_Task{ - This: sr.Reference(), - Spec: spec, - Modify: modify, - } - - if pod != nil { - req.Pod = pod.Reference() - } - - res, err := methods.ConfigureStorageDrsForPod_Task(ctx, sr.c, &req) - if err != nil { - return nil, err - } - - return NewTask(sr.c, res.Returnval), nil -} - -func (sr StorageResourceManager) QueryDatastorePerformanceSummary(ctx context.Context, datastore *Datastore) ([]types.StoragePerformanceSummary, error) { - req := types.QueryDatastorePerformanceSummary{ - This: sr.Reference(), - } - - if datastore != nil { - req.Datastore = datastore.Reference() - } - - res, err := methods.QueryDatastorePerformanceSummary(ctx, sr.c, &req) - if err != nil { - return nil, err - } - - return res.Returnval, nil -} - -func (sr StorageResourceManager) QueryIORMConfigOption(ctx context.Context, host *HostSystem) (*types.StorageIORMConfigOption, error) { - req := types.QueryIORMConfigOption{ - This: sr.Reference(), - } - - if host != nil { - req.Host = host.Reference() - } - - res, err := methods.QueryIORMConfigOption(ctx, sr.c, &req) - if err != nil { - return nil, err - } - - return &res.Returnval, nil -} - -func (sr StorageResourceManager) RecommendDatastores(ctx context.Context, storageSpec types.StoragePlacementSpec) (*types.StoragePlacementResult, error) { - req := types.RecommendDatastores{ - This: sr.Reference(), - StorageSpec: storageSpec, - } - - res, err := methods.RecommendDatastores(ctx, sr.c, &req) - if err != nil { - return nil, err - } - - return &res.Returnval, nil -} - -func (sr StorageResourceManager) RefreshStorageDrsRecommendation(ctx context.Context, pod *StoragePod) error { - req := types.RefreshStorageDrsRecommendation{ - This: sr.Reference(), - } - - if pod != nil { - req.Pod = pod.Reference() - } - - _, err := methods.RefreshStorageDrsRecommendation(ctx, sr.c, &req) - - return err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/task.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/task.go deleted file mode 100644 index d70a417b..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/task.go +++ /dev/null @@ -1,52 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "github.com/vmware/govmomi/property" - "github.com/vmware/govmomi/task" - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/progress" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -// Task is a convenience wrapper around task.Task that keeps a reference to -// the client that was used to create it. This allows users to call the Wait() -// function with only a context parameter, instead of a context parameter, a -// soap.RoundTripper, and reference to the root property collector. -type Task struct { - Common -} - -func NewTask(c *vim25.Client, ref types.ManagedObjectReference) *Task { - t := Task{ - Common: NewCommon(c, ref), - } - - return &t -} - -func (t *Task) Wait(ctx context.Context) error { - _, err := t.WaitForResult(ctx, nil) - return err -} - -func (t *Task) WaitForResult(ctx context.Context, s progress.Sinker) (*types.TaskInfo, error) { - p := property.DefaultCollector(t.c) - return task.Wait(ctx, t.Reference(), p, s) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/types.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/types.go deleted file mode 100644 index f61aa362..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/types.go +++ /dev/null @@ -1,65 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/types" -) - -type Reference interface { - Reference() types.ManagedObjectReference -} - -func NewReference(c *vim25.Client, e types.ManagedObjectReference) Reference { - switch e.Type { - case "Folder": - return NewFolder(c, e) - case "StoragePod": - return &StoragePod{ - NewFolder(c, e), - } - case "Datacenter": - return NewDatacenter(c, e) - case "VirtualMachine": - return NewVirtualMachine(c, e) - case "VirtualApp": - return &VirtualApp{ - NewResourcePool(c, e), - } - case "ComputeResource": - return NewComputeResource(c, e) - case "ClusterComputeResource": - return NewClusterComputeResource(c, e) - case "HostSystem": - return NewHostSystem(c, e) - case "Network": - return NewNetwork(c, e) - case "ResourcePool": - return NewResourcePool(c, e) - case "DistributedVirtualSwitch": - return NewDistributedVirtualSwitch(c, e) - case "VmwareDistributedVirtualSwitch": - return &VmwareDistributedVirtualSwitch{*NewDistributedVirtualSwitch(c, e)} - case "DistributedVirtualPortgroup": - return NewDistributedVirtualPortgroup(c, e) - case "Datastore": - return NewDatastore(c, e) - default: - panic("Unknown managed entity: " + e.Type) - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/virtual_app.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/virtual_app.go deleted file mode 100644 index 5b93f618..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/virtual_app.go +++ /dev/null @@ -1,126 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "fmt" - - "golang.org/x/net/context" - - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/mo" - "github.com/vmware/govmomi/vim25/types" -) - -type VirtualApp struct { - *ResourcePool -} - -func NewVirtualApp(c *vim25.Client, ref types.ManagedObjectReference) *VirtualApp { - return &VirtualApp{ - ResourcePool: NewResourcePool(c, ref), - } -} - -func (p VirtualApp) String() string { - if p.InventoryPath == "" { - return p.Common.String() - } - return fmt.Sprintf("%v @ %v", p.Common, p.InventoryPath) -} - -func (p VirtualApp) Name(ctx context.Context) (string, error) { - var o mo.VirtualApp - - err := p.Properties(ctx, p.Reference(), []string{"name"}, &o) - if err != nil { - return "", err - } - - return o.Name, nil -} - -func (p VirtualApp) CreateChildVM_Task(ctx context.Context, config types.VirtualMachineConfigSpec, host *HostSystem) (*Task, error) { - req := types.CreateChildVM_Task{ - This: p.Reference(), - Config: config, - } - - if host != nil { - ref := host.Reference() - req.Host = &ref - } - - res, err := methods.CreateChildVM_Task(ctx, p.c, &req) - if err != nil { - return nil, err - } - - return NewTask(p.c, res.Returnval), nil -} - -func (p VirtualApp) UpdateVAppConfig(ctx context.Context, spec types.VAppConfigSpec) error { - req := types.UpdateVAppConfig{ - This: p.Reference(), - Spec: spec, - } - - _, err := methods.UpdateVAppConfig(ctx, p.c, &req) - return err -} - -func (p VirtualApp) PowerOnVApp_Task(ctx context.Context) (*Task, error) { - req := types.PowerOnVApp_Task{ - This: p.Reference(), - } - - res, err := methods.PowerOnVApp_Task(ctx, p.c, &req) - if err != nil { - return nil, err - } - - return NewTask(p.c, res.Returnval), nil -} - -func (p VirtualApp) PowerOffVApp_Task(ctx context.Context, force bool) (*Task, error) { - req := types.PowerOffVApp_Task{ - This: p.Reference(), - Force: force, - } - - res, err := methods.PowerOffVApp_Task(ctx, p.c, &req) - if err != nil { - return nil, err - } - - return NewTask(p.c, res.Returnval), nil - -} - -func (p VirtualApp) SuspendVApp_Task(ctx context.Context) (*Task, error) { - req := types.SuspendVApp_Task{ - This: p.Reference(), - } - - res, err := methods.SuspendVApp_Task(ctx, p.c, &req) - if err != nil { - return nil, err - } - - return NewTask(p.c, res.Returnval), nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/virtual_device_list.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/virtual_device_list.go deleted file mode 100644 index 327b5d27..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/virtual_device_list.go +++ /dev/null @@ -1,827 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "errors" - "fmt" - "path/filepath" - "reflect" - "regexp" - "sort" - "strings" - - "github.com/vmware/govmomi/vim25/types" -) - -// Type values for use in BootOrder -const ( - DeviceTypeCdrom = "cdrom" - DeviceTypeDisk = "disk" - DeviceTypeEthernet = "ethernet" - DeviceTypeFloppy = "floppy" -) - -// VirtualDeviceList provides helper methods for working with a list of virtual devices. -type VirtualDeviceList []types.BaseVirtualDevice - -// SCSIControllerTypes are used for adding a new SCSI controller to a VM. -func SCSIControllerTypes() VirtualDeviceList { - // Return a mutable list of SCSI controller types, initialized with defaults. - return VirtualDeviceList([]types.BaseVirtualDevice{ - &types.VirtualLsiLogicController{}, - &types.VirtualBusLogicController{}, - &types.ParaVirtualSCSIController{}, - &types.VirtualLsiLogicSASController{}, - }).Select(func(device types.BaseVirtualDevice) bool { - c := device.(types.BaseVirtualSCSIController).GetVirtualSCSIController() - c.SharedBus = types.VirtualSCSISharingNoSharing - c.BusNumber = -1 - return true - }) -} - -// EthernetCardTypes are used for adding a new ethernet card to a VM. -func EthernetCardTypes() VirtualDeviceList { - return VirtualDeviceList([]types.BaseVirtualDevice{ - &types.VirtualE1000{}, - &types.VirtualE1000e{}, - &types.VirtualVmxnet3{}, - }).Select(func(device types.BaseVirtualDevice) bool { - c := device.(types.BaseVirtualEthernetCard).GetVirtualEthernetCard() - c.GetVirtualDevice().Key = -1 - return true - }) -} - -// Select returns a new list containing all elements of the list for which the given func returns true. -func (l VirtualDeviceList) Select(f func(device types.BaseVirtualDevice) bool) VirtualDeviceList { - var found VirtualDeviceList - - for _, device := range l { - if f(device) { - found = append(found, device) - } - } - - return found -} - -// SelectByType returns a new list with devices that are equal to or extend the given type. -func (l VirtualDeviceList) SelectByType(deviceType types.BaseVirtualDevice) VirtualDeviceList { - dtype := reflect.TypeOf(deviceType) - dname := dtype.Elem().Name() - - return l.Select(func(device types.BaseVirtualDevice) bool { - t := reflect.TypeOf(device) - - if t == dtype { - return true - } - - _, ok := t.Elem().FieldByName(dname) - - return ok - }) -} - -// SelectByBackingInfo returns a new list with devices matching the given backing info. -// If the value of backing is nil, any device with a backing of the same type will be returned. -func (l VirtualDeviceList) SelectByBackingInfo(backing types.BaseVirtualDeviceBackingInfo) VirtualDeviceList { - t := reflect.TypeOf(backing) - - return l.Select(func(device types.BaseVirtualDevice) bool { - db := device.GetVirtualDevice().Backing - if db == nil { - return false - } - - if reflect.TypeOf(db) != t { - return false - } - - if reflect.ValueOf(backing).IsNil() { - // selecting by backing type - return true - } - - switch a := db.(type) { - case *types.VirtualEthernetCardNetworkBackingInfo: - b := backing.(*types.VirtualEthernetCardNetworkBackingInfo) - return a.DeviceName == b.DeviceName - case *types.VirtualEthernetCardDistributedVirtualPortBackingInfo: - b := backing.(*types.VirtualEthernetCardDistributedVirtualPortBackingInfo) - return a.Port.SwitchUuid == b.Port.SwitchUuid && - a.Port.PortgroupKey == b.Port.PortgroupKey - case *types.VirtualDiskFlatVer2BackingInfo: - b := backing.(*types.VirtualDiskFlatVer2BackingInfo) - if a.Parent != nil && b.Parent != nil { - return a.Parent.FileName == b.Parent.FileName - } - return a.FileName == b.FileName - case *types.VirtualSerialPortURIBackingInfo: - b := backing.(*types.VirtualSerialPortURIBackingInfo) - return a.ServiceURI == b.ServiceURI - case types.BaseVirtualDeviceFileBackingInfo: - b := backing.(types.BaseVirtualDeviceFileBackingInfo) - return a.GetVirtualDeviceFileBackingInfo().FileName == b.GetVirtualDeviceFileBackingInfo().FileName - default: - return false - } - }) -} - -// Find returns the device matching the given name. -func (l VirtualDeviceList) Find(name string) types.BaseVirtualDevice { - for _, device := range l { - if l.Name(device) == name { - return device - } - } - return nil -} - -// FindByKey returns the device matching the given key. -func (l VirtualDeviceList) FindByKey(key int32) types.BaseVirtualDevice { - for _, device := range l { - if device.GetVirtualDevice().Key == key { - return device - } - } - return nil -} - -// FindIDEController will find the named IDE controller if given, otherwise will pick an available controller. -// An error is returned if the named controller is not found or not an IDE controller. Or, if name is not -// given and no available controller can be found. -func (l VirtualDeviceList) FindIDEController(name string) (*types.VirtualIDEController, error) { - if name != "" { - d := l.Find(name) - if d == nil { - return nil, fmt.Errorf("device '%s' not found", name) - } - if c, ok := d.(*types.VirtualIDEController); ok { - return c, nil - } - return nil, fmt.Errorf("%s is not an IDE controller", name) - } - - c := l.PickController((*types.VirtualIDEController)(nil)) - if c == nil { - return nil, errors.New("no available IDE controller") - } - - return c.(*types.VirtualIDEController), nil -} - -// CreateIDEController creates a new IDE controller. -func (l VirtualDeviceList) CreateIDEController() (types.BaseVirtualDevice, error) { - ide := &types.VirtualIDEController{} - ide.Key = l.NewKey() - return ide, nil -} - -// FindSCSIController will find the named SCSI controller if given, otherwise will pick an available controller. -// An error is returned if the named controller is not found or not an SCSI controller. Or, if name is not -// given and no available controller can be found. -func (l VirtualDeviceList) FindSCSIController(name string) (*types.VirtualSCSIController, error) { - if name != "" { - d := l.Find(name) - if d == nil { - return nil, fmt.Errorf("device '%s' not found", name) - } - if c, ok := d.(types.BaseVirtualSCSIController); ok { - return c.GetVirtualSCSIController(), nil - } - return nil, fmt.Errorf("%s is not an SCSI controller", name) - } - - c := l.PickController((*types.VirtualSCSIController)(nil)) - if c == nil { - return nil, errors.New("no available SCSI controller") - } - - return c.(types.BaseVirtualSCSIController).GetVirtualSCSIController(), nil -} - -// CreateSCSIController creates a new SCSI controller of type name if given, otherwise defaults to lsilogic. -func (l VirtualDeviceList) CreateSCSIController(name string) (types.BaseVirtualDevice, error) { - ctypes := SCSIControllerTypes() - - if name == "scsi" || name == "" { - name = ctypes.Type(ctypes[0]) - } - - found := ctypes.Select(func(device types.BaseVirtualDevice) bool { - return l.Type(device) == name - }) - - if len(found) == 0 { - return nil, fmt.Errorf("unknown SCSI controller type '%s'", name) - } - - c, ok := found[0].(types.BaseVirtualSCSIController) - if !ok { - return nil, fmt.Errorf("invalid SCSI controller type '%s'", name) - } - - scsi := c.GetVirtualSCSIController() - scsi.BusNumber = l.newSCSIBusNumber() - scsi.Key = l.NewKey() - return c.(types.BaseVirtualDevice), nil -} - -var scsiBusNumbers = []int{0, 1, 2, 3} - -// newSCSIBusNumber returns the bus number to use for adding a new SCSI bus device. -// -1 is returned if there are no bus numbers available. -func (l VirtualDeviceList) newSCSIBusNumber() int32 { - var used []int - - for _, d := range l.SelectByType((*types.VirtualSCSIController)(nil)) { - num := d.(types.BaseVirtualSCSIController).GetVirtualSCSIController().BusNumber - if num >= 0 { - used = append(used, int(num)) - } // else caller is creating a new vm using SCSIControllerTypes - } - - sort.Ints(used) - - for i, n := range scsiBusNumbers { - if i == len(used) || n != used[i] { - return int32(n) - } - } - - return -1 -} - -// FindDiskController will find an existing ide or scsi disk controller. -func (l VirtualDeviceList) FindDiskController(name string) (types.BaseVirtualController, error) { - switch { - case name == "ide": - return l.FindIDEController("") - case name == "scsi" || name == "": - return l.FindSCSIController("") - default: - if c, ok := l.Find(name).(types.BaseVirtualController); ok { - return c, nil - } - return nil, fmt.Errorf("%s is not a valid controller", name) - } -} - -// PickController returns a controller of the given type(s). -// If no controllers are found or have no available slots, then nil is returned. -func (l VirtualDeviceList) PickController(kind types.BaseVirtualController) types.BaseVirtualController { - l = l.SelectByType(kind.(types.BaseVirtualDevice)).Select(func(device types.BaseVirtualDevice) bool { - num := len(device.(types.BaseVirtualController).GetVirtualController().Device) - - switch device.(type) { - case types.BaseVirtualSCSIController: - return num < 15 - case *types.VirtualIDEController: - return num < 2 - default: - return true - } - }) - - if len(l) == 0 { - return nil - } - - return l[0].(types.BaseVirtualController) -} - -// newUnitNumber returns the unit number to use for attaching a new device to the given controller. -func (l VirtualDeviceList) newUnitNumber(c types.BaseVirtualController) int32 { - key := c.GetVirtualController().Key - var max int32 = -1 - - for _, device := range l { - d := device.GetVirtualDevice() - - if d.ControllerKey == key { - if d.UnitNumber != nil && *d.UnitNumber > max { - max = *d.UnitNumber - } - } - } - - return max + 1 -} - -// NewKey returns the key to use for adding a new device to the device list. -// The device list we're working with here may not be complete (e.g. when -// we're only adding new devices), so any positive keys could conflict with device keys -// that are already in use. To avoid this type of conflict, we can use negative keys -// here, which will be resolved to positive keys by vSphere as the reconfiguration is done. -func (l VirtualDeviceList) NewKey() int32 { - var key int32 = -200 - - for _, device := range l { - d := device.GetVirtualDevice() - if d.Key < key { - key = d.Key - } - } - - return key - 1 -} - -// AssignController assigns a device to a controller. -func (l VirtualDeviceList) AssignController(device types.BaseVirtualDevice, c types.BaseVirtualController) { - d := device.GetVirtualDevice() - d.ControllerKey = c.GetVirtualController().Key - d.UnitNumber = new(int32) - *d.UnitNumber = l.newUnitNumber(c) - if d.Key == 0 { - d.Key = -1 - } -} - -// CreateDisk creates a new VirtualDisk device which can be added to a VM. -func (l VirtualDeviceList) CreateDisk(c types.BaseVirtualController, ds types.ManagedObjectReference, name string) *types.VirtualDisk { - // If name is not specified, one will be chosen for you. - // But if when given, make sure it ends in .vmdk, otherwise it will be treated as a directory. - if len(name) > 0 && filepath.Ext(name) != ".vmdk" { - name += ".vmdk" - } - - device := &types.VirtualDisk{ - VirtualDevice: types.VirtualDevice{ - Backing: &types.VirtualDiskFlatVer2BackingInfo{ - DiskMode: string(types.VirtualDiskModePersistent), - ThinProvisioned: types.NewBool(true), - VirtualDeviceFileBackingInfo: types.VirtualDeviceFileBackingInfo{ - FileName: name, - Datastore: &ds, - }, - }, - }, - } - - l.AssignController(device, c) - return device -} - -// ChildDisk creates a new VirtualDisk device, linked to the given parent disk, which can be added to a VM. -func (l VirtualDeviceList) ChildDisk(parent *types.VirtualDisk) *types.VirtualDisk { - disk := *parent - backing := disk.Backing.(*types.VirtualDiskFlatVer2BackingInfo) - ds := strings.SplitN(backing.FileName[1:], "]", 2) - - // Use specified disk as parent backing to a new disk. - disk.Backing = &types.VirtualDiskFlatVer2BackingInfo{ - VirtualDeviceFileBackingInfo: types.VirtualDeviceFileBackingInfo{ - FileName: fmt.Sprintf("[%s]", ds[0]), - Datastore: backing.Datastore, - }, - Parent: backing, - DiskMode: backing.DiskMode, - ThinProvisioned: backing.ThinProvisioned, - } - - return &disk -} - -func (l VirtualDeviceList) connectivity(device types.BaseVirtualDevice, v bool) error { - c := device.GetVirtualDevice().Connectable - if c == nil { - return fmt.Errorf("%s is not connectable", l.Name(device)) - } - - c.Connected = v - c.StartConnected = v - - return nil -} - -// Connect changes the device to connected, returns an error if the device is not connectable. -func (l VirtualDeviceList) Connect(device types.BaseVirtualDevice) error { - return l.connectivity(device, true) -} - -// Disconnect changes the device to disconnected, returns an error if the device is not connectable. -func (l VirtualDeviceList) Disconnect(device types.BaseVirtualDevice) error { - return l.connectivity(device, false) -} - -// FindCdrom finds a cdrom device with the given name, defaulting to the first cdrom device if any. -func (l VirtualDeviceList) FindCdrom(name string) (*types.VirtualCdrom, error) { - if name != "" { - d := l.Find(name) - if d == nil { - return nil, fmt.Errorf("device '%s' not found", name) - } - if c, ok := d.(*types.VirtualCdrom); ok { - return c, nil - } - return nil, fmt.Errorf("%s is not a cdrom device", name) - } - - c := l.SelectByType((*types.VirtualCdrom)(nil)) - if len(c) == 0 { - return nil, errors.New("no cdrom device found") - } - - return c[0].(*types.VirtualCdrom), nil -} - -// CreateCdrom creates a new VirtualCdrom device which can be added to a VM. -func (l VirtualDeviceList) CreateCdrom(c *types.VirtualIDEController) (*types.VirtualCdrom, error) { - device := &types.VirtualCdrom{} - - l.AssignController(device, c) - - l.setDefaultCdromBacking(device) - - device.Connectable = &types.VirtualDeviceConnectInfo{ - AllowGuestControl: true, - Connected: true, - StartConnected: true, - } - - return device, nil -} - -// InsertIso changes the cdrom device backing to use the given iso file. -func (l VirtualDeviceList) InsertIso(device *types.VirtualCdrom, iso string) *types.VirtualCdrom { - device.Backing = &types.VirtualCdromIsoBackingInfo{ - VirtualDeviceFileBackingInfo: types.VirtualDeviceFileBackingInfo{ - FileName: iso, - }, - } - - return device -} - -// EjectIso removes the iso file based backing and replaces with the default cdrom backing. -func (l VirtualDeviceList) EjectIso(device *types.VirtualCdrom) *types.VirtualCdrom { - l.setDefaultCdromBacking(device) - return device -} - -func (l VirtualDeviceList) setDefaultCdromBacking(device *types.VirtualCdrom) { - device.Backing = &types.VirtualCdromAtapiBackingInfo{ - VirtualDeviceDeviceBackingInfo: types.VirtualDeviceDeviceBackingInfo{ - DeviceName: fmt.Sprintf("%s-%d-%d", DeviceTypeCdrom, device.ControllerKey, device.UnitNumber), - UseAutoDetect: types.NewBool(false), - }, - } -} - -// FindFloppy finds a floppy device with the given name, defaulting to the first floppy device if any. -func (l VirtualDeviceList) FindFloppy(name string) (*types.VirtualFloppy, error) { - if name != "" { - d := l.Find(name) - if d == nil { - return nil, fmt.Errorf("device '%s' not found", name) - } - if c, ok := d.(*types.VirtualFloppy); ok { - return c, nil - } - return nil, fmt.Errorf("%s is not a floppy device", name) - } - - c := l.SelectByType((*types.VirtualFloppy)(nil)) - if len(c) == 0 { - return nil, errors.New("no floppy device found") - } - - return c[0].(*types.VirtualFloppy), nil -} - -// CreateFloppy creates a new VirtualFloppy device which can be added to a VM. -func (l VirtualDeviceList) CreateFloppy() (*types.VirtualFloppy, error) { - device := &types.VirtualFloppy{} - - c := l.PickController((*types.VirtualSIOController)(nil)) - if c == nil { - return nil, errors.New("no available SIO controller") - } - - l.AssignController(device, c) - - l.setDefaultFloppyBacking(device) - - device.Connectable = &types.VirtualDeviceConnectInfo{ - AllowGuestControl: true, - Connected: true, - StartConnected: true, - } - - return device, nil -} - -// InsertImg changes the floppy device backing to use the given img file. -func (l VirtualDeviceList) InsertImg(device *types.VirtualFloppy, img string) *types.VirtualFloppy { - device.Backing = &types.VirtualFloppyImageBackingInfo{ - VirtualDeviceFileBackingInfo: types.VirtualDeviceFileBackingInfo{ - FileName: img, - }, - } - - return device -} - -// EjectImg removes the img file based backing and replaces with the default floppy backing. -func (l VirtualDeviceList) EjectImg(device *types.VirtualFloppy) *types.VirtualFloppy { - l.setDefaultFloppyBacking(device) - return device -} - -func (l VirtualDeviceList) setDefaultFloppyBacking(device *types.VirtualFloppy) { - device.Backing = &types.VirtualFloppyDeviceBackingInfo{ - VirtualDeviceDeviceBackingInfo: types.VirtualDeviceDeviceBackingInfo{ - DeviceName: fmt.Sprintf("%s-%d", DeviceTypeFloppy, device.UnitNumber), - UseAutoDetect: types.NewBool(false), - }, - } -} - -// FindSerialPort finds a serial port device with the given name, defaulting to the first serial port device if any. -func (l VirtualDeviceList) FindSerialPort(name string) (*types.VirtualSerialPort, error) { - if name != "" { - d := l.Find(name) - if d == nil { - return nil, fmt.Errorf("device '%s' not found", name) - } - if c, ok := d.(*types.VirtualSerialPort); ok { - return c, nil - } - return nil, fmt.Errorf("%s is not a serial port device", name) - } - - c := l.SelectByType((*types.VirtualSerialPort)(nil)) - if len(c) == 0 { - return nil, errors.New("no serial port device found") - } - - return c[0].(*types.VirtualSerialPort), nil -} - -// CreateSerialPort creates a new VirtualSerialPort device which can be added to a VM. -func (l VirtualDeviceList) CreateSerialPort() (*types.VirtualSerialPort, error) { - device := &types.VirtualSerialPort{ - YieldOnPoll: true, - } - - c := l.PickController((*types.VirtualSIOController)(nil)) - if c == nil { - return nil, errors.New("no available SIO controller") - } - - l.AssignController(device, c) - - l.setDefaultSerialPortBacking(device) - - return device, nil -} - -// ConnectSerialPort connects a serial port to a server or client uri. -func (l VirtualDeviceList) ConnectSerialPort(device *types.VirtualSerialPort, uri string, client bool) *types.VirtualSerialPort { - direction := types.VirtualDeviceURIBackingOptionDirectionServer - if client { - direction = types.VirtualDeviceURIBackingOptionDirectionClient - } - - device.Backing = &types.VirtualSerialPortURIBackingInfo{ - VirtualDeviceURIBackingInfo: types.VirtualDeviceURIBackingInfo{ - Direction: string(direction), - ServiceURI: uri, - }, - } - - return device -} - -// DisconnectSerialPort disconnects the serial port backing. -func (l VirtualDeviceList) DisconnectSerialPort(device *types.VirtualSerialPort) *types.VirtualSerialPort { - l.setDefaultSerialPortBacking(device) - return device -} - -func (l VirtualDeviceList) setDefaultSerialPortBacking(device *types.VirtualSerialPort) { - device.Backing = &types.VirtualSerialPortURIBackingInfo{ - VirtualDeviceURIBackingInfo: types.VirtualDeviceURIBackingInfo{ - Direction: "client", - ServiceURI: "localhost:0", - }, - } -} - -// CreateEthernetCard creates a new VirtualEthernetCard of the given name name and initialized with the given backing. -func (l VirtualDeviceList) CreateEthernetCard(name string, backing types.BaseVirtualDeviceBackingInfo) (types.BaseVirtualDevice, error) { - ctypes := EthernetCardTypes() - - if name == "" { - name = ctypes.deviceName(ctypes[0]) - } - - found := ctypes.Select(func(device types.BaseVirtualDevice) bool { - return l.deviceName(device) == name - }) - - if len(found) == 0 { - return nil, fmt.Errorf("unknown ethernet card type '%s'", name) - } - - c, ok := found[0].(types.BaseVirtualEthernetCard) - if !ok { - return nil, fmt.Errorf("invalid ethernet card type '%s'", name) - } - - c.GetVirtualEthernetCard().Backing = backing - - return c.(types.BaseVirtualDevice), nil -} - -// PrimaryMacAddress returns the MacAddress field of the primary VirtualEthernetCard -func (l VirtualDeviceList) PrimaryMacAddress() string { - eth0 := l.Find("ethernet-0") - - if eth0 == nil { - return "" - } - - return eth0.(types.BaseVirtualEthernetCard).GetVirtualEthernetCard().MacAddress -} - -// convert a BaseVirtualDevice to a BaseVirtualMachineBootOptionsBootableDevice -var bootableDevices = map[string]func(device types.BaseVirtualDevice) types.BaseVirtualMachineBootOptionsBootableDevice{ - DeviceTypeCdrom: func(types.BaseVirtualDevice) types.BaseVirtualMachineBootOptionsBootableDevice { - return &types.VirtualMachineBootOptionsBootableCdromDevice{} - }, - DeviceTypeDisk: func(d types.BaseVirtualDevice) types.BaseVirtualMachineBootOptionsBootableDevice { - return &types.VirtualMachineBootOptionsBootableDiskDevice{ - DeviceKey: d.GetVirtualDevice().Key, - } - }, - DeviceTypeEthernet: func(d types.BaseVirtualDevice) types.BaseVirtualMachineBootOptionsBootableDevice { - return &types.VirtualMachineBootOptionsBootableEthernetDevice{ - DeviceKey: d.GetVirtualDevice().Key, - } - }, - DeviceTypeFloppy: func(types.BaseVirtualDevice) types.BaseVirtualMachineBootOptionsBootableDevice { - return &types.VirtualMachineBootOptionsBootableFloppyDevice{} - }, -} - -// BootOrder returns a list of devices which can be used to set boot order via VirtualMachine.SetBootOptions. -// The order can any of "ethernet", "cdrom", "floppy" or "disk" or by specific device name. -func (l VirtualDeviceList) BootOrder(order []string) []types.BaseVirtualMachineBootOptionsBootableDevice { - var devices []types.BaseVirtualMachineBootOptionsBootableDevice - - for _, name := range order { - if kind, ok := bootableDevices[name]; ok { - for _, device := range l { - if l.Type(device) == name { - devices = append(devices, kind(device)) - } - - } - continue - } - - if d := l.Find(name); d != nil { - if kind, ok := bootableDevices[l.Type(d)]; ok { - devices = append(devices, kind(d)) - } - } - } - - return devices -} - -// SelectBootOrder returns an ordered list of devices matching the given bootable device order -func (l VirtualDeviceList) SelectBootOrder(order []types.BaseVirtualMachineBootOptionsBootableDevice) VirtualDeviceList { - var devices VirtualDeviceList - - for _, bd := range order { - for _, device := range l { - if kind, ok := bootableDevices[l.Type(device)]; ok { - if reflect.DeepEqual(kind(device), bd) { - devices = append(devices, device) - } - } - } - } - - return devices -} - -// TypeName returns the vmodl type name of the device -func (l VirtualDeviceList) TypeName(device types.BaseVirtualDevice) string { - return reflect.TypeOf(device).Elem().Name() -} - -var deviceNameRegexp = regexp.MustCompile(`(?:Virtual)?(?:Machine)?(\w+?)(?:Card|Device|Controller)?$`) - -func (l VirtualDeviceList) deviceName(device types.BaseVirtualDevice) string { - name := "device" - typeName := l.TypeName(device) - - m := deviceNameRegexp.FindStringSubmatch(typeName) - if len(m) == 2 { - name = strings.ToLower(m[1]) - } - - return name -} - -// Type returns a human-readable name for the given device -func (l VirtualDeviceList) Type(device types.BaseVirtualDevice) string { - switch device.(type) { - case types.BaseVirtualEthernetCard: - return DeviceTypeEthernet - case *types.ParaVirtualSCSIController: - return "pvscsi" - case *types.VirtualLsiLogicSASController: - return "lsilogic-sas" - default: - return l.deviceName(device) - } -} - -// Name returns a stable, human-readable name for the given device -func (l VirtualDeviceList) Name(device types.BaseVirtualDevice) string { - var key string - var UnitNumber int32 - d := device.GetVirtualDevice() - if d.UnitNumber != nil { - UnitNumber = *d.UnitNumber - } - - dtype := l.Type(device) - switch dtype { - case DeviceTypeEthernet: - key = fmt.Sprintf("%d", UnitNumber-7) - case DeviceTypeDisk: - key = fmt.Sprintf("%d-%d", d.ControllerKey, UnitNumber) - default: - key = fmt.Sprintf("%d", d.Key) - } - - return fmt.Sprintf("%s-%s", dtype, key) -} - -// ConfigSpec creates a virtual machine configuration spec for -// the specified operation, for the list of devices in the device list. -func (l VirtualDeviceList) ConfigSpec(op types.VirtualDeviceConfigSpecOperation) ([]types.BaseVirtualDeviceConfigSpec, error) { - var fop types.VirtualDeviceConfigSpecFileOperation - switch op { - case types.VirtualDeviceConfigSpecOperationAdd: - fop = types.VirtualDeviceConfigSpecFileOperationCreate - case types.VirtualDeviceConfigSpecOperationEdit: - fop = types.VirtualDeviceConfigSpecFileOperationReplace - case types.VirtualDeviceConfigSpecOperationRemove: - fop = types.VirtualDeviceConfigSpecFileOperationDestroy - default: - panic("unknown op") - } - - var res []types.BaseVirtualDeviceConfigSpec - for _, device := range l { - config := &types.VirtualDeviceConfigSpec{ - Device: device, - Operation: op, - } - - if disk, ok := device.(*types.VirtualDisk); ok { - config.FileOperation = fop - - // Special case to attach an existing disk - if op == types.VirtualDeviceConfigSpecOperationAdd && disk.CapacityInKB == 0 { - childDisk := false - if b, ok := disk.Backing.(*types.VirtualDiskFlatVer2BackingInfo); ok { - childDisk = b.Parent != nil - } - - if !childDisk { - // Existing disk, clear file operation - config.FileOperation = "" - } - } - } - - res = append(res, config) - } - - return res, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/virtual_disk_manager.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/virtual_disk_manager.go deleted file mode 100644 index 800cfa07..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/virtual_disk_manager.go +++ /dev/null @@ -1,145 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type VirtualDiskManager struct { - Common -} - -func NewVirtualDiskManager(c *vim25.Client) *VirtualDiskManager { - m := VirtualDiskManager{ - Common: NewCommon(c, *c.ServiceContent.VirtualDiskManager), - } - - return &m -} - -// CopyVirtualDisk copies a virtual disk, performing conversions as specified in the spec. -func (m VirtualDiskManager) CopyVirtualDisk( - ctx context.Context, - sourceName string, sourceDatacenter *Datacenter, - destName string, destDatacenter *Datacenter, - destSpec *types.VirtualDiskSpec, force bool) (*Task, error) { - - req := types.CopyVirtualDisk_Task{ - This: m.Reference(), - SourceName: sourceName, - DestName: destName, - DestSpec: destSpec, - Force: types.NewBool(force), - } - - if sourceDatacenter != nil { - ref := sourceDatacenter.Reference() - req.SourceDatacenter = &ref - } - - if destDatacenter != nil { - ref := destDatacenter.Reference() - req.DestDatacenter = &ref - } - - res, err := methods.CopyVirtualDisk_Task(ctx, m.c, &req) - if err != nil { - return nil, err - } - - return NewTask(m.c, res.Returnval), nil -} - -// CreateVirtualDisk creates a new virtual disk. -func (m VirtualDiskManager) CreateVirtualDisk( - ctx context.Context, - name string, datacenter *Datacenter, - spec types.BaseVirtualDiskSpec) (*Task, error) { - - req := types.CreateVirtualDisk_Task{ - This: m.Reference(), - Name: name, - Spec: spec, - } - - if datacenter != nil { - ref := datacenter.Reference() - req.Datacenter = &ref - } - - res, err := methods.CreateVirtualDisk_Task(ctx, m.c, &req) - if err != nil { - return nil, err - } - - return NewTask(m.c, res.Returnval), nil -} - -// MoveVirtualDisk moves a virtual disk. -func (m VirtualDiskManager) MoveVirtualDisk( - ctx context.Context, - sourceName string, sourceDatacenter *Datacenter, - destName string, destDatacenter *Datacenter, - force bool) (*Task, error) { - req := types.MoveVirtualDisk_Task{ - This: m.Reference(), - SourceName: sourceName, - DestName: destName, - Force: types.NewBool(force), - } - - if sourceDatacenter != nil { - ref := sourceDatacenter.Reference() - req.SourceDatacenter = &ref - } - - if destDatacenter != nil { - ref := destDatacenter.Reference() - req.DestDatacenter = &ref - } - - res, err := methods.MoveVirtualDisk_Task(ctx, m.c, &req) - if err != nil { - return nil, err - } - - return NewTask(m.c, res.Returnval), nil -} - -// DeleteVirtualDisk deletes a virtual disk. -func (m VirtualDiskManager) DeleteVirtualDisk(ctx context.Context, name string, dc *Datacenter) (*Task, error) { - req := types.DeleteVirtualDisk_Task{ - This: m.Reference(), - Name: name, - } - - if dc != nil { - ref := dc.Reference() - req.Datacenter = &ref - } - - res, err := methods.DeleteVirtualDisk_Task(ctx, m.c, &req) - if err != nil { - return nil, err - } - - return NewTask(m.c, res.Returnval), nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/virtual_machine.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/virtual_machine.go deleted file mode 100644 index 4faeae75..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/virtual_machine.go +++ /dev/null @@ -1,614 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -import ( - "errors" - "fmt" - "net" - - "github.com/vmware/govmomi/property" - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/mo" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -const ( - PropRuntimePowerState = "summary.runtime.powerState" -) - -type VirtualMachine struct { - Common - - InventoryPath string -} - -func (v VirtualMachine) String() string { - if v.InventoryPath == "" { - return v.Common.String() - } - return fmt.Sprintf("%v @ %v", v.Common, v.InventoryPath) -} - -func NewVirtualMachine(c *vim25.Client, ref types.ManagedObjectReference) *VirtualMachine { - return &VirtualMachine{ - Common: NewCommon(c, ref), - } -} - -func (v VirtualMachine) Name(ctx context.Context) (string, error) { - var o mo.VirtualMachine - - err := v.Properties(ctx, v.Reference(), []string{"name"}, &o) - if err != nil { - return "", err - } - - return o.Name, nil -} - -func (v VirtualMachine) PowerState(ctx context.Context) (types.VirtualMachinePowerState, error) { - var o mo.VirtualMachine - - err := v.Properties(ctx, v.Reference(), []string{PropRuntimePowerState}, &o) - if err != nil { - return "", err - } - - return o.Summary.Runtime.PowerState, nil -} - -func (v VirtualMachine) PowerOn(ctx context.Context) (*Task, error) { - req := types.PowerOnVM_Task{ - This: v.Reference(), - } - - res, err := methods.PowerOnVM_Task(ctx, v.c, &req) - if err != nil { - return nil, err - } - - return NewTask(v.c, res.Returnval), nil -} - -func (v VirtualMachine) PowerOff(ctx context.Context) (*Task, error) { - req := types.PowerOffVM_Task{ - This: v.Reference(), - } - - res, err := methods.PowerOffVM_Task(ctx, v.c, &req) - if err != nil { - return nil, err - } - - return NewTask(v.c, res.Returnval), nil -} - -func (v VirtualMachine) Reset(ctx context.Context) (*Task, error) { - req := types.ResetVM_Task{ - This: v.Reference(), - } - - res, err := methods.ResetVM_Task(ctx, v.c, &req) - if err != nil { - return nil, err - } - - return NewTask(v.c, res.Returnval), nil -} - -func (v VirtualMachine) Suspend(ctx context.Context) (*Task, error) { - req := types.SuspendVM_Task{ - This: v.Reference(), - } - - res, err := methods.SuspendVM_Task(ctx, v.c, &req) - if err != nil { - return nil, err - } - - return NewTask(v.c, res.Returnval), nil -} - -func (v VirtualMachine) ShutdownGuest(ctx context.Context) error { - req := types.ShutdownGuest{ - This: v.Reference(), - } - - _, err := methods.ShutdownGuest(ctx, v.c, &req) - return err -} - -func (v VirtualMachine) RebootGuest(ctx context.Context) error { - req := types.RebootGuest{ - This: v.Reference(), - } - - _, err := methods.RebootGuest(ctx, v.c, &req) - return err -} - -func (v VirtualMachine) Destroy(ctx context.Context) (*Task, error) { - req := types.Destroy_Task{ - This: v.Reference(), - } - - res, err := methods.Destroy_Task(ctx, v.c, &req) - if err != nil { - return nil, err - } - - return NewTask(v.c, res.Returnval), nil -} - -func (v VirtualMachine) Clone(ctx context.Context, folder *Folder, name string, config types.VirtualMachineCloneSpec) (*Task, error) { - req := types.CloneVM_Task{ - This: v.Reference(), - Folder: folder.Reference(), - Name: name, - Spec: config, - } - - res, err := methods.CloneVM_Task(ctx, v.c, &req) - if err != nil { - return nil, err - } - - return NewTask(v.c, res.Returnval), nil -} - -func (v VirtualMachine) Customize(ctx context.Context, spec types.CustomizationSpec) (*Task, error) { - req := types.CustomizeVM_Task{ - This: v.Reference(), - Spec: spec, - } - - res, err := methods.CustomizeVM_Task(ctx, v.c, &req) - if err != nil { - return nil, err - } - - return NewTask(v.c, res.Returnval), nil -} - -func (v VirtualMachine) Relocate(ctx context.Context, config types.VirtualMachineRelocateSpec, priority types.VirtualMachineMovePriority) (*Task, error) { - req := types.RelocateVM_Task{ - This: v.Reference(), - Spec: config, - Priority: priority, - } - - res, err := methods.RelocateVM_Task(ctx, v.c, &req) - if err != nil { - return nil, err - } - - return NewTask(v.c, res.Returnval), nil -} - -func (v VirtualMachine) Reconfigure(ctx context.Context, config types.VirtualMachineConfigSpec) (*Task, error) { - req := types.ReconfigVM_Task{ - This: v.Reference(), - Spec: config, - } - - res, err := methods.ReconfigVM_Task(ctx, v.c, &req) - if err != nil { - return nil, err - } - - return NewTask(v.c, res.Returnval), nil -} - -func (v VirtualMachine) WaitForIP(ctx context.Context) (string, error) { - var ip string - - p := property.DefaultCollector(v.c) - err := property.Wait(ctx, p, v.Reference(), []string{"guest.ipAddress"}, func(pc []types.PropertyChange) bool { - for _, c := range pc { - if c.Name != "guest.ipAddress" { - continue - } - if c.Op != types.PropertyChangeOpAssign { - continue - } - if c.Val == nil { - continue - } - - ip = c.Val.(string) - return true - } - - return false - }) - - if err != nil { - return "", err - } - - return ip, nil -} - -// WaitForNetIP waits for the VM guest.net property to report an IP address for all VM NICs. -// Only consider IPv4 addresses if the v4 param is true. -// Returns a map with MAC address as the key and IP address list as the value. -func (v VirtualMachine) WaitForNetIP(ctx context.Context, v4 bool) (map[string][]string, error) { - macs := make(map[string][]string) - - p := property.DefaultCollector(v.c) - - // Wait for all NICs to have a MacAddress, which may not be generated yet. - err := property.Wait(ctx, p, v.Reference(), []string{"config.hardware.device"}, func(pc []types.PropertyChange) bool { - for _, c := range pc { - if c.Op != types.PropertyChangeOpAssign { - continue - } - - devices := c.Val.(types.ArrayOfVirtualDevice).VirtualDevice - for _, device := range devices { - if nic, ok := device.(types.BaseVirtualEthernetCard); ok { - mac := nic.GetVirtualEthernetCard().MacAddress - if mac == "" { - return false - } - macs[mac] = nil - } - } - } - - return true - }) - - err = property.Wait(ctx, p, v.Reference(), []string{"guest.net"}, func(pc []types.PropertyChange) bool { - for _, c := range pc { - if c.Op != types.PropertyChangeOpAssign { - continue - } - - nics := c.Val.(types.ArrayOfGuestNicInfo).GuestNicInfo - for _, nic := range nics { - mac := nic.MacAddress - if mac == "" || nic.IpConfig == nil { - continue - } - - for _, ip := range nic.IpConfig.IpAddress { - if _, ok := macs[mac]; !ok { - continue // Ignore any that don't correspond to a VM device - } - if v4 && net.ParseIP(ip.IpAddress).To4() == nil { - continue // Ignore non IPv4 address - } - macs[mac] = append(macs[mac], ip.IpAddress) - } - } - } - - for _, ips := range macs { - if len(ips) == 0 { - return false - } - } - - return true - }) - - if err != nil { - return nil, err - } - - return macs, nil -} - -// Device returns the VirtualMachine's config.hardware.device property. -func (v VirtualMachine) Device(ctx context.Context) (VirtualDeviceList, error) { - var o mo.VirtualMachine - - err := v.Properties(ctx, v.Reference(), []string{"config.hardware.device"}, &o) - if err != nil { - return nil, err - } - - return VirtualDeviceList(o.Config.Hardware.Device), nil -} - -func (v VirtualMachine) HostSystem(ctx context.Context) (*HostSystem, error) { - var o mo.VirtualMachine - - err := v.Properties(ctx, v.Reference(), []string{"summary"}, &o) - if err != nil { - return nil, err - } - - host := o.Summary.Runtime.Host - if host == nil { - return nil, errors.New("VM doesn't have a HostSystem") - } - - return NewHostSystem(v.c, *host), nil -} - -func (v VirtualMachine) ResourcePool(ctx context.Context) (*ResourcePool, error) { - var o mo.VirtualMachine - - err := v.Properties(ctx, v.Reference(), []string{"resourcePool"}, &o) - if err != nil { - return nil, err - } - - rp := o.ResourcePool - if rp == nil { - return nil, errors.New("VM doesn't have a resourcePool") - } - - return NewResourcePool(v.c, *rp), nil -} - -func (v VirtualMachine) configureDevice(ctx context.Context, op types.VirtualDeviceConfigSpecOperation, fop types.VirtualDeviceConfigSpecFileOperation, devices ...types.BaseVirtualDevice) error { - spec := types.VirtualMachineConfigSpec{} - - for _, device := range devices { - config := &types.VirtualDeviceConfigSpec{ - Device: device, - Operation: op, - } - - if disk, ok := device.(*types.VirtualDisk); ok { - config.FileOperation = fop - - // Special case to attach an existing disk - if op == types.VirtualDeviceConfigSpecOperationAdd && disk.CapacityInKB == 0 { - childDisk := false - if b, ok := disk.Backing.(*types.VirtualDiskFlatVer2BackingInfo); ok { - childDisk = b.Parent != nil - } - - if !childDisk { - config.FileOperation = "" // existing disk - } - } - } - - spec.DeviceChange = append(spec.DeviceChange, config) - } - - task, err := v.Reconfigure(ctx, spec) - if err != nil { - return err - } - - return task.Wait(ctx) -} - -// AddDevice adds the given devices to the VirtualMachine -func (v VirtualMachine) AddDevice(ctx context.Context, device ...types.BaseVirtualDevice) error { - return v.configureDevice(ctx, types.VirtualDeviceConfigSpecOperationAdd, types.VirtualDeviceConfigSpecFileOperationCreate, device...) -} - -// EditDevice edits the given (existing) devices on the VirtualMachine -func (v VirtualMachine) EditDevice(ctx context.Context, device ...types.BaseVirtualDevice) error { - return v.configureDevice(ctx, types.VirtualDeviceConfigSpecOperationEdit, types.VirtualDeviceConfigSpecFileOperationReplace, device...) -} - -// RemoveDevice removes the given devices on the VirtualMachine -func (v VirtualMachine) RemoveDevice(ctx context.Context, keepFiles bool, device ...types.BaseVirtualDevice) error { - fop := types.VirtualDeviceConfigSpecFileOperationDestroy - if keepFiles { - fop = "" - } - return v.configureDevice(ctx, types.VirtualDeviceConfigSpecOperationRemove, fop, device...) -} - -// BootOptions returns the VirtualMachine's config.bootOptions property. -func (v VirtualMachine) BootOptions(ctx context.Context) (*types.VirtualMachineBootOptions, error) { - var o mo.VirtualMachine - - err := v.Properties(ctx, v.Reference(), []string{"config.bootOptions"}, &o) - if err != nil { - return nil, err - } - - return o.Config.BootOptions, nil -} - -// SetBootOptions reconfigures the VirtualMachine with the given options. -func (v VirtualMachine) SetBootOptions(ctx context.Context, options *types.VirtualMachineBootOptions) error { - spec := types.VirtualMachineConfigSpec{} - - spec.BootOptions = options - - task, err := v.Reconfigure(ctx, spec) - if err != nil { - return err - } - - return task.Wait(ctx) -} - -// Answer answers a pending question. -func (v VirtualMachine) Answer(ctx context.Context, id, answer string) error { - req := types.AnswerVM{ - This: v.Reference(), - QuestionId: id, - AnswerChoice: answer, - } - - _, err := methods.AnswerVM(ctx, v.c, &req) - if err != nil { - return err - } - - return nil -} - -// CreateSnapshot creates a new snapshot of a virtual machine. -func (v VirtualMachine) CreateSnapshot(ctx context.Context, name string, description string, memory bool, quiesce bool) (*Task, error) { - req := types.CreateSnapshot_Task{ - This: v.Reference(), - Name: name, - Description: description, - Memory: memory, - Quiesce: quiesce, - } - - res, err := methods.CreateSnapshot_Task(ctx, v.c, &req) - if err != nil { - return nil, err - } - - return NewTask(v.c, res.Returnval), nil -} - -// RemoveAllSnapshot removes all snapshots of a virtual machine -func (v VirtualMachine) RemoveAllSnapshot(ctx context.Context, consolidate *bool) (*Task, error) { - req := types.RemoveAllSnapshots_Task{ - This: v.Reference(), - Consolidate: consolidate, - } - - res, err := methods.RemoveAllSnapshots_Task(ctx, v.c, &req) - if err != nil { - return nil, err - } - - return NewTask(v.c, res.Returnval), nil -} - -// RevertToSnapshot reverts to a named snapshot -func (v VirtualMachine) RevertToSnapshot(ctx context.Context, name string, suppressPowerOn bool) (*Task, error) { - var o mo.VirtualMachine - - err := v.Properties(ctx, v.Reference(), []string{"snapshot"}, &o) - - snapshotTree := o.Snapshot.RootSnapshotList - if len(snapshotTree) < 1 { - return nil, errors.New("No snapshots for this VM") - } - - snapshot, err := traverseSnapshotInTree(snapshotTree, name) - if err != nil { - return nil, err - } - - req := types.RevertToSnapshot_Task{ - This: snapshot, - SuppressPowerOn: types.NewBool(suppressPowerOn), - } - - res, err := methods.RevertToSnapshot_Task(ctx, v.c, &req) - if err != nil { - return nil, err - } - - return NewTask(v.c, res.Returnval), nil -} - -// traverseSnapshotInTree is a recursive function that will traverse a snapshot tree to find a given snapshot -func traverseSnapshotInTree(tree []types.VirtualMachineSnapshotTree, name string) (types.ManagedObjectReference, error) { - var o types.ManagedObjectReference - if tree == nil { - return o, errors.New("Snapshot tree is empty") - } - for _, s := range tree { - if s.Name == name { - o = s.Snapshot - break - } else { - childTree := s.ChildSnapshotList - var err error - o, err = traverseSnapshotInTree(childTree, name) - if err != nil { - return o, err - } - } - } - if o.Value == "" { - return o, errors.New("Snapshot not found") - } - - return o, nil -} - -// IsToolsRunning returns true if VMware Tools is currently running in the guest OS, and false otherwise. -func (v VirtualMachine) IsToolsRunning(ctx context.Context) (bool, error) { - var o mo.VirtualMachine - - err := v.Properties(ctx, v.Reference(), []string{"guest.toolsRunningStatus"}, &o) - if err != nil { - return false, err - } - - return o.Guest.ToolsRunningStatus == string(types.VirtualMachineToolsRunningStatusGuestToolsRunning), nil -} - -// Wait for the VirtualMachine to change to the desired power state. -func (v VirtualMachine) WaitForPowerState(ctx context.Context, state types.VirtualMachinePowerState) error { - p := property.DefaultCollector(v.c) - err := property.Wait(ctx, p, v.Reference(), []string{PropRuntimePowerState}, func(pc []types.PropertyChange) bool { - for _, c := range pc { - if c.Name != PropRuntimePowerState { - continue - } - if c.Val == nil { - continue - } - - ps := c.Val.(types.VirtualMachinePowerState) - if ps == state { - return true - } - } - return false - }) - - return err -} - -func (v VirtualMachine) MarkAsTemplate(ctx context.Context) error { - req := types.MarkAsTemplate{ - This: v.Reference(), - } - - _, err := methods.MarkAsTemplate(ctx, v.c, &req) - if err != nil { - return err - } - - return nil -} - -func (v VirtualMachine) MarkAsVirtualMachine(ctx context.Context, pool ResourcePool, host *HostSystem) error { - req := types.MarkAsVirtualMachine{ - This: v.Reference(), - Pool: pool.Reference(), - } - - if host != nil { - ref := host.Reference() - req.Host = &ref - } - - _, err := methods.MarkAsVirtualMachine(ctx, v.c, &req) - if err != nil { - return err - } - - return nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/vmware_distributed_virtual_switch.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/vmware_distributed_virtual_switch.go deleted file mode 100644 index f6caf987..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/object/vmware_distributed_virtual_switch.go +++ /dev/null @@ -1,21 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package object - -type VmwareDistributedVirtualSwitch struct { - DistributedVirtualSwitch -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/property/collector.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/property/collector.go deleted file mode 100644 index 50ea8d88..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/property/collector.go +++ /dev/null @@ -1,174 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package property - -import ( - "errors" - - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/mo" - "github.com/vmware/govmomi/vim25/soap" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -// Collector models the PropertyCollector managed object. -// -// For more information, see: -// http://pubs.vmware.com/vsphere-55/index.jsp#com.vmware.wssdk.apiref.doc/vmodl.query.PropertyCollector.html -// -type Collector struct { - roundTripper soap.RoundTripper - reference types.ManagedObjectReference -} - -// DefaultCollector returns the session's default property collector. -func DefaultCollector(c *vim25.Client) *Collector { - p := Collector{ - roundTripper: c, - reference: c.ServiceContent.PropertyCollector, - } - - return &p -} - -func (p Collector) Reference() types.ManagedObjectReference { - return p.reference -} - -// Create creates a new session-specific Collector that can be used to -// retrieve property updates independent of any other Collector. -func (p *Collector) Create(ctx context.Context) (*Collector, error) { - req := types.CreatePropertyCollector{ - This: p.Reference(), - } - - res, err := methods.CreatePropertyCollector(ctx, p.roundTripper, &req) - if err != nil { - return nil, err - } - - newp := Collector{ - roundTripper: p.roundTripper, - reference: res.Returnval, - } - - return &newp, nil -} - -// Destroy destroys this Collector. -func (p *Collector) Destroy(ctx context.Context) error { - req := types.DestroyPropertyCollector{ - This: p.Reference(), - } - - _, err := methods.DestroyPropertyCollector(ctx, p.roundTripper, &req) - if err != nil { - return err - } - - p.reference = types.ManagedObjectReference{} - return nil -} - -func (p *Collector) CreateFilter(ctx context.Context, req types.CreateFilter) error { - req.This = p.Reference() - - _, err := methods.CreateFilter(ctx, p.roundTripper, &req) - if err != nil { - return err - } - - return nil -} - -func (p *Collector) WaitForUpdates(ctx context.Context, v string) (*types.UpdateSet, error) { - req := types.WaitForUpdatesEx{ - This: p.Reference(), - Version: v, - } - - res, err := methods.WaitForUpdatesEx(ctx, p.roundTripper, &req) - if err != nil { - return nil, err - } - - return res.Returnval, nil -} - -func (p *Collector) RetrieveProperties(ctx context.Context, req types.RetrieveProperties) (*types.RetrievePropertiesResponse, error) { - req.This = p.Reference() - return methods.RetrieveProperties(ctx, p.roundTripper, &req) -} - -// Retrieve loads properties for a slice of managed objects. The dst argument -// must be a pointer to a []interface{}, which is populated with the instances -// of the specified managed objects, with the relevant properties filled in. If -// the properties slice is nil, all properties are loaded. -func (p *Collector) Retrieve(ctx context.Context, objs []types.ManagedObjectReference, ps []string, dst interface{}) error { - var propSpec *types.PropertySpec - var objectSet []types.ObjectSpec - - for _, obj := range objs { - // Ensure that all object reference types are the same - if propSpec == nil { - propSpec = &types.PropertySpec{ - Type: obj.Type, - } - - if ps == nil { - propSpec.All = types.NewBool(true) - } else { - propSpec.PathSet = ps - } - } else { - if obj.Type != propSpec.Type { - return errors.New("object references must have the same type") - } - } - - objectSpec := types.ObjectSpec{ - Obj: obj, - Skip: types.NewBool(false), - } - - objectSet = append(objectSet, objectSpec) - } - - req := types.RetrieveProperties{ - SpecSet: []types.PropertyFilterSpec{ - { - ObjectSet: objectSet, - PropSet: []types.PropertySpec{*propSpec}, - }, - }, - } - - res, err := p.RetrieveProperties(ctx, req) - if err != nil { - return err - } - - return mo.LoadRetrievePropertiesResponse(res, dst) -} - -// RetrieveOne calls Retrieve with a single managed object reference. -func (p *Collector) RetrieveOne(ctx context.Context, obj types.ManagedObjectReference, ps []string, dst interface{}) error { - var objs = []types.ManagedObjectReference{obj} - return p.Retrieve(ctx, objs, ps, dst) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/property/wait.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/property/wait.go deleted file mode 100644 index 930cad77..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/property/wait.go +++ /dev/null @@ -1,147 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package property - -import ( - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -// Wait waits for any of the specified properties of the specified managed -// object to change. It calls the specified function for every update it -// receives. If this function returns false, it continues waiting for -// subsequent updates. If this function returns true, it stops waiting and -// returns. -// -// To only receive updates for the specified managed object, the function -// creates a new property collector and calls CreateFilter. A new property -// collector is required because filters can only be added, not removed. -// -// The newly created collector is destroyed before this function returns (both -// in case of success or error). -// -func Wait(ctx context.Context, c *Collector, obj types.ManagedObjectReference, ps []string, f func([]types.PropertyChange) bool) error { - p, err := c.Create(ctx) - if err != nil { - return err - } - - // Attempt to destroy the collector using the background context, as the - // specified context may have timed out or have been cancelled. - defer p.Destroy(context.Background()) - - req := types.CreateFilter{ - Spec: types.PropertyFilterSpec{ - ObjectSet: []types.ObjectSpec{ - { - Obj: obj, - }, - }, - PropSet: []types.PropertySpec{ - { - PathSet: ps, - Type: obj.Type, - }, - }, - }, - } - - err = p.CreateFilter(ctx, req) - if err != nil { - return err - } - return waitLoop(ctx, p, f) -} - -// WaitForView waits for any of the specified properties of the managed -// objects in the View to change. It calls the specified function for every update it -// receives. If this function returns false, it continues waiting for -// subsequent updates. If this function returns true, it stops waiting and -// returns. -// -// To only receive updates for the View's specified managed objects, the function -// creates a new property collector and calls CreateFilter. A new property -// collector is required because filters can only be added, not removed. -// -// The newly created collector is destroyed before this function returns (both -// in case of success or error). -// -// The code assumes that all objects in the View are the same type -func WaitForView(ctx context.Context, c *Collector, view types.ManagedObjectReference, obj types.ManagedObjectReference, ps []string, f func([]types.PropertyChange) bool) error { - p, err := c.Create(ctx) - if err != nil { - return err - } - - // Attempt to destroy the collector using the background context, as the - // specified context may have timed out or have been cancelled. - defer p.Destroy(context.Background()) - - req := types.CreateFilter{ - - Spec: types.PropertyFilterSpec{ - ObjectSet: []types.ObjectSpec{ - { - Obj: view, - SelectSet: []types.BaseSelectionSpec{ - &types.TraversalSpec{ - SelectionSpec: types.SelectionSpec{ - Name: "traverseEntities", - }, - Path: "view", - Type: view.Type}}, - }, - }, - PropSet: []types.PropertySpec{ - types.PropertySpec{ - Type: obj.Type, - PathSet: ps, - }, - }, - }} - - err = p.CreateFilter(ctx, req) - if err != nil { - return err - } - return waitLoop(ctx, p, f) -} - -func waitLoop(ctx context.Context, c *Collector, f func([]types.PropertyChange) bool) error { - for version := ""; ; { - res, err := c.WaitForUpdates(ctx, version) - if err != nil { - return err - } - - // Retry if the result came back empty - if res == nil { - continue - } - - version = res.Version - - for _, fs := range res.FilterSet { - for _, os := range fs.ObjectSet { - if f(os.ChangeSet) { - return nil - } - } - } - } - -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/session/keep_alive.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/session/keep_alive.go deleted file mode 100644 index f157b7f6..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/session/keep_alive.go +++ /dev/null @@ -1,127 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package session - -import ( - "sync" - "time" - - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/soap" - "golang.org/x/net/context" -) - -type keepAlive struct { - sync.Mutex - - roundTripper soap.RoundTripper - idleTime time.Duration - notifyRequest chan struct{} - notifyStop chan struct{} - notifyWaitGroup sync.WaitGroup - - // keepAlive executes a request in the background with the purpose of - // keeping the session active. The response for this request is discarded. - keepAlive func(soap.RoundTripper) error -} - -func defaultKeepAlive(roundTripper soap.RoundTripper) error { - _, _ = methods.GetCurrentTime(context.Background(), roundTripper) - return nil -} - -// KeepAlive wraps the specified soap.RoundTripper and executes a meaningless -// API request in the background after the RoundTripper has been idle for the -// specified amount of idle time. The keep alive process only starts once a -// user logs in and runs until the user logs out again. -func KeepAlive(roundTripper soap.RoundTripper, idleTime time.Duration) soap.RoundTripper { - return KeepAliveHandler(roundTripper, idleTime, defaultKeepAlive) -} - -// KeepAliveHandler works as KeepAlive() does, but the handler param can decide how to handle errors. -// For example, if connectivity to ESX/VC is down long enough for a session to expire, a handler can choose to -// Login() on a types.NotAuthenticated error. If handler returns non-nil, the keep alive go routine will be stopped. -func KeepAliveHandler(roundTripper soap.RoundTripper, idleTime time.Duration, handler func(soap.RoundTripper) error) soap.RoundTripper { - k := &keepAlive{ - roundTripper: roundTripper, - idleTime: idleTime, - notifyRequest: make(chan struct{}), - } - - k.keepAlive = handler - - return k -} - -func (k *keepAlive) start() { - k.Lock() - defer k.Unlock() - - if k.notifyStop != nil { - return - } - - // This channel must be closed to terminate idle timer. - k.notifyStop = make(chan struct{}) - k.notifyWaitGroup.Add(1) - - go func() { - defer k.notifyWaitGroup.Done() - - for t := time.NewTimer(k.idleTime); ; { - select { - case <-k.notifyStop: - return - case <-k.notifyRequest: - t.Reset(k.idleTime) - case <-t.C: - if err := k.keepAlive(k.roundTripper); err != nil { - k.stop() - } - t = time.NewTimer(k.idleTime) - } - } - }() -} - -func (k *keepAlive) stop() { - k.Lock() - defer k.Unlock() - - if k.notifyStop != nil { - close(k.notifyStop) - k.notifyWaitGroup.Wait() - k.notifyStop = nil - } -} - -func (k *keepAlive) RoundTrip(ctx context.Context, req, res soap.HasFault) error { - err := k.roundTripper.RoundTrip(ctx, req, res) - if err != nil { - return err - } - - // Start ticker on login, stop ticker on logout. - switch req.(type) { - case *methods.LoginBody, *methods.LoginExtensionByCertificateBody: - k.start() - case *methods.LogoutBody: - k.stop() - } - - return nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/session/manager.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/session/manager.go deleted file mode 100644 index 5df6ebfc..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/session/manager.go +++ /dev/null @@ -1,163 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package session - -import ( - "net/url" - - "github.com/vmware/govmomi/property" - "github.com/vmware/govmomi/vim25" - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/mo" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type Manager struct { - client *vim25.Client - userSession *types.UserSession -} - -func NewManager(client *vim25.Client) *Manager { - m := Manager{ - client: client, - } - - return &m -} - -func (sm Manager) Reference() types.ManagedObjectReference { - return *sm.client.ServiceContent.SessionManager -} - -func (sm *Manager) Login(ctx context.Context, u *url.Userinfo) error { - req := types.Login{ - This: sm.Reference(), - } - - if u != nil { - req.UserName = u.Username() - if pw, ok := u.Password(); ok { - req.Password = pw - } - } - - login, err := methods.Login(ctx, sm.client, &req) - if err != nil { - return err - } - - sm.userSession = &login.Returnval - return nil -} - -func (sm *Manager) LoginExtensionByCertificate(ctx context.Context, key string, locale string) error { - req := types.LoginExtensionByCertificate{ - This: sm.Reference(), - ExtensionKey: key, - Locale: locale, - } - - login, err := methods.LoginExtensionByCertificate(ctx, sm.client, &req) - if err != nil { - return err - } - - sm.userSession = &login.Returnval - return nil -} - -func (sm *Manager) Logout(ctx context.Context) error { - req := types.Logout{ - This: sm.Reference(), - } - - _, err := methods.Logout(ctx, sm.client, &req) - if err != nil { - return err - } - - sm.userSession = nil - return nil -} - -// UserSession retrieves and returns the SessionManager's CurrentSession field. -// Nil is returned if the session is not authenticated. -func (sm *Manager) UserSession(ctx context.Context) (*types.UserSession, error) { - var mgr mo.SessionManager - - pc := property.DefaultCollector(sm.client) - err := pc.RetrieveOne(ctx, sm.Reference(), []string{"currentSession"}, &mgr) - if err != nil { - // It's OK if we can't retrieve properties because we're not authenticated - if f, ok := err.(types.HasFault); ok { - switch f.Fault().(type) { - case *types.NotAuthenticated: - return nil, nil - } - } - - return nil, err - } - - return mgr.CurrentSession, nil -} - -func (sm *Manager) TerminateSession(ctx context.Context, sessionId []string) error { - req := types.TerminateSession{ - This: sm.Reference(), - SessionId: sessionId, - } - - _, err := methods.TerminateSession(ctx, sm.client, &req) - return err -} - -// SessionIsActive checks whether the session that was created at login is -// still valid. This function only works against vCenter. -func (sm *Manager) SessionIsActive(ctx context.Context) (bool, error) { - if sm.userSession == nil { - return false, nil - } - - req := types.SessionIsActive{ - This: sm.Reference(), - SessionID: sm.userSession.Key, - UserName: sm.userSession.UserName, - } - - active, err := methods.SessionIsActive(ctx, sm.client, &req) - if err != nil { - return false, err - } - - return active.Returnval, err -} - -func (sm *Manager) AcquireGenericServiceTicket(ctx context.Context, spec types.BaseSessionManagerServiceRequestSpec) (*types.SessionManagerGenericServiceTicket, error) { - req := types.AcquireGenericServiceTicket{ - This: sm.Reference(), - Spec: spec, - } - - res, err := methods.AcquireGenericServiceTicket(ctx, sm.client, &req) - if err != nil { - return nil, err - } - - return &res.Returnval, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/task/error.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/task/error.go deleted file mode 100644 index 5f6b8503..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/task/error.go +++ /dev/null @@ -1,32 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package task - -import "github.com/vmware/govmomi/vim25/types" - -type Error struct { - *types.LocalizedMethodFault -} - -// Error returns the task's localized fault message. -func (e Error) Error() string { - return e.LocalizedMethodFault.LocalizedMessage -} - -func (e Error) Fault() types.BaseMethodFault { - return e.LocalizedMethodFault.Fault -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/task/wait.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/task/wait.go deleted file mode 100644 index 9432ee73..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/task/wait.go +++ /dev/null @@ -1,126 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package task - -import ( - "github.com/vmware/govmomi/property" - "github.com/vmware/govmomi/vim25/progress" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type taskProgress struct { - info *types.TaskInfo -} - -func (t taskProgress) Percentage() float32 { - return float32(t.info.Progress) -} - -func (t taskProgress) Detail() string { - return "" -} - -func (t taskProgress) Error() error { - if t.info.Error != nil { - return Error{t.info.Error} - } - - return nil -} - -type taskCallback struct { - ch chan<- progress.Report - info *types.TaskInfo - err error -} - -func (t *taskCallback) fn(pc []types.PropertyChange) bool { - for _, c := range pc { - if c.Name != "info" { - continue - } - - if c.Op != types.PropertyChangeOpAssign { - continue - } - - if c.Val == nil { - continue - } - - ti := c.Val.(types.TaskInfo) - t.info = &ti - } - - pr := taskProgress{t.info} - - // Store copy of error, so Wait() can return it as well. - t.err = pr.Error() - - switch t.info.State { - case types.TaskInfoStateQueued, types.TaskInfoStateRunning: - if t.ch != nil { - // Don't care if this is dropped - select { - case t.ch <- pr: - default: - } - } - return false - case types.TaskInfoStateSuccess, types.TaskInfoStateError: - if t.ch != nil { - // Last one must always be delivered - t.ch <- pr - } - return true - default: - panic("unknown state: " + t.info.State) - } -} - -// Wait waits for a task to finish with either success or failure. It does so -// by waiting for the "info" property of task managed object to change. The -// function returns when it finds the task in the "success" or "error" state. -// In the former case, the return value is nil. In the latter case the return -// value is an instance of this package's Error struct. -// -// Any error returned while waiting for property changes causes the function to -// return immediately and propagate the error. -// -// If the progress.Sinker argument is specified, any progress updates for the -// task are sent here. The completion percentage is passed through directly. -// The detail for the progress update is set to an empty string. If the task -// finishes in the error state, the error instance is passed through as well. -// Note that this error is the same error that is returned by this function. -// -func Wait(ctx context.Context, ref types.ManagedObjectReference, pc *property.Collector, s progress.Sinker) (*types.TaskInfo, error) { - cb := &taskCallback{} - - // Include progress sink if specified - if s != nil { - cb.ch = s.Sink() - defer close(cb.ch) - } - - err := property.Wait(ctx, pc, ref, []string{"info"}, cb.fn) - if err != nil { - return nil, err - } - - return cb.info, cb.err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/client.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/client.go deleted file mode 100644 index 210bf6bf..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/client.go +++ /dev/null @@ -1,123 +0,0 @@ -/* -Copyright (c) 2015-2016 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package vim25 - -import ( - "encoding/json" - - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/soap" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -// Client is a tiny wrapper around the vim25/soap Client that stores session -// specific state (i.e. state that only needs to be retrieved once after the -// client has been created). This means the client can be reused after -// serialization without performing additional requests for initialization. -type Client struct { - *soap.Client - - ServiceContent types.ServiceContent - - // RoundTripper is a separate field such that the client's implementation of - // the RoundTripper interface can be wrapped by separate implementations for - // extra functionality (for example, reauthentication on session timeout). - RoundTripper soap.RoundTripper -} - -// NewClient creates and returns a new client wirh the ServiceContent field -// filled in. -func NewClient(ctx context.Context, rt soap.RoundTripper) (*Client, error) { - serviceContent, err := methods.GetServiceContent(ctx, rt) - if err != nil { - return nil, err - } - - c := Client{ - ServiceContent: serviceContent, - RoundTripper: rt, - } - - // Set client if it happens to be a soap.Client - if sc, ok := rt.(*soap.Client); ok { - c.Client = sc - } - - return &c, nil -} - -// RoundTrip dispatches to the RoundTripper field. -func (c *Client) RoundTrip(ctx context.Context, req, res soap.HasFault) error { - return c.RoundTripper.RoundTrip(ctx, req, res) -} - -type marshaledClient struct { - SoapClient *soap.Client - ServiceContent types.ServiceContent -} - -func (c *Client) MarshalJSON() ([]byte, error) { - m := marshaledClient{ - SoapClient: c.Client, - ServiceContent: c.ServiceContent, - } - - return json.Marshal(m) -} - -func (c *Client) UnmarshalJSON(b []byte) error { - var m marshaledClient - - err := json.Unmarshal(b, &m) - if err != nil { - return err - } - - *c = Client{ - Client: m.SoapClient, - ServiceContent: m.ServiceContent, - RoundTripper: m.SoapClient, - } - - return nil -} - -// Valid returns whether or not the client is valid and ready for use. -// This should be called after unmarshalling the client. -func (c *Client) Valid() bool { - if c == nil { - return false - } - - if c.Client == nil { - return false - } - - // Use arbitrary pointer field in the service content. - // Doesn't matter which one, as long as it is populated by default. - if c.ServiceContent.SessionManager == nil { - return false - } - - return true -} - -// IsVC returns true if we are connected to a vCenter -func (c *Client) IsVC() bool { - return c.ServiceContent.About.ApiType == "VirtualCenter" -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/debug/debug.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/debug/debug.go deleted file mode 100644 index 22d54717..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/debug/debug.go +++ /dev/null @@ -1,81 +0,0 @@ -/* -Copyright (c) 2014 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package debug - -import ( - "io" - "os" - "path" -) - -// Provider specified the interface types must implement to be used as a -// debugging sink. Having multiple such sink implementations allows it to be -// changed externally (for example when running tests). -type Provider interface { - NewFile(s string) io.WriteCloser - Flush() -} - -var currentProvider Provider = nil - -func SetProvider(p Provider) { - if currentProvider != nil { - currentProvider.Flush() - } - currentProvider = p -} - -// Enabled returns whether debugging is enabled or not. -func Enabled() bool { - return currentProvider != nil -} - -// NewFile dispatches to the current provider's NewFile function. -func NewFile(s string) io.WriteCloser { - return currentProvider.NewFile(s) -} - -// Flush dispatches to the current provider's Flush function. -func Flush() { - currentProvider.Flush() -} - -// FileProvider implements a debugging provider that creates a real file for -// every call to NewFile. It maintains a list of all files that it creates, -// such that it can close them when its Flush function is called. -type FileProvider struct { - Path string - - files []*os.File -} - -func (fp *FileProvider) NewFile(p string) io.WriteCloser { - f, err := os.Create(path.Join(fp.Path, p)) - if err != nil { - panic(err) - } - - fp.files = append(fp.files, f) - - return f -} - -func (fp *FileProvider) Flush() { - for _, f := range fp.files { - f.Close() - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/doc.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/doc.go deleted file mode 100644 index acb2c9f6..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/doc.go +++ /dev/null @@ -1,29 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -/* -Package vim25 provides a minimal client implementation to use with other -packages in the vim25 tree. The code in this package intentionally does not -take any dependendies outside the vim25 tree. - -The client implementation in this package embeds the soap.Client structure. -Additionally, it stores the value of the session's ServiceContent object. This -object stores references to a variety of subsystems, such as the root property -collector, the session manager, and the search index. The client is fully -functional after serialization and deserialization, without the need for -additional requests for initialization. -*/ -package vim25 diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/methods/internal.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/methods/internal.go deleted file mode 100644 index e2fb2a22..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/methods/internal.go +++ /dev/null @@ -1,123 +0,0 @@ -/* -Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package methods - -import ( - "github.com/vmware/govmomi/vim25/soap" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type RetrieveDynamicTypeManagerBody struct { - Req *types.RetrieveDynamicTypeManager `xml:"urn:vim25 RetrieveDynamicTypeManager"` - Res *types.RetrieveDynamicTypeManagerResponse `xml:"urn:vim25 RetrieveDynamicTypeManagerResponse"` - Fault_ *soap.Fault -} - -func (b *RetrieveDynamicTypeManagerBody) Fault() *soap.Fault { return b.Fault_ } - -func RetrieveDynamicTypeManager(ctx context.Context, r soap.RoundTripper, req *types.RetrieveDynamicTypeManager) (*types.RetrieveDynamicTypeManagerResponse, error) { - var reqBody, resBody RetrieveDynamicTypeManagerBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RetrieveManagedMethodExecuterBody struct { - Req *types.RetrieveManagedMethodExecuter `xml:"urn:vim25 RetrieveManagedMethodExecuter"` - Res *types.RetrieveManagedMethodExecuterResponse `xml:"urn:vim25 RetrieveManagedMethodExecuterResponse"` - Fault_ *soap.Fault -} - -func (b *RetrieveManagedMethodExecuterBody) Fault() *soap.Fault { return b.Fault_ } - -func RetrieveManagedMethodExecuter(ctx context.Context, r soap.RoundTripper, req *types.RetrieveManagedMethodExecuter) (*types.RetrieveManagedMethodExecuterResponse, error) { - var reqBody, resBody RetrieveManagedMethodExecuterBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DynamicTypeMgrQueryMoInstancesBody struct { - Req *types.DynamicTypeMgrQueryMoInstances `xml:"urn:vim25 DynamicTypeMgrQueryMoInstances"` - Res *types.DynamicTypeMgrQueryMoInstancesResponse `xml:"urn:vim25 DynamicTypeMgrQueryMoInstancesResponse"` - Fault_ *soap.Fault -} - -func (b *DynamicTypeMgrQueryMoInstancesBody) Fault() *soap.Fault { return b.Fault_ } - -func DynamicTypeMgrQueryMoInstances(ctx context.Context, r soap.RoundTripper, req *types.DynamicTypeMgrQueryMoInstances) (*types.DynamicTypeMgrQueryMoInstancesResponse, error) { - var reqBody, resBody DynamicTypeMgrQueryMoInstancesBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DynamicTypeMgrQueryTypeInfoBody struct { - Req *types.DynamicTypeMgrQueryTypeInfo `xml:"urn:vim25 DynamicTypeMgrQueryTypeInfo"` - Res *types.DynamicTypeMgrQueryTypeInfoResponse `xml:"urn:vim25 DynamicTypeMgrQueryTypeInfoResponse"` - Fault_ *soap.Fault -} - -func (b *DynamicTypeMgrQueryTypeInfoBody) Fault() *soap.Fault { return b.Fault_ } - -func DynamicTypeMgrQueryTypeInfo(ctx context.Context, r soap.RoundTripper, req *types.DynamicTypeMgrQueryTypeInfo) (*types.DynamicTypeMgrQueryTypeInfoResponse, error) { - var reqBody, resBody DynamicTypeMgrQueryTypeInfoBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ExecuteSoapBody struct { - Req *types.ExecuteSoap `xml:"urn:vim25 ExecuteSoap"` - Res *types.ExecuteSoapResponse `xml:"urn:vim25 ExecuteSoapResponse"` - Fault_ *soap.Fault -} - -func (b *ExecuteSoapBody) Fault() *soap.Fault { return b.Fault_ } - -func ExecuteSoap(ctx context.Context, r soap.RoundTripper, req *types.ExecuteSoap) (*types.ExecuteSoapResponse, error) { - var reqBody, resBody ExecuteSoapBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/methods/methods.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/methods/methods.go deleted file mode 100644 index ccc1b38c..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/methods/methods.go +++ /dev/null @@ -1,14103 +0,0 @@ -/* -Copyright (c) 2014-2016 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package methods - -import ( - "github.com/vmware/govmomi/vim25/soap" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -type AbdicateDomOwnershipBody struct { - Req *types.AbdicateDomOwnership `xml:"urn:vim25 AbdicateDomOwnership,omitempty"` - Res *types.AbdicateDomOwnershipResponse `xml:"urn:vim25 AbdicateDomOwnershipResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AbdicateDomOwnershipBody) Fault() *soap.Fault { return b.Fault_ } - -func AbdicateDomOwnership(ctx context.Context, r soap.RoundTripper, req *types.AbdicateDomOwnership) (*types.AbdicateDomOwnershipResponse, error) { - var reqBody, resBody AbdicateDomOwnershipBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AcknowledgeAlarmBody struct { - Req *types.AcknowledgeAlarm `xml:"urn:vim25 AcknowledgeAlarm,omitempty"` - Res *types.AcknowledgeAlarmResponse `xml:"urn:vim25 AcknowledgeAlarmResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AcknowledgeAlarmBody) Fault() *soap.Fault { return b.Fault_ } - -func AcknowledgeAlarm(ctx context.Context, r soap.RoundTripper, req *types.AcknowledgeAlarm) (*types.AcknowledgeAlarmResponse, error) { - var reqBody, resBody AcknowledgeAlarmBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AcquireCimServicesTicketBody struct { - Req *types.AcquireCimServicesTicket `xml:"urn:vim25 AcquireCimServicesTicket,omitempty"` - Res *types.AcquireCimServicesTicketResponse `xml:"urn:vim25 AcquireCimServicesTicketResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AcquireCimServicesTicketBody) Fault() *soap.Fault { return b.Fault_ } - -func AcquireCimServicesTicket(ctx context.Context, r soap.RoundTripper, req *types.AcquireCimServicesTicket) (*types.AcquireCimServicesTicketResponse, error) { - var reqBody, resBody AcquireCimServicesTicketBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AcquireCloneTicketBody struct { - Req *types.AcquireCloneTicket `xml:"urn:vim25 AcquireCloneTicket,omitempty"` - Res *types.AcquireCloneTicketResponse `xml:"urn:vim25 AcquireCloneTicketResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AcquireCloneTicketBody) Fault() *soap.Fault { return b.Fault_ } - -func AcquireCloneTicket(ctx context.Context, r soap.RoundTripper, req *types.AcquireCloneTicket) (*types.AcquireCloneTicketResponse, error) { - var reqBody, resBody AcquireCloneTicketBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AcquireCredentialsInGuestBody struct { - Req *types.AcquireCredentialsInGuest `xml:"urn:vim25 AcquireCredentialsInGuest,omitempty"` - Res *types.AcquireCredentialsInGuestResponse `xml:"urn:vim25 AcquireCredentialsInGuestResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AcquireCredentialsInGuestBody) Fault() *soap.Fault { return b.Fault_ } - -func AcquireCredentialsInGuest(ctx context.Context, r soap.RoundTripper, req *types.AcquireCredentialsInGuest) (*types.AcquireCredentialsInGuestResponse, error) { - var reqBody, resBody AcquireCredentialsInGuestBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AcquireGenericServiceTicketBody struct { - Req *types.AcquireGenericServiceTicket `xml:"urn:vim25 AcquireGenericServiceTicket,omitempty"` - Res *types.AcquireGenericServiceTicketResponse `xml:"urn:vim25 AcquireGenericServiceTicketResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AcquireGenericServiceTicketBody) Fault() *soap.Fault { return b.Fault_ } - -func AcquireGenericServiceTicket(ctx context.Context, r soap.RoundTripper, req *types.AcquireGenericServiceTicket) (*types.AcquireGenericServiceTicketResponse, error) { - var reqBody, resBody AcquireGenericServiceTicketBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AcquireLocalTicketBody struct { - Req *types.AcquireLocalTicket `xml:"urn:vim25 AcquireLocalTicket,omitempty"` - Res *types.AcquireLocalTicketResponse `xml:"urn:vim25 AcquireLocalTicketResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AcquireLocalTicketBody) Fault() *soap.Fault { return b.Fault_ } - -func AcquireLocalTicket(ctx context.Context, r soap.RoundTripper, req *types.AcquireLocalTicket) (*types.AcquireLocalTicketResponse, error) { - var reqBody, resBody AcquireLocalTicketBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AcquireMksTicketBody struct { - Req *types.AcquireMksTicket `xml:"urn:vim25 AcquireMksTicket,omitempty"` - Res *types.AcquireMksTicketResponse `xml:"urn:vim25 AcquireMksTicketResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AcquireMksTicketBody) Fault() *soap.Fault { return b.Fault_ } - -func AcquireMksTicket(ctx context.Context, r soap.RoundTripper, req *types.AcquireMksTicket) (*types.AcquireMksTicketResponse, error) { - var reqBody, resBody AcquireMksTicketBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AcquireTicketBody struct { - Req *types.AcquireTicket `xml:"urn:vim25 AcquireTicket,omitempty"` - Res *types.AcquireTicketResponse `xml:"urn:vim25 AcquireTicketResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AcquireTicketBody) Fault() *soap.Fault { return b.Fault_ } - -func AcquireTicket(ctx context.Context, r soap.RoundTripper, req *types.AcquireTicket) (*types.AcquireTicketResponse, error) { - var reqBody, resBody AcquireTicketBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AddAuthorizationRoleBody struct { - Req *types.AddAuthorizationRole `xml:"urn:vim25 AddAuthorizationRole,omitempty"` - Res *types.AddAuthorizationRoleResponse `xml:"urn:vim25 AddAuthorizationRoleResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AddAuthorizationRoleBody) Fault() *soap.Fault { return b.Fault_ } - -func AddAuthorizationRole(ctx context.Context, r soap.RoundTripper, req *types.AddAuthorizationRole) (*types.AddAuthorizationRoleResponse, error) { - var reqBody, resBody AddAuthorizationRoleBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AddCustomFieldDefBody struct { - Req *types.AddCustomFieldDef `xml:"urn:vim25 AddCustomFieldDef,omitempty"` - Res *types.AddCustomFieldDefResponse `xml:"urn:vim25 AddCustomFieldDefResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AddCustomFieldDefBody) Fault() *soap.Fault { return b.Fault_ } - -func AddCustomFieldDef(ctx context.Context, r soap.RoundTripper, req *types.AddCustomFieldDef) (*types.AddCustomFieldDefResponse, error) { - var reqBody, resBody AddCustomFieldDefBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AddDVPortgroup_TaskBody struct { - Req *types.AddDVPortgroup_Task `xml:"urn:vim25 AddDVPortgroup_Task,omitempty"` - Res *types.AddDVPortgroup_TaskResponse `xml:"urn:vim25 AddDVPortgroup_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AddDVPortgroup_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func AddDVPortgroup_Task(ctx context.Context, r soap.RoundTripper, req *types.AddDVPortgroup_Task) (*types.AddDVPortgroup_TaskResponse, error) { - var reqBody, resBody AddDVPortgroup_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AddDisks_TaskBody struct { - Req *types.AddDisks_Task `xml:"urn:vim25 AddDisks_Task,omitempty"` - Res *types.AddDisks_TaskResponse `xml:"urn:vim25 AddDisks_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AddDisks_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func AddDisks_Task(ctx context.Context, r soap.RoundTripper, req *types.AddDisks_Task) (*types.AddDisks_TaskResponse, error) { - var reqBody, resBody AddDisks_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AddGuestAliasBody struct { - Req *types.AddGuestAlias `xml:"urn:vim25 AddGuestAlias,omitempty"` - Res *types.AddGuestAliasResponse `xml:"urn:vim25 AddGuestAliasResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AddGuestAliasBody) Fault() *soap.Fault { return b.Fault_ } - -func AddGuestAlias(ctx context.Context, r soap.RoundTripper, req *types.AddGuestAlias) (*types.AddGuestAliasResponse, error) { - var reqBody, resBody AddGuestAliasBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AddHost_TaskBody struct { - Req *types.AddHost_Task `xml:"urn:vim25 AddHost_Task,omitempty"` - Res *types.AddHost_TaskResponse `xml:"urn:vim25 AddHost_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AddHost_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func AddHost_Task(ctx context.Context, r soap.RoundTripper, req *types.AddHost_Task) (*types.AddHost_TaskResponse, error) { - var reqBody, resBody AddHost_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AddInternetScsiSendTargetsBody struct { - Req *types.AddInternetScsiSendTargets `xml:"urn:vim25 AddInternetScsiSendTargets,omitempty"` - Res *types.AddInternetScsiSendTargetsResponse `xml:"urn:vim25 AddInternetScsiSendTargetsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AddInternetScsiSendTargetsBody) Fault() *soap.Fault { return b.Fault_ } - -func AddInternetScsiSendTargets(ctx context.Context, r soap.RoundTripper, req *types.AddInternetScsiSendTargets) (*types.AddInternetScsiSendTargetsResponse, error) { - var reqBody, resBody AddInternetScsiSendTargetsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AddInternetScsiStaticTargetsBody struct { - Req *types.AddInternetScsiStaticTargets `xml:"urn:vim25 AddInternetScsiStaticTargets,omitempty"` - Res *types.AddInternetScsiStaticTargetsResponse `xml:"urn:vim25 AddInternetScsiStaticTargetsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AddInternetScsiStaticTargetsBody) Fault() *soap.Fault { return b.Fault_ } - -func AddInternetScsiStaticTargets(ctx context.Context, r soap.RoundTripper, req *types.AddInternetScsiStaticTargets) (*types.AddInternetScsiStaticTargetsResponse, error) { - var reqBody, resBody AddInternetScsiStaticTargetsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AddLicenseBody struct { - Req *types.AddLicense `xml:"urn:vim25 AddLicense,omitempty"` - Res *types.AddLicenseResponse `xml:"urn:vim25 AddLicenseResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AddLicenseBody) Fault() *soap.Fault { return b.Fault_ } - -func AddLicense(ctx context.Context, r soap.RoundTripper, req *types.AddLicense) (*types.AddLicenseResponse, error) { - var reqBody, resBody AddLicenseBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AddNetworkResourcePoolBody struct { - Req *types.AddNetworkResourcePool `xml:"urn:vim25 AddNetworkResourcePool,omitempty"` - Res *types.AddNetworkResourcePoolResponse `xml:"urn:vim25 AddNetworkResourcePoolResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AddNetworkResourcePoolBody) Fault() *soap.Fault { return b.Fault_ } - -func AddNetworkResourcePool(ctx context.Context, r soap.RoundTripper, req *types.AddNetworkResourcePool) (*types.AddNetworkResourcePoolResponse, error) { - var reqBody, resBody AddNetworkResourcePoolBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AddPortGroupBody struct { - Req *types.AddPortGroup `xml:"urn:vim25 AddPortGroup,omitempty"` - Res *types.AddPortGroupResponse `xml:"urn:vim25 AddPortGroupResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AddPortGroupBody) Fault() *soap.Fault { return b.Fault_ } - -func AddPortGroup(ctx context.Context, r soap.RoundTripper, req *types.AddPortGroup) (*types.AddPortGroupResponse, error) { - var reqBody, resBody AddPortGroupBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AddServiceConsoleVirtualNicBody struct { - Req *types.AddServiceConsoleVirtualNic `xml:"urn:vim25 AddServiceConsoleVirtualNic,omitempty"` - Res *types.AddServiceConsoleVirtualNicResponse `xml:"urn:vim25 AddServiceConsoleVirtualNicResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AddServiceConsoleVirtualNicBody) Fault() *soap.Fault { return b.Fault_ } - -func AddServiceConsoleVirtualNic(ctx context.Context, r soap.RoundTripper, req *types.AddServiceConsoleVirtualNic) (*types.AddServiceConsoleVirtualNicResponse, error) { - var reqBody, resBody AddServiceConsoleVirtualNicBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AddStandaloneHost_TaskBody struct { - Req *types.AddStandaloneHost_Task `xml:"urn:vim25 AddStandaloneHost_Task,omitempty"` - Res *types.AddStandaloneHost_TaskResponse `xml:"urn:vim25 AddStandaloneHost_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AddStandaloneHost_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func AddStandaloneHost_Task(ctx context.Context, r soap.RoundTripper, req *types.AddStandaloneHost_Task) (*types.AddStandaloneHost_TaskResponse, error) { - var reqBody, resBody AddStandaloneHost_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AddVirtualNicBody struct { - Req *types.AddVirtualNic `xml:"urn:vim25 AddVirtualNic,omitempty"` - Res *types.AddVirtualNicResponse `xml:"urn:vim25 AddVirtualNicResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AddVirtualNicBody) Fault() *soap.Fault { return b.Fault_ } - -func AddVirtualNic(ctx context.Context, r soap.RoundTripper, req *types.AddVirtualNic) (*types.AddVirtualNicResponse, error) { - var reqBody, resBody AddVirtualNicBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AddVirtualSwitchBody struct { - Req *types.AddVirtualSwitch `xml:"urn:vim25 AddVirtualSwitch,omitempty"` - Res *types.AddVirtualSwitchResponse `xml:"urn:vim25 AddVirtualSwitchResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AddVirtualSwitchBody) Fault() *soap.Fault { return b.Fault_ } - -func AddVirtualSwitch(ctx context.Context, r soap.RoundTripper, req *types.AddVirtualSwitch) (*types.AddVirtualSwitchResponse, error) { - var reqBody, resBody AddVirtualSwitchBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AllocateIpv4AddressBody struct { - Req *types.AllocateIpv4Address `xml:"urn:vim25 AllocateIpv4Address,omitempty"` - Res *types.AllocateIpv4AddressResponse `xml:"urn:vim25 AllocateIpv4AddressResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AllocateIpv4AddressBody) Fault() *soap.Fault { return b.Fault_ } - -func AllocateIpv4Address(ctx context.Context, r soap.RoundTripper, req *types.AllocateIpv4Address) (*types.AllocateIpv4AddressResponse, error) { - var reqBody, resBody AllocateIpv4AddressBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AllocateIpv6AddressBody struct { - Req *types.AllocateIpv6Address `xml:"urn:vim25 AllocateIpv6Address,omitempty"` - Res *types.AllocateIpv6AddressResponse `xml:"urn:vim25 AllocateIpv6AddressResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AllocateIpv6AddressBody) Fault() *soap.Fault { return b.Fault_ } - -func AllocateIpv6Address(ctx context.Context, r soap.RoundTripper, req *types.AllocateIpv6Address) (*types.AllocateIpv6AddressResponse, error) { - var reqBody, resBody AllocateIpv6AddressBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AnswerVMBody struct { - Req *types.AnswerVM `xml:"urn:vim25 AnswerVM,omitempty"` - Res *types.AnswerVMResponse `xml:"urn:vim25 AnswerVMResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AnswerVMBody) Fault() *soap.Fault { return b.Fault_ } - -func AnswerVM(ctx context.Context, r soap.RoundTripper, req *types.AnswerVM) (*types.AnswerVMResponse, error) { - var reqBody, resBody AnswerVMBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ApplyHostConfig_TaskBody struct { - Req *types.ApplyHostConfig_Task `xml:"urn:vim25 ApplyHostConfig_Task,omitempty"` - Res *types.ApplyHostConfig_TaskResponse `xml:"urn:vim25 ApplyHostConfig_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ApplyHostConfig_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ApplyHostConfig_Task(ctx context.Context, r soap.RoundTripper, req *types.ApplyHostConfig_Task) (*types.ApplyHostConfig_TaskResponse, error) { - var reqBody, resBody ApplyHostConfig_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ApplyRecommendationBody struct { - Req *types.ApplyRecommendation `xml:"urn:vim25 ApplyRecommendation,omitempty"` - Res *types.ApplyRecommendationResponse `xml:"urn:vim25 ApplyRecommendationResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ApplyRecommendationBody) Fault() *soap.Fault { return b.Fault_ } - -func ApplyRecommendation(ctx context.Context, r soap.RoundTripper, req *types.ApplyRecommendation) (*types.ApplyRecommendationResponse, error) { - var reqBody, resBody ApplyRecommendationBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ApplyStorageDrsRecommendationToPod_TaskBody struct { - Req *types.ApplyStorageDrsRecommendationToPod_Task `xml:"urn:vim25 ApplyStorageDrsRecommendationToPod_Task,omitempty"` - Res *types.ApplyStorageDrsRecommendationToPod_TaskResponse `xml:"urn:vim25 ApplyStorageDrsRecommendationToPod_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ApplyStorageDrsRecommendationToPod_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ApplyStorageDrsRecommendationToPod_Task(ctx context.Context, r soap.RoundTripper, req *types.ApplyStorageDrsRecommendationToPod_Task) (*types.ApplyStorageDrsRecommendationToPod_TaskResponse, error) { - var reqBody, resBody ApplyStorageDrsRecommendationToPod_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ApplyStorageDrsRecommendation_TaskBody struct { - Req *types.ApplyStorageDrsRecommendation_Task `xml:"urn:vim25 ApplyStorageDrsRecommendation_Task,omitempty"` - Res *types.ApplyStorageDrsRecommendation_TaskResponse `xml:"urn:vim25 ApplyStorageDrsRecommendation_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ApplyStorageDrsRecommendation_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ApplyStorageDrsRecommendation_Task(ctx context.Context, r soap.RoundTripper, req *types.ApplyStorageDrsRecommendation_Task) (*types.ApplyStorageDrsRecommendation_TaskResponse, error) { - var reqBody, resBody ApplyStorageDrsRecommendation_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AreAlarmActionsEnabledBody struct { - Req *types.AreAlarmActionsEnabled `xml:"urn:vim25 AreAlarmActionsEnabled,omitempty"` - Res *types.AreAlarmActionsEnabledResponse `xml:"urn:vim25 AreAlarmActionsEnabledResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AreAlarmActionsEnabledBody) Fault() *soap.Fault { return b.Fault_ } - -func AreAlarmActionsEnabled(ctx context.Context, r soap.RoundTripper, req *types.AreAlarmActionsEnabled) (*types.AreAlarmActionsEnabledResponse, error) { - var reqBody, resBody AreAlarmActionsEnabledBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AssignUserToGroupBody struct { - Req *types.AssignUserToGroup `xml:"urn:vim25 AssignUserToGroup,omitempty"` - Res *types.AssignUserToGroupResponse `xml:"urn:vim25 AssignUserToGroupResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AssignUserToGroupBody) Fault() *soap.Fault { return b.Fault_ } - -func AssignUserToGroup(ctx context.Context, r soap.RoundTripper, req *types.AssignUserToGroup) (*types.AssignUserToGroupResponse, error) { - var reqBody, resBody AssignUserToGroupBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AssociateProfileBody struct { - Req *types.AssociateProfile `xml:"urn:vim25 AssociateProfile,omitempty"` - Res *types.AssociateProfileResponse `xml:"urn:vim25 AssociateProfileResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AssociateProfileBody) Fault() *soap.Fault { return b.Fault_ } - -func AssociateProfile(ctx context.Context, r soap.RoundTripper, req *types.AssociateProfile) (*types.AssociateProfileResponse, error) { - var reqBody, resBody AssociateProfileBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AttachScsiLunBody struct { - Req *types.AttachScsiLun `xml:"urn:vim25 AttachScsiLun,omitempty"` - Res *types.AttachScsiLunResponse `xml:"urn:vim25 AttachScsiLunResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AttachScsiLunBody) Fault() *soap.Fault { return b.Fault_ } - -func AttachScsiLun(ctx context.Context, r soap.RoundTripper, req *types.AttachScsiLun) (*types.AttachScsiLunResponse, error) { - var reqBody, resBody AttachScsiLunBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AttachScsiLunEx_TaskBody struct { - Req *types.AttachScsiLunEx_Task `xml:"urn:vim25 AttachScsiLunEx_Task,omitempty"` - Res *types.AttachScsiLunEx_TaskResponse `xml:"urn:vim25 AttachScsiLunEx_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AttachScsiLunEx_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func AttachScsiLunEx_Task(ctx context.Context, r soap.RoundTripper, req *types.AttachScsiLunEx_Task) (*types.AttachScsiLunEx_TaskResponse, error) { - var reqBody, resBody AttachScsiLunEx_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AttachVmfsExtentBody struct { - Req *types.AttachVmfsExtent `xml:"urn:vim25 AttachVmfsExtent,omitempty"` - Res *types.AttachVmfsExtentResponse `xml:"urn:vim25 AttachVmfsExtentResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AttachVmfsExtentBody) Fault() *soap.Fault { return b.Fault_ } - -func AttachVmfsExtent(ctx context.Context, r soap.RoundTripper, req *types.AttachVmfsExtent) (*types.AttachVmfsExtentResponse, error) { - var reqBody, resBody AttachVmfsExtentBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AutoStartPowerOffBody struct { - Req *types.AutoStartPowerOff `xml:"urn:vim25 AutoStartPowerOff,omitempty"` - Res *types.AutoStartPowerOffResponse `xml:"urn:vim25 AutoStartPowerOffResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AutoStartPowerOffBody) Fault() *soap.Fault { return b.Fault_ } - -func AutoStartPowerOff(ctx context.Context, r soap.RoundTripper, req *types.AutoStartPowerOff) (*types.AutoStartPowerOffResponse, error) { - var reqBody, resBody AutoStartPowerOffBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type AutoStartPowerOnBody struct { - Req *types.AutoStartPowerOn `xml:"urn:vim25 AutoStartPowerOn,omitempty"` - Res *types.AutoStartPowerOnResponse `xml:"urn:vim25 AutoStartPowerOnResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *AutoStartPowerOnBody) Fault() *soap.Fault { return b.Fault_ } - -func AutoStartPowerOn(ctx context.Context, r soap.RoundTripper, req *types.AutoStartPowerOn) (*types.AutoStartPowerOnResponse, error) { - var reqBody, resBody AutoStartPowerOnBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type BackupFirmwareConfigurationBody struct { - Req *types.BackupFirmwareConfiguration `xml:"urn:vim25 BackupFirmwareConfiguration,omitempty"` - Res *types.BackupFirmwareConfigurationResponse `xml:"urn:vim25 BackupFirmwareConfigurationResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *BackupFirmwareConfigurationBody) Fault() *soap.Fault { return b.Fault_ } - -func BackupFirmwareConfiguration(ctx context.Context, r soap.RoundTripper, req *types.BackupFirmwareConfiguration) (*types.BackupFirmwareConfigurationResponse, error) { - var reqBody, resBody BackupFirmwareConfigurationBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type BindVnicBody struct { - Req *types.BindVnic `xml:"urn:vim25 BindVnic,omitempty"` - Res *types.BindVnicResponse `xml:"urn:vim25 BindVnicResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *BindVnicBody) Fault() *soap.Fault { return b.Fault_ } - -func BindVnic(ctx context.Context, r soap.RoundTripper, req *types.BindVnic) (*types.BindVnicResponse, error) { - var reqBody, resBody BindVnicBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type BrowseDiagnosticLogBody struct { - Req *types.BrowseDiagnosticLog `xml:"urn:vim25 BrowseDiagnosticLog,omitempty"` - Res *types.BrowseDiagnosticLogResponse `xml:"urn:vim25 BrowseDiagnosticLogResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *BrowseDiagnosticLogBody) Fault() *soap.Fault { return b.Fault_ } - -func BrowseDiagnosticLog(ctx context.Context, r soap.RoundTripper, req *types.BrowseDiagnosticLog) (*types.BrowseDiagnosticLogResponse, error) { - var reqBody, resBody BrowseDiagnosticLogBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CanProvisionObjectsBody struct { - Req *types.CanProvisionObjects `xml:"urn:vim25 CanProvisionObjects,omitempty"` - Res *types.CanProvisionObjectsResponse `xml:"urn:vim25 CanProvisionObjectsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CanProvisionObjectsBody) Fault() *soap.Fault { return b.Fault_ } - -func CanProvisionObjects(ctx context.Context, r soap.RoundTripper, req *types.CanProvisionObjects) (*types.CanProvisionObjectsResponse, error) { - var reqBody, resBody CanProvisionObjectsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CancelRecommendationBody struct { - Req *types.CancelRecommendation `xml:"urn:vim25 CancelRecommendation,omitempty"` - Res *types.CancelRecommendationResponse `xml:"urn:vim25 CancelRecommendationResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CancelRecommendationBody) Fault() *soap.Fault { return b.Fault_ } - -func CancelRecommendation(ctx context.Context, r soap.RoundTripper, req *types.CancelRecommendation) (*types.CancelRecommendationResponse, error) { - var reqBody, resBody CancelRecommendationBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CancelRetrievePropertiesExBody struct { - Req *types.CancelRetrievePropertiesEx `xml:"urn:vim25 CancelRetrievePropertiesEx,omitempty"` - Res *types.CancelRetrievePropertiesExResponse `xml:"urn:vim25 CancelRetrievePropertiesExResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CancelRetrievePropertiesExBody) Fault() *soap.Fault { return b.Fault_ } - -func CancelRetrievePropertiesEx(ctx context.Context, r soap.RoundTripper, req *types.CancelRetrievePropertiesEx) (*types.CancelRetrievePropertiesExResponse, error) { - var reqBody, resBody CancelRetrievePropertiesExBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CancelStorageDrsRecommendationBody struct { - Req *types.CancelStorageDrsRecommendation `xml:"urn:vim25 CancelStorageDrsRecommendation,omitempty"` - Res *types.CancelStorageDrsRecommendationResponse `xml:"urn:vim25 CancelStorageDrsRecommendationResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CancelStorageDrsRecommendationBody) Fault() *soap.Fault { return b.Fault_ } - -func CancelStorageDrsRecommendation(ctx context.Context, r soap.RoundTripper, req *types.CancelStorageDrsRecommendation) (*types.CancelStorageDrsRecommendationResponse, error) { - var reqBody, resBody CancelStorageDrsRecommendationBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CancelTaskBody struct { - Req *types.CancelTask `xml:"urn:vim25 CancelTask,omitempty"` - Res *types.CancelTaskResponse `xml:"urn:vim25 CancelTaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CancelTaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CancelTask(ctx context.Context, r soap.RoundTripper, req *types.CancelTask) (*types.CancelTaskResponse, error) { - var reqBody, resBody CancelTaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CancelWaitForUpdatesBody struct { - Req *types.CancelWaitForUpdates `xml:"urn:vim25 CancelWaitForUpdates,omitempty"` - Res *types.CancelWaitForUpdatesResponse `xml:"urn:vim25 CancelWaitForUpdatesResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CancelWaitForUpdatesBody) Fault() *soap.Fault { return b.Fault_ } - -func CancelWaitForUpdates(ctx context.Context, r soap.RoundTripper, req *types.CancelWaitForUpdates) (*types.CancelWaitForUpdatesResponse, error) { - var reqBody, resBody CancelWaitForUpdatesBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CertMgrRefreshCACertificatesAndCRLs_TaskBody struct { - Req *types.CertMgrRefreshCACertificatesAndCRLs_Task `xml:"urn:vim25 CertMgrRefreshCACertificatesAndCRLs_Task,omitempty"` - Res *types.CertMgrRefreshCACertificatesAndCRLs_TaskResponse `xml:"urn:vim25 CertMgrRefreshCACertificatesAndCRLs_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CertMgrRefreshCACertificatesAndCRLs_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CertMgrRefreshCACertificatesAndCRLs_Task(ctx context.Context, r soap.RoundTripper, req *types.CertMgrRefreshCACertificatesAndCRLs_Task) (*types.CertMgrRefreshCACertificatesAndCRLs_TaskResponse, error) { - var reqBody, resBody CertMgrRefreshCACertificatesAndCRLs_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CertMgrRefreshCertificates_TaskBody struct { - Req *types.CertMgrRefreshCertificates_Task `xml:"urn:vim25 CertMgrRefreshCertificates_Task,omitempty"` - Res *types.CertMgrRefreshCertificates_TaskResponse `xml:"urn:vim25 CertMgrRefreshCertificates_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CertMgrRefreshCertificates_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CertMgrRefreshCertificates_Task(ctx context.Context, r soap.RoundTripper, req *types.CertMgrRefreshCertificates_Task) (*types.CertMgrRefreshCertificates_TaskResponse, error) { - var reqBody, resBody CertMgrRefreshCertificates_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CertMgrRevokeCertificates_TaskBody struct { - Req *types.CertMgrRevokeCertificates_Task `xml:"urn:vim25 CertMgrRevokeCertificates_Task,omitempty"` - Res *types.CertMgrRevokeCertificates_TaskResponse `xml:"urn:vim25 CertMgrRevokeCertificates_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CertMgrRevokeCertificates_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CertMgrRevokeCertificates_Task(ctx context.Context, r soap.RoundTripper, req *types.CertMgrRevokeCertificates_Task) (*types.CertMgrRevokeCertificates_TaskResponse, error) { - var reqBody, resBody CertMgrRevokeCertificates_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ChangeAccessModeBody struct { - Req *types.ChangeAccessMode `xml:"urn:vim25 ChangeAccessMode,omitempty"` - Res *types.ChangeAccessModeResponse `xml:"urn:vim25 ChangeAccessModeResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ChangeAccessModeBody) Fault() *soap.Fault { return b.Fault_ } - -func ChangeAccessMode(ctx context.Context, r soap.RoundTripper, req *types.ChangeAccessMode) (*types.ChangeAccessModeResponse, error) { - var reqBody, resBody ChangeAccessModeBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ChangeFileAttributesInGuestBody struct { - Req *types.ChangeFileAttributesInGuest `xml:"urn:vim25 ChangeFileAttributesInGuest,omitempty"` - Res *types.ChangeFileAttributesInGuestResponse `xml:"urn:vim25 ChangeFileAttributesInGuestResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ChangeFileAttributesInGuestBody) Fault() *soap.Fault { return b.Fault_ } - -func ChangeFileAttributesInGuest(ctx context.Context, r soap.RoundTripper, req *types.ChangeFileAttributesInGuest) (*types.ChangeFileAttributesInGuestResponse, error) { - var reqBody, resBody ChangeFileAttributesInGuestBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ChangeLockdownModeBody struct { - Req *types.ChangeLockdownMode `xml:"urn:vim25 ChangeLockdownMode,omitempty"` - Res *types.ChangeLockdownModeResponse `xml:"urn:vim25 ChangeLockdownModeResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ChangeLockdownModeBody) Fault() *soap.Fault { return b.Fault_ } - -func ChangeLockdownMode(ctx context.Context, r soap.RoundTripper, req *types.ChangeLockdownMode) (*types.ChangeLockdownModeResponse, error) { - var reqBody, resBody ChangeLockdownModeBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ChangeNFSUserPasswordBody struct { - Req *types.ChangeNFSUserPassword `xml:"urn:vim25 ChangeNFSUserPassword,omitempty"` - Res *types.ChangeNFSUserPasswordResponse `xml:"urn:vim25 ChangeNFSUserPasswordResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ChangeNFSUserPasswordBody) Fault() *soap.Fault { return b.Fault_ } - -func ChangeNFSUserPassword(ctx context.Context, r soap.RoundTripper, req *types.ChangeNFSUserPassword) (*types.ChangeNFSUserPasswordResponse, error) { - var reqBody, resBody ChangeNFSUserPasswordBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ChangeOwnerBody struct { - Req *types.ChangeOwner `xml:"urn:vim25 ChangeOwner,omitempty"` - Res *types.ChangeOwnerResponse `xml:"urn:vim25 ChangeOwnerResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ChangeOwnerBody) Fault() *soap.Fault { return b.Fault_ } - -func ChangeOwner(ctx context.Context, r soap.RoundTripper, req *types.ChangeOwner) (*types.ChangeOwnerResponse, error) { - var reqBody, resBody ChangeOwnerBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CheckAddHostEvc_TaskBody struct { - Req *types.CheckAddHostEvc_Task `xml:"urn:vim25 CheckAddHostEvc_Task,omitempty"` - Res *types.CheckAddHostEvc_TaskResponse `xml:"urn:vim25 CheckAddHostEvc_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CheckAddHostEvc_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CheckAddHostEvc_Task(ctx context.Context, r soap.RoundTripper, req *types.CheckAddHostEvc_Task) (*types.CheckAddHostEvc_TaskResponse, error) { - var reqBody, resBody CheckAddHostEvc_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CheckAnswerFileStatus_TaskBody struct { - Req *types.CheckAnswerFileStatus_Task `xml:"urn:vim25 CheckAnswerFileStatus_Task,omitempty"` - Res *types.CheckAnswerFileStatus_TaskResponse `xml:"urn:vim25 CheckAnswerFileStatus_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CheckAnswerFileStatus_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CheckAnswerFileStatus_Task(ctx context.Context, r soap.RoundTripper, req *types.CheckAnswerFileStatus_Task) (*types.CheckAnswerFileStatus_TaskResponse, error) { - var reqBody, resBody CheckAnswerFileStatus_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CheckCompatibility_TaskBody struct { - Req *types.CheckCompatibility_Task `xml:"urn:vim25 CheckCompatibility_Task,omitempty"` - Res *types.CheckCompatibility_TaskResponse `xml:"urn:vim25 CheckCompatibility_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CheckCompatibility_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CheckCompatibility_Task(ctx context.Context, r soap.RoundTripper, req *types.CheckCompatibility_Task) (*types.CheckCompatibility_TaskResponse, error) { - var reqBody, resBody CheckCompatibility_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CheckCompliance_TaskBody struct { - Req *types.CheckCompliance_Task `xml:"urn:vim25 CheckCompliance_Task,omitempty"` - Res *types.CheckCompliance_TaskResponse `xml:"urn:vim25 CheckCompliance_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CheckCompliance_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CheckCompliance_Task(ctx context.Context, r soap.RoundTripper, req *types.CheckCompliance_Task) (*types.CheckCompliance_TaskResponse, error) { - var reqBody, resBody CheckCompliance_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CheckConfigureEvcMode_TaskBody struct { - Req *types.CheckConfigureEvcMode_Task `xml:"urn:vim25 CheckConfigureEvcMode_Task,omitempty"` - Res *types.CheckConfigureEvcMode_TaskResponse `xml:"urn:vim25 CheckConfigureEvcMode_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CheckConfigureEvcMode_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CheckConfigureEvcMode_Task(ctx context.Context, r soap.RoundTripper, req *types.CheckConfigureEvcMode_Task) (*types.CheckConfigureEvcMode_TaskResponse, error) { - var reqBody, resBody CheckConfigureEvcMode_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CheckCustomizationResourcesBody struct { - Req *types.CheckCustomizationResources `xml:"urn:vim25 CheckCustomizationResources,omitempty"` - Res *types.CheckCustomizationResourcesResponse `xml:"urn:vim25 CheckCustomizationResourcesResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CheckCustomizationResourcesBody) Fault() *soap.Fault { return b.Fault_ } - -func CheckCustomizationResources(ctx context.Context, r soap.RoundTripper, req *types.CheckCustomizationResources) (*types.CheckCustomizationResourcesResponse, error) { - var reqBody, resBody CheckCustomizationResourcesBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CheckCustomizationSpecBody struct { - Req *types.CheckCustomizationSpec `xml:"urn:vim25 CheckCustomizationSpec,omitempty"` - Res *types.CheckCustomizationSpecResponse `xml:"urn:vim25 CheckCustomizationSpecResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CheckCustomizationSpecBody) Fault() *soap.Fault { return b.Fault_ } - -func CheckCustomizationSpec(ctx context.Context, r soap.RoundTripper, req *types.CheckCustomizationSpec) (*types.CheckCustomizationSpecResponse, error) { - var reqBody, resBody CheckCustomizationSpecBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CheckForUpdatesBody struct { - Req *types.CheckForUpdates `xml:"urn:vim25 CheckForUpdates,omitempty"` - Res *types.CheckForUpdatesResponse `xml:"urn:vim25 CheckForUpdatesResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CheckForUpdatesBody) Fault() *soap.Fault { return b.Fault_ } - -func CheckForUpdates(ctx context.Context, r soap.RoundTripper, req *types.CheckForUpdates) (*types.CheckForUpdatesResponse, error) { - var reqBody, resBody CheckForUpdatesBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CheckHostPatch_TaskBody struct { - Req *types.CheckHostPatch_Task `xml:"urn:vim25 CheckHostPatch_Task,omitempty"` - Res *types.CheckHostPatch_TaskResponse `xml:"urn:vim25 CheckHostPatch_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CheckHostPatch_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CheckHostPatch_Task(ctx context.Context, r soap.RoundTripper, req *types.CheckHostPatch_Task) (*types.CheckHostPatch_TaskResponse, error) { - var reqBody, resBody CheckHostPatch_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CheckLicenseFeatureBody struct { - Req *types.CheckLicenseFeature `xml:"urn:vim25 CheckLicenseFeature,omitempty"` - Res *types.CheckLicenseFeatureResponse `xml:"urn:vim25 CheckLicenseFeatureResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CheckLicenseFeatureBody) Fault() *soap.Fault { return b.Fault_ } - -func CheckLicenseFeature(ctx context.Context, r soap.RoundTripper, req *types.CheckLicenseFeature) (*types.CheckLicenseFeatureResponse, error) { - var reqBody, resBody CheckLicenseFeatureBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CheckMigrate_TaskBody struct { - Req *types.CheckMigrate_Task `xml:"urn:vim25 CheckMigrate_Task,omitempty"` - Res *types.CheckMigrate_TaskResponse `xml:"urn:vim25 CheckMigrate_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CheckMigrate_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CheckMigrate_Task(ctx context.Context, r soap.RoundTripper, req *types.CheckMigrate_Task) (*types.CheckMigrate_TaskResponse, error) { - var reqBody, resBody CheckMigrate_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CheckProfileCompliance_TaskBody struct { - Req *types.CheckProfileCompliance_Task `xml:"urn:vim25 CheckProfileCompliance_Task,omitempty"` - Res *types.CheckProfileCompliance_TaskResponse `xml:"urn:vim25 CheckProfileCompliance_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CheckProfileCompliance_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CheckProfileCompliance_Task(ctx context.Context, r soap.RoundTripper, req *types.CheckProfileCompliance_Task) (*types.CheckProfileCompliance_TaskResponse, error) { - var reqBody, resBody CheckProfileCompliance_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CheckRelocate_TaskBody struct { - Req *types.CheckRelocate_Task `xml:"urn:vim25 CheckRelocate_Task,omitempty"` - Res *types.CheckRelocate_TaskResponse `xml:"urn:vim25 CheckRelocate_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CheckRelocate_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CheckRelocate_Task(ctx context.Context, r soap.RoundTripper, req *types.CheckRelocate_Task) (*types.CheckRelocate_TaskResponse, error) { - var reqBody, resBody CheckRelocate_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ClearComplianceStatusBody struct { - Req *types.ClearComplianceStatus `xml:"urn:vim25 ClearComplianceStatus,omitempty"` - Res *types.ClearComplianceStatusResponse `xml:"urn:vim25 ClearComplianceStatusResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ClearComplianceStatusBody) Fault() *soap.Fault { return b.Fault_ } - -func ClearComplianceStatus(ctx context.Context, r soap.RoundTripper, req *types.ClearComplianceStatus) (*types.ClearComplianceStatusResponse, error) { - var reqBody, resBody ClearComplianceStatusBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ClearNFSUserBody struct { - Req *types.ClearNFSUser `xml:"urn:vim25 ClearNFSUser,omitempty"` - Res *types.ClearNFSUserResponse `xml:"urn:vim25 ClearNFSUserResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ClearNFSUserBody) Fault() *soap.Fault { return b.Fault_ } - -func ClearNFSUser(ctx context.Context, r soap.RoundTripper, req *types.ClearNFSUser) (*types.ClearNFSUserResponse, error) { - var reqBody, resBody ClearNFSUserBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CloneSessionBody struct { - Req *types.CloneSession `xml:"urn:vim25 CloneSession,omitempty"` - Res *types.CloneSessionResponse `xml:"urn:vim25 CloneSessionResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CloneSessionBody) Fault() *soap.Fault { return b.Fault_ } - -func CloneSession(ctx context.Context, r soap.RoundTripper, req *types.CloneSession) (*types.CloneSessionResponse, error) { - var reqBody, resBody CloneSessionBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CloneVApp_TaskBody struct { - Req *types.CloneVApp_Task `xml:"urn:vim25 CloneVApp_Task,omitempty"` - Res *types.CloneVApp_TaskResponse `xml:"urn:vim25 CloneVApp_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CloneVApp_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CloneVApp_Task(ctx context.Context, r soap.RoundTripper, req *types.CloneVApp_Task) (*types.CloneVApp_TaskResponse, error) { - var reqBody, resBody CloneVApp_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CloneVM_TaskBody struct { - Req *types.CloneVM_Task `xml:"urn:vim25 CloneVM_Task,omitempty"` - Res *types.CloneVM_TaskResponse `xml:"urn:vim25 CloneVM_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CloneVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CloneVM_Task(ctx context.Context, r soap.RoundTripper, req *types.CloneVM_Task) (*types.CloneVM_TaskResponse, error) { - var reqBody, resBody CloneVM_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CloseInventoryViewFolderBody struct { - Req *types.CloseInventoryViewFolder `xml:"urn:vim25 CloseInventoryViewFolder,omitempty"` - Res *types.CloseInventoryViewFolderResponse `xml:"urn:vim25 CloseInventoryViewFolderResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CloseInventoryViewFolderBody) Fault() *soap.Fault { return b.Fault_ } - -func CloseInventoryViewFolder(ctx context.Context, r soap.RoundTripper, req *types.CloseInventoryViewFolder) (*types.CloseInventoryViewFolderResponse, error) { - var reqBody, resBody CloseInventoryViewFolderBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ClusterEnterMaintenanceModeBody struct { - Req *types.ClusterEnterMaintenanceMode `xml:"urn:vim25 ClusterEnterMaintenanceMode,omitempty"` - Res *types.ClusterEnterMaintenanceModeResponse `xml:"urn:vim25 ClusterEnterMaintenanceModeResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ClusterEnterMaintenanceModeBody) Fault() *soap.Fault { return b.Fault_ } - -func ClusterEnterMaintenanceMode(ctx context.Context, r soap.RoundTripper, req *types.ClusterEnterMaintenanceMode) (*types.ClusterEnterMaintenanceModeResponse, error) { - var reqBody, resBody ClusterEnterMaintenanceModeBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ComputeDiskPartitionInfoBody struct { - Req *types.ComputeDiskPartitionInfo `xml:"urn:vim25 ComputeDiskPartitionInfo,omitempty"` - Res *types.ComputeDiskPartitionInfoResponse `xml:"urn:vim25 ComputeDiskPartitionInfoResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ComputeDiskPartitionInfoBody) Fault() *soap.Fault { return b.Fault_ } - -func ComputeDiskPartitionInfo(ctx context.Context, r soap.RoundTripper, req *types.ComputeDiskPartitionInfo) (*types.ComputeDiskPartitionInfoResponse, error) { - var reqBody, resBody ComputeDiskPartitionInfoBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ComputeDiskPartitionInfoForResizeBody struct { - Req *types.ComputeDiskPartitionInfoForResize `xml:"urn:vim25 ComputeDiskPartitionInfoForResize,omitempty"` - Res *types.ComputeDiskPartitionInfoForResizeResponse `xml:"urn:vim25 ComputeDiskPartitionInfoForResizeResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ComputeDiskPartitionInfoForResizeBody) Fault() *soap.Fault { return b.Fault_ } - -func ComputeDiskPartitionInfoForResize(ctx context.Context, r soap.RoundTripper, req *types.ComputeDiskPartitionInfoForResize) (*types.ComputeDiskPartitionInfoForResizeResponse, error) { - var reqBody, resBody ComputeDiskPartitionInfoForResizeBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ConfigureDatastoreIORM_TaskBody struct { - Req *types.ConfigureDatastoreIORM_Task `xml:"urn:vim25 ConfigureDatastoreIORM_Task,omitempty"` - Res *types.ConfigureDatastoreIORM_TaskResponse `xml:"urn:vim25 ConfigureDatastoreIORM_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ConfigureDatastoreIORM_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ConfigureDatastoreIORM_Task(ctx context.Context, r soap.RoundTripper, req *types.ConfigureDatastoreIORM_Task) (*types.ConfigureDatastoreIORM_TaskResponse, error) { - var reqBody, resBody ConfigureDatastoreIORM_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ConfigureDatastorePrincipalBody struct { - Req *types.ConfigureDatastorePrincipal `xml:"urn:vim25 ConfigureDatastorePrincipal,omitempty"` - Res *types.ConfigureDatastorePrincipalResponse `xml:"urn:vim25 ConfigureDatastorePrincipalResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ConfigureDatastorePrincipalBody) Fault() *soap.Fault { return b.Fault_ } - -func ConfigureDatastorePrincipal(ctx context.Context, r soap.RoundTripper, req *types.ConfigureDatastorePrincipal) (*types.ConfigureDatastorePrincipalResponse, error) { - var reqBody, resBody ConfigureDatastorePrincipalBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ConfigureEvcMode_TaskBody struct { - Req *types.ConfigureEvcMode_Task `xml:"urn:vim25 ConfigureEvcMode_Task,omitempty"` - Res *types.ConfigureEvcMode_TaskResponse `xml:"urn:vim25 ConfigureEvcMode_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ConfigureEvcMode_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ConfigureEvcMode_Task(ctx context.Context, r soap.RoundTripper, req *types.ConfigureEvcMode_Task) (*types.ConfigureEvcMode_TaskResponse, error) { - var reqBody, resBody ConfigureEvcMode_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ConfigureHostCache_TaskBody struct { - Req *types.ConfigureHostCache_Task `xml:"urn:vim25 ConfigureHostCache_Task,omitempty"` - Res *types.ConfigureHostCache_TaskResponse `xml:"urn:vim25 ConfigureHostCache_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ConfigureHostCache_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ConfigureHostCache_Task(ctx context.Context, r soap.RoundTripper, req *types.ConfigureHostCache_Task) (*types.ConfigureHostCache_TaskResponse, error) { - var reqBody, resBody ConfigureHostCache_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ConfigureLicenseSourceBody struct { - Req *types.ConfigureLicenseSource `xml:"urn:vim25 ConfigureLicenseSource,omitempty"` - Res *types.ConfigureLicenseSourceResponse `xml:"urn:vim25 ConfigureLicenseSourceResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ConfigureLicenseSourceBody) Fault() *soap.Fault { return b.Fault_ } - -func ConfigureLicenseSource(ctx context.Context, r soap.RoundTripper, req *types.ConfigureLicenseSource) (*types.ConfigureLicenseSourceResponse, error) { - var reqBody, resBody ConfigureLicenseSourceBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ConfigurePowerPolicyBody struct { - Req *types.ConfigurePowerPolicy `xml:"urn:vim25 ConfigurePowerPolicy,omitempty"` - Res *types.ConfigurePowerPolicyResponse `xml:"urn:vim25 ConfigurePowerPolicyResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ConfigurePowerPolicyBody) Fault() *soap.Fault { return b.Fault_ } - -func ConfigurePowerPolicy(ctx context.Context, r soap.RoundTripper, req *types.ConfigurePowerPolicy) (*types.ConfigurePowerPolicyResponse, error) { - var reqBody, resBody ConfigurePowerPolicyBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ConfigureStorageDrsForPod_TaskBody struct { - Req *types.ConfigureStorageDrsForPod_Task `xml:"urn:vim25 ConfigureStorageDrsForPod_Task,omitempty"` - Res *types.ConfigureStorageDrsForPod_TaskResponse `xml:"urn:vim25 ConfigureStorageDrsForPod_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ConfigureStorageDrsForPod_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ConfigureStorageDrsForPod_Task(ctx context.Context, r soap.RoundTripper, req *types.ConfigureStorageDrsForPod_Task) (*types.ConfigureStorageDrsForPod_TaskResponse, error) { - var reqBody, resBody ConfigureStorageDrsForPod_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ConfigureVFlashResourceEx_TaskBody struct { - Req *types.ConfigureVFlashResourceEx_Task `xml:"urn:vim25 ConfigureVFlashResourceEx_Task,omitempty"` - Res *types.ConfigureVFlashResourceEx_TaskResponse `xml:"urn:vim25 ConfigureVFlashResourceEx_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ConfigureVFlashResourceEx_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ConfigureVFlashResourceEx_Task(ctx context.Context, r soap.RoundTripper, req *types.ConfigureVFlashResourceEx_Task) (*types.ConfigureVFlashResourceEx_TaskResponse, error) { - var reqBody, resBody ConfigureVFlashResourceEx_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ConsolidateVMDisks_TaskBody struct { - Req *types.ConsolidateVMDisks_Task `xml:"urn:vim25 ConsolidateVMDisks_Task,omitempty"` - Res *types.ConsolidateVMDisks_TaskResponse `xml:"urn:vim25 ConsolidateVMDisks_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ConsolidateVMDisks_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ConsolidateVMDisks_Task(ctx context.Context, r soap.RoundTripper, req *types.ConsolidateVMDisks_Task) (*types.ConsolidateVMDisks_TaskResponse, error) { - var reqBody, resBody ConsolidateVMDisks_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ContinueRetrievePropertiesExBody struct { - Req *types.ContinueRetrievePropertiesEx `xml:"urn:vim25 ContinueRetrievePropertiesEx,omitempty"` - Res *types.ContinueRetrievePropertiesExResponse `xml:"urn:vim25 ContinueRetrievePropertiesExResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ContinueRetrievePropertiesExBody) Fault() *soap.Fault { return b.Fault_ } - -func ContinueRetrievePropertiesEx(ctx context.Context, r soap.RoundTripper, req *types.ContinueRetrievePropertiesEx) (*types.ContinueRetrievePropertiesExResponse, error) { - var reqBody, resBody ContinueRetrievePropertiesExBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CopyDatastoreFile_TaskBody struct { - Req *types.CopyDatastoreFile_Task `xml:"urn:vim25 CopyDatastoreFile_Task,omitempty"` - Res *types.CopyDatastoreFile_TaskResponse `xml:"urn:vim25 CopyDatastoreFile_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CopyDatastoreFile_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CopyDatastoreFile_Task(ctx context.Context, r soap.RoundTripper, req *types.CopyDatastoreFile_Task) (*types.CopyDatastoreFile_TaskResponse, error) { - var reqBody, resBody CopyDatastoreFile_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CopyVirtualDisk_TaskBody struct { - Req *types.CopyVirtualDisk_Task `xml:"urn:vim25 CopyVirtualDisk_Task,omitempty"` - Res *types.CopyVirtualDisk_TaskResponse `xml:"urn:vim25 CopyVirtualDisk_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CopyVirtualDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CopyVirtualDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.CopyVirtualDisk_Task) (*types.CopyVirtualDisk_TaskResponse, error) { - var reqBody, resBody CopyVirtualDisk_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateAlarmBody struct { - Req *types.CreateAlarm `xml:"urn:vim25 CreateAlarm,omitempty"` - Res *types.CreateAlarmResponse `xml:"urn:vim25 CreateAlarmResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateAlarmBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateAlarm(ctx context.Context, r soap.RoundTripper, req *types.CreateAlarm) (*types.CreateAlarmResponse, error) { - var reqBody, resBody CreateAlarmBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateChildVM_TaskBody struct { - Req *types.CreateChildVM_Task `xml:"urn:vim25 CreateChildVM_Task,omitempty"` - Res *types.CreateChildVM_TaskResponse `xml:"urn:vim25 CreateChildVM_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateChildVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateChildVM_Task(ctx context.Context, r soap.RoundTripper, req *types.CreateChildVM_Task) (*types.CreateChildVM_TaskResponse, error) { - var reqBody, resBody CreateChildVM_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateClusterBody struct { - Req *types.CreateCluster `xml:"urn:vim25 CreateCluster,omitempty"` - Res *types.CreateClusterResponse `xml:"urn:vim25 CreateClusterResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateClusterBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateCluster(ctx context.Context, r soap.RoundTripper, req *types.CreateCluster) (*types.CreateClusterResponse, error) { - var reqBody, resBody CreateClusterBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateClusterExBody struct { - Req *types.CreateClusterEx `xml:"urn:vim25 CreateClusterEx,omitempty"` - Res *types.CreateClusterExResponse `xml:"urn:vim25 CreateClusterExResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateClusterExBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateClusterEx(ctx context.Context, r soap.RoundTripper, req *types.CreateClusterEx) (*types.CreateClusterExResponse, error) { - var reqBody, resBody CreateClusterExBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateCollectorForEventsBody struct { - Req *types.CreateCollectorForEvents `xml:"urn:vim25 CreateCollectorForEvents,omitempty"` - Res *types.CreateCollectorForEventsResponse `xml:"urn:vim25 CreateCollectorForEventsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateCollectorForEventsBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateCollectorForEvents(ctx context.Context, r soap.RoundTripper, req *types.CreateCollectorForEvents) (*types.CreateCollectorForEventsResponse, error) { - var reqBody, resBody CreateCollectorForEventsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateCollectorForTasksBody struct { - Req *types.CreateCollectorForTasks `xml:"urn:vim25 CreateCollectorForTasks,omitempty"` - Res *types.CreateCollectorForTasksResponse `xml:"urn:vim25 CreateCollectorForTasksResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateCollectorForTasksBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateCollectorForTasks(ctx context.Context, r soap.RoundTripper, req *types.CreateCollectorForTasks) (*types.CreateCollectorForTasksResponse, error) { - var reqBody, resBody CreateCollectorForTasksBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateContainerViewBody struct { - Req *types.CreateContainerView `xml:"urn:vim25 CreateContainerView,omitempty"` - Res *types.CreateContainerViewResponse `xml:"urn:vim25 CreateContainerViewResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateContainerViewBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateContainerView(ctx context.Context, r soap.RoundTripper, req *types.CreateContainerView) (*types.CreateContainerViewResponse, error) { - var reqBody, resBody CreateContainerViewBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateCustomizationSpecBody struct { - Req *types.CreateCustomizationSpec `xml:"urn:vim25 CreateCustomizationSpec,omitempty"` - Res *types.CreateCustomizationSpecResponse `xml:"urn:vim25 CreateCustomizationSpecResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateCustomizationSpecBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateCustomizationSpec(ctx context.Context, r soap.RoundTripper, req *types.CreateCustomizationSpec) (*types.CreateCustomizationSpecResponse, error) { - var reqBody, resBody CreateCustomizationSpecBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateDVPortgroup_TaskBody struct { - Req *types.CreateDVPortgroup_Task `xml:"urn:vim25 CreateDVPortgroup_Task,omitempty"` - Res *types.CreateDVPortgroup_TaskResponse `xml:"urn:vim25 CreateDVPortgroup_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateDVPortgroup_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateDVPortgroup_Task(ctx context.Context, r soap.RoundTripper, req *types.CreateDVPortgroup_Task) (*types.CreateDVPortgroup_TaskResponse, error) { - var reqBody, resBody CreateDVPortgroup_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateDVS_TaskBody struct { - Req *types.CreateDVS_Task `xml:"urn:vim25 CreateDVS_Task,omitempty"` - Res *types.CreateDVS_TaskResponse `xml:"urn:vim25 CreateDVS_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateDVS_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateDVS_Task(ctx context.Context, r soap.RoundTripper, req *types.CreateDVS_Task) (*types.CreateDVS_TaskResponse, error) { - var reqBody, resBody CreateDVS_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateDatacenterBody struct { - Req *types.CreateDatacenter `xml:"urn:vim25 CreateDatacenter,omitempty"` - Res *types.CreateDatacenterResponse `xml:"urn:vim25 CreateDatacenterResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateDatacenterBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateDatacenter(ctx context.Context, r soap.RoundTripper, req *types.CreateDatacenter) (*types.CreateDatacenterResponse, error) { - var reqBody, resBody CreateDatacenterBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateDefaultProfileBody struct { - Req *types.CreateDefaultProfile `xml:"urn:vim25 CreateDefaultProfile,omitempty"` - Res *types.CreateDefaultProfileResponse `xml:"urn:vim25 CreateDefaultProfileResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateDefaultProfileBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateDefaultProfile(ctx context.Context, r soap.RoundTripper, req *types.CreateDefaultProfile) (*types.CreateDefaultProfileResponse, error) { - var reqBody, resBody CreateDefaultProfileBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateDescriptorBody struct { - Req *types.CreateDescriptor `xml:"urn:vim25 CreateDescriptor,omitempty"` - Res *types.CreateDescriptorResponse `xml:"urn:vim25 CreateDescriptorResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateDescriptorBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateDescriptor(ctx context.Context, r soap.RoundTripper, req *types.CreateDescriptor) (*types.CreateDescriptorResponse, error) { - var reqBody, resBody CreateDescriptorBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateDiagnosticPartitionBody struct { - Req *types.CreateDiagnosticPartition `xml:"urn:vim25 CreateDiagnosticPartition,omitempty"` - Res *types.CreateDiagnosticPartitionResponse `xml:"urn:vim25 CreateDiagnosticPartitionResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateDiagnosticPartitionBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateDiagnosticPartition(ctx context.Context, r soap.RoundTripper, req *types.CreateDiagnosticPartition) (*types.CreateDiagnosticPartitionResponse, error) { - var reqBody, resBody CreateDiagnosticPartitionBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateDirectoryBody struct { - Req *types.CreateDirectory `xml:"urn:vim25 CreateDirectory,omitempty"` - Res *types.CreateDirectoryResponse `xml:"urn:vim25 CreateDirectoryResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateDirectoryBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateDirectory(ctx context.Context, r soap.RoundTripper, req *types.CreateDirectory) (*types.CreateDirectoryResponse, error) { - var reqBody, resBody CreateDirectoryBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateFilterBody struct { - Req *types.CreateFilter `xml:"urn:vim25 CreateFilter,omitempty"` - Res *types.CreateFilterResponse `xml:"urn:vim25 CreateFilterResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateFilterBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateFilter(ctx context.Context, r soap.RoundTripper, req *types.CreateFilter) (*types.CreateFilterResponse, error) { - var reqBody, resBody CreateFilterBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateFolderBody struct { - Req *types.CreateFolder `xml:"urn:vim25 CreateFolder,omitempty"` - Res *types.CreateFolderResponse `xml:"urn:vim25 CreateFolderResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateFolderBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateFolder(ctx context.Context, r soap.RoundTripper, req *types.CreateFolder) (*types.CreateFolderResponse, error) { - var reqBody, resBody CreateFolderBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateGroupBody struct { - Req *types.CreateGroup `xml:"urn:vim25 CreateGroup,omitempty"` - Res *types.CreateGroupResponse `xml:"urn:vim25 CreateGroupResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateGroupBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateGroup(ctx context.Context, r soap.RoundTripper, req *types.CreateGroup) (*types.CreateGroupResponse, error) { - var reqBody, resBody CreateGroupBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateImportSpecBody struct { - Req *types.CreateImportSpec `xml:"urn:vim25 CreateImportSpec,omitempty"` - Res *types.CreateImportSpecResponse `xml:"urn:vim25 CreateImportSpecResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateImportSpecBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateImportSpec(ctx context.Context, r soap.RoundTripper, req *types.CreateImportSpec) (*types.CreateImportSpecResponse, error) { - var reqBody, resBody CreateImportSpecBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateInventoryViewBody struct { - Req *types.CreateInventoryView `xml:"urn:vim25 CreateInventoryView,omitempty"` - Res *types.CreateInventoryViewResponse `xml:"urn:vim25 CreateInventoryViewResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateInventoryViewBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateInventoryView(ctx context.Context, r soap.RoundTripper, req *types.CreateInventoryView) (*types.CreateInventoryViewResponse, error) { - var reqBody, resBody CreateInventoryViewBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateIpPoolBody struct { - Req *types.CreateIpPool `xml:"urn:vim25 CreateIpPool,omitempty"` - Res *types.CreateIpPoolResponse `xml:"urn:vim25 CreateIpPoolResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateIpPoolBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateIpPool(ctx context.Context, r soap.RoundTripper, req *types.CreateIpPool) (*types.CreateIpPoolResponse, error) { - var reqBody, resBody CreateIpPoolBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateListViewBody struct { - Req *types.CreateListView `xml:"urn:vim25 CreateListView,omitempty"` - Res *types.CreateListViewResponse `xml:"urn:vim25 CreateListViewResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateListViewBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateListView(ctx context.Context, r soap.RoundTripper, req *types.CreateListView) (*types.CreateListViewResponse, error) { - var reqBody, resBody CreateListViewBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateListViewFromViewBody struct { - Req *types.CreateListViewFromView `xml:"urn:vim25 CreateListViewFromView,omitempty"` - Res *types.CreateListViewFromViewResponse `xml:"urn:vim25 CreateListViewFromViewResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateListViewFromViewBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateListViewFromView(ctx context.Context, r soap.RoundTripper, req *types.CreateListViewFromView) (*types.CreateListViewFromViewResponse, error) { - var reqBody, resBody CreateListViewFromViewBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateLocalDatastoreBody struct { - Req *types.CreateLocalDatastore `xml:"urn:vim25 CreateLocalDatastore,omitempty"` - Res *types.CreateLocalDatastoreResponse `xml:"urn:vim25 CreateLocalDatastoreResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateLocalDatastoreBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateLocalDatastore(ctx context.Context, r soap.RoundTripper, req *types.CreateLocalDatastore) (*types.CreateLocalDatastoreResponse, error) { - var reqBody, resBody CreateLocalDatastoreBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateNasDatastoreBody struct { - Req *types.CreateNasDatastore `xml:"urn:vim25 CreateNasDatastore,omitempty"` - Res *types.CreateNasDatastoreResponse `xml:"urn:vim25 CreateNasDatastoreResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateNasDatastoreBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateNasDatastore(ctx context.Context, r soap.RoundTripper, req *types.CreateNasDatastore) (*types.CreateNasDatastoreResponse, error) { - var reqBody, resBody CreateNasDatastoreBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateObjectScheduledTaskBody struct { - Req *types.CreateObjectScheduledTask `xml:"urn:vim25 CreateObjectScheduledTask,omitempty"` - Res *types.CreateObjectScheduledTaskResponse `xml:"urn:vim25 CreateObjectScheduledTaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateObjectScheduledTaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateObjectScheduledTask(ctx context.Context, r soap.RoundTripper, req *types.CreateObjectScheduledTask) (*types.CreateObjectScheduledTaskResponse, error) { - var reqBody, resBody CreateObjectScheduledTaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreatePerfIntervalBody struct { - Req *types.CreatePerfInterval `xml:"urn:vim25 CreatePerfInterval,omitempty"` - Res *types.CreatePerfIntervalResponse `xml:"urn:vim25 CreatePerfIntervalResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreatePerfIntervalBody) Fault() *soap.Fault { return b.Fault_ } - -func CreatePerfInterval(ctx context.Context, r soap.RoundTripper, req *types.CreatePerfInterval) (*types.CreatePerfIntervalResponse, error) { - var reqBody, resBody CreatePerfIntervalBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateProfileBody struct { - Req *types.CreateProfile `xml:"urn:vim25 CreateProfile,omitempty"` - Res *types.CreateProfileResponse `xml:"urn:vim25 CreateProfileResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateProfileBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateProfile(ctx context.Context, r soap.RoundTripper, req *types.CreateProfile) (*types.CreateProfileResponse, error) { - var reqBody, resBody CreateProfileBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreatePropertyCollectorBody struct { - Req *types.CreatePropertyCollector `xml:"urn:vim25 CreatePropertyCollector,omitempty"` - Res *types.CreatePropertyCollectorResponse `xml:"urn:vim25 CreatePropertyCollectorResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreatePropertyCollectorBody) Fault() *soap.Fault { return b.Fault_ } - -func CreatePropertyCollector(ctx context.Context, r soap.RoundTripper, req *types.CreatePropertyCollector) (*types.CreatePropertyCollectorResponse, error) { - var reqBody, resBody CreatePropertyCollectorBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateRegistryKeyInGuestBody struct { - Req *types.CreateRegistryKeyInGuest `xml:"urn:vim25 CreateRegistryKeyInGuest,omitempty"` - Res *types.CreateRegistryKeyInGuestResponse `xml:"urn:vim25 CreateRegistryKeyInGuestResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateRegistryKeyInGuestBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateRegistryKeyInGuest(ctx context.Context, r soap.RoundTripper, req *types.CreateRegistryKeyInGuest) (*types.CreateRegistryKeyInGuestResponse, error) { - var reqBody, resBody CreateRegistryKeyInGuestBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateResourcePoolBody struct { - Req *types.CreateResourcePool `xml:"urn:vim25 CreateResourcePool,omitempty"` - Res *types.CreateResourcePoolResponse `xml:"urn:vim25 CreateResourcePoolResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateResourcePoolBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateResourcePool(ctx context.Context, r soap.RoundTripper, req *types.CreateResourcePool) (*types.CreateResourcePoolResponse, error) { - var reqBody, resBody CreateResourcePoolBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateScheduledTaskBody struct { - Req *types.CreateScheduledTask `xml:"urn:vim25 CreateScheduledTask,omitempty"` - Res *types.CreateScheduledTaskResponse `xml:"urn:vim25 CreateScheduledTaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateScheduledTaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateScheduledTask(ctx context.Context, r soap.RoundTripper, req *types.CreateScheduledTask) (*types.CreateScheduledTaskResponse, error) { - var reqBody, resBody CreateScheduledTaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateScreenshot_TaskBody struct { - Req *types.CreateScreenshot_Task `xml:"urn:vim25 CreateScreenshot_Task,omitempty"` - Res *types.CreateScreenshot_TaskResponse `xml:"urn:vim25 CreateScreenshot_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateScreenshot_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateScreenshot_Task(ctx context.Context, r soap.RoundTripper, req *types.CreateScreenshot_Task) (*types.CreateScreenshot_TaskResponse, error) { - var reqBody, resBody CreateScreenshot_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateSecondaryVMEx_TaskBody struct { - Req *types.CreateSecondaryVMEx_Task `xml:"urn:vim25 CreateSecondaryVMEx_Task,omitempty"` - Res *types.CreateSecondaryVMEx_TaskResponse `xml:"urn:vim25 CreateSecondaryVMEx_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateSecondaryVMEx_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateSecondaryVMEx_Task(ctx context.Context, r soap.RoundTripper, req *types.CreateSecondaryVMEx_Task) (*types.CreateSecondaryVMEx_TaskResponse, error) { - var reqBody, resBody CreateSecondaryVMEx_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateSecondaryVM_TaskBody struct { - Req *types.CreateSecondaryVM_Task `xml:"urn:vim25 CreateSecondaryVM_Task,omitempty"` - Res *types.CreateSecondaryVM_TaskResponse `xml:"urn:vim25 CreateSecondaryVM_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateSecondaryVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateSecondaryVM_Task(ctx context.Context, r soap.RoundTripper, req *types.CreateSecondaryVM_Task) (*types.CreateSecondaryVM_TaskResponse, error) { - var reqBody, resBody CreateSecondaryVM_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateSnapshot_TaskBody struct { - Req *types.CreateSnapshot_Task `xml:"urn:vim25 CreateSnapshot_Task,omitempty"` - Res *types.CreateSnapshot_TaskResponse `xml:"urn:vim25 CreateSnapshot_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateSnapshot_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateSnapshot_Task(ctx context.Context, r soap.RoundTripper, req *types.CreateSnapshot_Task) (*types.CreateSnapshot_TaskResponse, error) { - var reqBody, resBody CreateSnapshot_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateStoragePodBody struct { - Req *types.CreateStoragePod `xml:"urn:vim25 CreateStoragePod,omitempty"` - Res *types.CreateStoragePodResponse `xml:"urn:vim25 CreateStoragePodResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateStoragePodBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateStoragePod(ctx context.Context, r soap.RoundTripper, req *types.CreateStoragePod) (*types.CreateStoragePodResponse, error) { - var reqBody, resBody CreateStoragePodBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateTaskBody struct { - Req *types.CreateTask `xml:"urn:vim25 CreateTask,omitempty"` - Res *types.CreateTaskResponse `xml:"urn:vim25 CreateTaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateTaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateTask(ctx context.Context, r soap.RoundTripper, req *types.CreateTask) (*types.CreateTaskResponse, error) { - var reqBody, resBody CreateTaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateTemporaryDirectoryInGuestBody struct { - Req *types.CreateTemporaryDirectoryInGuest `xml:"urn:vim25 CreateTemporaryDirectoryInGuest,omitempty"` - Res *types.CreateTemporaryDirectoryInGuestResponse `xml:"urn:vim25 CreateTemporaryDirectoryInGuestResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateTemporaryDirectoryInGuestBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateTemporaryDirectoryInGuest(ctx context.Context, r soap.RoundTripper, req *types.CreateTemporaryDirectoryInGuest) (*types.CreateTemporaryDirectoryInGuestResponse, error) { - var reqBody, resBody CreateTemporaryDirectoryInGuestBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateTemporaryFileInGuestBody struct { - Req *types.CreateTemporaryFileInGuest `xml:"urn:vim25 CreateTemporaryFileInGuest,omitempty"` - Res *types.CreateTemporaryFileInGuestResponse `xml:"urn:vim25 CreateTemporaryFileInGuestResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateTemporaryFileInGuestBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateTemporaryFileInGuest(ctx context.Context, r soap.RoundTripper, req *types.CreateTemporaryFileInGuest) (*types.CreateTemporaryFileInGuestResponse, error) { - var reqBody, resBody CreateTemporaryFileInGuestBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateUserBody struct { - Req *types.CreateUser `xml:"urn:vim25 CreateUser,omitempty"` - Res *types.CreateUserResponse `xml:"urn:vim25 CreateUserResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateUserBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateUser(ctx context.Context, r soap.RoundTripper, req *types.CreateUser) (*types.CreateUserResponse, error) { - var reqBody, resBody CreateUserBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateVAppBody struct { - Req *types.CreateVApp `xml:"urn:vim25 CreateVApp,omitempty"` - Res *types.CreateVAppResponse `xml:"urn:vim25 CreateVAppResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateVAppBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateVApp(ctx context.Context, r soap.RoundTripper, req *types.CreateVApp) (*types.CreateVAppResponse, error) { - var reqBody, resBody CreateVAppBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateVM_TaskBody struct { - Req *types.CreateVM_Task `xml:"urn:vim25 CreateVM_Task,omitempty"` - Res *types.CreateVM_TaskResponse `xml:"urn:vim25 CreateVM_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateVM_Task(ctx context.Context, r soap.RoundTripper, req *types.CreateVM_Task) (*types.CreateVM_TaskResponse, error) { - var reqBody, resBody CreateVM_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateVirtualDisk_TaskBody struct { - Req *types.CreateVirtualDisk_Task `xml:"urn:vim25 CreateVirtualDisk_Task,omitempty"` - Res *types.CreateVirtualDisk_TaskResponse `xml:"urn:vim25 CreateVirtualDisk_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateVirtualDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateVirtualDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.CreateVirtualDisk_Task) (*types.CreateVirtualDisk_TaskResponse, error) { - var reqBody, resBody CreateVirtualDisk_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateVmfsDatastoreBody struct { - Req *types.CreateVmfsDatastore `xml:"urn:vim25 CreateVmfsDatastore,omitempty"` - Res *types.CreateVmfsDatastoreResponse `xml:"urn:vim25 CreateVmfsDatastoreResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateVmfsDatastoreBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateVmfsDatastore(ctx context.Context, r soap.RoundTripper, req *types.CreateVmfsDatastore) (*types.CreateVmfsDatastoreResponse, error) { - var reqBody, resBody CreateVmfsDatastoreBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CreateVvolDatastoreBody struct { - Req *types.CreateVvolDatastore `xml:"urn:vim25 CreateVvolDatastore,omitempty"` - Res *types.CreateVvolDatastoreResponse `xml:"urn:vim25 CreateVvolDatastoreResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CreateVvolDatastoreBody) Fault() *soap.Fault { return b.Fault_ } - -func CreateVvolDatastore(ctx context.Context, r soap.RoundTripper, req *types.CreateVvolDatastore) (*types.CreateVvolDatastoreResponse, error) { - var reqBody, resBody CreateVvolDatastoreBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CurrentTimeBody struct { - Req *types.CurrentTime `xml:"urn:vim25 CurrentTime,omitempty"` - Res *types.CurrentTimeResponse `xml:"urn:vim25 CurrentTimeResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CurrentTimeBody) Fault() *soap.Fault { return b.Fault_ } - -func CurrentTime(ctx context.Context, r soap.RoundTripper, req *types.CurrentTime) (*types.CurrentTimeResponse, error) { - var reqBody, resBody CurrentTimeBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CustomizationSpecItemToXmlBody struct { - Req *types.CustomizationSpecItemToXml `xml:"urn:vim25 CustomizationSpecItemToXml,omitempty"` - Res *types.CustomizationSpecItemToXmlResponse `xml:"urn:vim25 CustomizationSpecItemToXmlResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CustomizationSpecItemToXmlBody) Fault() *soap.Fault { return b.Fault_ } - -func CustomizationSpecItemToXml(ctx context.Context, r soap.RoundTripper, req *types.CustomizationSpecItemToXml) (*types.CustomizationSpecItemToXmlResponse, error) { - var reqBody, resBody CustomizationSpecItemToXmlBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type CustomizeVM_TaskBody struct { - Req *types.CustomizeVM_Task `xml:"urn:vim25 CustomizeVM_Task,omitempty"` - Res *types.CustomizeVM_TaskResponse `xml:"urn:vim25 CustomizeVM_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *CustomizeVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func CustomizeVM_Task(ctx context.Context, r soap.RoundTripper, req *types.CustomizeVM_Task) (*types.CustomizeVM_TaskResponse, error) { - var reqBody, resBody CustomizeVM_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DVPortgroupRollback_TaskBody struct { - Req *types.DVPortgroupRollback_Task `xml:"urn:vim25 DVPortgroupRollback_Task,omitempty"` - Res *types.DVPortgroupRollback_TaskResponse `xml:"urn:vim25 DVPortgroupRollback_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DVPortgroupRollback_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func DVPortgroupRollback_Task(ctx context.Context, r soap.RoundTripper, req *types.DVPortgroupRollback_Task) (*types.DVPortgroupRollback_TaskResponse, error) { - var reqBody, resBody DVPortgroupRollback_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DVSManagerExportEntity_TaskBody struct { - Req *types.DVSManagerExportEntity_Task `xml:"urn:vim25 DVSManagerExportEntity_Task,omitempty"` - Res *types.DVSManagerExportEntity_TaskResponse `xml:"urn:vim25 DVSManagerExportEntity_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DVSManagerExportEntity_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func DVSManagerExportEntity_Task(ctx context.Context, r soap.RoundTripper, req *types.DVSManagerExportEntity_Task) (*types.DVSManagerExportEntity_TaskResponse, error) { - var reqBody, resBody DVSManagerExportEntity_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DVSManagerImportEntity_TaskBody struct { - Req *types.DVSManagerImportEntity_Task `xml:"urn:vim25 DVSManagerImportEntity_Task,omitempty"` - Res *types.DVSManagerImportEntity_TaskResponse `xml:"urn:vim25 DVSManagerImportEntity_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DVSManagerImportEntity_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func DVSManagerImportEntity_Task(ctx context.Context, r soap.RoundTripper, req *types.DVSManagerImportEntity_Task) (*types.DVSManagerImportEntity_TaskResponse, error) { - var reqBody, resBody DVSManagerImportEntity_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DVSManagerLookupDvPortGroupBody struct { - Req *types.DVSManagerLookupDvPortGroup `xml:"urn:vim25 DVSManagerLookupDvPortGroup,omitempty"` - Res *types.DVSManagerLookupDvPortGroupResponse `xml:"urn:vim25 DVSManagerLookupDvPortGroupResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DVSManagerLookupDvPortGroupBody) Fault() *soap.Fault { return b.Fault_ } - -func DVSManagerLookupDvPortGroup(ctx context.Context, r soap.RoundTripper, req *types.DVSManagerLookupDvPortGroup) (*types.DVSManagerLookupDvPortGroupResponse, error) { - var reqBody, resBody DVSManagerLookupDvPortGroupBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DVSRollback_TaskBody struct { - Req *types.DVSRollback_Task `xml:"urn:vim25 DVSRollback_Task,omitempty"` - Res *types.DVSRollback_TaskResponse `xml:"urn:vim25 DVSRollback_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DVSRollback_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func DVSRollback_Task(ctx context.Context, r soap.RoundTripper, req *types.DVSRollback_Task) (*types.DVSRollback_TaskResponse, error) { - var reqBody, resBody DVSRollback_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DatastoreEnterMaintenanceModeBody struct { - Req *types.DatastoreEnterMaintenanceMode `xml:"urn:vim25 DatastoreEnterMaintenanceMode,omitempty"` - Res *types.DatastoreEnterMaintenanceModeResponse `xml:"urn:vim25 DatastoreEnterMaintenanceModeResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DatastoreEnterMaintenanceModeBody) Fault() *soap.Fault { return b.Fault_ } - -func DatastoreEnterMaintenanceMode(ctx context.Context, r soap.RoundTripper, req *types.DatastoreEnterMaintenanceMode) (*types.DatastoreEnterMaintenanceModeResponse, error) { - var reqBody, resBody DatastoreEnterMaintenanceModeBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DatastoreExitMaintenanceMode_TaskBody struct { - Req *types.DatastoreExitMaintenanceMode_Task `xml:"urn:vim25 DatastoreExitMaintenanceMode_Task,omitempty"` - Res *types.DatastoreExitMaintenanceMode_TaskResponse `xml:"urn:vim25 DatastoreExitMaintenanceMode_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DatastoreExitMaintenanceMode_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func DatastoreExitMaintenanceMode_Task(ctx context.Context, r soap.RoundTripper, req *types.DatastoreExitMaintenanceMode_Task) (*types.DatastoreExitMaintenanceMode_TaskResponse, error) { - var reqBody, resBody DatastoreExitMaintenanceMode_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DecodeLicenseBody struct { - Req *types.DecodeLicense `xml:"urn:vim25 DecodeLicense,omitempty"` - Res *types.DecodeLicenseResponse `xml:"urn:vim25 DecodeLicenseResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DecodeLicenseBody) Fault() *soap.Fault { return b.Fault_ } - -func DecodeLicense(ctx context.Context, r soap.RoundTripper, req *types.DecodeLicense) (*types.DecodeLicenseResponse, error) { - var reqBody, resBody DecodeLicenseBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DefragmentAllDisksBody struct { - Req *types.DefragmentAllDisks `xml:"urn:vim25 DefragmentAllDisks,omitempty"` - Res *types.DefragmentAllDisksResponse `xml:"urn:vim25 DefragmentAllDisksResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DefragmentAllDisksBody) Fault() *soap.Fault { return b.Fault_ } - -func DefragmentAllDisks(ctx context.Context, r soap.RoundTripper, req *types.DefragmentAllDisks) (*types.DefragmentAllDisksResponse, error) { - var reqBody, resBody DefragmentAllDisksBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DefragmentVirtualDisk_TaskBody struct { - Req *types.DefragmentVirtualDisk_Task `xml:"urn:vim25 DefragmentVirtualDisk_Task,omitempty"` - Res *types.DefragmentVirtualDisk_TaskResponse `xml:"urn:vim25 DefragmentVirtualDisk_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DefragmentVirtualDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func DefragmentVirtualDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.DefragmentVirtualDisk_Task) (*types.DefragmentVirtualDisk_TaskResponse, error) { - var reqBody, resBody DefragmentVirtualDisk_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DeleteCustomizationSpecBody struct { - Req *types.DeleteCustomizationSpec `xml:"urn:vim25 DeleteCustomizationSpec,omitempty"` - Res *types.DeleteCustomizationSpecResponse `xml:"urn:vim25 DeleteCustomizationSpecResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DeleteCustomizationSpecBody) Fault() *soap.Fault { return b.Fault_ } - -func DeleteCustomizationSpec(ctx context.Context, r soap.RoundTripper, req *types.DeleteCustomizationSpec) (*types.DeleteCustomizationSpecResponse, error) { - var reqBody, resBody DeleteCustomizationSpecBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DeleteDatastoreFile_TaskBody struct { - Req *types.DeleteDatastoreFile_Task `xml:"urn:vim25 DeleteDatastoreFile_Task,omitempty"` - Res *types.DeleteDatastoreFile_TaskResponse `xml:"urn:vim25 DeleteDatastoreFile_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DeleteDatastoreFile_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func DeleteDatastoreFile_Task(ctx context.Context, r soap.RoundTripper, req *types.DeleteDatastoreFile_Task) (*types.DeleteDatastoreFile_TaskResponse, error) { - var reqBody, resBody DeleteDatastoreFile_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DeleteDirectoryBody struct { - Req *types.DeleteDirectory `xml:"urn:vim25 DeleteDirectory,omitempty"` - Res *types.DeleteDirectoryResponse `xml:"urn:vim25 DeleteDirectoryResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DeleteDirectoryBody) Fault() *soap.Fault { return b.Fault_ } - -func DeleteDirectory(ctx context.Context, r soap.RoundTripper, req *types.DeleteDirectory) (*types.DeleteDirectoryResponse, error) { - var reqBody, resBody DeleteDirectoryBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DeleteDirectoryInGuestBody struct { - Req *types.DeleteDirectoryInGuest `xml:"urn:vim25 DeleteDirectoryInGuest,omitempty"` - Res *types.DeleteDirectoryInGuestResponse `xml:"urn:vim25 DeleteDirectoryInGuestResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DeleteDirectoryInGuestBody) Fault() *soap.Fault { return b.Fault_ } - -func DeleteDirectoryInGuest(ctx context.Context, r soap.RoundTripper, req *types.DeleteDirectoryInGuest) (*types.DeleteDirectoryInGuestResponse, error) { - var reqBody, resBody DeleteDirectoryInGuestBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DeleteFileBody struct { - Req *types.DeleteFile `xml:"urn:vim25 DeleteFile,omitempty"` - Res *types.DeleteFileResponse `xml:"urn:vim25 DeleteFileResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DeleteFileBody) Fault() *soap.Fault { return b.Fault_ } - -func DeleteFile(ctx context.Context, r soap.RoundTripper, req *types.DeleteFile) (*types.DeleteFileResponse, error) { - var reqBody, resBody DeleteFileBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DeleteFileInGuestBody struct { - Req *types.DeleteFileInGuest `xml:"urn:vim25 DeleteFileInGuest,omitempty"` - Res *types.DeleteFileInGuestResponse `xml:"urn:vim25 DeleteFileInGuestResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DeleteFileInGuestBody) Fault() *soap.Fault { return b.Fault_ } - -func DeleteFileInGuest(ctx context.Context, r soap.RoundTripper, req *types.DeleteFileInGuest) (*types.DeleteFileInGuestResponse, error) { - var reqBody, resBody DeleteFileInGuestBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DeleteRegistryKeyInGuestBody struct { - Req *types.DeleteRegistryKeyInGuest `xml:"urn:vim25 DeleteRegistryKeyInGuest,omitempty"` - Res *types.DeleteRegistryKeyInGuestResponse `xml:"urn:vim25 DeleteRegistryKeyInGuestResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DeleteRegistryKeyInGuestBody) Fault() *soap.Fault { return b.Fault_ } - -func DeleteRegistryKeyInGuest(ctx context.Context, r soap.RoundTripper, req *types.DeleteRegistryKeyInGuest) (*types.DeleteRegistryKeyInGuestResponse, error) { - var reqBody, resBody DeleteRegistryKeyInGuestBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DeleteRegistryValueInGuestBody struct { - Req *types.DeleteRegistryValueInGuest `xml:"urn:vim25 DeleteRegistryValueInGuest,omitempty"` - Res *types.DeleteRegistryValueInGuestResponse `xml:"urn:vim25 DeleteRegistryValueInGuestResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DeleteRegistryValueInGuestBody) Fault() *soap.Fault { return b.Fault_ } - -func DeleteRegistryValueInGuest(ctx context.Context, r soap.RoundTripper, req *types.DeleteRegistryValueInGuest) (*types.DeleteRegistryValueInGuestResponse, error) { - var reqBody, resBody DeleteRegistryValueInGuestBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DeleteScsiLunStateBody struct { - Req *types.DeleteScsiLunState `xml:"urn:vim25 DeleteScsiLunState,omitempty"` - Res *types.DeleteScsiLunStateResponse `xml:"urn:vim25 DeleteScsiLunStateResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DeleteScsiLunStateBody) Fault() *soap.Fault { return b.Fault_ } - -func DeleteScsiLunState(ctx context.Context, r soap.RoundTripper, req *types.DeleteScsiLunState) (*types.DeleteScsiLunStateResponse, error) { - var reqBody, resBody DeleteScsiLunStateBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DeleteVffsVolumeStateBody struct { - Req *types.DeleteVffsVolumeState `xml:"urn:vim25 DeleteVffsVolumeState,omitempty"` - Res *types.DeleteVffsVolumeStateResponse `xml:"urn:vim25 DeleteVffsVolumeStateResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DeleteVffsVolumeStateBody) Fault() *soap.Fault { return b.Fault_ } - -func DeleteVffsVolumeState(ctx context.Context, r soap.RoundTripper, req *types.DeleteVffsVolumeState) (*types.DeleteVffsVolumeStateResponse, error) { - var reqBody, resBody DeleteVffsVolumeStateBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DeleteVirtualDisk_TaskBody struct { - Req *types.DeleteVirtualDisk_Task `xml:"urn:vim25 DeleteVirtualDisk_Task,omitempty"` - Res *types.DeleteVirtualDisk_TaskResponse `xml:"urn:vim25 DeleteVirtualDisk_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DeleteVirtualDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func DeleteVirtualDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.DeleteVirtualDisk_Task) (*types.DeleteVirtualDisk_TaskResponse, error) { - var reqBody, resBody DeleteVirtualDisk_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DeleteVmfsVolumeStateBody struct { - Req *types.DeleteVmfsVolumeState `xml:"urn:vim25 DeleteVmfsVolumeState,omitempty"` - Res *types.DeleteVmfsVolumeStateResponse `xml:"urn:vim25 DeleteVmfsVolumeStateResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DeleteVmfsVolumeStateBody) Fault() *soap.Fault { return b.Fault_ } - -func DeleteVmfsVolumeState(ctx context.Context, r soap.RoundTripper, req *types.DeleteVmfsVolumeState) (*types.DeleteVmfsVolumeStateResponse, error) { - var reqBody, resBody DeleteVmfsVolumeStateBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DeleteVsanObjectsBody struct { - Req *types.DeleteVsanObjects `xml:"urn:vim25 DeleteVsanObjects,omitempty"` - Res *types.DeleteVsanObjectsResponse `xml:"urn:vim25 DeleteVsanObjectsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DeleteVsanObjectsBody) Fault() *soap.Fault { return b.Fault_ } - -func DeleteVsanObjects(ctx context.Context, r soap.RoundTripper, req *types.DeleteVsanObjects) (*types.DeleteVsanObjectsResponse, error) { - var reqBody, resBody DeleteVsanObjectsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DeselectVnicBody struct { - Req *types.DeselectVnic `xml:"urn:vim25 DeselectVnic,omitempty"` - Res *types.DeselectVnicResponse `xml:"urn:vim25 DeselectVnicResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DeselectVnicBody) Fault() *soap.Fault { return b.Fault_ } - -func DeselectVnic(ctx context.Context, r soap.RoundTripper, req *types.DeselectVnic) (*types.DeselectVnicResponse, error) { - var reqBody, resBody DeselectVnicBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DeselectVnicForNicTypeBody struct { - Req *types.DeselectVnicForNicType `xml:"urn:vim25 DeselectVnicForNicType,omitempty"` - Res *types.DeselectVnicForNicTypeResponse `xml:"urn:vim25 DeselectVnicForNicTypeResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DeselectVnicForNicTypeBody) Fault() *soap.Fault { return b.Fault_ } - -func DeselectVnicForNicType(ctx context.Context, r soap.RoundTripper, req *types.DeselectVnicForNicType) (*types.DeselectVnicForNicTypeResponse, error) { - var reqBody, resBody DeselectVnicForNicTypeBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DestroyChildrenBody struct { - Req *types.DestroyChildren `xml:"urn:vim25 DestroyChildren,omitempty"` - Res *types.DestroyChildrenResponse `xml:"urn:vim25 DestroyChildrenResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DestroyChildrenBody) Fault() *soap.Fault { return b.Fault_ } - -func DestroyChildren(ctx context.Context, r soap.RoundTripper, req *types.DestroyChildren) (*types.DestroyChildrenResponse, error) { - var reqBody, resBody DestroyChildrenBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DestroyCollectorBody struct { - Req *types.DestroyCollector `xml:"urn:vim25 DestroyCollector,omitempty"` - Res *types.DestroyCollectorResponse `xml:"urn:vim25 DestroyCollectorResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DestroyCollectorBody) Fault() *soap.Fault { return b.Fault_ } - -func DestroyCollector(ctx context.Context, r soap.RoundTripper, req *types.DestroyCollector) (*types.DestroyCollectorResponse, error) { - var reqBody, resBody DestroyCollectorBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DestroyDatastoreBody struct { - Req *types.DestroyDatastore `xml:"urn:vim25 DestroyDatastore,omitempty"` - Res *types.DestroyDatastoreResponse `xml:"urn:vim25 DestroyDatastoreResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DestroyDatastoreBody) Fault() *soap.Fault { return b.Fault_ } - -func DestroyDatastore(ctx context.Context, r soap.RoundTripper, req *types.DestroyDatastore) (*types.DestroyDatastoreResponse, error) { - var reqBody, resBody DestroyDatastoreBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DestroyIpPoolBody struct { - Req *types.DestroyIpPool `xml:"urn:vim25 DestroyIpPool,omitempty"` - Res *types.DestroyIpPoolResponse `xml:"urn:vim25 DestroyIpPoolResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DestroyIpPoolBody) Fault() *soap.Fault { return b.Fault_ } - -func DestroyIpPool(ctx context.Context, r soap.RoundTripper, req *types.DestroyIpPool) (*types.DestroyIpPoolResponse, error) { - var reqBody, resBody DestroyIpPoolBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DestroyNetworkBody struct { - Req *types.DestroyNetwork `xml:"urn:vim25 DestroyNetwork,omitempty"` - Res *types.DestroyNetworkResponse `xml:"urn:vim25 DestroyNetworkResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DestroyNetworkBody) Fault() *soap.Fault { return b.Fault_ } - -func DestroyNetwork(ctx context.Context, r soap.RoundTripper, req *types.DestroyNetwork) (*types.DestroyNetworkResponse, error) { - var reqBody, resBody DestroyNetworkBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DestroyProfileBody struct { - Req *types.DestroyProfile `xml:"urn:vim25 DestroyProfile,omitempty"` - Res *types.DestroyProfileResponse `xml:"urn:vim25 DestroyProfileResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DestroyProfileBody) Fault() *soap.Fault { return b.Fault_ } - -func DestroyProfile(ctx context.Context, r soap.RoundTripper, req *types.DestroyProfile) (*types.DestroyProfileResponse, error) { - var reqBody, resBody DestroyProfileBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DestroyPropertyCollectorBody struct { - Req *types.DestroyPropertyCollector `xml:"urn:vim25 DestroyPropertyCollector,omitempty"` - Res *types.DestroyPropertyCollectorResponse `xml:"urn:vim25 DestroyPropertyCollectorResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DestroyPropertyCollectorBody) Fault() *soap.Fault { return b.Fault_ } - -func DestroyPropertyCollector(ctx context.Context, r soap.RoundTripper, req *types.DestroyPropertyCollector) (*types.DestroyPropertyCollectorResponse, error) { - var reqBody, resBody DestroyPropertyCollectorBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DestroyPropertyFilterBody struct { - Req *types.DestroyPropertyFilter `xml:"urn:vim25 DestroyPropertyFilter,omitempty"` - Res *types.DestroyPropertyFilterResponse `xml:"urn:vim25 DestroyPropertyFilterResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DestroyPropertyFilterBody) Fault() *soap.Fault { return b.Fault_ } - -func DestroyPropertyFilter(ctx context.Context, r soap.RoundTripper, req *types.DestroyPropertyFilter) (*types.DestroyPropertyFilterResponse, error) { - var reqBody, resBody DestroyPropertyFilterBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DestroyVffsBody struct { - Req *types.DestroyVffs `xml:"urn:vim25 DestroyVffs,omitempty"` - Res *types.DestroyVffsResponse `xml:"urn:vim25 DestroyVffsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DestroyVffsBody) Fault() *soap.Fault { return b.Fault_ } - -func DestroyVffs(ctx context.Context, r soap.RoundTripper, req *types.DestroyVffs) (*types.DestroyVffsResponse, error) { - var reqBody, resBody DestroyVffsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DestroyViewBody struct { - Req *types.DestroyView `xml:"urn:vim25 DestroyView,omitempty"` - Res *types.DestroyViewResponse `xml:"urn:vim25 DestroyViewResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DestroyViewBody) Fault() *soap.Fault { return b.Fault_ } - -func DestroyView(ctx context.Context, r soap.RoundTripper, req *types.DestroyView) (*types.DestroyViewResponse, error) { - var reqBody, resBody DestroyViewBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type Destroy_TaskBody struct { - Req *types.Destroy_Task `xml:"urn:vim25 Destroy_Task,omitempty"` - Res *types.Destroy_TaskResponse `xml:"urn:vim25 Destroy_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *Destroy_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func Destroy_Task(ctx context.Context, r soap.RoundTripper, req *types.Destroy_Task) (*types.Destroy_TaskResponse, error) { - var reqBody, resBody Destroy_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DetachScsiLunBody struct { - Req *types.DetachScsiLun `xml:"urn:vim25 DetachScsiLun,omitempty"` - Res *types.DetachScsiLunResponse `xml:"urn:vim25 DetachScsiLunResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DetachScsiLunBody) Fault() *soap.Fault { return b.Fault_ } - -func DetachScsiLun(ctx context.Context, r soap.RoundTripper, req *types.DetachScsiLun) (*types.DetachScsiLunResponse, error) { - var reqBody, resBody DetachScsiLunBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DetachScsiLunEx_TaskBody struct { - Req *types.DetachScsiLunEx_Task `xml:"urn:vim25 DetachScsiLunEx_Task,omitempty"` - Res *types.DetachScsiLunEx_TaskResponse `xml:"urn:vim25 DetachScsiLunEx_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DetachScsiLunEx_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func DetachScsiLunEx_Task(ctx context.Context, r soap.RoundTripper, req *types.DetachScsiLunEx_Task) (*types.DetachScsiLunEx_TaskResponse, error) { - var reqBody, resBody DetachScsiLunEx_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DisableEvcMode_TaskBody struct { - Req *types.DisableEvcMode_Task `xml:"urn:vim25 DisableEvcMode_Task,omitempty"` - Res *types.DisableEvcMode_TaskResponse `xml:"urn:vim25 DisableEvcMode_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DisableEvcMode_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func DisableEvcMode_Task(ctx context.Context, r soap.RoundTripper, req *types.DisableEvcMode_Task) (*types.DisableEvcMode_TaskResponse, error) { - var reqBody, resBody DisableEvcMode_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DisableFeatureBody struct { - Req *types.DisableFeature `xml:"urn:vim25 DisableFeature,omitempty"` - Res *types.DisableFeatureResponse `xml:"urn:vim25 DisableFeatureResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DisableFeatureBody) Fault() *soap.Fault { return b.Fault_ } - -func DisableFeature(ctx context.Context, r soap.RoundTripper, req *types.DisableFeature) (*types.DisableFeatureResponse, error) { - var reqBody, resBody DisableFeatureBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DisableHyperThreadingBody struct { - Req *types.DisableHyperThreading `xml:"urn:vim25 DisableHyperThreading,omitempty"` - Res *types.DisableHyperThreadingResponse `xml:"urn:vim25 DisableHyperThreadingResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DisableHyperThreadingBody) Fault() *soap.Fault { return b.Fault_ } - -func DisableHyperThreading(ctx context.Context, r soap.RoundTripper, req *types.DisableHyperThreading) (*types.DisableHyperThreadingResponse, error) { - var reqBody, resBody DisableHyperThreadingBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DisableMultipathPathBody struct { - Req *types.DisableMultipathPath `xml:"urn:vim25 DisableMultipathPath,omitempty"` - Res *types.DisableMultipathPathResponse `xml:"urn:vim25 DisableMultipathPathResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DisableMultipathPathBody) Fault() *soap.Fault { return b.Fault_ } - -func DisableMultipathPath(ctx context.Context, r soap.RoundTripper, req *types.DisableMultipathPath) (*types.DisableMultipathPathResponse, error) { - var reqBody, resBody DisableMultipathPathBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DisableRulesetBody struct { - Req *types.DisableRuleset `xml:"urn:vim25 DisableRuleset,omitempty"` - Res *types.DisableRulesetResponse `xml:"urn:vim25 DisableRulesetResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DisableRulesetBody) Fault() *soap.Fault { return b.Fault_ } - -func DisableRuleset(ctx context.Context, r soap.RoundTripper, req *types.DisableRuleset) (*types.DisableRulesetResponse, error) { - var reqBody, resBody DisableRulesetBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DisableSecondaryVM_TaskBody struct { - Req *types.DisableSecondaryVM_Task `xml:"urn:vim25 DisableSecondaryVM_Task,omitempty"` - Res *types.DisableSecondaryVM_TaskResponse `xml:"urn:vim25 DisableSecondaryVM_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DisableSecondaryVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func DisableSecondaryVM_Task(ctx context.Context, r soap.RoundTripper, req *types.DisableSecondaryVM_Task) (*types.DisableSecondaryVM_TaskResponse, error) { - var reqBody, resBody DisableSecondaryVM_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DisableSmartCardAuthenticationBody struct { - Req *types.DisableSmartCardAuthentication `xml:"urn:vim25 DisableSmartCardAuthentication,omitempty"` - Res *types.DisableSmartCardAuthenticationResponse `xml:"urn:vim25 DisableSmartCardAuthenticationResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DisableSmartCardAuthenticationBody) Fault() *soap.Fault { return b.Fault_ } - -func DisableSmartCardAuthentication(ctx context.Context, r soap.RoundTripper, req *types.DisableSmartCardAuthentication) (*types.DisableSmartCardAuthenticationResponse, error) { - var reqBody, resBody DisableSmartCardAuthenticationBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DisconnectHost_TaskBody struct { - Req *types.DisconnectHost_Task `xml:"urn:vim25 DisconnectHost_Task,omitempty"` - Res *types.DisconnectHost_TaskResponse `xml:"urn:vim25 DisconnectHost_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DisconnectHost_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func DisconnectHost_Task(ctx context.Context, r soap.RoundTripper, req *types.DisconnectHost_Task) (*types.DisconnectHost_TaskResponse, error) { - var reqBody, resBody DisconnectHost_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DiscoverFcoeHbasBody struct { - Req *types.DiscoverFcoeHbas `xml:"urn:vim25 DiscoverFcoeHbas,omitempty"` - Res *types.DiscoverFcoeHbasResponse `xml:"urn:vim25 DiscoverFcoeHbasResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DiscoverFcoeHbasBody) Fault() *soap.Fault { return b.Fault_ } - -func DiscoverFcoeHbas(ctx context.Context, r soap.RoundTripper, req *types.DiscoverFcoeHbas) (*types.DiscoverFcoeHbasResponse, error) { - var reqBody, resBody DiscoverFcoeHbasBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DissociateProfileBody struct { - Req *types.DissociateProfile `xml:"urn:vim25 DissociateProfile,omitempty"` - Res *types.DissociateProfileResponse `xml:"urn:vim25 DissociateProfileResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DissociateProfileBody) Fault() *soap.Fault { return b.Fault_ } - -func DissociateProfile(ctx context.Context, r soap.RoundTripper, req *types.DissociateProfile) (*types.DissociateProfileResponse, error) { - var reqBody, resBody DissociateProfileBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DoesCustomizationSpecExistBody struct { - Req *types.DoesCustomizationSpecExist `xml:"urn:vim25 DoesCustomizationSpecExist,omitempty"` - Res *types.DoesCustomizationSpecExistResponse `xml:"urn:vim25 DoesCustomizationSpecExistResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DoesCustomizationSpecExistBody) Fault() *soap.Fault { return b.Fault_ } - -func DoesCustomizationSpecExist(ctx context.Context, r soap.RoundTripper, req *types.DoesCustomizationSpecExist) (*types.DoesCustomizationSpecExistResponse, error) { - var reqBody, resBody DoesCustomizationSpecExistBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DuplicateCustomizationSpecBody struct { - Req *types.DuplicateCustomizationSpec `xml:"urn:vim25 DuplicateCustomizationSpec,omitempty"` - Res *types.DuplicateCustomizationSpecResponse `xml:"urn:vim25 DuplicateCustomizationSpecResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DuplicateCustomizationSpecBody) Fault() *soap.Fault { return b.Fault_ } - -func DuplicateCustomizationSpec(ctx context.Context, r soap.RoundTripper, req *types.DuplicateCustomizationSpec) (*types.DuplicateCustomizationSpecResponse, error) { - var reqBody, resBody DuplicateCustomizationSpecBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type DvsReconfigureVmVnicNetworkResourcePool_TaskBody struct { - Req *types.DvsReconfigureVmVnicNetworkResourcePool_Task `xml:"urn:vim25 DvsReconfigureVmVnicNetworkResourcePool_Task,omitempty"` - Res *types.DvsReconfigureVmVnicNetworkResourcePool_TaskResponse `xml:"urn:vim25 DvsReconfigureVmVnicNetworkResourcePool_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *DvsReconfigureVmVnicNetworkResourcePool_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func DvsReconfigureVmVnicNetworkResourcePool_Task(ctx context.Context, r soap.RoundTripper, req *types.DvsReconfigureVmVnicNetworkResourcePool_Task) (*types.DvsReconfigureVmVnicNetworkResourcePool_TaskResponse, error) { - var reqBody, resBody DvsReconfigureVmVnicNetworkResourcePool_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type EagerZeroVirtualDisk_TaskBody struct { - Req *types.EagerZeroVirtualDisk_Task `xml:"urn:vim25 EagerZeroVirtualDisk_Task,omitempty"` - Res *types.EagerZeroVirtualDisk_TaskResponse `xml:"urn:vim25 EagerZeroVirtualDisk_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *EagerZeroVirtualDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func EagerZeroVirtualDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.EagerZeroVirtualDisk_Task) (*types.EagerZeroVirtualDisk_TaskResponse, error) { - var reqBody, resBody EagerZeroVirtualDisk_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type EnableAlarmActionsBody struct { - Req *types.EnableAlarmActions `xml:"urn:vim25 EnableAlarmActions,omitempty"` - Res *types.EnableAlarmActionsResponse `xml:"urn:vim25 EnableAlarmActionsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *EnableAlarmActionsBody) Fault() *soap.Fault { return b.Fault_ } - -func EnableAlarmActions(ctx context.Context, r soap.RoundTripper, req *types.EnableAlarmActions) (*types.EnableAlarmActionsResponse, error) { - var reqBody, resBody EnableAlarmActionsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type EnableFeatureBody struct { - Req *types.EnableFeature `xml:"urn:vim25 EnableFeature,omitempty"` - Res *types.EnableFeatureResponse `xml:"urn:vim25 EnableFeatureResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *EnableFeatureBody) Fault() *soap.Fault { return b.Fault_ } - -func EnableFeature(ctx context.Context, r soap.RoundTripper, req *types.EnableFeature) (*types.EnableFeatureResponse, error) { - var reqBody, resBody EnableFeatureBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type EnableHyperThreadingBody struct { - Req *types.EnableHyperThreading `xml:"urn:vim25 EnableHyperThreading,omitempty"` - Res *types.EnableHyperThreadingResponse `xml:"urn:vim25 EnableHyperThreadingResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *EnableHyperThreadingBody) Fault() *soap.Fault { return b.Fault_ } - -func EnableHyperThreading(ctx context.Context, r soap.RoundTripper, req *types.EnableHyperThreading) (*types.EnableHyperThreadingResponse, error) { - var reqBody, resBody EnableHyperThreadingBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type EnableMultipathPathBody struct { - Req *types.EnableMultipathPath `xml:"urn:vim25 EnableMultipathPath,omitempty"` - Res *types.EnableMultipathPathResponse `xml:"urn:vim25 EnableMultipathPathResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *EnableMultipathPathBody) Fault() *soap.Fault { return b.Fault_ } - -func EnableMultipathPath(ctx context.Context, r soap.RoundTripper, req *types.EnableMultipathPath) (*types.EnableMultipathPathResponse, error) { - var reqBody, resBody EnableMultipathPathBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type EnableNetworkResourceManagementBody struct { - Req *types.EnableNetworkResourceManagement `xml:"urn:vim25 EnableNetworkResourceManagement,omitempty"` - Res *types.EnableNetworkResourceManagementResponse `xml:"urn:vim25 EnableNetworkResourceManagementResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *EnableNetworkResourceManagementBody) Fault() *soap.Fault { return b.Fault_ } - -func EnableNetworkResourceManagement(ctx context.Context, r soap.RoundTripper, req *types.EnableNetworkResourceManagement) (*types.EnableNetworkResourceManagementResponse, error) { - var reqBody, resBody EnableNetworkResourceManagementBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type EnableRulesetBody struct { - Req *types.EnableRuleset `xml:"urn:vim25 EnableRuleset,omitempty"` - Res *types.EnableRulesetResponse `xml:"urn:vim25 EnableRulesetResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *EnableRulesetBody) Fault() *soap.Fault { return b.Fault_ } - -func EnableRuleset(ctx context.Context, r soap.RoundTripper, req *types.EnableRuleset) (*types.EnableRulesetResponse, error) { - var reqBody, resBody EnableRulesetBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type EnableSecondaryVM_TaskBody struct { - Req *types.EnableSecondaryVM_Task `xml:"urn:vim25 EnableSecondaryVM_Task,omitempty"` - Res *types.EnableSecondaryVM_TaskResponse `xml:"urn:vim25 EnableSecondaryVM_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *EnableSecondaryVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func EnableSecondaryVM_Task(ctx context.Context, r soap.RoundTripper, req *types.EnableSecondaryVM_Task) (*types.EnableSecondaryVM_TaskResponse, error) { - var reqBody, resBody EnableSecondaryVM_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type EnableSmartCardAuthenticationBody struct { - Req *types.EnableSmartCardAuthentication `xml:"urn:vim25 EnableSmartCardAuthentication,omitempty"` - Res *types.EnableSmartCardAuthenticationResponse `xml:"urn:vim25 EnableSmartCardAuthenticationResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *EnableSmartCardAuthenticationBody) Fault() *soap.Fault { return b.Fault_ } - -func EnableSmartCardAuthentication(ctx context.Context, r soap.RoundTripper, req *types.EnableSmartCardAuthentication) (*types.EnableSmartCardAuthenticationResponse, error) { - var reqBody, resBody EnableSmartCardAuthenticationBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type EnterLockdownModeBody struct { - Req *types.EnterLockdownMode `xml:"urn:vim25 EnterLockdownMode,omitempty"` - Res *types.EnterLockdownModeResponse `xml:"urn:vim25 EnterLockdownModeResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *EnterLockdownModeBody) Fault() *soap.Fault { return b.Fault_ } - -func EnterLockdownMode(ctx context.Context, r soap.RoundTripper, req *types.EnterLockdownMode) (*types.EnterLockdownModeResponse, error) { - var reqBody, resBody EnterLockdownModeBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type EnterMaintenanceMode_TaskBody struct { - Req *types.EnterMaintenanceMode_Task `xml:"urn:vim25 EnterMaintenanceMode_Task,omitempty"` - Res *types.EnterMaintenanceMode_TaskResponse `xml:"urn:vim25 EnterMaintenanceMode_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *EnterMaintenanceMode_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func EnterMaintenanceMode_Task(ctx context.Context, r soap.RoundTripper, req *types.EnterMaintenanceMode_Task) (*types.EnterMaintenanceMode_TaskResponse, error) { - var reqBody, resBody EnterMaintenanceMode_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type EstimateDatabaseSizeBody struct { - Req *types.EstimateDatabaseSize `xml:"urn:vim25 EstimateDatabaseSize,omitempty"` - Res *types.EstimateDatabaseSizeResponse `xml:"urn:vim25 EstimateDatabaseSizeResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *EstimateDatabaseSizeBody) Fault() *soap.Fault { return b.Fault_ } - -func EstimateDatabaseSize(ctx context.Context, r soap.RoundTripper, req *types.EstimateDatabaseSize) (*types.EstimateDatabaseSizeResponse, error) { - var reqBody, resBody EstimateDatabaseSizeBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type EstimateStorageForConsolidateSnapshots_TaskBody struct { - Req *types.EstimateStorageForConsolidateSnapshots_Task `xml:"urn:vim25 EstimateStorageForConsolidateSnapshots_Task,omitempty"` - Res *types.EstimateStorageForConsolidateSnapshots_TaskResponse `xml:"urn:vim25 EstimateStorageForConsolidateSnapshots_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *EstimateStorageForConsolidateSnapshots_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func EstimateStorageForConsolidateSnapshots_Task(ctx context.Context, r soap.RoundTripper, req *types.EstimateStorageForConsolidateSnapshots_Task) (*types.EstimateStorageForConsolidateSnapshots_TaskResponse, error) { - var reqBody, resBody EstimateStorageForConsolidateSnapshots_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type EsxAgentHostManagerUpdateConfigBody struct { - Req *types.EsxAgentHostManagerUpdateConfig `xml:"urn:vim25 EsxAgentHostManagerUpdateConfig,omitempty"` - Res *types.EsxAgentHostManagerUpdateConfigResponse `xml:"urn:vim25 EsxAgentHostManagerUpdateConfigResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *EsxAgentHostManagerUpdateConfigBody) Fault() *soap.Fault { return b.Fault_ } - -func EsxAgentHostManagerUpdateConfig(ctx context.Context, r soap.RoundTripper, req *types.EsxAgentHostManagerUpdateConfig) (*types.EsxAgentHostManagerUpdateConfigResponse, error) { - var reqBody, resBody EsxAgentHostManagerUpdateConfigBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type EvacuateVsanNode_TaskBody struct { - Req *types.EvacuateVsanNode_Task `xml:"urn:vim25 EvacuateVsanNode_Task,omitempty"` - Res *types.EvacuateVsanNode_TaskResponse `xml:"urn:vim25 EvacuateVsanNode_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *EvacuateVsanNode_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func EvacuateVsanNode_Task(ctx context.Context, r soap.RoundTripper, req *types.EvacuateVsanNode_Task) (*types.EvacuateVsanNode_TaskResponse, error) { - var reqBody, resBody EvacuateVsanNode_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type EvcManagerBody struct { - Req *types.EvcManager `xml:"urn:vim25 EvcManager,omitempty"` - Res *types.EvcManagerResponse `xml:"urn:vim25 EvcManagerResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *EvcManagerBody) Fault() *soap.Fault { return b.Fault_ } - -func EvcManager(ctx context.Context, r soap.RoundTripper, req *types.EvcManager) (*types.EvcManagerResponse, error) { - var reqBody, resBody EvcManagerBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ExecuteHostProfileBody struct { - Req *types.ExecuteHostProfile `xml:"urn:vim25 ExecuteHostProfile,omitempty"` - Res *types.ExecuteHostProfileResponse `xml:"urn:vim25 ExecuteHostProfileResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ExecuteHostProfileBody) Fault() *soap.Fault { return b.Fault_ } - -func ExecuteHostProfile(ctx context.Context, r soap.RoundTripper, req *types.ExecuteHostProfile) (*types.ExecuteHostProfileResponse, error) { - var reqBody, resBody ExecuteHostProfileBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ExecuteSimpleCommandBody struct { - Req *types.ExecuteSimpleCommand `xml:"urn:vim25 ExecuteSimpleCommand,omitempty"` - Res *types.ExecuteSimpleCommandResponse `xml:"urn:vim25 ExecuteSimpleCommandResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ExecuteSimpleCommandBody) Fault() *soap.Fault { return b.Fault_ } - -func ExecuteSimpleCommand(ctx context.Context, r soap.RoundTripper, req *types.ExecuteSimpleCommand) (*types.ExecuteSimpleCommandResponse, error) { - var reqBody, resBody ExecuteSimpleCommandBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ExitLockdownModeBody struct { - Req *types.ExitLockdownMode `xml:"urn:vim25 ExitLockdownMode,omitempty"` - Res *types.ExitLockdownModeResponse `xml:"urn:vim25 ExitLockdownModeResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ExitLockdownModeBody) Fault() *soap.Fault { return b.Fault_ } - -func ExitLockdownMode(ctx context.Context, r soap.RoundTripper, req *types.ExitLockdownMode) (*types.ExitLockdownModeResponse, error) { - var reqBody, resBody ExitLockdownModeBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ExitMaintenanceMode_TaskBody struct { - Req *types.ExitMaintenanceMode_Task `xml:"urn:vim25 ExitMaintenanceMode_Task,omitempty"` - Res *types.ExitMaintenanceMode_TaskResponse `xml:"urn:vim25 ExitMaintenanceMode_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ExitMaintenanceMode_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ExitMaintenanceMode_Task(ctx context.Context, r soap.RoundTripper, req *types.ExitMaintenanceMode_Task) (*types.ExitMaintenanceMode_TaskResponse, error) { - var reqBody, resBody ExitMaintenanceMode_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ExpandVmfsDatastoreBody struct { - Req *types.ExpandVmfsDatastore `xml:"urn:vim25 ExpandVmfsDatastore,omitempty"` - Res *types.ExpandVmfsDatastoreResponse `xml:"urn:vim25 ExpandVmfsDatastoreResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ExpandVmfsDatastoreBody) Fault() *soap.Fault { return b.Fault_ } - -func ExpandVmfsDatastore(ctx context.Context, r soap.RoundTripper, req *types.ExpandVmfsDatastore) (*types.ExpandVmfsDatastoreResponse, error) { - var reqBody, resBody ExpandVmfsDatastoreBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ExpandVmfsExtentBody struct { - Req *types.ExpandVmfsExtent `xml:"urn:vim25 ExpandVmfsExtent,omitempty"` - Res *types.ExpandVmfsExtentResponse `xml:"urn:vim25 ExpandVmfsExtentResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ExpandVmfsExtentBody) Fault() *soap.Fault { return b.Fault_ } - -func ExpandVmfsExtent(ctx context.Context, r soap.RoundTripper, req *types.ExpandVmfsExtent) (*types.ExpandVmfsExtentResponse, error) { - var reqBody, resBody ExpandVmfsExtentBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ExportAnswerFile_TaskBody struct { - Req *types.ExportAnswerFile_Task `xml:"urn:vim25 ExportAnswerFile_Task,omitempty"` - Res *types.ExportAnswerFile_TaskResponse `xml:"urn:vim25 ExportAnswerFile_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ExportAnswerFile_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ExportAnswerFile_Task(ctx context.Context, r soap.RoundTripper, req *types.ExportAnswerFile_Task) (*types.ExportAnswerFile_TaskResponse, error) { - var reqBody, resBody ExportAnswerFile_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ExportProfileBody struct { - Req *types.ExportProfile `xml:"urn:vim25 ExportProfile,omitempty"` - Res *types.ExportProfileResponse `xml:"urn:vim25 ExportProfileResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ExportProfileBody) Fault() *soap.Fault { return b.Fault_ } - -func ExportProfile(ctx context.Context, r soap.RoundTripper, req *types.ExportProfile) (*types.ExportProfileResponse, error) { - var reqBody, resBody ExportProfileBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ExportSnapshotBody struct { - Req *types.ExportSnapshot `xml:"urn:vim25 ExportSnapshot,omitempty"` - Res *types.ExportSnapshotResponse `xml:"urn:vim25 ExportSnapshotResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ExportSnapshotBody) Fault() *soap.Fault { return b.Fault_ } - -func ExportSnapshot(ctx context.Context, r soap.RoundTripper, req *types.ExportSnapshot) (*types.ExportSnapshotResponse, error) { - var reqBody, resBody ExportSnapshotBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ExportVAppBody struct { - Req *types.ExportVApp `xml:"urn:vim25 ExportVApp,omitempty"` - Res *types.ExportVAppResponse `xml:"urn:vim25 ExportVAppResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ExportVAppBody) Fault() *soap.Fault { return b.Fault_ } - -func ExportVApp(ctx context.Context, r soap.RoundTripper, req *types.ExportVApp) (*types.ExportVAppResponse, error) { - var reqBody, resBody ExportVAppBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ExportVmBody struct { - Req *types.ExportVm `xml:"urn:vim25 ExportVm,omitempty"` - Res *types.ExportVmResponse `xml:"urn:vim25 ExportVmResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ExportVmBody) Fault() *soap.Fault { return b.Fault_ } - -func ExportVm(ctx context.Context, r soap.RoundTripper, req *types.ExportVm) (*types.ExportVmResponse, error) { - var reqBody, resBody ExportVmBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ExtendVffsBody struct { - Req *types.ExtendVffs `xml:"urn:vim25 ExtendVffs,omitempty"` - Res *types.ExtendVffsResponse `xml:"urn:vim25 ExtendVffsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ExtendVffsBody) Fault() *soap.Fault { return b.Fault_ } - -func ExtendVffs(ctx context.Context, r soap.RoundTripper, req *types.ExtendVffs) (*types.ExtendVffsResponse, error) { - var reqBody, resBody ExtendVffsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ExtendVirtualDisk_TaskBody struct { - Req *types.ExtendVirtualDisk_Task `xml:"urn:vim25 ExtendVirtualDisk_Task,omitempty"` - Res *types.ExtendVirtualDisk_TaskResponse `xml:"urn:vim25 ExtendVirtualDisk_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ExtendVirtualDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ExtendVirtualDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.ExtendVirtualDisk_Task) (*types.ExtendVirtualDisk_TaskResponse, error) { - var reqBody, resBody ExtendVirtualDisk_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ExtendVmfsDatastoreBody struct { - Req *types.ExtendVmfsDatastore `xml:"urn:vim25 ExtendVmfsDatastore,omitempty"` - Res *types.ExtendVmfsDatastoreResponse `xml:"urn:vim25 ExtendVmfsDatastoreResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ExtendVmfsDatastoreBody) Fault() *soap.Fault { return b.Fault_ } - -func ExtendVmfsDatastore(ctx context.Context, r soap.RoundTripper, req *types.ExtendVmfsDatastore) (*types.ExtendVmfsDatastoreResponse, error) { - var reqBody, resBody ExtendVmfsDatastoreBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ExtractOvfEnvironmentBody struct { - Req *types.ExtractOvfEnvironment `xml:"urn:vim25 ExtractOvfEnvironment,omitempty"` - Res *types.ExtractOvfEnvironmentResponse `xml:"urn:vim25 ExtractOvfEnvironmentResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ExtractOvfEnvironmentBody) Fault() *soap.Fault { return b.Fault_ } - -func ExtractOvfEnvironment(ctx context.Context, r soap.RoundTripper, req *types.ExtractOvfEnvironment) (*types.ExtractOvfEnvironmentResponse, error) { - var reqBody, resBody ExtractOvfEnvironmentBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type FetchDVPortKeysBody struct { - Req *types.FetchDVPortKeys `xml:"urn:vim25 FetchDVPortKeys,omitempty"` - Res *types.FetchDVPortKeysResponse `xml:"urn:vim25 FetchDVPortKeysResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *FetchDVPortKeysBody) Fault() *soap.Fault { return b.Fault_ } - -func FetchDVPortKeys(ctx context.Context, r soap.RoundTripper, req *types.FetchDVPortKeys) (*types.FetchDVPortKeysResponse, error) { - var reqBody, resBody FetchDVPortKeysBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type FetchDVPortsBody struct { - Req *types.FetchDVPorts `xml:"urn:vim25 FetchDVPorts,omitempty"` - Res *types.FetchDVPortsResponse `xml:"urn:vim25 FetchDVPortsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *FetchDVPortsBody) Fault() *soap.Fault { return b.Fault_ } - -func FetchDVPorts(ctx context.Context, r soap.RoundTripper, req *types.FetchDVPorts) (*types.FetchDVPortsResponse, error) { - var reqBody, resBody FetchDVPortsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type FindAllByDnsNameBody struct { - Req *types.FindAllByDnsName `xml:"urn:vim25 FindAllByDnsName,omitempty"` - Res *types.FindAllByDnsNameResponse `xml:"urn:vim25 FindAllByDnsNameResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *FindAllByDnsNameBody) Fault() *soap.Fault { return b.Fault_ } - -func FindAllByDnsName(ctx context.Context, r soap.RoundTripper, req *types.FindAllByDnsName) (*types.FindAllByDnsNameResponse, error) { - var reqBody, resBody FindAllByDnsNameBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type FindAllByIpBody struct { - Req *types.FindAllByIp `xml:"urn:vim25 FindAllByIp,omitempty"` - Res *types.FindAllByIpResponse `xml:"urn:vim25 FindAllByIpResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *FindAllByIpBody) Fault() *soap.Fault { return b.Fault_ } - -func FindAllByIp(ctx context.Context, r soap.RoundTripper, req *types.FindAllByIp) (*types.FindAllByIpResponse, error) { - var reqBody, resBody FindAllByIpBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type FindAllByUuidBody struct { - Req *types.FindAllByUuid `xml:"urn:vim25 FindAllByUuid,omitempty"` - Res *types.FindAllByUuidResponse `xml:"urn:vim25 FindAllByUuidResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *FindAllByUuidBody) Fault() *soap.Fault { return b.Fault_ } - -func FindAllByUuid(ctx context.Context, r soap.RoundTripper, req *types.FindAllByUuid) (*types.FindAllByUuidResponse, error) { - var reqBody, resBody FindAllByUuidBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type FindAssociatedProfileBody struct { - Req *types.FindAssociatedProfile `xml:"urn:vim25 FindAssociatedProfile,omitempty"` - Res *types.FindAssociatedProfileResponse `xml:"urn:vim25 FindAssociatedProfileResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *FindAssociatedProfileBody) Fault() *soap.Fault { return b.Fault_ } - -func FindAssociatedProfile(ctx context.Context, r soap.RoundTripper, req *types.FindAssociatedProfile) (*types.FindAssociatedProfileResponse, error) { - var reqBody, resBody FindAssociatedProfileBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type FindByDatastorePathBody struct { - Req *types.FindByDatastorePath `xml:"urn:vim25 FindByDatastorePath,omitempty"` - Res *types.FindByDatastorePathResponse `xml:"urn:vim25 FindByDatastorePathResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *FindByDatastorePathBody) Fault() *soap.Fault { return b.Fault_ } - -func FindByDatastorePath(ctx context.Context, r soap.RoundTripper, req *types.FindByDatastorePath) (*types.FindByDatastorePathResponse, error) { - var reqBody, resBody FindByDatastorePathBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type FindByDnsNameBody struct { - Req *types.FindByDnsName `xml:"urn:vim25 FindByDnsName,omitempty"` - Res *types.FindByDnsNameResponse `xml:"urn:vim25 FindByDnsNameResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *FindByDnsNameBody) Fault() *soap.Fault { return b.Fault_ } - -func FindByDnsName(ctx context.Context, r soap.RoundTripper, req *types.FindByDnsName) (*types.FindByDnsNameResponse, error) { - var reqBody, resBody FindByDnsNameBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type FindByInventoryPathBody struct { - Req *types.FindByInventoryPath `xml:"urn:vim25 FindByInventoryPath,omitempty"` - Res *types.FindByInventoryPathResponse `xml:"urn:vim25 FindByInventoryPathResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *FindByInventoryPathBody) Fault() *soap.Fault { return b.Fault_ } - -func FindByInventoryPath(ctx context.Context, r soap.RoundTripper, req *types.FindByInventoryPath) (*types.FindByInventoryPathResponse, error) { - var reqBody, resBody FindByInventoryPathBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type FindByIpBody struct { - Req *types.FindByIp `xml:"urn:vim25 FindByIp,omitempty"` - Res *types.FindByIpResponse `xml:"urn:vim25 FindByIpResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *FindByIpBody) Fault() *soap.Fault { return b.Fault_ } - -func FindByIp(ctx context.Context, r soap.RoundTripper, req *types.FindByIp) (*types.FindByIpResponse, error) { - var reqBody, resBody FindByIpBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type FindByUuidBody struct { - Req *types.FindByUuid `xml:"urn:vim25 FindByUuid,omitempty"` - Res *types.FindByUuidResponse `xml:"urn:vim25 FindByUuidResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *FindByUuidBody) Fault() *soap.Fault { return b.Fault_ } - -func FindByUuid(ctx context.Context, r soap.RoundTripper, req *types.FindByUuid) (*types.FindByUuidResponse, error) { - var reqBody, resBody FindByUuidBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type FindChildBody struct { - Req *types.FindChild `xml:"urn:vim25 FindChild,omitempty"` - Res *types.FindChildResponse `xml:"urn:vim25 FindChildResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *FindChildBody) Fault() *soap.Fault { return b.Fault_ } - -func FindChild(ctx context.Context, r soap.RoundTripper, req *types.FindChild) (*types.FindChildResponse, error) { - var reqBody, resBody FindChildBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type FindExtensionBody struct { - Req *types.FindExtension `xml:"urn:vim25 FindExtension,omitempty"` - Res *types.FindExtensionResponse `xml:"urn:vim25 FindExtensionResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *FindExtensionBody) Fault() *soap.Fault { return b.Fault_ } - -func FindExtension(ctx context.Context, r soap.RoundTripper, req *types.FindExtension) (*types.FindExtensionResponse, error) { - var reqBody, resBody FindExtensionBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type FindRulesForVmBody struct { - Req *types.FindRulesForVm `xml:"urn:vim25 FindRulesForVm,omitempty"` - Res *types.FindRulesForVmResponse `xml:"urn:vim25 FindRulesForVmResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *FindRulesForVmBody) Fault() *soap.Fault { return b.Fault_ } - -func FindRulesForVm(ctx context.Context, r soap.RoundTripper, req *types.FindRulesForVm) (*types.FindRulesForVmResponse, error) { - var reqBody, resBody FindRulesForVmBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type FormatVffsBody struct { - Req *types.FormatVffs `xml:"urn:vim25 FormatVffs,omitempty"` - Res *types.FormatVffsResponse `xml:"urn:vim25 FormatVffsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *FormatVffsBody) Fault() *soap.Fault { return b.Fault_ } - -func FormatVffs(ctx context.Context, r soap.RoundTripper, req *types.FormatVffs) (*types.FormatVffsResponse, error) { - var reqBody, resBody FormatVffsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type FormatVmfsBody struct { - Req *types.FormatVmfs `xml:"urn:vim25 FormatVmfs,omitempty"` - Res *types.FormatVmfsResponse `xml:"urn:vim25 FormatVmfsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *FormatVmfsBody) Fault() *soap.Fault { return b.Fault_ } - -func FormatVmfs(ctx context.Context, r soap.RoundTripper, req *types.FormatVmfs) (*types.FormatVmfsResponse, error) { - var reqBody, resBody FormatVmfsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type GenerateCertificateSigningRequestBody struct { - Req *types.GenerateCertificateSigningRequest `xml:"urn:vim25 GenerateCertificateSigningRequest,omitempty"` - Res *types.GenerateCertificateSigningRequestResponse `xml:"urn:vim25 GenerateCertificateSigningRequestResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *GenerateCertificateSigningRequestBody) Fault() *soap.Fault { return b.Fault_ } - -func GenerateCertificateSigningRequest(ctx context.Context, r soap.RoundTripper, req *types.GenerateCertificateSigningRequest) (*types.GenerateCertificateSigningRequestResponse, error) { - var reqBody, resBody GenerateCertificateSigningRequestBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type GenerateCertificateSigningRequestByDnBody struct { - Req *types.GenerateCertificateSigningRequestByDn `xml:"urn:vim25 GenerateCertificateSigningRequestByDn,omitempty"` - Res *types.GenerateCertificateSigningRequestByDnResponse `xml:"urn:vim25 GenerateCertificateSigningRequestByDnResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *GenerateCertificateSigningRequestByDnBody) Fault() *soap.Fault { return b.Fault_ } - -func GenerateCertificateSigningRequestByDn(ctx context.Context, r soap.RoundTripper, req *types.GenerateCertificateSigningRequestByDn) (*types.GenerateCertificateSigningRequestByDnResponse, error) { - var reqBody, resBody GenerateCertificateSigningRequestByDnBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type GenerateConfigTaskListBody struct { - Req *types.GenerateConfigTaskList `xml:"urn:vim25 GenerateConfigTaskList,omitempty"` - Res *types.GenerateConfigTaskListResponse `xml:"urn:vim25 GenerateConfigTaskListResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *GenerateConfigTaskListBody) Fault() *soap.Fault { return b.Fault_ } - -func GenerateConfigTaskList(ctx context.Context, r soap.RoundTripper, req *types.GenerateConfigTaskList) (*types.GenerateConfigTaskListResponse, error) { - var reqBody, resBody GenerateConfigTaskListBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type GenerateHostProfileTaskList_TaskBody struct { - Req *types.GenerateHostProfileTaskList_Task `xml:"urn:vim25 GenerateHostProfileTaskList_Task,omitempty"` - Res *types.GenerateHostProfileTaskList_TaskResponse `xml:"urn:vim25 GenerateHostProfileTaskList_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *GenerateHostProfileTaskList_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func GenerateHostProfileTaskList_Task(ctx context.Context, r soap.RoundTripper, req *types.GenerateHostProfileTaskList_Task) (*types.GenerateHostProfileTaskList_TaskResponse, error) { - var reqBody, resBody GenerateHostProfileTaskList_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type GenerateLogBundles_TaskBody struct { - Req *types.GenerateLogBundles_Task `xml:"urn:vim25 GenerateLogBundles_Task,omitempty"` - Res *types.GenerateLogBundles_TaskResponse `xml:"urn:vim25 GenerateLogBundles_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *GenerateLogBundles_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func GenerateLogBundles_Task(ctx context.Context, r soap.RoundTripper, req *types.GenerateLogBundles_Task) (*types.GenerateLogBundles_TaskResponse, error) { - var reqBody, resBody GenerateLogBundles_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type GetAlarmBody struct { - Req *types.GetAlarm `xml:"urn:vim25 GetAlarm,omitempty"` - Res *types.GetAlarmResponse `xml:"urn:vim25 GetAlarmResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *GetAlarmBody) Fault() *soap.Fault { return b.Fault_ } - -func GetAlarm(ctx context.Context, r soap.RoundTripper, req *types.GetAlarm) (*types.GetAlarmResponse, error) { - var reqBody, resBody GetAlarmBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type GetAlarmStateBody struct { - Req *types.GetAlarmState `xml:"urn:vim25 GetAlarmState,omitempty"` - Res *types.GetAlarmStateResponse `xml:"urn:vim25 GetAlarmStateResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *GetAlarmStateBody) Fault() *soap.Fault { return b.Fault_ } - -func GetAlarmState(ctx context.Context, r soap.RoundTripper, req *types.GetAlarmState) (*types.GetAlarmStateResponse, error) { - var reqBody, resBody GetAlarmStateBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type GetCustomizationSpecBody struct { - Req *types.GetCustomizationSpec `xml:"urn:vim25 GetCustomizationSpec,omitempty"` - Res *types.GetCustomizationSpecResponse `xml:"urn:vim25 GetCustomizationSpecResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *GetCustomizationSpecBody) Fault() *soap.Fault { return b.Fault_ } - -func GetCustomizationSpec(ctx context.Context, r soap.RoundTripper, req *types.GetCustomizationSpec) (*types.GetCustomizationSpecResponse, error) { - var reqBody, resBody GetCustomizationSpecBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type GetPublicKeyBody struct { - Req *types.GetPublicKey `xml:"urn:vim25 GetPublicKey,omitempty"` - Res *types.GetPublicKeyResponse `xml:"urn:vim25 GetPublicKeyResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *GetPublicKeyBody) Fault() *soap.Fault { return b.Fault_ } - -func GetPublicKey(ctx context.Context, r soap.RoundTripper, req *types.GetPublicKey) (*types.GetPublicKeyResponse, error) { - var reqBody, resBody GetPublicKeyBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type GetResourceUsageBody struct { - Req *types.GetResourceUsage `xml:"urn:vim25 GetResourceUsage,omitempty"` - Res *types.GetResourceUsageResponse `xml:"urn:vim25 GetResourceUsageResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *GetResourceUsageBody) Fault() *soap.Fault { return b.Fault_ } - -func GetResourceUsage(ctx context.Context, r soap.RoundTripper, req *types.GetResourceUsage) (*types.GetResourceUsageResponse, error) { - var reqBody, resBody GetResourceUsageBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type GetVsanObjExtAttrsBody struct { - Req *types.GetVsanObjExtAttrs `xml:"urn:vim25 GetVsanObjExtAttrs,omitempty"` - Res *types.GetVsanObjExtAttrsResponse `xml:"urn:vim25 GetVsanObjExtAttrsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *GetVsanObjExtAttrsBody) Fault() *soap.Fault { return b.Fault_ } - -func GetVsanObjExtAttrs(ctx context.Context, r soap.RoundTripper, req *types.GetVsanObjExtAttrs) (*types.GetVsanObjExtAttrsResponse, error) { - var reqBody, resBody GetVsanObjExtAttrsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type HasPrivilegeOnEntitiesBody struct { - Req *types.HasPrivilegeOnEntities `xml:"urn:vim25 HasPrivilegeOnEntities,omitempty"` - Res *types.HasPrivilegeOnEntitiesResponse `xml:"urn:vim25 HasPrivilegeOnEntitiesResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *HasPrivilegeOnEntitiesBody) Fault() *soap.Fault { return b.Fault_ } - -func HasPrivilegeOnEntities(ctx context.Context, r soap.RoundTripper, req *types.HasPrivilegeOnEntities) (*types.HasPrivilegeOnEntitiesResponse, error) { - var reqBody, resBody HasPrivilegeOnEntitiesBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type HasPrivilegeOnEntityBody struct { - Req *types.HasPrivilegeOnEntity `xml:"urn:vim25 HasPrivilegeOnEntity,omitempty"` - Res *types.HasPrivilegeOnEntityResponse `xml:"urn:vim25 HasPrivilegeOnEntityResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *HasPrivilegeOnEntityBody) Fault() *soap.Fault { return b.Fault_ } - -func HasPrivilegeOnEntity(ctx context.Context, r soap.RoundTripper, req *types.HasPrivilegeOnEntity) (*types.HasPrivilegeOnEntityResponse, error) { - var reqBody, resBody HasPrivilegeOnEntityBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type HostConfigVFlashCacheBody struct { - Req *types.HostConfigVFlashCache `xml:"urn:vim25 HostConfigVFlashCache,omitempty"` - Res *types.HostConfigVFlashCacheResponse `xml:"urn:vim25 HostConfigVFlashCacheResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *HostConfigVFlashCacheBody) Fault() *soap.Fault { return b.Fault_ } - -func HostConfigVFlashCache(ctx context.Context, r soap.RoundTripper, req *types.HostConfigVFlashCache) (*types.HostConfigVFlashCacheResponse, error) { - var reqBody, resBody HostConfigVFlashCacheBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type HostConfigureVFlashResourceBody struct { - Req *types.HostConfigureVFlashResource `xml:"urn:vim25 HostConfigureVFlashResource,omitempty"` - Res *types.HostConfigureVFlashResourceResponse `xml:"urn:vim25 HostConfigureVFlashResourceResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *HostConfigureVFlashResourceBody) Fault() *soap.Fault { return b.Fault_ } - -func HostConfigureVFlashResource(ctx context.Context, r soap.RoundTripper, req *types.HostConfigureVFlashResource) (*types.HostConfigureVFlashResourceResponse, error) { - var reqBody, resBody HostConfigureVFlashResourceBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type HostGetVFlashModuleDefaultConfigBody struct { - Req *types.HostGetVFlashModuleDefaultConfig `xml:"urn:vim25 HostGetVFlashModuleDefaultConfig,omitempty"` - Res *types.HostGetVFlashModuleDefaultConfigResponse `xml:"urn:vim25 HostGetVFlashModuleDefaultConfigResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *HostGetVFlashModuleDefaultConfigBody) Fault() *soap.Fault { return b.Fault_ } - -func HostGetVFlashModuleDefaultConfig(ctx context.Context, r soap.RoundTripper, req *types.HostGetVFlashModuleDefaultConfig) (*types.HostGetVFlashModuleDefaultConfigResponse, error) { - var reqBody, resBody HostGetVFlashModuleDefaultConfigBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type HostImageConfigGetAcceptanceBody struct { - Req *types.HostImageConfigGetAcceptance `xml:"urn:vim25 HostImageConfigGetAcceptance,omitempty"` - Res *types.HostImageConfigGetAcceptanceResponse `xml:"urn:vim25 HostImageConfigGetAcceptanceResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *HostImageConfigGetAcceptanceBody) Fault() *soap.Fault { return b.Fault_ } - -func HostImageConfigGetAcceptance(ctx context.Context, r soap.RoundTripper, req *types.HostImageConfigGetAcceptance) (*types.HostImageConfigGetAcceptanceResponse, error) { - var reqBody, resBody HostImageConfigGetAcceptanceBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type HostImageConfigGetProfileBody struct { - Req *types.HostImageConfigGetProfile `xml:"urn:vim25 HostImageConfigGetProfile,omitempty"` - Res *types.HostImageConfigGetProfileResponse `xml:"urn:vim25 HostImageConfigGetProfileResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *HostImageConfigGetProfileBody) Fault() *soap.Fault { return b.Fault_ } - -func HostImageConfigGetProfile(ctx context.Context, r soap.RoundTripper, req *types.HostImageConfigGetProfile) (*types.HostImageConfigGetProfileResponse, error) { - var reqBody, resBody HostImageConfigGetProfileBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type HostRemoveVFlashResourceBody struct { - Req *types.HostRemoveVFlashResource `xml:"urn:vim25 HostRemoveVFlashResource,omitempty"` - Res *types.HostRemoveVFlashResourceResponse `xml:"urn:vim25 HostRemoveVFlashResourceResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *HostRemoveVFlashResourceBody) Fault() *soap.Fault { return b.Fault_ } - -func HostRemoveVFlashResource(ctx context.Context, r soap.RoundTripper, req *types.HostRemoveVFlashResource) (*types.HostRemoveVFlashResourceResponse, error) { - var reqBody, resBody HostRemoveVFlashResourceBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type HttpNfcLeaseAbortBody struct { - Req *types.HttpNfcLeaseAbort `xml:"urn:vim25 HttpNfcLeaseAbort,omitempty"` - Res *types.HttpNfcLeaseAbortResponse `xml:"urn:vim25 HttpNfcLeaseAbortResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *HttpNfcLeaseAbortBody) Fault() *soap.Fault { return b.Fault_ } - -func HttpNfcLeaseAbort(ctx context.Context, r soap.RoundTripper, req *types.HttpNfcLeaseAbort) (*types.HttpNfcLeaseAbortResponse, error) { - var reqBody, resBody HttpNfcLeaseAbortBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type HttpNfcLeaseCompleteBody struct { - Req *types.HttpNfcLeaseComplete `xml:"urn:vim25 HttpNfcLeaseComplete,omitempty"` - Res *types.HttpNfcLeaseCompleteResponse `xml:"urn:vim25 HttpNfcLeaseCompleteResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *HttpNfcLeaseCompleteBody) Fault() *soap.Fault { return b.Fault_ } - -func HttpNfcLeaseComplete(ctx context.Context, r soap.RoundTripper, req *types.HttpNfcLeaseComplete) (*types.HttpNfcLeaseCompleteResponse, error) { - var reqBody, resBody HttpNfcLeaseCompleteBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type HttpNfcLeaseGetManifestBody struct { - Req *types.HttpNfcLeaseGetManifest `xml:"urn:vim25 HttpNfcLeaseGetManifest,omitempty"` - Res *types.HttpNfcLeaseGetManifestResponse `xml:"urn:vim25 HttpNfcLeaseGetManifestResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *HttpNfcLeaseGetManifestBody) Fault() *soap.Fault { return b.Fault_ } - -func HttpNfcLeaseGetManifest(ctx context.Context, r soap.RoundTripper, req *types.HttpNfcLeaseGetManifest) (*types.HttpNfcLeaseGetManifestResponse, error) { - var reqBody, resBody HttpNfcLeaseGetManifestBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type HttpNfcLeaseProgressBody struct { - Req *types.HttpNfcLeaseProgress `xml:"urn:vim25 HttpNfcLeaseProgress,omitempty"` - Res *types.HttpNfcLeaseProgressResponse `xml:"urn:vim25 HttpNfcLeaseProgressResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *HttpNfcLeaseProgressBody) Fault() *soap.Fault { return b.Fault_ } - -func HttpNfcLeaseProgress(ctx context.Context, r soap.RoundTripper, req *types.HttpNfcLeaseProgress) (*types.HttpNfcLeaseProgressResponse, error) { - var reqBody, resBody HttpNfcLeaseProgressBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ImpersonateUserBody struct { - Req *types.ImpersonateUser `xml:"urn:vim25 ImpersonateUser,omitempty"` - Res *types.ImpersonateUserResponse `xml:"urn:vim25 ImpersonateUserResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ImpersonateUserBody) Fault() *soap.Fault { return b.Fault_ } - -func ImpersonateUser(ctx context.Context, r soap.RoundTripper, req *types.ImpersonateUser) (*types.ImpersonateUserResponse, error) { - var reqBody, resBody ImpersonateUserBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ImportCertificateForCAM_TaskBody struct { - Req *types.ImportCertificateForCAM_Task `xml:"urn:vim25 ImportCertificateForCAM_Task,omitempty"` - Res *types.ImportCertificateForCAM_TaskResponse `xml:"urn:vim25 ImportCertificateForCAM_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ImportCertificateForCAM_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ImportCertificateForCAM_Task(ctx context.Context, r soap.RoundTripper, req *types.ImportCertificateForCAM_Task) (*types.ImportCertificateForCAM_TaskResponse, error) { - var reqBody, resBody ImportCertificateForCAM_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ImportUnmanagedSnapshotBody struct { - Req *types.ImportUnmanagedSnapshot `xml:"urn:vim25 ImportUnmanagedSnapshot,omitempty"` - Res *types.ImportUnmanagedSnapshotResponse `xml:"urn:vim25 ImportUnmanagedSnapshotResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ImportUnmanagedSnapshotBody) Fault() *soap.Fault { return b.Fault_ } - -func ImportUnmanagedSnapshot(ctx context.Context, r soap.RoundTripper, req *types.ImportUnmanagedSnapshot) (*types.ImportUnmanagedSnapshotResponse, error) { - var reqBody, resBody ImportUnmanagedSnapshotBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ImportVAppBody struct { - Req *types.ImportVApp `xml:"urn:vim25 ImportVApp,omitempty"` - Res *types.ImportVAppResponse `xml:"urn:vim25 ImportVAppResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ImportVAppBody) Fault() *soap.Fault { return b.Fault_ } - -func ImportVApp(ctx context.Context, r soap.RoundTripper, req *types.ImportVApp) (*types.ImportVAppResponse, error) { - var reqBody, resBody ImportVAppBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type InflateVirtualDisk_TaskBody struct { - Req *types.InflateVirtualDisk_Task `xml:"urn:vim25 InflateVirtualDisk_Task,omitempty"` - Res *types.InflateVirtualDisk_TaskResponse `xml:"urn:vim25 InflateVirtualDisk_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *InflateVirtualDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func InflateVirtualDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.InflateVirtualDisk_Task) (*types.InflateVirtualDisk_TaskResponse, error) { - var reqBody, resBody InflateVirtualDisk_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type InitializeDisks_TaskBody struct { - Req *types.InitializeDisks_Task `xml:"urn:vim25 InitializeDisks_Task,omitempty"` - Res *types.InitializeDisks_TaskResponse `xml:"urn:vim25 InitializeDisks_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *InitializeDisks_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func InitializeDisks_Task(ctx context.Context, r soap.RoundTripper, req *types.InitializeDisks_Task) (*types.InitializeDisks_TaskResponse, error) { - var reqBody, resBody InitializeDisks_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type InitiateFileTransferFromGuestBody struct { - Req *types.InitiateFileTransferFromGuest `xml:"urn:vim25 InitiateFileTransferFromGuest,omitempty"` - Res *types.InitiateFileTransferFromGuestResponse `xml:"urn:vim25 InitiateFileTransferFromGuestResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *InitiateFileTransferFromGuestBody) Fault() *soap.Fault { return b.Fault_ } - -func InitiateFileTransferFromGuest(ctx context.Context, r soap.RoundTripper, req *types.InitiateFileTransferFromGuest) (*types.InitiateFileTransferFromGuestResponse, error) { - var reqBody, resBody InitiateFileTransferFromGuestBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type InitiateFileTransferToGuestBody struct { - Req *types.InitiateFileTransferToGuest `xml:"urn:vim25 InitiateFileTransferToGuest,omitempty"` - Res *types.InitiateFileTransferToGuestResponse `xml:"urn:vim25 InitiateFileTransferToGuestResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *InitiateFileTransferToGuestBody) Fault() *soap.Fault { return b.Fault_ } - -func InitiateFileTransferToGuest(ctx context.Context, r soap.RoundTripper, req *types.InitiateFileTransferToGuest) (*types.InitiateFileTransferToGuestResponse, error) { - var reqBody, resBody InitiateFileTransferToGuestBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type InstallHostPatchV2_TaskBody struct { - Req *types.InstallHostPatchV2_Task `xml:"urn:vim25 InstallHostPatchV2_Task,omitempty"` - Res *types.InstallHostPatchV2_TaskResponse `xml:"urn:vim25 InstallHostPatchV2_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *InstallHostPatchV2_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func InstallHostPatchV2_Task(ctx context.Context, r soap.RoundTripper, req *types.InstallHostPatchV2_Task) (*types.InstallHostPatchV2_TaskResponse, error) { - var reqBody, resBody InstallHostPatchV2_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type InstallHostPatch_TaskBody struct { - Req *types.InstallHostPatch_Task `xml:"urn:vim25 InstallHostPatch_Task,omitempty"` - Res *types.InstallHostPatch_TaskResponse `xml:"urn:vim25 InstallHostPatch_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *InstallHostPatch_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func InstallHostPatch_Task(ctx context.Context, r soap.RoundTripper, req *types.InstallHostPatch_Task) (*types.InstallHostPatch_TaskResponse, error) { - var reqBody, resBody InstallHostPatch_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type InstallIoFilter_TaskBody struct { - Req *types.InstallIoFilter_Task `xml:"urn:vim25 InstallIoFilter_Task,omitempty"` - Res *types.InstallIoFilter_TaskResponse `xml:"urn:vim25 InstallIoFilter_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *InstallIoFilter_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func InstallIoFilter_Task(ctx context.Context, r soap.RoundTripper, req *types.InstallIoFilter_Task) (*types.InstallIoFilter_TaskResponse, error) { - var reqBody, resBody InstallIoFilter_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type InstallServerCertificateBody struct { - Req *types.InstallServerCertificate `xml:"urn:vim25 InstallServerCertificate,omitempty"` - Res *types.InstallServerCertificateResponse `xml:"urn:vim25 InstallServerCertificateResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *InstallServerCertificateBody) Fault() *soap.Fault { return b.Fault_ } - -func InstallServerCertificate(ctx context.Context, r soap.RoundTripper, req *types.InstallServerCertificate) (*types.InstallServerCertificateResponse, error) { - var reqBody, resBody InstallServerCertificateBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type InstallSmartCardTrustAnchorBody struct { - Req *types.InstallSmartCardTrustAnchor `xml:"urn:vim25 InstallSmartCardTrustAnchor,omitempty"` - Res *types.InstallSmartCardTrustAnchorResponse `xml:"urn:vim25 InstallSmartCardTrustAnchorResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *InstallSmartCardTrustAnchorBody) Fault() *soap.Fault { return b.Fault_ } - -func InstallSmartCardTrustAnchor(ctx context.Context, r soap.RoundTripper, req *types.InstallSmartCardTrustAnchor) (*types.InstallSmartCardTrustAnchorResponse, error) { - var reqBody, resBody InstallSmartCardTrustAnchorBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type IsSharedGraphicsActiveBody struct { - Req *types.IsSharedGraphicsActive `xml:"urn:vim25 IsSharedGraphicsActive,omitempty"` - Res *types.IsSharedGraphicsActiveResponse `xml:"urn:vim25 IsSharedGraphicsActiveResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *IsSharedGraphicsActiveBody) Fault() *soap.Fault { return b.Fault_ } - -func IsSharedGraphicsActive(ctx context.Context, r soap.RoundTripper, req *types.IsSharedGraphicsActive) (*types.IsSharedGraphicsActiveResponse, error) { - var reqBody, resBody IsSharedGraphicsActiveBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type JoinDomainWithCAM_TaskBody struct { - Req *types.JoinDomainWithCAM_Task `xml:"urn:vim25 JoinDomainWithCAM_Task,omitempty"` - Res *types.JoinDomainWithCAM_TaskResponse `xml:"urn:vim25 JoinDomainWithCAM_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *JoinDomainWithCAM_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func JoinDomainWithCAM_Task(ctx context.Context, r soap.RoundTripper, req *types.JoinDomainWithCAM_Task) (*types.JoinDomainWithCAM_TaskResponse, error) { - var reqBody, resBody JoinDomainWithCAM_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type JoinDomain_TaskBody struct { - Req *types.JoinDomain_Task `xml:"urn:vim25 JoinDomain_Task,omitempty"` - Res *types.JoinDomain_TaskResponse `xml:"urn:vim25 JoinDomain_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *JoinDomain_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func JoinDomain_Task(ctx context.Context, r soap.RoundTripper, req *types.JoinDomain_Task) (*types.JoinDomain_TaskResponse, error) { - var reqBody, resBody JoinDomain_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type LeaveCurrentDomain_TaskBody struct { - Req *types.LeaveCurrentDomain_Task `xml:"urn:vim25 LeaveCurrentDomain_Task,omitempty"` - Res *types.LeaveCurrentDomain_TaskResponse `xml:"urn:vim25 LeaveCurrentDomain_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *LeaveCurrentDomain_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func LeaveCurrentDomain_Task(ctx context.Context, r soap.RoundTripper, req *types.LeaveCurrentDomain_Task) (*types.LeaveCurrentDomain_TaskResponse, error) { - var reqBody, resBody LeaveCurrentDomain_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ListCACertificateRevocationListsBody struct { - Req *types.ListCACertificateRevocationLists `xml:"urn:vim25 ListCACertificateRevocationLists,omitempty"` - Res *types.ListCACertificateRevocationListsResponse `xml:"urn:vim25 ListCACertificateRevocationListsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ListCACertificateRevocationListsBody) Fault() *soap.Fault { return b.Fault_ } - -func ListCACertificateRevocationLists(ctx context.Context, r soap.RoundTripper, req *types.ListCACertificateRevocationLists) (*types.ListCACertificateRevocationListsResponse, error) { - var reqBody, resBody ListCACertificateRevocationListsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ListCACertificatesBody struct { - Req *types.ListCACertificates `xml:"urn:vim25 ListCACertificates,omitempty"` - Res *types.ListCACertificatesResponse `xml:"urn:vim25 ListCACertificatesResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ListCACertificatesBody) Fault() *soap.Fault { return b.Fault_ } - -func ListCACertificates(ctx context.Context, r soap.RoundTripper, req *types.ListCACertificates) (*types.ListCACertificatesResponse, error) { - var reqBody, resBody ListCACertificatesBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ListFilesInGuestBody struct { - Req *types.ListFilesInGuest `xml:"urn:vim25 ListFilesInGuest,omitempty"` - Res *types.ListFilesInGuestResponse `xml:"urn:vim25 ListFilesInGuestResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ListFilesInGuestBody) Fault() *soap.Fault { return b.Fault_ } - -func ListFilesInGuest(ctx context.Context, r soap.RoundTripper, req *types.ListFilesInGuest) (*types.ListFilesInGuestResponse, error) { - var reqBody, resBody ListFilesInGuestBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ListGuestAliasesBody struct { - Req *types.ListGuestAliases `xml:"urn:vim25 ListGuestAliases,omitempty"` - Res *types.ListGuestAliasesResponse `xml:"urn:vim25 ListGuestAliasesResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ListGuestAliasesBody) Fault() *soap.Fault { return b.Fault_ } - -func ListGuestAliases(ctx context.Context, r soap.RoundTripper, req *types.ListGuestAliases) (*types.ListGuestAliasesResponse, error) { - var reqBody, resBody ListGuestAliasesBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ListGuestMappedAliasesBody struct { - Req *types.ListGuestMappedAliases `xml:"urn:vim25 ListGuestMappedAliases,omitempty"` - Res *types.ListGuestMappedAliasesResponse `xml:"urn:vim25 ListGuestMappedAliasesResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ListGuestMappedAliasesBody) Fault() *soap.Fault { return b.Fault_ } - -func ListGuestMappedAliases(ctx context.Context, r soap.RoundTripper, req *types.ListGuestMappedAliases) (*types.ListGuestMappedAliasesResponse, error) { - var reqBody, resBody ListGuestMappedAliasesBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ListProcessesInGuestBody struct { - Req *types.ListProcessesInGuest `xml:"urn:vim25 ListProcessesInGuest,omitempty"` - Res *types.ListProcessesInGuestResponse `xml:"urn:vim25 ListProcessesInGuestResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ListProcessesInGuestBody) Fault() *soap.Fault { return b.Fault_ } - -func ListProcessesInGuest(ctx context.Context, r soap.RoundTripper, req *types.ListProcessesInGuest) (*types.ListProcessesInGuestResponse, error) { - var reqBody, resBody ListProcessesInGuestBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ListRegistryKeysInGuestBody struct { - Req *types.ListRegistryKeysInGuest `xml:"urn:vim25 ListRegistryKeysInGuest,omitempty"` - Res *types.ListRegistryKeysInGuestResponse `xml:"urn:vim25 ListRegistryKeysInGuestResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ListRegistryKeysInGuestBody) Fault() *soap.Fault { return b.Fault_ } - -func ListRegistryKeysInGuest(ctx context.Context, r soap.RoundTripper, req *types.ListRegistryKeysInGuest) (*types.ListRegistryKeysInGuestResponse, error) { - var reqBody, resBody ListRegistryKeysInGuestBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ListRegistryValuesInGuestBody struct { - Req *types.ListRegistryValuesInGuest `xml:"urn:vim25 ListRegistryValuesInGuest,omitempty"` - Res *types.ListRegistryValuesInGuestResponse `xml:"urn:vim25 ListRegistryValuesInGuestResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ListRegistryValuesInGuestBody) Fault() *soap.Fault { return b.Fault_ } - -func ListRegistryValuesInGuest(ctx context.Context, r soap.RoundTripper, req *types.ListRegistryValuesInGuest) (*types.ListRegistryValuesInGuestResponse, error) { - var reqBody, resBody ListRegistryValuesInGuestBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ListSmartCardTrustAnchorsBody struct { - Req *types.ListSmartCardTrustAnchors `xml:"urn:vim25 ListSmartCardTrustAnchors,omitempty"` - Res *types.ListSmartCardTrustAnchorsResponse `xml:"urn:vim25 ListSmartCardTrustAnchorsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ListSmartCardTrustAnchorsBody) Fault() *soap.Fault { return b.Fault_ } - -func ListSmartCardTrustAnchors(ctx context.Context, r soap.RoundTripper, req *types.ListSmartCardTrustAnchors) (*types.ListSmartCardTrustAnchorsResponse, error) { - var reqBody, resBody ListSmartCardTrustAnchorsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type LogUserEventBody struct { - Req *types.LogUserEvent `xml:"urn:vim25 LogUserEvent,omitempty"` - Res *types.LogUserEventResponse `xml:"urn:vim25 LogUserEventResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *LogUserEventBody) Fault() *soap.Fault { return b.Fault_ } - -func LogUserEvent(ctx context.Context, r soap.RoundTripper, req *types.LogUserEvent) (*types.LogUserEventResponse, error) { - var reqBody, resBody LogUserEventBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type LoginBody struct { - Req *types.Login `xml:"urn:vim25 Login,omitempty"` - Res *types.LoginResponse `xml:"urn:vim25 LoginResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *LoginBody) Fault() *soap.Fault { return b.Fault_ } - -func Login(ctx context.Context, r soap.RoundTripper, req *types.Login) (*types.LoginResponse, error) { - var reqBody, resBody LoginBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type LoginBySSPIBody struct { - Req *types.LoginBySSPI `xml:"urn:vim25 LoginBySSPI,omitempty"` - Res *types.LoginBySSPIResponse `xml:"urn:vim25 LoginBySSPIResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *LoginBySSPIBody) Fault() *soap.Fault { return b.Fault_ } - -func LoginBySSPI(ctx context.Context, r soap.RoundTripper, req *types.LoginBySSPI) (*types.LoginBySSPIResponse, error) { - var reqBody, resBody LoginBySSPIBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type LoginByTokenBody struct { - Req *types.LoginByToken `xml:"urn:vim25 LoginByToken,omitempty"` - Res *types.LoginByTokenResponse `xml:"urn:vim25 LoginByTokenResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *LoginByTokenBody) Fault() *soap.Fault { return b.Fault_ } - -func LoginByToken(ctx context.Context, r soap.RoundTripper, req *types.LoginByToken) (*types.LoginByTokenResponse, error) { - var reqBody, resBody LoginByTokenBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type LoginExtensionByCertificateBody struct { - Req *types.LoginExtensionByCertificate `xml:"urn:vim25 LoginExtensionByCertificate,omitempty"` - Res *types.LoginExtensionByCertificateResponse `xml:"urn:vim25 LoginExtensionByCertificateResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *LoginExtensionByCertificateBody) Fault() *soap.Fault { return b.Fault_ } - -func LoginExtensionByCertificate(ctx context.Context, r soap.RoundTripper, req *types.LoginExtensionByCertificate) (*types.LoginExtensionByCertificateResponse, error) { - var reqBody, resBody LoginExtensionByCertificateBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type LoginExtensionBySubjectNameBody struct { - Req *types.LoginExtensionBySubjectName `xml:"urn:vim25 LoginExtensionBySubjectName,omitempty"` - Res *types.LoginExtensionBySubjectNameResponse `xml:"urn:vim25 LoginExtensionBySubjectNameResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *LoginExtensionBySubjectNameBody) Fault() *soap.Fault { return b.Fault_ } - -func LoginExtensionBySubjectName(ctx context.Context, r soap.RoundTripper, req *types.LoginExtensionBySubjectName) (*types.LoginExtensionBySubjectNameResponse, error) { - var reqBody, resBody LoginExtensionBySubjectNameBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type LogoutBody struct { - Req *types.Logout `xml:"urn:vim25 Logout,omitempty"` - Res *types.LogoutResponse `xml:"urn:vim25 LogoutResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *LogoutBody) Fault() *soap.Fault { return b.Fault_ } - -func Logout(ctx context.Context, r soap.RoundTripper, req *types.Logout) (*types.LogoutResponse, error) { - var reqBody, resBody LogoutBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type LookupDvPortGroupBody struct { - Req *types.LookupDvPortGroup `xml:"urn:vim25 LookupDvPortGroup,omitempty"` - Res *types.LookupDvPortGroupResponse `xml:"urn:vim25 LookupDvPortGroupResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *LookupDvPortGroupBody) Fault() *soap.Fault { return b.Fault_ } - -func LookupDvPortGroup(ctx context.Context, r soap.RoundTripper, req *types.LookupDvPortGroup) (*types.LookupDvPortGroupResponse, error) { - var reqBody, resBody LookupDvPortGroupBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type LookupVmOverheadMemoryBody struct { - Req *types.LookupVmOverheadMemory `xml:"urn:vim25 LookupVmOverheadMemory,omitempty"` - Res *types.LookupVmOverheadMemoryResponse `xml:"urn:vim25 LookupVmOverheadMemoryResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *LookupVmOverheadMemoryBody) Fault() *soap.Fault { return b.Fault_ } - -func LookupVmOverheadMemory(ctx context.Context, r soap.RoundTripper, req *types.LookupVmOverheadMemory) (*types.LookupVmOverheadMemoryResponse, error) { - var reqBody, resBody LookupVmOverheadMemoryBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type MakeDirectoryBody struct { - Req *types.MakeDirectory `xml:"urn:vim25 MakeDirectory,omitempty"` - Res *types.MakeDirectoryResponse `xml:"urn:vim25 MakeDirectoryResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *MakeDirectoryBody) Fault() *soap.Fault { return b.Fault_ } - -func MakeDirectory(ctx context.Context, r soap.RoundTripper, req *types.MakeDirectory) (*types.MakeDirectoryResponse, error) { - var reqBody, resBody MakeDirectoryBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type MakeDirectoryInGuestBody struct { - Req *types.MakeDirectoryInGuest `xml:"urn:vim25 MakeDirectoryInGuest,omitempty"` - Res *types.MakeDirectoryInGuestResponse `xml:"urn:vim25 MakeDirectoryInGuestResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *MakeDirectoryInGuestBody) Fault() *soap.Fault { return b.Fault_ } - -func MakeDirectoryInGuest(ctx context.Context, r soap.RoundTripper, req *types.MakeDirectoryInGuest) (*types.MakeDirectoryInGuestResponse, error) { - var reqBody, resBody MakeDirectoryInGuestBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type MakePrimaryVM_TaskBody struct { - Req *types.MakePrimaryVM_Task `xml:"urn:vim25 MakePrimaryVM_Task,omitempty"` - Res *types.MakePrimaryVM_TaskResponse `xml:"urn:vim25 MakePrimaryVM_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *MakePrimaryVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func MakePrimaryVM_Task(ctx context.Context, r soap.RoundTripper, req *types.MakePrimaryVM_Task) (*types.MakePrimaryVM_TaskResponse, error) { - var reqBody, resBody MakePrimaryVM_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type MarkAsLocal_TaskBody struct { - Req *types.MarkAsLocal_Task `xml:"urn:vim25 MarkAsLocal_Task,omitempty"` - Res *types.MarkAsLocal_TaskResponse `xml:"urn:vim25 MarkAsLocal_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *MarkAsLocal_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func MarkAsLocal_Task(ctx context.Context, r soap.RoundTripper, req *types.MarkAsLocal_Task) (*types.MarkAsLocal_TaskResponse, error) { - var reqBody, resBody MarkAsLocal_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type MarkAsNonLocal_TaskBody struct { - Req *types.MarkAsNonLocal_Task `xml:"urn:vim25 MarkAsNonLocal_Task,omitempty"` - Res *types.MarkAsNonLocal_TaskResponse `xml:"urn:vim25 MarkAsNonLocal_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *MarkAsNonLocal_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func MarkAsNonLocal_Task(ctx context.Context, r soap.RoundTripper, req *types.MarkAsNonLocal_Task) (*types.MarkAsNonLocal_TaskResponse, error) { - var reqBody, resBody MarkAsNonLocal_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type MarkAsNonSsd_TaskBody struct { - Req *types.MarkAsNonSsd_Task `xml:"urn:vim25 MarkAsNonSsd_Task,omitempty"` - Res *types.MarkAsNonSsd_TaskResponse `xml:"urn:vim25 MarkAsNonSsd_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *MarkAsNonSsd_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func MarkAsNonSsd_Task(ctx context.Context, r soap.RoundTripper, req *types.MarkAsNonSsd_Task) (*types.MarkAsNonSsd_TaskResponse, error) { - var reqBody, resBody MarkAsNonSsd_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type MarkAsSsd_TaskBody struct { - Req *types.MarkAsSsd_Task `xml:"urn:vim25 MarkAsSsd_Task,omitempty"` - Res *types.MarkAsSsd_TaskResponse `xml:"urn:vim25 MarkAsSsd_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *MarkAsSsd_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func MarkAsSsd_Task(ctx context.Context, r soap.RoundTripper, req *types.MarkAsSsd_Task) (*types.MarkAsSsd_TaskResponse, error) { - var reqBody, resBody MarkAsSsd_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type MarkAsTemplateBody struct { - Req *types.MarkAsTemplate `xml:"urn:vim25 MarkAsTemplate,omitempty"` - Res *types.MarkAsTemplateResponse `xml:"urn:vim25 MarkAsTemplateResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *MarkAsTemplateBody) Fault() *soap.Fault { return b.Fault_ } - -func MarkAsTemplate(ctx context.Context, r soap.RoundTripper, req *types.MarkAsTemplate) (*types.MarkAsTemplateResponse, error) { - var reqBody, resBody MarkAsTemplateBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type MarkAsVirtualMachineBody struct { - Req *types.MarkAsVirtualMachine `xml:"urn:vim25 MarkAsVirtualMachine,omitempty"` - Res *types.MarkAsVirtualMachineResponse `xml:"urn:vim25 MarkAsVirtualMachineResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *MarkAsVirtualMachineBody) Fault() *soap.Fault { return b.Fault_ } - -func MarkAsVirtualMachine(ctx context.Context, r soap.RoundTripper, req *types.MarkAsVirtualMachine) (*types.MarkAsVirtualMachineResponse, error) { - var reqBody, resBody MarkAsVirtualMachineBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type MarkForRemovalBody struct { - Req *types.MarkForRemoval `xml:"urn:vim25 MarkForRemoval,omitempty"` - Res *types.MarkForRemovalResponse `xml:"urn:vim25 MarkForRemovalResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *MarkForRemovalBody) Fault() *soap.Fault { return b.Fault_ } - -func MarkForRemoval(ctx context.Context, r soap.RoundTripper, req *types.MarkForRemoval) (*types.MarkForRemovalResponse, error) { - var reqBody, resBody MarkForRemovalBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type MergeDvs_TaskBody struct { - Req *types.MergeDvs_Task `xml:"urn:vim25 MergeDvs_Task,omitempty"` - Res *types.MergeDvs_TaskResponse `xml:"urn:vim25 MergeDvs_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *MergeDvs_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func MergeDvs_Task(ctx context.Context, r soap.RoundTripper, req *types.MergeDvs_Task) (*types.MergeDvs_TaskResponse, error) { - var reqBody, resBody MergeDvs_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type MergePermissionsBody struct { - Req *types.MergePermissions `xml:"urn:vim25 MergePermissions,omitempty"` - Res *types.MergePermissionsResponse `xml:"urn:vim25 MergePermissionsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *MergePermissionsBody) Fault() *soap.Fault { return b.Fault_ } - -func MergePermissions(ctx context.Context, r soap.RoundTripper, req *types.MergePermissions) (*types.MergePermissionsResponse, error) { - var reqBody, resBody MergePermissionsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type MigrateVM_TaskBody struct { - Req *types.MigrateVM_Task `xml:"urn:vim25 MigrateVM_Task,omitempty"` - Res *types.MigrateVM_TaskResponse `xml:"urn:vim25 MigrateVM_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *MigrateVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func MigrateVM_Task(ctx context.Context, r soap.RoundTripper, req *types.MigrateVM_Task) (*types.MigrateVM_TaskResponse, error) { - var reqBody, resBody MigrateVM_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ModifyListViewBody struct { - Req *types.ModifyListView `xml:"urn:vim25 ModifyListView,omitempty"` - Res *types.ModifyListViewResponse `xml:"urn:vim25 ModifyListViewResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ModifyListViewBody) Fault() *soap.Fault { return b.Fault_ } - -func ModifyListView(ctx context.Context, r soap.RoundTripper, req *types.ModifyListView) (*types.ModifyListViewResponse, error) { - var reqBody, resBody ModifyListViewBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type MountToolsInstallerBody struct { - Req *types.MountToolsInstaller `xml:"urn:vim25 MountToolsInstaller,omitempty"` - Res *types.MountToolsInstallerResponse `xml:"urn:vim25 MountToolsInstallerResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *MountToolsInstallerBody) Fault() *soap.Fault { return b.Fault_ } - -func MountToolsInstaller(ctx context.Context, r soap.RoundTripper, req *types.MountToolsInstaller) (*types.MountToolsInstallerResponse, error) { - var reqBody, resBody MountToolsInstallerBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type MountVffsVolumeBody struct { - Req *types.MountVffsVolume `xml:"urn:vim25 MountVffsVolume,omitempty"` - Res *types.MountVffsVolumeResponse `xml:"urn:vim25 MountVffsVolumeResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *MountVffsVolumeBody) Fault() *soap.Fault { return b.Fault_ } - -func MountVffsVolume(ctx context.Context, r soap.RoundTripper, req *types.MountVffsVolume) (*types.MountVffsVolumeResponse, error) { - var reqBody, resBody MountVffsVolumeBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type MountVmfsVolumeBody struct { - Req *types.MountVmfsVolume `xml:"urn:vim25 MountVmfsVolume,omitempty"` - Res *types.MountVmfsVolumeResponse `xml:"urn:vim25 MountVmfsVolumeResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *MountVmfsVolumeBody) Fault() *soap.Fault { return b.Fault_ } - -func MountVmfsVolume(ctx context.Context, r soap.RoundTripper, req *types.MountVmfsVolume) (*types.MountVmfsVolumeResponse, error) { - var reqBody, resBody MountVmfsVolumeBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type MountVmfsVolumeEx_TaskBody struct { - Req *types.MountVmfsVolumeEx_Task `xml:"urn:vim25 MountVmfsVolumeEx_Task,omitempty"` - Res *types.MountVmfsVolumeEx_TaskResponse `xml:"urn:vim25 MountVmfsVolumeEx_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *MountVmfsVolumeEx_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func MountVmfsVolumeEx_Task(ctx context.Context, r soap.RoundTripper, req *types.MountVmfsVolumeEx_Task) (*types.MountVmfsVolumeEx_TaskResponse, error) { - var reqBody, resBody MountVmfsVolumeEx_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type MoveDVPort_TaskBody struct { - Req *types.MoveDVPort_Task `xml:"urn:vim25 MoveDVPort_Task,omitempty"` - Res *types.MoveDVPort_TaskResponse `xml:"urn:vim25 MoveDVPort_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *MoveDVPort_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func MoveDVPort_Task(ctx context.Context, r soap.RoundTripper, req *types.MoveDVPort_Task) (*types.MoveDVPort_TaskResponse, error) { - var reqBody, resBody MoveDVPort_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type MoveDatastoreFile_TaskBody struct { - Req *types.MoveDatastoreFile_Task `xml:"urn:vim25 MoveDatastoreFile_Task,omitempty"` - Res *types.MoveDatastoreFile_TaskResponse `xml:"urn:vim25 MoveDatastoreFile_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *MoveDatastoreFile_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func MoveDatastoreFile_Task(ctx context.Context, r soap.RoundTripper, req *types.MoveDatastoreFile_Task) (*types.MoveDatastoreFile_TaskResponse, error) { - var reqBody, resBody MoveDatastoreFile_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type MoveDirectoryInGuestBody struct { - Req *types.MoveDirectoryInGuest `xml:"urn:vim25 MoveDirectoryInGuest,omitempty"` - Res *types.MoveDirectoryInGuestResponse `xml:"urn:vim25 MoveDirectoryInGuestResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *MoveDirectoryInGuestBody) Fault() *soap.Fault { return b.Fault_ } - -func MoveDirectoryInGuest(ctx context.Context, r soap.RoundTripper, req *types.MoveDirectoryInGuest) (*types.MoveDirectoryInGuestResponse, error) { - var reqBody, resBody MoveDirectoryInGuestBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type MoveFileInGuestBody struct { - Req *types.MoveFileInGuest `xml:"urn:vim25 MoveFileInGuest,omitempty"` - Res *types.MoveFileInGuestResponse `xml:"urn:vim25 MoveFileInGuestResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *MoveFileInGuestBody) Fault() *soap.Fault { return b.Fault_ } - -func MoveFileInGuest(ctx context.Context, r soap.RoundTripper, req *types.MoveFileInGuest) (*types.MoveFileInGuestResponse, error) { - var reqBody, resBody MoveFileInGuestBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type MoveHostInto_TaskBody struct { - Req *types.MoveHostInto_Task `xml:"urn:vim25 MoveHostInto_Task,omitempty"` - Res *types.MoveHostInto_TaskResponse `xml:"urn:vim25 MoveHostInto_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *MoveHostInto_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func MoveHostInto_Task(ctx context.Context, r soap.RoundTripper, req *types.MoveHostInto_Task) (*types.MoveHostInto_TaskResponse, error) { - var reqBody, resBody MoveHostInto_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type MoveIntoFolder_TaskBody struct { - Req *types.MoveIntoFolder_Task `xml:"urn:vim25 MoveIntoFolder_Task,omitempty"` - Res *types.MoveIntoFolder_TaskResponse `xml:"urn:vim25 MoveIntoFolder_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *MoveIntoFolder_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func MoveIntoFolder_Task(ctx context.Context, r soap.RoundTripper, req *types.MoveIntoFolder_Task) (*types.MoveIntoFolder_TaskResponse, error) { - var reqBody, resBody MoveIntoFolder_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type MoveIntoResourcePoolBody struct { - Req *types.MoveIntoResourcePool `xml:"urn:vim25 MoveIntoResourcePool,omitempty"` - Res *types.MoveIntoResourcePoolResponse `xml:"urn:vim25 MoveIntoResourcePoolResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *MoveIntoResourcePoolBody) Fault() *soap.Fault { return b.Fault_ } - -func MoveIntoResourcePool(ctx context.Context, r soap.RoundTripper, req *types.MoveIntoResourcePool) (*types.MoveIntoResourcePoolResponse, error) { - var reqBody, resBody MoveIntoResourcePoolBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type MoveInto_TaskBody struct { - Req *types.MoveInto_Task `xml:"urn:vim25 MoveInto_Task,omitempty"` - Res *types.MoveInto_TaskResponse `xml:"urn:vim25 MoveInto_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *MoveInto_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func MoveInto_Task(ctx context.Context, r soap.RoundTripper, req *types.MoveInto_Task) (*types.MoveInto_TaskResponse, error) { - var reqBody, resBody MoveInto_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type MoveVirtualDisk_TaskBody struct { - Req *types.MoveVirtualDisk_Task `xml:"urn:vim25 MoveVirtualDisk_Task,omitempty"` - Res *types.MoveVirtualDisk_TaskResponse `xml:"urn:vim25 MoveVirtualDisk_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *MoveVirtualDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func MoveVirtualDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.MoveVirtualDisk_Task) (*types.MoveVirtualDisk_TaskResponse, error) { - var reqBody, resBody MoveVirtualDisk_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type OpenInventoryViewFolderBody struct { - Req *types.OpenInventoryViewFolder `xml:"urn:vim25 OpenInventoryViewFolder,omitempty"` - Res *types.OpenInventoryViewFolderResponse `xml:"urn:vim25 OpenInventoryViewFolderResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *OpenInventoryViewFolderBody) Fault() *soap.Fault { return b.Fault_ } - -func OpenInventoryViewFolder(ctx context.Context, r soap.RoundTripper, req *types.OpenInventoryViewFolder) (*types.OpenInventoryViewFolderResponse, error) { - var reqBody, resBody OpenInventoryViewFolderBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type OverwriteCustomizationSpecBody struct { - Req *types.OverwriteCustomizationSpec `xml:"urn:vim25 OverwriteCustomizationSpec,omitempty"` - Res *types.OverwriteCustomizationSpecResponse `xml:"urn:vim25 OverwriteCustomizationSpecResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *OverwriteCustomizationSpecBody) Fault() *soap.Fault { return b.Fault_ } - -func OverwriteCustomizationSpec(ctx context.Context, r soap.RoundTripper, req *types.OverwriteCustomizationSpec) (*types.OverwriteCustomizationSpecResponse, error) { - var reqBody, resBody OverwriteCustomizationSpecBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ParseDescriptorBody struct { - Req *types.ParseDescriptor `xml:"urn:vim25 ParseDescriptor,omitempty"` - Res *types.ParseDescriptorResponse `xml:"urn:vim25 ParseDescriptorResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ParseDescriptorBody) Fault() *soap.Fault { return b.Fault_ } - -func ParseDescriptor(ctx context.Context, r soap.RoundTripper, req *types.ParseDescriptor) (*types.ParseDescriptorResponse, error) { - var reqBody, resBody ParseDescriptorBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type PerformDvsProductSpecOperation_TaskBody struct { - Req *types.PerformDvsProductSpecOperation_Task `xml:"urn:vim25 PerformDvsProductSpecOperation_Task,omitempty"` - Res *types.PerformDvsProductSpecOperation_TaskResponse `xml:"urn:vim25 PerformDvsProductSpecOperation_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *PerformDvsProductSpecOperation_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func PerformDvsProductSpecOperation_Task(ctx context.Context, r soap.RoundTripper, req *types.PerformDvsProductSpecOperation_Task) (*types.PerformDvsProductSpecOperation_TaskResponse, error) { - var reqBody, resBody PerformDvsProductSpecOperation_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type PerformVsanUpgradePreflightCheckBody struct { - Req *types.PerformVsanUpgradePreflightCheck `xml:"urn:vim25 PerformVsanUpgradePreflightCheck,omitempty"` - Res *types.PerformVsanUpgradePreflightCheckResponse `xml:"urn:vim25 PerformVsanUpgradePreflightCheckResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *PerformVsanUpgradePreflightCheckBody) Fault() *soap.Fault { return b.Fault_ } - -func PerformVsanUpgradePreflightCheck(ctx context.Context, r soap.RoundTripper, req *types.PerformVsanUpgradePreflightCheck) (*types.PerformVsanUpgradePreflightCheckResponse, error) { - var reqBody, resBody PerformVsanUpgradePreflightCheckBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type PerformVsanUpgrade_TaskBody struct { - Req *types.PerformVsanUpgrade_Task `xml:"urn:vim25 PerformVsanUpgrade_Task,omitempty"` - Res *types.PerformVsanUpgrade_TaskResponse `xml:"urn:vim25 PerformVsanUpgrade_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *PerformVsanUpgrade_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func PerformVsanUpgrade_Task(ctx context.Context, r soap.RoundTripper, req *types.PerformVsanUpgrade_Task) (*types.PerformVsanUpgrade_TaskResponse, error) { - var reqBody, resBody PerformVsanUpgrade_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type PlaceVmBody struct { - Req *types.PlaceVm `xml:"urn:vim25 PlaceVm,omitempty"` - Res *types.PlaceVmResponse `xml:"urn:vim25 PlaceVmResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *PlaceVmBody) Fault() *soap.Fault { return b.Fault_ } - -func PlaceVm(ctx context.Context, r soap.RoundTripper, req *types.PlaceVm) (*types.PlaceVmResponse, error) { - var reqBody, resBody PlaceVmBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type PostEventBody struct { - Req *types.PostEvent `xml:"urn:vim25 PostEvent,omitempty"` - Res *types.PostEventResponse `xml:"urn:vim25 PostEventResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *PostEventBody) Fault() *soap.Fault { return b.Fault_ } - -func PostEvent(ctx context.Context, r soap.RoundTripper, req *types.PostEvent) (*types.PostEventResponse, error) { - var reqBody, resBody PostEventBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type PowerDownHostToStandBy_TaskBody struct { - Req *types.PowerDownHostToStandBy_Task `xml:"urn:vim25 PowerDownHostToStandBy_Task,omitempty"` - Res *types.PowerDownHostToStandBy_TaskResponse `xml:"urn:vim25 PowerDownHostToStandBy_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *PowerDownHostToStandBy_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func PowerDownHostToStandBy_Task(ctx context.Context, r soap.RoundTripper, req *types.PowerDownHostToStandBy_Task) (*types.PowerDownHostToStandBy_TaskResponse, error) { - var reqBody, resBody PowerDownHostToStandBy_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type PowerOffVApp_TaskBody struct { - Req *types.PowerOffVApp_Task `xml:"urn:vim25 PowerOffVApp_Task,omitempty"` - Res *types.PowerOffVApp_TaskResponse `xml:"urn:vim25 PowerOffVApp_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *PowerOffVApp_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func PowerOffVApp_Task(ctx context.Context, r soap.RoundTripper, req *types.PowerOffVApp_Task) (*types.PowerOffVApp_TaskResponse, error) { - var reqBody, resBody PowerOffVApp_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type PowerOffVM_TaskBody struct { - Req *types.PowerOffVM_Task `xml:"urn:vim25 PowerOffVM_Task,omitempty"` - Res *types.PowerOffVM_TaskResponse `xml:"urn:vim25 PowerOffVM_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *PowerOffVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func PowerOffVM_Task(ctx context.Context, r soap.RoundTripper, req *types.PowerOffVM_Task) (*types.PowerOffVM_TaskResponse, error) { - var reqBody, resBody PowerOffVM_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type PowerOnMultiVM_TaskBody struct { - Req *types.PowerOnMultiVM_Task `xml:"urn:vim25 PowerOnMultiVM_Task,omitempty"` - Res *types.PowerOnMultiVM_TaskResponse `xml:"urn:vim25 PowerOnMultiVM_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *PowerOnMultiVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func PowerOnMultiVM_Task(ctx context.Context, r soap.RoundTripper, req *types.PowerOnMultiVM_Task) (*types.PowerOnMultiVM_TaskResponse, error) { - var reqBody, resBody PowerOnMultiVM_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type PowerOnVApp_TaskBody struct { - Req *types.PowerOnVApp_Task `xml:"urn:vim25 PowerOnVApp_Task,omitempty"` - Res *types.PowerOnVApp_TaskResponse `xml:"urn:vim25 PowerOnVApp_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *PowerOnVApp_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func PowerOnVApp_Task(ctx context.Context, r soap.RoundTripper, req *types.PowerOnVApp_Task) (*types.PowerOnVApp_TaskResponse, error) { - var reqBody, resBody PowerOnVApp_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type PowerOnVM_TaskBody struct { - Req *types.PowerOnVM_Task `xml:"urn:vim25 PowerOnVM_Task,omitempty"` - Res *types.PowerOnVM_TaskResponse `xml:"urn:vim25 PowerOnVM_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *PowerOnVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func PowerOnVM_Task(ctx context.Context, r soap.RoundTripper, req *types.PowerOnVM_Task) (*types.PowerOnVM_TaskResponse, error) { - var reqBody, resBody PowerOnVM_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type PowerUpHostFromStandBy_TaskBody struct { - Req *types.PowerUpHostFromStandBy_Task `xml:"urn:vim25 PowerUpHostFromStandBy_Task,omitempty"` - Res *types.PowerUpHostFromStandBy_TaskResponse `xml:"urn:vim25 PowerUpHostFromStandBy_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *PowerUpHostFromStandBy_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func PowerUpHostFromStandBy_Task(ctx context.Context, r soap.RoundTripper, req *types.PowerUpHostFromStandBy_Task) (*types.PowerUpHostFromStandBy_TaskResponse, error) { - var reqBody, resBody PowerUpHostFromStandBy_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type PromoteDisks_TaskBody struct { - Req *types.PromoteDisks_Task `xml:"urn:vim25 PromoteDisks_Task,omitempty"` - Res *types.PromoteDisks_TaskResponse `xml:"urn:vim25 PromoteDisks_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *PromoteDisks_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func PromoteDisks_Task(ctx context.Context, r soap.RoundTripper, req *types.PromoteDisks_Task) (*types.PromoteDisks_TaskResponse, error) { - var reqBody, resBody PromoteDisks_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryAnswerFileStatusBody struct { - Req *types.QueryAnswerFileStatus `xml:"urn:vim25 QueryAnswerFileStatus,omitempty"` - Res *types.QueryAnswerFileStatusResponse `xml:"urn:vim25 QueryAnswerFileStatusResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryAnswerFileStatusBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryAnswerFileStatus(ctx context.Context, r soap.RoundTripper, req *types.QueryAnswerFileStatus) (*types.QueryAnswerFileStatusResponse, error) { - var reqBody, resBody QueryAnswerFileStatusBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryAssignedLicensesBody struct { - Req *types.QueryAssignedLicenses `xml:"urn:vim25 QueryAssignedLicenses,omitempty"` - Res *types.QueryAssignedLicensesResponse `xml:"urn:vim25 QueryAssignedLicensesResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryAssignedLicensesBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryAssignedLicenses(ctx context.Context, r soap.RoundTripper, req *types.QueryAssignedLicenses) (*types.QueryAssignedLicensesResponse, error) { - var reqBody, resBody QueryAssignedLicensesBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryAvailableDisksForVmfsBody struct { - Req *types.QueryAvailableDisksForVmfs `xml:"urn:vim25 QueryAvailableDisksForVmfs,omitempty"` - Res *types.QueryAvailableDisksForVmfsResponse `xml:"urn:vim25 QueryAvailableDisksForVmfsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryAvailableDisksForVmfsBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryAvailableDisksForVmfs(ctx context.Context, r soap.RoundTripper, req *types.QueryAvailableDisksForVmfs) (*types.QueryAvailableDisksForVmfsResponse, error) { - var reqBody, resBody QueryAvailableDisksForVmfsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryAvailableDvsSpecBody struct { - Req *types.QueryAvailableDvsSpec `xml:"urn:vim25 QueryAvailableDvsSpec,omitempty"` - Res *types.QueryAvailableDvsSpecResponse `xml:"urn:vim25 QueryAvailableDvsSpecResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryAvailableDvsSpecBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryAvailableDvsSpec(ctx context.Context, r soap.RoundTripper, req *types.QueryAvailableDvsSpec) (*types.QueryAvailableDvsSpecResponse, error) { - var reqBody, resBody QueryAvailableDvsSpecBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryAvailablePartitionBody struct { - Req *types.QueryAvailablePartition `xml:"urn:vim25 QueryAvailablePartition,omitempty"` - Res *types.QueryAvailablePartitionResponse `xml:"urn:vim25 QueryAvailablePartitionResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryAvailablePartitionBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryAvailablePartition(ctx context.Context, r soap.RoundTripper, req *types.QueryAvailablePartition) (*types.QueryAvailablePartitionResponse, error) { - var reqBody, resBody QueryAvailablePartitionBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryAvailablePerfMetricBody struct { - Req *types.QueryAvailablePerfMetric `xml:"urn:vim25 QueryAvailablePerfMetric,omitempty"` - Res *types.QueryAvailablePerfMetricResponse `xml:"urn:vim25 QueryAvailablePerfMetricResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryAvailablePerfMetricBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryAvailablePerfMetric(ctx context.Context, r soap.RoundTripper, req *types.QueryAvailablePerfMetric) (*types.QueryAvailablePerfMetricResponse, error) { - var reqBody, resBody QueryAvailablePerfMetricBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryAvailableSsdsBody struct { - Req *types.QueryAvailableSsds `xml:"urn:vim25 QueryAvailableSsds,omitempty"` - Res *types.QueryAvailableSsdsResponse `xml:"urn:vim25 QueryAvailableSsdsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryAvailableSsdsBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryAvailableSsds(ctx context.Context, r soap.RoundTripper, req *types.QueryAvailableSsds) (*types.QueryAvailableSsdsResponse, error) { - var reqBody, resBody QueryAvailableSsdsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryAvailableTimeZonesBody struct { - Req *types.QueryAvailableTimeZones `xml:"urn:vim25 QueryAvailableTimeZones,omitempty"` - Res *types.QueryAvailableTimeZonesResponse `xml:"urn:vim25 QueryAvailableTimeZonesResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryAvailableTimeZonesBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryAvailableTimeZones(ctx context.Context, r soap.RoundTripper, req *types.QueryAvailableTimeZones) (*types.QueryAvailableTimeZonesResponse, error) { - var reqBody, resBody QueryAvailableTimeZonesBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryBootDevicesBody struct { - Req *types.QueryBootDevices `xml:"urn:vim25 QueryBootDevices,omitempty"` - Res *types.QueryBootDevicesResponse `xml:"urn:vim25 QueryBootDevicesResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryBootDevicesBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryBootDevices(ctx context.Context, r soap.RoundTripper, req *types.QueryBootDevices) (*types.QueryBootDevicesResponse, error) { - var reqBody, resBody QueryBootDevicesBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryBoundVnicsBody struct { - Req *types.QueryBoundVnics `xml:"urn:vim25 QueryBoundVnics,omitempty"` - Res *types.QueryBoundVnicsResponse `xml:"urn:vim25 QueryBoundVnicsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryBoundVnicsBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryBoundVnics(ctx context.Context, r soap.RoundTripper, req *types.QueryBoundVnics) (*types.QueryBoundVnicsResponse, error) { - var reqBody, resBody QueryBoundVnicsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryCandidateNicsBody struct { - Req *types.QueryCandidateNics `xml:"urn:vim25 QueryCandidateNics,omitempty"` - Res *types.QueryCandidateNicsResponse `xml:"urn:vim25 QueryCandidateNicsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryCandidateNicsBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryCandidateNics(ctx context.Context, r soap.RoundTripper, req *types.QueryCandidateNics) (*types.QueryCandidateNicsResponse, error) { - var reqBody, resBody QueryCandidateNicsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryChangedDiskAreasBody struct { - Req *types.QueryChangedDiskAreas `xml:"urn:vim25 QueryChangedDiskAreas,omitempty"` - Res *types.QueryChangedDiskAreasResponse `xml:"urn:vim25 QueryChangedDiskAreasResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryChangedDiskAreasBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryChangedDiskAreas(ctx context.Context, r soap.RoundTripper, req *types.QueryChangedDiskAreas) (*types.QueryChangedDiskAreasResponse, error) { - var reqBody, resBody QueryChangedDiskAreasBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryCmmdsBody struct { - Req *types.QueryCmmds `xml:"urn:vim25 QueryCmmds,omitempty"` - Res *types.QueryCmmdsResponse `xml:"urn:vim25 QueryCmmdsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryCmmdsBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryCmmds(ctx context.Context, r soap.RoundTripper, req *types.QueryCmmds) (*types.QueryCmmdsResponse, error) { - var reqBody, resBody QueryCmmdsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryCompatibleHostForExistingDvsBody struct { - Req *types.QueryCompatibleHostForExistingDvs `xml:"urn:vim25 QueryCompatibleHostForExistingDvs,omitempty"` - Res *types.QueryCompatibleHostForExistingDvsResponse `xml:"urn:vim25 QueryCompatibleHostForExistingDvsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryCompatibleHostForExistingDvsBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryCompatibleHostForExistingDvs(ctx context.Context, r soap.RoundTripper, req *types.QueryCompatibleHostForExistingDvs) (*types.QueryCompatibleHostForExistingDvsResponse, error) { - var reqBody, resBody QueryCompatibleHostForExistingDvsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryCompatibleHostForNewDvsBody struct { - Req *types.QueryCompatibleHostForNewDvs `xml:"urn:vim25 QueryCompatibleHostForNewDvs,omitempty"` - Res *types.QueryCompatibleHostForNewDvsResponse `xml:"urn:vim25 QueryCompatibleHostForNewDvsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryCompatibleHostForNewDvsBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryCompatibleHostForNewDvs(ctx context.Context, r soap.RoundTripper, req *types.QueryCompatibleHostForNewDvs) (*types.QueryCompatibleHostForNewDvsResponse, error) { - var reqBody, resBody QueryCompatibleHostForNewDvsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryComplianceStatusBody struct { - Req *types.QueryComplianceStatus `xml:"urn:vim25 QueryComplianceStatus,omitempty"` - Res *types.QueryComplianceStatusResponse `xml:"urn:vim25 QueryComplianceStatusResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryComplianceStatusBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryComplianceStatus(ctx context.Context, r soap.RoundTripper, req *types.QueryComplianceStatus) (*types.QueryComplianceStatusResponse, error) { - var reqBody, resBody QueryComplianceStatusBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryConfigOptionBody struct { - Req *types.QueryConfigOption `xml:"urn:vim25 QueryConfigOption,omitempty"` - Res *types.QueryConfigOptionResponse `xml:"urn:vim25 QueryConfigOptionResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryConfigOptionBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryConfigOption(ctx context.Context, r soap.RoundTripper, req *types.QueryConfigOption) (*types.QueryConfigOptionResponse, error) { - var reqBody, resBody QueryConfigOptionBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryConfigOptionDescriptorBody struct { - Req *types.QueryConfigOptionDescriptor `xml:"urn:vim25 QueryConfigOptionDescriptor,omitempty"` - Res *types.QueryConfigOptionDescriptorResponse `xml:"urn:vim25 QueryConfigOptionDescriptorResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryConfigOptionDescriptorBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryConfigOptionDescriptor(ctx context.Context, r soap.RoundTripper, req *types.QueryConfigOptionDescriptor) (*types.QueryConfigOptionDescriptorResponse, error) { - var reqBody, resBody QueryConfigOptionDescriptorBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryConfigOptionExBody struct { - Req *types.QueryConfigOptionEx `xml:"urn:vim25 QueryConfigOptionEx,omitempty"` - Res *types.QueryConfigOptionExResponse `xml:"urn:vim25 QueryConfigOptionExResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryConfigOptionExBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryConfigOptionEx(ctx context.Context, r soap.RoundTripper, req *types.QueryConfigOptionEx) (*types.QueryConfigOptionExResponse, error) { - var reqBody, resBody QueryConfigOptionExBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryConfigTargetBody struct { - Req *types.QueryConfigTarget `xml:"urn:vim25 QueryConfigTarget,omitempty"` - Res *types.QueryConfigTargetResponse `xml:"urn:vim25 QueryConfigTargetResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryConfigTargetBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryConfigTarget(ctx context.Context, r soap.RoundTripper, req *types.QueryConfigTarget) (*types.QueryConfigTargetResponse, error) { - var reqBody, resBody QueryConfigTargetBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryConfiguredModuleOptionStringBody struct { - Req *types.QueryConfiguredModuleOptionString `xml:"urn:vim25 QueryConfiguredModuleOptionString,omitempty"` - Res *types.QueryConfiguredModuleOptionStringResponse `xml:"urn:vim25 QueryConfiguredModuleOptionStringResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryConfiguredModuleOptionStringBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryConfiguredModuleOptionString(ctx context.Context, r soap.RoundTripper, req *types.QueryConfiguredModuleOptionString) (*types.QueryConfiguredModuleOptionStringResponse, error) { - var reqBody, resBody QueryConfiguredModuleOptionStringBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryConnectionInfoBody struct { - Req *types.QueryConnectionInfo `xml:"urn:vim25 QueryConnectionInfo,omitempty"` - Res *types.QueryConnectionInfoResponse `xml:"urn:vim25 QueryConnectionInfoResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryConnectionInfoBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryConnectionInfo(ctx context.Context, r soap.RoundTripper, req *types.QueryConnectionInfo) (*types.QueryConnectionInfoResponse, error) { - var reqBody, resBody QueryConnectionInfoBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryConnectionInfoViaSpecBody struct { - Req *types.QueryConnectionInfoViaSpec `xml:"urn:vim25 QueryConnectionInfoViaSpec,omitempty"` - Res *types.QueryConnectionInfoViaSpecResponse `xml:"urn:vim25 QueryConnectionInfoViaSpecResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryConnectionInfoViaSpecBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryConnectionInfoViaSpec(ctx context.Context, r soap.RoundTripper, req *types.QueryConnectionInfoViaSpec) (*types.QueryConnectionInfoViaSpecResponse, error) { - var reqBody, resBody QueryConnectionInfoViaSpecBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryDatastorePerformanceSummaryBody struct { - Req *types.QueryDatastorePerformanceSummary `xml:"urn:vim25 QueryDatastorePerformanceSummary,omitempty"` - Res *types.QueryDatastorePerformanceSummaryResponse `xml:"urn:vim25 QueryDatastorePerformanceSummaryResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryDatastorePerformanceSummaryBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryDatastorePerformanceSummary(ctx context.Context, r soap.RoundTripper, req *types.QueryDatastorePerformanceSummary) (*types.QueryDatastorePerformanceSummaryResponse, error) { - var reqBody, resBody QueryDatastorePerformanceSummaryBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryDateTimeBody struct { - Req *types.QueryDateTime `xml:"urn:vim25 QueryDateTime,omitempty"` - Res *types.QueryDateTimeResponse `xml:"urn:vim25 QueryDateTimeResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryDateTimeBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryDateTime(ctx context.Context, r soap.RoundTripper, req *types.QueryDateTime) (*types.QueryDateTimeResponse, error) { - var reqBody, resBody QueryDateTimeBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryDescriptionsBody struct { - Req *types.QueryDescriptions `xml:"urn:vim25 QueryDescriptions,omitempty"` - Res *types.QueryDescriptionsResponse `xml:"urn:vim25 QueryDescriptionsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryDescriptionsBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryDescriptions(ctx context.Context, r soap.RoundTripper, req *types.QueryDescriptions) (*types.QueryDescriptionsResponse, error) { - var reqBody, resBody QueryDescriptionsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryDisksForVsanBody struct { - Req *types.QueryDisksForVsan `xml:"urn:vim25 QueryDisksForVsan,omitempty"` - Res *types.QueryDisksForVsanResponse `xml:"urn:vim25 QueryDisksForVsanResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryDisksForVsanBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryDisksForVsan(ctx context.Context, r soap.RoundTripper, req *types.QueryDisksForVsan) (*types.QueryDisksForVsanResponse, error) { - var reqBody, resBody QueryDisksForVsanBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryDisksUsingFilterBody struct { - Req *types.QueryDisksUsingFilter `xml:"urn:vim25 QueryDisksUsingFilter,omitempty"` - Res *types.QueryDisksUsingFilterResponse `xml:"urn:vim25 QueryDisksUsingFilterResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryDisksUsingFilterBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryDisksUsingFilter(ctx context.Context, r soap.RoundTripper, req *types.QueryDisksUsingFilter) (*types.QueryDisksUsingFilterResponse, error) { - var reqBody, resBody QueryDisksUsingFilterBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryDvsByUuidBody struct { - Req *types.QueryDvsByUuid `xml:"urn:vim25 QueryDvsByUuid,omitempty"` - Res *types.QueryDvsByUuidResponse `xml:"urn:vim25 QueryDvsByUuidResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryDvsByUuidBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryDvsByUuid(ctx context.Context, r soap.RoundTripper, req *types.QueryDvsByUuid) (*types.QueryDvsByUuidResponse, error) { - var reqBody, resBody QueryDvsByUuidBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryDvsCheckCompatibilityBody struct { - Req *types.QueryDvsCheckCompatibility `xml:"urn:vim25 QueryDvsCheckCompatibility,omitempty"` - Res *types.QueryDvsCheckCompatibilityResponse `xml:"urn:vim25 QueryDvsCheckCompatibilityResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryDvsCheckCompatibilityBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryDvsCheckCompatibility(ctx context.Context, r soap.RoundTripper, req *types.QueryDvsCheckCompatibility) (*types.QueryDvsCheckCompatibilityResponse, error) { - var reqBody, resBody QueryDvsCheckCompatibilityBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryDvsCompatibleHostSpecBody struct { - Req *types.QueryDvsCompatibleHostSpec `xml:"urn:vim25 QueryDvsCompatibleHostSpec,omitempty"` - Res *types.QueryDvsCompatibleHostSpecResponse `xml:"urn:vim25 QueryDvsCompatibleHostSpecResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryDvsCompatibleHostSpecBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryDvsCompatibleHostSpec(ctx context.Context, r soap.RoundTripper, req *types.QueryDvsCompatibleHostSpec) (*types.QueryDvsCompatibleHostSpecResponse, error) { - var reqBody, resBody QueryDvsCompatibleHostSpecBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryDvsConfigTargetBody struct { - Req *types.QueryDvsConfigTarget `xml:"urn:vim25 QueryDvsConfigTarget,omitempty"` - Res *types.QueryDvsConfigTargetResponse `xml:"urn:vim25 QueryDvsConfigTargetResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryDvsConfigTargetBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryDvsConfigTarget(ctx context.Context, r soap.RoundTripper, req *types.QueryDvsConfigTarget) (*types.QueryDvsConfigTargetResponse, error) { - var reqBody, resBody QueryDvsConfigTargetBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryDvsFeatureCapabilityBody struct { - Req *types.QueryDvsFeatureCapability `xml:"urn:vim25 QueryDvsFeatureCapability,omitempty"` - Res *types.QueryDvsFeatureCapabilityResponse `xml:"urn:vim25 QueryDvsFeatureCapabilityResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryDvsFeatureCapabilityBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryDvsFeatureCapability(ctx context.Context, r soap.RoundTripper, req *types.QueryDvsFeatureCapability) (*types.QueryDvsFeatureCapabilityResponse, error) { - var reqBody, resBody QueryDvsFeatureCapabilityBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryEventsBody struct { - Req *types.QueryEvents `xml:"urn:vim25 QueryEvents,omitempty"` - Res *types.QueryEventsResponse `xml:"urn:vim25 QueryEventsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryEventsBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryEvents(ctx context.Context, r soap.RoundTripper, req *types.QueryEvents) (*types.QueryEventsResponse, error) { - var reqBody, resBody QueryEventsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryExpressionMetadataBody struct { - Req *types.QueryExpressionMetadata `xml:"urn:vim25 QueryExpressionMetadata,omitempty"` - Res *types.QueryExpressionMetadataResponse `xml:"urn:vim25 QueryExpressionMetadataResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryExpressionMetadataBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryExpressionMetadata(ctx context.Context, r soap.RoundTripper, req *types.QueryExpressionMetadata) (*types.QueryExpressionMetadataResponse, error) { - var reqBody, resBody QueryExpressionMetadataBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryExtensionIpAllocationUsageBody struct { - Req *types.QueryExtensionIpAllocationUsage `xml:"urn:vim25 QueryExtensionIpAllocationUsage,omitempty"` - Res *types.QueryExtensionIpAllocationUsageResponse `xml:"urn:vim25 QueryExtensionIpAllocationUsageResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryExtensionIpAllocationUsageBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryExtensionIpAllocationUsage(ctx context.Context, r soap.RoundTripper, req *types.QueryExtensionIpAllocationUsage) (*types.QueryExtensionIpAllocationUsageResponse, error) { - var reqBody, resBody QueryExtensionIpAllocationUsageBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryFaultToleranceCompatibilityBody struct { - Req *types.QueryFaultToleranceCompatibility `xml:"urn:vim25 QueryFaultToleranceCompatibility,omitempty"` - Res *types.QueryFaultToleranceCompatibilityResponse `xml:"urn:vim25 QueryFaultToleranceCompatibilityResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryFaultToleranceCompatibilityBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryFaultToleranceCompatibility(ctx context.Context, r soap.RoundTripper, req *types.QueryFaultToleranceCompatibility) (*types.QueryFaultToleranceCompatibilityResponse, error) { - var reqBody, resBody QueryFaultToleranceCompatibilityBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryFaultToleranceCompatibilityExBody struct { - Req *types.QueryFaultToleranceCompatibilityEx `xml:"urn:vim25 QueryFaultToleranceCompatibilityEx,omitempty"` - Res *types.QueryFaultToleranceCompatibilityExResponse `xml:"urn:vim25 QueryFaultToleranceCompatibilityExResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryFaultToleranceCompatibilityExBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryFaultToleranceCompatibilityEx(ctx context.Context, r soap.RoundTripper, req *types.QueryFaultToleranceCompatibilityEx) (*types.QueryFaultToleranceCompatibilityExResponse, error) { - var reqBody, resBody QueryFaultToleranceCompatibilityExBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryFirmwareConfigUploadURLBody struct { - Req *types.QueryFirmwareConfigUploadURL `xml:"urn:vim25 QueryFirmwareConfigUploadURL,omitempty"` - Res *types.QueryFirmwareConfigUploadURLResponse `xml:"urn:vim25 QueryFirmwareConfigUploadURLResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryFirmwareConfigUploadURLBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryFirmwareConfigUploadURL(ctx context.Context, r soap.RoundTripper, req *types.QueryFirmwareConfigUploadURL) (*types.QueryFirmwareConfigUploadURLResponse, error) { - var reqBody, resBody QueryFirmwareConfigUploadURLBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryHostConnectionInfoBody struct { - Req *types.QueryHostConnectionInfo `xml:"urn:vim25 QueryHostConnectionInfo,omitempty"` - Res *types.QueryHostConnectionInfoResponse `xml:"urn:vim25 QueryHostConnectionInfoResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryHostConnectionInfoBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryHostConnectionInfo(ctx context.Context, r soap.RoundTripper, req *types.QueryHostConnectionInfo) (*types.QueryHostConnectionInfoResponse, error) { - var reqBody, resBody QueryHostConnectionInfoBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryHostPatch_TaskBody struct { - Req *types.QueryHostPatch_Task `xml:"urn:vim25 QueryHostPatch_Task,omitempty"` - Res *types.QueryHostPatch_TaskResponse `xml:"urn:vim25 QueryHostPatch_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryHostPatch_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryHostPatch_Task(ctx context.Context, r soap.RoundTripper, req *types.QueryHostPatch_Task) (*types.QueryHostPatch_TaskResponse, error) { - var reqBody, resBody QueryHostPatch_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryHostProfileMetadataBody struct { - Req *types.QueryHostProfileMetadata `xml:"urn:vim25 QueryHostProfileMetadata,omitempty"` - Res *types.QueryHostProfileMetadataResponse `xml:"urn:vim25 QueryHostProfileMetadataResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryHostProfileMetadataBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryHostProfileMetadata(ctx context.Context, r soap.RoundTripper, req *types.QueryHostProfileMetadata) (*types.QueryHostProfileMetadataResponse, error) { - var reqBody, resBody QueryHostProfileMetadataBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryHostStatusBody struct { - Req *types.QueryHostStatus `xml:"urn:vim25 QueryHostStatus,omitempty"` - Res *types.QueryHostStatusResponse `xml:"urn:vim25 QueryHostStatusResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryHostStatusBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryHostStatus(ctx context.Context, r soap.RoundTripper, req *types.QueryHostStatus) (*types.QueryHostStatusResponse, error) { - var reqBody, resBody QueryHostStatusBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryIORMConfigOptionBody struct { - Req *types.QueryIORMConfigOption `xml:"urn:vim25 QueryIORMConfigOption,omitempty"` - Res *types.QueryIORMConfigOptionResponse `xml:"urn:vim25 QueryIORMConfigOptionResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryIORMConfigOptionBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryIORMConfigOption(ctx context.Context, r soap.RoundTripper, req *types.QueryIORMConfigOption) (*types.QueryIORMConfigOptionResponse, error) { - var reqBody, resBody QueryIORMConfigOptionBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryIPAllocationsBody struct { - Req *types.QueryIPAllocations `xml:"urn:vim25 QueryIPAllocations,omitempty"` - Res *types.QueryIPAllocationsResponse `xml:"urn:vim25 QueryIPAllocationsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryIPAllocationsBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryIPAllocations(ctx context.Context, r soap.RoundTripper, req *types.QueryIPAllocations) (*types.QueryIPAllocationsResponse, error) { - var reqBody, resBody QueryIPAllocationsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryIoFilterInfoBody struct { - Req *types.QueryIoFilterInfo `xml:"urn:vim25 QueryIoFilterInfo,omitempty"` - Res *types.QueryIoFilterInfoResponse `xml:"urn:vim25 QueryIoFilterInfoResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryIoFilterInfoBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryIoFilterInfo(ctx context.Context, r soap.RoundTripper, req *types.QueryIoFilterInfo) (*types.QueryIoFilterInfoResponse, error) { - var reqBody, resBody QueryIoFilterInfoBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryIoFilterIssuesBody struct { - Req *types.QueryIoFilterIssues `xml:"urn:vim25 QueryIoFilterIssues,omitempty"` - Res *types.QueryIoFilterIssuesResponse `xml:"urn:vim25 QueryIoFilterIssuesResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryIoFilterIssuesBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryIoFilterIssues(ctx context.Context, r soap.RoundTripper, req *types.QueryIoFilterIssues) (*types.QueryIoFilterIssuesResponse, error) { - var reqBody, resBody QueryIoFilterIssuesBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryIpPoolsBody struct { - Req *types.QueryIpPools `xml:"urn:vim25 QueryIpPools,omitempty"` - Res *types.QueryIpPoolsResponse `xml:"urn:vim25 QueryIpPoolsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryIpPoolsBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryIpPools(ctx context.Context, r soap.RoundTripper, req *types.QueryIpPools) (*types.QueryIpPoolsResponse, error) { - var reqBody, resBody QueryIpPoolsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryLicenseSourceAvailabilityBody struct { - Req *types.QueryLicenseSourceAvailability `xml:"urn:vim25 QueryLicenseSourceAvailability,omitempty"` - Res *types.QueryLicenseSourceAvailabilityResponse `xml:"urn:vim25 QueryLicenseSourceAvailabilityResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryLicenseSourceAvailabilityBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryLicenseSourceAvailability(ctx context.Context, r soap.RoundTripper, req *types.QueryLicenseSourceAvailability) (*types.QueryLicenseSourceAvailabilityResponse, error) { - var reqBody, resBody QueryLicenseSourceAvailabilityBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryLicenseUsageBody struct { - Req *types.QueryLicenseUsage `xml:"urn:vim25 QueryLicenseUsage,omitempty"` - Res *types.QueryLicenseUsageResponse `xml:"urn:vim25 QueryLicenseUsageResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryLicenseUsageBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryLicenseUsage(ctx context.Context, r soap.RoundTripper, req *types.QueryLicenseUsage) (*types.QueryLicenseUsageResponse, error) { - var reqBody, resBody QueryLicenseUsageBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryLockdownExceptionsBody struct { - Req *types.QueryLockdownExceptions `xml:"urn:vim25 QueryLockdownExceptions,omitempty"` - Res *types.QueryLockdownExceptionsResponse `xml:"urn:vim25 QueryLockdownExceptionsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryLockdownExceptionsBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryLockdownExceptions(ctx context.Context, r soap.RoundTripper, req *types.QueryLockdownExceptions) (*types.QueryLockdownExceptionsResponse, error) { - var reqBody, resBody QueryLockdownExceptionsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryManagedByBody struct { - Req *types.QueryManagedBy `xml:"urn:vim25 QueryManagedBy,omitempty"` - Res *types.QueryManagedByResponse `xml:"urn:vim25 QueryManagedByResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryManagedByBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryManagedBy(ctx context.Context, r soap.RoundTripper, req *types.QueryManagedBy) (*types.QueryManagedByResponse, error) { - var reqBody, resBody QueryManagedByBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryMemoryOverheadBody struct { - Req *types.QueryMemoryOverhead `xml:"urn:vim25 QueryMemoryOverhead,omitempty"` - Res *types.QueryMemoryOverheadResponse `xml:"urn:vim25 QueryMemoryOverheadResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryMemoryOverheadBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryMemoryOverhead(ctx context.Context, r soap.RoundTripper, req *types.QueryMemoryOverhead) (*types.QueryMemoryOverheadResponse, error) { - var reqBody, resBody QueryMemoryOverheadBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryMemoryOverheadExBody struct { - Req *types.QueryMemoryOverheadEx `xml:"urn:vim25 QueryMemoryOverheadEx,omitempty"` - Res *types.QueryMemoryOverheadExResponse `xml:"urn:vim25 QueryMemoryOverheadExResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryMemoryOverheadExBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryMemoryOverheadEx(ctx context.Context, r soap.RoundTripper, req *types.QueryMemoryOverheadEx) (*types.QueryMemoryOverheadExResponse, error) { - var reqBody, resBody QueryMemoryOverheadExBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryMigrationDependenciesBody struct { - Req *types.QueryMigrationDependencies `xml:"urn:vim25 QueryMigrationDependencies,omitempty"` - Res *types.QueryMigrationDependenciesResponse `xml:"urn:vim25 QueryMigrationDependenciesResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryMigrationDependenciesBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryMigrationDependencies(ctx context.Context, r soap.RoundTripper, req *types.QueryMigrationDependencies) (*types.QueryMigrationDependenciesResponse, error) { - var reqBody, resBody QueryMigrationDependenciesBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryModulesBody struct { - Req *types.QueryModules `xml:"urn:vim25 QueryModules,omitempty"` - Res *types.QueryModulesResponse `xml:"urn:vim25 QueryModulesResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryModulesBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryModules(ctx context.Context, r soap.RoundTripper, req *types.QueryModules) (*types.QueryModulesResponse, error) { - var reqBody, resBody QueryModulesBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryNFSUserBody struct { - Req *types.QueryNFSUser `xml:"urn:vim25 QueryNFSUser,omitempty"` - Res *types.QueryNFSUserResponse `xml:"urn:vim25 QueryNFSUserResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryNFSUserBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryNFSUser(ctx context.Context, r soap.RoundTripper, req *types.QueryNFSUser) (*types.QueryNFSUserResponse, error) { - var reqBody, resBody QueryNFSUserBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryNetConfigBody struct { - Req *types.QueryNetConfig `xml:"urn:vim25 QueryNetConfig,omitempty"` - Res *types.QueryNetConfigResponse `xml:"urn:vim25 QueryNetConfigResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryNetConfigBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryNetConfig(ctx context.Context, r soap.RoundTripper, req *types.QueryNetConfig) (*types.QueryNetConfigResponse, error) { - var reqBody, resBody QueryNetConfigBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryNetworkHintBody struct { - Req *types.QueryNetworkHint `xml:"urn:vim25 QueryNetworkHint,omitempty"` - Res *types.QueryNetworkHintResponse `xml:"urn:vim25 QueryNetworkHintResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryNetworkHintBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryNetworkHint(ctx context.Context, r soap.RoundTripper, req *types.QueryNetworkHint) (*types.QueryNetworkHintResponse, error) { - var reqBody, resBody QueryNetworkHintBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryObjectsOnPhysicalVsanDiskBody struct { - Req *types.QueryObjectsOnPhysicalVsanDisk `xml:"urn:vim25 QueryObjectsOnPhysicalVsanDisk,omitempty"` - Res *types.QueryObjectsOnPhysicalVsanDiskResponse `xml:"urn:vim25 QueryObjectsOnPhysicalVsanDiskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryObjectsOnPhysicalVsanDiskBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryObjectsOnPhysicalVsanDisk(ctx context.Context, r soap.RoundTripper, req *types.QueryObjectsOnPhysicalVsanDisk) (*types.QueryObjectsOnPhysicalVsanDiskResponse, error) { - var reqBody, resBody QueryObjectsOnPhysicalVsanDiskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryOptionsBody struct { - Req *types.QueryOptions `xml:"urn:vim25 QueryOptions,omitempty"` - Res *types.QueryOptionsResponse `xml:"urn:vim25 QueryOptionsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryOptionsBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryOptions(ctx context.Context, r soap.RoundTripper, req *types.QueryOptions) (*types.QueryOptionsResponse, error) { - var reqBody, resBody QueryOptionsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryPartitionCreateDescBody struct { - Req *types.QueryPartitionCreateDesc `xml:"urn:vim25 QueryPartitionCreateDesc,omitempty"` - Res *types.QueryPartitionCreateDescResponse `xml:"urn:vim25 QueryPartitionCreateDescResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryPartitionCreateDescBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryPartitionCreateDesc(ctx context.Context, r soap.RoundTripper, req *types.QueryPartitionCreateDesc) (*types.QueryPartitionCreateDescResponse, error) { - var reqBody, resBody QueryPartitionCreateDescBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryPartitionCreateOptionsBody struct { - Req *types.QueryPartitionCreateOptions `xml:"urn:vim25 QueryPartitionCreateOptions,omitempty"` - Res *types.QueryPartitionCreateOptionsResponse `xml:"urn:vim25 QueryPartitionCreateOptionsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryPartitionCreateOptionsBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryPartitionCreateOptions(ctx context.Context, r soap.RoundTripper, req *types.QueryPartitionCreateOptions) (*types.QueryPartitionCreateOptionsResponse, error) { - var reqBody, resBody QueryPartitionCreateOptionsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryPathSelectionPolicyOptionsBody struct { - Req *types.QueryPathSelectionPolicyOptions `xml:"urn:vim25 QueryPathSelectionPolicyOptions,omitempty"` - Res *types.QueryPathSelectionPolicyOptionsResponse `xml:"urn:vim25 QueryPathSelectionPolicyOptionsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryPathSelectionPolicyOptionsBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryPathSelectionPolicyOptions(ctx context.Context, r soap.RoundTripper, req *types.QueryPathSelectionPolicyOptions) (*types.QueryPathSelectionPolicyOptionsResponse, error) { - var reqBody, resBody QueryPathSelectionPolicyOptionsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryPerfBody struct { - Req *types.QueryPerf `xml:"urn:vim25 QueryPerf,omitempty"` - Res *types.QueryPerfResponse `xml:"urn:vim25 QueryPerfResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryPerfBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryPerf(ctx context.Context, r soap.RoundTripper, req *types.QueryPerf) (*types.QueryPerfResponse, error) { - var reqBody, resBody QueryPerfBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryPerfCompositeBody struct { - Req *types.QueryPerfComposite `xml:"urn:vim25 QueryPerfComposite,omitempty"` - Res *types.QueryPerfCompositeResponse `xml:"urn:vim25 QueryPerfCompositeResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryPerfCompositeBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryPerfComposite(ctx context.Context, r soap.RoundTripper, req *types.QueryPerfComposite) (*types.QueryPerfCompositeResponse, error) { - var reqBody, resBody QueryPerfCompositeBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryPerfCounterBody struct { - Req *types.QueryPerfCounter `xml:"urn:vim25 QueryPerfCounter,omitempty"` - Res *types.QueryPerfCounterResponse `xml:"urn:vim25 QueryPerfCounterResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryPerfCounterBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryPerfCounter(ctx context.Context, r soap.RoundTripper, req *types.QueryPerfCounter) (*types.QueryPerfCounterResponse, error) { - var reqBody, resBody QueryPerfCounterBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryPerfCounterByLevelBody struct { - Req *types.QueryPerfCounterByLevel `xml:"urn:vim25 QueryPerfCounterByLevel,omitempty"` - Res *types.QueryPerfCounterByLevelResponse `xml:"urn:vim25 QueryPerfCounterByLevelResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryPerfCounterByLevelBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryPerfCounterByLevel(ctx context.Context, r soap.RoundTripper, req *types.QueryPerfCounterByLevel) (*types.QueryPerfCounterByLevelResponse, error) { - var reqBody, resBody QueryPerfCounterByLevelBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryPerfProviderSummaryBody struct { - Req *types.QueryPerfProviderSummary `xml:"urn:vim25 QueryPerfProviderSummary,omitempty"` - Res *types.QueryPerfProviderSummaryResponse `xml:"urn:vim25 QueryPerfProviderSummaryResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryPerfProviderSummaryBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryPerfProviderSummary(ctx context.Context, r soap.RoundTripper, req *types.QueryPerfProviderSummary) (*types.QueryPerfProviderSummaryResponse, error) { - var reqBody, resBody QueryPerfProviderSummaryBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryPhysicalVsanDisksBody struct { - Req *types.QueryPhysicalVsanDisks `xml:"urn:vim25 QueryPhysicalVsanDisks,omitempty"` - Res *types.QueryPhysicalVsanDisksResponse `xml:"urn:vim25 QueryPhysicalVsanDisksResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryPhysicalVsanDisksBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryPhysicalVsanDisks(ctx context.Context, r soap.RoundTripper, req *types.QueryPhysicalVsanDisks) (*types.QueryPhysicalVsanDisksResponse, error) { - var reqBody, resBody QueryPhysicalVsanDisksBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryPnicStatusBody struct { - Req *types.QueryPnicStatus `xml:"urn:vim25 QueryPnicStatus,omitempty"` - Res *types.QueryPnicStatusResponse `xml:"urn:vim25 QueryPnicStatusResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryPnicStatusBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryPnicStatus(ctx context.Context, r soap.RoundTripper, req *types.QueryPnicStatus) (*types.QueryPnicStatusResponse, error) { - var reqBody, resBody QueryPnicStatusBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryPolicyMetadataBody struct { - Req *types.QueryPolicyMetadata `xml:"urn:vim25 QueryPolicyMetadata,omitempty"` - Res *types.QueryPolicyMetadataResponse `xml:"urn:vim25 QueryPolicyMetadataResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryPolicyMetadataBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryPolicyMetadata(ctx context.Context, r soap.RoundTripper, req *types.QueryPolicyMetadata) (*types.QueryPolicyMetadataResponse, error) { - var reqBody, resBody QueryPolicyMetadataBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryProfileStructureBody struct { - Req *types.QueryProfileStructure `xml:"urn:vim25 QueryProfileStructure,omitempty"` - Res *types.QueryProfileStructureResponse `xml:"urn:vim25 QueryProfileStructureResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryProfileStructureBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryProfileStructure(ctx context.Context, r soap.RoundTripper, req *types.QueryProfileStructure) (*types.QueryProfileStructureResponse, error) { - var reqBody, resBody QueryProfileStructureBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryResourceConfigOptionBody struct { - Req *types.QueryResourceConfigOption `xml:"urn:vim25 QueryResourceConfigOption,omitempty"` - Res *types.QueryResourceConfigOptionResponse `xml:"urn:vim25 QueryResourceConfigOptionResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryResourceConfigOptionBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryResourceConfigOption(ctx context.Context, r soap.RoundTripper, req *types.QueryResourceConfigOption) (*types.QueryResourceConfigOptionResponse, error) { - var reqBody, resBody QueryResourceConfigOptionBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryServiceListBody struct { - Req *types.QueryServiceList `xml:"urn:vim25 QueryServiceList,omitempty"` - Res *types.QueryServiceListResponse `xml:"urn:vim25 QueryServiceListResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryServiceListBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryServiceList(ctx context.Context, r soap.RoundTripper, req *types.QueryServiceList) (*types.QueryServiceListResponse, error) { - var reqBody, resBody QueryServiceListBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryStorageArrayTypePolicyOptionsBody struct { - Req *types.QueryStorageArrayTypePolicyOptions `xml:"urn:vim25 QueryStorageArrayTypePolicyOptions,omitempty"` - Res *types.QueryStorageArrayTypePolicyOptionsResponse `xml:"urn:vim25 QueryStorageArrayTypePolicyOptionsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryStorageArrayTypePolicyOptionsBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryStorageArrayTypePolicyOptions(ctx context.Context, r soap.RoundTripper, req *types.QueryStorageArrayTypePolicyOptions) (*types.QueryStorageArrayTypePolicyOptionsResponse, error) { - var reqBody, resBody QueryStorageArrayTypePolicyOptionsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QuerySupportedFeaturesBody struct { - Req *types.QuerySupportedFeatures `xml:"urn:vim25 QuerySupportedFeatures,omitempty"` - Res *types.QuerySupportedFeaturesResponse `xml:"urn:vim25 QuerySupportedFeaturesResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QuerySupportedFeaturesBody) Fault() *soap.Fault { return b.Fault_ } - -func QuerySupportedFeatures(ctx context.Context, r soap.RoundTripper, req *types.QuerySupportedFeatures) (*types.QuerySupportedFeaturesResponse, error) { - var reqBody, resBody QuerySupportedFeaturesBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QuerySyncingVsanObjectsBody struct { - Req *types.QuerySyncingVsanObjects `xml:"urn:vim25 QuerySyncingVsanObjects,omitempty"` - Res *types.QuerySyncingVsanObjectsResponse `xml:"urn:vim25 QuerySyncingVsanObjectsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QuerySyncingVsanObjectsBody) Fault() *soap.Fault { return b.Fault_ } - -func QuerySyncingVsanObjects(ctx context.Context, r soap.RoundTripper, req *types.QuerySyncingVsanObjects) (*types.QuerySyncingVsanObjectsResponse, error) { - var reqBody, resBody QuerySyncingVsanObjectsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QuerySystemUsersBody struct { - Req *types.QuerySystemUsers `xml:"urn:vim25 QuerySystemUsers,omitempty"` - Res *types.QuerySystemUsersResponse `xml:"urn:vim25 QuerySystemUsersResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QuerySystemUsersBody) Fault() *soap.Fault { return b.Fault_ } - -func QuerySystemUsers(ctx context.Context, r soap.RoundTripper, req *types.QuerySystemUsers) (*types.QuerySystemUsersResponse, error) { - var reqBody, resBody QuerySystemUsersBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryTargetCapabilitiesBody struct { - Req *types.QueryTargetCapabilities `xml:"urn:vim25 QueryTargetCapabilities,omitempty"` - Res *types.QueryTargetCapabilitiesResponse `xml:"urn:vim25 QueryTargetCapabilitiesResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryTargetCapabilitiesBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryTargetCapabilities(ctx context.Context, r soap.RoundTripper, req *types.QueryTargetCapabilities) (*types.QueryTargetCapabilitiesResponse, error) { - var reqBody, resBody QueryTargetCapabilitiesBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryTpmAttestationReportBody struct { - Req *types.QueryTpmAttestationReport `xml:"urn:vim25 QueryTpmAttestationReport,omitempty"` - Res *types.QueryTpmAttestationReportResponse `xml:"urn:vim25 QueryTpmAttestationReportResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryTpmAttestationReportBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryTpmAttestationReport(ctx context.Context, r soap.RoundTripper, req *types.QueryTpmAttestationReport) (*types.QueryTpmAttestationReportResponse, error) { - var reqBody, resBody QueryTpmAttestationReportBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryUnownedFilesBody struct { - Req *types.QueryUnownedFiles `xml:"urn:vim25 QueryUnownedFiles,omitempty"` - Res *types.QueryUnownedFilesResponse `xml:"urn:vim25 QueryUnownedFilesResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryUnownedFilesBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryUnownedFiles(ctx context.Context, r soap.RoundTripper, req *types.QueryUnownedFiles) (*types.QueryUnownedFilesResponse, error) { - var reqBody, resBody QueryUnownedFilesBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryUnresolvedVmfsVolumeBody struct { - Req *types.QueryUnresolvedVmfsVolume `xml:"urn:vim25 QueryUnresolvedVmfsVolume,omitempty"` - Res *types.QueryUnresolvedVmfsVolumeResponse `xml:"urn:vim25 QueryUnresolvedVmfsVolumeResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryUnresolvedVmfsVolumeBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryUnresolvedVmfsVolume(ctx context.Context, r soap.RoundTripper, req *types.QueryUnresolvedVmfsVolume) (*types.QueryUnresolvedVmfsVolumeResponse, error) { - var reqBody, resBody QueryUnresolvedVmfsVolumeBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryUnresolvedVmfsVolumesBody struct { - Req *types.QueryUnresolvedVmfsVolumes `xml:"urn:vim25 QueryUnresolvedVmfsVolumes,omitempty"` - Res *types.QueryUnresolvedVmfsVolumesResponse `xml:"urn:vim25 QueryUnresolvedVmfsVolumesResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryUnresolvedVmfsVolumesBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryUnresolvedVmfsVolumes(ctx context.Context, r soap.RoundTripper, req *types.QueryUnresolvedVmfsVolumes) (*types.QueryUnresolvedVmfsVolumesResponse, error) { - var reqBody, resBody QueryUnresolvedVmfsVolumesBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryUsedVlanIdInDvsBody struct { - Req *types.QueryUsedVlanIdInDvs `xml:"urn:vim25 QueryUsedVlanIdInDvs,omitempty"` - Res *types.QueryUsedVlanIdInDvsResponse `xml:"urn:vim25 QueryUsedVlanIdInDvsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryUsedVlanIdInDvsBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryUsedVlanIdInDvs(ctx context.Context, r soap.RoundTripper, req *types.QueryUsedVlanIdInDvs) (*types.QueryUsedVlanIdInDvsResponse, error) { - var reqBody, resBody QueryUsedVlanIdInDvsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryVMotionCompatibilityBody struct { - Req *types.QueryVMotionCompatibility `xml:"urn:vim25 QueryVMotionCompatibility,omitempty"` - Res *types.QueryVMotionCompatibilityResponse `xml:"urn:vim25 QueryVMotionCompatibilityResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryVMotionCompatibilityBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryVMotionCompatibility(ctx context.Context, r soap.RoundTripper, req *types.QueryVMotionCompatibility) (*types.QueryVMotionCompatibilityResponse, error) { - var reqBody, resBody QueryVMotionCompatibilityBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryVMotionCompatibilityEx_TaskBody struct { - Req *types.QueryVMotionCompatibilityEx_Task `xml:"urn:vim25 QueryVMotionCompatibilityEx_Task,omitempty"` - Res *types.QueryVMotionCompatibilityEx_TaskResponse `xml:"urn:vim25 QueryVMotionCompatibilityEx_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryVMotionCompatibilityEx_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryVMotionCompatibilityEx_Task(ctx context.Context, r soap.RoundTripper, req *types.QueryVMotionCompatibilityEx_Task) (*types.QueryVMotionCompatibilityEx_TaskResponse, error) { - var reqBody, resBody QueryVMotionCompatibilityEx_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryVirtualDiskFragmentationBody struct { - Req *types.QueryVirtualDiskFragmentation `xml:"urn:vim25 QueryVirtualDiskFragmentation,omitempty"` - Res *types.QueryVirtualDiskFragmentationResponse `xml:"urn:vim25 QueryVirtualDiskFragmentationResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryVirtualDiskFragmentationBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryVirtualDiskFragmentation(ctx context.Context, r soap.RoundTripper, req *types.QueryVirtualDiskFragmentation) (*types.QueryVirtualDiskFragmentationResponse, error) { - var reqBody, resBody QueryVirtualDiskFragmentationBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryVirtualDiskGeometryBody struct { - Req *types.QueryVirtualDiskGeometry `xml:"urn:vim25 QueryVirtualDiskGeometry,omitempty"` - Res *types.QueryVirtualDiskGeometryResponse `xml:"urn:vim25 QueryVirtualDiskGeometryResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryVirtualDiskGeometryBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryVirtualDiskGeometry(ctx context.Context, r soap.RoundTripper, req *types.QueryVirtualDiskGeometry) (*types.QueryVirtualDiskGeometryResponse, error) { - var reqBody, resBody QueryVirtualDiskGeometryBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryVirtualDiskUuidBody struct { - Req *types.QueryVirtualDiskUuid `xml:"urn:vim25 QueryVirtualDiskUuid,omitempty"` - Res *types.QueryVirtualDiskUuidResponse `xml:"urn:vim25 QueryVirtualDiskUuidResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryVirtualDiskUuidBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryVirtualDiskUuid(ctx context.Context, r soap.RoundTripper, req *types.QueryVirtualDiskUuid) (*types.QueryVirtualDiskUuidResponse, error) { - var reqBody, resBody QueryVirtualDiskUuidBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryVmfsDatastoreCreateOptionsBody struct { - Req *types.QueryVmfsDatastoreCreateOptions `xml:"urn:vim25 QueryVmfsDatastoreCreateOptions,omitempty"` - Res *types.QueryVmfsDatastoreCreateOptionsResponse `xml:"urn:vim25 QueryVmfsDatastoreCreateOptionsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryVmfsDatastoreCreateOptionsBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryVmfsDatastoreCreateOptions(ctx context.Context, r soap.RoundTripper, req *types.QueryVmfsDatastoreCreateOptions) (*types.QueryVmfsDatastoreCreateOptionsResponse, error) { - var reqBody, resBody QueryVmfsDatastoreCreateOptionsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryVmfsDatastoreExpandOptionsBody struct { - Req *types.QueryVmfsDatastoreExpandOptions `xml:"urn:vim25 QueryVmfsDatastoreExpandOptions,omitempty"` - Res *types.QueryVmfsDatastoreExpandOptionsResponse `xml:"urn:vim25 QueryVmfsDatastoreExpandOptionsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryVmfsDatastoreExpandOptionsBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryVmfsDatastoreExpandOptions(ctx context.Context, r soap.RoundTripper, req *types.QueryVmfsDatastoreExpandOptions) (*types.QueryVmfsDatastoreExpandOptionsResponse, error) { - var reqBody, resBody QueryVmfsDatastoreExpandOptionsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryVmfsDatastoreExtendOptionsBody struct { - Req *types.QueryVmfsDatastoreExtendOptions `xml:"urn:vim25 QueryVmfsDatastoreExtendOptions,omitempty"` - Res *types.QueryVmfsDatastoreExtendOptionsResponse `xml:"urn:vim25 QueryVmfsDatastoreExtendOptionsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryVmfsDatastoreExtendOptionsBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryVmfsDatastoreExtendOptions(ctx context.Context, r soap.RoundTripper, req *types.QueryVmfsDatastoreExtendOptions) (*types.QueryVmfsDatastoreExtendOptionsResponse, error) { - var reqBody, resBody QueryVmfsDatastoreExtendOptionsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryVnicStatusBody struct { - Req *types.QueryVnicStatus `xml:"urn:vim25 QueryVnicStatus,omitempty"` - Res *types.QueryVnicStatusResponse `xml:"urn:vim25 QueryVnicStatusResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryVnicStatusBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryVnicStatus(ctx context.Context, r soap.RoundTripper, req *types.QueryVnicStatus) (*types.QueryVnicStatusResponse, error) { - var reqBody, resBody QueryVnicStatusBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryVsanObjectUuidsByFilterBody struct { - Req *types.QueryVsanObjectUuidsByFilter `xml:"urn:vim25 QueryVsanObjectUuidsByFilter,omitempty"` - Res *types.QueryVsanObjectUuidsByFilterResponse `xml:"urn:vim25 QueryVsanObjectUuidsByFilterResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryVsanObjectUuidsByFilterBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryVsanObjectUuidsByFilter(ctx context.Context, r soap.RoundTripper, req *types.QueryVsanObjectUuidsByFilter) (*types.QueryVsanObjectUuidsByFilterResponse, error) { - var reqBody, resBody QueryVsanObjectUuidsByFilterBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryVsanObjectsBody struct { - Req *types.QueryVsanObjects `xml:"urn:vim25 QueryVsanObjects,omitempty"` - Res *types.QueryVsanObjectsResponse `xml:"urn:vim25 QueryVsanObjectsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryVsanObjectsBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryVsanObjects(ctx context.Context, r soap.RoundTripper, req *types.QueryVsanObjects) (*types.QueryVsanObjectsResponse, error) { - var reqBody, resBody QueryVsanObjectsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryVsanStatisticsBody struct { - Req *types.QueryVsanStatistics `xml:"urn:vim25 QueryVsanStatistics,omitempty"` - Res *types.QueryVsanStatisticsResponse `xml:"urn:vim25 QueryVsanStatisticsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryVsanStatisticsBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryVsanStatistics(ctx context.Context, r soap.RoundTripper, req *types.QueryVsanStatistics) (*types.QueryVsanStatisticsResponse, error) { - var reqBody, resBody QueryVsanStatisticsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type QueryVsanUpgradeStatusBody struct { - Req *types.QueryVsanUpgradeStatus `xml:"urn:vim25 QueryVsanUpgradeStatus,omitempty"` - Res *types.QueryVsanUpgradeStatusResponse `xml:"urn:vim25 QueryVsanUpgradeStatusResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *QueryVsanUpgradeStatusBody) Fault() *soap.Fault { return b.Fault_ } - -func QueryVsanUpgradeStatus(ctx context.Context, r soap.RoundTripper, req *types.QueryVsanUpgradeStatus) (*types.QueryVsanUpgradeStatusResponse, error) { - var reqBody, resBody QueryVsanUpgradeStatusBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ReadEnvironmentVariableInGuestBody struct { - Req *types.ReadEnvironmentVariableInGuest `xml:"urn:vim25 ReadEnvironmentVariableInGuest,omitempty"` - Res *types.ReadEnvironmentVariableInGuestResponse `xml:"urn:vim25 ReadEnvironmentVariableInGuestResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ReadEnvironmentVariableInGuestBody) Fault() *soap.Fault { return b.Fault_ } - -func ReadEnvironmentVariableInGuest(ctx context.Context, r soap.RoundTripper, req *types.ReadEnvironmentVariableInGuest) (*types.ReadEnvironmentVariableInGuestResponse, error) { - var reqBody, resBody ReadEnvironmentVariableInGuestBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ReadNextEventsBody struct { - Req *types.ReadNextEvents `xml:"urn:vim25 ReadNextEvents,omitempty"` - Res *types.ReadNextEventsResponse `xml:"urn:vim25 ReadNextEventsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ReadNextEventsBody) Fault() *soap.Fault { return b.Fault_ } - -func ReadNextEvents(ctx context.Context, r soap.RoundTripper, req *types.ReadNextEvents) (*types.ReadNextEventsResponse, error) { - var reqBody, resBody ReadNextEventsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ReadNextTasksBody struct { - Req *types.ReadNextTasks `xml:"urn:vim25 ReadNextTasks,omitempty"` - Res *types.ReadNextTasksResponse `xml:"urn:vim25 ReadNextTasksResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ReadNextTasksBody) Fault() *soap.Fault { return b.Fault_ } - -func ReadNextTasks(ctx context.Context, r soap.RoundTripper, req *types.ReadNextTasks) (*types.ReadNextTasksResponse, error) { - var reqBody, resBody ReadNextTasksBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ReadPreviousEventsBody struct { - Req *types.ReadPreviousEvents `xml:"urn:vim25 ReadPreviousEvents,omitempty"` - Res *types.ReadPreviousEventsResponse `xml:"urn:vim25 ReadPreviousEventsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ReadPreviousEventsBody) Fault() *soap.Fault { return b.Fault_ } - -func ReadPreviousEvents(ctx context.Context, r soap.RoundTripper, req *types.ReadPreviousEvents) (*types.ReadPreviousEventsResponse, error) { - var reqBody, resBody ReadPreviousEventsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ReadPreviousTasksBody struct { - Req *types.ReadPreviousTasks `xml:"urn:vim25 ReadPreviousTasks,omitempty"` - Res *types.ReadPreviousTasksResponse `xml:"urn:vim25 ReadPreviousTasksResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ReadPreviousTasksBody) Fault() *soap.Fault { return b.Fault_ } - -func ReadPreviousTasks(ctx context.Context, r soap.RoundTripper, req *types.ReadPreviousTasks) (*types.ReadPreviousTasksResponse, error) { - var reqBody, resBody ReadPreviousTasksBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RebootGuestBody struct { - Req *types.RebootGuest `xml:"urn:vim25 RebootGuest,omitempty"` - Res *types.RebootGuestResponse `xml:"urn:vim25 RebootGuestResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RebootGuestBody) Fault() *soap.Fault { return b.Fault_ } - -func RebootGuest(ctx context.Context, r soap.RoundTripper, req *types.RebootGuest) (*types.RebootGuestResponse, error) { - var reqBody, resBody RebootGuestBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RebootHost_TaskBody struct { - Req *types.RebootHost_Task `xml:"urn:vim25 RebootHost_Task,omitempty"` - Res *types.RebootHost_TaskResponse `xml:"urn:vim25 RebootHost_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RebootHost_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func RebootHost_Task(ctx context.Context, r soap.RoundTripper, req *types.RebootHost_Task) (*types.RebootHost_TaskResponse, error) { - var reqBody, resBody RebootHost_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RecommendDatastoresBody struct { - Req *types.RecommendDatastores `xml:"urn:vim25 RecommendDatastores,omitempty"` - Res *types.RecommendDatastoresResponse `xml:"urn:vim25 RecommendDatastoresResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RecommendDatastoresBody) Fault() *soap.Fault { return b.Fault_ } - -func RecommendDatastores(ctx context.Context, r soap.RoundTripper, req *types.RecommendDatastores) (*types.RecommendDatastoresResponse, error) { - var reqBody, resBody RecommendDatastoresBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RecommendHostsForVmBody struct { - Req *types.RecommendHostsForVm `xml:"urn:vim25 RecommendHostsForVm,omitempty"` - Res *types.RecommendHostsForVmResponse `xml:"urn:vim25 RecommendHostsForVmResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RecommendHostsForVmBody) Fault() *soap.Fault { return b.Fault_ } - -func RecommendHostsForVm(ctx context.Context, r soap.RoundTripper, req *types.RecommendHostsForVm) (*types.RecommendHostsForVmResponse, error) { - var reqBody, resBody RecommendHostsForVmBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RecommissionVsanNode_TaskBody struct { - Req *types.RecommissionVsanNode_Task `xml:"urn:vim25 RecommissionVsanNode_Task,omitempty"` - Res *types.RecommissionVsanNode_TaskResponse `xml:"urn:vim25 RecommissionVsanNode_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RecommissionVsanNode_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func RecommissionVsanNode_Task(ctx context.Context, r soap.RoundTripper, req *types.RecommissionVsanNode_Task) (*types.RecommissionVsanNode_TaskResponse, error) { - var reqBody, resBody RecommissionVsanNode_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ReconfigVM_TaskBody struct { - Req *types.ReconfigVM_Task `xml:"urn:vim25 ReconfigVM_Task,omitempty"` - Res *types.ReconfigVM_TaskResponse `xml:"urn:vim25 ReconfigVM_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ReconfigVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ReconfigVM_Task(ctx context.Context, r soap.RoundTripper, req *types.ReconfigVM_Task) (*types.ReconfigVM_TaskResponse, error) { - var reqBody, resBody ReconfigVM_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ReconfigurationSatisfiableBody struct { - Req *types.ReconfigurationSatisfiable `xml:"urn:vim25 ReconfigurationSatisfiable,omitempty"` - Res *types.ReconfigurationSatisfiableResponse `xml:"urn:vim25 ReconfigurationSatisfiableResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ReconfigurationSatisfiableBody) Fault() *soap.Fault { return b.Fault_ } - -func ReconfigurationSatisfiable(ctx context.Context, r soap.RoundTripper, req *types.ReconfigurationSatisfiable) (*types.ReconfigurationSatisfiableResponse, error) { - var reqBody, resBody ReconfigurationSatisfiableBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ReconfigureAlarmBody struct { - Req *types.ReconfigureAlarm `xml:"urn:vim25 ReconfigureAlarm,omitempty"` - Res *types.ReconfigureAlarmResponse `xml:"urn:vim25 ReconfigureAlarmResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ReconfigureAlarmBody) Fault() *soap.Fault { return b.Fault_ } - -func ReconfigureAlarm(ctx context.Context, r soap.RoundTripper, req *types.ReconfigureAlarm) (*types.ReconfigureAlarmResponse, error) { - var reqBody, resBody ReconfigureAlarmBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ReconfigureAutostartBody struct { - Req *types.ReconfigureAutostart `xml:"urn:vim25 ReconfigureAutostart,omitempty"` - Res *types.ReconfigureAutostartResponse `xml:"urn:vim25 ReconfigureAutostartResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ReconfigureAutostartBody) Fault() *soap.Fault { return b.Fault_ } - -func ReconfigureAutostart(ctx context.Context, r soap.RoundTripper, req *types.ReconfigureAutostart) (*types.ReconfigureAutostartResponse, error) { - var reqBody, resBody ReconfigureAutostartBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ReconfigureCluster_TaskBody struct { - Req *types.ReconfigureCluster_Task `xml:"urn:vim25 ReconfigureCluster_Task,omitempty"` - Res *types.ReconfigureCluster_TaskResponse `xml:"urn:vim25 ReconfigureCluster_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ReconfigureCluster_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ReconfigureCluster_Task(ctx context.Context, r soap.RoundTripper, req *types.ReconfigureCluster_Task) (*types.ReconfigureCluster_TaskResponse, error) { - var reqBody, resBody ReconfigureCluster_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ReconfigureComputeResource_TaskBody struct { - Req *types.ReconfigureComputeResource_Task `xml:"urn:vim25 ReconfigureComputeResource_Task,omitempty"` - Res *types.ReconfigureComputeResource_TaskResponse `xml:"urn:vim25 ReconfigureComputeResource_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ReconfigureComputeResource_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ReconfigureComputeResource_Task(ctx context.Context, r soap.RoundTripper, req *types.ReconfigureComputeResource_Task) (*types.ReconfigureComputeResource_TaskResponse, error) { - var reqBody, resBody ReconfigureComputeResource_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ReconfigureDVPort_TaskBody struct { - Req *types.ReconfigureDVPort_Task `xml:"urn:vim25 ReconfigureDVPort_Task,omitempty"` - Res *types.ReconfigureDVPort_TaskResponse `xml:"urn:vim25 ReconfigureDVPort_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ReconfigureDVPort_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ReconfigureDVPort_Task(ctx context.Context, r soap.RoundTripper, req *types.ReconfigureDVPort_Task) (*types.ReconfigureDVPort_TaskResponse, error) { - var reqBody, resBody ReconfigureDVPort_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ReconfigureDVPortgroup_TaskBody struct { - Req *types.ReconfigureDVPortgroup_Task `xml:"urn:vim25 ReconfigureDVPortgroup_Task,omitempty"` - Res *types.ReconfigureDVPortgroup_TaskResponse `xml:"urn:vim25 ReconfigureDVPortgroup_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ReconfigureDVPortgroup_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ReconfigureDVPortgroup_Task(ctx context.Context, r soap.RoundTripper, req *types.ReconfigureDVPortgroup_Task) (*types.ReconfigureDVPortgroup_TaskResponse, error) { - var reqBody, resBody ReconfigureDVPortgroup_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ReconfigureDatacenter_TaskBody struct { - Req *types.ReconfigureDatacenter_Task `xml:"urn:vim25 ReconfigureDatacenter_Task,omitempty"` - Res *types.ReconfigureDatacenter_TaskResponse `xml:"urn:vim25 ReconfigureDatacenter_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ReconfigureDatacenter_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ReconfigureDatacenter_Task(ctx context.Context, r soap.RoundTripper, req *types.ReconfigureDatacenter_Task) (*types.ReconfigureDatacenter_TaskResponse, error) { - var reqBody, resBody ReconfigureDatacenter_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ReconfigureDomObjectBody struct { - Req *types.ReconfigureDomObject `xml:"urn:vim25 ReconfigureDomObject,omitempty"` - Res *types.ReconfigureDomObjectResponse `xml:"urn:vim25 ReconfigureDomObjectResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ReconfigureDomObjectBody) Fault() *soap.Fault { return b.Fault_ } - -func ReconfigureDomObject(ctx context.Context, r soap.RoundTripper, req *types.ReconfigureDomObject) (*types.ReconfigureDomObjectResponse, error) { - var reqBody, resBody ReconfigureDomObjectBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ReconfigureDvs_TaskBody struct { - Req *types.ReconfigureDvs_Task `xml:"urn:vim25 ReconfigureDvs_Task,omitempty"` - Res *types.ReconfigureDvs_TaskResponse `xml:"urn:vim25 ReconfigureDvs_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ReconfigureDvs_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ReconfigureDvs_Task(ctx context.Context, r soap.RoundTripper, req *types.ReconfigureDvs_Task) (*types.ReconfigureDvs_TaskResponse, error) { - var reqBody, resBody ReconfigureDvs_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ReconfigureHostForDAS_TaskBody struct { - Req *types.ReconfigureHostForDAS_Task `xml:"urn:vim25 ReconfigureHostForDAS_Task,omitempty"` - Res *types.ReconfigureHostForDAS_TaskResponse `xml:"urn:vim25 ReconfigureHostForDAS_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ReconfigureHostForDAS_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ReconfigureHostForDAS_Task(ctx context.Context, r soap.RoundTripper, req *types.ReconfigureHostForDAS_Task) (*types.ReconfigureHostForDAS_TaskResponse, error) { - var reqBody, resBody ReconfigureHostForDAS_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ReconfigureScheduledTaskBody struct { - Req *types.ReconfigureScheduledTask `xml:"urn:vim25 ReconfigureScheduledTask,omitempty"` - Res *types.ReconfigureScheduledTaskResponse `xml:"urn:vim25 ReconfigureScheduledTaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ReconfigureScheduledTaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ReconfigureScheduledTask(ctx context.Context, r soap.RoundTripper, req *types.ReconfigureScheduledTask) (*types.ReconfigureScheduledTaskResponse, error) { - var reqBody, resBody ReconfigureScheduledTaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ReconfigureServiceConsoleReservationBody struct { - Req *types.ReconfigureServiceConsoleReservation `xml:"urn:vim25 ReconfigureServiceConsoleReservation,omitempty"` - Res *types.ReconfigureServiceConsoleReservationResponse `xml:"urn:vim25 ReconfigureServiceConsoleReservationResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ReconfigureServiceConsoleReservationBody) Fault() *soap.Fault { return b.Fault_ } - -func ReconfigureServiceConsoleReservation(ctx context.Context, r soap.RoundTripper, req *types.ReconfigureServiceConsoleReservation) (*types.ReconfigureServiceConsoleReservationResponse, error) { - var reqBody, resBody ReconfigureServiceConsoleReservationBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ReconfigureSnmpAgentBody struct { - Req *types.ReconfigureSnmpAgent `xml:"urn:vim25 ReconfigureSnmpAgent,omitempty"` - Res *types.ReconfigureSnmpAgentResponse `xml:"urn:vim25 ReconfigureSnmpAgentResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ReconfigureSnmpAgentBody) Fault() *soap.Fault { return b.Fault_ } - -func ReconfigureSnmpAgent(ctx context.Context, r soap.RoundTripper, req *types.ReconfigureSnmpAgent) (*types.ReconfigureSnmpAgentResponse, error) { - var reqBody, resBody ReconfigureSnmpAgentBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ReconfigureVirtualMachineReservationBody struct { - Req *types.ReconfigureVirtualMachineReservation `xml:"urn:vim25 ReconfigureVirtualMachineReservation,omitempty"` - Res *types.ReconfigureVirtualMachineReservationResponse `xml:"urn:vim25 ReconfigureVirtualMachineReservationResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ReconfigureVirtualMachineReservationBody) Fault() *soap.Fault { return b.Fault_ } - -func ReconfigureVirtualMachineReservation(ctx context.Context, r soap.RoundTripper, req *types.ReconfigureVirtualMachineReservation) (*types.ReconfigureVirtualMachineReservationResponse, error) { - var reqBody, resBody ReconfigureVirtualMachineReservationBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ReconnectHost_TaskBody struct { - Req *types.ReconnectHost_Task `xml:"urn:vim25 ReconnectHost_Task,omitempty"` - Res *types.ReconnectHost_TaskResponse `xml:"urn:vim25 ReconnectHost_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ReconnectHost_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ReconnectHost_Task(ctx context.Context, r soap.RoundTripper, req *types.ReconnectHost_Task) (*types.ReconnectHost_TaskResponse, error) { - var reqBody, resBody ReconnectHost_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RectifyDvsHost_TaskBody struct { - Req *types.RectifyDvsHost_Task `xml:"urn:vim25 RectifyDvsHost_Task,omitempty"` - Res *types.RectifyDvsHost_TaskResponse `xml:"urn:vim25 RectifyDvsHost_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RectifyDvsHost_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func RectifyDvsHost_Task(ctx context.Context, r soap.RoundTripper, req *types.RectifyDvsHost_Task) (*types.RectifyDvsHost_TaskResponse, error) { - var reqBody, resBody RectifyDvsHost_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RectifyDvsOnHost_TaskBody struct { - Req *types.RectifyDvsOnHost_Task `xml:"urn:vim25 RectifyDvsOnHost_Task,omitempty"` - Res *types.RectifyDvsOnHost_TaskResponse `xml:"urn:vim25 RectifyDvsOnHost_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RectifyDvsOnHost_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func RectifyDvsOnHost_Task(ctx context.Context, r soap.RoundTripper, req *types.RectifyDvsOnHost_Task) (*types.RectifyDvsOnHost_TaskResponse, error) { - var reqBody, resBody RectifyDvsOnHost_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RefreshBody struct { - Req *types.Refresh `xml:"urn:vim25 Refresh,omitempty"` - Res *types.RefreshResponse `xml:"urn:vim25 RefreshResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RefreshBody) Fault() *soap.Fault { return b.Fault_ } - -func Refresh(ctx context.Context, r soap.RoundTripper, req *types.Refresh) (*types.RefreshResponse, error) { - var reqBody, resBody RefreshBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RefreshDVPortStateBody struct { - Req *types.RefreshDVPortState `xml:"urn:vim25 RefreshDVPortState,omitempty"` - Res *types.RefreshDVPortStateResponse `xml:"urn:vim25 RefreshDVPortStateResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RefreshDVPortStateBody) Fault() *soap.Fault { return b.Fault_ } - -func RefreshDVPortState(ctx context.Context, r soap.RoundTripper, req *types.RefreshDVPortState) (*types.RefreshDVPortStateResponse, error) { - var reqBody, resBody RefreshDVPortStateBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RefreshDatastoreBody struct { - Req *types.RefreshDatastore `xml:"urn:vim25 RefreshDatastore,omitempty"` - Res *types.RefreshDatastoreResponse `xml:"urn:vim25 RefreshDatastoreResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RefreshDatastoreBody) Fault() *soap.Fault { return b.Fault_ } - -func RefreshDatastore(ctx context.Context, r soap.RoundTripper, req *types.RefreshDatastore) (*types.RefreshDatastoreResponse, error) { - var reqBody, resBody RefreshDatastoreBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RefreshDatastoreStorageInfoBody struct { - Req *types.RefreshDatastoreStorageInfo `xml:"urn:vim25 RefreshDatastoreStorageInfo,omitempty"` - Res *types.RefreshDatastoreStorageInfoResponse `xml:"urn:vim25 RefreshDatastoreStorageInfoResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RefreshDatastoreStorageInfoBody) Fault() *soap.Fault { return b.Fault_ } - -func RefreshDatastoreStorageInfo(ctx context.Context, r soap.RoundTripper, req *types.RefreshDatastoreStorageInfo) (*types.RefreshDatastoreStorageInfoResponse, error) { - var reqBody, resBody RefreshDatastoreStorageInfoBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RefreshDateTimeSystemBody struct { - Req *types.RefreshDateTimeSystem `xml:"urn:vim25 RefreshDateTimeSystem,omitempty"` - Res *types.RefreshDateTimeSystemResponse `xml:"urn:vim25 RefreshDateTimeSystemResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RefreshDateTimeSystemBody) Fault() *soap.Fault { return b.Fault_ } - -func RefreshDateTimeSystem(ctx context.Context, r soap.RoundTripper, req *types.RefreshDateTimeSystem) (*types.RefreshDateTimeSystemResponse, error) { - var reqBody, resBody RefreshDateTimeSystemBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RefreshFirewallBody struct { - Req *types.RefreshFirewall `xml:"urn:vim25 RefreshFirewall,omitempty"` - Res *types.RefreshFirewallResponse `xml:"urn:vim25 RefreshFirewallResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RefreshFirewallBody) Fault() *soap.Fault { return b.Fault_ } - -func RefreshFirewall(ctx context.Context, r soap.RoundTripper, req *types.RefreshFirewall) (*types.RefreshFirewallResponse, error) { - var reqBody, resBody RefreshFirewallBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RefreshGraphicsManagerBody struct { - Req *types.RefreshGraphicsManager `xml:"urn:vim25 RefreshGraphicsManager,omitempty"` - Res *types.RefreshGraphicsManagerResponse `xml:"urn:vim25 RefreshGraphicsManagerResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RefreshGraphicsManagerBody) Fault() *soap.Fault { return b.Fault_ } - -func RefreshGraphicsManager(ctx context.Context, r soap.RoundTripper, req *types.RefreshGraphicsManager) (*types.RefreshGraphicsManagerResponse, error) { - var reqBody, resBody RefreshGraphicsManagerBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RefreshHealthStatusSystemBody struct { - Req *types.RefreshHealthStatusSystem `xml:"urn:vim25 RefreshHealthStatusSystem,omitempty"` - Res *types.RefreshHealthStatusSystemResponse `xml:"urn:vim25 RefreshHealthStatusSystemResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RefreshHealthStatusSystemBody) Fault() *soap.Fault { return b.Fault_ } - -func RefreshHealthStatusSystem(ctx context.Context, r soap.RoundTripper, req *types.RefreshHealthStatusSystem) (*types.RefreshHealthStatusSystemResponse, error) { - var reqBody, resBody RefreshHealthStatusSystemBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RefreshNetworkSystemBody struct { - Req *types.RefreshNetworkSystem `xml:"urn:vim25 RefreshNetworkSystem,omitempty"` - Res *types.RefreshNetworkSystemResponse `xml:"urn:vim25 RefreshNetworkSystemResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RefreshNetworkSystemBody) Fault() *soap.Fault { return b.Fault_ } - -func RefreshNetworkSystem(ctx context.Context, r soap.RoundTripper, req *types.RefreshNetworkSystem) (*types.RefreshNetworkSystemResponse, error) { - var reqBody, resBody RefreshNetworkSystemBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RefreshRecommendationBody struct { - Req *types.RefreshRecommendation `xml:"urn:vim25 RefreshRecommendation,omitempty"` - Res *types.RefreshRecommendationResponse `xml:"urn:vim25 RefreshRecommendationResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RefreshRecommendationBody) Fault() *soap.Fault { return b.Fault_ } - -func RefreshRecommendation(ctx context.Context, r soap.RoundTripper, req *types.RefreshRecommendation) (*types.RefreshRecommendationResponse, error) { - var reqBody, resBody RefreshRecommendationBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RefreshRuntimeBody struct { - Req *types.RefreshRuntime `xml:"urn:vim25 RefreshRuntime,omitempty"` - Res *types.RefreshRuntimeResponse `xml:"urn:vim25 RefreshRuntimeResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RefreshRuntimeBody) Fault() *soap.Fault { return b.Fault_ } - -func RefreshRuntime(ctx context.Context, r soap.RoundTripper, req *types.RefreshRuntime) (*types.RefreshRuntimeResponse, error) { - var reqBody, resBody RefreshRuntimeBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RefreshServicesBody struct { - Req *types.RefreshServices `xml:"urn:vim25 RefreshServices,omitempty"` - Res *types.RefreshServicesResponse `xml:"urn:vim25 RefreshServicesResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RefreshServicesBody) Fault() *soap.Fault { return b.Fault_ } - -func RefreshServices(ctx context.Context, r soap.RoundTripper, req *types.RefreshServices) (*types.RefreshServicesResponse, error) { - var reqBody, resBody RefreshServicesBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RefreshStorageDrsRecommendationBody struct { - Req *types.RefreshStorageDrsRecommendation `xml:"urn:vim25 RefreshStorageDrsRecommendation,omitempty"` - Res *types.RefreshStorageDrsRecommendationResponse `xml:"urn:vim25 RefreshStorageDrsRecommendationResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RefreshStorageDrsRecommendationBody) Fault() *soap.Fault { return b.Fault_ } - -func RefreshStorageDrsRecommendation(ctx context.Context, r soap.RoundTripper, req *types.RefreshStorageDrsRecommendation) (*types.RefreshStorageDrsRecommendationResponse, error) { - var reqBody, resBody RefreshStorageDrsRecommendationBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RefreshStorageInfoBody struct { - Req *types.RefreshStorageInfo `xml:"urn:vim25 RefreshStorageInfo,omitempty"` - Res *types.RefreshStorageInfoResponse `xml:"urn:vim25 RefreshStorageInfoResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RefreshStorageInfoBody) Fault() *soap.Fault { return b.Fault_ } - -func RefreshStorageInfo(ctx context.Context, r soap.RoundTripper, req *types.RefreshStorageInfo) (*types.RefreshStorageInfoResponse, error) { - var reqBody, resBody RefreshStorageInfoBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RefreshStorageSystemBody struct { - Req *types.RefreshStorageSystem `xml:"urn:vim25 RefreshStorageSystem,omitempty"` - Res *types.RefreshStorageSystemResponse `xml:"urn:vim25 RefreshStorageSystemResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RefreshStorageSystemBody) Fault() *soap.Fault { return b.Fault_ } - -func RefreshStorageSystem(ctx context.Context, r soap.RoundTripper, req *types.RefreshStorageSystem) (*types.RefreshStorageSystemResponse, error) { - var reqBody, resBody RefreshStorageSystemBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RegisterChildVM_TaskBody struct { - Req *types.RegisterChildVM_Task `xml:"urn:vim25 RegisterChildVM_Task,omitempty"` - Res *types.RegisterChildVM_TaskResponse `xml:"urn:vim25 RegisterChildVM_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RegisterChildVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func RegisterChildVM_Task(ctx context.Context, r soap.RoundTripper, req *types.RegisterChildVM_Task) (*types.RegisterChildVM_TaskResponse, error) { - var reqBody, resBody RegisterChildVM_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RegisterExtensionBody struct { - Req *types.RegisterExtension `xml:"urn:vim25 RegisterExtension,omitempty"` - Res *types.RegisterExtensionResponse `xml:"urn:vim25 RegisterExtensionResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RegisterExtensionBody) Fault() *soap.Fault { return b.Fault_ } - -func RegisterExtension(ctx context.Context, r soap.RoundTripper, req *types.RegisterExtension) (*types.RegisterExtensionResponse, error) { - var reqBody, resBody RegisterExtensionBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RegisterVM_TaskBody struct { - Req *types.RegisterVM_Task `xml:"urn:vim25 RegisterVM_Task,omitempty"` - Res *types.RegisterVM_TaskResponse `xml:"urn:vim25 RegisterVM_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RegisterVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func RegisterVM_Task(ctx context.Context, r soap.RoundTripper, req *types.RegisterVM_Task) (*types.RegisterVM_TaskResponse, error) { - var reqBody, resBody RegisterVM_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ReleaseCredentialsInGuestBody struct { - Req *types.ReleaseCredentialsInGuest `xml:"urn:vim25 ReleaseCredentialsInGuest,omitempty"` - Res *types.ReleaseCredentialsInGuestResponse `xml:"urn:vim25 ReleaseCredentialsInGuestResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ReleaseCredentialsInGuestBody) Fault() *soap.Fault { return b.Fault_ } - -func ReleaseCredentialsInGuest(ctx context.Context, r soap.RoundTripper, req *types.ReleaseCredentialsInGuest) (*types.ReleaseCredentialsInGuestResponse, error) { - var reqBody, resBody ReleaseCredentialsInGuestBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ReleaseIpAllocationBody struct { - Req *types.ReleaseIpAllocation `xml:"urn:vim25 ReleaseIpAllocation,omitempty"` - Res *types.ReleaseIpAllocationResponse `xml:"urn:vim25 ReleaseIpAllocationResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ReleaseIpAllocationBody) Fault() *soap.Fault { return b.Fault_ } - -func ReleaseIpAllocation(ctx context.Context, r soap.RoundTripper, req *types.ReleaseIpAllocation) (*types.ReleaseIpAllocationResponse, error) { - var reqBody, resBody ReleaseIpAllocationBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ReloadBody struct { - Req *types.Reload `xml:"urn:vim25 Reload,omitempty"` - Res *types.ReloadResponse `xml:"urn:vim25 ReloadResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ReloadBody) Fault() *soap.Fault { return b.Fault_ } - -func Reload(ctx context.Context, r soap.RoundTripper, req *types.Reload) (*types.ReloadResponse, error) { - var reqBody, resBody ReloadBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RelocateVM_TaskBody struct { - Req *types.RelocateVM_Task `xml:"urn:vim25 RelocateVM_Task,omitempty"` - Res *types.RelocateVM_TaskResponse `xml:"urn:vim25 RelocateVM_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RelocateVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func RelocateVM_Task(ctx context.Context, r soap.RoundTripper, req *types.RelocateVM_Task) (*types.RelocateVM_TaskResponse, error) { - var reqBody, resBody RelocateVM_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RemoveAlarmBody struct { - Req *types.RemoveAlarm `xml:"urn:vim25 RemoveAlarm,omitempty"` - Res *types.RemoveAlarmResponse `xml:"urn:vim25 RemoveAlarmResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RemoveAlarmBody) Fault() *soap.Fault { return b.Fault_ } - -func RemoveAlarm(ctx context.Context, r soap.RoundTripper, req *types.RemoveAlarm) (*types.RemoveAlarmResponse, error) { - var reqBody, resBody RemoveAlarmBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RemoveAllSnapshots_TaskBody struct { - Req *types.RemoveAllSnapshots_Task `xml:"urn:vim25 RemoveAllSnapshots_Task,omitempty"` - Res *types.RemoveAllSnapshots_TaskResponse `xml:"urn:vim25 RemoveAllSnapshots_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RemoveAllSnapshots_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func RemoveAllSnapshots_Task(ctx context.Context, r soap.RoundTripper, req *types.RemoveAllSnapshots_Task) (*types.RemoveAllSnapshots_TaskResponse, error) { - var reqBody, resBody RemoveAllSnapshots_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RemoveAssignedLicenseBody struct { - Req *types.RemoveAssignedLicense `xml:"urn:vim25 RemoveAssignedLicense,omitempty"` - Res *types.RemoveAssignedLicenseResponse `xml:"urn:vim25 RemoveAssignedLicenseResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RemoveAssignedLicenseBody) Fault() *soap.Fault { return b.Fault_ } - -func RemoveAssignedLicense(ctx context.Context, r soap.RoundTripper, req *types.RemoveAssignedLicense) (*types.RemoveAssignedLicenseResponse, error) { - var reqBody, resBody RemoveAssignedLicenseBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RemoveAuthorizationRoleBody struct { - Req *types.RemoveAuthorizationRole `xml:"urn:vim25 RemoveAuthorizationRole,omitempty"` - Res *types.RemoveAuthorizationRoleResponse `xml:"urn:vim25 RemoveAuthorizationRoleResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RemoveAuthorizationRoleBody) Fault() *soap.Fault { return b.Fault_ } - -func RemoveAuthorizationRole(ctx context.Context, r soap.RoundTripper, req *types.RemoveAuthorizationRole) (*types.RemoveAuthorizationRoleResponse, error) { - var reqBody, resBody RemoveAuthorizationRoleBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RemoveCustomFieldDefBody struct { - Req *types.RemoveCustomFieldDef `xml:"urn:vim25 RemoveCustomFieldDef,omitempty"` - Res *types.RemoveCustomFieldDefResponse `xml:"urn:vim25 RemoveCustomFieldDefResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RemoveCustomFieldDefBody) Fault() *soap.Fault { return b.Fault_ } - -func RemoveCustomFieldDef(ctx context.Context, r soap.RoundTripper, req *types.RemoveCustomFieldDef) (*types.RemoveCustomFieldDefResponse, error) { - var reqBody, resBody RemoveCustomFieldDefBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RemoveDatastoreBody struct { - Req *types.RemoveDatastore `xml:"urn:vim25 RemoveDatastore,omitempty"` - Res *types.RemoveDatastoreResponse `xml:"urn:vim25 RemoveDatastoreResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RemoveDatastoreBody) Fault() *soap.Fault { return b.Fault_ } - -func RemoveDatastore(ctx context.Context, r soap.RoundTripper, req *types.RemoveDatastore) (*types.RemoveDatastoreResponse, error) { - var reqBody, resBody RemoveDatastoreBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RemoveDatastoreEx_TaskBody struct { - Req *types.RemoveDatastoreEx_Task `xml:"urn:vim25 RemoveDatastoreEx_Task,omitempty"` - Res *types.RemoveDatastoreEx_TaskResponse `xml:"urn:vim25 RemoveDatastoreEx_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RemoveDatastoreEx_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func RemoveDatastoreEx_Task(ctx context.Context, r soap.RoundTripper, req *types.RemoveDatastoreEx_Task) (*types.RemoveDatastoreEx_TaskResponse, error) { - var reqBody, resBody RemoveDatastoreEx_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RemoveDiskMapping_TaskBody struct { - Req *types.RemoveDiskMapping_Task `xml:"urn:vim25 RemoveDiskMapping_Task,omitempty"` - Res *types.RemoveDiskMapping_TaskResponse `xml:"urn:vim25 RemoveDiskMapping_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RemoveDiskMapping_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func RemoveDiskMapping_Task(ctx context.Context, r soap.RoundTripper, req *types.RemoveDiskMapping_Task) (*types.RemoveDiskMapping_TaskResponse, error) { - var reqBody, resBody RemoveDiskMapping_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RemoveDisk_TaskBody struct { - Req *types.RemoveDisk_Task `xml:"urn:vim25 RemoveDisk_Task,omitempty"` - Res *types.RemoveDisk_TaskResponse `xml:"urn:vim25 RemoveDisk_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RemoveDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func RemoveDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.RemoveDisk_Task) (*types.RemoveDisk_TaskResponse, error) { - var reqBody, resBody RemoveDisk_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RemoveEntityPermissionBody struct { - Req *types.RemoveEntityPermission `xml:"urn:vim25 RemoveEntityPermission,omitempty"` - Res *types.RemoveEntityPermissionResponse `xml:"urn:vim25 RemoveEntityPermissionResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RemoveEntityPermissionBody) Fault() *soap.Fault { return b.Fault_ } - -func RemoveEntityPermission(ctx context.Context, r soap.RoundTripper, req *types.RemoveEntityPermission) (*types.RemoveEntityPermissionResponse, error) { - var reqBody, resBody RemoveEntityPermissionBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RemoveGroupBody struct { - Req *types.RemoveGroup `xml:"urn:vim25 RemoveGroup,omitempty"` - Res *types.RemoveGroupResponse `xml:"urn:vim25 RemoveGroupResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RemoveGroupBody) Fault() *soap.Fault { return b.Fault_ } - -func RemoveGroup(ctx context.Context, r soap.RoundTripper, req *types.RemoveGroup) (*types.RemoveGroupResponse, error) { - var reqBody, resBody RemoveGroupBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RemoveGuestAliasBody struct { - Req *types.RemoveGuestAlias `xml:"urn:vim25 RemoveGuestAlias,omitempty"` - Res *types.RemoveGuestAliasResponse `xml:"urn:vim25 RemoveGuestAliasResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RemoveGuestAliasBody) Fault() *soap.Fault { return b.Fault_ } - -func RemoveGuestAlias(ctx context.Context, r soap.RoundTripper, req *types.RemoveGuestAlias) (*types.RemoveGuestAliasResponse, error) { - var reqBody, resBody RemoveGuestAliasBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RemoveGuestAliasByCertBody struct { - Req *types.RemoveGuestAliasByCert `xml:"urn:vim25 RemoveGuestAliasByCert,omitempty"` - Res *types.RemoveGuestAliasByCertResponse `xml:"urn:vim25 RemoveGuestAliasByCertResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RemoveGuestAliasByCertBody) Fault() *soap.Fault { return b.Fault_ } - -func RemoveGuestAliasByCert(ctx context.Context, r soap.RoundTripper, req *types.RemoveGuestAliasByCert) (*types.RemoveGuestAliasByCertResponse, error) { - var reqBody, resBody RemoveGuestAliasByCertBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RemoveInternetScsiSendTargetsBody struct { - Req *types.RemoveInternetScsiSendTargets `xml:"urn:vim25 RemoveInternetScsiSendTargets,omitempty"` - Res *types.RemoveInternetScsiSendTargetsResponse `xml:"urn:vim25 RemoveInternetScsiSendTargetsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RemoveInternetScsiSendTargetsBody) Fault() *soap.Fault { return b.Fault_ } - -func RemoveInternetScsiSendTargets(ctx context.Context, r soap.RoundTripper, req *types.RemoveInternetScsiSendTargets) (*types.RemoveInternetScsiSendTargetsResponse, error) { - var reqBody, resBody RemoveInternetScsiSendTargetsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RemoveInternetScsiStaticTargetsBody struct { - Req *types.RemoveInternetScsiStaticTargets `xml:"urn:vim25 RemoveInternetScsiStaticTargets,omitempty"` - Res *types.RemoveInternetScsiStaticTargetsResponse `xml:"urn:vim25 RemoveInternetScsiStaticTargetsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RemoveInternetScsiStaticTargetsBody) Fault() *soap.Fault { return b.Fault_ } - -func RemoveInternetScsiStaticTargets(ctx context.Context, r soap.RoundTripper, req *types.RemoveInternetScsiStaticTargets) (*types.RemoveInternetScsiStaticTargetsResponse, error) { - var reqBody, resBody RemoveInternetScsiStaticTargetsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RemoveLicenseBody struct { - Req *types.RemoveLicense `xml:"urn:vim25 RemoveLicense,omitempty"` - Res *types.RemoveLicenseResponse `xml:"urn:vim25 RemoveLicenseResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RemoveLicenseBody) Fault() *soap.Fault { return b.Fault_ } - -func RemoveLicense(ctx context.Context, r soap.RoundTripper, req *types.RemoveLicense) (*types.RemoveLicenseResponse, error) { - var reqBody, resBody RemoveLicenseBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RemoveLicenseLabelBody struct { - Req *types.RemoveLicenseLabel `xml:"urn:vim25 RemoveLicenseLabel,omitempty"` - Res *types.RemoveLicenseLabelResponse `xml:"urn:vim25 RemoveLicenseLabelResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RemoveLicenseLabelBody) Fault() *soap.Fault { return b.Fault_ } - -func RemoveLicenseLabel(ctx context.Context, r soap.RoundTripper, req *types.RemoveLicenseLabel) (*types.RemoveLicenseLabelResponse, error) { - var reqBody, resBody RemoveLicenseLabelBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RemoveNetworkResourcePoolBody struct { - Req *types.RemoveNetworkResourcePool `xml:"urn:vim25 RemoveNetworkResourcePool,omitempty"` - Res *types.RemoveNetworkResourcePoolResponse `xml:"urn:vim25 RemoveNetworkResourcePoolResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RemoveNetworkResourcePoolBody) Fault() *soap.Fault { return b.Fault_ } - -func RemoveNetworkResourcePool(ctx context.Context, r soap.RoundTripper, req *types.RemoveNetworkResourcePool) (*types.RemoveNetworkResourcePoolResponse, error) { - var reqBody, resBody RemoveNetworkResourcePoolBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RemovePerfIntervalBody struct { - Req *types.RemovePerfInterval `xml:"urn:vim25 RemovePerfInterval,omitempty"` - Res *types.RemovePerfIntervalResponse `xml:"urn:vim25 RemovePerfIntervalResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RemovePerfIntervalBody) Fault() *soap.Fault { return b.Fault_ } - -func RemovePerfInterval(ctx context.Context, r soap.RoundTripper, req *types.RemovePerfInterval) (*types.RemovePerfIntervalResponse, error) { - var reqBody, resBody RemovePerfIntervalBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RemovePortGroupBody struct { - Req *types.RemovePortGroup `xml:"urn:vim25 RemovePortGroup,omitempty"` - Res *types.RemovePortGroupResponse `xml:"urn:vim25 RemovePortGroupResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RemovePortGroupBody) Fault() *soap.Fault { return b.Fault_ } - -func RemovePortGroup(ctx context.Context, r soap.RoundTripper, req *types.RemovePortGroup) (*types.RemovePortGroupResponse, error) { - var reqBody, resBody RemovePortGroupBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RemoveScheduledTaskBody struct { - Req *types.RemoveScheduledTask `xml:"urn:vim25 RemoveScheduledTask,omitempty"` - Res *types.RemoveScheduledTaskResponse `xml:"urn:vim25 RemoveScheduledTaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RemoveScheduledTaskBody) Fault() *soap.Fault { return b.Fault_ } - -func RemoveScheduledTask(ctx context.Context, r soap.RoundTripper, req *types.RemoveScheduledTask) (*types.RemoveScheduledTaskResponse, error) { - var reqBody, resBody RemoveScheduledTaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RemoveServiceConsoleVirtualNicBody struct { - Req *types.RemoveServiceConsoleVirtualNic `xml:"urn:vim25 RemoveServiceConsoleVirtualNic,omitempty"` - Res *types.RemoveServiceConsoleVirtualNicResponse `xml:"urn:vim25 RemoveServiceConsoleVirtualNicResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RemoveServiceConsoleVirtualNicBody) Fault() *soap.Fault { return b.Fault_ } - -func RemoveServiceConsoleVirtualNic(ctx context.Context, r soap.RoundTripper, req *types.RemoveServiceConsoleVirtualNic) (*types.RemoveServiceConsoleVirtualNicResponse, error) { - var reqBody, resBody RemoveServiceConsoleVirtualNicBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RemoveSmartCardTrustAnchorBody struct { - Req *types.RemoveSmartCardTrustAnchor `xml:"urn:vim25 RemoveSmartCardTrustAnchor,omitempty"` - Res *types.RemoveSmartCardTrustAnchorResponse `xml:"urn:vim25 RemoveSmartCardTrustAnchorResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RemoveSmartCardTrustAnchorBody) Fault() *soap.Fault { return b.Fault_ } - -func RemoveSmartCardTrustAnchor(ctx context.Context, r soap.RoundTripper, req *types.RemoveSmartCardTrustAnchor) (*types.RemoveSmartCardTrustAnchorResponse, error) { - var reqBody, resBody RemoveSmartCardTrustAnchorBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RemoveSmartCardTrustAnchorByFingerprintBody struct { - Req *types.RemoveSmartCardTrustAnchorByFingerprint `xml:"urn:vim25 RemoveSmartCardTrustAnchorByFingerprint,omitempty"` - Res *types.RemoveSmartCardTrustAnchorByFingerprintResponse `xml:"urn:vim25 RemoveSmartCardTrustAnchorByFingerprintResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RemoveSmartCardTrustAnchorByFingerprintBody) Fault() *soap.Fault { return b.Fault_ } - -func RemoveSmartCardTrustAnchorByFingerprint(ctx context.Context, r soap.RoundTripper, req *types.RemoveSmartCardTrustAnchorByFingerprint) (*types.RemoveSmartCardTrustAnchorByFingerprintResponse, error) { - var reqBody, resBody RemoveSmartCardTrustAnchorByFingerprintBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RemoveSnapshot_TaskBody struct { - Req *types.RemoveSnapshot_Task `xml:"urn:vim25 RemoveSnapshot_Task,omitempty"` - Res *types.RemoveSnapshot_TaskResponse `xml:"urn:vim25 RemoveSnapshot_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RemoveSnapshot_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func RemoveSnapshot_Task(ctx context.Context, r soap.RoundTripper, req *types.RemoveSnapshot_Task) (*types.RemoveSnapshot_TaskResponse, error) { - var reqBody, resBody RemoveSnapshot_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RemoveUserBody struct { - Req *types.RemoveUser `xml:"urn:vim25 RemoveUser,omitempty"` - Res *types.RemoveUserResponse `xml:"urn:vim25 RemoveUserResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RemoveUserBody) Fault() *soap.Fault { return b.Fault_ } - -func RemoveUser(ctx context.Context, r soap.RoundTripper, req *types.RemoveUser) (*types.RemoveUserResponse, error) { - var reqBody, resBody RemoveUserBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RemoveVirtualNicBody struct { - Req *types.RemoveVirtualNic `xml:"urn:vim25 RemoveVirtualNic,omitempty"` - Res *types.RemoveVirtualNicResponse `xml:"urn:vim25 RemoveVirtualNicResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RemoveVirtualNicBody) Fault() *soap.Fault { return b.Fault_ } - -func RemoveVirtualNic(ctx context.Context, r soap.RoundTripper, req *types.RemoveVirtualNic) (*types.RemoveVirtualNicResponse, error) { - var reqBody, resBody RemoveVirtualNicBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RemoveVirtualSwitchBody struct { - Req *types.RemoveVirtualSwitch `xml:"urn:vim25 RemoveVirtualSwitch,omitempty"` - Res *types.RemoveVirtualSwitchResponse `xml:"urn:vim25 RemoveVirtualSwitchResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RemoveVirtualSwitchBody) Fault() *soap.Fault { return b.Fault_ } - -func RemoveVirtualSwitch(ctx context.Context, r soap.RoundTripper, req *types.RemoveVirtualSwitch) (*types.RemoveVirtualSwitchResponse, error) { - var reqBody, resBody RemoveVirtualSwitchBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RenameCustomFieldDefBody struct { - Req *types.RenameCustomFieldDef `xml:"urn:vim25 RenameCustomFieldDef,omitempty"` - Res *types.RenameCustomFieldDefResponse `xml:"urn:vim25 RenameCustomFieldDefResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RenameCustomFieldDefBody) Fault() *soap.Fault { return b.Fault_ } - -func RenameCustomFieldDef(ctx context.Context, r soap.RoundTripper, req *types.RenameCustomFieldDef) (*types.RenameCustomFieldDefResponse, error) { - var reqBody, resBody RenameCustomFieldDefBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RenameCustomizationSpecBody struct { - Req *types.RenameCustomizationSpec `xml:"urn:vim25 RenameCustomizationSpec,omitempty"` - Res *types.RenameCustomizationSpecResponse `xml:"urn:vim25 RenameCustomizationSpecResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RenameCustomizationSpecBody) Fault() *soap.Fault { return b.Fault_ } - -func RenameCustomizationSpec(ctx context.Context, r soap.RoundTripper, req *types.RenameCustomizationSpec) (*types.RenameCustomizationSpecResponse, error) { - var reqBody, resBody RenameCustomizationSpecBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RenameDatastoreBody struct { - Req *types.RenameDatastore `xml:"urn:vim25 RenameDatastore,omitempty"` - Res *types.RenameDatastoreResponse `xml:"urn:vim25 RenameDatastoreResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RenameDatastoreBody) Fault() *soap.Fault { return b.Fault_ } - -func RenameDatastore(ctx context.Context, r soap.RoundTripper, req *types.RenameDatastore) (*types.RenameDatastoreResponse, error) { - var reqBody, resBody RenameDatastoreBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RenameSnapshotBody struct { - Req *types.RenameSnapshot `xml:"urn:vim25 RenameSnapshot,omitempty"` - Res *types.RenameSnapshotResponse `xml:"urn:vim25 RenameSnapshotResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RenameSnapshotBody) Fault() *soap.Fault { return b.Fault_ } - -func RenameSnapshot(ctx context.Context, r soap.RoundTripper, req *types.RenameSnapshot) (*types.RenameSnapshotResponse, error) { - var reqBody, resBody RenameSnapshotBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type Rename_TaskBody struct { - Req *types.Rename_Task `xml:"urn:vim25 Rename_Task,omitempty"` - Res *types.Rename_TaskResponse `xml:"urn:vim25 Rename_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *Rename_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func Rename_Task(ctx context.Context, r soap.RoundTripper, req *types.Rename_Task) (*types.Rename_TaskResponse, error) { - var reqBody, resBody Rename_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ReplaceCACertificatesAndCRLsBody struct { - Req *types.ReplaceCACertificatesAndCRLs `xml:"urn:vim25 ReplaceCACertificatesAndCRLs,omitempty"` - Res *types.ReplaceCACertificatesAndCRLsResponse `xml:"urn:vim25 ReplaceCACertificatesAndCRLsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ReplaceCACertificatesAndCRLsBody) Fault() *soap.Fault { return b.Fault_ } - -func ReplaceCACertificatesAndCRLs(ctx context.Context, r soap.RoundTripper, req *types.ReplaceCACertificatesAndCRLs) (*types.ReplaceCACertificatesAndCRLsResponse, error) { - var reqBody, resBody ReplaceCACertificatesAndCRLsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ReplaceSmartCardTrustAnchorsBody struct { - Req *types.ReplaceSmartCardTrustAnchors `xml:"urn:vim25 ReplaceSmartCardTrustAnchors,omitempty"` - Res *types.ReplaceSmartCardTrustAnchorsResponse `xml:"urn:vim25 ReplaceSmartCardTrustAnchorsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ReplaceSmartCardTrustAnchorsBody) Fault() *soap.Fault { return b.Fault_ } - -func ReplaceSmartCardTrustAnchors(ctx context.Context, r soap.RoundTripper, req *types.ReplaceSmartCardTrustAnchors) (*types.ReplaceSmartCardTrustAnchorsResponse, error) { - var reqBody, resBody ReplaceSmartCardTrustAnchorsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RescanAllHbaBody struct { - Req *types.RescanAllHba `xml:"urn:vim25 RescanAllHba,omitempty"` - Res *types.RescanAllHbaResponse `xml:"urn:vim25 RescanAllHbaResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RescanAllHbaBody) Fault() *soap.Fault { return b.Fault_ } - -func RescanAllHba(ctx context.Context, r soap.RoundTripper, req *types.RescanAllHba) (*types.RescanAllHbaResponse, error) { - var reqBody, resBody RescanAllHbaBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RescanHbaBody struct { - Req *types.RescanHba `xml:"urn:vim25 RescanHba,omitempty"` - Res *types.RescanHbaResponse `xml:"urn:vim25 RescanHbaResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RescanHbaBody) Fault() *soap.Fault { return b.Fault_ } - -func RescanHba(ctx context.Context, r soap.RoundTripper, req *types.RescanHba) (*types.RescanHbaResponse, error) { - var reqBody, resBody RescanHbaBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RescanVffsBody struct { - Req *types.RescanVffs `xml:"urn:vim25 RescanVffs,omitempty"` - Res *types.RescanVffsResponse `xml:"urn:vim25 RescanVffsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RescanVffsBody) Fault() *soap.Fault { return b.Fault_ } - -func RescanVffs(ctx context.Context, r soap.RoundTripper, req *types.RescanVffs) (*types.RescanVffsResponse, error) { - var reqBody, resBody RescanVffsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RescanVmfsBody struct { - Req *types.RescanVmfs `xml:"urn:vim25 RescanVmfs,omitempty"` - Res *types.RescanVmfsResponse `xml:"urn:vim25 RescanVmfsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RescanVmfsBody) Fault() *soap.Fault { return b.Fault_ } - -func RescanVmfs(ctx context.Context, r soap.RoundTripper, req *types.RescanVmfs) (*types.RescanVmfsResponse, error) { - var reqBody, resBody RescanVmfsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ResetCollectorBody struct { - Req *types.ResetCollector `xml:"urn:vim25 ResetCollector,omitempty"` - Res *types.ResetCollectorResponse `xml:"urn:vim25 ResetCollectorResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ResetCollectorBody) Fault() *soap.Fault { return b.Fault_ } - -func ResetCollector(ctx context.Context, r soap.RoundTripper, req *types.ResetCollector) (*types.ResetCollectorResponse, error) { - var reqBody, resBody ResetCollectorBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ResetCounterLevelMappingBody struct { - Req *types.ResetCounterLevelMapping `xml:"urn:vim25 ResetCounterLevelMapping,omitempty"` - Res *types.ResetCounterLevelMappingResponse `xml:"urn:vim25 ResetCounterLevelMappingResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ResetCounterLevelMappingBody) Fault() *soap.Fault { return b.Fault_ } - -func ResetCounterLevelMapping(ctx context.Context, r soap.RoundTripper, req *types.ResetCounterLevelMapping) (*types.ResetCounterLevelMappingResponse, error) { - var reqBody, resBody ResetCounterLevelMappingBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ResetEntityPermissionsBody struct { - Req *types.ResetEntityPermissions `xml:"urn:vim25 ResetEntityPermissions,omitempty"` - Res *types.ResetEntityPermissionsResponse `xml:"urn:vim25 ResetEntityPermissionsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ResetEntityPermissionsBody) Fault() *soap.Fault { return b.Fault_ } - -func ResetEntityPermissions(ctx context.Context, r soap.RoundTripper, req *types.ResetEntityPermissions) (*types.ResetEntityPermissionsResponse, error) { - var reqBody, resBody ResetEntityPermissionsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ResetFirmwareToFactoryDefaultsBody struct { - Req *types.ResetFirmwareToFactoryDefaults `xml:"urn:vim25 ResetFirmwareToFactoryDefaults,omitempty"` - Res *types.ResetFirmwareToFactoryDefaultsResponse `xml:"urn:vim25 ResetFirmwareToFactoryDefaultsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ResetFirmwareToFactoryDefaultsBody) Fault() *soap.Fault { return b.Fault_ } - -func ResetFirmwareToFactoryDefaults(ctx context.Context, r soap.RoundTripper, req *types.ResetFirmwareToFactoryDefaults) (*types.ResetFirmwareToFactoryDefaultsResponse, error) { - var reqBody, resBody ResetFirmwareToFactoryDefaultsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ResetGuestInformationBody struct { - Req *types.ResetGuestInformation `xml:"urn:vim25 ResetGuestInformation,omitempty"` - Res *types.ResetGuestInformationResponse `xml:"urn:vim25 ResetGuestInformationResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ResetGuestInformationBody) Fault() *soap.Fault { return b.Fault_ } - -func ResetGuestInformation(ctx context.Context, r soap.RoundTripper, req *types.ResetGuestInformation) (*types.ResetGuestInformationResponse, error) { - var reqBody, resBody ResetGuestInformationBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ResetListViewBody struct { - Req *types.ResetListView `xml:"urn:vim25 ResetListView,omitempty"` - Res *types.ResetListViewResponse `xml:"urn:vim25 ResetListViewResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ResetListViewBody) Fault() *soap.Fault { return b.Fault_ } - -func ResetListView(ctx context.Context, r soap.RoundTripper, req *types.ResetListView) (*types.ResetListViewResponse, error) { - var reqBody, resBody ResetListViewBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ResetListViewFromViewBody struct { - Req *types.ResetListViewFromView `xml:"urn:vim25 ResetListViewFromView,omitempty"` - Res *types.ResetListViewFromViewResponse `xml:"urn:vim25 ResetListViewFromViewResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ResetListViewFromViewBody) Fault() *soap.Fault { return b.Fault_ } - -func ResetListViewFromView(ctx context.Context, r soap.RoundTripper, req *types.ResetListViewFromView) (*types.ResetListViewFromViewResponse, error) { - var reqBody, resBody ResetListViewFromViewBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ResetSystemHealthInfoBody struct { - Req *types.ResetSystemHealthInfo `xml:"urn:vim25 ResetSystemHealthInfo,omitempty"` - Res *types.ResetSystemHealthInfoResponse `xml:"urn:vim25 ResetSystemHealthInfoResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ResetSystemHealthInfoBody) Fault() *soap.Fault { return b.Fault_ } - -func ResetSystemHealthInfo(ctx context.Context, r soap.RoundTripper, req *types.ResetSystemHealthInfo) (*types.ResetSystemHealthInfoResponse, error) { - var reqBody, resBody ResetSystemHealthInfoBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ResetVM_TaskBody struct { - Req *types.ResetVM_Task `xml:"urn:vim25 ResetVM_Task,omitempty"` - Res *types.ResetVM_TaskResponse `xml:"urn:vim25 ResetVM_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ResetVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ResetVM_Task(ctx context.Context, r soap.RoundTripper, req *types.ResetVM_Task) (*types.ResetVM_TaskResponse, error) { - var reqBody, resBody ResetVM_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ResignatureUnresolvedVmfsVolume_TaskBody struct { - Req *types.ResignatureUnresolvedVmfsVolume_Task `xml:"urn:vim25 ResignatureUnresolvedVmfsVolume_Task,omitempty"` - Res *types.ResignatureUnresolvedVmfsVolume_TaskResponse `xml:"urn:vim25 ResignatureUnresolvedVmfsVolume_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ResignatureUnresolvedVmfsVolume_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ResignatureUnresolvedVmfsVolume_Task(ctx context.Context, r soap.RoundTripper, req *types.ResignatureUnresolvedVmfsVolume_Task) (*types.ResignatureUnresolvedVmfsVolume_TaskResponse, error) { - var reqBody, resBody ResignatureUnresolvedVmfsVolume_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ResolveInstallationErrorsOnCluster_TaskBody struct { - Req *types.ResolveInstallationErrorsOnCluster_Task `xml:"urn:vim25 ResolveInstallationErrorsOnCluster_Task,omitempty"` - Res *types.ResolveInstallationErrorsOnCluster_TaskResponse `xml:"urn:vim25 ResolveInstallationErrorsOnCluster_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ResolveInstallationErrorsOnCluster_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ResolveInstallationErrorsOnCluster_Task(ctx context.Context, r soap.RoundTripper, req *types.ResolveInstallationErrorsOnCluster_Task) (*types.ResolveInstallationErrorsOnCluster_TaskResponse, error) { - var reqBody, resBody ResolveInstallationErrorsOnCluster_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ResolveInstallationErrorsOnHost_TaskBody struct { - Req *types.ResolveInstallationErrorsOnHost_Task `xml:"urn:vim25 ResolveInstallationErrorsOnHost_Task,omitempty"` - Res *types.ResolveInstallationErrorsOnHost_TaskResponse `xml:"urn:vim25 ResolveInstallationErrorsOnHost_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ResolveInstallationErrorsOnHost_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ResolveInstallationErrorsOnHost_Task(ctx context.Context, r soap.RoundTripper, req *types.ResolveInstallationErrorsOnHost_Task) (*types.ResolveInstallationErrorsOnHost_TaskResponse, error) { - var reqBody, resBody ResolveInstallationErrorsOnHost_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ResolveMultipleUnresolvedVmfsVolumesBody struct { - Req *types.ResolveMultipleUnresolvedVmfsVolumes `xml:"urn:vim25 ResolveMultipleUnresolvedVmfsVolumes,omitempty"` - Res *types.ResolveMultipleUnresolvedVmfsVolumesResponse `xml:"urn:vim25 ResolveMultipleUnresolvedVmfsVolumesResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ResolveMultipleUnresolvedVmfsVolumesBody) Fault() *soap.Fault { return b.Fault_ } - -func ResolveMultipleUnresolvedVmfsVolumes(ctx context.Context, r soap.RoundTripper, req *types.ResolveMultipleUnresolvedVmfsVolumes) (*types.ResolveMultipleUnresolvedVmfsVolumesResponse, error) { - var reqBody, resBody ResolveMultipleUnresolvedVmfsVolumesBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ResolveMultipleUnresolvedVmfsVolumesEx_TaskBody struct { - Req *types.ResolveMultipleUnresolvedVmfsVolumesEx_Task `xml:"urn:vim25 ResolveMultipleUnresolvedVmfsVolumesEx_Task,omitempty"` - Res *types.ResolveMultipleUnresolvedVmfsVolumesEx_TaskResponse `xml:"urn:vim25 ResolveMultipleUnresolvedVmfsVolumesEx_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ResolveMultipleUnresolvedVmfsVolumesEx_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ResolveMultipleUnresolvedVmfsVolumesEx_Task(ctx context.Context, r soap.RoundTripper, req *types.ResolveMultipleUnresolvedVmfsVolumesEx_Task) (*types.ResolveMultipleUnresolvedVmfsVolumesEx_TaskResponse, error) { - var reqBody, resBody ResolveMultipleUnresolvedVmfsVolumesEx_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RestartServiceBody struct { - Req *types.RestartService `xml:"urn:vim25 RestartService,omitempty"` - Res *types.RestartServiceResponse `xml:"urn:vim25 RestartServiceResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RestartServiceBody) Fault() *soap.Fault { return b.Fault_ } - -func RestartService(ctx context.Context, r soap.RoundTripper, req *types.RestartService) (*types.RestartServiceResponse, error) { - var reqBody, resBody RestartServiceBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RestartServiceConsoleVirtualNicBody struct { - Req *types.RestartServiceConsoleVirtualNic `xml:"urn:vim25 RestartServiceConsoleVirtualNic,omitempty"` - Res *types.RestartServiceConsoleVirtualNicResponse `xml:"urn:vim25 RestartServiceConsoleVirtualNicResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RestartServiceConsoleVirtualNicBody) Fault() *soap.Fault { return b.Fault_ } - -func RestartServiceConsoleVirtualNic(ctx context.Context, r soap.RoundTripper, req *types.RestartServiceConsoleVirtualNic) (*types.RestartServiceConsoleVirtualNicResponse, error) { - var reqBody, resBody RestartServiceConsoleVirtualNicBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RestoreFirmwareConfigurationBody struct { - Req *types.RestoreFirmwareConfiguration `xml:"urn:vim25 RestoreFirmwareConfiguration,omitempty"` - Res *types.RestoreFirmwareConfigurationResponse `xml:"urn:vim25 RestoreFirmwareConfigurationResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RestoreFirmwareConfigurationBody) Fault() *soap.Fault { return b.Fault_ } - -func RestoreFirmwareConfiguration(ctx context.Context, r soap.RoundTripper, req *types.RestoreFirmwareConfiguration) (*types.RestoreFirmwareConfigurationResponse, error) { - var reqBody, resBody RestoreFirmwareConfigurationBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RetrieveAllPermissionsBody struct { - Req *types.RetrieveAllPermissions `xml:"urn:vim25 RetrieveAllPermissions,omitempty"` - Res *types.RetrieveAllPermissionsResponse `xml:"urn:vim25 RetrieveAllPermissionsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RetrieveAllPermissionsBody) Fault() *soap.Fault { return b.Fault_ } - -func RetrieveAllPermissions(ctx context.Context, r soap.RoundTripper, req *types.RetrieveAllPermissions) (*types.RetrieveAllPermissionsResponse, error) { - var reqBody, resBody RetrieveAllPermissionsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RetrieveAnswerFileBody struct { - Req *types.RetrieveAnswerFile `xml:"urn:vim25 RetrieveAnswerFile,omitempty"` - Res *types.RetrieveAnswerFileResponse `xml:"urn:vim25 RetrieveAnswerFileResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RetrieveAnswerFileBody) Fault() *soap.Fault { return b.Fault_ } - -func RetrieveAnswerFile(ctx context.Context, r soap.RoundTripper, req *types.RetrieveAnswerFile) (*types.RetrieveAnswerFileResponse, error) { - var reqBody, resBody RetrieveAnswerFileBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RetrieveAnswerFileForProfileBody struct { - Req *types.RetrieveAnswerFileForProfile `xml:"urn:vim25 RetrieveAnswerFileForProfile,omitempty"` - Res *types.RetrieveAnswerFileForProfileResponse `xml:"urn:vim25 RetrieveAnswerFileForProfileResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RetrieveAnswerFileForProfileBody) Fault() *soap.Fault { return b.Fault_ } - -func RetrieveAnswerFileForProfile(ctx context.Context, r soap.RoundTripper, req *types.RetrieveAnswerFileForProfile) (*types.RetrieveAnswerFileForProfileResponse, error) { - var reqBody, resBody RetrieveAnswerFileForProfileBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RetrieveArgumentDescriptionBody struct { - Req *types.RetrieveArgumentDescription `xml:"urn:vim25 RetrieveArgumentDescription,omitempty"` - Res *types.RetrieveArgumentDescriptionResponse `xml:"urn:vim25 RetrieveArgumentDescriptionResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RetrieveArgumentDescriptionBody) Fault() *soap.Fault { return b.Fault_ } - -func RetrieveArgumentDescription(ctx context.Context, r soap.RoundTripper, req *types.RetrieveArgumentDescription) (*types.RetrieveArgumentDescriptionResponse, error) { - var reqBody, resBody RetrieveArgumentDescriptionBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RetrieveDasAdvancedRuntimeInfoBody struct { - Req *types.RetrieveDasAdvancedRuntimeInfo `xml:"urn:vim25 RetrieveDasAdvancedRuntimeInfo,omitempty"` - Res *types.RetrieveDasAdvancedRuntimeInfoResponse `xml:"urn:vim25 RetrieveDasAdvancedRuntimeInfoResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RetrieveDasAdvancedRuntimeInfoBody) Fault() *soap.Fault { return b.Fault_ } - -func RetrieveDasAdvancedRuntimeInfo(ctx context.Context, r soap.RoundTripper, req *types.RetrieveDasAdvancedRuntimeInfo) (*types.RetrieveDasAdvancedRuntimeInfoResponse, error) { - var reqBody, resBody RetrieveDasAdvancedRuntimeInfoBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RetrieveDescriptionBody struct { - Req *types.RetrieveDescription `xml:"urn:vim25 RetrieveDescription,omitempty"` - Res *types.RetrieveDescriptionResponse `xml:"urn:vim25 RetrieveDescriptionResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RetrieveDescriptionBody) Fault() *soap.Fault { return b.Fault_ } - -func RetrieveDescription(ctx context.Context, r soap.RoundTripper, req *types.RetrieveDescription) (*types.RetrieveDescriptionResponse, error) { - var reqBody, resBody RetrieveDescriptionBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RetrieveDiskPartitionInfoBody struct { - Req *types.RetrieveDiskPartitionInfo `xml:"urn:vim25 RetrieveDiskPartitionInfo,omitempty"` - Res *types.RetrieveDiskPartitionInfoResponse `xml:"urn:vim25 RetrieveDiskPartitionInfoResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RetrieveDiskPartitionInfoBody) Fault() *soap.Fault { return b.Fault_ } - -func RetrieveDiskPartitionInfo(ctx context.Context, r soap.RoundTripper, req *types.RetrieveDiskPartitionInfo) (*types.RetrieveDiskPartitionInfoResponse, error) { - var reqBody, resBody RetrieveDiskPartitionInfoBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RetrieveEntityPermissionsBody struct { - Req *types.RetrieveEntityPermissions `xml:"urn:vim25 RetrieveEntityPermissions,omitempty"` - Res *types.RetrieveEntityPermissionsResponse `xml:"urn:vim25 RetrieveEntityPermissionsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RetrieveEntityPermissionsBody) Fault() *soap.Fault { return b.Fault_ } - -func RetrieveEntityPermissions(ctx context.Context, r soap.RoundTripper, req *types.RetrieveEntityPermissions) (*types.RetrieveEntityPermissionsResponse, error) { - var reqBody, resBody RetrieveEntityPermissionsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RetrieveEntityScheduledTaskBody struct { - Req *types.RetrieveEntityScheduledTask `xml:"urn:vim25 RetrieveEntityScheduledTask,omitempty"` - Res *types.RetrieveEntityScheduledTaskResponse `xml:"urn:vim25 RetrieveEntityScheduledTaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RetrieveEntityScheduledTaskBody) Fault() *soap.Fault { return b.Fault_ } - -func RetrieveEntityScheduledTask(ctx context.Context, r soap.RoundTripper, req *types.RetrieveEntityScheduledTask) (*types.RetrieveEntityScheduledTaskResponse, error) { - var reqBody, resBody RetrieveEntityScheduledTaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RetrieveHardwareUptimeBody struct { - Req *types.RetrieveHardwareUptime `xml:"urn:vim25 RetrieveHardwareUptime,omitempty"` - Res *types.RetrieveHardwareUptimeResponse `xml:"urn:vim25 RetrieveHardwareUptimeResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RetrieveHardwareUptimeBody) Fault() *soap.Fault { return b.Fault_ } - -func RetrieveHardwareUptime(ctx context.Context, r soap.RoundTripper, req *types.RetrieveHardwareUptime) (*types.RetrieveHardwareUptimeResponse, error) { - var reqBody, resBody RetrieveHardwareUptimeBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RetrieveHostAccessControlEntriesBody struct { - Req *types.RetrieveHostAccessControlEntries `xml:"urn:vim25 RetrieveHostAccessControlEntries,omitempty"` - Res *types.RetrieveHostAccessControlEntriesResponse `xml:"urn:vim25 RetrieveHostAccessControlEntriesResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RetrieveHostAccessControlEntriesBody) Fault() *soap.Fault { return b.Fault_ } - -func RetrieveHostAccessControlEntries(ctx context.Context, r soap.RoundTripper, req *types.RetrieveHostAccessControlEntries) (*types.RetrieveHostAccessControlEntriesResponse, error) { - var reqBody, resBody RetrieveHostAccessControlEntriesBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RetrieveObjectScheduledTaskBody struct { - Req *types.RetrieveObjectScheduledTask `xml:"urn:vim25 RetrieveObjectScheduledTask,omitempty"` - Res *types.RetrieveObjectScheduledTaskResponse `xml:"urn:vim25 RetrieveObjectScheduledTaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RetrieveObjectScheduledTaskBody) Fault() *soap.Fault { return b.Fault_ } - -func RetrieveObjectScheduledTask(ctx context.Context, r soap.RoundTripper, req *types.RetrieveObjectScheduledTask) (*types.RetrieveObjectScheduledTaskResponse, error) { - var reqBody, resBody RetrieveObjectScheduledTaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RetrieveProductComponentsBody struct { - Req *types.RetrieveProductComponents `xml:"urn:vim25 RetrieveProductComponents,omitempty"` - Res *types.RetrieveProductComponentsResponse `xml:"urn:vim25 RetrieveProductComponentsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RetrieveProductComponentsBody) Fault() *soap.Fault { return b.Fault_ } - -func RetrieveProductComponents(ctx context.Context, r soap.RoundTripper, req *types.RetrieveProductComponents) (*types.RetrieveProductComponentsResponse, error) { - var reqBody, resBody RetrieveProductComponentsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RetrievePropertiesBody struct { - Req *types.RetrieveProperties `xml:"urn:vim25 RetrieveProperties,omitempty"` - Res *types.RetrievePropertiesResponse `xml:"urn:vim25 RetrievePropertiesResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RetrievePropertiesBody) Fault() *soap.Fault { return b.Fault_ } - -func RetrieveProperties(ctx context.Context, r soap.RoundTripper, req *types.RetrieveProperties) (*types.RetrievePropertiesResponse, error) { - var reqBody, resBody RetrievePropertiesBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RetrievePropertiesExBody struct { - Req *types.RetrievePropertiesEx `xml:"urn:vim25 RetrievePropertiesEx,omitempty"` - Res *types.RetrievePropertiesExResponse `xml:"urn:vim25 RetrievePropertiesExResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RetrievePropertiesExBody) Fault() *soap.Fault { return b.Fault_ } - -func RetrievePropertiesEx(ctx context.Context, r soap.RoundTripper, req *types.RetrievePropertiesEx) (*types.RetrievePropertiesExResponse, error) { - var reqBody, resBody RetrievePropertiesExBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RetrieveRolePermissionsBody struct { - Req *types.RetrieveRolePermissions `xml:"urn:vim25 RetrieveRolePermissions,omitempty"` - Res *types.RetrieveRolePermissionsResponse `xml:"urn:vim25 RetrieveRolePermissionsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RetrieveRolePermissionsBody) Fault() *soap.Fault { return b.Fault_ } - -func RetrieveRolePermissions(ctx context.Context, r soap.RoundTripper, req *types.RetrieveRolePermissions) (*types.RetrieveRolePermissionsResponse, error) { - var reqBody, resBody RetrieveRolePermissionsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RetrieveServiceContentBody struct { - Req *types.RetrieveServiceContent `xml:"urn:vim25 RetrieveServiceContent,omitempty"` - Res *types.RetrieveServiceContentResponse `xml:"urn:vim25 RetrieveServiceContentResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RetrieveServiceContentBody) Fault() *soap.Fault { return b.Fault_ } - -func RetrieveServiceContent(ctx context.Context, r soap.RoundTripper, req *types.RetrieveServiceContent) (*types.RetrieveServiceContentResponse, error) { - var reqBody, resBody RetrieveServiceContentBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RetrieveUserGroupsBody struct { - Req *types.RetrieveUserGroups `xml:"urn:vim25 RetrieveUserGroups,omitempty"` - Res *types.RetrieveUserGroupsResponse `xml:"urn:vim25 RetrieveUserGroupsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RetrieveUserGroupsBody) Fault() *soap.Fault { return b.Fault_ } - -func RetrieveUserGroups(ctx context.Context, r soap.RoundTripper, req *types.RetrieveUserGroups) (*types.RetrieveUserGroupsResponse, error) { - var reqBody, resBody RetrieveUserGroupsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RevertToCurrentSnapshot_TaskBody struct { - Req *types.RevertToCurrentSnapshot_Task `xml:"urn:vim25 RevertToCurrentSnapshot_Task,omitempty"` - Res *types.RevertToCurrentSnapshot_TaskResponse `xml:"urn:vim25 RevertToCurrentSnapshot_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RevertToCurrentSnapshot_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func RevertToCurrentSnapshot_Task(ctx context.Context, r soap.RoundTripper, req *types.RevertToCurrentSnapshot_Task) (*types.RevertToCurrentSnapshot_TaskResponse, error) { - var reqBody, resBody RevertToCurrentSnapshot_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RevertToSnapshot_TaskBody struct { - Req *types.RevertToSnapshot_Task `xml:"urn:vim25 RevertToSnapshot_Task,omitempty"` - Res *types.RevertToSnapshot_TaskResponse `xml:"urn:vim25 RevertToSnapshot_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RevertToSnapshot_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func RevertToSnapshot_Task(ctx context.Context, r soap.RoundTripper, req *types.RevertToSnapshot_Task) (*types.RevertToSnapshot_TaskResponse, error) { - var reqBody, resBody RevertToSnapshot_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RewindCollectorBody struct { - Req *types.RewindCollector `xml:"urn:vim25 RewindCollector,omitempty"` - Res *types.RewindCollectorResponse `xml:"urn:vim25 RewindCollectorResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RewindCollectorBody) Fault() *soap.Fault { return b.Fault_ } - -func RewindCollector(ctx context.Context, r soap.RoundTripper, req *types.RewindCollector) (*types.RewindCollectorResponse, error) { - var reqBody, resBody RewindCollectorBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RunScheduledTaskBody struct { - Req *types.RunScheduledTask `xml:"urn:vim25 RunScheduledTask,omitempty"` - Res *types.RunScheduledTaskResponse `xml:"urn:vim25 RunScheduledTaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RunScheduledTaskBody) Fault() *soap.Fault { return b.Fault_ } - -func RunScheduledTask(ctx context.Context, r soap.RoundTripper, req *types.RunScheduledTask) (*types.RunScheduledTaskResponse, error) { - var reqBody, resBody RunScheduledTaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type RunVsanPhysicalDiskDiagnosticsBody struct { - Req *types.RunVsanPhysicalDiskDiagnostics `xml:"urn:vim25 RunVsanPhysicalDiskDiagnostics,omitempty"` - Res *types.RunVsanPhysicalDiskDiagnosticsResponse `xml:"urn:vim25 RunVsanPhysicalDiskDiagnosticsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *RunVsanPhysicalDiskDiagnosticsBody) Fault() *soap.Fault { return b.Fault_ } - -func RunVsanPhysicalDiskDiagnostics(ctx context.Context, r soap.RoundTripper, req *types.RunVsanPhysicalDiskDiagnostics) (*types.RunVsanPhysicalDiskDiagnosticsResponse, error) { - var reqBody, resBody RunVsanPhysicalDiskDiagnosticsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ScanHostPatchV2_TaskBody struct { - Req *types.ScanHostPatchV2_Task `xml:"urn:vim25 ScanHostPatchV2_Task,omitempty"` - Res *types.ScanHostPatchV2_TaskResponse `xml:"urn:vim25 ScanHostPatchV2_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ScanHostPatchV2_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ScanHostPatchV2_Task(ctx context.Context, r soap.RoundTripper, req *types.ScanHostPatchV2_Task) (*types.ScanHostPatchV2_TaskResponse, error) { - var reqBody, resBody ScanHostPatchV2_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ScanHostPatch_TaskBody struct { - Req *types.ScanHostPatch_Task `xml:"urn:vim25 ScanHostPatch_Task,omitempty"` - Res *types.ScanHostPatch_TaskResponse `xml:"urn:vim25 ScanHostPatch_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ScanHostPatch_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ScanHostPatch_Task(ctx context.Context, r soap.RoundTripper, req *types.ScanHostPatch_Task) (*types.ScanHostPatch_TaskResponse, error) { - var reqBody, resBody ScanHostPatch_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type SearchDatastoreSubFolders_TaskBody struct { - Req *types.SearchDatastoreSubFolders_Task `xml:"urn:vim25 SearchDatastoreSubFolders_Task,omitempty"` - Res *types.SearchDatastoreSubFolders_TaskResponse `xml:"urn:vim25 SearchDatastoreSubFolders_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *SearchDatastoreSubFolders_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func SearchDatastoreSubFolders_Task(ctx context.Context, r soap.RoundTripper, req *types.SearchDatastoreSubFolders_Task) (*types.SearchDatastoreSubFolders_TaskResponse, error) { - var reqBody, resBody SearchDatastoreSubFolders_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type SearchDatastore_TaskBody struct { - Req *types.SearchDatastore_Task `xml:"urn:vim25 SearchDatastore_Task,omitempty"` - Res *types.SearchDatastore_TaskResponse `xml:"urn:vim25 SearchDatastore_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *SearchDatastore_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func SearchDatastore_Task(ctx context.Context, r soap.RoundTripper, req *types.SearchDatastore_Task) (*types.SearchDatastore_TaskResponse, error) { - var reqBody, resBody SearchDatastore_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type SelectActivePartitionBody struct { - Req *types.SelectActivePartition `xml:"urn:vim25 SelectActivePartition,omitempty"` - Res *types.SelectActivePartitionResponse `xml:"urn:vim25 SelectActivePartitionResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *SelectActivePartitionBody) Fault() *soap.Fault { return b.Fault_ } - -func SelectActivePartition(ctx context.Context, r soap.RoundTripper, req *types.SelectActivePartition) (*types.SelectActivePartitionResponse, error) { - var reqBody, resBody SelectActivePartitionBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type SelectVnicBody struct { - Req *types.SelectVnic `xml:"urn:vim25 SelectVnic,omitempty"` - Res *types.SelectVnicResponse `xml:"urn:vim25 SelectVnicResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *SelectVnicBody) Fault() *soap.Fault { return b.Fault_ } - -func SelectVnic(ctx context.Context, r soap.RoundTripper, req *types.SelectVnic) (*types.SelectVnicResponse, error) { - var reqBody, resBody SelectVnicBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type SelectVnicForNicTypeBody struct { - Req *types.SelectVnicForNicType `xml:"urn:vim25 SelectVnicForNicType,omitempty"` - Res *types.SelectVnicForNicTypeResponse `xml:"urn:vim25 SelectVnicForNicTypeResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *SelectVnicForNicTypeBody) Fault() *soap.Fault { return b.Fault_ } - -func SelectVnicForNicType(ctx context.Context, r soap.RoundTripper, req *types.SelectVnicForNicType) (*types.SelectVnicForNicTypeResponse, error) { - var reqBody, resBody SelectVnicForNicTypeBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type SendNMIBody struct { - Req *types.SendNMI `xml:"urn:vim25 SendNMI,omitempty"` - Res *types.SendNMIResponse `xml:"urn:vim25 SendNMIResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *SendNMIBody) Fault() *soap.Fault { return b.Fault_ } - -func SendNMI(ctx context.Context, r soap.RoundTripper, req *types.SendNMI) (*types.SendNMIResponse, error) { - var reqBody, resBody SendNMIBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type SendTestNotificationBody struct { - Req *types.SendTestNotification `xml:"urn:vim25 SendTestNotification,omitempty"` - Res *types.SendTestNotificationResponse `xml:"urn:vim25 SendTestNotificationResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *SendTestNotificationBody) Fault() *soap.Fault { return b.Fault_ } - -func SendTestNotification(ctx context.Context, r soap.RoundTripper, req *types.SendTestNotification) (*types.SendTestNotificationResponse, error) { - var reqBody, resBody SendTestNotificationBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type SessionIsActiveBody struct { - Req *types.SessionIsActive `xml:"urn:vim25 SessionIsActive,omitempty"` - Res *types.SessionIsActiveResponse `xml:"urn:vim25 SessionIsActiveResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *SessionIsActiveBody) Fault() *soap.Fault { return b.Fault_ } - -func SessionIsActive(ctx context.Context, r soap.RoundTripper, req *types.SessionIsActive) (*types.SessionIsActiveResponse, error) { - var reqBody, resBody SessionIsActiveBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type SetCollectorPageSizeBody struct { - Req *types.SetCollectorPageSize `xml:"urn:vim25 SetCollectorPageSize,omitempty"` - Res *types.SetCollectorPageSizeResponse `xml:"urn:vim25 SetCollectorPageSizeResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *SetCollectorPageSizeBody) Fault() *soap.Fault { return b.Fault_ } - -func SetCollectorPageSize(ctx context.Context, r soap.RoundTripper, req *types.SetCollectorPageSize) (*types.SetCollectorPageSizeResponse, error) { - var reqBody, resBody SetCollectorPageSizeBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type SetDisplayTopologyBody struct { - Req *types.SetDisplayTopology `xml:"urn:vim25 SetDisplayTopology,omitempty"` - Res *types.SetDisplayTopologyResponse `xml:"urn:vim25 SetDisplayTopologyResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *SetDisplayTopologyBody) Fault() *soap.Fault { return b.Fault_ } - -func SetDisplayTopology(ctx context.Context, r soap.RoundTripper, req *types.SetDisplayTopology) (*types.SetDisplayTopologyResponse, error) { - var reqBody, resBody SetDisplayTopologyBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type SetEntityPermissionsBody struct { - Req *types.SetEntityPermissions `xml:"urn:vim25 SetEntityPermissions,omitempty"` - Res *types.SetEntityPermissionsResponse `xml:"urn:vim25 SetEntityPermissionsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *SetEntityPermissionsBody) Fault() *soap.Fault { return b.Fault_ } - -func SetEntityPermissions(ctx context.Context, r soap.RoundTripper, req *types.SetEntityPermissions) (*types.SetEntityPermissionsResponse, error) { - var reqBody, resBody SetEntityPermissionsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type SetExtensionCertificateBody struct { - Req *types.SetExtensionCertificate `xml:"urn:vim25 SetExtensionCertificate,omitempty"` - Res *types.SetExtensionCertificateResponse `xml:"urn:vim25 SetExtensionCertificateResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *SetExtensionCertificateBody) Fault() *soap.Fault { return b.Fault_ } - -func SetExtensionCertificate(ctx context.Context, r soap.RoundTripper, req *types.SetExtensionCertificate) (*types.SetExtensionCertificateResponse, error) { - var reqBody, resBody SetExtensionCertificateBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type SetFieldBody struct { - Req *types.SetField `xml:"urn:vim25 SetField,omitempty"` - Res *types.SetFieldResponse `xml:"urn:vim25 SetFieldResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *SetFieldBody) Fault() *soap.Fault { return b.Fault_ } - -func SetField(ctx context.Context, r soap.RoundTripper, req *types.SetField) (*types.SetFieldResponse, error) { - var reqBody, resBody SetFieldBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type SetLicenseEditionBody struct { - Req *types.SetLicenseEdition `xml:"urn:vim25 SetLicenseEdition,omitempty"` - Res *types.SetLicenseEditionResponse `xml:"urn:vim25 SetLicenseEditionResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *SetLicenseEditionBody) Fault() *soap.Fault { return b.Fault_ } - -func SetLicenseEdition(ctx context.Context, r soap.RoundTripper, req *types.SetLicenseEdition) (*types.SetLicenseEditionResponse, error) { - var reqBody, resBody SetLicenseEditionBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type SetLocaleBody struct { - Req *types.SetLocale `xml:"urn:vim25 SetLocale,omitempty"` - Res *types.SetLocaleResponse `xml:"urn:vim25 SetLocaleResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *SetLocaleBody) Fault() *soap.Fault { return b.Fault_ } - -func SetLocale(ctx context.Context, r soap.RoundTripper, req *types.SetLocale) (*types.SetLocaleResponse, error) { - var reqBody, resBody SetLocaleBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type SetMultipathLunPolicyBody struct { - Req *types.SetMultipathLunPolicy `xml:"urn:vim25 SetMultipathLunPolicy,omitempty"` - Res *types.SetMultipathLunPolicyResponse `xml:"urn:vim25 SetMultipathLunPolicyResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *SetMultipathLunPolicyBody) Fault() *soap.Fault { return b.Fault_ } - -func SetMultipathLunPolicy(ctx context.Context, r soap.RoundTripper, req *types.SetMultipathLunPolicy) (*types.SetMultipathLunPolicyResponse, error) { - var reqBody, resBody SetMultipathLunPolicyBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type SetNFSUserBody struct { - Req *types.SetNFSUser `xml:"urn:vim25 SetNFSUser,omitempty"` - Res *types.SetNFSUserResponse `xml:"urn:vim25 SetNFSUserResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *SetNFSUserBody) Fault() *soap.Fault { return b.Fault_ } - -func SetNFSUser(ctx context.Context, r soap.RoundTripper, req *types.SetNFSUser) (*types.SetNFSUserResponse, error) { - var reqBody, resBody SetNFSUserBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type SetPublicKeyBody struct { - Req *types.SetPublicKey `xml:"urn:vim25 SetPublicKey,omitempty"` - Res *types.SetPublicKeyResponse `xml:"urn:vim25 SetPublicKeyResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *SetPublicKeyBody) Fault() *soap.Fault { return b.Fault_ } - -func SetPublicKey(ctx context.Context, r soap.RoundTripper, req *types.SetPublicKey) (*types.SetPublicKeyResponse, error) { - var reqBody, resBody SetPublicKeyBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type SetRegistryValueInGuestBody struct { - Req *types.SetRegistryValueInGuest `xml:"urn:vim25 SetRegistryValueInGuest,omitempty"` - Res *types.SetRegistryValueInGuestResponse `xml:"urn:vim25 SetRegistryValueInGuestResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *SetRegistryValueInGuestBody) Fault() *soap.Fault { return b.Fault_ } - -func SetRegistryValueInGuest(ctx context.Context, r soap.RoundTripper, req *types.SetRegistryValueInGuest) (*types.SetRegistryValueInGuestResponse, error) { - var reqBody, resBody SetRegistryValueInGuestBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type SetScreenResolutionBody struct { - Req *types.SetScreenResolution `xml:"urn:vim25 SetScreenResolution,omitempty"` - Res *types.SetScreenResolutionResponse `xml:"urn:vim25 SetScreenResolutionResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *SetScreenResolutionBody) Fault() *soap.Fault { return b.Fault_ } - -func SetScreenResolution(ctx context.Context, r soap.RoundTripper, req *types.SetScreenResolution) (*types.SetScreenResolutionResponse, error) { - var reqBody, resBody SetScreenResolutionBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type SetTaskDescriptionBody struct { - Req *types.SetTaskDescription `xml:"urn:vim25 SetTaskDescription,omitempty"` - Res *types.SetTaskDescriptionResponse `xml:"urn:vim25 SetTaskDescriptionResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *SetTaskDescriptionBody) Fault() *soap.Fault { return b.Fault_ } - -func SetTaskDescription(ctx context.Context, r soap.RoundTripper, req *types.SetTaskDescription) (*types.SetTaskDescriptionResponse, error) { - var reqBody, resBody SetTaskDescriptionBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type SetTaskStateBody struct { - Req *types.SetTaskState `xml:"urn:vim25 SetTaskState,omitempty"` - Res *types.SetTaskStateResponse `xml:"urn:vim25 SetTaskStateResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *SetTaskStateBody) Fault() *soap.Fault { return b.Fault_ } - -func SetTaskState(ctx context.Context, r soap.RoundTripper, req *types.SetTaskState) (*types.SetTaskStateResponse, error) { - var reqBody, resBody SetTaskStateBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type SetVirtualDiskUuidBody struct { - Req *types.SetVirtualDiskUuid `xml:"urn:vim25 SetVirtualDiskUuid,omitempty"` - Res *types.SetVirtualDiskUuidResponse `xml:"urn:vim25 SetVirtualDiskUuidResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *SetVirtualDiskUuidBody) Fault() *soap.Fault { return b.Fault_ } - -func SetVirtualDiskUuid(ctx context.Context, r soap.RoundTripper, req *types.SetVirtualDiskUuid) (*types.SetVirtualDiskUuidResponse, error) { - var reqBody, resBody SetVirtualDiskUuidBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ShrinkVirtualDisk_TaskBody struct { - Req *types.ShrinkVirtualDisk_Task `xml:"urn:vim25 ShrinkVirtualDisk_Task,omitempty"` - Res *types.ShrinkVirtualDisk_TaskResponse `xml:"urn:vim25 ShrinkVirtualDisk_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ShrinkVirtualDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ShrinkVirtualDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.ShrinkVirtualDisk_Task) (*types.ShrinkVirtualDisk_TaskResponse, error) { - var reqBody, resBody ShrinkVirtualDisk_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ShutdownGuestBody struct { - Req *types.ShutdownGuest `xml:"urn:vim25 ShutdownGuest,omitempty"` - Res *types.ShutdownGuestResponse `xml:"urn:vim25 ShutdownGuestResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ShutdownGuestBody) Fault() *soap.Fault { return b.Fault_ } - -func ShutdownGuest(ctx context.Context, r soap.RoundTripper, req *types.ShutdownGuest) (*types.ShutdownGuestResponse, error) { - var reqBody, resBody ShutdownGuestBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ShutdownHost_TaskBody struct { - Req *types.ShutdownHost_Task `xml:"urn:vim25 ShutdownHost_Task,omitempty"` - Res *types.ShutdownHost_TaskResponse `xml:"urn:vim25 ShutdownHost_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ShutdownHost_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ShutdownHost_Task(ctx context.Context, r soap.RoundTripper, req *types.ShutdownHost_Task) (*types.ShutdownHost_TaskResponse, error) { - var reqBody, resBody ShutdownHost_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type StageHostPatch_TaskBody struct { - Req *types.StageHostPatch_Task `xml:"urn:vim25 StageHostPatch_Task,omitempty"` - Res *types.StageHostPatch_TaskResponse `xml:"urn:vim25 StageHostPatch_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *StageHostPatch_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func StageHostPatch_Task(ctx context.Context, r soap.RoundTripper, req *types.StageHostPatch_Task) (*types.StageHostPatch_TaskResponse, error) { - var reqBody, resBody StageHostPatch_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type StampAllRulesWithUuid_TaskBody struct { - Req *types.StampAllRulesWithUuid_Task `xml:"urn:vim25 StampAllRulesWithUuid_Task,omitempty"` - Res *types.StampAllRulesWithUuid_TaskResponse `xml:"urn:vim25 StampAllRulesWithUuid_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *StampAllRulesWithUuid_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func StampAllRulesWithUuid_Task(ctx context.Context, r soap.RoundTripper, req *types.StampAllRulesWithUuid_Task) (*types.StampAllRulesWithUuid_TaskResponse, error) { - var reqBody, resBody StampAllRulesWithUuid_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type StandbyGuestBody struct { - Req *types.StandbyGuest `xml:"urn:vim25 StandbyGuest,omitempty"` - Res *types.StandbyGuestResponse `xml:"urn:vim25 StandbyGuestResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *StandbyGuestBody) Fault() *soap.Fault { return b.Fault_ } - -func StandbyGuest(ctx context.Context, r soap.RoundTripper, req *types.StandbyGuest) (*types.StandbyGuestResponse, error) { - var reqBody, resBody StandbyGuestBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type StartProgramInGuestBody struct { - Req *types.StartProgramInGuest `xml:"urn:vim25 StartProgramInGuest,omitempty"` - Res *types.StartProgramInGuestResponse `xml:"urn:vim25 StartProgramInGuestResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *StartProgramInGuestBody) Fault() *soap.Fault { return b.Fault_ } - -func StartProgramInGuest(ctx context.Context, r soap.RoundTripper, req *types.StartProgramInGuest) (*types.StartProgramInGuestResponse, error) { - var reqBody, resBody StartProgramInGuestBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type StartRecording_TaskBody struct { - Req *types.StartRecording_Task `xml:"urn:vim25 StartRecording_Task,omitempty"` - Res *types.StartRecording_TaskResponse `xml:"urn:vim25 StartRecording_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *StartRecording_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func StartRecording_Task(ctx context.Context, r soap.RoundTripper, req *types.StartRecording_Task) (*types.StartRecording_TaskResponse, error) { - var reqBody, resBody StartRecording_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type StartReplaying_TaskBody struct { - Req *types.StartReplaying_Task `xml:"urn:vim25 StartReplaying_Task,omitempty"` - Res *types.StartReplaying_TaskResponse `xml:"urn:vim25 StartReplaying_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *StartReplaying_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func StartReplaying_Task(ctx context.Context, r soap.RoundTripper, req *types.StartReplaying_Task) (*types.StartReplaying_TaskResponse, error) { - var reqBody, resBody StartReplaying_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type StartServiceBody struct { - Req *types.StartService `xml:"urn:vim25 StartService,omitempty"` - Res *types.StartServiceResponse `xml:"urn:vim25 StartServiceResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *StartServiceBody) Fault() *soap.Fault { return b.Fault_ } - -func StartService(ctx context.Context, r soap.RoundTripper, req *types.StartService) (*types.StartServiceResponse, error) { - var reqBody, resBody StartServiceBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type StopRecording_TaskBody struct { - Req *types.StopRecording_Task `xml:"urn:vim25 StopRecording_Task,omitempty"` - Res *types.StopRecording_TaskResponse `xml:"urn:vim25 StopRecording_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *StopRecording_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func StopRecording_Task(ctx context.Context, r soap.RoundTripper, req *types.StopRecording_Task) (*types.StopRecording_TaskResponse, error) { - var reqBody, resBody StopRecording_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type StopReplaying_TaskBody struct { - Req *types.StopReplaying_Task `xml:"urn:vim25 StopReplaying_Task,omitempty"` - Res *types.StopReplaying_TaskResponse `xml:"urn:vim25 StopReplaying_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *StopReplaying_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func StopReplaying_Task(ctx context.Context, r soap.RoundTripper, req *types.StopReplaying_Task) (*types.StopReplaying_TaskResponse, error) { - var reqBody, resBody StopReplaying_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type StopServiceBody struct { - Req *types.StopService `xml:"urn:vim25 StopService,omitempty"` - Res *types.StopServiceResponse `xml:"urn:vim25 StopServiceResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *StopServiceBody) Fault() *soap.Fault { return b.Fault_ } - -func StopService(ctx context.Context, r soap.RoundTripper, req *types.StopService) (*types.StopServiceResponse, error) { - var reqBody, resBody StopServiceBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type SuspendVApp_TaskBody struct { - Req *types.SuspendVApp_Task `xml:"urn:vim25 SuspendVApp_Task,omitempty"` - Res *types.SuspendVApp_TaskResponse `xml:"urn:vim25 SuspendVApp_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *SuspendVApp_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func SuspendVApp_Task(ctx context.Context, r soap.RoundTripper, req *types.SuspendVApp_Task) (*types.SuspendVApp_TaskResponse, error) { - var reqBody, resBody SuspendVApp_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type SuspendVM_TaskBody struct { - Req *types.SuspendVM_Task `xml:"urn:vim25 SuspendVM_Task,omitempty"` - Res *types.SuspendVM_TaskResponse `xml:"urn:vim25 SuspendVM_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *SuspendVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func SuspendVM_Task(ctx context.Context, r soap.RoundTripper, req *types.SuspendVM_Task) (*types.SuspendVM_TaskResponse, error) { - var reqBody, resBody SuspendVM_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type TerminateFaultTolerantVM_TaskBody struct { - Req *types.TerminateFaultTolerantVM_Task `xml:"urn:vim25 TerminateFaultTolerantVM_Task,omitempty"` - Res *types.TerminateFaultTolerantVM_TaskResponse `xml:"urn:vim25 TerminateFaultTolerantVM_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *TerminateFaultTolerantVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func TerminateFaultTolerantVM_Task(ctx context.Context, r soap.RoundTripper, req *types.TerminateFaultTolerantVM_Task) (*types.TerminateFaultTolerantVM_TaskResponse, error) { - var reqBody, resBody TerminateFaultTolerantVM_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type TerminateProcessInGuestBody struct { - Req *types.TerminateProcessInGuest `xml:"urn:vim25 TerminateProcessInGuest,omitempty"` - Res *types.TerminateProcessInGuestResponse `xml:"urn:vim25 TerminateProcessInGuestResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *TerminateProcessInGuestBody) Fault() *soap.Fault { return b.Fault_ } - -func TerminateProcessInGuest(ctx context.Context, r soap.RoundTripper, req *types.TerminateProcessInGuest) (*types.TerminateProcessInGuestResponse, error) { - var reqBody, resBody TerminateProcessInGuestBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type TerminateSessionBody struct { - Req *types.TerminateSession `xml:"urn:vim25 TerminateSession,omitempty"` - Res *types.TerminateSessionResponse `xml:"urn:vim25 TerminateSessionResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *TerminateSessionBody) Fault() *soap.Fault { return b.Fault_ } - -func TerminateSession(ctx context.Context, r soap.RoundTripper, req *types.TerminateSession) (*types.TerminateSessionResponse, error) { - var reqBody, resBody TerminateSessionBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type TerminateVMBody struct { - Req *types.TerminateVM `xml:"urn:vim25 TerminateVM,omitempty"` - Res *types.TerminateVMResponse `xml:"urn:vim25 TerminateVMResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *TerminateVMBody) Fault() *soap.Fault { return b.Fault_ } - -func TerminateVM(ctx context.Context, r soap.RoundTripper, req *types.TerminateVM) (*types.TerminateVMResponse, error) { - var reqBody, resBody TerminateVMBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type TurnDiskLocatorLedOff_TaskBody struct { - Req *types.TurnDiskLocatorLedOff_Task `xml:"urn:vim25 TurnDiskLocatorLedOff_Task,omitempty"` - Res *types.TurnDiskLocatorLedOff_TaskResponse `xml:"urn:vim25 TurnDiskLocatorLedOff_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *TurnDiskLocatorLedOff_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func TurnDiskLocatorLedOff_Task(ctx context.Context, r soap.RoundTripper, req *types.TurnDiskLocatorLedOff_Task) (*types.TurnDiskLocatorLedOff_TaskResponse, error) { - var reqBody, resBody TurnDiskLocatorLedOff_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type TurnDiskLocatorLedOn_TaskBody struct { - Req *types.TurnDiskLocatorLedOn_Task `xml:"urn:vim25 TurnDiskLocatorLedOn_Task,omitempty"` - Res *types.TurnDiskLocatorLedOn_TaskResponse `xml:"urn:vim25 TurnDiskLocatorLedOn_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *TurnDiskLocatorLedOn_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func TurnDiskLocatorLedOn_Task(ctx context.Context, r soap.RoundTripper, req *types.TurnDiskLocatorLedOn_Task) (*types.TurnDiskLocatorLedOn_TaskResponse, error) { - var reqBody, resBody TurnDiskLocatorLedOn_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type TurnOffFaultToleranceForVM_TaskBody struct { - Req *types.TurnOffFaultToleranceForVM_Task `xml:"urn:vim25 TurnOffFaultToleranceForVM_Task,omitempty"` - Res *types.TurnOffFaultToleranceForVM_TaskResponse `xml:"urn:vim25 TurnOffFaultToleranceForVM_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *TurnOffFaultToleranceForVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func TurnOffFaultToleranceForVM_Task(ctx context.Context, r soap.RoundTripper, req *types.TurnOffFaultToleranceForVM_Task) (*types.TurnOffFaultToleranceForVM_TaskResponse, error) { - var reqBody, resBody TurnOffFaultToleranceForVM_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UnassignUserFromGroupBody struct { - Req *types.UnassignUserFromGroup `xml:"urn:vim25 UnassignUserFromGroup,omitempty"` - Res *types.UnassignUserFromGroupResponse `xml:"urn:vim25 UnassignUserFromGroupResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UnassignUserFromGroupBody) Fault() *soap.Fault { return b.Fault_ } - -func UnassignUserFromGroup(ctx context.Context, r soap.RoundTripper, req *types.UnassignUserFromGroup) (*types.UnassignUserFromGroupResponse, error) { - var reqBody, resBody UnassignUserFromGroupBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UnbindVnicBody struct { - Req *types.UnbindVnic `xml:"urn:vim25 UnbindVnic,omitempty"` - Res *types.UnbindVnicResponse `xml:"urn:vim25 UnbindVnicResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UnbindVnicBody) Fault() *soap.Fault { return b.Fault_ } - -func UnbindVnic(ctx context.Context, r soap.RoundTripper, req *types.UnbindVnic) (*types.UnbindVnicResponse, error) { - var reqBody, resBody UnbindVnicBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UninstallHostPatch_TaskBody struct { - Req *types.UninstallHostPatch_Task `xml:"urn:vim25 UninstallHostPatch_Task,omitempty"` - Res *types.UninstallHostPatch_TaskResponse `xml:"urn:vim25 UninstallHostPatch_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UninstallHostPatch_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func UninstallHostPatch_Task(ctx context.Context, r soap.RoundTripper, req *types.UninstallHostPatch_Task) (*types.UninstallHostPatch_TaskResponse, error) { - var reqBody, resBody UninstallHostPatch_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UninstallIoFilter_TaskBody struct { - Req *types.UninstallIoFilter_Task `xml:"urn:vim25 UninstallIoFilter_Task,omitempty"` - Res *types.UninstallIoFilter_TaskResponse `xml:"urn:vim25 UninstallIoFilter_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UninstallIoFilter_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func UninstallIoFilter_Task(ctx context.Context, r soap.RoundTripper, req *types.UninstallIoFilter_Task) (*types.UninstallIoFilter_TaskResponse, error) { - var reqBody, resBody UninstallIoFilter_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UninstallServiceBody struct { - Req *types.UninstallService `xml:"urn:vim25 UninstallService,omitempty"` - Res *types.UninstallServiceResponse `xml:"urn:vim25 UninstallServiceResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UninstallServiceBody) Fault() *soap.Fault { return b.Fault_ } - -func UninstallService(ctx context.Context, r soap.RoundTripper, req *types.UninstallService) (*types.UninstallServiceResponse, error) { - var reqBody, resBody UninstallServiceBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UnmapVmfsVolumeEx_TaskBody struct { - Req *types.UnmapVmfsVolumeEx_Task `xml:"urn:vim25 UnmapVmfsVolumeEx_Task,omitempty"` - Res *types.UnmapVmfsVolumeEx_TaskResponse `xml:"urn:vim25 UnmapVmfsVolumeEx_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UnmapVmfsVolumeEx_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func UnmapVmfsVolumeEx_Task(ctx context.Context, r soap.RoundTripper, req *types.UnmapVmfsVolumeEx_Task) (*types.UnmapVmfsVolumeEx_TaskResponse, error) { - var reqBody, resBody UnmapVmfsVolumeEx_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UnmountDiskMapping_TaskBody struct { - Req *types.UnmountDiskMapping_Task `xml:"urn:vim25 UnmountDiskMapping_Task,omitempty"` - Res *types.UnmountDiskMapping_TaskResponse `xml:"urn:vim25 UnmountDiskMapping_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UnmountDiskMapping_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func UnmountDiskMapping_Task(ctx context.Context, r soap.RoundTripper, req *types.UnmountDiskMapping_Task) (*types.UnmountDiskMapping_TaskResponse, error) { - var reqBody, resBody UnmountDiskMapping_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UnmountForceMountedVmfsVolumeBody struct { - Req *types.UnmountForceMountedVmfsVolume `xml:"urn:vim25 UnmountForceMountedVmfsVolume,omitempty"` - Res *types.UnmountForceMountedVmfsVolumeResponse `xml:"urn:vim25 UnmountForceMountedVmfsVolumeResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UnmountForceMountedVmfsVolumeBody) Fault() *soap.Fault { return b.Fault_ } - -func UnmountForceMountedVmfsVolume(ctx context.Context, r soap.RoundTripper, req *types.UnmountForceMountedVmfsVolume) (*types.UnmountForceMountedVmfsVolumeResponse, error) { - var reqBody, resBody UnmountForceMountedVmfsVolumeBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UnmountToolsInstallerBody struct { - Req *types.UnmountToolsInstaller `xml:"urn:vim25 UnmountToolsInstaller,omitempty"` - Res *types.UnmountToolsInstallerResponse `xml:"urn:vim25 UnmountToolsInstallerResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UnmountToolsInstallerBody) Fault() *soap.Fault { return b.Fault_ } - -func UnmountToolsInstaller(ctx context.Context, r soap.RoundTripper, req *types.UnmountToolsInstaller) (*types.UnmountToolsInstallerResponse, error) { - var reqBody, resBody UnmountToolsInstallerBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UnmountVffsVolumeBody struct { - Req *types.UnmountVffsVolume `xml:"urn:vim25 UnmountVffsVolume,omitempty"` - Res *types.UnmountVffsVolumeResponse `xml:"urn:vim25 UnmountVffsVolumeResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UnmountVffsVolumeBody) Fault() *soap.Fault { return b.Fault_ } - -func UnmountVffsVolume(ctx context.Context, r soap.RoundTripper, req *types.UnmountVffsVolume) (*types.UnmountVffsVolumeResponse, error) { - var reqBody, resBody UnmountVffsVolumeBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UnmountVmfsVolumeBody struct { - Req *types.UnmountVmfsVolume `xml:"urn:vim25 UnmountVmfsVolume,omitempty"` - Res *types.UnmountVmfsVolumeResponse `xml:"urn:vim25 UnmountVmfsVolumeResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UnmountVmfsVolumeBody) Fault() *soap.Fault { return b.Fault_ } - -func UnmountVmfsVolume(ctx context.Context, r soap.RoundTripper, req *types.UnmountVmfsVolume) (*types.UnmountVmfsVolumeResponse, error) { - var reqBody, resBody UnmountVmfsVolumeBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UnmountVmfsVolumeEx_TaskBody struct { - Req *types.UnmountVmfsVolumeEx_Task `xml:"urn:vim25 UnmountVmfsVolumeEx_Task,omitempty"` - Res *types.UnmountVmfsVolumeEx_TaskResponse `xml:"urn:vim25 UnmountVmfsVolumeEx_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UnmountVmfsVolumeEx_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func UnmountVmfsVolumeEx_Task(ctx context.Context, r soap.RoundTripper, req *types.UnmountVmfsVolumeEx_Task) (*types.UnmountVmfsVolumeEx_TaskResponse, error) { - var reqBody, resBody UnmountVmfsVolumeEx_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UnregisterAndDestroy_TaskBody struct { - Req *types.UnregisterAndDestroy_Task `xml:"urn:vim25 UnregisterAndDestroy_Task,omitempty"` - Res *types.UnregisterAndDestroy_TaskResponse `xml:"urn:vim25 UnregisterAndDestroy_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UnregisterAndDestroy_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func UnregisterAndDestroy_Task(ctx context.Context, r soap.RoundTripper, req *types.UnregisterAndDestroy_Task) (*types.UnregisterAndDestroy_TaskResponse, error) { - var reqBody, resBody UnregisterAndDestroy_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UnregisterExtensionBody struct { - Req *types.UnregisterExtension `xml:"urn:vim25 UnregisterExtension,omitempty"` - Res *types.UnregisterExtensionResponse `xml:"urn:vim25 UnregisterExtensionResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UnregisterExtensionBody) Fault() *soap.Fault { return b.Fault_ } - -func UnregisterExtension(ctx context.Context, r soap.RoundTripper, req *types.UnregisterExtension) (*types.UnregisterExtensionResponse, error) { - var reqBody, resBody UnregisterExtensionBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UnregisterVMBody struct { - Req *types.UnregisterVM `xml:"urn:vim25 UnregisterVM,omitempty"` - Res *types.UnregisterVMResponse `xml:"urn:vim25 UnregisterVMResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UnregisterVMBody) Fault() *soap.Fault { return b.Fault_ } - -func UnregisterVM(ctx context.Context, r soap.RoundTripper, req *types.UnregisterVM) (*types.UnregisterVMResponse, error) { - var reqBody, resBody UnregisterVMBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateAnswerFile_TaskBody struct { - Req *types.UpdateAnswerFile_Task `xml:"urn:vim25 UpdateAnswerFile_Task,omitempty"` - Res *types.UpdateAnswerFile_TaskResponse `xml:"urn:vim25 UpdateAnswerFile_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateAnswerFile_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateAnswerFile_Task(ctx context.Context, r soap.RoundTripper, req *types.UpdateAnswerFile_Task) (*types.UpdateAnswerFile_TaskResponse, error) { - var reqBody, resBody UpdateAnswerFile_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateAssignedLicenseBody struct { - Req *types.UpdateAssignedLicense `xml:"urn:vim25 UpdateAssignedLicense,omitempty"` - Res *types.UpdateAssignedLicenseResponse `xml:"urn:vim25 UpdateAssignedLicenseResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateAssignedLicenseBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateAssignedLicense(ctx context.Context, r soap.RoundTripper, req *types.UpdateAssignedLicense) (*types.UpdateAssignedLicenseResponse, error) { - var reqBody, resBody UpdateAssignedLicenseBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateAuthorizationRoleBody struct { - Req *types.UpdateAuthorizationRole `xml:"urn:vim25 UpdateAuthorizationRole,omitempty"` - Res *types.UpdateAuthorizationRoleResponse `xml:"urn:vim25 UpdateAuthorizationRoleResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateAuthorizationRoleBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateAuthorizationRole(ctx context.Context, r soap.RoundTripper, req *types.UpdateAuthorizationRole) (*types.UpdateAuthorizationRoleResponse, error) { - var reqBody, resBody UpdateAuthorizationRoleBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateBootDeviceBody struct { - Req *types.UpdateBootDevice `xml:"urn:vim25 UpdateBootDevice,omitempty"` - Res *types.UpdateBootDeviceResponse `xml:"urn:vim25 UpdateBootDeviceResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateBootDeviceBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateBootDevice(ctx context.Context, r soap.RoundTripper, req *types.UpdateBootDevice) (*types.UpdateBootDeviceResponse, error) { - var reqBody, resBody UpdateBootDeviceBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateChildResourceConfigurationBody struct { - Req *types.UpdateChildResourceConfiguration `xml:"urn:vim25 UpdateChildResourceConfiguration,omitempty"` - Res *types.UpdateChildResourceConfigurationResponse `xml:"urn:vim25 UpdateChildResourceConfigurationResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateChildResourceConfigurationBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateChildResourceConfiguration(ctx context.Context, r soap.RoundTripper, req *types.UpdateChildResourceConfiguration) (*types.UpdateChildResourceConfigurationResponse, error) { - var reqBody, resBody UpdateChildResourceConfigurationBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateClusterProfileBody struct { - Req *types.UpdateClusterProfile `xml:"urn:vim25 UpdateClusterProfile,omitempty"` - Res *types.UpdateClusterProfileResponse `xml:"urn:vim25 UpdateClusterProfileResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateClusterProfileBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateClusterProfile(ctx context.Context, r soap.RoundTripper, req *types.UpdateClusterProfile) (*types.UpdateClusterProfileResponse, error) { - var reqBody, resBody UpdateClusterProfileBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateConfigBody struct { - Req *types.UpdateConfig `xml:"urn:vim25 UpdateConfig,omitempty"` - Res *types.UpdateConfigResponse `xml:"urn:vim25 UpdateConfigResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateConfigBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateConfig(ctx context.Context, r soap.RoundTripper, req *types.UpdateConfig) (*types.UpdateConfigResponse, error) { - var reqBody, resBody UpdateConfigBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateConsoleIpRouteConfigBody struct { - Req *types.UpdateConsoleIpRouteConfig `xml:"urn:vim25 UpdateConsoleIpRouteConfig,omitempty"` - Res *types.UpdateConsoleIpRouteConfigResponse `xml:"urn:vim25 UpdateConsoleIpRouteConfigResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateConsoleIpRouteConfigBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateConsoleIpRouteConfig(ctx context.Context, r soap.RoundTripper, req *types.UpdateConsoleIpRouteConfig) (*types.UpdateConsoleIpRouteConfigResponse, error) { - var reqBody, resBody UpdateConsoleIpRouteConfigBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateCounterLevelMappingBody struct { - Req *types.UpdateCounterLevelMapping `xml:"urn:vim25 UpdateCounterLevelMapping,omitempty"` - Res *types.UpdateCounterLevelMappingResponse `xml:"urn:vim25 UpdateCounterLevelMappingResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateCounterLevelMappingBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateCounterLevelMapping(ctx context.Context, r soap.RoundTripper, req *types.UpdateCounterLevelMapping) (*types.UpdateCounterLevelMappingResponse, error) { - var reqBody, resBody UpdateCounterLevelMappingBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateDVSHealthCheckConfig_TaskBody struct { - Req *types.UpdateDVSHealthCheckConfig_Task `xml:"urn:vim25 UpdateDVSHealthCheckConfig_Task,omitempty"` - Res *types.UpdateDVSHealthCheckConfig_TaskResponse `xml:"urn:vim25 UpdateDVSHealthCheckConfig_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateDVSHealthCheckConfig_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateDVSHealthCheckConfig_Task(ctx context.Context, r soap.RoundTripper, req *types.UpdateDVSHealthCheckConfig_Task) (*types.UpdateDVSHealthCheckConfig_TaskResponse, error) { - var reqBody, resBody UpdateDVSHealthCheckConfig_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateDVSLacpGroupConfig_TaskBody struct { - Req *types.UpdateDVSLacpGroupConfig_Task `xml:"urn:vim25 UpdateDVSLacpGroupConfig_Task,omitempty"` - Res *types.UpdateDVSLacpGroupConfig_TaskResponse `xml:"urn:vim25 UpdateDVSLacpGroupConfig_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateDVSLacpGroupConfig_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateDVSLacpGroupConfig_Task(ctx context.Context, r soap.RoundTripper, req *types.UpdateDVSLacpGroupConfig_Task) (*types.UpdateDVSLacpGroupConfig_TaskResponse, error) { - var reqBody, resBody UpdateDVSLacpGroupConfig_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateDateTimeBody struct { - Req *types.UpdateDateTime `xml:"urn:vim25 UpdateDateTime,omitempty"` - Res *types.UpdateDateTimeResponse `xml:"urn:vim25 UpdateDateTimeResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateDateTimeBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateDateTime(ctx context.Context, r soap.RoundTripper, req *types.UpdateDateTime) (*types.UpdateDateTimeResponse, error) { - var reqBody, resBody UpdateDateTimeBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateDateTimeConfigBody struct { - Req *types.UpdateDateTimeConfig `xml:"urn:vim25 UpdateDateTimeConfig,omitempty"` - Res *types.UpdateDateTimeConfigResponse `xml:"urn:vim25 UpdateDateTimeConfigResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateDateTimeConfigBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateDateTimeConfig(ctx context.Context, r soap.RoundTripper, req *types.UpdateDateTimeConfig) (*types.UpdateDateTimeConfigResponse, error) { - var reqBody, resBody UpdateDateTimeConfigBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateDefaultPolicyBody struct { - Req *types.UpdateDefaultPolicy `xml:"urn:vim25 UpdateDefaultPolicy,omitempty"` - Res *types.UpdateDefaultPolicyResponse `xml:"urn:vim25 UpdateDefaultPolicyResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateDefaultPolicyBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateDefaultPolicy(ctx context.Context, r soap.RoundTripper, req *types.UpdateDefaultPolicy) (*types.UpdateDefaultPolicyResponse, error) { - var reqBody, resBody UpdateDefaultPolicyBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateDiskPartitionsBody struct { - Req *types.UpdateDiskPartitions `xml:"urn:vim25 UpdateDiskPartitions,omitempty"` - Res *types.UpdateDiskPartitionsResponse `xml:"urn:vim25 UpdateDiskPartitionsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateDiskPartitionsBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateDiskPartitions(ctx context.Context, r soap.RoundTripper, req *types.UpdateDiskPartitions) (*types.UpdateDiskPartitionsResponse, error) { - var reqBody, resBody UpdateDiskPartitionsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateDnsConfigBody struct { - Req *types.UpdateDnsConfig `xml:"urn:vim25 UpdateDnsConfig,omitempty"` - Res *types.UpdateDnsConfigResponse `xml:"urn:vim25 UpdateDnsConfigResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateDnsConfigBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateDnsConfig(ctx context.Context, r soap.RoundTripper, req *types.UpdateDnsConfig) (*types.UpdateDnsConfigResponse, error) { - var reqBody, resBody UpdateDnsConfigBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateDvsCapabilityBody struct { - Req *types.UpdateDvsCapability `xml:"urn:vim25 UpdateDvsCapability,omitempty"` - Res *types.UpdateDvsCapabilityResponse `xml:"urn:vim25 UpdateDvsCapabilityResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateDvsCapabilityBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateDvsCapability(ctx context.Context, r soap.RoundTripper, req *types.UpdateDvsCapability) (*types.UpdateDvsCapabilityResponse, error) { - var reqBody, resBody UpdateDvsCapabilityBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateExtensionBody struct { - Req *types.UpdateExtension `xml:"urn:vim25 UpdateExtension,omitempty"` - Res *types.UpdateExtensionResponse `xml:"urn:vim25 UpdateExtensionResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateExtensionBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateExtension(ctx context.Context, r soap.RoundTripper, req *types.UpdateExtension) (*types.UpdateExtensionResponse, error) { - var reqBody, resBody UpdateExtensionBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateFlagsBody struct { - Req *types.UpdateFlags `xml:"urn:vim25 UpdateFlags,omitempty"` - Res *types.UpdateFlagsResponse `xml:"urn:vim25 UpdateFlagsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateFlagsBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateFlags(ctx context.Context, r soap.RoundTripper, req *types.UpdateFlags) (*types.UpdateFlagsResponse, error) { - var reqBody, resBody UpdateFlagsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateHostImageAcceptanceLevelBody struct { - Req *types.UpdateHostImageAcceptanceLevel `xml:"urn:vim25 UpdateHostImageAcceptanceLevel,omitempty"` - Res *types.UpdateHostImageAcceptanceLevelResponse `xml:"urn:vim25 UpdateHostImageAcceptanceLevelResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateHostImageAcceptanceLevelBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateHostImageAcceptanceLevel(ctx context.Context, r soap.RoundTripper, req *types.UpdateHostImageAcceptanceLevel) (*types.UpdateHostImageAcceptanceLevelResponse, error) { - var reqBody, resBody UpdateHostImageAcceptanceLevelBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateHostProfileBody struct { - Req *types.UpdateHostProfile `xml:"urn:vim25 UpdateHostProfile,omitempty"` - Res *types.UpdateHostProfileResponse `xml:"urn:vim25 UpdateHostProfileResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateHostProfileBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateHostProfile(ctx context.Context, r soap.RoundTripper, req *types.UpdateHostProfile) (*types.UpdateHostProfileResponse, error) { - var reqBody, resBody UpdateHostProfileBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateInternetScsiAdvancedOptionsBody struct { - Req *types.UpdateInternetScsiAdvancedOptions `xml:"urn:vim25 UpdateInternetScsiAdvancedOptions,omitempty"` - Res *types.UpdateInternetScsiAdvancedOptionsResponse `xml:"urn:vim25 UpdateInternetScsiAdvancedOptionsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateInternetScsiAdvancedOptionsBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateInternetScsiAdvancedOptions(ctx context.Context, r soap.RoundTripper, req *types.UpdateInternetScsiAdvancedOptions) (*types.UpdateInternetScsiAdvancedOptionsResponse, error) { - var reqBody, resBody UpdateInternetScsiAdvancedOptionsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateInternetScsiAliasBody struct { - Req *types.UpdateInternetScsiAlias `xml:"urn:vim25 UpdateInternetScsiAlias,omitempty"` - Res *types.UpdateInternetScsiAliasResponse `xml:"urn:vim25 UpdateInternetScsiAliasResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateInternetScsiAliasBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateInternetScsiAlias(ctx context.Context, r soap.RoundTripper, req *types.UpdateInternetScsiAlias) (*types.UpdateInternetScsiAliasResponse, error) { - var reqBody, resBody UpdateInternetScsiAliasBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateInternetScsiAuthenticationPropertiesBody struct { - Req *types.UpdateInternetScsiAuthenticationProperties `xml:"urn:vim25 UpdateInternetScsiAuthenticationProperties,omitempty"` - Res *types.UpdateInternetScsiAuthenticationPropertiesResponse `xml:"urn:vim25 UpdateInternetScsiAuthenticationPropertiesResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateInternetScsiAuthenticationPropertiesBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateInternetScsiAuthenticationProperties(ctx context.Context, r soap.RoundTripper, req *types.UpdateInternetScsiAuthenticationProperties) (*types.UpdateInternetScsiAuthenticationPropertiesResponse, error) { - var reqBody, resBody UpdateInternetScsiAuthenticationPropertiesBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateInternetScsiDigestPropertiesBody struct { - Req *types.UpdateInternetScsiDigestProperties `xml:"urn:vim25 UpdateInternetScsiDigestProperties,omitempty"` - Res *types.UpdateInternetScsiDigestPropertiesResponse `xml:"urn:vim25 UpdateInternetScsiDigestPropertiesResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateInternetScsiDigestPropertiesBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateInternetScsiDigestProperties(ctx context.Context, r soap.RoundTripper, req *types.UpdateInternetScsiDigestProperties) (*types.UpdateInternetScsiDigestPropertiesResponse, error) { - var reqBody, resBody UpdateInternetScsiDigestPropertiesBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateInternetScsiDiscoveryPropertiesBody struct { - Req *types.UpdateInternetScsiDiscoveryProperties `xml:"urn:vim25 UpdateInternetScsiDiscoveryProperties,omitempty"` - Res *types.UpdateInternetScsiDiscoveryPropertiesResponse `xml:"urn:vim25 UpdateInternetScsiDiscoveryPropertiesResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateInternetScsiDiscoveryPropertiesBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateInternetScsiDiscoveryProperties(ctx context.Context, r soap.RoundTripper, req *types.UpdateInternetScsiDiscoveryProperties) (*types.UpdateInternetScsiDiscoveryPropertiesResponse, error) { - var reqBody, resBody UpdateInternetScsiDiscoveryPropertiesBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateInternetScsiIPPropertiesBody struct { - Req *types.UpdateInternetScsiIPProperties `xml:"urn:vim25 UpdateInternetScsiIPProperties,omitempty"` - Res *types.UpdateInternetScsiIPPropertiesResponse `xml:"urn:vim25 UpdateInternetScsiIPPropertiesResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateInternetScsiIPPropertiesBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateInternetScsiIPProperties(ctx context.Context, r soap.RoundTripper, req *types.UpdateInternetScsiIPProperties) (*types.UpdateInternetScsiIPPropertiesResponse, error) { - var reqBody, resBody UpdateInternetScsiIPPropertiesBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateInternetScsiNameBody struct { - Req *types.UpdateInternetScsiName `xml:"urn:vim25 UpdateInternetScsiName,omitempty"` - Res *types.UpdateInternetScsiNameResponse `xml:"urn:vim25 UpdateInternetScsiNameResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateInternetScsiNameBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateInternetScsiName(ctx context.Context, r soap.RoundTripper, req *types.UpdateInternetScsiName) (*types.UpdateInternetScsiNameResponse, error) { - var reqBody, resBody UpdateInternetScsiNameBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateIpConfigBody struct { - Req *types.UpdateIpConfig `xml:"urn:vim25 UpdateIpConfig,omitempty"` - Res *types.UpdateIpConfigResponse `xml:"urn:vim25 UpdateIpConfigResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateIpConfigBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateIpConfig(ctx context.Context, r soap.RoundTripper, req *types.UpdateIpConfig) (*types.UpdateIpConfigResponse, error) { - var reqBody, resBody UpdateIpConfigBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateIpPoolBody struct { - Req *types.UpdateIpPool `xml:"urn:vim25 UpdateIpPool,omitempty"` - Res *types.UpdateIpPoolResponse `xml:"urn:vim25 UpdateIpPoolResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateIpPoolBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateIpPool(ctx context.Context, r soap.RoundTripper, req *types.UpdateIpPool) (*types.UpdateIpPoolResponse, error) { - var reqBody, resBody UpdateIpPoolBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateIpRouteConfigBody struct { - Req *types.UpdateIpRouteConfig `xml:"urn:vim25 UpdateIpRouteConfig,omitempty"` - Res *types.UpdateIpRouteConfigResponse `xml:"urn:vim25 UpdateIpRouteConfigResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateIpRouteConfigBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateIpRouteConfig(ctx context.Context, r soap.RoundTripper, req *types.UpdateIpRouteConfig) (*types.UpdateIpRouteConfigResponse, error) { - var reqBody, resBody UpdateIpRouteConfigBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateIpRouteTableConfigBody struct { - Req *types.UpdateIpRouteTableConfig `xml:"urn:vim25 UpdateIpRouteTableConfig,omitempty"` - Res *types.UpdateIpRouteTableConfigResponse `xml:"urn:vim25 UpdateIpRouteTableConfigResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateIpRouteTableConfigBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateIpRouteTableConfig(ctx context.Context, r soap.RoundTripper, req *types.UpdateIpRouteTableConfig) (*types.UpdateIpRouteTableConfigResponse, error) { - var reqBody, resBody UpdateIpRouteTableConfigBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateIpmiBody struct { - Req *types.UpdateIpmi `xml:"urn:vim25 UpdateIpmi,omitempty"` - Res *types.UpdateIpmiResponse `xml:"urn:vim25 UpdateIpmiResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateIpmiBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateIpmi(ctx context.Context, r soap.RoundTripper, req *types.UpdateIpmi) (*types.UpdateIpmiResponse, error) { - var reqBody, resBody UpdateIpmiBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateLicenseBody struct { - Req *types.UpdateLicense `xml:"urn:vim25 UpdateLicense,omitempty"` - Res *types.UpdateLicenseResponse `xml:"urn:vim25 UpdateLicenseResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateLicenseBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateLicense(ctx context.Context, r soap.RoundTripper, req *types.UpdateLicense) (*types.UpdateLicenseResponse, error) { - var reqBody, resBody UpdateLicenseBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateLicenseLabelBody struct { - Req *types.UpdateLicenseLabel `xml:"urn:vim25 UpdateLicenseLabel,omitempty"` - Res *types.UpdateLicenseLabelResponse `xml:"urn:vim25 UpdateLicenseLabelResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateLicenseLabelBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateLicenseLabel(ctx context.Context, r soap.RoundTripper, req *types.UpdateLicenseLabel) (*types.UpdateLicenseLabelResponse, error) { - var reqBody, resBody UpdateLicenseLabelBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateLinkedChildrenBody struct { - Req *types.UpdateLinkedChildren `xml:"urn:vim25 UpdateLinkedChildren,omitempty"` - Res *types.UpdateLinkedChildrenResponse `xml:"urn:vim25 UpdateLinkedChildrenResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateLinkedChildrenBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateLinkedChildren(ctx context.Context, r soap.RoundTripper, req *types.UpdateLinkedChildren) (*types.UpdateLinkedChildrenResponse, error) { - var reqBody, resBody UpdateLinkedChildrenBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateLocalSwapDatastoreBody struct { - Req *types.UpdateLocalSwapDatastore `xml:"urn:vim25 UpdateLocalSwapDatastore,omitempty"` - Res *types.UpdateLocalSwapDatastoreResponse `xml:"urn:vim25 UpdateLocalSwapDatastoreResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateLocalSwapDatastoreBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateLocalSwapDatastore(ctx context.Context, r soap.RoundTripper, req *types.UpdateLocalSwapDatastore) (*types.UpdateLocalSwapDatastoreResponse, error) { - var reqBody, resBody UpdateLocalSwapDatastoreBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateLockdownExceptionsBody struct { - Req *types.UpdateLockdownExceptions `xml:"urn:vim25 UpdateLockdownExceptions,omitempty"` - Res *types.UpdateLockdownExceptionsResponse `xml:"urn:vim25 UpdateLockdownExceptionsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateLockdownExceptionsBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateLockdownExceptions(ctx context.Context, r soap.RoundTripper, req *types.UpdateLockdownExceptions) (*types.UpdateLockdownExceptionsResponse, error) { - var reqBody, resBody UpdateLockdownExceptionsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateModuleOptionStringBody struct { - Req *types.UpdateModuleOptionString `xml:"urn:vim25 UpdateModuleOptionString,omitempty"` - Res *types.UpdateModuleOptionStringResponse `xml:"urn:vim25 UpdateModuleOptionStringResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateModuleOptionStringBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateModuleOptionString(ctx context.Context, r soap.RoundTripper, req *types.UpdateModuleOptionString) (*types.UpdateModuleOptionStringResponse, error) { - var reqBody, resBody UpdateModuleOptionStringBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateNetworkConfigBody struct { - Req *types.UpdateNetworkConfig `xml:"urn:vim25 UpdateNetworkConfig,omitempty"` - Res *types.UpdateNetworkConfigResponse `xml:"urn:vim25 UpdateNetworkConfigResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateNetworkConfigBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateNetworkConfig(ctx context.Context, r soap.RoundTripper, req *types.UpdateNetworkConfig) (*types.UpdateNetworkConfigResponse, error) { - var reqBody, resBody UpdateNetworkConfigBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateNetworkResourcePoolBody struct { - Req *types.UpdateNetworkResourcePool `xml:"urn:vim25 UpdateNetworkResourcePool,omitempty"` - Res *types.UpdateNetworkResourcePoolResponse `xml:"urn:vim25 UpdateNetworkResourcePoolResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateNetworkResourcePoolBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateNetworkResourcePool(ctx context.Context, r soap.RoundTripper, req *types.UpdateNetworkResourcePool) (*types.UpdateNetworkResourcePoolResponse, error) { - var reqBody, resBody UpdateNetworkResourcePoolBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateOptionsBody struct { - Req *types.UpdateOptions `xml:"urn:vim25 UpdateOptions,omitempty"` - Res *types.UpdateOptionsResponse `xml:"urn:vim25 UpdateOptionsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateOptionsBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateOptions(ctx context.Context, r soap.RoundTripper, req *types.UpdateOptions) (*types.UpdateOptionsResponse, error) { - var reqBody, resBody UpdateOptionsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdatePassthruConfigBody struct { - Req *types.UpdatePassthruConfig `xml:"urn:vim25 UpdatePassthruConfig,omitempty"` - Res *types.UpdatePassthruConfigResponse `xml:"urn:vim25 UpdatePassthruConfigResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdatePassthruConfigBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdatePassthruConfig(ctx context.Context, r soap.RoundTripper, req *types.UpdatePassthruConfig) (*types.UpdatePassthruConfigResponse, error) { - var reqBody, resBody UpdatePassthruConfigBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdatePerfIntervalBody struct { - Req *types.UpdatePerfInterval `xml:"urn:vim25 UpdatePerfInterval,omitempty"` - Res *types.UpdatePerfIntervalResponse `xml:"urn:vim25 UpdatePerfIntervalResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdatePerfIntervalBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdatePerfInterval(ctx context.Context, r soap.RoundTripper, req *types.UpdatePerfInterval) (*types.UpdatePerfIntervalResponse, error) { - var reqBody, resBody UpdatePerfIntervalBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdatePhysicalNicLinkSpeedBody struct { - Req *types.UpdatePhysicalNicLinkSpeed `xml:"urn:vim25 UpdatePhysicalNicLinkSpeed,omitempty"` - Res *types.UpdatePhysicalNicLinkSpeedResponse `xml:"urn:vim25 UpdatePhysicalNicLinkSpeedResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdatePhysicalNicLinkSpeedBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdatePhysicalNicLinkSpeed(ctx context.Context, r soap.RoundTripper, req *types.UpdatePhysicalNicLinkSpeed) (*types.UpdatePhysicalNicLinkSpeedResponse, error) { - var reqBody, resBody UpdatePhysicalNicLinkSpeedBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdatePortGroupBody struct { - Req *types.UpdatePortGroup `xml:"urn:vim25 UpdatePortGroup,omitempty"` - Res *types.UpdatePortGroupResponse `xml:"urn:vim25 UpdatePortGroupResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdatePortGroupBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdatePortGroup(ctx context.Context, r soap.RoundTripper, req *types.UpdatePortGroup) (*types.UpdatePortGroupResponse, error) { - var reqBody, resBody UpdatePortGroupBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateProgressBody struct { - Req *types.UpdateProgress `xml:"urn:vim25 UpdateProgress,omitempty"` - Res *types.UpdateProgressResponse `xml:"urn:vim25 UpdateProgressResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateProgressBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateProgress(ctx context.Context, r soap.RoundTripper, req *types.UpdateProgress) (*types.UpdateProgressResponse, error) { - var reqBody, resBody UpdateProgressBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateReferenceHostBody struct { - Req *types.UpdateReferenceHost `xml:"urn:vim25 UpdateReferenceHost,omitempty"` - Res *types.UpdateReferenceHostResponse `xml:"urn:vim25 UpdateReferenceHostResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateReferenceHostBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateReferenceHost(ctx context.Context, r soap.RoundTripper, req *types.UpdateReferenceHost) (*types.UpdateReferenceHostResponse, error) { - var reqBody, resBody UpdateReferenceHostBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateRulesetBody struct { - Req *types.UpdateRuleset `xml:"urn:vim25 UpdateRuleset,omitempty"` - Res *types.UpdateRulesetResponse `xml:"urn:vim25 UpdateRulesetResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateRulesetBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateRuleset(ctx context.Context, r soap.RoundTripper, req *types.UpdateRuleset) (*types.UpdateRulesetResponse, error) { - var reqBody, resBody UpdateRulesetBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateScsiLunDisplayNameBody struct { - Req *types.UpdateScsiLunDisplayName `xml:"urn:vim25 UpdateScsiLunDisplayName,omitempty"` - Res *types.UpdateScsiLunDisplayNameResponse `xml:"urn:vim25 UpdateScsiLunDisplayNameResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateScsiLunDisplayNameBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateScsiLunDisplayName(ctx context.Context, r soap.RoundTripper, req *types.UpdateScsiLunDisplayName) (*types.UpdateScsiLunDisplayNameResponse, error) { - var reqBody, resBody UpdateScsiLunDisplayNameBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateServiceConsoleVirtualNicBody struct { - Req *types.UpdateServiceConsoleVirtualNic `xml:"urn:vim25 UpdateServiceConsoleVirtualNic,omitempty"` - Res *types.UpdateServiceConsoleVirtualNicResponse `xml:"urn:vim25 UpdateServiceConsoleVirtualNicResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateServiceConsoleVirtualNicBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateServiceConsoleVirtualNic(ctx context.Context, r soap.RoundTripper, req *types.UpdateServiceConsoleVirtualNic) (*types.UpdateServiceConsoleVirtualNicResponse, error) { - var reqBody, resBody UpdateServiceConsoleVirtualNicBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateServiceMessageBody struct { - Req *types.UpdateServiceMessage `xml:"urn:vim25 UpdateServiceMessage,omitempty"` - Res *types.UpdateServiceMessageResponse `xml:"urn:vim25 UpdateServiceMessageResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateServiceMessageBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateServiceMessage(ctx context.Context, r soap.RoundTripper, req *types.UpdateServiceMessage) (*types.UpdateServiceMessageResponse, error) { - var reqBody, resBody UpdateServiceMessageBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateServicePolicyBody struct { - Req *types.UpdateServicePolicy `xml:"urn:vim25 UpdateServicePolicy,omitempty"` - Res *types.UpdateServicePolicyResponse `xml:"urn:vim25 UpdateServicePolicyResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateServicePolicyBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateServicePolicy(ctx context.Context, r soap.RoundTripper, req *types.UpdateServicePolicy) (*types.UpdateServicePolicyResponse, error) { - var reqBody, resBody UpdateServicePolicyBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateSoftwareInternetScsiEnabledBody struct { - Req *types.UpdateSoftwareInternetScsiEnabled `xml:"urn:vim25 UpdateSoftwareInternetScsiEnabled,omitempty"` - Res *types.UpdateSoftwareInternetScsiEnabledResponse `xml:"urn:vim25 UpdateSoftwareInternetScsiEnabledResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateSoftwareInternetScsiEnabledBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateSoftwareInternetScsiEnabled(ctx context.Context, r soap.RoundTripper, req *types.UpdateSoftwareInternetScsiEnabled) (*types.UpdateSoftwareInternetScsiEnabledResponse, error) { - var reqBody, resBody UpdateSoftwareInternetScsiEnabledBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateSystemResourcesBody struct { - Req *types.UpdateSystemResources `xml:"urn:vim25 UpdateSystemResources,omitempty"` - Res *types.UpdateSystemResourcesResponse `xml:"urn:vim25 UpdateSystemResourcesResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateSystemResourcesBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateSystemResources(ctx context.Context, r soap.RoundTripper, req *types.UpdateSystemResources) (*types.UpdateSystemResourcesResponse, error) { - var reqBody, resBody UpdateSystemResourcesBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateSystemSwapConfigurationBody struct { - Req *types.UpdateSystemSwapConfiguration `xml:"urn:vim25 UpdateSystemSwapConfiguration,omitempty"` - Res *types.UpdateSystemSwapConfigurationResponse `xml:"urn:vim25 UpdateSystemSwapConfigurationResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateSystemSwapConfigurationBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateSystemSwapConfiguration(ctx context.Context, r soap.RoundTripper, req *types.UpdateSystemSwapConfiguration) (*types.UpdateSystemSwapConfigurationResponse, error) { - var reqBody, resBody UpdateSystemSwapConfigurationBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateSystemUsersBody struct { - Req *types.UpdateSystemUsers `xml:"urn:vim25 UpdateSystemUsers,omitempty"` - Res *types.UpdateSystemUsersResponse `xml:"urn:vim25 UpdateSystemUsersResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateSystemUsersBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateSystemUsers(ctx context.Context, r soap.RoundTripper, req *types.UpdateSystemUsers) (*types.UpdateSystemUsersResponse, error) { - var reqBody, resBody UpdateSystemUsersBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateUserBody struct { - Req *types.UpdateUser `xml:"urn:vim25 UpdateUser,omitempty"` - Res *types.UpdateUserResponse `xml:"urn:vim25 UpdateUserResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateUserBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateUser(ctx context.Context, r soap.RoundTripper, req *types.UpdateUser) (*types.UpdateUserResponse, error) { - var reqBody, resBody UpdateUserBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateVAppConfigBody struct { - Req *types.UpdateVAppConfig `xml:"urn:vim25 UpdateVAppConfig,omitempty"` - Res *types.UpdateVAppConfigResponse `xml:"urn:vim25 UpdateVAppConfigResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateVAppConfigBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateVAppConfig(ctx context.Context, r soap.RoundTripper, req *types.UpdateVAppConfig) (*types.UpdateVAppConfigResponse, error) { - var reqBody, resBody UpdateVAppConfigBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateVirtualMachineFiles_TaskBody struct { - Req *types.UpdateVirtualMachineFiles_Task `xml:"urn:vim25 UpdateVirtualMachineFiles_Task,omitempty"` - Res *types.UpdateVirtualMachineFiles_TaskResponse `xml:"urn:vim25 UpdateVirtualMachineFiles_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateVirtualMachineFiles_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateVirtualMachineFiles_Task(ctx context.Context, r soap.RoundTripper, req *types.UpdateVirtualMachineFiles_Task) (*types.UpdateVirtualMachineFiles_TaskResponse, error) { - var reqBody, resBody UpdateVirtualMachineFiles_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateVirtualNicBody struct { - Req *types.UpdateVirtualNic `xml:"urn:vim25 UpdateVirtualNic,omitempty"` - Res *types.UpdateVirtualNicResponse `xml:"urn:vim25 UpdateVirtualNicResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateVirtualNicBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateVirtualNic(ctx context.Context, r soap.RoundTripper, req *types.UpdateVirtualNic) (*types.UpdateVirtualNicResponse, error) { - var reqBody, resBody UpdateVirtualNicBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateVirtualSwitchBody struct { - Req *types.UpdateVirtualSwitch `xml:"urn:vim25 UpdateVirtualSwitch,omitempty"` - Res *types.UpdateVirtualSwitchResponse `xml:"urn:vim25 UpdateVirtualSwitchResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateVirtualSwitchBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateVirtualSwitch(ctx context.Context, r soap.RoundTripper, req *types.UpdateVirtualSwitch) (*types.UpdateVirtualSwitchResponse, error) { - var reqBody, resBody UpdateVirtualSwitchBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpdateVsan_TaskBody struct { - Req *types.UpdateVsan_Task `xml:"urn:vim25 UpdateVsan_Task,omitempty"` - Res *types.UpdateVsan_TaskResponse `xml:"urn:vim25 UpdateVsan_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpdateVsan_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func UpdateVsan_Task(ctx context.Context, r soap.RoundTripper, req *types.UpdateVsan_Task) (*types.UpdateVsan_TaskResponse, error) { - var reqBody, resBody UpdateVsan_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpgradeIoFilter_TaskBody struct { - Req *types.UpgradeIoFilter_Task `xml:"urn:vim25 UpgradeIoFilter_Task,omitempty"` - Res *types.UpgradeIoFilter_TaskResponse `xml:"urn:vim25 UpgradeIoFilter_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpgradeIoFilter_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func UpgradeIoFilter_Task(ctx context.Context, r soap.RoundTripper, req *types.UpgradeIoFilter_Task) (*types.UpgradeIoFilter_TaskResponse, error) { - var reqBody, resBody UpgradeIoFilter_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpgradeTools_TaskBody struct { - Req *types.UpgradeTools_Task `xml:"urn:vim25 UpgradeTools_Task,omitempty"` - Res *types.UpgradeTools_TaskResponse `xml:"urn:vim25 UpgradeTools_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpgradeTools_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func UpgradeTools_Task(ctx context.Context, r soap.RoundTripper, req *types.UpgradeTools_Task) (*types.UpgradeTools_TaskResponse, error) { - var reqBody, resBody UpgradeTools_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpgradeVM_TaskBody struct { - Req *types.UpgradeVM_Task `xml:"urn:vim25 UpgradeVM_Task,omitempty"` - Res *types.UpgradeVM_TaskResponse `xml:"urn:vim25 UpgradeVM_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpgradeVM_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func UpgradeVM_Task(ctx context.Context, r soap.RoundTripper, req *types.UpgradeVM_Task) (*types.UpgradeVM_TaskResponse, error) { - var reqBody, resBody UpgradeVM_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpgradeVmLayoutBody struct { - Req *types.UpgradeVmLayout `xml:"urn:vim25 UpgradeVmLayout,omitempty"` - Res *types.UpgradeVmLayoutResponse `xml:"urn:vim25 UpgradeVmLayoutResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpgradeVmLayoutBody) Fault() *soap.Fault { return b.Fault_ } - -func UpgradeVmLayout(ctx context.Context, r soap.RoundTripper, req *types.UpgradeVmLayout) (*types.UpgradeVmLayoutResponse, error) { - var reqBody, resBody UpgradeVmLayoutBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpgradeVmfsBody struct { - Req *types.UpgradeVmfs `xml:"urn:vim25 UpgradeVmfs,omitempty"` - Res *types.UpgradeVmfsResponse `xml:"urn:vim25 UpgradeVmfsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpgradeVmfsBody) Fault() *soap.Fault { return b.Fault_ } - -func UpgradeVmfs(ctx context.Context, r soap.RoundTripper, req *types.UpgradeVmfs) (*types.UpgradeVmfsResponse, error) { - var reqBody, resBody UpgradeVmfsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type UpgradeVsanObjectsBody struct { - Req *types.UpgradeVsanObjects `xml:"urn:vim25 UpgradeVsanObjects,omitempty"` - Res *types.UpgradeVsanObjectsResponse `xml:"urn:vim25 UpgradeVsanObjectsResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *UpgradeVsanObjectsBody) Fault() *soap.Fault { return b.Fault_ } - -func UpgradeVsanObjects(ctx context.Context, r soap.RoundTripper, req *types.UpgradeVsanObjects) (*types.UpgradeVsanObjectsResponse, error) { - var reqBody, resBody UpgradeVsanObjectsBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ValidateCredentialsInGuestBody struct { - Req *types.ValidateCredentialsInGuest `xml:"urn:vim25 ValidateCredentialsInGuest,omitempty"` - Res *types.ValidateCredentialsInGuestResponse `xml:"urn:vim25 ValidateCredentialsInGuestResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ValidateCredentialsInGuestBody) Fault() *soap.Fault { return b.Fault_ } - -func ValidateCredentialsInGuest(ctx context.Context, r soap.RoundTripper, req *types.ValidateCredentialsInGuest) (*types.ValidateCredentialsInGuestResponse, error) { - var reqBody, resBody ValidateCredentialsInGuestBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ValidateHostBody struct { - Req *types.ValidateHost `xml:"urn:vim25 ValidateHost,omitempty"` - Res *types.ValidateHostResponse `xml:"urn:vim25 ValidateHostResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ValidateHostBody) Fault() *soap.Fault { return b.Fault_ } - -func ValidateHost(ctx context.Context, r soap.RoundTripper, req *types.ValidateHost) (*types.ValidateHostResponse, error) { - var reqBody, resBody ValidateHostBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ValidateMigrationBody struct { - Req *types.ValidateMigration `xml:"urn:vim25 ValidateMigration,omitempty"` - Res *types.ValidateMigrationResponse `xml:"urn:vim25 ValidateMigrationResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ValidateMigrationBody) Fault() *soap.Fault { return b.Fault_ } - -func ValidateMigration(ctx context.Context, r soap.RoundTripper, req *types.ValidateMigration) (*types.ValidateMigrationResponse, error) { - var reqBody, resBody ValidateMigrationBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type WaitForUpdatesBody struct { - Req *types.WaitForUpdates `xml:"urn:vim25 WaitForUpdates,omitempty"` - Res *types.WaitForUpdatesResponse `xml:"urn:vim25 WaitForUpdatesResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *WaitForUpdatesBody) Fault() *soap.Fault { return b.Fault_ } - -func WaitForUpdates(ctx context.Context, r soap.RoundTripper, req *types.WaitForUpdates) (*types.WaitForUpdatesResponse, error) { - var reqBody, resBody WaitForUpdatesBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type WaitForUpdatesExBody struct { - Req *types.WaitForUpdatesEx `xml:"urn:vim25 WaitForUpdatesEx,omitempty"` - Res *types.WaitForUpdatesExResponse `xml:"urn:vim25 WaitForUpdatesExResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *WaitForUpdatesExBody) Fault() *soap.Fault { return b.Fault_ } - -func WaitForUpdatesEx(ctx context.Context, r soap.RoundTripper, req *types.WaitForUpdatesEx) (*types.WaitForUpdatesExResponse, error) { - var reqBody, resBody WaitForUpdatesExBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type XmlToCustomizationSpecItemBody struct { - Req *types.XmlToCustomizationSpecItem `xml:"urn:vim25 XmlToCustomizationSpecItem,omitempty"` - Res *types.XmlToCustomizationSpecItemResponse `xml:"urn:vim25 XmlToCustomizationSpecItemResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *XmlToCustomizationSpecItemBody) Fault() *soap.Fault { return b.Fault_ } - -func XmlToCustomizationSpecItem(ctx context.Context, r soap.RoundTripper, req *types.XmlToCustomizationSpecItem) (*types.XmlToCustomizationSpecItemResponse, error) { - var reqBody, resBody XmlToCustomizationSpecItemBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} - -type ZeroFillVirtualDisk_TaskBody struct { - Req *types.ZeroFillVirtualDisk_Task `xml:"urn:vim25 ZeroFillVirtualDisk_Task,omitempty"` - Res *types.ZeroFillVirtualDisk_TaskResponse `xml:"urn:vim25 ZeroFillVirtualDisk_TaskResponse,omitempty"` - Fault_ *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"` -} - -func (b *ZeroFillVirtualDisk_TaskBody) Fault() *soap.Fault { return b.Fault_ } - -func ZeroFillVirtualDisk_Task(ctx context.Context, r soap.RoundTripper, req *types.ZeroFillVirtualDisk_Task) (*types.ZeroFillVirtualDisk_TaskResponse, error) { - var reqBody, resBody ZeroFillVirtualDisk_TaskBody - - reqBody.Req = req - - if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil { - return nil, err - } - - return resBody.Res, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/methods/service_content.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/methods/service_content.go deleted file mode 100644 index f685fdc2..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/methods/service_content.go +++ /dev/null @@ -1,56 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package methods - -import ( - "time" - - "github.com/vmware/govmomi/vim25/soap" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -var serviceInstance = types.ManagedObjectReference{ - Type: "ServiceInstance", - Value: "ServiceInstance", -} - -func GetServiceContent(ctx context.Context, r soap.RoundTripper) (types.ServiceContent, error) { - req := types.RetrieveServiceContent{ - This: serviceInstance, - } - - res, err := RetrieveServiceContent(ctx, r, &req) - if err != nil { - return types.ServiceContent{}, err - } - - return res.Returnval, nil -} - -func GetCurrentTime(ctx context.Context, r soap.RoundTripper) (*time.Time, error) { - req := types.CurrentTime{ - This: serviceInstance, - } - - res, err := CurrentTime(ctx, r, &req) - if err != nil { - return nil, err - } - - return &res.Returnval, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/ancestors.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/ancestors.go deleted file mode 100644 index 4bea1552..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/ancestors.go +++ /dev/null @@ -1,92 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package mo - -import ( - "github.com/vmware/govmomi/vim25/soap" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -// Ancestors returns the entire ancestry tree of a specified managed object. -// The return value includes the root node and the specified object itself. -func Ancestors(ctx context.Context, rt soap.RoundTripper, pc, obj types.ManagedObjectReference) ([]ManagedEntity, error) { - ospec := types.ObjectSpec{ - Obj: obj, - SelectSet: []types.BaseSelectionSpec{ - &types.TraversalSpec{ - SelectionSpec: types.SelectionSpec{Name: "traverseParent"}, - Type: "ManagedEntity", - Path: "parent", - Skip: types.NewBool(false), - SelectSet: []types.BaseSelectionSpec{ - &types.SelectionSpec{Name: "traverseParent"}, - }, - }, - }, - Skip: types.NewBool(false), - } - - pspec := types.PropertySpec{ - Type: "ManagedEntity", - PathSet: []string{"name", "parent"}, - } - - req := types.RetrieveProperties{ - This: pc, - SpecSet: []types.PropertyFilterSpec{ - { - ObjectSet: []types.ObjectSpec{ospec}, - PropSet: []types.PropertySpec{pspec}, - }, - }, - } - - var ifaces []interface{} - - err := RetrievePropertiesForRequest(ctx, rt, req, &ifaces) - if err != nil { - return nil, err - } - - var out []ManagedEntity - - // Build ancestry tree by iteratively finding a new child. - for len(out) < len(ifaces) { - var find types.ManagedObjectReference - - if len(out) > 0 { - find = out[len(out)-1].Self - } - - // Find entity we're looking for given the last entity in the current tree. - for _, iface := range ifaces { - me := iface.(IsManagedEntity).GetManagedEntity() - if me.Parent == nil { - out = append(out, me) - break - } - - if *me.Parent == find { - out = append(out, me) - break - } - } - } - - return out, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/entity.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/entity.go deleted file mode 100644 index 193e6f71..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/entity.go +++ /dev/null @@ -1,24 +0,0 @@ -/* -Copyright (c) 2016 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package mo - -// Entity is the interface that is implemented by all managed objects -// that extend ManagedEntity. -type Entity interface { - Reference - Entity() *ManagedEntity -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/extra.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/extra.go deleted file mode 100644 index 36ed5ff0..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/extra.go +++ /dev/null @@ -1,57 +0,0 @@ -/* -Copyright (c) 2014 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package mo - -type IsManagedEntity interface { - GetManagedEntity() ManagedEntity -} - -func (m ComputeResource) GetManagedEntity() ManagedEntity { - return m.ManagedEntity -} - -func (m Datacenter) GetManagedEntity() ManagedEntity { - return m.ManagedEntity -} - -func (m Datastore) GetManagedEntity() ManagedEntity { - return m.ManagedEntity -} - -func (m DistributedVirtualSwitch) GetManagedEntity() ManagedEntity { - return m.ManagedEntity -} - -func (m Folder) GetManagedEntity() ManagedEntity { - return m.ManagedEntity -} - -func (m HostSystem) GetManagedEntity() ManagedEntity { - return m.ManagedEntity -} - -func (m Network) GetManagedEntity() ManagedEntity { - return m.ManagedEntity -} - -func (m ResourcePool) GetManagedEntity() ManagedEntity { - return m.ManagedEntity -} - -func (m VirtualMachine) GetManagedEntity() ManagedEntity { - return m.ManagedEntity -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/mo.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/mo.go deleted file mode 100644 index f68b890a..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/mo.go +++ /dev/null @@ -1,1660 +0,0 @@ -/* -Copyright (c) 2014-2016 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package mo - -import ( - "reflect" - "time" - - "github.com/vmware/govmomi/vim25/types" -) - -type Alarm struct { - ExtensibleManagedObject - - Info types.AlarmInfo `mo:"info"` -} - -func init() { - t["Alarm"] = reflect.TypeOf((*Alarm)(nil)).Elem() -} - -type AlarmManager struct { - Self types.ManagedObjectReference - - DefaultExpression []types.BaseAlarmExpression `mo:"defaultExpression"` - Description types.AlarmDescription `mo:"description"` -} - -func (m AlarmManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["AlarmManager"] = reflect.TypeOf((*AlarmManager)(nil)).Elem() -} - -type AuthorizationManager struct { - Self types.ManagedObjectReference - - PrivilegeList []types.AuthorizationPrivilege `mo:"privilegeList"` - RoleList []types.AuthorizationRole `mo:"roleList"` - Description types.AuthorizationDescription `mo:"description"` -} - -func (m AuthorizationManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["AuthorizationManager"] = reflect.TypeOf((*AuthorizationManager)(nil)).Elem() -} - -type CertificateManager struct { - Self types.ManagedObjectReference -} - -func (m CertificateManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["CertificateManager"] = reflect.TypeOf((*CertificateManager)(nil)).Elem() -} - -type ClusterComputeResource struct { - ComputeResource - - Configuration types.ClusterConfigInfo `mo:"configuration"` - Recommendation []types.ClusterRecommendation `mo:"recommendation"` - DrsRecommendation []types.ClusterDrsRecommendation `mo:"drsRecommendation"` - MigrationHistory []types.ClusterDrsMigration `mo:"migrationHistory"` - ActionHistory []types.ClusterActionHistory `mo:"actionHistory"` - DrsFault []types.ClusterDrsFaults `mo:"drsFault"` -} - -func init() { - t["ClusterComputeResource"] = reflect.TypeOf((*ClusterComputeResource)(nil)).Elem() -} - -type ClusterEVCManager struct { - ExtensibleManagedObject - - ManagedCluster types.ManagedObjectReference `mo:"managedCluster"` - EvcState types.ClusterEVCManagerEVCState `mo:"evcState"` -} - -func init() { - t["ClusterEVCManager"] = reflect.TypeOf((*ClusterEVCManager)(nil)).Elem() -} - -type ClusterProfile struct { - Profile -} - -func init() { - t["ClusterProfile"] = reflect.TypeOf((*ClusterProfile)(nil)).Elem() -} - -type ClusterProfileManager struct { - ProfileManager -} - -func init() { - t["ClusterProfileManager"] = reflect.TypeOf((*ClusterProfileManager)(nil)).Elem() -} - -type ComputeResource struct { - ManagedEntity - - ResourcePool *types.ManagedObjectReference `mo:"resourcePool"` - Host []types.ManagedObjectReference `mo:"host"` - Datastore []types.ManagedObjectReference `mo:"datastore"` - Network []types.ManagedObjectReference `mo:"network"` - Summary types.BaseComputeResourceSummary `mo:"summary"` - EnvironmentBrowser *types.ManagedObjectReference `mo:"environmentBrowser"` - ConfigurationEx types.BaseComputeResourceConfigInfo `mo:"configurationEx"` -} - -func (m *ComputeResource) Entity() *ManagedEntity { - return &m.ManagedEntity -} - -func init() { - t["ComputeResource"] = reflect.TypeOf((*ComputeResource)(nil)).Elem() -} - -type ContainerView struct { - ManagedObjectView - - Container types.ManagedObjectReference `mo:"container"` - Type []string `mo:"type"` - Recursive bool `mo:"recursive"` -} - -func init() { - t["ContainerView"] = reflect.TypeOf((*ContainerView)(nil)).Elem() -} - -type CustomFieldsManager struct { - Self types.ManagedObjectReference - - Field []types.CustomFieldDef `mo:"field"` -} - -func (m CustomFieldsManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["CustomFieldsManager"] = reflect.TypeOf((*CustomFieldsManager)(nil)).Elem() -} - -type CustomizationSpecManager struct { - Self types.ManagedObjectReference - - Info []types.CustomizationSpecInfo `mo:"info"` - EncryptionKey []byte `mo:"encryptionKey"` -} - -func (m CustomizationSpecManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["CustomizationSpecManager"] = reflect.TypeOf((*CustomizationSpecManager)(nil)).Elem() -} - -type Datacenter struct { - ManagedEntity - - VmFolder types.ManagedObjectReference `mo:"vmFolder"` - HostFolder types.ManagedObjectReference `mo:"hostFolder"` - DatastoreFolder types.ManagedObjectReference `mo:"datastoreFolder"` - NetworkFolder types.ManagedObjectReference `mo:"networkFolder"` - Datastore []types.ManagedObjectReference `mo:"datastore"` - Network []types.ManagedObjectReference `mo:"network"` - Configuration types.DatacenterConfigInfo `mo:"configuration"` -} - -func (m *Datacenter) Entity() *ManagedEntity { - return &m.ManagedEntity -} - -func init() { - t["Datacenter"] = reflect.TypeOf((*Datacenter)(nil)).Elem() -} - -type Datastore struct { - ManagedEntity - - Info types.BaseDatastoreInfo `mo:"info"` - Summary types.DatastoreSummary `mo:"summary"` - Host []types.DatastoreHostMount `mo:"host"` - Vm []types.ManagedObjectReference `mo:"vm"` - Browser types.ManagedObjectReference `mo:"browser"` - Capability types.DatastoreCapability `mo:"capability"` - IormConfiguration *types.StorageIORMInfo `mo:"iormConfiguration"` -} - -func (m *Datastore) Entity() *ManagedEntity { - return &m.ManagedEntity -} - -func init() { - t["Datastore"] = reflect.TypeOf((*Datastore)(nil)).Elem() -} - -type DatastoreNamespaceManager struct { - Self types.ManagedObjectReference -} - -func (m DatastoreNamespaceManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["DatastoreNamespaceManager"] = reflect.TypeOf((*DatastoreNamespaceManager)(nil)).Elem() -} - -type DiagnosticManager struct { - Self types.ManagedObjectReference -} - -func (m DiagnosticManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["DiagnosticManager"] = reflect.TypeOf((*DiagnosticManager)(nil)).Elem() -} - -type DistributedVirtualPortgroup struct { - Network - - Key string `mo:"key"` - Config types.DVPortgroupConfigInfo `mo:"config"` - PortKeys []string `mo:"portKeys"` -} - -func init() { - t["DistributedVirtualPortgroup"] = reflect.TypeOf((*DistributedVirtualPortgroup)(nil)).Elem() -} - -type DistributedVirtualSwitch struct { - ManagedEntity - - Uuid string `mo:"uuid"` - Capability types.DVSCapability `mo:"capability"` - Summary types.DVSSummary `mo:"summary"` - Config types.BaseDVSConfigInfo `mo:"config"` - NetworkResourcePool []types.DVSNetworkResourcePool `mo:"networkResourcePool"` - Portgroup []types.ManagedObjectReference `mo:"portgroup"` - Runtime *types.DVSRuntimeInfo `mo:"runtime"` -} - -func (m *DistributedVirtualSwitch) Entity() *ManagedEntity { - return &m.ManagedEntity -} - -func init() { - t["DistributedVirtualSwitch"] = reflect.TypeOf((*DistributedVirtualSwitch)(nil)).Elem() -} - -type DistributedVirtualSwitchManager struct { - Self types.ManagedObjectReference -} - -func (m DistributedVirtualSwitchManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["DistributedVirtualSwitchManager"] = reflect.TypeOf((*DistributedVirtualSwitchManager)(nil)).Elem() -} - -type EnvironmentBrowser struct { - Self types.ManagedObjectReference - - DatastoreBrowser *types.ManagedObjectReference `mo:"datastoreBrowser"` -} - -func (m EnvironmentBrowser) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["EnvironmentBrowser"] = reflect.TypeOf((*EnvironmentBrowser)(nil)).Elem() -} - -type EventHistoryCollector struct { - HistoryCollector - - LatestPage []types.BaseEvent `mo:"latestPage"` -} - -func init() { - t["EventHistoryCollector"] = reflect.TypeOf((*EventHistoryCollector)(nil)).Elem() -} - -type EventManager struct { - Self types.ManagedObjectReference - - Description types.EventDescription `mo:"description"` - LatestEvent types.BaseEvent `mo:"latestEvent"` - MaxCollector int32 `mo:"maxCollector"` -} - -func (m EventManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["EventManager"] = reflect.TypeOf((*EventManager)(nil)).Elem() -} - -type ExtensibleManagedObject struct { - Self types.ManagedObjectReference - - Value []types.BaseCustomFieldValue `mo:"value"` - AvailableField []types.CustomFieldDef `mo:"availableField"` -} - -func (m ExtensibleManagedObject) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["ExtensibleManagedObject"] = reflect.TypeOf((*ExtensibleManagedObject)(nil)).Elem() -} - -type ExtensionManager struct { - Self types.ManagedObjectReference - - ExtensionList []types.Extension `mo:"extensionList"` -} - -func (m ExtensionManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["ExtensionManager"] = reflect.TypeOf((*ExtensionManager)(nil)).Elem() -} - -type FileManager struct { - Self types.ManagedObjectReference -} - -func (m FileManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["FileManager"] = reflect.TypeOf((*FileManager)(nil)).Elem() -} - -type Folder struct { - ManagedEntity - - ChildType []string `mo:"childType"` - ChildEntity []types.ManagedObjectReference `mo:"childEntity"` -} - -func (m *Folder) Entity() *ManagedEntity { - return &m.ManagedEntity -} - -func init() { - t["Folder"] = reflect.TypeOf((*Folder)(nil)).Elem() -} - -type GuestAliasManager struct { - Self types.ManagedObjectReference -} - -func (m GuestAliasManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["GuestAliasManager"] = reflect.TypeOf((*GuestAliasManager)(nil)).Elem() -} - -type GuestAuthManager struct { - Self types.ManagedObjectReference -} - -func (m GuestAuthManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["GuestAuthManager"] = reflect.TypeOf((*GuestAuthManager)(nil)).Elem() -} - -type GuestFileManager struct { - Self types.ManagedObjectReference -} - -func (m GuestFileManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["GuestFileManager"] = reflect.TypeOf((*GuestFileManager)(nil)).Elem() -} - -type GuestOperationsManager struct { - Self types.ManagedObjectReference - - AuthManager *types.ManagedObjectReference `mo:"authManager"` - FileManager *types.ManagedObjectReference `mo:"fileManager"` - ProcessManager *types.ManagedObjectReference `mo:"processManager"` - GuestWindowsRegistryManager *types.ManagedObjectReference `mo:"guestWindowsRegistryManager"` - AliasManager *types.ManagedObjectReference `mo:"aliasManager"` -} - -func (m GuestOperationsManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["GuestOperationsManager"] = reflect.TypeOf((*GuestOperationsManager)(nil)).Elem() -} - -type GuestProcessManager struct { - Self types.ManagedObjectReference -} - -func (m GuestProcessManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["GuestProcessManager"] = reflect.TypeOf((*GuestProcessManager)(nil)).Elem() -} - -type GuestWindowsRegistryManager struct { - Self types.ManagedObjectReference -} - -func (m GuestWindowsRegistryManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["GuestWindowsRegistryManager"] = reflect.TypeOf((*GuestWindowsRegistryManager)(nil)).Elem() -} - -type HistoryCollector struct { - Self types.ManagedObjectReference - - Filter types.AnyType `mo:"filter"` -} - -func (m HistoryCollector) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["HistoryCollector"] = reflect.TypeOf((*HistoryCollector)(nil)).Elem() -} - -type HostAccessManager struct { - Self types.ManagedObjectReference - - LockdownMode types.HostLockdownMode `mo:"lockdownMode"` -} - -func (m HostAccessManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["HostAccessManager"] = reflect.TypeOf((*HostAccessManager)(nil)).Elem() -} - -type HostActiveDirectoryAuthentication struct { - HostDirectoryStore -} - -func init() { - t["HostActiveDirectoryAuthentication"] = reflect.TypeOf((*HostActiveDirectoryAuthentication)(nil)).Elem() -} - -type HostAuthenticationManager struct { - Self types.ManagedObjectReference - - Info types.HostAuthenticationManagerInfo `mo:"info"` - SupportedStore []types.ManagedObjectReference `mo:"supportedStore"` -} - -func (m HostAuthenticationManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["HostAuthenticationManager"] = reflect.TypeOf((*HostAuthenticationManager)(nil)).Elem() -} - -type HostAuthenticationStore struct { - Self types.ManagedObjectReference - - Info types.BaseHostAuthenticationStoreInfo `mo:"info"` -} - -func (m HostAuthenticationStore) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["HostAuthenticationStore"] = reflect.TypeOf((*HostAuthenticationStore)(nil)).Elem() -} - -type HostAutoStartManager struct { - Self types.ManagedObjectReference - - Config types.HostAutoStartManagerConfig `mo:"config"` -} - -func (m HostAutoStartManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["HostAutoStartManager"] = reflect.TypeOf((*HostAutoStartManager)(nil)).Elem() -} - -type HostBootDeviceSystem struct { - Self types.ManagedObjectReference -} - -func (m HostBootDeviceSystem) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["HostBootDeviceSystem"] = reflect.TypeOf((*HostBootDeviceSystem)(nil)).Elem() -} - -type HostCacheConfigurationManager struct { - Self types.ManagedObjectReference - - CacheConfigurationInfo []types.HostCacheConfigurationInfo `mo:"cacheConfigurationInfo"` -} - -func (m HostCacheConfigurationManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["HostCacheConfigurationManager"] = reflect.TypeOf((*HostCacheConfigurationManager)(nil)).Elem() -} - -type HostCertificateManager struct { - Self types.ManagedObjectReference - - CertificateInfo types.HostCertificateManagerCertificateInfo `mo:"certificateInfo"` -} - -func (m HostCertificateManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["HostCertificateManager"] = reflect.TypeOf((*HostCertificateManager)(nil)).Elem() -} - -type HostCpuSchedulerSystem struct { - ExtensibleManagedObject - - HyperthreadInfo *types.HostHyperThreadScheduleInfo `mo:"hyperthreadInfo"` -} - -func init() { - t["HostCpuSchedulerSystem"] = reflect.TypeOf((*HostCpuSchedulerSystem)(nil)).Elem() -} - -type HostDatastoreBrowser struct { - Self types.ManagedObjectReference - - Datastore []types.ManagedObjectReference `mo:"datastore"` - SupportedType []types.BaseFileQuery `mo:"supportedType"` -} - -func (m HostDatastoreBrowser) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["HostDatastoreBrowser"] = reflect.TypeOf((*HostDatastoreBrowser)(nil)).Elem() -} - -type HostDatastoreSystem struct { - Self types.ManagedObjectReference - - Datastore []types.ManagedObjectReference `mo:"datastore"` - Capabilities types.HostDatastoreSystemCapabilities `mo:"capabilities"` -} - -func (m HostDatastoreSystem) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["HostDatastoreSystem"] = reflect.TypeOf((*HostDatastoreSystem)(nil)).Elem() -} - -type HostDateTimeSystem struct { - Self types.ManagedObjectReference - - DateTimeInfo types.HostDateTimeInfo `mo:"dateTimeInfo"` -} - -func (m HostDateTimeSystem) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["HostDateTimeSystem"] = reflect.TypeOf((*HostDateTimeSystem)(nil)).Elem() -} - -type HostDiagnosticSystem struct { - Self types.ManagedObjectReference - - ActivePartition *types.HostDiagnosticPartition `mo:"activePartition"` -} - -func (m HostDiagnosticSystem) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["HostDiagnosticSystem"] = reflect.TypeOf((*HostDiagnosticSystem)(nil)).Elem() -} - -type HostDirectoryStore struct { - HostAuthenticationStore -} - -func init() { - t["HostDirectoryStore"] = reflect.TypeOf((*HostDirectoryStore)(nil)).Elem() -} - -type HostEsxAgentHostManager struct { - Self types.ManagedObjectReference - - ConfigInfo types.HostEsxAgentHostManagerConfigInfo `mo:"configInfo"` -} - -func (m HostEsxAgentHostManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["HostEsxAgentHostManager"] = reflect.TypeOf((*HostEsxAgentHostManager)(nil)).Elem() -} - -type HostFirewallSystem struct { - ExtensibleManagedObject - - FirewallInfo *types.HostFirewallInfo `mo:"firewallInfo"` -} - -func init() { - t["HostFirewallSystem"] = reflect.TypeOf((*HostFirewallSystem)(nil)).Elem() -} - -type HostFirmwareSystem struct { - Self types.ManagedObjectReference -} - -func (m HostFirmwareSystem) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["HostFirmwareSystem"] = reflect.TypeOf((*HostFirmwareSystem)(nil)).Elem() -} - -type HostGraphicsManager struct { - ExtensibleManagedObject - - GraphicsInfo []types.HostGraphicsInfo `mo:"graphicsInfo"` - SharedPassthruGpuTypes []string `mo:"sharedPassthruGpuTypes"` -} - -func init() { - t["HostGraphicsManager"] = reflect.TypeOf((*HostGraphicsManager)(nil)).Elem() -} - -type HostHealthStatusSystem struct { - Self types.ManagedObjectReference - - Runtime types.HealthSystemRuntime `mo:"runtime"` -} - -func (m HostHealthStatusSystem) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["HostHealthStatusSystem"] = reflect.TypeOf((*HostHealthStatusSystem)(nil)).Elem() -} - -type HostImageConfigManager struct { - Self types.ManagedObjectReference -} - -func (m HostImageConfigManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["HostImageConfigManager"] = reflect.TypeOf((*HostImageConfigManager)(nil)).Elem() -} - -type HostKernelModuleSystem struct { - Self types.ManagedObjectReference -} - -func (m HostKernelModuleSystem) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["HostKernelModuleSystem"] = reflect.TypeOf((*HostKernelModuleSystem)(nil)).Elem() -} - -type HostLocalAccountManager struct { - Self types.ManagedObjectReference -} - -func (m HostLocalAccountManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["HostLocalAccountManager"] = reflect.TypeOf((*HostLocalAccountManager)(nil)).Elem() -} - -type HostLocalAuthentication struct { - HostAuthenticationStore -} - -func init() { - t["HostLocalAuthentication"] = reflect.TypeOf((*HostLocalAuthentication)(nil)).Elem() -} - -type HostMemorySystem struct { - ExtensibleManagedObject - - ConsoleReservationInfo *types.ServiceConsoleReservationInfo `mo:"consoleReservationInfo"` - VirtualMachineReservationInfo *types.VirtualMachineMemoryReservationInfo `mo:"virtualMachineReservationInfo"` -} - -func init() { - t["HostMemorySystem"] = reflect.TypeOf((*HostMemorySystem)(nil)).Elem() -} - -type HostNetworkSystem struct { - ExtensibleManagedObject - - Capabilities *types.HostNetCapabilities `mo:"capabilities"` - NetworkInfo *types.HostNetworkInfo `mo:"networkInfo"` - OffloadCapabilities *types.HostNetOffloadCapabilities `mo:"offloadCapabilities"` - NetworkConfig *types.HostNetworkConfig `mo:"networkConfig"` - DnsConfig types.BaseHostDnsConfig `mo:"dnsConfig"` - IpRouteConfig types.BaseHostIpRouteConfig `mo:"ipRouteConfig"` - ConsoleIpRouteConfig types.BaseHostIpRouteConfig `mo:"consoleIpRouteConfig"` -} - -func init() { - t["HostNetworkSystem"] = reflect.TypeOf((*HostNetworkSystem)(nil)).Elem() -} - -type HostPatchManager struct { - Self types.ManagedObjectReference -} - -func (m HostPatchManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["HostPatchManager"] = reflect.TypeOf((*HostPatchManager)(nil)).Elem() -} - -type HostPciPassthruSystem struct { - ExtensibleManagedObject - - PciPassthruInfo []types.BaseHostPciPassthruInfo `mo:"pciPassthruInfo"` -} - -func init() { - t["HostPciPassthruSystem"] = reflect.TypeOf((*HostPciPassthruSystem)(nil)).Elem() -} - -type HostPowerSystem struct { - Self types.ManagedObjectReference - - Capability types.PowerSystemCapability `mo:"capability"` - Info types.PowerSystemInfo `mo:"info"` -} - -func (m HostPowerSystem) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["HostPowerSystem"] = reflect.TypeOf((*HostPowerSystem)(nil)).Elem() -} - -type HostProfile struct { - Profile - - ReferenceHost *types.ManagedObjectReference `mo:"referenceHost"` -} - -func init() { - t["HostProfile"] = reflect.TypeOf((*HostProfile)(nil)).Elem() -} - -type HostProfileManager struct { - ProfileManager -} - -func init() { - t["HostProfileManager"] = reflect.TypeOf((*HostProfileManager)(nil)).Elem() -} - -type HostServiceSystem struct { - ExtensibleManagedObject - - ServiceInfo types.HostServiceInfo `mo:"serviceInfo"` -} - -func init() { - t["HostServiceSystem"] = reflect.TypeOf((*HostServiceSystem)(nil)).Elem() -} - -type HostSnmpSystem struct { - Self types.ManagedObjectReference - - Configuration types.HostSnmpConfigSpec `mo:"configuration"` - Limits types.HostSnmpSystemAgentLimits `mo:"limits"` -} - -func (m HostSnmpSystem) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["HostSnmpSystem"] = reflect.TypeOf((*HostSnmpSystem)(nil)).Elem() -} - -type HostStorageSystem struct { - ExtensibleManagedObject - - StorageDeviceInfo *types.HostStorageDeviceInfo `mo:"storageDeviceInfo"` - FileSystemVolumeInfo types.HostFileSystemVolumeInfo `mo:"fileSystemVolumeInfo"` - SystemFile []string `mo:"systemFile"` - MultipathStateInfo *types.HostMultipathStateInfo `mo:"multipathStateInfo"` -} - -func init() { - t["HostStorageSystem"] = reflect.TypeOf((*HostStorageSystem)(nil)).Elem() -} - -type HostSystem struct { - ManagedEntity - - Runtime types.HostRuntimeInfo `mo:"runtime"` - Summary types.HostListSummary `mo:"summary"` - Hardware *types.HostHardwareInfo `mo:"hardware"` - Capability *types.HostCapability `mo:"capability"` - LicensableResource types.HostLicensableResourceInfo `mo:"licensableResource"` - ConfigManager types.HostConfigManager `mo:"configManager"` - Config *types.HostConfigInfo `mo:"config"` - Vm []types.ManagedObjectReference `mo:"vm"` - Datastore []types.ManagedObjectReference `mo:"datastore"` - Network []types.ManagedObjectReference `mo:"network"` - DatastoreBrowser types.ManagedObjectReference `mo:"datastoreBrowser"` - SystemResources *types.HostSystemResourceInfo `mo:"systemResources"` -} - -func (m *HostSystem) Entity() *ManagedEntity { - return &m.ManagedEntity -} - -func init() { - t["HostSystem"] = reflect.TypeOf((*HostSystem)(nil)).Elem() -} - -type HostVFlashManager struct { - Self types.ManagedObjectReference - - VFlashConfigInfo *types.HostVFlashManagerVFlashConfigInfo `mo:"vFlashConfigInfo"` -} - -func (m HostVFlashManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["HostVFlashManager"] = reflect.TypeOf((*HostVFlashManager)(nil)).Elem() -} - -type HostVMotionSystem struct { - ExtensibleManagedObject - - NetConfig *types.HostVMotionNetConfig `mo:"netConfig"` - IpConfig *types.HostIpConfig `mo:"ipConfig"` -} - -func init() { - t["HostVMotionSystem"] = reflect.TypeOf((*HostVMotionSystem)(nil)).Elem() -} - -type HostVirtualNicManager struct { - ExtensibleManagedObject - - Info types.HostVirtualNicManagerInfo `mo:"info"` -} - -func init() { - t["HostVirtualNicManager"] = reflect.TypeOf((*HostVirtualNicManager)(nil)).Elem() -} - -type HostVsanInternalSystem struct { - Self types.ManagedObjectReference -} - -func (m HostVsanInternalSystem) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["HostVsanInternalSystem"] = reflect.TypeOf((*HostVsanInternalSystem)(nil)).Elem() -} - -type HostVsanSystem struct { - Self types.ManagedObjectReference - - Config types.VsanHostConfigInfo `mo:"config"` -} - -func (m HostVsanSystem) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["HostVsanSystem"] = reflect.TypeOf((*HostVsanSystem)(nil)).Elem() -} - -type HttpNfcLease struct { - Self types.ManagedObjectReference - - InitializeProgress int32 `mo:"initializeProgress"` - Info *types.HttpNfcLeaseInfo `mo:"info"` - State types.HttpNfcLeaseState `mo:"state"` - Error *types.LocalizedMethodFault `mo:"error"` -} - -func (m HttpNfcLease) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["HttpNfcLease"] = reflect.TypeOf((*HttpNfcLease)(nil)).Elem() -} - -type InventoryView struct { - ManagedObjectView -} - -func init() { - t["InventoryView"] = reflect.TypeOf((*InventoryView)(nil)).Elem() -} - -type IoFilterManager struct { - Self types.ManagedObjectReference -} - -func (m IoFilterManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["IoFilterManager"] = reflect.TypeOf((*IoFilterManager)(nil)).Elem() -} - -type IpPoolManager struct { - Self types.ManagedObjectReference -} - -func (m IpPoolManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["IpPoolManager"] = reflect.TypeOf((*IpPoolManager)(nil)).Elem() -} - -type IscsiManager struct { - Self types.ManagedObjectReference -} - -func (m IscsiManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["IscsiManager"] = reflect.TypeOf((*IscsiManager)(nil)).Elem() -} - -type LicenseAssignmentManager struct { - Self types.ManagedObjectReference -} - -func (m LicenseAssignmentManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["LicenseAssignmentManager"] = reflect.TypeOf((*LicenseAssignmentManager)(nil)).Elem() -} - -type LicenseManager struct { - Self types.ManagedObjectReference - - Source types.BaseLicenseSource `mo:"source"` - SourceAvailable bool `mo:"sourceAvailable"` - Diagnostics *types.LicenseDiagnostics `mo:"diagnostics"` - FeatureInfo []types.LicenseFeatureInfo `mo:"featureInfo"` - LicensedEdition string `mo:"licensedEdition"` - Licenses []types.LicenseManagerLicenseInfo `mo:"licenses"` - LicenseAssignmentManager *types.ManagedObjectReference `mo:"licenseAssignmentManager"` - Evaluation types.LicenseManagerEvaluationInfo `mo:"evaluation"` -} - -func (m LicenseManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["LicenseManager"] = reflect.TypeOf((*LicenseManager)(nil)).Elem() -} - -type ListView struct { - ManagedObjectView -} - -func init() { - t["ListView"] = reflect.TypeOf((*ListView)(nil)).Elem() -} - -type LocalizationManager struct { - Self types.ManagedObjectReference - - Catalog []types.LocalizationManagerMessageCatalog `mo:"catalog"` -} - -func (m LocalizationManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["LocalizationManager"] = reflect.TypeOf((*LocalizationManager)(nil)).Elem() -} - -type ManagedEntity struct { - ExtensibleManagedObject - - Parent *types.ManagedObjectReference `mo:"parent"` - CustomValue []types.BaseCustomFieldValue `mo:"customValue"` - OverallStatus types.ManagedEntityStatus `mo:"overallStatus"` - ConfigStatus types.ManagedEntityStatus `mo:"configStatus"` - ConfigIssue []types.BaseEvent `mo:"configIssue"` - EffectiveRole []int32 `mo:"effectiveRole"` - Permission []types.Permission `mo:"permission"` - Name string `mo:"name"` - DisabledMethod []string `mo:"disabledMethod"` - RecentTask []types.ManagedObjectReference `mo:"recentTask"` - DeclaredAlarmState []types.AlarmState `mo:"declaredAlarmState"` - TriggeredAlarmState []types.AlarmState `mo:"triggeredAlarmState"` - AlarmActionsEnabled *bool `mo:"alarmActionsEnabled"` - Tag []types.Tag `mo:"tag"` -} - -func init() { - t["ManagedEntity"] = reflect.TypeOf((*ManagedEntity)(nil)).Elem() -} - -type ManagedObjectView struct { - Self types.ManagedObjectReference - - View []types.ManagedObjectReference `mo:"view"` -} - -func (m ManagedObjectView) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["ManagedObjectView"] = reflect.TypeOf((*ManagedObjectView)(nil)).Elem() -} - -type MessageBusProxy struct { - Self types.ManagedObjectReference -} - -func (m MessageBusProxy) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["MessageBusProxy"] = reflect.TypeOf((*MessageBusProxy)(nil)).Elem() -} - -type Network struct { - ManagedEntity - - Name string `mo:"name"` - Summary types.BaseNetworkSummary `mo:"summary"` - Host []types.ManagedObjectReference `mo:"host"` - Vm []types.ManagedObjectReference `mo:"vm"` -} - -func (m *Network) Entity() *ManagedEntity { - return &m.ManagedEntity -} - -func init() { - t["Network"] = reflect.TypeOf((*Network)(nil)).Elem() -} - -type OpaqueNetwork struct { - Network -} - -func init() { - t["OpaqueNetwork"] = reflect.TypeOf((*OpaqueNetwork)(nil)).Elem() -} - -type OptionManager struct { - Self types.ManagedObjectReference - - SupportedOption []types.OptionDef `mo:"supportedOption"` - Setting []types.BaseOptionValue `mo:"setting"` -} - -func (m OptionManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["OptionManager"] = reflect.TypeOf((*OptionManager)(nil)).Elem() -} - -type OverheadMemoryManager struct { - Self types.ManagedObjectReference -} - -func (m OverheadMemoryManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["OverheadMemoryManager"] = reflect.TypeOf((*OverheadMemoryManager)(nil)).Elem() -} - -type OvfManager struct { - Self types.ManagedObjectReference - - OvfImportOption []types.OvfOptionInfo `mo:"ovfImportOption"` - OvfExportOption []types.OvfOptionInfo `mo:"ovfExportOption"` -} - -func (m OvfManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["OvfManager"] = reflect.TypeOf((*OvfManager)(nil)).Elem() -} - -type PerformanceManager struct { - Self types.ManagedObjectReference - - Description types.PerformanceDescription `mo:"description"` - HistoricalInterval []types.PerfInterval `mo:"historicalInterval"` - PerfCounter []types.PerfCounterInfo `mo:"perfCounter"` -} - -func (m PerformanceManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["PerformanceManager"] = reflect.TypeOf((*PerformanceManager)(nil)).Elem() -} - -type Profile struct { - Self types.ManagedObjectReference - - Config types.BaseProfileConfigInfo `mo:"config"` - Description *types.ProfileDescription `mo:"description"` - Name string `mo:"name"` - CreatedTime time.Time `mo:"createdTime"` - ModifiedTime time.Time `mo:"modifiedTime"` - Entity []types.ManagedObjectReference `mo:"entity"` - ComplianceStatus string `mo:"complianceStatus"` -} - -func (m Profile) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["Profile"] = reflect.TypeOf((*Profile)(nil)).Elem() -} - -type ProfileComplianceManager struct { - Self types.ManagedObjectReference -} - -func (m ProfileComplianceManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["ProfileComplianceManager"] = reflect.TypeOf((*ProfileComplianceManager)(nil)).Elem() -} - -type ProfileManager struct { - Self types.ManagedObjectReference - - Profile []types.ManagedObjectReference `mo:"profile"` -} - -func (m ProfileManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["ProfileManager"] = reflect.TypeOf((*ProfileManager)(nil)).Elem() -} - -type PropertyCollector struct { - Self types.ManagedObjectReference - - Filter []types.ManagedObjectReference `mo:"filter"` -} - -func (m PropertyCollector) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["PropertyCollector"] = reflect.TypeOf((*PropertyCollector)(nil)).Elem() -} - -type PropertyFilter struct { - Self types.ManagedObjectReference - - Spec types.PropertyFilterSpec `mo:"spec"` - PartialUpdates bool `mo:"partialUpdates"` -} - -func (m PropertyFilter) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["PropertyFilter"] = reflect.TypeOf((*PropertyFilter)(nil)).Elem() -} - -type ResourcePlanningManager struct { - Self types.ManagedObjectReference -} - -func (m ResourcePlanningManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["ResourcePlanningManager"] = reflect.TypeOf((*ResourcePlanningManager)(nil)).Elem() -} - -type ResourcePool struct { - ManagedEntity - - Summary types.BaseResourcePoolSummary `mo:"summary"` - Runtime types.ResourcePoolRuntimeInfo `mo:"runtime"` - Owner types.ManagedObjectReference `mo:"owner"` - ResourcePool []types.ManagedObjectReference `mo:"resourcePool"` - Vm []types.ManagedObjectReference `mo:"vm"` - Config types.ResourceConfigSpec `mo:"config"` - ChildConfiguration []types.ResourceConfigSpec `mo:"childConfiguration"` -} - -func (m *ResourcePool) Entity() *ManagedEntity { - return &m.ManagedEntity -} - -func init() { - t["ResourcePool"] = reflect.TypeOf((*ResourcePool)(nil)).Elem() -} - -type ScheduledTask struct { - ExtensibleManagedObject - - Info types.ScheduledTaskInfo `mo:"info"` -} - -func init() { - t["ScheduledTask"] = reflect.TypeOf((*ScheduledTask)(nil)).Elem() -} - -type ScheduledTaskManager struct { - Self types.ManagedObjectReference - - ScheduledTask []types.ManagedObjectReference `mo:"scheduledTask"` - Description types.ScheduledTaskDescription `mo:"description"` -} - -func (m ScheduledTaskManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["ScheduledTaskManager"] = reflect.TypeOf((*ScheduledTaskManager)(nil)).Elem() -} - -type SearchIndex struct { - Self types.ManagedObjectReference -} - -func (m SearchIndex) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["SearchIndex"] = reflect.TypeOf((*SearchIndex)(nil)).Elem() -} - -type ServiceInstance struct { - Self types.ManagedObjectReference - - ServerClock time.Time `mo:"serverClock"` - Capability types.Capability `mo:"capability"` - Content types.ServiceContent `mo:"content"` -} - -func (m ServiceInstance) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["ServiceInstance"] = reflect.TypeOf((*ServiceInstance)(nil)).Elem() -} - -type ServiceManager struct { - Self types.ManagedObjectReference - - Service []types.ServiceManagerServiceInfo `mo:"service"` -} - -func (m ServiceManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["ServiceManager"] = reflect.TypeOf((*ServiceManager)(nil)).Elem() -} - -type SessionManager struct { - Self types.ManagedObjectReference - - SessionList []types.UserSession `mo:"sessionList"` - CurrentSession *types.UserSession `mo:"currentSession"` - Message *string `mo:"message"` - MessageLocaleList []string `mo:"messageLocaleList"` - SupportedLocaleList []string `mo:"supportedLocaleList"` - DefaultLocale string `mo:"defaultLocale"` -} - -func (m SessionManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["SessionManager"] = reflect.TypeOf((*SessionManager)(nil)).Elem() -} - -type SimpleCommand struct { - Self types.ManagedObjectReference - - EncodingType types.SimpleCommandEncoding `mo:"encodingType"` - Entity types.ServiceManagerServiceInfo `mo:"entity"` -} - -func (m SimpleCommand) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["SimpleCommand"] = reflect.TypeOf((*SimpleCommand)(nil)).Elem() -} - -type StoragePod struct { - Folder - - Summary *types.StoragePodSummary `mo:"summary"` - PodStorageDrsEntry *types.PodStorageDrsEntry `mo:"podStorageDrsEntry"` -} - -func init() { - t["StoragePod"] = reflect.TypeOf((*StoragePod)(nil)).Elem() -} - -type StorageResourceManager struct { - Self types.ManagedObjectReference -} - -func (m StorageResourceManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["StorageResourceManager"] = reflect.TypeOf((*StorageResourceManager)(nil)).Elem() -} - -type Task struct { - ExtensibleManagedObject - - Info types.TaskInfo `mo:"info"` -} - -func init() { - t["Task"] = reflect.TypeOf((*Task)(nil)).Elem() -} - -type TaskHistoryCollector struct { - HistoryCollector - - LatestPage []types.TaskInfo `mo:"latestPage"` -} - -func init() { - t["TaskHistoryCollector"] = reflect.TypeOf((*TaskHistoryCollector)(nil)).Elem() -} - -type TaskManager struct { - Self types.ManagedObjectReference - - RecentTask []types.ManagedObjectReference `mo:"recentTask"` - Description types.TaskDescription `mo:"description"` - MaxCollector int32 `mo:"maxCollector"` -} - -func (m TaskManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["TaskManager"] = reflect.TypeOf((*TaskManager)(nil)).Elem() -} - -type UserDirectory struct { - Self types.ManagedObjectReference - - DomainList []string `mo:"domainList"` -} - -func (m UserDirectory) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["UserDirectory"] = reflect.TypeOf((*UserDirectory)(nil)).Elem() -} - -type VRPResourceManager struct { - Self types.ManagedObjectReference -} - -func (m VRPResourceManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["VRPResourceManager"] = reflect.TypeOf((*VRPResourceManager)(nil)).Elem() -} - -type View struct { - Self types.ManagedObjectReference -} - -func (m View) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["View"] = reflect.TypeOf((*View)(nil)).Elem() -} - -type ViewManager struct { - Self types.ManagedObjectReference - - ViewList []types.ManagedObjectReference `mo:"viewList"` -} - -func (m ViewManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["ViewManager"] = reflect.TypeOf((*ViewManager)(nil)).Elem() -} - -type VirtualApp struct { - ResourcePool - - ParentFolder *types.ManagedObjectReference `mo:"parentFolder"` - Datastore []types.ManagedObjectReference `mo:"datastore"` - Network []types.ManagedObjectReference `mo:"network"` - VAppConfig *types.VAppConfigInfo `mo:"vAppConfig"` - ParentVApp *types.ManagedObjectReference `mo:"parentVApp"` - ChildLink []types.VirtualAppLinkInfo `mo:"childLink"` -} - -func init() { - t["VirtualApp"] = reflect.TypeOf((*VirtualApp)(nil)).Elem() -} - -type VirtualDiskManager struct { - Self types.ManagedObjectReference -} - -func (m VirtualDiskManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["VirtualDiskManager"] = reflect.TypeOf((*VirtualDiskManager)(nil)).Elem() -} - -type VirtualMachine struct { - ManagedEntity - - Capability types.VirtualMachineCapability `mo:"capability"` - Config *types.VirtualMachineConfigInfo `mo:"config"` - Layout *types.VirtualMachineFileLayout `mo:"layout"` - LayoutEx *types.VirtualMachineFileLayoutEx `mo:"layoutEx"` - Storage *types.VirtualMachineStorageInfo `mo:"storage"` - EnvironmentBrowser types.ManagedObjectReference `mo:"environmentBrowser"` - ResourcePool *types.ManagedObjectReference `mo:"resourcePool"` - ParentVApp *types.ManagedObjectReference `mo:"parentVApp"` - ResourceConfig *types.ResourceConfigSpec `mo:"resourceConfig"` - Runtime types.VirtualMachineRuntimeInfo `mo:"runtime"` - Guest *types.GuestInfo `mo:"guest"` - Summary types.VirtualMachineSummary `mo:"summary"` - Datastore []types.ManagedObjectReference `mo:"datastore"` - Network []types.ManagedObjectReference `mo:"network"` - Snapshot *types.VirtualMachineSnapshotInfo `mo:"snapshot"` - RootSnapshot []types.ManagedObjectReference `mo:"rootSnapshot"` - GuestHeartbeatStatus types.ManagedEntityStatus `mo:"guestHeartbeatStatus"` -} - -func (m *VirtualMachine) Entity() *ManagedEntity { - return &m.ManagedEntity -} - -func init() { - t["VirtualMachine"] = reflect.TypeOf((*VirtualMachine)(nil)).Elem() -} - -type VirtualMachineCompatibilityChecker struct { - Self types.ManagedObjectReference -} - -func (m VirtualMachineCompatibilityChecker) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["VirtualMachineCompatibilityChecker"] = reflect.TypeOf((*VirtualMachineCompatibilityChecker)(nil)).Elem() -} - -type VirtualMachineProvisioningChecker struct { - Self types.ManagedObjectReference -} - -func (m VirtualMachineProvisioningChecker) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["VirtualMachineProvisioningChecker"] = reflect.TypeOf((*VirtualMachineProvisioningChecker)(nil)).Elem() -} - -type VirtualMachineSnapshot struct { - ExtensibleManagedObject - - Config types.VirtualMachineConfigInfo `mo:"config"` - ChildSnapshot []types.ManagedObjectReference `mo:"childSnapshot"` - Vm types.ManagedObjectReference `mo:"vm"` -} - -func init() { - t["VirtualMachineSnapshot"] = reflect.TypeOf((*VirtualMachineSnapshot)(nil)).Elem() -} - -type VirtualizationManager struct { - Self types.ManagedObjectReference -} - -func (m VirtualizationManager) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["VirtualizationManager"] = reflect.TypeOf((*VirtualizationManager)(nil)).Elem() -} - -type VmwareDistributedVirtualSwitch struct { - DistributedVirtualSwitch -} - -func init() { - t["VmwareDistributedVirtualSwitch"] = reflect.TypeOf((*VmwareDistributedVirtualSwitch)(nil)).Elem() -} - -type VsanUpgradeSystem struct { - Self types.ManagedObjectReference -} - -func (m VsanUpgradeSystem) Reference() types.ManagedObjectReference { - return m.Self -} - -func init() { - t["VsanUpgradeSystem"] = reflect.TypeOf((*VsanUpgradeSystem)(nil)).Elem() -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/reference.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/reference.go deleted file mode 100644 index 465edbe8..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/reference.go +++ /dev/null @@ -1,26 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package mo - -import "github.com/vmware/govmomi/vim25/types" - -// Reference is the interface that is implemented by all the managed objects -// defined in this package. It specifies that these managed objects have a -// function that returns the managed object reference to themselves. -type Reference interface { - Reference() types.ManagedObjectReference -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/registry.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/registry.go deleted file mode 100644 index deacf508..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/registry.go +++ /dev/null @@ -1,21 +0,0 @@ -/* -Copyright (c) 2014 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package mo - -import "reflect" - -var t = map[string]reflect.Type{} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/retrieve.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/retrieve.go deleted file mode 100644 index 32fc374b..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/retrieve.go +++ /dev/null @@ -1,174 +0,0 @@ -/* -Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package mo - -import ( - "reflect" - - "github.com/vmware/govmomi/vim25/methods" - "github.com/vmware/govmomi/vim25/soap" - "github.com/vmware/govmomi/vim25/types" - "golang.org/x/net/context" -) - -func ignoreMissingProperty(ref types.ManagedObjectReference, p types.MissingProperty) bool { - switch ref.Type { - case "VirtualMachine": - switch p.Path { - case "environmentBrowser": - // See https://github.com/vmware/govmomi/pull/242 - return true - case "alarmActionsEnabled": - // Seen with vApp child VM - return true - } - } - - return false -} - -// ObjectContentToType loads an ObjectContent value into the value it -// represents. If the ObjectContent value has a non-empty 'MissingSet' field, -// it returns the first fault it finds there as error. If the 'MissingSet' -// field is empty, it returns a pointer to a reflect.Value. It handles contain -// nested properties, such as 'guest.ipAddress' or 'config.hardware'. -func ObjectContentToType(o types.ObjectContent) (interface{}, error) { - // Expect no properties in the missing set - for _, p := range o.MissingSet { - if ignoreMissingProperty(o.Obj, p) { - continue - } - - return nil, soap.WrapVimFault(p.Fault.Fault) - } - - ti := typeInfoForType(o.Obj.Type) - v, err := ti.LoadFromObjectContent(o) - if err != nil { - return nil, err - } - - return v.Elem().Interface(), nil -} - -// LoadRetrievePropertiesResponse converts the response of a call to -// RetrieveProperties to one or more managed objects. -func LoadRetrievePropertiesResponse(res *types.RetrievePropertiesResponse, dst interface{}) error { - rt := reflect.TypeOf(dst) - if rt == nil || rt.Kind() != reflect.Ptr { - panic("need pointer") - } - - rv := reflect.ValueOf(dst).Elem() - if !rv.CanSet() { - panic("cannot set dst") - } - - isSlice := false - switch rt.Elem().Kind() { - case reflect.Struct: - case reflect.Slice: - isSlice = true - default: - panic("unexpected type") - } - - if isSlice { - for _, p := range res.Returnval { - v, err := ObjectContentToType(p) - if err != nil { - return err - } - - vt := reflect.TypeOf(v) - - if !rv.Type().AssignableTo(vt) { - // For example: dst is []ManagedEntity, res is []HostSystem - if field, ok := vt.FieldByName(rt.Elem().Elem().Name()); ok && field.Anonymous { - rv.Set(reflect.Append(rv, reflect.ValueOf(v).FieldByIndex(field.Index))) - continue - } - } - - rv.Set(reflect.Append(rv, reflect.ValueOf(v))) - } - } else { - switch len(res.Returnval) { - case 0: - case 1: - v, err := ObjectContentToType(res.Returnval[0]) - if err != nil { - return err - } - - vt := reflect.TypeOf(v) - - if !rv.Type().AssignableTo(vt) { - // For example: dst is ComputeResource, res is ClusterComputeResource - if field, ok := vt.FieldByName(rt.Elem().Name()); ok && field.Anonymous { - rv.Set(reflect.ValueOf(v).FieldByIndex(field.Index)) - return nil - } - } - - rv.Set(reflect.ValueOf(v)) - default: - // If dst is not a slice, expect to receive 0 or 1 results - panic("more than 1 result") - } - } - - return nil -} - -// RetrievePropertiesForRequest calls the RetrieveProperties method with the -// specified request and decodes the response struct into the value pointed to -// by dst. -func RetrievePropertiesForRequest(ctx context.Context, r soap.RoundTripper, req types.RetrieveProperties, dst interface{}) error { - res, err := methods.RetrieveProperties(ctx, r, &req) - if err != nil { - return err - } - - return LoadRetrievePropertiesResponse(res, dst) -} - -// RetrieveProperties retrieves the properties of the managed object specified -// as obj and decodes the response struct into the value pointed to by dst. -func RetrieveProperties(ctx context.Context, r soap.RoundTripper, pc, obj types.ManagedObjectReference, dst interface{}) error { - req := types.RetrieveProperties{ - This: pc, - SpecSet: []types.PropertyFilterSpec{ - { - ObjectSet: []types.ObjectSpec{ - { - Obj: obj, - Skip: types.NewBool(false), - }, - }, - PropSet: []types.PropertySpec{ - { - All: types.NewBool(true), - Type: obj.Type, - }, - }, - }, - }, - } - - return RetrievePropertiesForRequest(ctx, r, req, dst) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/type_info.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/type_info.go deleted file mode 100644 index 0c9e5b03..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/mo/type_info.go +++ /dev/null @@ -1,247 +0,0 @@ -/* -Copyright (c) 2014 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package mo - -import ( - "fmt" - "reflect" - "regexp" - "strings" - "sync" - - "github.com/vmware/govmomi/vim25/types" -) - -type typeInfo struct { - typ reflect.Type - - // Field indices of "Self" field. - self []int - - // Map property names to field indices. - props map[string][]int -} - -var typeInfoLock sync.RWMutex -var typeInfoMap = make(map[string]*typeInfo) - -func typeInfoForType(tname string) *typeInfo { - typeInfoLock.RLock() - ti, ok := typeInfoMap[tname] - typeInfoLock.RUnlock() - - if ok { - return ti - } - - // Create new typeInfo for type. - if typ, ok := t[tname]; !ok { - panic("unknown type: " + tname) - } else { - // Multiple routines may race to set it, but the result is the same. - typeInfoLock.Lock() - ti = newTypeInfo(typ) - typeInfoMap[tname] = ti - typeInfoLock.Unlock() - } - - return ti -} - -func newTypeInfo(typ reflect.Type) *typeInfo { - t := typeInfo{ - typ: typ, - props: make(map[string][]int), - } - - t.build(typ, "", []int{}) - - return &t -} - -var managedObjectRefType = reflect.TypeOf((*types.ManagedObjectReference)(nil)).Elem() - -func buildName(fn string, f reflect.StructField) string { - if fn != "" { - fn += "." - } - - motag := f.Tag.Get("mo") - if motag != "" { - return fn + motag - } - - xmltag := f.Tag.Get("xml") - if xmltag != "" { - tokens := strings.Split(xmltag, ",") - if tokens[0] != "" { - return fn + tokens[0] - } - } - - return "" -} - -func (t *typeInfo) build(typ reflect.Type, fn string, fi []int) { - if typ.Kind() == reflect.Ptr { - typ = typ.Elem() - } - - if typ.Kind() != reflect.Struct { - panic("need struct") - } - - for i := 0; i < typ.NumField(); i++ { - f := typ.Field(i) - ftyp := f.Type - - // Copy field indices so they can be passed along. - fic := make([]int, len(fi)+1) - copy(fic, fi) - fic[len(fi)] = i - - // Recurse into embedded field. - if f.Anonymous { - t.build(ftyp, fn, fic) - continue - } - - // Top level type has a "Self" field. - if f.Name == "Self" && ftyp == managedObjectRefType { - t.self = fic - continue - } - - fnc := buildName(fn, f) - if fnc == "" { - continue - } - - t.props[fnc] = fic - - // Dereference pointer. - if ftyp.Kind() == reflect.Ptr { - ftyp = ftyp.Elem() - } - - // Slices are not addressable by `foo.bar.qux`. - if ftyp.Kind() == reflect.Slice { - continue - } - - // Skip the managed reference type. - if ftyp == managedObjectRefType { - continue - } - - // Recurse into structs. - if ftyp.Kind() == reflect.Struct { - t.build(ftyp, fnc, fic) - } - } -} - -// assignValue assignes a value 'pv' to the struct pointed to by 'val', given a -// slice of field indices. It recurses into the struct until it finds the field -// specified by the indices. It creates new values for pointer types where -// needed. -func assignValue(val reflect.Value, fi []int, pv reflect.Value) { - // Create new value if necessary. - if val.Kind() == reflect.Ptr { - if val.IsNil() { - val.Set(reflect.New(val.Type().Elem())) - } - - val = val.Elem() - } - - rv := val.Field(fi[0]) - fi = fi[1:] - if len(fi) == 0 { - rt := rv.Type() - pt := pv.Type() - - // If type is a pointer, create new instance of type. - if rt.Kind() == reflect.Ptr { - rv.Set(reflect.New(rt.Elem())) - rv = rv.Elem() - rt = rv.Type() - } - - // If type is an interface, check if pv implements it. - if rt.Kind() == reflect.Interface && !pt.Implements(rt) { - // Check if pointer to pv implements it. - if reflect.PtrTo(pt).Implements(rt) { - npv := reflect.New(pt) - npv.Elem().Set(pv) - pv = npv - pt = pv.Type() - } else { - panic(fmt.Sprintf("type %s doesn't implement %s", pt.Name(), rt.Name())) - } - } - - if pt.AssignableTo(rt) { - rv.Set(pv) - } else if rt.ConvertibleTo(pt) { - rv.Set(pv.Convert(rt)) - } else { - panic(fmt.Sprintf("cannot assign %s (%s) to %s (%s)", rt.Name(), rt.Kind(), pt.Name(), pt.Kind())) - } - - return - } - - assignValue(rv, fi, pv) -} - -var arrayOfRegexp = regexp.MustCompile("ArrayOf(.*)$") - -func anyTypeToValue(t interface{}) reflect.Value { - rt := reflect.TypeOf(t) - rv := reflect.ValueOf(t) - - // Dereference if ArrayOfXYZ type - m := arrayOfRegexp.FindStringSubmatch(rt.Name()) - if len(m) > 0 { - // ArrayOfXYZ type has single field named XYZ - rv = rv.FieldByName(m[1]) - if !rv.IsValid() { - panic(fmt.Sprintf("expected %s type to have field %s", m[0], m[1])) - } - } - - return rv -} - -// LoadObjectFromContent loads properties from the 'PropSet' field in the -// specified ObjectContent value into the value it represents, which is -// returned as a reflect.Value. -func (t *typeInfo) LoadFromObjectContent(o types.ObjectContent) (reflect.Value, error) { - v := reflect.New(t.typ) - assignValue(v, t.self, reflect.ValueOf(o.Obj)) - - for _, p := range o.PropSet { - rv, ok := t.props[p.Name] - if !ok { - continue - } - assignValue(v, rv, anyTypeToValue(p.Val)) - } - - return v, nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/aggregator.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/aggregator.go deleted file mode 100644 index 24cb3d59..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/aggregator.go +++ /dev/null @@ -1,73 +0,0 @@ -/* -Copyright (c) 2014 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package progress - -import "sync" - -type Aggregator struct { - downstream Sinker - upstream chan (<-chan Report) - - done chan struct{} - w sync.WaitGroup -} - -func NewAggregator(s Sinker) *Aggregator { - a := &Aggregator{ - downstream: s, - upstream: make(chan (<-chan Report)), - - done: make(chan struct{}), - } - - a.w.Add(1) - go a.loop() - - return a -} - -func (a *Aggregator) loop() { - defer a.w.Done() - - dch := a.downstream.Sink() - defer close(dch) - - for { - select { - case uch := <-a.upstream: - // Drain upstream channel - for e := range uch { - dch <- e - } - case <-a.done: - return - } - } -} - -func (a *Aggregator) Sink() chan<- Report { - ch := make(chan Report) - a.upstream <- ch - return ch -} - -// Done marks the aggregator as done. No more calls to Sink() may be made and -// the downstream progress report channel will be closed when Done() returns. -func (a *Aggregator) Done() { - close(a.done) - a.w.Wait() -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/doc.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/doc.go deleted file mode 100644 index a0458dd5..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/doc.go +++ /dev/null @@ -1,32 +0,0 @@ -/* -Copyright (c) 2014 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package progress - -/* -The progress package contains functionality to deal with progress reporting. -The functionality is built to serve progress reporting for infrastructure -operations when talking the vSphere API, but is generic enough to be used -elsewhere. - -At the core of this progress reporting API lies the Sinker interface. This -interface is implemented by any object that can act as a sink for progress -reports. Callers of the Sink() function receives a send-only channel for -progress reports. They are responsible for closing the channel when done. -This semantic makes it easy to keep track of multiple progress report channels; -they are only created when Sink() is called and assumed closed when any -function that receives a Sinker parameter returns. -*/ diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/prefix.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/prefix.go deleted file mode 100644 index 4f842ad9..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/prefix.go +++ /dev/null @@ -1,54 +0,0 @@ -/* -Copyright (c) 2014 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package progress - -import "fmt" - -type prefixedReport struct { - Report - prefix string -} - -func (r prefixedReport) Detail() string { - if d := r.Report.Detail(); d != "" { - return fmt.Sprintf("%s: %s", r.prefix, d) - } - - return r.prefix -} - -func prefixLoop(upstream <-chan Report, downstream chan<- Report, prefix string) { - defer close(downstream) - - for r := range upstream { - downstream <- prefixedReport{ - Report: r, - prefix: prefix, - } - } -} - -func Prefix(s Sinker, prefix string) Sinker { - fn := func() chan<- Report { - upstream := make(chan Report) - downstream := s.Sink() - go prefixLoop(upstream, downstream, prefix) - return upstream - } - - return SinkFunc(fn) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/reader.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/reader.go deleted file mode 100644 index a981cb4e..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/reader.go +++ /dev/null @@ -1,177 +0,0 @@ -/* -Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package progress - -import ( - "container/list" - "fmt" - "io" - "sync/atomic" - "time" -) - -type readerReport struct { - t time.Time - - pos int64 - size int64 - bps *uint64 - - err error -} - -func (r readerReport) Percentage() float32 { - return 100.0 * float32(r.pos) / float32(r.size) -} - -func (r readerReport) Detail() string { - const ( - KiB = 1024 - MiB = 1024 * KiB - GiB = 1024 * MiB - ) - - // Use the reader's bps field, so this report returns an up-to-date number. - // - // For example: if there hasn't been progress for the last 5 seconds, the - // most recent report should return "0B/s". - // - bps := atomic.LoadUint64(r.bps) - - switch { - case bps >= GiB: - return fmt.Sprintf("%.1fGiB/s", float32(bps)/float32(GiB)) - case bps >= MiB: - return fmt.Sprintf("%.1fMiB/s", float32(bps)/float32(MiB)) - case bps >= KiB: - return fmt.Sprintf("%.1fKiB/s", float32(bps)/float32(KiB)) - default: - return fmt.Sprintf("%dB/s", bps) - } -} - -func (p readerReport) Error() error { - return p.err -} - -// reader wraps an io.Reader and sends a progress report over a channel for -// every read it handles. -type reader struct { - r io.Reader - - pos int64 - size int64 - - bps uint64 - - ch chan<- Report -} - -func NewReader(s Sinker, r io.Reader, size int64) *reader { - pr := reader{ - r: r, - - size: size, - } - - // Reports must be sent downstream and to the bps computation loop. - pr.ch = Tee(s, newBpsLoop(&pr.bps)).Sink() - - return &pr -} - -// Read calls the Read function on the underlying io.Reader. Additionally, -// every read causes a progress report to be sent to the progress reader's -// underlying channel. -func (r *reader) Read(b []byte) (int, error) { - n, err := r.r.Read(b) - if err != nil { - return n, err - } - - r.pos += int64(n) - q := readerReport{ - t: time.Now(), - pos: r.pos, - size: r.size, - bps: &r.bps, - } - - r.ch <- q - - return n, err -} - -// Done marks the progress reader as done, optionally including an error in the -// progress report. After sending it, the underlying channel is closed. -func (r *reader) Done(err error) { - q := readerReport{ - t: time.Now(), - pos: r.pos, - size: r.size, - bps: &r.bps, - err: err, - } - - r.ch <- q - close(r.ch) -} - -// newBpsLoop returns a sink that monitors and stores throughput. -func newBpsLoop(dst *uint64) SinkFunc { - fn := func() chan<- Report { - sink := make(chan Report) - go bpsLoop(sink, dst) - return sink - } - - return fn -} - -func bpsLoop(ch <-chan Report, dst *uint64) { - l := list.New() - - for { - var tch <-chan time.Time - - // Setup timer for front of list to become stale. - if e := l.Front(); e != nil { - dt := time.Second - time.Now().Sub(e.Value.(readerReport).t) - tch = time.After(dt) - } - - select { - case q, ok := <-ch: - if !ok { - return - } - - l.PushBack(q) - case <-tch: - l.Remove(l.Front()) - } - - // Compute new bps - if l.Len() == 0 { - atomic.StoreUint64(dst, 0) - } else { - f := l.Front().Value.(readerReport) - b := l.Back().Value.(readerReport) - atomic.StoreUint64(dst, uint64(b.pos-f.pos)) - } - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/report.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/report.go deleted file mode 100644 index bf80263f..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/report.go +++ /dev/null @@ -1,26 +0,0 @@ -/* -Copyright (c) 2014 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package progress - -// Report defines the interface for types that can deliver progress reports. -// Examples include uploads/downloads in the http client and the task info -// field in the task managed object. -type Report interface { - Percentage() float32 - Detail() string - Error() error -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/scale.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/scale.go deleted file mode 100644 index 98808392..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/scale.go +++ /dev/null @@ -1,76 +0,0 @@ -/* -Copyright (c) 2014 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package progress - -type scaledReport struct { - Report - n int - i int -} - -func (r scaledReport) Percentage() float32 { - b := 100 * float32(r.i) / float32(r.n) - return b + (r.Report.Percentage() / float32(r.n)) -} - -type scaleOne struct { - s Sinker - n int - i int -} - -func (s scaleOne) Sink() chan<- Report { - upstream := make(chan Report) - downstream := s.s.Sink() - go s.loop(upstream, downstream) - return upstream -} - -func (s scaleOne) loop(upstream <-chan Report, downstream chan<- Report) { - defer close(downstream) - - for r := range upstream { - downstream <- scaledReport{ - Report: r, - n: s.n, - i: s.i, - } - } -} - -type scaleMany struct { - s Sinker - n int - i int -} - -func Scale(s Sinker, n int) Sinker { - return &scaleMany{ - s: s, - n: n, - } -} - -func (s *scaleMany) Sink() chan<- Report { - if s.i == s.n { - s.n++ - } - - ch := scaleOne{s: s.s, n: s.n, i: s.i}.Sink() - s.i++ - return ch -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/sinker.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/sinker.go deleted file mode 100644 index 0bd35a47..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/sinker.go +++ /dev/null @@ -1,33 +0,0 @@ -/* -Copyright (c) 2014 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package progress - -// Sinker defines what is expected of a type that can act as a sink for -// progress reports. The semantics are as follows. If you call Sink(), you are -// responsible for closing the returned channel. Closing this channel means -// that the related task is done, or resulted in error. -type Sinker interface { - Sink() chan<- Report -} - -// SinkFunc defines a function that returns a progress report channel. -type SinkFunc func() chan<- Report - -// Sink makes the SinkFunc implement the Sinker interface. -func (fn SinkFunc) Sink() chan<- Report { - return fn() -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/tee.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/tee.go deleted file mode 100644 index ab460784..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/progress/tee.go +++ /dev/null @@ -1,41 +0,0 @@ -/* -Copyright (c) 2014 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package progress - -// Tee works like Unix tee; it forwards all progress reports it receives to the -// specified sinks -func Tee(s1, s2 Sinker) Sinker { - fn := func() chan<- Report { - d1 := s1.Sink() - d2 := s2.Sink() - u := make(chan Report) - go tee(u, d1, d2) - return u - } - - return SinkFunc(fn) -} - -func tee(u <-chan Report, d1, d2 chan<- Report) { - defer close(d1) - defer close(d2) - - for r := range u { - d1 <- r - d2 <- r - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/retry.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/retry.go deleted file mode 100644 index b5868e17..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/retry.go +++ /dev/null @@ -1,105 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package vim25 - -import ( - "net" - "net/url" - "time" - - "github.com/vmware/govmomi/vim25/soap" - "golang.org/x/net/context" -) - -type RetryFunc func(err error) (retry bool, delay time.Duration) - -// TemporaryNetworkError returns a RetryFunc that retries up to a maximum of n -// times, only if the error returned by the RoundTrip function is a temporary -// network error (for example: a connect timeout). -func TemporaryNetworkError(n int) RetryFunc { - return func(err error) (retry bool, delay time.Duration) { - var nerr net.Error - var ok bool - - // Never retry if this is not a network error. - switch rerr := err.(type) { - case *url.Error: - if nerr, ok = rerr.Err.(net.Error); !ok { - return false, 0 - } - case net.Error: - nerr = rerr - default: - return false, 0 - } - - if !nerr.Temporary() { - return false, 0 - } - - // Don't retry if we're out of tries. - if n--; n <= 0 { - return false, 0 - } - - return true, 0 - } -} - -type retry struct { - roundTripper soap.RoundTripper - - // fn is a custom function that is called when an error occurs. - // It returns whether or not to retry, and if so, how long to - // delay before retrying. - fn RetryFunc -} - -// Retry wraps the specified soap.RoundTripper and invokes the -// specified RetryFunc. The RetryFunc returns whether or not to -// retry the call, and if so, how long to wait before retrying. If -// the result of this function is to not retry, the original error -// is returned from the RoundTrip function. -func Retry(roundTripper soap.RoundTripper, fn RetryFunc) soap.RoundTripper { - r := &retry{ - roundTripper: roundTripper, - fn: fn, - } - - return r -} - -func (r *retry) RoundTrip(ctx context.Context, req, res soap.HasFault) error { - var err error - - for { - err = r.roundTripper.RoundTrip(ctx, req, res) - if err == nil { - break - } - - // Invoke retry function to see if another attempt should be made. - if retry, delay := r.fn(err); retry { - time.Sleep(delay) - continue - } - - break - } - - return err -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/soap/client.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/soap/client.go deleted file mode 100644 index 4f65afb6..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/soap/client.go +++ /dev/null @@ -1,507 +0,0 @@ -/* -Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package soap - -import ( - "bytes" - "crypto/tls" - "encoding/json" - "errors" - "fmt" - "io" - "net" - "net/http" - "net/http/cookiejar" - "net/url" - "os" - "regexp" - "strings" - "time" - - "github.com/vmware/govmomi/vim25/progress" - "github.com/vmware/govmomi/vim25/types" - "github.com/vmware/govmomi/vim25/xml" - "golang.org/x/net/context" -) - -type HasFault interface { - Fault() *Fault -} - -type RoundTripper interface { - RoundTrip(ctx context.Context, req, res HasFault) error -} - -var DefaultVimNamespace = "urn:vim25" -var DefaultVimVersion = "6.0" - -type Client struct { - http.Client - - u *url.URL - k bool // Named after curl's -k flag - d *debugContainer - t *http.Transport - p *url.URL - - Namespace string // Vim namespace - Version string // Vim version -} - -var schemeMatch = regexp.MustCompile(`^\w+://`) - -// ParseURL is wrapper around url.Parse, where Scheme defaults to "https" and Path defaults to "/sdk" -func ParseURL(s string) (*url.URL, error) { - var err error - var u *url.URL - - if s != "" { - // Default the scheme to https - if !schemeMatch.MatchString(s) { - s = "https://" + s - } - - u, err = url.Parse(s) - if err != nil { - return nil, err - } - - // Default the path to /sdk - if u.Path == "" { - u.Path = "/sdk" - } - - if u.User == nil { - u.User = url.UserPassword("", "") - } - } - - return u, nil -} - -func NewClient(u *url.URL, insecure bool) *Client { - c := Client{ - u: u, - k: insecure, - d: newDebug(), - } - - // Initialize http.RoundTripper on client, so we can customize it below - c.t = &http.Transport{ - Proxy: http.ProxyFromEnvironment, - Dial: (&net.Dialer{ - Timeout: 30 * time.Second, - KeepAlive: 30 * time.Second, - }).Dial, - } - - if c.u.Scheme == "https" { - c.t.TLSClientConfig = &tls.Config{InsecureSkipVerify: c.k} - c.t.TLSHandshakeTimeout = 10 * time.Second - } - - c.Client.Transport = c.t - c.Client.Jar, _ = cookiejar.New(nil) - - // Remove user information from a copy of the URL - c.u = c.URL() - c.u.User = nil - - c.Namespace = DefaultVimNamespace - c.Version = DefaultVimVersion - - return &c -} - -// splitHostPort is similar to net.SplitHostPort, -// but rather than return error if there isn't a ':port', -// return an empty string for the port. -func splitHostPort(host string) (string, string) { - ix := strings.LastIndex(host, ":") - - if ix <= strings.LastIndex(host, "]") { - return host, "" - } - - name := host[:ix] - port := host[ix+1:] - - return name, port -} - -const sdkTunnel = "sdkTunnel:8089" - -func (c *Client) SetCertificate(cert tls.Certificate) { - t := c.Client.Transport.(*http.Transport) - - // Extension certificate - t.TLSClientConfig.Certificates = []tls.Certificate{cert} - - // Proxy to vCenter host on port 80 - host, _ := splitHostPort(c.u.Host) - - // Should be no reason to change the default port other than testing - port := os.Getenv("GOVC_TUNNEL_PROXY_PORT") - if port != "" { - host += ":" + port - } - - c.p = &url.URL{ - Scheme: "http", - Host: host, - } - t.Proxy = func(r *http.Request) (*url.URL, error) { - // Only sdk requests should be proxied - if r.URL.Path == "/sdk" { - return c.p, nil - } - return http.ProxyFromEnvironment(r) - } - - // Rewrite url Host to use the sdk tunnel, required for a certificate request. - c.u.Host = sdkTunnel -} - -func (c *Client) URL() *url.URL { - urlCopy := *c.u - return &urlCopy -} - -type marshaledClient struct { - Cookies []*http.Cookie - URL *url.URL - Insecure bool -} - -func (c *Client) MarshalJSON() ([]byte, error) { - m := marshaledClient{ - Cookies: c.Jar.Cookies(c.u), - URL: c.u, - Insecure: c.k, - } - - return json.Marshal(m) -} - -func (c *Client) UnmarshalJSON(b []byte) error { - var m marshaledClient - - err := json.Unmarshal(b, &m) - if err != nil { - return err - } - - *c = *NewClient(m.URL, m.Insecure) - c.Jar.SetCookies(m.URL, m.Cookies) - - return nil -} - -func (c *Client) do(ctx context.Context, req *http.Request) (*http.Response, error) { - if nil == ctx || nil == ctx.Done() { // ctx.Done() is for context.TODO() - return c.Client.Do(req) - } - - var resc = make(chan *http.Response, 1) - var errc = make(chan error, 1) - - // Perform request from separate routine. - go func() { - res, err := c.Client.Do(req) - if err != nil { - errc <- err - } else { - resc <- res - } - }() - - // Wait for request completion of context expiry. - select { - case <-ctx.Done(): - c.t.CancelRequest(req) - return nil, ctx.Err() - case err := <-errc: - return nil, err - case res := <-resc: - return res, nil - } -} - -func (c *Client) RoundTrip(ctx context.Context, reqBody, resBody HasFault) error { - var err error - - reqEnv := Envelope{Body: reqBody} - resEnv := Envelope{Body: resBody} - - // Create debugging context for this round trip - d := c.d.newRoundTrip() - if d.enabled() { - defer d.done() - } - - b, err := xml.Marshal(reqEnv) - if err != nil { - panic(err) - } - - rawReqBody := io.MultiReader(strings.NewReader(xml.Header), bytes.NewReader(b)) - req, err := http.NewRequest("POST", c.u.String(), rawReqBody) - if err != nil { - panic(err) - } - - req.Header.Set(`Content-Type`, `text/xml; charset="utf-8"`) - soapAction := fmt.Sprintf("%s/%s", c.Namespace, c.Version) - req.Header.Set(`SOAPAction`, soapAction) - - if d.enabled() { - d.debugRequest(req) - } - - tstart := time.Now() - res, err := c.do(ctx, req) - tstop := time.Now() - - if d.enabled() { - d.logf("%6dms (%T)", tstop.Sub(tstart)/time.Millisecond, resBody) - } - - if err != nil { - return err - } - - if d.enabled() { - d.debugResponse(res) - } - - // Close response regardless of what happens next - defer res.Body.Close() - - switch res.StatusCode { - case http.StatusOK: - // OK - case http.StatusInternalServerError: - // Error, but typically includes a body explaining the error - default: - return errors.New(res.Status) - } - - dec := xml.NewDecoder(res.Body) - dec.TypeFunc = types.TypeFunc() - err = dec.Decode(&resEnv) - if err != nil { - return err - } - - if f := resBody.Fault(); f != nil { - return WrapSoapFault(f) - } - - return err -} - -func (c *Client) CloseIdleConnections() { - c.t.CloseIdleConnections() -} - -// ParseURL wraps url.Parse to rewrite the URL.Host field -// In the case of VM guest uploads or NFC lease URLs, a Host -// field with a value of "*" is rewritten to the Client's URL.Host. -func (c *Client) ParseURL(urlStr string) (*url.URL, error) { - u, err := url.Parse(urlStr) - if err != nil { - return nil, err - } - - host, _ := splitHostPort(u.Host) - if host == "*" { - // Also use Client's port, to support port forwarding - u.Host = c.URL().Host - } - - return u, nil -} - -type Upload struct { - Type string - Method string - ContentLength int64 - Headers map[string]string - Ticket *http.Cookie - Progress progress.Sinker -} - -var DefaultUpload = Upload{ - Type: "application/octet-stream", - Method: "PUT", -} - -// Upload PUTs the local file to the given URL -func (c *Client) Upload(f io.Reader, u *url.URL, param *Upload) error { - var err error - - if param.Progress != nil { - pr := progress.NewReader(param.Progress, f, param.ContentLength) - f = pr - - // Mark progress reader as done when returning from this function. - defer func() { - pr.Done(err) - }() - } - - req, err := http.NewRequest(param.Method, u.String(), f) - if err != nil { - return err - } - - req.ContentLength = param.ContentLength - req.Header.Set("Content-Type", param.Type) - - for k, v := range param.Headers { - req.Header.Add(k, v) - } - - if param.Ticket != nil { - req.AddCookie(param.Ticket) - } - - res, err := c.Client.Do(req) - if err != nil { - return err - } - - switch res.StatusCode { - case http.StatusOK: - case http.StatusCreated: - default: - err = errors.New(res.Status) - } - - return err -} - -// UploadFile PUTs the local file to the given URL -func (c *Client) UploadFile(file string, u *url.URL, param *Upload) error { - if param == nil { - p := DefaultUpload // Copy since we set ContentLength - param = &p - } - - s, err := os.Stat(file) - if err != nil { - return err - } - - f, err := os.Open(file) - if err != nil { - return err - } - defer f.Close() - - param.ContentLength = s.Size() - - return c.Upload(f, u, param) -} - -type Download struct { - Method string - Ticket *http.Cookie - Progress progress.Sinker -} - -var DefaultDownload = Download{ - Method: "GET", -} - -// Download GETs the remote file from the given URL -func (c *Client) Download(u *url.URL, param *Download) (io.ReadCloser, int64, error) { - - req, err := http.NewRequest(param.Method, u.String(), nil) - if err != nil { - return nil, 0, err - } - - if param.Ticket != nil { - req.AddCookie(param.Ticket) - } - - res, err := c.Client.Do(req) - if err != nil { - return nil, 0, err - } - - switch res.StatusCode { - case http.StatusOK: - default: - err = errors.New(res.Status) - } - - if err != nil { - return nil, 0, err - } - - var r io.ReadCloser = res.Body - - return r, res.ContentLength, nil -} - -// DownloadFile GETs the given URL to a local file -func (c *Client) DownloadFile(file string, u *url.URL, param *Download) error { - var err error - if param == nil { - param = &DefaultDownload - } - - rc, contentLength, err := c.Download(u, param) - if err != nil { - return err - } - defer rc.Close() - - var r io.Reader = rc - - fh, err := os.Create(file) - if err != nil { - return err - } - defer fh.Close() - - if param.Progress != nil { - pr := progress.NewReader(param.Progress, r, contentLength) - r = pr - - // Mark progress reader as done when returning from this function. - defer func() { - pr.Done(err) - }() - } - - _, err = io.Copy(fh, r) - if err != nil { - return err - } - - // Assign error before returning so that it gets picked up by the deferred - // function marking the progress reader as done. - err = fh.Close() - if err != nil { - return err - } - - return nil -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/soap/debug.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/soap/debug.go deleted file mode 100644 index 63518abc..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/soap/debug.go +++ /dev/null @@ -1,149 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package soap - -import ( - "fmt" - "io" - "net/http" - "net/http/httputil" - "sync/atomic" - "time" - - "github.com/vmware/govmomi/vim25/debug" -) - -// teeReader wraps io.TeeReader and patches through the Close() function. -type teeReader struct { - io.Reader - io.Closer -} - -func newTeeReader(rc io.ReadCloser, w io.Writer) io.ReadCloser { - return teeReader{ - Reader: io.TeeReader(rc, w), - Closer: rc, - } -} - -// debugRoundTrip contains state and logic needed to debug a single round trip. -type debugRoundTrip struct { - cn uint64 // Client number - rn uint64 // Request number - log io.WriteCloser // Request log - cs []io.Closer // Files that need closing when done -} - -func (d *debugRoundTrip) logf(format string, a ...interface{}) { - now := time.Now().Format("2006-01-02T15-04-05.000000000") - fmt.Fprintf(d.log, "%s - %04d: ", now, d.rn) - fmt.Fprintf(d.log, format, a...) - fmt.Fprintf(d.log, "\n") -} - -func (d *debugRoundTrip) enabled() bool { - return d != nil -} - -func (d *debugRoundTrip) done() { - for _, c := range d.cs { - c.Close() - } -} - -func (d *debugRoundTrip) newFile(suffix string) io.WriteCloser { - return debug.NewFile(fmt.Sprintf("%d-%04d.%s", d.cn, d.rn, suffix)) -} - -func (d *debugRoundTrip) debugRequest(req *http.Request) { - if d == nil { - return - } - - var wc io.WriteCloser - - // Capture headers - wc = d.newFile("req.headers") - b, _ := httputil.DumpRequest(req, false) - wc.Write(b) - wc.Close() - - // Capture body - wc = d.newFile("req.xml") - req.Body = newTeeReader(req.Body, wc) - - // Delay closing until marked done - d.cs = append(d.cs, wc) -} - -func (d *debugRoundTrip) debugResponse(res *http.Response) { - if d == nil { - return - } - - var wc io.WriteCloser - - // Capture headers - wc = d.newFile("res.headers") - b, _ := httputil.DumpResponse(res, false) - wc.Write(b) - wc.Close() - - // Capture body - wc = d.newFile("res.xml") - res.Body = newTeeReader(res.Body, wc) - - // Delay closing until marked done - d.cs = append(d.cs, wc) -} - -var cn uint64 // Client counter - -// debugContainer wraps the debugging state for a single client. -type debugContainer struct { - cn uint64 // Client number - rn uint64 // Request counter - log io.WriteCloser // Request log -} - -func newDebug() *debugContainer { - d := debugContainer{ - cn: atomic.AddUint64(&cn, 1), - rn: 0, - } - - if !debug.Enabled() { - return nil - } - - d.log = debug.NewFile(fmt.Sprintf("%d-client.log", d.cn)) - return &d -} - -func (d *debugContainer) newRoundTrip() *debugRoundTrip { - if d == nil { - return nil - } - - drt := debugRoundTrip{ - cn: d.cn, - rn: atomic.AddUint64(&d.rn, 1), - log: d.log, - } - - return &drt -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/soap/error.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/soap/error.go deleted file mode 100644 index 0408e7bf..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/soap/error.go +++ /dev/null @@ -1,109 +0,0 @@ -/* -Copyright (c) 2014 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package soap - -import ( - "fmt" - "reflect" - - "github.com/vmware/govmomi/vim25/types" -) - -type regularError struct { - err error -} - -func (r regularError) Error() string { - return r.err.Error() -} - -type soapFaultError struct { - fault *Fault -} - -func (s soapFaultError) Error() string { - return fmt.Sprintf("%s: %s", s.fault.Code, s.fault.String) -} - -type vimFaultError struct { - fault types.BaseMethodFault -} - -func (v vimFaultError) Error() string { - typ := reflect.TypeOf(v.fault) - for typ.Kind() == reflect.Ptr { - typ = typ.Elem() - } - - return typ.Name() -} - -func (v vimFaultError) Fault() types.BaseMethodFault { - return v.fault -} - -func Wrap(err error) error { - switch err.(type) { - case regularError: - return err - case soapFaultError: - return err - case vimFaultError: - return err - } - - return WrapRegularError(err) -} - -func WrapRegularError(err error) error { - return regularError{err} -} - -func IsRegularError(err error) bool { - _, ok := err.(regularError) - return ok -} - -func ToRegularError(err error) error { - return err.(regularError).err -} - -func WrapSoapFault(f *Fault) error { - return soapFaultError{f} -} - -func IsSoapFault(err error) bool { - _, ok := err.(soapFaultError) - return ok -} - -func ToSoapFault(err error) *Fault { - return err.(soapFaultError).fault -} - -func WrapVimFault(v types.BaseMethodFault) error { - return vimFaultError{v} -} - -func IsVimFault(err error) bool { - _, ok := err.(vimFaultError) - return ok -} - -func ToVimFault(err error) types.BaseMethodFault { - return err.(vimFaultError).fault -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/soap/soap.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/soap/soap.go deleted file mode 100644 index e3b1a97d..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/soap/soap.go +++ /dev/null @@ -1,45 +0,0 @@ -/* -Copyright (c) 2014 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package soap - -import ( - "github.com/vmware/govmomi/vim25/types" - "github.com/vmware/govmomi/vim25/xml" -) - -type Envelope struct { - XMLName xml.Name `xml:"http://schemas.xmlsoap.org/soap/envelope/ Envelope"` - Header *Header `xml:",omitempty"` - Body interface{} -} - -type Header struct { - XMLName xml.Name `xml:"http://schemas.xmlsoap.org/soap/envelope/ Header"` -} - -type Fault struct { - XMLName xml.Name `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault"` - Code string `xml:"faultcode"` - String string `xml:"faultstring"` - Detail struct { - Fault types.AnyType `xml:",any"` - } `xml:"detail"` -} - -func (f *Fault) VimFault() types.AnyType { - return f.Detail.Fault -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/base.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/base.go deleted file mode 100644 index 3bb12b74..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/base.go +++ /dev/null @@ -1,19 +0,0 @@ -/* -Copyright (c) 2014 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package types - -type AnyType interface{} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/enum.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/enum.go deleted file mode 100644 index 07076e3a..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/enum.go +++ /dev/null @@ -1,4098 +0,0 @@ -/* -Copyright (c) 2014-2016 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package types - -import "reflect" - -type ActionParameter string - -const ( - ActionParameterTargetName = ActionParameter("targetName") - ActionParameterAlarmName = ActionParameter("alarmName") - ActionParameterOldStatus = ActionParameter("oldStatus") - ActionParameterNewStatus = ActionParameter("newStatus") - ActionParameterTriggeringSummary = ActionParameter("triggeringSummary") - ActionParameterDeclaringSummary = ActionParameter("declaringSummary") - ActionParameterEventDescription = ActionParameter("eventDescription") - ActionParameterTarget = ActionParameter("target") - ActionParameterAlarm = ActionParameter("alarm") -) - -func init() { - t["ActionParameter"] = reflect.TypeOf((*ActionParameter)(nil)).Elem() -} - -type ActionType string - -const ( - ActionTypeMigrationV1 = ActionType("MigrationV1") - ActionTypeVmPowerV1 = ActionType("VmPowerV1") - ActionTypeHostPowerV1 = ActionType("HostPowerV1") - ActionTypeHostMaintenanceV1 = ActionType("HostMaintenanceV1") - ActionTypeStorageMigrationV1 = ActionType("StorageMigrationV1") - ActionTypeStoragePlacementV1 = ActionType("StoragePlacementV1") - ActionTypePlacementV1 = ActionType("PlacementV1") -) - -func init() { - t["ActionType"] = reflect.TypeOf((*ActionType)(nil)).Elem() -} - -type AffinityType string - -const ( - AffinityTypeMemory = AffinityType("memory") - AffinityTypeCpu = AffinityType("cpu") -) - -func init() { - t["AffinityType"] = reflect.TypeOf((*AffinityType)(nil)).Elem() -} - -type AgentInstallFailedReason string - -const ( - AgentInstallFailedReasonNotEnoughSpaceOnDevice = AgentInstallFailedReason("NotEnoughSpaceOnDevice") - AgentInstallFailedReasonPrepareToUpgradeFailed = AgentInstallFailedReason("PrepareToUpgradeFailed") - AgentInstallFailedReasonAgentNotRunning = AgentInstallFailedReason("AgentNotRunning") - AgentInstallFailedReasonAgentNotReachable = AgentInstallFailedReason("AgentNotReachable") - AgentInstallFailedReasonInstallTimedout = AgentInstallFailedReason("InstallTimedout") - AgentInstallFailedReasonSignatureVerificationFailed = AgentInstallFailedReason("SignatureVerificationFailed") - AgentInstallFailedReasonAgentUploadFailed = AgentInstallFailedReason("AgentUploadFailed") - AgentInstallFailedReasonAgentUploadTimedout = AgentInstallFailedReason("AgentUploadTimedout") - AgentInstallFailedReasonUnknownInstallerError = AgentInstallFailedReason("UnknownInstallerError") -) - -func init() { - t["AgentInstallFailedReason"] = reflect.TypeOf((*AgentInstallFailedReason)(nil)).Elem() -} - -type ArrayUpdateOperation string - -const ( - ArrayUpdateOperationAdd = ArrayUpdateOperation("add") - ArrayUpdateOperationRemove = ArrayUpdateOperation("remove") - ArrayUpdateOperationEdit = ArrayUpdateOperation("edit") -) - -func init() { - t["ArrayUpdateOperation"] = reflect.TypeOf((*ArrayUpdateOperation)(nil)).Elem() -} - -type AutoStartAction string - -const ( - AutoStartActionNone = AutoStartAction("none") - AutoStartActionSystemDefault = AutoStartAction("systemDefault") - AutoStartActionPowerOn = AutoStartAction("powerOn") - AutoStartActionPowerOff = AutoStartAction("powerOff") - AutoStartActionGuestShutdown = AutoStartAction("guestShutdown") - AutoStartActionSuspend = AutoStartAction("suspend") -) - -func init() { - t["AutoStartAction"] = reflect.TypeOf((*AutoStartAction)(nil)).Elem() -} - -type AutoStartWaitHeartbeatSetting string - -const ( - AutoStartWaitHeartbeatSettingYes = AutoStartWaitHeartbeatSetting("yes") - AutoStartWaitHeartbeatSettingNo = AutoStartWaitHeartbeatSetting("no") - AutoStartWaitHeartbeatSettingSystemDefault = AutoStartWaitHeartbeatSetting("systemDefault") -) - -func init() { - t["AutoStartWaitHeartbeatSetting"] = reflect.TypeOf((*AutoStartWaitHeartbeatSetting)(nil)).Elem() -} - -type BatchResultResult string - -const ( - BatchResultResultSuccess = BatchResultResult("success") - BatchResultResultFail = BatchResultResult("fail") -) - -func init() { - t["BatchResultResult"] = reflect.TypeOf((*BatchResultResult)(nil)).Elem() -} - -type CannotEnableVmcpForClusterReason string - -const ( - CannotEnableVmcpForClusterReasonAPDTimeoutDisabled = CannotEnableVmcpForClusterReason("APDTimeoutDisabled") - CannotEnableVmcpForClusterReasonIncompatibleHostVersion = CannotEnableVmcpForClusterReason("IncompatibleHostVersion") -) - -func init() { - t["CannotEnableVmcpForClusterReason"] = reflect.TypeOf((*CannotEnableVmcpForClusterReason)(nil)).Elem() -} - -type CannotMoveFaultToleranceVmMoveType string - -const ( - CannotMoveFaultToleranceVmMoveTypeResourcePool = CannotMoveFaultToleranceVmMoveType("resourcePool") - CannotMoveFaultToleranceVmMoveTypeCluster = CannotMoveFaultToleranceVmMoveType("cluster") -) - -func init() { - t["CannotMoveFaultToleranceVmMoveType"] = reflect.TypeOf((*CannotMoveFaultToleranceVmMoveType)(nil)).Elem() -} - -type CannotPowerOffVmInClusterOperation string - -const ( - CannotPowerOffVmInClusterOperationSuspend = CannotPowerOffVmInClusterOperation("suspend") - CannotPowerOffVmInClusterOperationPowerOff = CannotPowerOffVmInClusterOperation("powerOff") - CannotPowerOffVmInClusterOperationGuestShutdown = CannotPowerOffVmInClusterOperation("guestShutdown") - CannotPowerOffVmInClusterOperationGuestSuspend = CannotPowerOffVmInClusterOperation("guestSuspend") -) - -func init() { - t["CannotPowerOffVmInClusterOperation"] = reflect.TypeOf((*CannotPowerOffVmInClusterOperation)(nil)).Elem() -} - -type CannotUseNetworkReason string - -const ( - CannotUseNetworkReasonNetworkReservationNotSupported = CannotUseNetworkReason("NetworkReservationNotSupported") - CannotUseNetworkReasonMismatchedNetworkPolicies = CannotUseNetworkReason("MismatchedNetworkPolicies") - CannotUseNetworkReasonMismatchedDvsVersionOrVendor = CannotUseNetworkReason("MismatchedDvsVersionOrVendor") - CannotUseNetworkReasonVMotionToUnsupportedNetworkType = CannotUseNetworkReason("VMotionToUnsupportedNetworkType") -) - -func init() { - t["CannotUseNetworkReason"] = reflect.TypeOf((*CannotUseNetworkReason)(nil)).Elem() -} - -type CheckTestType string - -const ( - CheckTestTypeSourceTests = CheckTestType("sourceTests") - CheckTestTypeHostTests = CheckTestType("hostTests") - CheckTestTypeResourcePoolTests = CheckTestType("resourcePoolTests") - CheckTestTypeDatastoreTests = CheckTestType("datastoreTests") - CheckTestTypeNetworkTests = CheckTestType("networkTests") -) - -func init() { - t["CheckTestType"] = reflect.TypeOf((*CheckTestType)(nil)).Elem() -} - -type ClusterDasAamNodeStateDasState string - -const ( - ClusterDasAamNodeStateDasStateUninitialized = ClusterDasAamNodeStateDasState("uninitialized") - ClusterDasAamNodeStateDasStateInitialized = ClusterDasAamNodeStateDasState("initialized") - ClusterDasAamNodeStateDasStateConfiguring = ClusterDasAamNodeStateDasState("configuring") - ClusterDasAamNodeStateDasStateUnconfiguring = ClusterDasAamNodeStateDasState("unconfiguring") - ClusterDasAamNodeStateDasStateRunning = ClusterDasAamNodeStateDasState("running") - ClusterDasAamNodeStateDasStateError = ClusterDasAamNodeStateDasState("error") - ClusterDasAamNodeStateDasStateAgentShutdown = ClusterDasAamNodeStateDasState("agentShutdown") - ClusterDasAamNodeStateDasStateNodeFailed = ClusterDasAamNodeStateDasState("nodeFailed") -) - -func init() { - t["ClusterDasAamNodeStateDasState"] = reflect.TypeOf((*ClusterDasAamNodeStateDasState)(nil)).Elem() -} - -type ClusterDasConfigInfoHBDatastoreCandidate string - -const ( - ClusterDasConfigInfoHBDatastoreCandidateUserSelectedDs = ClusterDasConfigInfoHBDatastoreCandidate("userSelectedDs") - ClusterDasConfigInfoHBDatastoreCandidateAllFeasibleDs = ClusterDasConfigInfoHBDatastoreCandidate("allFeasibleDs") - ClusterDasConfigInfoHBDatastoreCandidateAllFeasibleDsWithUserPreference = ClusterDasConfigInfoHBDatastoreCandidate("allFeasibleDsWithUserPreference") -) - -func init() { - t["ClusterDasConfigInfoHBDatastoreCandidate"] = reflect.TypeOf((*ClusterDasConfigInfoHBDatastoreCandidate)(nil)).Elem() -} - -type ClusterDasConfigInfoServiceState string - -const ( - ClusterDasConfigInfoServiceStateDisabled = ClusterDasConfigInfoServiceState("disabled") - ClusterDasConfigInfoServiceStateEnabled = ClusterDasConfigInfoServiceState("enabled") -) - -func init() { - t["ClusterDasConfigInfoServiceState"] = reflect.TypeOf((*ClusterDasConfigInfoServiceState)(nil)).Elem() -} - -type ClusterDasConfigInfoVmMonitoringState string - -const ( - ClusterDasConfigInfoVmMonitoringStateVmMonitoringDisabled = ClusterDasConfigInfoVmMonitoringState("vmMonitoringDisabled") - ClusterDasConfigInfoVmMonitoringStateVmMonitoringOnly = ClusterDasConfigInfoVmMonitoringState("vmMonitoringOnly") - ClusterDasConfigInfoVmMonitoringStateVmAndAppMonitoring = ClusterDasConfigInfoVmMonitoringState("vmAndAppMonitoring") -) - -func init() { - t["ClusterDasConfigInfoVmMonitoringState"] = reflect.TypeOf((*ClusterDasConfigInfoVmMonitoringState)(nil)).Elem() -} - -type ClusterDasFdmAvailabilityState string - -const ( - ClusterDasFdmAvailabilityStateUninitialized = ClusterDasFdmAvailabilityState("uninitialized") - ClusterDasFdmAvailabilityStateElection = ClusterDasFdmAvailabilityState("election") - ClusterDasFdmAvailabilityStateMaster = ClusterDasFdmAvailabilityState("master") - ClusterDasFdmAvailabilityStateConnectedToMaster = ClusterDasFdmAvailabilityState("connectedToMaster") - ClusterDasFdmAvailabilityStateNetworkPartitionedFromMaster = ClusterDasFdmAvailabilityState("networkPartitionedFromMaster") - ClusterDasFdmAvailabilityStateNetworkIsolated = ClusterDasFdmAvailabilityState("networkIsolated") - ClusterDasFdmAvailabilityStateHostDown = ClusterDasFdmAvailabilityState("hostDown") - ClusterDasFdmAvailabilityStateInitializationError = ClusterDasFdmAvailabilityState("initializationError") - ClusterDasFdmAvailabilityStateUninitializationError = ClusterDasFdmAvailabilityState("uninitializationError") - ClusterDasFdmAvailabilityStateFdmUnreachable = ClusterDasFdmAvailabilityState("fdmUnreachable") -) - -func init() { - t["ClusterDasFdmAvailabilityState"] = reflect.TypeOf((*ClusterDasFdmAvailabilityState)(nil)).Elem() -} - -type ClusterDasVmSettingsIsolationResponse string - -const ( - ClusterDasVmSettingsIsolationResponseNone = ClusterDasVmSettingsIsolationResponse("none") - ClusterDasVmSettingsIsolationResponsePowerOff = ClusterDasVmSettingsIsolationResponse("powerOff") - ClusterDasVmSettingsIsolationResponseShutdown = ClusterDasVmSettingsIsolationResponse("shutdown") - ClusterDasVmSettingsIsolationResponseClusterIsolationResponse = ClusterDasVmSettingsIsolationResponse("clusterIsolationResponse") -) - -func init() { - t["ClusterDasVmSettingsIsolationResponse"] = reflect.TypeOf((*ClusterDasVmSettingsIsolationResponse)(nil)).Elem() -} - -type ClusterDasVmSettingsRestartPriority string - -const ( - ClusterDasVmSettingsRestartPriorityDisabled = ClusterDasVmSettingsRestartPriority("disabled") - ClusterDasVmSettingsRestartPriorityLow = ClusterDasVmSettingsRestartPriority("low") - ClusterDasVmSettingsRestartPriorityMedium = ClusterDasVmSettingsRestartPriority("medium") - ClusterDasVmSettingsRestartPriorityHigh = ClusterDasVmSettingsRestartPriority("high") - ClusterDasVmSettingsRestartPriorityClusterRestartPriority = ClusterDasVmSettingsRestartPriority("clusterRestartPriority") -) - -func init() { - t["ClusterDasVmSettingsRestartPriority"] = reflect.TypeOf((*ClusterDasVmSettingsRestartPriority)(nil)).Elem() -} - -type ClusterPowerOnVmOption string - -const ( - ClusterPowerOnVmOptionOverrideAutomationLevel = ClusterPowerOnVmOption("OverrideAutomationLevel") - ClusterPowerOnVmOptionReserveResources = ClusterPowerOnVmOption("ReserveResources") -) - -func init() { - t["ClusterPowerOnVmOption"] = reflect.TypeOf((*ClusterPowerOnVmOption)(nil)).Elem() -} - -type ClusterProfileServiceType string - -const ( - ClusterProfileServiceTypeDRS = ClusterProfileServiceType("DRS") - ClusterProfileServiceTypeHA = ClusterProfileServiceType("HA") - ClusterProfileServiceTypeDPM = ClusterProfileServiceType("DPM") - ClusterProfileServiceTypeFT = ClusterProfileServiceType("FT") -) - -func init() { - t["ClusterProfileServiceType"] = reflect.TypeOf((*ClusterProfileServiceType)(nil)).Elem() -} - -type ClusterVmComponentProtectionSettingsStorageVmReaction string - -const ( - ClusterVmComponentProtectionSettingsStorageVmReactionDisabled = ClusterVmComponentProtectionSettingsStorageVmReaction("disabled") - ClusterVmComponentProtectionSettingsStorageVmReactionWarning = ClusterVmComponentProtectionSettingsStorageVmReaction("warning") - ClusterVmComponentProtectionSettingsStorageVmReactionRestartConservative = ClusterVmComponentProtectionSettingsStorageVmReaction("restartConservative") - ClusterVmComponentProtectionSettingsStorageVmReactionRestartAggressive = ClusterVmComponentProtectionSettingsStorageVmReaction("restartAggressive") - ClusterVmComponentProtectionSettingsStorageVmReactionClusterDefault = ClusterVmComponentProtectionSettingsStorageVmReaction("clusterDefault") -) - -func init() { - t["ClusterVmComponentProtectionSettingsStorageVmReaction"] = reflect.TypeOf((*ClusterVmComponentProtectionSettingsStorageVmReaction)(nil)).Elem() -} - -type ClusterVmComponentProtectionSettingsVmReactionOnAPDCleared string - -const ( - ClusterVmComponentProtectionSettingsVmReactionOnAPDClearedNone = ClusterVmComponentProtectionSettingsVmReactionOnAPDCleared("none") - ClusterVmComponentProtectionSettingsVmReactionOnAPDClearedReset = ClusterVmComponentProtectionSettingsVmReactionOnAPDCleared("reset") - ClusterVmComponentProtectionSettingsVmReactionOnAPDClearedUseClusterDefault = ClusterVmComponentProtectionSettingsVmReactionOnAPDCleared("useClusterDefault") -) - -func init() { - t["ClusterVmComponentProtectionSettingsVmReactionOnAPDCleared"] = reflect.TypeOf((*ClusterVmComponentProtectionSettingsVmReactionOnAPDCleared)(nil)).Elem() -} - -type ComplianceResultStatus string - -const ( - ComplianceResultStatusCompliant = ComplianceResultStatus("compliant") - ComplianceResultStatusNonCompliant = ComplianceResultStatus("nonCompliant") - ComplianceResultStatusUnknown = ComplianceResultStatus("unknown") -) - -func init() { - t["ComplianceResultStatus"] = reflect.TypeOf((*ComplianceResultStatus)(nil)).Elem() -} - -type ComputeResourceHostSPBMLicenseInfoHostSPBMLicenseState string - -const ( - ComputeResourceHostSPBMLicenseInfoHostSPBMLicenseStateLicensed = ComputeResourceHostSPBMLicenseInfoHostSPBMLicenseState("licensed") - ComputeResourceHostSPBMLicenseInfoHostSPBMLicenseStateUnlicensed = ComputeResourceHostSPBMLicenseInfoHostSPBMLicenseState("unlicensed") - ComputeResourceHostSPBMLicenseInfoHostSPBMLicenseStateUnknown = ComputeResourceHostSPBMLicenseInfoHostSPBMLicenseState("unknown") -) - -func init() { - t["ComputeResourceHostSPBMLicenseInfoHostSPBMLicenseState"] = reflect.TypeOf((*ComputeResourceHostSPBMLicenseInfoHostSPBMLicenseState)(nil)).Elem() -} - -type ConfigSpecOperation string - -const ( - ConfigSpecOperationAdd = ConfigSpecOperation("add") - ConfigSpecOperationEdit = ConfigSpecOperation("edit") - ConfigSpecOperationRemove = ConfigSpecOperation("remove") -) - -func init() { - t["ConfigSpecOperation"] = reflect.TypeOf((*ConfigSpecOperation)(nil)).Elem() -} - -type CustomizationLicenseDataMode string - -const ( - CustomizationLicenseDataModePerServer = CustomizationLicenseDataMode("perServer") - CustomizationLicenseDataModePerSeat = CustomizationLicenseDataMode("perSeat") -) - -func init() { - t["CustomizationLicenseDataMode"] = reflect.TypeOf((*CustomizationLicenseDataMode)(nil)).Elem() -} - -type CustomizationNetBIOSMode string - -const ( - CustomizationNetBIOSModeEnableNetBIOSViaDhcp = CustomizationNetBIOSMode("enableNetBIOSViaDhcp") - CustomizationNetBIOSModeEnableNetBIOS = CustomizationNetBIOSMode("enableNetBIOS") - CustomizationNetBIOSModeDisableNetBIOS = CustomizationNetBIOSMode("disableNetBIOS") -) - -func init() { - t["CustomizationNetBIOSMode"] = reflect.TypeOf((*CustomizationNetBIOSMode)(nil)).Elem() -} - -type CustomizationSysprepRebootOption string - -const ( - CustomizationSysprepRebootOptionReboot = CustomizationSysprepRebootOption("reboot") - CustomizationSysprepRebootOptionNoreboot = CustomizationSysprepRebootOption("noreboot") - CustomizationSysprepRebootOptionShutdown = CustomizationSysprepRebootOption("shutdown") -) - -func init() { - t["CustomizationSysprepRebootOption"] = reflect.TypeOf((*CustomizationSysprepRebootOption)(nil)).Elem() -} - -type DVPortStatusVmDirectPathGen2InactiveReasonNetwork string - -const ( - DVPortStatusVmDirectPathGen2InactiveReasonNetworkPortNptIncompatibleDvs = DVPortStatusVmDirectPathGen2InactiveReasonNetwork("portNptIncompatibleDvs") - DVPortStatusVmDirectPathGen2InactiveReasonNetworkPortNptNoCompatibleNics = DVPortStatusVmDirectPathGen2InactiveReasonNetwork("portNptNoCompatibleNics") - DVPortStatusVmDirectPathGen2InactiveReasonNetworkPortNptNoVirtualFunctionsAvailable = DVPortStatusVmDirectPathGen2InactiveReasonNetwork("portNptNoVirtualFunctionsAvailable") - DVPortStatusVmDirectPathGen2InactiveReasonNetworkPortNptDisabledForPort = DVPortStatusVmDirectPathGen2InactiveReasonNetwork("portNptDisabledForPort") -) - -func init() { - t["DVPortStatusVmDirectPathGen2InactiveReasonNetwork"] = reflect.TypeOf((*DVPortStatusVmDirectPathGen2InactiveReasonNetwork)(nil)).Elem() -} - -type DVPortStatusVmDirectPathGen2InactiveReasonOther string - -const ( - DVPortStatusVmDirectPathGen2InactiveReasonOtherPortNptIncompatibleHost = DVPortStatusVmDirectPathGen2InactiveReasonOther("portNptIncompatibleHost") - DVPortStatusVmDirectPathGen2InactiveReasonOtherPortNptIncompatibleConnectee = DVPortStatusVmDirectPathGen2InactiveReasonOther("portNptIncompatibleConnectee") -) - -func init() { - t["DVPortStatusVmDirectPathGen2InactiveReasonOther"] = reflect.TypeOf((*DVPortStatusVmDirectPathGen2InactiveReasonOther)(nil)).Elem() -} - -type DasConfigFaultDasConfigFaultReason string - -const ( - DasConfigFaultDasConfigFaultReasonHostNetworkMisconfiguration = DasConfigFaultDasConfigFaultReason("HostNetworkMisconfiguration") - DasConfigFaultDasConfigFaultReasonHostMisconfiguration = DasConfigFaultDasConfigFaultReason("HostMisconfiguration") - DasConfigFaultDasConfigFaultReasonInsufficientPrivileges = DasConfigFaultDasConfigFaultReason("InsufficientPrivileges") - DasConfigFaultDasConfigFaultReasonNoPrimaryAgentAvailable = DasConfigFaultDasConfigFaultReason("NoPrimaryAgentAvailable") - DasConfigFaultDasConfigFaultReasonOther = DasConfigFaultDasConfigFaultReason("Other") - DasConfigFaultDasConfigFaultReasonNoDatastoresConfigured = DasConfigFaultDasConfigFaultReason("NoDatastoresConfigured") - DasConfigFaultDasConfigFaultReasonCreateConfigVvolFailed = DasConfigFaultDasConfigFaultReason("CreateConfigVvolFailed") - DasConfigFaultDasConfigFaultReasonVSanNotSupportedOnHost = DasConfigFaultDasConfigFaultReason("VSanNotSupportedOnHost") - DasConfigFaultDasConfigFaultReasonDasNetworkMisconfiguration = DasConfigFaultDasConfigFaultReason("DasNetworkMisconfiguration") -) - -func init() { - t["DasConfigFaultDasConfigFaultReason"] = reflect.TypeOf((*DasConfigFaultDasConfigFaultReason)(nil)).Elem() -} - -type DasVmPriority string - -const ( - DasVmPriorityDisabled = DasVmPriority("disabled") - DasVmPriorityLow = DasVmPriority("low") - DasVmPriorityMedium = DasVmPriority("medium") - DasVmPriorityHigh = DasVmPriority("high") -) - -func init() { - t["DasVmPriority"] = reflect.TypeOf((*DasVmPriority)(nil)).Elem() -} - -type DatastoreAccessible string - -const ( - DatastoreAccessibleTrue = DatastoreAccessible("True") - DatastoreAccessibleFalse = DatastoreAccessible("False") -) - -func init() { - t["DatastoreAccessible"] = reflect.TypeOf((*DatastoreAccessible)(nil)).Elem() -} - -type DatastoreSummaryMaintenanceModeState string - -const ( - DatastoreSummaryMaintenanceModeStateNormal = DatastoreSummaryMaintenanceModeState("normal") - DatastoreSummaryMaintenanceModeStateEnteringMaintenance = DatastoreSummaryMaintenanceModeState("enteringMaintenance") - DatastoreSummaryMaintenanceModeStateInMaintenance = DatastoreSummaryMaintenanceModeState("inMaintenance") -) - -func init() { - t["DatastoreSummaryMaintenanceModeState"] = reflect.TypeOf((*DatastoreSummaryMaintenanceModeState)(nil)).Elem() -} - -type DayOfWeek string - -const ( - DayOfWeekSunday = DayOfWeek("sunday") - DayOfWeekMonday = DayOfWeek("monday") - DayOfWeekTuesday = DayOfWeek("tuesday") - DayOfWeekWednesday = DayOfWeek("wednesday") - DayOfWeekThursday = DayOfWeek("thursday") - DayOfWeekFriday = DayOfWeek("friday") - DayOfWeekSaturday = DayOfWeek("saturday") -) - -func init() { - t["DayOfWeek"] = reflect.TypeOf((*DayOfWeek)(nil)).Elem() -} - -type DeviceNotSupportedReason string - -const ( - DeviceNotSupportedReasonHost = DeviceNotSupportedReason("host") - DeviceNotSupportedReasonGuest = DeviceNotSupportedReason("guest") -) - -func init() { - t["DeviceNotSupportedReason"] = reflect.TypeOf((*DeviceNotSupportedReason)(nil)).Elem() -} - -type DiagnosticManagerLogCreator string - -const ( - DiagnosticManagerLogCreatorVpxd = DiagnosticManagerLogCreator("vpxd") - DiagnosticManagerLogCreatorVpxa = DiagnosticManagerLogCreator("vpxa") - DiagnosticManagerLogCreatorHostd = DiagnosticManagerLogCreator("hostd") - DiagnosticManagerLogCreatorServerd = DiagnosticManagerLogCreator("serverd") - DiagnosticManagerLogCreatorInstall = DiagnosticManagerLogCreator("install") - DiagnosticManagerLogCreatorVpxClient = DiagnosticManagerLogCreator("vpxClient") - DiagnosticManagerLogCreatorRecordLog = DiagnosticManagerLogCreator("recordLog") -) - -func init() { - t["DiagnosticManagerLogCreator"] = reflect.TypeOf((*DiagnosticManagerLogCreator)(nil)).Elem() -} - -type DiagnosticManagerLogFormat string - -const ( - DiagnosticManagerLogFormatPlain = DiagnosticManagerLogFormat("plain") -) - -func init() { - t["DiagnosticManagerLogFormat"] = reflect.TypeOf((*DiagnosticManagerLogFormat)(nil)).Elem() -} - -type DiagnosticPartitionStorageType string - -const ( - DiagnosticPartitionStorageTypeDirectAttached = DiagnosticPartitionStorageType("directAttached") - DiagnosticPartitionStorageTypeNetworkAttached = DiagnosticPartitionStorageType("networkAttached") -) - -func init() { - t["DiagnosticPartitionStorageType"] = reflect.TypeOf((*DiagnosticPartitionStorageType)(nil)).Elem() -} - -type DiagnosticPartitionType string - -const ( - DiagnosticPartitionTypeSingleHost = DiagnosticPartitionType("singleHost") - DiagnosticPartitionTypeMultiHost = DiagnosticPartitionType("multiHost") -) - -func init() { - t["DiagnosticPartitionType"] = reflect.TypeOf((*DiagnosticPartitionType)(nil)).Elem() -} - -type DisallowedChangeByServiceDisallowedChange string - -const ( - DisallowedChangeByServiceDisallowedChangeHotExtendDisk = DisallowedChangeByServiceDisallowedChange("hotExtendDisk") -) - -func init() { - t["DisallowedChangeByServiceDisallowedChange"] = reflect.TypeOf((*DisallowedChangeByServiceDisallowedChange)(nil)).Elem() -} - -type DistributedVirtualPortgroupMetaTagName string - -const ( - DistributedVirtualPortgroupMetaTagNameDvsName = DistributedVirtualPortgroupMetaTagName("dvsName") - DistributedVirtualPortgroupMetaTagNamePortgroupName = DistributedVirtualPortgroupMetaTagName("portgroupName") - DistributedVirtualPortgroupMetaTagNamePortIndex = DistributedVirtualPortgroupMetaTagName("portIndex") -) - -func init() { - t["DistributedVirtualPortgroupMetaTagName"] = reflect.TypeOf((*DistributedVirtualPortgroupMetaTagName)(nil)).Elem() -} - -type DistributedVirtualPortgroupPortgroupType string - -const ( - DistributedVirtualPortgroupPortgroupTypeEarlyBinding = DistributedVirtualPortgroupPortgroupType("earlyBinding") - DistributedVirtualPortgroupPortgroupTypeLateBinding = DistributedVirtualPortgroupPortgroupType("lateBinding") - DistributedVirtualPortgroupPortgroupTypeEphemeral = DistributedVirtualPortgroupPortgroupType("ephemeral") -) - -func init() { - t["DistributedVirtualPortgroupPortgroupType"] = reflect.TypeOf((*DistributedVirtualPortgroupPortgroupType)(nil)).Elem() -} - -type DistributedVirtualSwitchHostInfrastructureTrafficClass string - -const ( - DistributedVirtualSwitchHostInfrastructureTrafficClassManagement = DistributedVirtualSwitchHostInfrastructureTrafficClass("management") - DistributedVirtualSwitchHostInfrastructureTrafficClassFaultTolerance = DistributedVirtualSwitchHostInfrastructureTrafficClass("faultTolerance") - DistributedVirtualSwitchHostInfrastructureTrafficClassVmotion = DistributedVirtualSwitchHostInfrastructureTrafficClass("vmotion") - DistributedVirtualSwitchHostInfrastructureTrafficClassVirtualMachine = DistributedVirtualSwitchHostInfrastructureTrafficClass("virtualMachine") - DistributedVirtualSwitchHostInfrastructureTrafficClassISCSI = DistributedVirtualSwitchHostInfrastructureTrafficClass("iSCSI") - DistributedVirtualSwitchHostInfrastructureTrafficClassNfs = DistributedVirtualSwitchHostInfrastructureTrafficClass("nfs") - DistributedVirtualSwitchHostInfrastructureTrafficClassHbr = DistributedVirtualSwitchHostInfrastructureTrafficClass("hbr") - DistributedVirtualSwitchHostInfrastructureTrafficClassVsan = DistributedVirtualSwitchHostInfrastructureTrafficClass("vsan") - DistributedVirtualSwitchHostInfrastructureTrafficClassVdp = DistributedVirtualSwitchHostInfrastructureTrafficClass("vdp") -) - -func init() { - t["DistributedVirtualSwitchHostInfrastructureTrafficClass"] = reflect.TypeOf((*DistributedVirtualSwitchHostInfrastructureTrafficClass)(nil)).Elem() -} - -type DistributedVirtualSwitchHostMemberHostComponentState string - -const ( - DistributedVirtualSwitchHostMemberHostComponentStateUp = DistributedVirtualSwitchHostMemberHostComponentState("up") - DistributedVirtualSwitchHostMemberHostComponentStatePending = DistributedVirtualSwitchHostMemberHostComponentState("pending") - DistributedVirtualSwitchHostMemberHostComponentStateOutOfSync = DistributedVirtualSwitchHostMemberHostComponentState("outOfSync") - DistributedVirtualSwitchHostMemberHostComponentStateWarning = DistributedVirtualSwitchHostMemberHostComponentState("warning") - DistributedVirtualSwitchHostMemberHostComponentStateDisconnected = DistributedVirtualSwitchHostMemberHostComponentState("disconnected") - DistributedVirtualSwitchHostMemberHostComponentStateDown = DistributedVirtualSwitchHostMemberHostComponentState("down") -) - -func init() { - t["DistributedVirtualSwitchHostMemberHostComponentState"] = reflect.TypeOf((*DistributedVirtualSwitchHostMemberHostComponentState)(nil)).Elem() -} - -type DistributedVirtualSwitchNetworkResourceControlVersion string - -const ( - DistributedVirtualSwitchNetworkResourceControlVersionVersion2 = DistributedVirtualSwitchNetworkResourceControlVersion("version2") - DistributedVirtualSwitchNetworkResourceControlVersionVersion3 = DistributedVirtualSwitchNetworkResourceControlVersion("version3") -) - -func init() { - t["DistributedVirtualSwitchNetworkResourceControlVersion"] = reflect.TypeOf((*DistributedVirtualSwitchNetworkResourceControlVersion)(nil)).Elem() -} - -type DistributedVirtualSwitchNicTeamingPolicyMode string - -const ( - DistributedVirtualSwitchNicTeamingPolicyModeLoadbalance_ip = DistributedVirtualSwitchNicTeamingPolicyMode("loadbalance_ip") - DistributedVirtualSwitchNicTeamingPolicyModeLoadbalance_srcmac = DistributedVirtualSwitchNicTeamingPolicyMode("loadbalance_srcmac") - DistributedVirtualSwitchNicTeamingPolicyModeLoadbalance_srcid = DistributedVirtualSwitchNicTeamingPolicyMode("loadbalance_srcid") - DistributedVirtualSwitchNicTeamingPolicyModeFailover_explicit = DistributedVirtualSwitchNicTeamingPolicyMode("failover_explicit") - DistributedVirtualSwitchNicTeamingPolicyModeLoadbalance_loadbased = DistributedVirtualSwitchNicTeamingPolicyMode("loadbalance_loadbased") -) - -func init() { - t["DistributedVirtualSwitchNicTeamingPolicyMode"] = reflect.TypeOf((*DistributedVirtualSwitchNicTeamingPolicyMode)(nil)).Elem() -} - -type DistributedVirtualSwitchPortConnecteeConnecteeType string - -const ( - DistributedVirtualSwitchPortConnecteeConnecteeTypePnic = DistributedVirtualSwitchPortConnecteeConnecteeType("pnic") - DistributedVirtualSwitchPortConnecteeConnecteeTypeVmVnic = DistributedVirtualSwitchPortConnecteeConnecteeType("vmVnic") - DistributedVirtualSwitchPortConnecteeConnecteeTypeHostConsoleVnic = DistributedVirtualSwitchPortConnecteeConnecteeType("hostConsoleVnic") - DistributedVirtualSwitchPortConnecteeConnecteeTypeHostVmkVnic = DistributedVirtualSwitchPortConnecteeConnecteeType("hostVmkVnic") -) - -func init() { - t["DistributedVirtualSwitchPortConnecteeConnecteeType"] = reflect.TypeOf((*DistributedVirtualSwitchPortConnecteeConnecteeType)(nil)).Elem() -} - -type DistributedVirtualSwitchProductSpecOperationType string - -const ( - DistributedVirtualSwitchProductSpecOperationTypePreInstall = DistributedVirtualSwitchProductSpecOperationType("preInstall") - DistributedVirtualSwitchProductSpecOperationTypeUpgrade = DistributedVirtualSwitchProductSpecOperationType("upgrade") - DistributedVirtualSwitchProductSpecOperationTypeNotifyAvailableUpgrade = DistributedVirtualSwitchProductSpecOperationType("notifyAvailableUpgrade") - DistributedVirtualSwitchProductSpecOperationTypeProceedWithUpgrade = DistributedVirtualSwitchProductSpecOperationType("proceedWithUpgrade") - DistributedVirtualSwitchProductSpecOperationTypeUpdateBundleInfo = DistributedVirtualSwitchProductSpecOperationType("updateBundleInfo") -) - -func init() { - t["DistributedVirtualSwitchProductSpecOperationType"] = reflect.TypeOf((*DistributedVirtualSwitchProductSpecOperationType)(nil)).Elem() -} - -type DpmBehavior string - -const ( - DpmBehaviorManual = DpmBehavior("manual") - DpmBehaviorAutomated = DpmBehavior("automated") -) - -func init() { - t["DpmBehavior"] = reflect.TypeOf((*DpmBehavior)(nil)).Elem() -} - -type DrsBehavior string - -const ( - DrsBehaviorManual = DrsBehavior("manual") - DrsBehaviorPartiallyAutomated = DrsBehavior("partiallyAutomated") - DrsBehaviorFullyAutomated = DrsBehavior("fullyAutomated") -) - -func init() { - t["DrsBehavior"] = reflect.TypeOf((*DrsBehavior)(nil)).Elem() -} - -type DrsInjectorWorkloadCorrelationState string - -const ( - DrsInjectorWorkloadCorrelationStateCorrelated = DrsInjectorWorkloadCorrelationState("Correlated") - DrsInjectorWorkloadCorrelationStateUncorrelated = DrsInjectorWorkloadCorrelationState("Uncorrelated") -) - -func init() { - t["DrsInjectorWorkloadCorrelationState"] = reflect.TypeOf((*DrsInjectorWorkloadCorrelationState)(nil)).Elem() -} - -type DrsRecommendationReasonCode string - -const ( - DrsRecommendationReasonCodeFairnessCpuAvg = DrsRecommendationReasonCode("fairnessCpuAvg") - DrsRecommendationReasonCodeFairnessMemAvg = DrsRecommendationReasonCode("fairnessMemAvg") - DrsRecommendationReasonCodeJointAffin = DrsRecommendationReasonCode("jointAffin") - DrsRecommendationReasonCodeAntiAffin = DrsRecommendationReasonCode("antiAffin") - DrsRecommendationReasonCodeHostMaint = DrsRecommendationReasonCode("hostMaint") -) - -func init() { - t["DrsRecommendationReasonCode"] = reflect.TypeOf((*DrsRecommendationReasonCode)(nil)).Elem() -} - -type DvsFilterOnFailure string - -const ( - DvsFilterOnFailureFailOpen = DvsFilterOnFailure("failOpen") - DvsFilterOnFailureFailClosed = DvsFilterOnFailure("failClosed") -) - -func init() { - t["DvsFilterOnFailure"] = reflect.TypeOf((*DvsFilterOnFailure)(nil)).Elem() -} - -type DvsNetworkRuleDirectionType string - -const ( - DvsNetworkRuleDirectionTypeIncomingPackets = DvsNetworkRuleDirectionType("incomingPackets") - DvsNetworkRuleDirectionTypeOutgoingPackets = DvsNetworkRuleDirectionType("outgoingPackets") - DvsNetworkRuleDirectionTypeBoth = DvsNetworkRuleDirectionType("both") -) - -func init() { - t["DvsNetworkRuleDirectionType"] = reflect.TypeOf((*DvsNetworkRuleDirectionType)(nil)).Elem() -} - -type EntityImportType string - -const ( - EntityImportTypeCreateEntityWithNewIdentifier = EntityImportType("createEntityWithNewIdentifier") - EntityImportTypeCreateEntityWithOriginalIdentifier = EntityImportType("createEntityWithOriginalIdentifier") - EntityImportTypeApplyToEntitySpecified = EntityImportType("applyToEntitySpecified") -) - -func init() { - t["EntityImportType"] = reflect.TypeOf((*EntityImportType)(nil)).Elem() -} - -type EntityType string - -const ( - EntityTypeDistributedVirtualSwitch = EntityType("distributedVirtualSwitch") - EntityTypeDistributedVirtualPortgroup = EntityType("distributedVirtualPortgroup") -) - -func init() { - t["EntityType"] = reflect.TypeOf((*EntityType)(nil)).Elem() -} - -type EventAlarmExpressionComparisonOperator string - -const ( - EventAlarmExpressionComparisonOperatorEquals = EventAlarmExpressionComparisonOperator("equals") - EventAlarmExpressionComparisonOperatorNotEqualTo = EventAlarmExpressionComparisonOperator("notEqualTo") - EventAlarmExpressionComparisonOperatorStartsWith = EventAlarmExpressionComparisonOperator("startsWith") - EventAlarmExpressionComparisonOperatorDoesNotStartWith = EventAlarmExpressionComparisonOperator("doesNotStartWith") - EventAlarmExpressionComparisonOperatorEndsWith = EventAlarmExpressionComparisonOperator("endsWith") - EventAlarmExpressionComparisonOperatorDoesNotEndWith = EventAlarmExpressionComparisonOperator("doesNotEndWith") -) - -func init() { - t["EventAlarmExpressionComparisonOperator"] = reflect.TypeOf((*EventAlarmExpressionComparisonOperator)(nil)).Elem() -} - -type EventCategory string - -const ( - EventCategoryInfo = EventCategory("info") - EventCategoryWarning = EventCategory("warning") - EventCategoryError = EventCategory("error") - EventCategoryUser = EventCategory("user") -) - -func init() { - t["EventCategory"] = reflect.TypeOf((*EventCategory)(nil)).Elem() -} - -type EventEventSeverity string - -const ( - EventEventSeverityError = EventEventSeverity("error") - EventEventSeverityWarning = EventEventSeverity("warning") - EventEventSeverityInfo = EventEventSeverity("info") - EventEventSeverityUser = EventEventSeverity("user") -) - -func init() { - t["EventEventSeverity"] = reflect.TypeOf((*EventEventSeverity)(nil)).Elem() -} - -type EventFilterSpecRecursionOption string - -const ( - EventFilterSpecRecursionOptionSelf = EventFilterSpecRecursionOption("self") - EventFilterSpecRecursionOptionChildren = EventFilterSpecRecursionOption("children") - EventFilterSpecRecursionOptionAll = EventFilterSpecRecursionOption("all") -) - -func init() { - t["EventFilterSpecRecursionOption"] = reflect.TypeOf((*EventFilterSpecRecursionOption)(nil)).Elem() -} - -type FibreChannelPortType string - -const ( - FibreChannelPortTypeFabric = FibreChannelPortType("fabric") - FibreChannelPortTypeLoop = FibreChannelPortType("loop") - FibreChannelPortTypePointToPoint = FibreChannelPortType("pointToPoint") - FibreChannelPortTypeUnknown = FibreChannelPortType("unknown") -) - -func init() { - t["FibreChannelPortType"] = reflect.TypeOf((*FibreChannelPortType)(nil)).Elem() -} - -type FileSystemMountInfoVStorageSupportStatus string - -const ( - FileSystemMountInfoVStorageSupportStatusVStorageSupported = FileSystemMountInfoVStorageSupportStatus("vStorageSupported") - FileSystemMountInfoVStorageSupportStatusVStorageUnsupported = FileSystemMountInfoVStorageSupportStatus("vStorageUnsupported") - FileSystemMountInfoVStorageSupportStatusVStorageUnknown = FileSystemMountInfoVStorageSupportStatus("vStorageUnknown") -) - -func init() { - t["FileSystemMountInfoVStorageSupportStatus"] = reflect.TypeOf((*FileSystemMountInfoVStorageSupportStatus)(nil)).Elem() -} - -type FtIssuesOnHostHostSelectionType string - -const ( - FtIssuesOnHostHostSelectionTypeUser = FtIssuesOnHostHostSelectionType("user") - FtIssuesOnHostHostSelectionTypeVc = FtIssuesOnHostHostSelectionType("vc") - FtIssuesOnHostHostSelectionTypeDrs = FtIssuesOnHostHostSelectionType("drs") -) - -func init() { - t["FtIssuesOnHostHostSelectionType"] = reflect.TypeOf((*FtIssuesOnHostHostSelectionType)(nil)).Elem() -} - -type GuestFileType string - -const ( - GuestFileTypeFile = GuestFileType("file") - GuestFileTypeDirectory = GuestFileType("directory") - GuestFileTypeSymlink = GuestFileType("symlink") -) - -func init() { - t["GuestFileType"] = reflect.TypeOf((*GuestFileType)(nil)).Elem() -} - -type GuestInfoAppStateType string - -const ( - GuestInfoAppStateTypeNone = GuestInfoAppStateType("none") - GuestInfoAppStateTypeAppStateOk = GuestInfoAppStateType("appStateOk") - GuestInfoAppStateTypeAppStateNeedReset = GuestInfoAppStateType("appStateNeedReset") -) - -func init() { - t["GuestInfoAppStateType"] = reflect.TypeOf((*GuestInfoAppStateType)(nil)).Elem() -} - -type GuestOsDescriptorFirmwareType string - -const ( - GuestOsDescriptorFirmwareTypeBios = GuestOsDescriptorFirmwareType("bios") - GuestOsDescriptorFirmwareTypeEfi = GuestOsDescriptorFirmwareType("efi") -) - -func init() { - t["GuestOsDescriptorFirmwareType"] = reflect.TypeOf((*GuestOsDescriptorFirmwareType)(nil)).Elem() -} - -type GuestOsDescriptorSupportLevel string - -const ( - GuestOsDescriptorSupportLevelExperimental = GuestOsDescriptorSupportLevel("experimental") - GuestOsDescriptorSupportLevelLegacy = GuestOsDescriptorSupportLevel("legacy") - GuestOsDescriptorSupportLevelTerminated = GuestOsDescriptorSupportLevel("terminated") - GuestOsDescriptorSupportLevelSupported = GuestOsDescriptorSupportLevel("supported") - GuestOsDescriptorSupportLevelUnsupported = GuestOsDescriptorSupportLevel("unsupported") - GuestOsDescriptorSupportLevelDeprecated = GuestOsDescriptorSupportLevel("deprecated") - GuestOsDescriptorSupportLevelTechPreview = GuestOsDescriptorSupportLevel("techPreview") -) - -func init() { - t["GuestOsDescriptorSupportLevel"] = reflect.TypeOf((*GuestOsDescriptorSupportLevel)(nil)).Elem() -} - -type GuestRegKeyWowSpec string - -const ( - GuestRegKeyWowSpecWOWNative = GuestRegKeyWowSpec("WOWNative") - GuestRegKeyWowSpecWOW32 = GuestRegKeyWowSpec("WOW32") - GuestRegKeyWowSpecWOW64 = GuestRegKeyWowSpec("WOW64") -) - -func init() { - t["GuestRegKeyWowSpec"] = reflect.TypeOf((*GuestRegKeyWowSpec)(nil)).Elem() -} - -type HostAccessMode string - -const ( - HostAccessModeAccessNone = HostAccessMode("accessNone") - HostAccessModeAccessAdmin = HostAccessMode("accessAdmin") - HostAccessModeAccessNoAccess = HostAccessMode("accessNoAccess") - HostAccessModeAccessReadOnly = HostAccessMode("accessReadOnly") - HostAccessModeAccessOther = HostAccessMode("accessOther") -) - -func init() { - t["HostAccessMode"] = reflect.TypeOf((*HostAccessMode)(nil)).Elem() -} - -type HostActiveDirectoryAuthenticationCertificateDigest string - -const ( - HostActiveDirectoryAuthenticationCertificateDigestSHA1 = HostActiveDirectoryAuthenticationCertificateDigest("SHA1") -) - -func init() { - t["HostActiveDirectoryAuthenticationCertificateDigest"] = reflect.TypeOf((*HostActiveDirectoryAuthenticationCertificateDigest)(nil)).Elem() -} - -type HostActiveDirectoryInfoDomainMembershipStatus string - -const ( - HostActiveDirectoryInfoDomainMembershipStatusUnknown = HostActiveDirectoryInfoDomainMembershipStatus("unknown") - HostActiveDirectoryInfoDomainMembershipStatusOk = HostActiveDirectoryInfoDomainMembershipStatus("ok") - HostActiveDirectoryInfoDomainMembershipStatusNoServers = HostActiveDirectoryInfoDomainMembershipStatus("noServers") - HostActiveDirectoryInfoDomainMembershipStatusClientTrustBroken = HostActiveDirectoryInfoDomainMembershipStatus("clientTrustBroken") - HostActiveDirectoryInfoDomainMembershipStatusServerTrustBroken = HostActiveDirectoryInfoDomainMembershipStatus("serverTrustBroken") - HostActiveDirectoryInfoDomainMembershipStatusInconsistentTrust = HostActiveDirectoryInfoDomainMembershipStatus("inconsistentTrust") - HostActiveDirectoryInfoDomainMembershipStatusOtherProblem = HostActiveDirectoryInfoDomainMembershipStatus("otherProblem") -) - -func init() { - t["HostActiveDirectoryInfoDomainMembershipStatus"] = reflect.TypeOf((*HostActiveDirectoryInfoDomainMembershipStatus)(nil)).Elem() -} - -type HostCapabilityFtUnsupportedReason string - -const ( - HostCapabilityFtUnsupportedReasonVMotionNotLicensed = HostCapabilityFtUnsupportedReason("vMotionNotLicensed") - HostCapabilityFtUnsupportedReasonMissingVMotionNic = HostCapabilityFtUnsupportedReason("missingVMotionNic") - HostCapabilityFtUnsupportedReasonMissingFTLoggingNic = HostCapabilityFtUnsupportedReason("missingFTLoggingNic") - HostCapabilityFtUnsupportedReasonFtNotLicensed = HostCapabilityFtUnsupportedReason("ftNotLicensed") - HostCapabilityFtUnsupportedReasonHaAgentIssue = HostCapabilityFtUnsupportedReason("haAgentIssue") - HostCapabilityFtUnsupportedReasonUnsupportedProduct = HostCapabilityFtUnsupportedReason("unsupportedProduct") - HostCapabilityFtUnsupportedReasonCpuHvUnsupported = HostCapabilityFtUnsupportedReason("cpuHvUnsupported") - HostCapabilityFtUnsupportedReasonCpuHwmmuUnsupported = HostCapabilityFtUnsupportedReason("cpuHwmmuUnsupported") - HostCapabilityFtUnsupportedReasonCpuHvDisabled = HostCapabilityFtUnsupportedReason("cpuHvDisabled") -) - -func init() { - t["HostCapabilityFtUnsupportedReason"] = reflect.TypeOf((*HostCapabilityFtUnsupportedReason)(nil)).Elem() -} - -type HostCapabilityVmDirectPathGen2UnsupportedReason string - -const ( - HostCapabilityVmDirectPathGen2UnsupportedReasonHostNptIncompatibleProduct = HostCapabilityVmDirectPathGen2UnsupportedReason("hostNptIncompatibleProduct") - HostCapabilityVmDirectPathGen2UnsupportedReasonHostNptIncompatibleHardware = HostCapabilityVmDirectPathGen2UnsupportedReason("hostNptIncompatibleHardware") - HostCapabilityVmDirectPathGen2UnsupportedReasonHostNptDisabled = HostCapabilityVmDirectPathGen2UnsupportedReason("hostNptDisabled") -) - -func init() { - t["HostCapabilityVmDirectPathGen2UnsupportedReason"] = reflect.TypeOf((*HostCapabilityVmDirectPathGen2UnsupportedReason)(nil)).Elem() -} - -type HostCertificateManagerCertificateInfoCertificateStatus string - -const ( - HostCertificateManagerCertificateInfoCertificateStatusUnknown = HostCertificateManagerCertificateInfoCertificateStatus("unknown") - HostCertificateManagerCertificateInfoCertificateStatusExpired = HostCertificateManagerCertificateInfoCertificateStatus("expired") - HostCertificateManagerCertificateInfoCertificateStatusExpiring = HostCertificateManagerCertificateInfoCertificateStatus("expiring") - HostCertificateManagerCertificateInfoCertificateStatusExpiringShortly = HostCertificateManagerCertificateInfoCertificateStatus("expiringShortly") - HostCertificateManagerCertificateInfoCertificateStatusExpirationImminent = HostCertificateManagerCertificateInfoCertificateStatus("expirationImminent") - HostCertificateManagerCertificateInfoCertificateStatusGood = HostCertificateManagerCertificateInfoCertificateStatus("good") -) - -func init() { - t["HostCertificateManagerCertificateInfoCertificateStatus"] = reflect.TypeOf((*HostCertificateManagerCertificateInfoCertificateStatus)(nil)).Elem() -} - -type HostConfigChangeMode string - -const ( - HostConfigChangeModeModify = HostConfigChangeMode("modify") - HostConfigChangeModeReplace = HostConfigChangeMode("replace") -) - -func init() { - t["HostConfigChangeMode"] = reflect.TypeOf((*HostConfigChangeMode)(nil)).Elem() -} - -type HostConfigChangeOperation string - -const ( - HostConfigChangeOperationAdd = HostConfigChangeOperation("add") - HostConfigChangeOperationRemove = HostConfigChangeOperation("remove") - HostConfigChangeOperationEdit = HostConfigChangeOperation("edit") - HostConfigChangeOperationIgnore = HostConfigChangeOperation("ignore") -) - -func init() { - t["HostConfigChangeOperation"] = reflect.TypeOf((*HostConfigChangeOperation)(nil)).Elem() -} - -type HostCpuPackageVendor string - -const ( - HostCpuPackageVendorUnknown = HostCpuPackageVendor("unknown") - HostCpuPackageVendorIntel = HostCpuPackageVendor("intel") - HostCpuPackageVendorAmd = HostCpuPackageVendor("amd") -) - -func init() { - t["HostCpuPackageVendor"] = reflect.TypeOf((*HostCpuPackageVendor)(nil)).Elem() -} - -type HostCpuPowerManagementInfoPolicyType string - -const ( - HostCpuPowerManagementInfoPolicyTypeOff = HostCpuPowerManagementInfoPolicyType("off") - HostCpuPowerManagementInfoPolicyTypeStaticPolicy = HostCpuPowerManagementInfoPolicyType("staticPolicy") - HostCpuPowerManagementInfoPolicyTypeDynamicPolicy = HostCpuPowerManagementInfoPolicyType("dynamicPolicy") -) - -func init() { - t["HostCpuPowerManagementInfoPolicyType"] = reflect.TypeOf((*HostCpuPowerManagementInfoPolicyType)(nil)).Elem() -} - -type HostDasErrorEventHostDasErrorReason string - -const ( - HostDasErrorEventHostDasErrorReasonConfigFailed = HostDasErrorEventHostDasErrorReason("configFailed") - HostDasErrorEventHostDasErrorReasonTimeout = HostDasErrorEventHostDasErrorReason("timeout") - HostDasErrorEventHostDasErrorReasonCommunicationInitFailed = HostDasErrorEventHostDasErrorReason("communicationInitFailed") - HostDasErrorEventHostDasErrorReasonHealthCheckScriptFailed = HostDasErrorEventHostDasErrorReason("healthCheckScriptFailed") - HostDasErrorEventHostDasErrorReasonAgentFailed = HostDasErrorEventHostDasErrorReason("agentFailed") - HostDasErrorEventHostDasErrorReasonAgentShutdown = HostDasErrorEventHostDasErrorReason("agentShutdown") - HostDasErrorEventHostDasErrorReasonIsolationAddressUnpingable = HostDasErrorEventHostDasErrorReason("isolationAddressUnpingable") - HostDasErrorEventHostDasErrorReasonOther = HostDasErrorEventHostDasErrorReason("other") -) - -func init() { - t["HostDasErrorEventHostDasErrorReason"] = reflect.TypeOf((*HostDasErrorEventHostDasErrorReason)(nil)).Elem() -} - -type HostDigestInfoDigestMethodType string - -const ( - HostDigestInfoDigestMethodTypeSHA1 = HostDigestInfoDigestMethodType("SHA1") - HostDigestInfoDigestMethodTypeMD5 = HostDigestInfoDigestMethodType("MD5") -) - -func init() { - t["HostDigestInfoDigestMethodType"] = reflect.TypeOf((*HostDigestInfoDigestMethodType)(nil)).Elem() -} - -type HostDisconnectedEventReasonCode string - -const ( - HostDisconnectedEventReasonCodeSslThumbprintVerifyFailed = HostDisconnectedEventReasonCode("sslThumbprintVerifyFailed") - HostDisconnectedEventReasonCodeLicenseExpired = HostDisconnectedEventReasonCode("licenseExpired") - HostDisconnectedEventReasonCodeAgentUpgrade = HostDisconnectedEventReasonCode("agentUpgrade") - HostDisconnectedEventReasonCodeUserRequest = HostDisconnectedEventReasonCode("userRequest") - HostDisconnectedEventReasonCodeInsufficientLicenses = HostDisconnectedEventReasonCode("insufficientLicenses") - HostDisconnectedEventReasonCodeAgentOutOfDate = HostDisconnectedEventReasonCode("agentOutOfDate") - HostDisconnectedEventReasonCodePasswordDecryptFailure = HostDisconnectedEventReasonCode("passwordDecryptFailure") - HostDisconnectedEventReasonCodeUnknown = HostDisconnectedEventReasonCode("unknown") - HostDisconnectedEventReasonCodeVcVRAMCapacityExceeded = HostDisconnectedEventReasonCode("vcVRAMCapacityExceeded") -) - -func init() { - t["HostDisconnectedEventReasonCode"] = reflect.TypeOf((*HostDisconnectedEventReasonCode)(nil)).Elem() -} - -type HostDiskPartitionInfoPartitionFormat string - -const ( - HostDiskPartitionInfoPartitionFormatGpt = HostDiskPartitionInfoPartitionFormat("gpt") - HostDiskPartitionInfoPartitionFormatMbr = HostDiskPartitionInfoPartitionFormat("mbr") - HostDiskPartitionInfoPartitionFormatUnknown = HostDiskPartitionInfoPartitionFormat("unknown") -) - -func init() { - t["HostDiskPartitionInfoPartitionFormat"] = reflect.TypeOf((*HostDiskPartitionInfoPartitionFormat)(nil)).Elem() -} - -type HostDiskPartitionInfoType string - -const ( - HostDiskPartitionInfoTypeNone = HostDiskPartitionInfoType("none") - HostDiskPartitionInfoTypeVmfs = HostDiskPartitionInfoType("vmfs") - HostDiskPartitionInfoTypeLinuxNative = HostDiskPartitionInfoType("linuxNative") - HostDiskPartitionInfoTypeLinuxSwap = HostDiskPartitionInfoType("linuxSwap") - HostDiskPartitionInfoTypeExtended = HostDiskPartitionInfoType("extended") - HostDiskPartitionInfoTypeNtfs = HostDiskPartitionInfoType("ntfs") - HostDiskPartitionInfoTypeVmkDiagnostic = HostDiskPartitionInfoType("vmkDiagnostic") - HostDiskPartitionInfoTypeVffs = HostDiskPartitionInfoType("vffs") -) - -func init() { - t["HostDiskPartitionInfoType"] = reflect.TypeOf((*HostDiskPartitionInfoType)(nil)).Elem() -} - -type HostFeatureVersionKey string - -const ( - HostFeatureVersionKeyFaultTolerance = HostFeatureVersionKey("faultTolerance") -) - -func init() { - t["HostFeatureVersionKey"] = reflect.TypeOf((*HostFeatureVersionKey)(nil)).Elem() -} - -type HostFileSystemVolumeFileSystemType string - -const ( - HostFileSystemVolumeFileSystemTypeVMFS = HostFileSystemVolumeFileSystemType("VMFS") - HostFileSystemVolumeFileSystemTypeNFS = HostFileSystemVolumeFileSystemType("NFS") - HostFileSystemVolumeFileSystemTypeNFS41 = HostFileSystemVolumeFileSystemType("NFS41") - HostFileSystemVolumeFileSystemTypeCIFS = HostFileSystemVolumeFileSystemType("CIFS") - HostFileSystemVolumeFileSystemTypeVsan = HostFileSystemVolumeFileSystemType("vsan") - HostFileSystemVolumeFileSystemTypeVFFS = HostFileSystemVolumeFileSystemType("VFFS") - HostFileSystemVolumeFileSystemTypeVVOL = HostFileSystemVolumeFileSystemType("VVOL") - HostFileSystemVolumeFileSystemTypeOTHER = HostFileSystemVolumeFileSystemType("OTHER") -) - -func init() { - t["HostFileSystemVolumeFileSystemType"] = reflect.TypeOf((*HostFileSystemVolumeFileSystemType)(nil)).Elem() -} - -type HostFirewallRuleDirection string - -const ( - HostFirewallRuleDirectionInbound = HostFirewallRuleDirection("inbound") - HostFirewallRuleDirectionOutbound = HostFirewallRuleDirection("outbound") -) - -func init() { - t["HostFirewallRuleDirection"] = reflect.TypeOf((*HostFirewallRuleDirection)(nil)).Elem() -} - -type HostFirewallRulePortType string - -const ( - HostFirewallRulePortTypeSrc = HostFirewallRulePortType("src") - HostFirewallRulePortTypeDst = HostFirewallRulePortType("dst") -) - -func init() { - t["HostFirewallRulePortType"] = reflect.TypeOf((*HostFirewallRulePortType)(nil)).Elem() -} - -type HostFirewallRuleProtocol string - -const ( - HostFirewallRuleProtocolTcp = HostFirewallRuleProtocol("tcp") - HostFirewallRuleProtocolUdp = HostFirewallRuleProtocol("udp") -) - -func init() { - t["HostFirewallRuleProtocol"] = reflect.TypeOf((*HostFirewallRuleProtocol)(nil)).Elem() -} - -type HostGraphicsInfoGraphicsType string - -const ( - HostGraphicsInfoGraphicsTypeBasic = HostGraphicsInfoGraphicsType("basic") - HostGraphicsInfoGraphicsTypeShared = HostGraphicsInfoGraphicsType("shared") - HostGraphicsInfoGraphicsTypeDirect = HostGraphicsInfoGraphicsType("direct") -) - -func init() { - t["HostGraphicsInfoGraphicsType"] = reflect.TypeOf((*HostGraphicsInfoGraphicsType)(nil)).Elem() -} - -type HostHardwareElementStatus string - -const ( - HostHardwareElementStatusUnknown = HostHardwareElementStatus("Unknown") - HostHardwareElementStatusGreen = HostHardwareElementStatus("Green") - HostHardwareElementStatusYellow = HostHardwareElementStatus("Yellow") - HostHardwareElementStatusRed = HostHardwareElementStatus("Red") -) - -func init() { - t["HostHardwareElementStatus"] = reflect.TypeOf((*HostHardwareElementStatus)(nil)).Elem() -} - -type HostHasComponentFailureHostComponentType string - -const ( - HostHasComponentFailureHostComponentTypeDatastore = HostHasComponentFailureHostComponentType("Datastore") -) - -func init() { - t["HostHasComponentFailureHostComponentType"] = reflect.TypeOf((*HostHasComponentFailureHostComponentType)(nil)).Elem() -} - -type HostImageAcceptanceLevel string - -const ( - HostImageAcceptanceLevelVmware_certified = HostImageAcceptanceLevel("vmware_certified") - HostImageAcceptanceLevelVmware_accepted = HostImageAcceptanceLevel("vmware_accepted") - HostImageAcceptanceLevelPartner = HostImageAcceptanceLevel("partner") - HostImageAcceptanceLevelCommunity = HostImageAcceptanceLevel("community") -) - -func init() { - t["HostImageAcceptanceLevel"] = reflect.TypeOf((*HostImageAcceptanceLevel)(nil)).Elem() -} - -type HostIncompatibleForFaultToleranceReason string - -const ( - HostIncompatibleForFaultToleranceReasonProduct = HostIncompatibleForFaultToleranceReason("product") - HostIncompatibleForFaultToleranceReasonProcessor = HostIncompatibleForFaultToleranceReason("processor") -) - -func init() { - t["HostIncompatibleForFaultToleranceReason"] = reflect.TypeOf((*HostIncompatibleForFaultToleranceReason)(nil)).Elem() -} - -type HostIncompatibleForRecordReplayReason string - -const ( - HostIncompatibleForRecordReplayReasonProduct = HostIncompatibleForRecordReplayReason("product") - HostIncompatibleForRecordReplayReasonProcessor = HostIncompatibleForRecordReplayReason("processor") -) - -func init() { - t["HostIncompatibleForRecordReplayReason"] = reflect.TypeOf((*HostIncompatibleForRecordReplayReason)(nil)).Elem() -} - -type HostInternetScsiHbaChapAuthenticationType string - -const ( - HostInternetScsiHbaChapAuthenticationTypeChapProhibited = HostInternetScsiHbaChapAuthenticationType("chapProhibited") - HostInternetScsiHbaChapAuthenticationTypeChapDiscouraged = HostInternetScsiHbaChapAuthenticationType("chapDiscouraged") - HostInternetScsiHbaChapAuthenticationTypeChapPreferred = HostInternetScsiHbaChapAuthenticationType("chapPreferred") - HostInternetScsiHbaChapAuthenticationTypeChapRequired = HostInternetScsiHbaChapAuthenticationType("chapRequired") -) - -func init() { - t["HostInternetScsiHbaChapAuthenticationType"] = reflect.TypeOf((*HostInternetScsiHbaChapAuthenticationType)(nil)).Elem() -} - -type HostInternetScsiHbaDigestType string - -const ( - HostInternetScsiHbaDigestTypeDigestProhibited = HostInternetScsiHbaDigestType("digestProhibited") - HostInternetScsiHbaDigestTypeDigestDiscouraged = HostInternetScsiHbaDigestType("digestDiscouraged") - HostInternetScsiHbaDigestTypeDigestPreferred = HostInternetScsiHbaDigestType("digestPreferred") - HostInternetScsiHbaDigestTypeDigestRequired = HostInternetScsiHbaDigestType("digestRequired") -) - -func init() { - t["HostInternetScsiHbaDigestType"] = reflect.TypeOf((*HostInternetScsiHbaDigestType)(nil)).Elem() -} - -type HostInternetScsiHbaIscsiIpv6AddressAddressConfigurationType string - -const ( - HostInternetScsiHbaIscsiIpv6AddressAddressConfigurationTypeDHCP = HostInternetScsiHbaIscsiIpv6AddressAddressConfigurationType("DHCP") - HostInternetScsiHbaIscsiIpv6AddressAddressConfigurationTypeAutoConfigured = HostInternetScsiHbaIscsiIpv6AddressAddressConfigurationType("AutoConfigured") - HostInternetScsiHbaIscsiIpv6AddressAddressConfigurationTypeStatic = HostInternetScsiHbaIscsiIpv6AddressAddressConfigurationType("Static") - HostInternetScsiHbaIscsiIpv6AddressAddressConfigurationTypeOther = HostInternetScsiHbaIscsiIpv6AddressAddressConfigurationType("Other") -) - -func init() { - t["HostInternetScsiHbaIscsiIpv6AddressAddressConfigurationType"] = reflect.TypeOf((*HostInternetScsiHbaIscsiIpv6AddressAddressConfigurationType)(nil)).Elem() -} - -type HostInternetScsiHbaIscsiIpv6AddressIPv6AddressOperation string - -const ( - HostInternetScsiHbaIscsiIpv6AddressIPv6AddressOperationAdd = HostInternetScsiHbaIscsiIpv6AddressIPv6AddressOperation("add") - HostInternetScsiHbaIscsiIpv6AddressIPv6AddressOperationRemove = HostInternetScsiHbaIscsiIpv6AddressIPv6AddressOperation("remove") -) - -func init() { - t["HostInternetScsiHbaIscsiIpv6AddressIPv6AddressOperation"] = reflect.TypeOf((*HostInternetScsiHbaIscsiIpv6AddressIPv6AddressOperation)(nil)).Elem() -} - -type HostInternetScsiHbaNetworkBindingSupportType string - -const ( - HostInternetScsiHbaNetworkBindingSupportTypeNotsupported = HostInternetScsiHbaNetworkBindingSupportType("notsupported") - HostInternetScsiHbaNetworkBindingSupportTypeOptional = HostInternetScsiHbaNetworkBindingSupportType("optional") - HostInternetScsiHbaNetworkBindingSupportTypeRequired = HostInternetScsiHbaNetworkBindingSupportType("required") -) - -func init() { - t["HostInternetScsiHbaNetworkBindingSupportType"] = reflect.TypeOf((*HostInternetScsiHbaNetworkBindingSupportType)(nil)).Elem() -} - -type HostInternetScsiHbaStaticTargetTargetDiscoveryMethod string - -const ( - HostInternetScsiHbaStaticTargetTargetDiscoveryMethodStaticMethod = HostInternetScsiHbaStaticTargetTargetDiscoveryMethod("staticMethod") - HostInternetScsiHbaStaticTargetTargetDiscoveryMethodSendTargetMethod = HostInternetScsiHbaStaticTargetTargetDiscoveryMethod("sendTargetMethod") - HostInternetScsiHbaStaticTargetTargetDiscoveryMethodSlpMethod = HostInternetScsiHbaStaticTargetTargetDiscoveryMethod("slpMethod") - HostInternetScsiHbaStaticTargetTargetDiscoveryMethodIsnsMethod = HostInternetScsiHbaStaticTargetTargetDiscoveryMethod("isnsMethod") - HostInternetScsiHbaStaticTargetTargetDiscoveryMethodUnknownMethod = HostInternetScsiHbaStaticTargetTargetDiscoveryMethod("unknownMethod") -) - -func init() { - t["HostInternetScsiHbaStaticTargetTargetDiscoveryMethod"] = reflect.TypeOf((*HostInternetScsiHbaStaticTargetTargetDiscoveryMethod)(nil)).Elem() -} - -type HostIpConfigIpV6AddressConfigType string - -const ( - HostIpConfigIpV6AddressConfigTypeOther = HostIpConfigIpV6AddressConfigType("other") - HostIpConfigIpV6AddressConfigTypeManual = HostIpConfigIpV6AddressConfigType("manual") - HostIpConfigIpV6AddressConfigTypeDhcp = HostIpConfigIpV6AddressConfigType("dhcp") - HostIpConfigIpV6AddressConfigTypeLinklayer = HostIpConfigIpV6AddressConfigType("linklayer") - HostIpConfigIpV6AddressConfigTypeRandom = HostIpConfigIpV6AddressConfigType("random") -) - -func init() { - t["HostIpConfigIpV6AddressConfigType"] = reflect.TypeOf((*HostIpConfigIpV6AddressConfigType)(nil)).Elem() -} - -type HostIpConfigIpV6AddressStatus string - -const ( - HostIpConfigIpV6AddressStatusPreferred = HostIpConfigIpV6AddressStatus("preferred") - HostIpConfigIpV6AddressStatusDeprecated = HostIpConfigIpV6AddressStatus("deprecated") - HostIpConfigIpV6AddressStatusInvalid = HostIpConfigIpV6AddressStatus("invalid") - HostIpConfigIpV6AddressStatusInaccessible = HostIpConfigIpV6AddressStatus("inaccessible") - HostIpConfigIpV6AddressStatusUnknown = HostIpConfigIpV6AddressStatus("unknown") - HostIpConfigIpV6AddressStatusTentative = HostIpConfigIpV6AddressStatus("tentative") - HostIpConfigIpV6AddressStatusDuplicate = HostIpConfigIpV6AddressStatus("duplicate") -) - -func init() { - t["HostIpConfigIpV6AddressStatus"] = reflect.TypeOf((*HostIpConfigIpV6AddressStatus)(nil)).Elem() -} - -type HostLicensableResourceKey string - -const ( - HostLicensableResourceKeyNumCpuPackages = HostLicensableResourceKey("numCpuPackages") - HostLicensableResourceKeyNumCpuCores = HostLicensableResourceKey("numCpuCores") - HostLicensableResourceKeyMemorySize = HostLicensableResourceKey("memorySize") - HostLicensableResourceKeyMemoryForVms = HostLicensableResourceKey("memoryForVms") - HostLicensableResourceKeyNumVmsStarted = HostLicensableResourceKey("numVmsStarted") - HostLicensableResourceKeyNumVmsStarting = HostLicensableResourceKey("numVmsStarting") -) - -func init() { - t["HostLicensableResourceKey"] = reflect.TypeOf((*HostLicensableResourceKey)(nil)).Elem() -} - -type HostLockdownMode string - -const ( - HostLockdownModeLockdownDisabled = HostLockdownMode("lockdownDisabled") - HostLockdownModeLockdownNormal = HostLockdownMode("lockdownNormal") - HostLockdownModeLockdownStrict = HostLockdownMode("lockdownStrict") -) - -func init() { - t["HostLockdownMode"] = reflect.TypeOf((*HostLockdownMode)(nil)).Elem() -} - -type HostLowLevelProvisioningManagerFileType string - -const ( - HostLowLevelProvisioningManagerFileTypeFile = HostLowLevelProvisioningManagerFileType("File") - HostLowLevelProvisioningManagerFileTypeVirtualDisk = HostLowLevelProvisioningManagerFileType("VirtualDisk") - HostLowLevelProvisioningManagerFileTypeDirectory = HostLowLevelProvisioningManagerFileType("Directory") -) - -func init() { - t["HostLowLevelProvisioningManagerFileType"] = reflect.TypeOf((*HostLowLevelProvisioningManagerFileType)(nil)).Elem() -} - -type HostLowLevelProvisioningManagerReloadTarget string - -const ( - HostLowLevelProvisioningManagerReloadTargetCurrentConfig = HostLowLevelProvisioningManagerReloadTarget("currentConfig") - HostLowLevelProvisioningManagerReloadTargetSnapshotConfig = HostLowLevelProvisioningManagerReloadTarget("snapshotConfig") -) - -func init() { - t["HostLowLevelProvisioningManagerReloadTarget"] = reflect.TypeOf((*HostLowLevelProvisioningManagerReloadTarget)(nil)).Elem() -} - -type HostMountInfoInaccessibleReason string - -const ( - HostMountInfoInaccessibleReasonAllPathsDown_Start = HostMountInfoInaccessibleReason("AllPathsDown_Start") - HostMountInfoInaccessibleReasonAllPathsDown_Timeout = HostMountInfoInaccessibleReason("AllPathsDown_Timeout") - HostMountInfoInaccessibleReasonPermanentDeviceLoss = HostMountInfoInaccessibleReason("PermanentDeviceLoss") -) - -func init() { - t["HostMountInfoInaccessibleReason"] = reflect.TypeOf((*HostMountInfoInaccessibleReason)(nil)).Elem() -} - -type HostMountMode string - -const ( - HostMountModeReadWrite = HostMountMode("readWrite") - HostMountModeReadOnly = HostMountMode("readOnly") -) - -func init() { - t["HostMountMode"] = reflect.TypeOf((*HostMountMode)(nil)).Elem() -} - -type HostNasVolumeSecurityType string - -const ( - HostNasVolumeSecurityTypeAUTH_SYS = HostNasVolumeSecurityType("AUTH_SYS") - HostNasVolumeSecurityTypeSEC_KRB5 = HostNasVolumeSecurityType("SEC_KRB5") -) - -func init() { - t["HostNasVolumeSecurityType"] = reflect.TypeOf((*HostNasVolumeSecurityType)(nil)).Elem() -} - -type HostNetStackInstanceCongestionControlAlgorithmType string - -const ( - HostNetStackInstanceCongestionControlAlgorithmTypeNewreno = HostNetStackInstanceCongestionControlAlgorithmType("newreno") - HostNetStackInstanceCongestionControlAlgorithmTypeCubic = HostNetStackInstanceCongestionControlAlgorithmType("cubic") -) - -func init() { - t["HostNetStackInstanceCongestionControlAlgorithmType"] = reflect.TypeOf((*HostNetStackInstanceCongestionControlAlgorithmType)(nil)).Elem() -} - -type HostNetStackInstanceSystemStackKey string - -const ( - HostNetStackInstanceSystemStackKeyDefaultTcpipStack = HostNetStackInstanceSystemStackKey("defaultTcpipStack") - HostNetStackInstanceSystemStackKeyVmotion = HostNetStackInstanceSystemStackKey("vmotion") - HostNetStackInstanceSystemStackKeyVSphereProvisioning = HostNetStackInstanceSystemStackKey("vSphereProvisioning") -) - -func init() { - t["HostNetStackInstanceSystemStackKey"] = reflect.TypeOf((*HostNetStackInstanceSystemStackKey)(nil)).Elem() -} - -type HostNumericSensorHealthState string - -const ( - HostNumericSensorHealthStateUnknown = HostNumericSensorHealthState("unknown") - HostNumericSensorHealthStateGreen = HostNumericSensorHealthState("green") - HostNumericSensorHealthStateYellow = HostNumericSensorHealthState("yellow") - HostNumericSensorHealthStateRed = HostNumericSensorHealthState("red") -) - -func init() { - t["HostNumericSensorHealthState"] = reflect.TypeOf((*HostNumericSensorHealthState)(nil)).Elem() -} - -type HostNumericSensorType string - -const ( - HostNumericSensorTypeFan = HostNumericSensorType("fan") - HostNumericSensorTypePower = HostNumericSensorType("power") - HostNumericSensorTypeTemperature = HostNumericSensorType("temperature") - HostNumericSensorTypeVoltage = HostNumericSensorType("voltage") - HostNumericSensorTypeOther = HostNumericSensorType("other") -) - -func init() { - t["HostNumericSensorType"] = reflect.TypeOf((*HostNumericSensorType)(nil)).Elem() -} - -type HostOpaqueSwitchOpaqueSwitchState string - -const ( - HostOpaqueSwitchOpaqueSwitchStateUp = HostOpaqueSwitchOpaqueSwitchState("up") - HostOpaqueSwitchOpaqueSwitchStateWarning = HostOpaqueSwitchOpaqueSwitchState("warning") - HostOpaqueSwitchOpaqueSwitchStateDown = HostOpaqueSwitchOpaqueSwitchState("down") -) - -func init() { - t["HostOpaqueSwitchOpaqueSwitchState"] = reflect.TypeOf((*HostOpaqueSwitchOpaqueSwitchState)(nil)).Elem() -} - -type HostPatchManagerInstallState string - -const ( - HostPatchManagerInstallStateHostRestarted = HostPatchManagerInstallState("hostRestarted") - HostPatchManagerInstallStateImageActive = HostPatchManagerInstallState("imageActive") -) - -func init() { - t["HostPatchManagerInstallState"] = reflect.TypeOf((*HostPatchManagerInstallState)(nil)).Elem() -} - -type HostPatchManagerIntegrityStatus string - -const ( - HostPatchManagerIntegrityStatusValidated = HostPatchManagerIntegrityStatus("validated") - HostPatchManagerIntegrityStatusKeyNotFound = HostPatchManagerIntegrityStatus("keyNotFound") - HostPatchManagerIntegrityStatusKeyRevoked = HostPatchManagerIntegrityStatus("keyRevoked") - HostPatchManagerIntegrityStatusKeyExpired = HostPatchManagerIntegrityStatus("keyExpired") - HostPatchManagerIntegrityStatusDigestMismatch = HostPatchManagerIntegrityStatus("digestMismatch") - HostPatchManagerIntegrityStatusNotEnoughSignatures = HostPatchManagerIntegrityStatus("notEnoughSignatures") - HostPatchManagerIntegrityStatusValidationError = HostPatchManagerIntegrityStatus("validationError") -) - -func init() { - t["HostPatchManagerIntegrityStatus"] = reflect.TypeOf((*HostPatchManagerIntegrityStatus)(nil)).Elem() -} - -type HostPatchManagerReason string - -const ( - HostPatchManagerReasonObsoleted = HostPatchManagerReason("obsoleted") - HostPatchManagerReasonMissingPatch = HostPatchManagerReason("missingPatch") - HostPatchManagerReasonMissingLib = HostPatchManagerReason("missingLib") - HostPatchManagerReasonHasDependentPatch = HostPatchManagerReason("hasDependentPatch") - HostPatchManagerReasonConflictPatch = HostPatchManagerReason("conflictPatch") - HostPatchManagerReasonConflictLib = HostPatchManagerReason("conflictLib") -) - -func init() { - t["HostPatchManagerReason"] = reflect.TypeOf((*HostPatchManagerReason)(nil)).Elem() -} - -type HostPowerOperationType string - -const ( - HostPowerOperationTypePowerOn = HostPowerOperationType("powerOn") - HostPowerOperationTypePowerOff = HostPowerOperationType("powerOff") -) - -func init() { - t["HostPowerOperationType"] = reflect.TypeOf((*HostPowerOperationType)(nil)).Elem() -} - -type HostProfileManagerAnswerFileStatus string - -const ( - HostProfileManagerAnswerFileStatusValid = HostProfileManagerAnswerFileStatus("valid") - HostProfileManagerAnswerFileStatusInvalid = HostProfileManagerAnswerFileStatus("invalid") - HostProfileManagerAnswerFileStatusUnknown = HostProfileManagerAnswerFileStatus("unknown") -) - -func init() { - t["HostProfileManagerAnswerFileStatus"] = reflect.TypeOf((*HostProfileManagerAnswerFileStatus)(nil)).Elem() -} - -type HostProfileManagerTaskListRequirement string - -const ( - HostProfileManagerTaskListRequirementMaintenanceModeRequired = HostProfileManagerTaskListRequirement("maintenanceModeRequired") - HostProfileManagerTaskListRequirementRebootRequired = HostProfileManagerTaskListRequirement("rebootRequired") -) - -func init() { - t["HostProfileManagerTaskListRequirement"] = reflect.TypeOf((*HostProfileManagerTaskListRequirement)(nil)).Elem() -} - -type HostProtocolEndpointPEType string - -const ( - HostProtocolEndpointPETypeBlock = HostProtocolEndpointPEType("block") - HostProtocolEndpointPETypeNas = HostProtocolEndpointPEType("nas") -) - -func init() { - t["HostProtocolEndpointPEType"] = reflect.TypeOf((*HostProtocolEndpointPEType)(nil)).Elem() -} - -type HostReplayUnsupportedReason string - -const ( - HostReplayUnsupportedReasonIncompatibleProduct = HostReplayUnsupportedReason("incompatibleProduct") - HostReplayUnsupportedReasonIncompatibleCpu = HostReplayUnsupportedReason("incompatibleCpu") - HostReplayUnsupportedReasonHvDisabled = HostReplayUnsupportedReason("hvDisabled") - HostReplayUnsupportedReasonCpuidLimitSet = HostReplayUnsupportedReason("cpuidLimitSet") - HostReplayUnsupportedReasonOldBIOS = HostReplayUnsupportedReason("oldBIOS") - HostReplayUnsupportedReasonUnknown = HostReplayUnsupportedReason("unknown") -) - -func init() { - t["HostReplayUnsupportedReason"] = reflect.TypeOf((*HostReplayUnsupportedReason)(nil)).Elem() -} - -type HostRuntimeInfoNetStackInstanceRuntimeInfoState string - -const ( - HostRuntimeInfoNetStackInstanceRuntimeInfoStateInactive = HostRuntimeInfoNetStackInstanceRuntimeInfoState("inactive") - HostRuntimeInfoNetStackInstanceRuntimeInfoStateActive = HostRuntimeInfoNetStackInstanceRuntimeInfoState("active") - HostRuntimeInfoNetStackInstanceRuntimeInfoStateDeactivating = HostRuntimeInfoNetStackInstanceRuntimeInfoState("deactivating") - HostRuntimeInfoNetStackInstanceRuntimeInfoStateActivating = HostRuntimeInfoNetStackInstanceRuntimeInfoState("activating") -) - -func init() { - t["HostRuntimeInfoNetStackInstanceRuntimeInfoState"] = reflect.TypeOf((*HostRuntimeInfoNetStackInstanceRuntimeInfoState)(nil)).Elem() -} - -type HostServicePolicy string - -const ( - HostServicePolicyOn = HostServicePolicy("on") - HostServicePolicyAutomatic = HostServicePolicy("automatic") - HostServicePolicyOff = HostServicePolicy("off") -) - -func init() { - t["HostServicePolicy"] = reflect.TypeOf((*HostServicePolicy)(nil)).Elem() -} - -type HostSnmpAgentCapability string - -const ( - HostSnmpAgentCapabilityCOMPLETE = HostSnmpAgentCapability("COMPLETE") - HostSnmpAgentCapabilityDIAGNOSTICS = HostSnmpAgentCapability("DIAGNOSTICS") - HostSnmpAgentCapabilityCONFIGURATION = HostSnmpAgentCapability("CONFIGURATION") -) - -func init() { - t["HostSnmpAgentCapability"] = reflect.TypeOf((*HostSnmpAgentCapability)(nil)).Elem() -} - -type HostStandbyMode string - -const ( - HostStandbyModeEntering = HostStandbyMode("entering") - HostStandbyModeExiting = HostStandbyMode("exiting") - HostStandbyModeIn = HostStandbyMode("in") - HostStandbyModeNone = HostStandbyMode("none") -) - -func init() { - t["HostStandbyMode"] = reflect.TypeOf((*HostStandbyMode)(nil)).Elem() -} - -type HostSystemConnectionState string - -const ( - HostSystemConnectionStateConnected = HostSystemConnectionState("connected") - HostSystemConnectionStateNotResponding = HostSystemConnectionState("notResponding") - HostSystemConnectionStateDisconnected = HostSystemConnectionState("disconnected") -) - -func init() { - t["HostSystemConnectionState"] = reflect.TypeOf((*HostSystemConnectionState)(nil)).Elem() -} - -type HostSystemIdentificationInfoIdentifier string - -const ( - HostSystemIdentificationInfoIdentifierAssetTag = HostSystemIdentificationInfoIdentifier("AssetTag") - HostSystemIdentificationInfoIdentifierServiceTag = HostSystemIdentificationInfoIdentifier("ServiceTag") - HostSystemIdentificationInfoIdentifierOemSpecificString = HostSystemIdentificationInfoIdentifier("OemSpecificString") -) - -func init() { - t["HostSystemIdentificationInfoIdentifier"] = reflect.TypeOf((*HostSystemIdentificationInfoIdentifier)(nil)).Elem() -} - -type HostSystemPowerState string - -const ( - HostSystemPowerStatePoweredOn = HostSystemPowerState("poweredOn") - HostSystemPowerStatePoweredOff = HostSystemPowerState("poweredOff") - HostSystemPowerStateStandBy = HostSystemPowerState("standBy") - HostSystemPowerStateUnknown = HostSystemPowerState("unknown") -) - -func init() { - t["HostSystemPowerState"] = reflect.TypeOf((*HostSystemPowerState)(nil)).Elem() -} - -type HostUnresolvedVmfsExtentUnresolvedReason string - -const ( - HostUnresolvedVmfsExtentUnresolvedReasonDiskIdMismatch = HostUnresolvedVmfsExtentUnresolvedReason("diskIdMismatch") - HostUnresolvedVmfsExtentUnresolvedReasonUuidConflict = HostUnresolvedVmfsExtentUnresolvedReason("uuidConflict") -) - -func init() { - t["HostUnresolvedVmfsExtentUnresolvedReason"] = reflect.TypeOf((*HostUnresolvedVmfsExtentUnresolvedReason)(nil)).Elem() -} - -type HostUnresolvedVmfsResolutionSpecVmfsUuidResolution string - -const ( - HostUnresolvedVmfsResolutionSpecVmfsUuidResolutionResignature = HostUnresolvedVmfsResolutionSpecVmfsUuidResolution("resignature") - HostUnresolvedVmfsResolutionSpecVmfsUuidResolutionForceMount = HostUnresolvedVmfsResolutionSpecVmfsUuidResolution("forceMount") -) - -func init() { - t["HostUnresolvedVmfsResolutionSpecVmfsUuidResolution"] = reflect.TypeOf((*HostUnresolvedVmfsResolutionSpecVmfsUuidResolution)(nil)).Elem() -} - -type HostVirtualNicManagerNicType string - -const ( - HostVirtualNicManagerNicTypeVmotion = HostVirtualNicManagerNicType("vmotion") - HostVirtualNicManagerNicTypeFaultToleranceLogging = HostVirtualNicManagerNicType("faultToleranceLogging") - HostVirtualNicManagerNicTypeVSphereReplication = HostVirtualNicManagerNicType("vSphereReplication") - HostVirtualNicManagerNicTypeVSphereReplicationNFC = HostVirtualNicManagerNicType("vSphereReplicationNFC") - HostVirtualNicManagerNicTypeManagement = HostVirtualNicManagerNicType("management") - HostVirtualNicManagerNicTypeVsan = HostVirtualNicManagerNicType("vsan") - HostVirtualNicManagerNicTypeVSphereProvisioning = HostVirtualNicManagerNicType("vSphereProvisioning") -) - -func init() { - t["HostVirtualNicManagerNicType"] = reflect.TypeOf((*HostVirtualNicManagerNicType)(nil)).Elem() -} - -type HostVmciAccessManagerMode string - -const ( - HostVmciAccessManagerModeGrant = HostVmciAccessManagerMode("grant") - HostVmciAccessManagerModeReplace = HostVmciAccessManagerMode("replace") - HostVmciAccessManagerModeRevoke = HostVmciAccessManagerMode("revoke") -) - -func init() { - t["HostVmciAccessManagerMode"] = reflect.TypeOf((*HostVmciAccessManagerMode)(nil)).Elem() -} - -type HttpNfcLeaseState string - -const ( - HttpNfcLeaseStateInitializing = HttpNfcLeaseState("initializing") - HttpNfcLeaseStateReady = HttpNfcLeaseState("ready") - HttpNfcLeaseStateDone = HttpNfcLeaseState("done") - HttpNfcLeaseStateError = HttpNfcLeaseState("error") -) - -func init() { - t["HttpNfcLeaseState"] = reflect.TypeOf((*HttpNfcLeaseState)(nil)).Elem() -} - -type IncompatibleHostForVmReplicationIncompatibleReason string - -const ( - IncompatibleHostForVmReplicationIncompatibleReasonRpo = IncompatibleHostForVmReplicationIncompatibleReason("rpo") - IncompatibleHostForVmReplicationIncompatibleReasonNetCompression = IncompatibleHostForVmReplicationIncompatibleReason("netCompression") -) - -func init() { - t["IncompatibleHostForVmReplicationIncompatibleReason"] = reflect.TypeOf((*IncompatibleHostForVmReplicationIncompatibleReason)(nil)).Elem() -} - -type InternetScsiSnsDiscoveryMethod string - -const ( - InternetScsiSnsDiscoveryMethodIsnsStatic = InternetScsiSnsDiscoveryMethod("isnsStatic") - InternetScsiSnsDiscoveryMethodIsnsDhcp = InternetScsiSnsDiscoveryMethod("isnsDhcp") - InternetScsiSnsDiscoveryMethodIsnsSlp = InternetScsiSnsDiscoveryMethod("isnsSlp") -) - -func init() { - t["InternetScsiSnsDiscoveryMethod"] = reflect.TypeOf((*InternetScsiSnsDiscoveryMethod)(nil)).Elem() -} - -type InvalidDasConfigArgumentEntryForInvalidArgument string - -const ( - InvalidDasConfigArgumentEntryForInvalidArgumentAdmissionControl = InvalidDasConfigArgumentEntryForInvalidArgument("admissionControl") - InvalidDasConfigArgumentEntryForInvalidArgumentUserHeartbeatDs = InvalidDasConfigArgumentEntryForInvalidArgument("userHeartbeatDs") - InvalidDasConfigArgumentEntryForInvalidArgumentVmConfig = InvalidDasConfigArgumentEntryForInvalidArgument("vmConfig") -) - -func init() { - t["InvalidDasConfigArgumentEntryForInvalidArgument"] = reflect.TypeOf((*InvalidDasConfigArgumentEntryForInvalidArgument)(nil)).Elem() -} - -type InvalidProfileReferenceHostReason string - -const ( - InvalidProfileReferenceHostReasonIncompatibleVersion = InvalidProfileReferenceHostReason("incompatibleVersion") - InvalidProfileReferenceHostReasonMissingReferenceHost = InvalidProfileReferenceHostReason("missingReferenceHost") -) - -func init() { - t["InvalidProfileReferenceHostReason"] = reflect.TypeOf((*InvalidProfileReferenceHostReason)(nil)).Elem() -} - -type IoFilterOperation string - -const ( - IoFilterOperationInstall = IoFilterOperation("install") - IoFilterOperationUninstall = IoFilterOperation("uninstall") - IoFilterOperationUpgrade = IoFilterOperation("upgrade") -) - -func init() { - t["IoFilterOperation"] = reflect.TypeOf((*IoFilterOperation)(nil)).Elem() -} - -type IscsiPortInfoPathStatus string - -const ( - IscsiPortInfoPathStatusNotUsed = IscsiPortInfoPathStatus("notUsed") - IscsiPortInfoPathStatusActive = IscsiPortInfoPathStatus("active") - IscsiPortInfoPathStatusStandBy = IscsiPortInfoPathStatus("standBy") - IscsiPortInfoPathStatusLastActive = IscsiPortInfoPathStatus("lastActive") -) - -func init() { - t["IscsiPortInfoPathStatus"] = reflect.TypeOf((*IscsiPortInfoPathStatus)(nil)).Elem() -} - -type LatencySensitivitySensitivityLevel string - -const ( - LatencySensitivitySensitivityLevelLow = LatencySensitivitySensitivityLevel("low") - LatencySensitivitySensitivityLevelNormal = LatencySensitivitySensitivityLevel("normal") - LatencySensitivitySensitivityLevelMedium = LatencySensitivitySensitivityLevel("medium") - LatencySensitivitySensitivityLevelHigh = LatencySensitivitySensitivityLevel("high") - LatencySensitivitySensitivityLevelCustom = LatencySensitivitySensitivityLevel("custom") -) - -func init() { - t["LatencySensitivitySensitivityLevel"] = reflect.TypeOf((*LatencySensitivitySensitivityLevel)(nil)).Elem() -} - -type LicenseAssignmentFailedReason string - -const ( - LicenseAssignmentFailedReasonKeyEntityMismatch = LicenseAssignmentFailedReason("keyEntityMismatch") - LicenseAssignmentFailedReasonDowngradeDisallowed = LicenseAssignmentFailedReason("downgradeDisallowed") - LicenseAssignmentFailedReasonInventoryNotManageableByVirtualCenter = LicenseAssignmentFailedReason("inventoryNotManageableByVirtualCenter") - LicenseAssignmentFailedReasonHostsUnmanageableByVirtualCenterWithoutLicenseServer = LicenseAssignmentFailedReason("hostsUnmanageableByVirtualCenterWithoutLicenseServer") -) - -func init() { - t["LicenseAssignmentFailedReason"] = reflect.TypeOf((*LicenseAssignmentFailedReason)(nil)).Elem() -} - -type LicenseFeatureInfoSourceRestriction string - -const ( - LicenseFeatureInfoSourceRestrictionUnrestricted = LicenseFeatureInfoSourceRestriction("unrestricted") - LicenseFeatureInfoSourceRestrictionServed = LicenseFeatureInfoSourceRestriction("served") - LicenseFeatureInfoSourceRestrictionFile = LicenseFeatureInfoSourceRestriction("file") -) - -func init() { - t["LicenseFeatureInfoSourceRestriction"] = reflect.TypeOf((*LicenseFeatureInfoSourceRestriction)(nil)).Elem() -} - -type LicenseFeatureInfoState string - -const ( - LicenseFeatureInfoStateEnabled = LicenseFeatureInfoState("enabled") - LicenseFeatureInfoStateDisabled = LicenseFeatureInfoState("disabled") - LicenseFeatureInfoStateOptional = LicenseFeatureInfoState("optional") -) - -func init() { - t["LicenseFeatureInfoState"] = reflect.TypeOf((*LicenseFeatureInfoState)(nil)).Elem() -} - -type LicenseFeatureInfoUnit string - -const ( - LicenseFeatureInfoUnitHost = LicenseFeatureInfoUnit("host") - LicenseFeatureInfoUnitCpuCore = LicenseFeatureInfoUnit("cpuCore") - LicenseFeatureInfoUnitCpuPackage = LicenseFeatureInfoUnit("cpuPackage") - LicenseFeatureInfoUnitServer = LicenseFeatureInfoUnit("server") - LicenseFeatureInfoUnitVm = LicenseFeatureInfoUnit("vm") -) - -func init() { - t["LicenseFeatureInfoUnit"] = reflect.TypeOf((*LicenseFeatureInfoUnit)(nil)).Elem() -} - -type LicenseManagerLicenseKey string - -const ( - LicenseManagerLicenseKeyEsxFull = LicenseManagerLicenseKey("esxFull") - LicenseManagerLicenseKeyEsxVmtn = LicenseManagerLicenseKey("esxVmtn") - LicenseManagerLicenseKeyEsxExpress = LicenseManagerLicenseKey("esxExpress") - LicenseManagerLicenseKeySan = LicenseManagerLicenseKey("san") - LicenseManagerLicenseKeyIscsi = LicenseManagerLicenseKey("iscsi") - LicenseManagerLicenseKeyNas = LicenseManagerLicenseKey("nas") - LicenseManagerLicenseKeyVsmp = LicenseManagerLicenseKey("vsmp") - LicenseManagerLicenseKeyBackup = LicenseManagerLicenseKey("backup") - LicenseManagerLicenseKeyVc = LicenseManagerLicenseKey("vc") - LicenseManagerLicenseKeyVcExpress = LicenseManagerLicenseKey("vcExpress") - LicenseManagerLicenseKeyEsxHost = LicenseManagerLicenseKey("esxHost") - LicenseManagerLicenseKeyGsxHost = LicenseManagerLicenseKey("gsxHost") - LicenseManagerLicenseKeyServerHost = LicenseManagerLicenseKey("serverHost") - LicenseManagerLicenseKeyDrsPower = LicenseManagerLicenseKey("drsPower") - LicenseManagerLicenseKeyVmotion = LicenseManagerLicenseKey("vmotion") - LicenseManagerLicenseKeyDrs = LicenseManagerLicenseKey("drs") - LicenseManagerLicenseKeyDas = LicenseManagerLicenseKey("das") -) - -func init() { - t["LicenseManagerLicenseKey"] = reflect.TypeOf((*LicenseManagerLicenseKey)(nil)).Elem() -} - -type LicenseManagerState string - -const ( - LicenseManagerStateInitializing = LicenseManagerState("initializing") - LicenseManagerStateNormal = LicenseManagerState("normal") - LicenseManagerStateMarginal = LicenseManagerState("marginal") - LicenseManagerStateFault = LicenseManagerState("fault") -) - -func init() { - t["LicenseManagerState"] = reflect.TypeOf((*LicenseManagerState)(nil)).Elem() -} - -type LicenseReservationInfoState string - -const ( - LicenseReservationInfoStateNotUsed = LicenseReservationInfoState("notUsed") - LicenseReservationInfoStateNoLicense = LicenseReservationInfoState("noLicense") - LicenseReservationInfoStateUnlicensedUse = LicenseReservationInfoState("unlicensedUse") - LicenseReservationInfoStateLicensed = LicenseReservationInfoState("licensed") -) - -func init() { - t["LicenseReservationInfoState"] = reflect.TypeOf((*LicenseReservationInfoState)(nil)).Elem() -} - -type LinkDiscoveryProtocolConfigOperationType string - -const ( - LinkDiscoveryProtocolConfigOperationTypeNone = LinkDiscoveryProtocolConfigOperationType("none") - LinkDiscoveryProtocolConfigOperationTypeListen = LinkDiscoveryProtocolConfigOperationType("listen") - LinkDiscoveryProtocolConfigOperationTypeAdvertise = LinkDiscoveryProtocolConfigOperationType("advertise") - LinkDiscoveryProtocolConfigOperationTypeBoth = LinkDiscoveryProtocolConfigOperationType("both") -) - -func init() { - t["LinkDiscoveryProtocolConfigOperationType"] = reflect.TypeOf((*LinkDiscoveryProtocolConfigOperationType)(nil)).Elem() -} - -type LinkDiscoveryProtocolConfigProtocolType string - -const ( - LinkDiscoveryProtocolConfigProtocolTypeCdp = LinkDiscoveryProtocolConfigProtocolType("cdp") - LinkDiscoveryProtocolConfigProtocolTypeLldp = LinkDiscoveryProtocolConfigProtocolType("lldp") -) - -func init() { - t["LinkDiscoveryProtocolConfigProtocolType"] = reflect.TypeOf((*LinkDiscoveryProtocolConfigProtocolType)(nil)).Elem() -} - -type ManagedEntityStatus string - -const ( - ManagedEntityStatusGray = ManagedEntityStatus("gray") - ManagedEntityStatusGreen = ManagedEntityStatus("green") - ManagedEntityStatusYellow = ManagedEntityStatus("yellow") - ManagedEntityStatusRed = ManagedEntityStatus("red") -) - -func init() { - t["ManagedEntityStatus"] = reflect.TypeOf((*ManagedEntityStatus)(nil)).Elem() -} - -type MetricAlarmOperator string - -const ( - MetricAlarmOperatorIsAbove = MetricAlarmOperator("isAbove") - MetricAlarmOperatorIsBelow = MetricAlarmOperator("isBelow") -) - -func init() { - t["MetricAlarmOperator"] = reflect.TypeOf((*MetricAlarmOperator)(nil)).Elem() -} - -type MultipathState string - -const ( - MultipathStateStandby = MultipathState("standby") - MultipathStateActive = MultipathState("active") - MultipathStateDisabled = MultipathState("disabled") - MultipathStateDead = MultipathState("dead") - MultipathStateUnknown = MultipathState("unknown") -) - -func init() { - t["MultipathState"] = reflect.TypeOf((*MultipathState)(nil)).Elem() -} - -type NetBIOSConfigInfoMode string - -const ( - NetBIOSConfigInfoModeUnknown = NetBIOSConfigInfoMode("unknown") - NetBIOSConfigInfoModeEnabled = NetBIOSConfigInfoMode("enabled") - NetBIOSConfigInfoModeDisabled = NetBIOSConfigInfoMode("disabled") - NetBIOSConfigInfoModeEnabledViaDHCP = NetBIOSConfigInfoMode("enabledViaDHCP") -) - -func init() { - t["NetBIOSConfigInfoMode"] = reflect.TypeOf((*NetBIOSConfigInfoMode)(nil)).Elem() -} - -type NetIpConfigInfoIpAddressOrigin string - -const ( - NetIpConfigInfoIpAddressOriginOther = NetIpConfigInfoIpAddressOrigin("other") - NetIpConfigInfoIpAddressOriginManual = NetIpConfigInfoIpAddressOrigin("manual") - NetIpConfigInfoIpAddressOriginDhcp = NetIpConfigInfoIpAddressOrigin("dhcp") - NetIpConfigInfoIpAddressOriginLinklayer = NetIpConfigInfoIpAddressOrigin("linklayer") - NetIpConfigInfoIpAddressOriginRandom = NetIpConfigInfoIpAddressOrigin("random") -) - -func init() { - t["NetIpConfigInfoIpAddressOrigin"] = reflect.TypeOf((*NetIpConfigInfoIpAddressOrigin)(nil)).Elem() -} - -type NetIpConfigInfoIpAddressStatus string - -const ( - NetIpConfigInfoIpAddressStatusPreferred = NetIpConfigInfoIpAddressStatus("preferred") - NetIpConfigInfoIpAddressStatusDeprecated = NetIpConfigInfoIpAddressStatus("deprecated") - NetIpConfigInfoIpAddressStatusInvalid = NetIpConfigInfoIpAddressStatus("invalid") - NetIpConfigInfoIpAddressStatusInaccessible = NetIpConfigInfoIpAddressStatus("inaccessible") - NetIpConfigInfoIpAddressStatusUnknown = NetIpConfigInfoIpAddressStatus("unknown") - NetIpConfigInfoIpAddressStatusTentative = NetIpConfigInfoIpAddressStatus("tentative") - NetIpConfigInfoIpAddressStatusDuplicate = NetIpConfigInfoIpAddressStatus("duplicate") -) - -func init() { - t["NetIpConfigInfoIpAddressStatus"] = reflect.TypeOf((*NetIpConfigInfoIpAddressStatus)(nil)).Elem() -} - -type NetIpStackInfoEntryType string - -const ( - NetIpStackInfoEntryTypeOther = NetIpStackInfoEntryType("other") - NetIpStackInfoEntryTypeInvalid = NetIpStackInfoEntryType("invalid") - NetIpStackInfoEntryTypeDynamic = NetIpStackInfoEntryType("dynamic") - NetIpStackInfoEntryTypeManual = NetIpStackInfoEntryType("manual") -) - -func init() { - t["NetIpStackInfoEntryType"] = reflect.TypeOf((*NetIpStackInfoEntryType)(nil)).Elem() -} - -type NetIpStackInfoPreference string - -const ( - NetIpStackInfoPreferenceReserved = NetIpStackInfoPreference("reserved") - NetIpStackInfoPreferenceLow = NetIpStackInfoPreference("low") - NetIpStackInfoPreferenceMedium = NetIpStackInfoPreference("medium") - NetIpStackInfoPreferenceHigh = NetIpStackInfoPreference("high") -) - -func init() { - t["NetIpStackInfoPreference"] = reflect.TypeOf((*NetIpStackInfoPreference)(nil)).Elem() -} - -type NotSupportedDeviceForFTDeviceType string - -const ( - NotSupportedDeviceForFTDeviceTypeVirtualVmxnet3 = NotSupportedDeviceForFTDeviceType("virtualVmxnet3") - NotSupportedDeviceForFTDeviceTypeParaVirtualSCSIController = NotSupportedDeviceForFTDeviceType("paraVirtualSCSIController") -) - -func init() { - t["NotSupportedDeviceForFTDeviceType"] = reflect.TypeOf((*NotSupportedDeviceForFTDeviceType)(nil)).Elem() -} - -type NumVirtualCpusIncompatibleReason string - -const ( - NumVirtualCpusIncompatibleReasonRecordReplay = NumVirtualCpusIncompatibleReason("recordReplay") - NumVirtualCpusIncompatibleReasonFaultTolerance = NumVirtualCpusIncompatibleReason("faultTolerance") -) - -func init() { - t["NumVirtualCpusIncompatibleReason"] = reflect.TypeOf((*NumVirtualCpusIncompatibleReason)(nil)).Elem() -} - -type ObjectUpdateKind string - -const ( - ObjectUpdateKindModify = ObjectUpdateKind("modify") - ObjectUpdateKindEnter = ObjectUpdateKind("enter") - ObjectUpdateKindLeave = ObjectUpdateKind("leave") -) - -func init() { - t["ObjectUpdateKind"] = reflect.TypeOf((*ObjectUpdateKind)(nil)).Elem() -} - -type OvfConsumerOstNodeType string - -const ( - OvfConsumerOstNodeTypeEnvelope = OvfConsumerOstNodeType("envelope") - OvfConsumerOstNodeTypeVirtualSystem = OvfConsumerOstNodeType("virtualSystem") - OvfConsumerOstNodeTypeVirtualSystemCollection = OvfConsumerOstNodeType("virtualSystemCollection") -) - -func init() { - t["OvfConsumerOstNodeType"] = reflect.TypeOf((*OvfConsumerOstNodeType)(nil)).Elem() -} - -type OvfCreateImportSpecParamsDiskProvisioningType string - -const ( - OvfCreateImportSpecParamsDiskProvisioningTypeMonolithicSparse = OvfCreateImportSpecParamsDiskProvisioningType("monolithicSparse") - OvfCreateImportSpecParamsDiskProvisioningTypeMonolithicFlat = OvfCreateImportSpecParamsDiskProvisioningType("monolithicFlat") - OvfCreateImportSpecParamsDiskProvisioningTypeTwoGbMaxExtentSparse = OvfCreateImportSpecParamsDiskProvisioningType("twoGbMaxExtentSparse") - OvfCreateImportSpecParamsDiskProvisioningTypeTwoGbMaxExtentFlat = OvfCreateImportSpecParamsDiskProvisioningType("twoGbMaxExtentFlat") - OvfCreateImportSpecParamsDiskProvisioningTypeThin = OvfCreateImportSpecParamsDiskProvisioningType("thin") - OvfCreateImportSpecParamsDiskProvisioningTypeThick = OvfCreateImportSpecParamsDiskProvisioningType("thick") - OvfCreateImportSpecParamsDiskProvisioningTypeSeSparse = OvfCreateImportSpecParamsDiskProvisioningType("seSparse") - OvfCreateImportSpecParamsDiskProvisioningTypeEagerZeroedThick = OvfCreateImportSpecParamsDiskProvisioningType("eagerZeroedThick") - OvfCreateImportSpecParamsDiskProvisioningTypeSparse = OvfCreateImportSpecParamsDiskProvisioningType("sparse") - OvfCreateImportSpecParamsDiskProvisioningTypeFlat = OvfCreateImportSpecParamsDiskProvisioningType("flat") -) - -func init() { - t["OvfCreateImportSpecParamsDiskProvisioningType"] = reflect.TypeOf((*OvfCreateImportSpecParamsDiskProvisioningType)(nil)).Elem() -} - -type PerfFormat string - -const ( - PerfFormatNormal = PerfFormat("normal") - PerfFormatCsv = PerfFormat("csv") -) - -func init() { - t["PerfFormat"] = reflect.TypeOf((*PerfFormat)(nil)).Elem() -} - -type PerfStatsType string - -const ( - PerfStatsTypeAbsolute = PerfStatsType("absolute") - PerfStatsTypeDelta = PerfStatsType("delta") - PerfStatsTypeRate = PerfStatsType("rate") -) - -func init() { - t["PerfStatsType"] = reflect.TypeOf((*PerfStatsType)(nil)).Elem() -} - -type PerfSummaryType string - -const ( - PerfSummaryTypeAverage = PerfSummaryType("average") - PerfSummaryTypeMaximum = PerfSummaryType("maximum") - PerfSummaryTypeMinimum = PerfSummaryType("minimum") - PerfSummaryTypeLatest = PerfSummaryType("latest") - PerfSummaryTypeSummation = PerfSummaryType("summation") - PerfSummaryTypeNone = PerfSummaryType("none") -) - -func init() { - t["PerfSummaryType"] = reflect.TypeOf((*PerfSummaryType)(nil)).Elem() -} - -type PerformanceManagerUnit string - -const ( - PerformanceManagerUnitPercent = PerformanceManagerUnit("percent") - PerformanceManagerUnitKiloBytes = PerformanceManagerUnit("kiloBytes") - PerformanceManagerUnitMegaBytes = PerformanceManagerUnit("megaBytes") - PerformanceManagerUnitMegaHertz = PerformanceManagerUnit("megaHertz") - PerformanceManagerUnitNumber = PerformanceManagerUnit("number") - PerformanceManagerUnitMicrosecond = PerformanceManagerUnit("microsecond") - PerformanceManagerUnitMillisecond = PerformanceManagerUnit("millisecond") - PerformanceManagerUnitSecond = PerformanceManagerUnit("second") - PerformanceManagerUnitKiloBytesPerSecond = PerformanceManagerUnit("kiloBytesPerSecond") - PerformanceManagerUnitMegaBytesPerSecond = PerformanceManagerUnit("megaBytesPerSecond") - PerformanceManagerUnitWatt = PerformanceManagerUnit("watt") - PerformanceManagerUnitJoule = PerformanceManagerUnit("joule") - PerformanceManagerUnitTeraBytes = PerformanceManagerUnit("teraBytes") -) - -func init() { - t["PerformanceManagerUnit"] = reflect.TypeOf((*PerformanceManagerUnit)(nil)).Elem() -} - -type PhysicalNicResourcePoolSchedulerDisallowedReason string - -const ( - PhysicalNicResourcePoolSchedulerDisallowedReasonUserOptOut = PhysicalNicResourcePoolSchedulerDisallowedReason("userOptOut") - PhysicalNicResourcePoolSchedulerDisallowedReasonHardwareUnsupported = PhysicalNicResourcePoolSchedulerDisallowedReason("hardwareUnsupported") -) - -func init() { - t["PhysicalNicResourcePoolSchedulerDisallowedReason"] = reflect.TypeOf((*PhysicalNicResourcePoolSchedulerDisallowedReason)(nil)).Elem() -} - -type PhysicalNicVmDirectPathGen2SupportedMode string - -const ( - PhysicalNicVmDirectPathGen2SupportedModeUpt = PhysicalNicVmDirectPathGen2SupportedMode("upt") -) - -func init() { - t["PhysicalNicVmDirectPathGen2SupportedMode"] = reflect.TypeOf((*PhysicalNicVmDirectPathGen2SupportedMode)(nil)).Elem() -} - -type PlacementAffinityRuleRuleScope string - -const ( - PlacementAffinityRuleRuleScopeCluster = PlacementAffinityRuleRuleScope("cluster") - PlacementAffinityRuleRuleScopeHost = PlacementAffinityRuleRuleScope("host") - PlacementAffinityRuleRuleScopeStoragePod = PlacementAffinityRuleRuleScope("storagePod") - PlacementAffinityRuleRuleScopeDatastore = PlacementAffinityRuleRuleScope("datastore") -) - -func init() { - t["PlacementAffinityRuleRuleScope"] = reflect.TypeOf((*PlacementAffinityRuleRuleScope)(nil)).Elem() -} - -type PlacementAffinityRuleRuleType string - -const ( - PlacementAffinityRuleRuleTypeAffinity = PlacementAffinityRuleRuleType("affinity") - PlacementAffinityRuleRuleTypeAntiAffinity = PlacementAffinityRuleRuleType("antiAffinity") - PlacementAffinityRuleRuleTypeSoftAffinity = PlacementAffinityRuleRuleType("softAffinity") - PlacementAffinityRuleRuleTypeSoftAntiAffinity = PlacementAffinityRuleRuleType("softAntiAffinity") -) - -func init() { - t["PlacementAffinityRuleRuleType"] = reflect.TypeOf((*PlacementAffinityRuleRuleType)(nil)).Elem() -} - -type PlacementSpecPlacementType string - -const ( - PlacementSpecPlacementTypeCreate = PlacementSpecPlacementType("create") - PlacementSpecPlacementTypeReconfigure = PlacementSpecPlacementType("reconfigure") - PlacementSpecPlacementTypeRelocate = PlacementSpecPlacementType("relocate") - PlacementSpecPlacementTypeClone = PlacementSpecPlacementType("clone") -) - -func init() { - t["PlacementSpecPlacementType"] = reflect.TypeOf((*PlacementSpecPlacementType)(nil)).Elem() -} - -type PortGroupConnecteeType string - -const ( - PortGroupConnecteeTypeVirtualMachine = PortGroupConnecteeType("virtualMachine") - PortGroupConnecteeTypeSystemManagement = PortGroupConnecteeType("systemManagement") - PortGroupConnecteeTypeHost = PortGroupConnecteeType("host") - PortGroupConnecteeTypeUnknown = PortGroupConnecteeType("unknown") -) - -func init() { - t["PortGroupConnecteeType"] = reflect.TypeOf((*PortGroupConnecteeType)(nil)).Elem() -} - -type ProfileExecuteResultStatus string - -const ( - ProfileExecuteResultStatusSuccess = ProfileExecuteResultStatus("success") - ProfileExecuteResultStatusNeedInput = ProfileExecuteResultStatus("needInput") - ProfileExecuteResultStatusError = ProfileExecuteResultStatus("error") -) - -func init() { - t["ProfileExecuteResultStatus"] = reflect.TypeOf((*ProfileExecuteResultStatus)(nil)).Elem() -} - -type ProfileNumericComparator string - -const ( - ProfileNumericComparatorLessThan = ProfileNumericComparator("lessThan") - ProfileNumericComparatorLessThanEqual = ProfileNumericComparator("lessThanEqual") - ProfileNumericComparatorEqual = ProfileNumericComparator("equal") - ProfileNumericComparatorNotEqual = ProfileNumericComparator("notEqual") - ProfileNumericComparatorGreaterThanEqual = ProfileNumericComparator("greaterThanEqual") - ProfileNumericComparatorGreaterThan = ProfileNumericComparator("greaterThan") -) - -func init() { - t["ProfileNumericComparator"] = reflect.TypeOf((*ProfileNumericComparator)(nil)).Elem() -} - -type PropertyChangeOp string - -const ( - PropertyChangeOpAdd = PropertyChangeOp("add") - PropertyChangeOpRemove = PropertyChangeOp("remove") - PropertyChangeOpAssign = PropertyChangeOp("assign") - PropertyChangeOpIndirectRemove = PropertyChangeOp("indirectRemove") -) - -func init() { - t["PropertyChangeOp"] = reflect.TypeOf((*PropertyChangeOp)(nil)).Elem() -} - -type QuiesceMode string - -const ( - QuiesceModeApplication = QuiesceMode("application") - QuiesceModeFilesystem = QuiesceMode("filesystem") - QuiesceModeNone = QuiesceMode("none") -) - -func init() { - t["QuiesceMode"] = reflect.TypeOf((*QuiesceMode)(nil)).Elem() -} - -type RecommendationReasonCode string - -const ( - RecommendationReasonCodeFairnessCpuAvg = RecommendationReasonCode("fairnessCpuAvg") - RecommendationReasonCodeFairnessMemAvg = RecommendationReasonCode("fairnessMemAvg") - RecommendationReasonCodeJointAffin = RecommendationReasonCode("jointAffin") - RecommendationReasonCodeAntiAffin = RecommendationReasonCode("antiAffin") - RecommendationReasonCodeHostMaint = RecommendationReasonCode("hostMaint") - RecommendationReasonCodeEnterStandby = RecommendationReasonCode("enterStandby") - RecommendationReasonCodeReservationCpu = RecommendationReasonCode("reservationCpu") - RecommendationReasonCodeReservationMem = RecommendationReasonCode("reservationMem") - RecommendationReasonCodePowerOnVm = RecommendationReasonCode("powerOnVm") - RecommendationReasonCodePowerSaving = RecommendationReasonCode("powerSaving") - RecommendationReasonCodeIncreaseCapacity = RecommendationReasonCode("increaseCapacity") - RecommendationReasonCodeCheckResource = RecommendationReasonCode("checkResource") - RecommendationReasonCodeUnreservedCapacity = RecommendationReasonCode("unreservedCapacity") - RecommendationReasonCodeVmHostHardAffinity = RecommendationReasonCode("vmHostHardAffinity") - RecommendationReasonCodeVmHostSoftAffinity = RecommendationReasonCode("vmHostSoftAffinity") - RecommendationReasonCodeBalanceDatastoreSpaceUsage = RecommendationReasonCode("balanceDatastoreSpaceUsage") - RecommendationReasonCodeBalanceDatastoreIOLoad = RecommendationReasonCode("balanceDatastoreIOLoad") - RecommendationReasonCodeBalanceDatastoreIOPSReservation = RecommendationReasonCode("balanceDatastoreIOPSReservation") - RecommendationReasonCodeDatastoreMaint = RecommendationReasonCode("datastoreMaint") - RecommendationReasonCodeVirtualDiskJointAffin = RecommendationReasonCode("virtualDiskJointAffin") - RecommendationReasonCodeVirtualDiskAntiAffin = RecommendationReasonCode("virtualDiskAntiAffin") - RecommendationReasonCodeDatastoreSpaceOutage = RecommendationReasonCode("datastoreSpaceOutage") - RecommendationReasonCodeStoragePlacement = RecommendationReasonCode("storagePlacement") - RecommendationReasonCodeIolbDisabledInternal = RecommendationReasonCode("iolbDisabledInternal") - RecommendationReasonCodeXvmotionPlacement = RecommendationReasonCode("xvmotionPlacement") - RecommendationReasonCodeNetworkBandwidthReservation = RecommendationReasonCode("networkBandwidthReservation") -) - -func init() { - t["RecommendationReasonCode"] = reflect.TypeOf((*RecommendationReasonCode)(nil)).Elem() -} - -type RecommendationType string - -const ( - RecommendationTypeV1 = RecommendationType("V1") -) - -func init() { - t["RecommendationType"] = reflect.TypeOf((*RecommendationType)(nil)).Elem() -} - -type ReplicationDiskConfigFaultReasonForFault string - -const ( - ReplicationDiskConfigFaultReasonForFaultDiskNotFound = ReplicationDiskConfigFaultReasonForFault("diskNotFound") - ReplicationDiskConfigFaultReasonForFaultDiskTypeNotSupported = ReplicationDiskConfigFaultReasonForFault("diskTypeNotSupported") - ReplicationDiskConfigFaultReasonForFaultInvalidDiskKey = ReplicationDiskConfigFaultReasonForFault("invalidDiskKey") - ReplicationDiskConfigFaultReasonForFaultInvalidDiskReplicationId = ReplicationDiskConfigFaultReasonForFault("invalidDiskReplicationId") - ReplicationDiskConfigFaultReasonForFaultDuplicateDiskReplicationId = ReplicationDiskConfigFaultReasonForFault("duplicateDiskReplicationId") - ReplicationDiskConfigFaultReasonForFaultInvalidPersistentFilePath = ReplicationDiskConfigFaultReasonForFault("invalidPersistentFilePath") - ReplicationDiskConfigFaultReasonForFaultReconfigureDiskReplicationIdNotAllowed = ReplicationDiskConfigFaultReasonForFault("reconfigureDiskReplicationIdNotAllowed") -) - -func init() { - t["ReplicationDiskConfigFaultReasonForFault"] = reflect.TypeOf((*ReplicationDiskConfigFaultReasonForFault)(nil)).Elem() -} - -type ReplicationVmConfigFaultReasonForFault string - -const ( - ReplicationVmConfigFaultReasonForFaultIncompatibleHwVersion = ReplicationVmConfigFaultReasonForFault("incompatibleHwVersion") - ReplicationVmConfigFaultReasonForFaultInvalidVmReplicationId = ReplicationVmConfigFaultReasonForFault("invalidVmReplicationId") - ReplicationVmConfigFaultReasonForFaultInvalidGenerationNumber = ReplicationVmConfigFaultReasonForFault("invalidGenerationNumber") - ReplicationVmConfigFaultReasonForFaultOutOfBoundsRpoValue = ReplicationVmConfigFaultReasonForFault("outOfBoundsRpoValue") - ReplicationVmConfigFaultReasonForFaultInvalidDestinationIpAddress = ReplicationVmConfigFaultReasonForFault("invalidDestinationIpAddress") - ReplicationVmConfigFaultReasonForFaultInvalidDestinationPort = ReplicationVmConfigFaultReasonForFault("invalidDestinationPort") - ReplicationVmConfigFaultReasonForFaultInvalidExtraVmOptions = ReplicationVmConfigFaultReasonForFault("invalidExtraVmOptions") - ReplicationVmConfigFaultReasonForFaultStaleGenerationNumber = ReplicationVmConfigFaultReasonForFault("staleGenerationNumber") - ReplicationVmConfigFaultReasonForFaultReconfigureVmReplicationIdNotAllowed = ReplicationVmConfigFaultReasonForFault("reconfigureVmReplicationIdNotAllowed") - ReplicationVmConfigFaultReasonForFaultCannotRetrieveVmReplicationConfiguration = ReplicationVmConfigFaultReasonForFault("cannotRetrieveVmReplicationConfiguration") - ReplicationVmConfigFaultReasonForFaultReplicationAlreadyEnabled = ReplicationVmConfigFaultReasonForFault("replicationAlreadyEnabled") - ReplicationVmConfigFaultReasonForFaultInvalidPriorConfiguration = ReplicationVmConfigFaultReasonForFault("invalidPriorConfiguration") - ReplicationVmConfigFaultReasonForFaultReplicationNotEnabled = ReplicationVmConfigFaultReasonForFault("replicationNotEnabled") - ReplicationVmConfigFaultReasonForFaultReplicationConfigurationFailed = ReplicationVmConfigFaultReasonForFault("replicationConfigurationFailed") -) - -func init() { - t["ReplicationVmConfigFaultReasonForFault"] = reflect.TypeOf((*ReplicationVmConfigFaultReasonForFault)(nil)).Elem() -} - -type ReplicationVmFaultReasonForFault string - -const ( - ReplicationVmFaultReasonForFaultNotConfigured = ReplicationVmFaultReasonForFault("notConfigured") - ReplicationVmFaultReasonForFaultPoweredOff = ReplicationVmFaultReasonForFault("poweredOff") - ReplicationVmFaultReasonForFaultSuspended = ReplicationVmFaultReasonForFault("suspended") - ReplicationVmFaultReasonForFaultPoweredOn = ReplicationVmFaultReasonForFault("poweredOn") - ReplicationVmFaultReasonForFaultOfflineReplicating = ReplicationVmFaultReasonForFault("offlineReplicating") - ReplicationVmFaultReasonForFaultInvalidState = ReplicationVmFaultReasonForFault("invalidState") - ReplicationVmFaultReasonForFaultInvalidInstanceId = ReplicationVmFaultReasonForFault("invalidInstanceId") -) - -func init() { - t["ReplicationVmFaultReasonForFault"] = reflect.TypeOf((*ReplicationVmFaultReasonForFault)(nil)).Elem() -} - -type ReplicationVmInProgressFaultActivity string - -const ( - ReplicationVmInProgressFaultActivityFullSync = ReplicationVmInProgressFaultActivity("fullSync") - ReplicationVmInProgressFaultActivityDelta = ReplicationVmInProgressFaultActivity("delta") -) - -func init() { - t["ReplicationVmInProgressFaultActivity"] = reflect.TypeOf((*ReplicationVmInProgressFaultActivity)(nil)).Elem() -} - -type ReplicationVmState string - -const ( - ReplicationVmStateNone = ReplicationVmState("none") - ReplicationVmStatePaused = ReplicationVmState("paused") - ReplicationVmStateSyncing = ReplicationVmState("syncing") - ReplicationVmStateIdle = ReplicationVmState("idle") - ReplicationVmStateActive = ReplicationVmState("active") - ReplicationVmStateError = ReplicationVmState("error") -) - -func init() { - t["ReplicationVmState"] = reflect.TypeOf((*ReplicationVmState)(nil)).Elem() -} - -type ScheduledHardwareUpgradeInfoHardwareUpgradePolicy string - -const ( - ScheduledHardwareUpgradeInfoHardwareUpgradePolicyNever = ScheduledHardwareUpgradeInfoHardwareUpgradePolicy("never") - ScheduledHardwareUpgradeInfoHardwareUpgradePolicyOnSoftPowerOff = ScheduledHardwareUpgradeInfoHardwareUpgradePolicy("onSoftPowerOff") - ScheduledHardwareUpgradeInfoHardwareUpgradePolicyAlways = ScheduledHardwareUpgradeInfoHardwareUpgradePolicy("always") -) - -func init() { - t["ScheduledHardwareUpgradeInfoHardwareUpgradePolicy"] = reflect.TypeOf((*ScheduledHardwareUpgradeInfoHardwareUpgradePolicy)(nil)).Elem() -} - -type ScheduledHardwareUpgradeInfoHardwareUpgradeStatus string - -const ( - ScheduledHardwareUpgradeInfoHardwareUpgradeStatusNone = ScheduledHardwareUpgradeInfoHardwareUpgradeStatus("none") - ScheduledHardwareUpgradeInfoHardwareUpgradeStatusPending = ScheduledHardwareUpgradeInfoHardwareUpgradeStatus("pending") - ScheduledHardwareUpgradeInfoHardwareUpgradeStatusSuccess = ScheduledHardwareUpgradeInfoHardwareUpgradeStatus("success") - ScheduledHardwareUpgradeInfoHardwareUpgradeStatusFailed = ScheduledHardwareUpgradeInfoHardwareUpgradeStatus("failed") -) - -func init() { - t["ScheduledHardwareUpgradeInfoHardwareUpgradeStatus"] = reflect.TypeOf((*ScheduledHardwareUpgradeInfoHardwareUpgradeStatus)(nil)).Elem() -} - -type ScsiLunDescriptorQuality string - -const ( - ScsiLunDescriptorQualityHighQuality = ScsiLunDescriptorQuality("highQuality") - ScsiLunDescriptorQualityMediumQuality = ScsiLunDescriptorQuality("mediumQuality") - ScsiLunDescriptorQualityLowQuality = ScsiLunDescriptorQuality("lowQuality") - ScsiLunDescriptorQualityUnknownQuality = ScsiLunDescriptorQuality("unknownQuality") -) - -func init() { - t["ScsiLunDescriptorQuality"] = reflect.TypeOf((*ScsiLunDescriptorQuality)(nil)).Elem() -} - -type ScsiLunState string - -const ( - ScsiLunStateUnknownState = ScsiLunState("unknownState") - ScsiLunStateOk = ScsiLunState("ok") - ScsiLunStateError = ScsiLunState("error") - ScsiLunStateOff = ScsiLunState("off") - ScsiLunStateQuiesced = ScsiLunState("quiesced") - ScsiLunStateDegraded = ScsiLunState("degraded") - ScsiLunStateLostCommunication = ScsiLunState("lostCommunication") - ScsiLunStateTimeout = ScsiLunState("timeout") -) - -func init() { - t["ScsiLunState"] = reflect.TypeOf((*ScsiLunState)(nil)).Elem() -} - -type ScsiLunType string - -const ( - ScsiLunTypeDisk = ScsiLunType("disk") - ScsiLunTypeTape = ScsiLunType("tape") - ScsiLunTypePrinter = ScsiLunType("printer") - ScsiLunTypeProcessor = ScsiLunType("processor") - ScsiLunTypeWorm = ScsiLunType("worm") - ScsiLunTypeCdrom = ScsiLunType("cdrom") - ScsiLunTypeScanner = ScsiLunType("scanner") - ScsiLunTypeOpticalDevice = ScsiLunType("opticalDevice") - ScsiLunTypeMediaChanger = ScsiLunType("mediaChanger") - ScsiLunTypeCommunications = ScsiLunType("communications") - ScsiLunTypeStorageArrayController = ScsiLunType("storageArrayController") - ScsiLunTypeEnclosure = ScsiLunType("enclosure") - ScsiLunTypeUnknown = ScsiLunType("unknown") -) - -func init() { - t["ScsiLunType"] = reflect.TypeOf((*ScsiLunType)(nil)).Elem() -} - -type ScsiLunVStorageSupportStatus string - -const ( - ScsiLunVStorageSupportStatusVStorageSupported = ScsiLunVStorageSupportStatus("vStorageSupported") - ScsiLunVStorageSupportStatusVStorageUnsupported = ScsiLunVStorageSupportStatus("vStorageUnsupported") - ScsiLunVStorageSupportStatusVStorageUnknown = ScsiLunVStorageSupportStatus("vStorageUnknown") -) - -func init() { - t["ScsiLunVStorageSupportStatus"] = reflect.TypeOf((*ScsiLunVStorageSupportStatus)(nil)).Elem() -} - -type SessionManagerHttpServiceRequestSpecMethod string - -const ( - SessionManagerHttpServiceRequestSpecMethodHttpOptions = SessionManagerHttpServiceRequestSpecMethod("httpOptions") - SessionManagerHttpServiceRequestSpecMethodHttpGet = SessionManagerHttpServiceRequestSpecMethod("httpGet") - SessionManagerHttpServiceRequestSpecMethodHttpHead = SessionManagerHttpServiceRequestSpecMethod("httpHead") - SessionManagerHttpServiceRequestSpecMethodHttpPost = SessionManagerHttpServiceRequestSpecMethod("httpPost") - SessionManagerHttpServiceRequestSpecMethodHttpPut = SessionManagerHttpServiceRequestSpecMethod("httpPut") - SessionManagerHttpServiceRequestSpecMethodHttpDelete = SessionManagerHttpServiceRequestSpecMethod("httpDelete") - SessionManagerHttpServiceRequestSpecMethodHttpTrace = SessionManagerHttpServiceRequestSpecMethod("httpTrace") - SessionManagerHttpServiceRequestSpecMethodHttpConnect = SessionManagerHttpServiceRequestSpecMethod("httpConnect") -) - -func init() { - t["SessionManagerHttpServiceRequestSpecMethod"] = reflect.TypeOf((*SessionManagerHttpServiceRequestSpecMethod)(nil)).Elem() -} - -type SharesLevel string - -const ( - SharesLevelLow = SharesLevel("low") - SharesLevelNormal = SharesLevel("normal") - SharesLevelHigh = SharesLevel("high") - SharesLevelCustom = SharesLevel("custom") -) - -func init() { - t["SharesLevel"] = reflect.TypeOf((*SharesLevel)(nil)).Elem() -} - -type SimpleCommandEncoding string - -const ( - SimpleCommandEncodingCSV = SimpleCommandEncoding("CSV") - SimpleCommandEncodingHEX = SimpleCommandEncoding("HEX") - SimpleCommandEncodingSTRING = SimpleCommandEncoding("STRING") -) - -func init() { - t["SimpleCommandEncoding"] = reflect.TypeOf((*SimpleCommandEncoding)(nil)).Elem() -} - -type SlpDiscoveryMethod string - -const ( - SlpDiscoveryMethodSlpDhcp = SlpDiscoveryMethod("slpDhcp") - SlpDiscoveryMethodSlpAutoUnicast = SlpDiscoveryMethod("slpAutoUnicast") - SlpDiscoveryMethodSlpAutoMulticast = SlpDiscoveryMethod("slpAutoMulticast") - SlpDiscoveryMethodSlpManual = SlpDiscoveryMethod("slpManual") -) - -func init() { - t["SlpDiscoveryMethod"] = reflect.TypeOf((*SlpDiscoveryMethod)(nil)).Elem() -} - -type StateAlarmOperator string - -const ( - StateAlarmOperatorIsEqual = StateAlarmOperator("isEqual") - StateAlarmOperatorIsUnequal = StateAlarmOperator("isUnequal") -) - -func init() { - t["StateAlarmOperator"] = reflect.TypeOf((*StateAlarmOperator)(nil)).Elem() -} - -type StorageDrsPodConfigInfoBehavior string - -const ( - StorageDrsPodConfigInfoBehaviorManual = StorageDrsPodConfigInfoBehavior("manual") - StorageDrsPodConfigInfoBehaviorAutomated = StorageDrsPodConfigInfoBehavior("automated") -) - -func init() { - t["StorageDrsPodConfigInfoBehavior"] = reflect.TypeOf((*StorageDrsPodConfigInfoBehavior)(nil)).Elem() -} - -type StorageDrsSpaceLoadBalanceConfigSpaceThresholdMode string - -const ( - StorageDrsSpaceLoadBalanceConfigSpaceThresholdModeUtilization = StorageDrsSpaceLoadBalanceConfigSpaceThresholdMode("utilization") - StorageDrsSpaceLoadBalanceConfigSpaceThresholdModeFreeSpace = StorageDrsSpaceLoadBalanceConfigSpaceThresholdMode("freeSpace") -) - -func init() { - t["StorageDrsSpaceLoadBalanceConfigSpaceThresholdMode"] = reflect.TypeOf((*StorageDrsSpaceLoadBalanceConfigSpaceThresholdMode)(nil)).Elem() -} - -type StorageIORMThresholdMode string - -const ( - StorageIORMThresholdModeAutomatic = StorageIORMThresholdMode("automatic") - StorageIORMThresholdModeManual = StorageIORMThresholdMode("manual") -) - -func init() { - t["StorageIORMThresholdMode"] = reflect.TypeOf((*StorageIORMThresholdMode)(nil)).Elem() -} - -type StoragePlacementSpecPlacementType string - -const ( - StoragePlacementSpecPlacementTypeCreate = StoragePlacementSpecPlacementType("create") - StoragePlacementSpecPlacementTypeReconfigure = StoragePlacementSpecPlacementType("reconfigure") - StoragePlacementSpecPlacementTypeRelocate = StoragePlacementSpecPlacementType("relocate") - StoragePlacementSpecPlacementTypeClone = StoragePlacementSpecPlacementType("clone") -) - -func init() { - t["StoragePlacementSpecPlacementType"] = reflect.TypeOf((*StoragePlacementSpecPlacementType)(nil)).Elem() -} - -type TaskFilterSpecRecursionOption string - -const ( - TaskFilterSpecRecursionOptionSelf = TaskFilterSpecRecursionOption("self") - TaskFilterSpecRecursionOptionChildren = TaskFilterSpecRecursionOption("children") - TaskFilterSpecRecursionOptionAll = TaskFilterSpecRecursionOption("all") -) - -func init() { - t["TaskFilterSpecRecursionOption"] = reflect.TypeOf((*TaskFilterSpecRecursionOption)(nil)).Elem() -} - -type TaskFilterSpecTimeOption string - -const ( - TaskFilterSpecTimeOptionQueuedTime = TaskFilterSpecTimeOption("queuedTime") - TaskFilterSpecTimeOptionStartedTime = TaskFilterSpecTimeOption("startedTime") - TaskFilterSpecTimeOptionCompletedTime = TaskFilterSpecTimeOption("completedTime") -) - -func init() { - t["TaskFilterSpecTimeOption"] = reflect.TypeOf((*TaskFilterSpecTimeOption)(nil)).Elem() -} - -type TaskInfoState string - -const ( - TaskInfoStateQueued = TaskInfoState("queued") - TaskInfoStateRunning = TaskInfoState("running") - TaskInfoStateSuccess = TaskInfoState("success") - TaskInfoStateError = TaskInfoState("error") -) - -func init() { - t["TaskInfoState"] = reflect.TypeOf((*TaskInfoState)(nil)).Elem() -} - -type ThirdPartyLicenseAssignmentFailedReason string - -const ( - ThirdPartyLicenseAssignmentFailedReasonLicenseAssignmentFailed = ThirdPartyLicenseAssignmentFailedReason("licenseAssignmentFailed") - ThirdPartyLicenseAssignmentFailedReasonModuleNotInstalled = ThirdPartyLicenseAssignmentFailedReason("moduleNotInstalled") -) - -func init() { - t["ThirdPartyLicenseAssignmentFailedReason"] = reflect.TypeOf((*ThirdPartyLicenseAssignmentFailedReason)(nil)).Elem() -} - -type UpgradePolicy string - -const ( - UpgradePolicyManual = UpgradePolicy("manual") - UpgradePolicyUpgradeAtPowerCycle = UpgradePolicy("upgradeAtPowerCycle") -) - -func init() { - t["UpgradePolicy"] = reflect.TypeOf((*UpgradePolicy)(nil)).Elem() -} - -type VAppAutoStartAction string - -const ( - VAppAutoStartActionNone = VAppAutoStartAction("none") - VAppAutoStartActionPowerOn = VAppAutoStartAction("powerOn") - VAppAutoStartActionPowerOff = VAppAutoStartAction("powerOff") - VAppAutoStartActionGuestShutdown = VAppAutoStartAction("guestShutdown") - VAppAutoStartActionSuspend = VAppAutoStartAction("suspend") -) - -func init() { - t["VAppAutoStartAction"] = reflect.TypeOf((*VAppAutoStartAction)(nil)).Elem() -} - -type VAppCloneSpecProvisioningType string - -const ( - VAppCloneSpecProvisioningTypeSameAsSource = VAppCloneSpecProvisioningType("sameAsSource") - VAppCloneSpecProvisioningTypeThin = VAppCloneSpecProvisioningType("thin") - VAppCloneSpecProvisioningTypeThick = VAppCloneSpecProvisioningType("thick") -) - -func init() { - t["VAppCloneSpecProvisioningType"] = reflect.TypeOf((*VAppCloneSpecProvisioningType)(nil)).Elem() -} - -type VAppIPAssignmentInfoAllocationSchemes string - -const ( - VAppIPAssignmentInfoAllocationSchemesDhcp = VAppIPAssignmentInfoAllocationSchemes("dhcp") - VAppIPAssignmentInfoAllocationSchemesOvfenv = VAppIPAssignmentInfoAllocationSchemes("ovfenv") -) - -func init() { - t["VAppIPAssignmentInfoAllocationSchemes"] = reflect.TypeOf((*VAppIPAssignmentInfoAllocationSchemes)(nil)).Elem() -} - -type VAppIPAssignmentInfoIpAllocationPolicy string - -const ( - VAppIPAssignmentInfoIpAllocationPolicyDhcpPolicy = VAppIPAssignmentInfoIpAllocationPolicy("dhcpPolicy") - VAppIPAssignmentInfoIpAllocationPolicyTransientPolicy = VAppIPAssignmentInfoIpAllocationPolicy("transientPolicy") - VAppIPAssignmentInfoIpAllocationPolicyFixedPolicy = VAppIPAssignmentInfoIpAllocationPolicy("fixedPolicy") - VAppIPAssignmentInfoIpAllocationPolicyFixedAllocatedPolicy = VAppIPAssignmentInfoIpAllocationPolicy("fixedAllocatedPolicy") -) - -func init() { - t["VAppIPAssignmentInfoIpAllocationPolicy"] = reflect.TypeOf((*VAppIPAssignmentInfoIpAllocationPolicy)(nil)).Elem() -} - -type VAppIPAssignmentInfoProtocols string - -const ( - VAppIPAssignmentInfoProtocolsIPv4 = VAppIPAssignmentInfoProtocols("IPv4") - VAppIPAssignmentInfoProtocolsIPv6 = VAppIPAssignmentInfoProtocols("IPv6") -) - -func init() { - t["VAppIPAssignmentInfoProtocols"] = reflect.TypeOf((*VAppIPAssignmentInfoProtocols)(nil)).Elem() -} - -type VFlashModuleNotSupportedReason string - -const ( - VFlashModuleNotSupportedReasonCacheModeNotSupported = VFlashModuleNotSupportedReason("CacheModeNotSupported") - VFlashModuleNotSupportedReasonCacheConsistencyTypeNotSupported = VFlashModuleNotSupportedReason("CacheConsistencyTypeNotSupported") - VFlashModuleNotSupportedReasonCacheBlockSizeNotSupported = VFlashModuleNotSupportedReason("CacheBlockSizeNotSupported") - VFlashModuleNotSupportedReasonCacheReservationNotSupported = VFlashModuleNotSupportedReason("CacheReservationNotSupported") - VFlashModuleNotSupportedReasonDiskSizeNotSupported = VFlashModuleNotSupportedReason("DiskSizeNotSupported") -) - -func init() { - t["VFlashModuleNotSupportedReason"] = reflect.TypeOf((*VFlashModuleNotSupportedReason)(nil)).Elem() -} - -type VMotionCompatibilityType string - -const ( - VMotionCompatibilityTypeCpu = VMotionCompatibilityType("cpu") - VMotionCompatibilityTypeSoftware = VMotionCompatibilityType("software") -) - -func init() { - t["VMotionCompatibilityType"] = reflect.TypeOf((*VMotionCompatibilityType)(nil)).Elem() -} - -type VMwareDVSTeamingMatchStatus string - -const ( - VMwareDVSTeamingMatchStatusIphashMatch = VMwareDVSTeamingMatchStatus("iphashMatch") - VMwareDVSTeamingMatchStatusNonIphashMatch = VMwareDVSTeamingMatchStatus("nonIphashMatch") - VMwareDVSTeamingMatchStatusIphashMismatch = VMwareDVSTeamingMatchStatus("iphashMismatch") - VMwareDVSTeamingMatchStatusNonIphashMismatch = VMwareDVSTeamingMatchStatus("nonIphashMismatch") -) - -func init() { - t["VMwareDVSTeamingMatchStatus"] = reflect.TypeOf((*VMwareDVSTeamingMatchStatus)(nil)).Elem() -} - -type VMwareDVSVspanSessionType string - -const ( - VMwareDVSVspanSessionTypeMixedDestMirror = VMwareDVSVspanSessionType("mixedDestMirror") - VMwareDVSVspanSessionTypeDvPortMirror = VMwareDVSVspanSessionType("dvPortMirror") - VMwareDVSVspanSessionTypeRemoteMirrorSource = VMwareDVSVspanSessionType("remoteMirrorSource") - VMwareDVSVspanSessionTypeRemoteMirrorDest = VMwareDVSVspanSessionType("remoteMirrorDest") - VMwareDVSVspanSessionTypeEncapsulatedRemoteMirrorSource = VMwareDVSVspanSessionType("encapsulatedRemoteMirrorSource") -) - -func init() { - t["VMwareDVSVspanSessionType"] = reflect.TypeOf((*VMwareDVSVspanSessionType)(nil)).Elem() -} - -type VMwareDvsLacpApiVersion string - -const ( - VMwareDvsLacpApiVersionSingleLag = VMwareDvsLacpApiVersion("singleLag") - VMwareDvsLacpApiVersionMultipleLag = VMwareDvsLacpApiVersion("multipleLag") -) - -func init() { - t["VMwareDvsLacpApiVersion"] = reflect.TypeOf((*VMwareDvsLacpApiVersion)(nil)).Elem() -} - -type VMwareDvsLacpLoadBalanceAlgorithm string - -const ( - VMwareDvsLacpLoadBalanceAlgorithmSrcMac = VMwareDvsLacpLoadBalanceAlgorithm("srcMac") - VMwareDvsLacpLoadBalanceAlgorithmDestMac = VMwareDvsLacpLoadBalanceAlgorithm("destMac") - VMwareDvsLacpLoadBalanceAlgorithmSrcDestMac = VMwareDvsLacpLoadBalanceAlgorithm("srcDestMac") - VMwareDvsLacpLoadBalanceAlgorithmDestIpVlan = VMwareDvsLacpLoadBalanceAlgorithm("destIpVlan") - VMwareDvsLacpLoadBalanceAlgorithmSrcIpVlan = VMwareDvsLacpLoadBalanceAlgorithm("srcIpVlan") - VMwareDvsLacpLoadBalanceAlgorithmSrcDestIpVlan = VMwareDvsLacpLoadBalanceAlgorithm("srcDestIpVlan") - VMwareDvsLacpLoadBalanceAlgorithmDestTcpUdpPort = VMwareDvsLacpLoadBalanceAlgorithm("destTcpUdpPort") - VMwareDvsLacpLoadBalanceAlgorithmSrcTcpUdpPort = VMwareDvsLacpLoadBalanceAlgorithm("srcTcpUdpPort") - VMwareDvsLacpLoadBalanceAlgorithmSrcDestTcpUdpPort = VMwareDvsLacpLoadBalanceAlgorithm("srcDestTcpUdpPort") - VMwareDvsLacpLoadBalanceAlgorithmDestIpTcpUdpPort = VMwareDvsLacpLoadBalanceAlgorithm("destIpTcpUdpPort") - VMwareDvsLacpLoadBalanceAlgorithmSrcIpTcpUdpPort = VMwareDvsLacpLoadBalanceAlgorithm("srcIpTcpUdpPort") - VMwareDvsLacpLoadBalanceAlgorithmSrcDestIpTcpUdpPort = VMwareDvsLacpLoadBalanceAlgorithm("srcDestIpTcpUdpPort") - VMwareDvsLacpLoadBalanceAlgorithmDestIpTcpUdpPortVlan = VMwareDvsLacpLoadBalanceAlgorithm("destIpTcpUdpPortVlan") - VMwareDvsLacpLoadBalanceAlgorithmSrcIpTcpUdpPortVlan = VMwareDvsLacpLoadBalanceAlgorithm("srcIpTcpUdpPortVlan") - VMwareDvsLacpLoadBalanceAlgorithmSrcDestIpTcpUdpPortVlan = VMwareDvsLacpLoadBalanceAlgorithm("srcDestIpTcpUdpPortVlan") - VMwareDvsLacpLoadBalanceAlgorithmDestIp = VMwareDvsLacpLoadBalanceAlgorithm("destIp") - VMwareDvsLacpLoadBalanceAlgorithmSrcIp = VMwareDvsLacpLoadBalanceAlgorithm("srcIp") - VMwareDvsLacpLoadBalanceAlgorithmSrcDestIp = VMwareDvsLacpLoadBalanceAlgorithm("srcDestIp") - VMwareDvsLacpLoadBalanceAlgorithmVlan = VMwareDvsLacpLoadBalanceAlgorithm("vlan") - VMwareDvsLacpLoadBalanceAlgorithmSrcPortId = VMwareDvsLacpLoadBalanceAlgorithm("srcPortId") -) - -func init() { - t["VMwareDvsLacpLoadBalanceAlgorithm"] = reflect.TypeOf((*VMwareDvsLacpLoadBalanceAlgorithm)(nil)).Elem() -} - -type VMwareDvsMulticastFilteringMode string - -const ( - VMwareDvsMulticastFilteringModeLegacyFiltering = VMwareDvsMulticastFilteringMode("legacyFiltering") - VMwareDvsMulticastFilteringModeSnooping = VMwareDvsMulticastFilteringMode("snooping") -) - -func init() { - t["VMwareDvsMulticastFilteringMode"] = reflect.TypeOf((*VMwareDvsMulticastFilteringMode)(nil)).Elem() -} - -type VMwareUplinkLacpMode string - -const ( - VMwareUplinkLacpModeActive = VMwareUplinkLacpMode("active") - VMwareUplinkLacpModePassive = VMwareUplinkLacpMode("passive") -) - -func init() { - t["VMwareUplinkLacpMode"] = reflect.TypeOf((*VMwareUplinkLacpMode)(nil)).Elem() -} - -type ValidateMigrationTestType string - -const ( - ValidateMigrationTestTypeSourceTests = ValidateMigrationTestType("sourceTests") - ValidateMigrationTestTypeCompatibilityTests = ValidateMigrationTestType("compatibilityTests") - ValidateMigrationTestTypeDiskAccessibilityTests = ValidateMigrationTestType("diskAccessibilityTests") - ValidateMigrationTestTypeResourceTests = ValidateMigrationTestType("resourceTests") -) - -func init() { - t["ValidateMigrationTestType"] = reflect.TypeOf((*ValidateMigrationTestType)(nil)).Elem() -} - -type VirtualAppVAppState string - -const ( - VirtualAppVAppStateStarted = VirtualAppVAppState("started") - VirtualAppVAppStateStopped = VirtualAppVAppState("stopped") - VirtualAppVAppStateStarting = VirtualAppVAppState("starting") - VirtualAppVAppStateStopping = VirtualAppVAppState("stopping") -) - -func init() { - t["VirtualAppVAppState"] = reflect.TypeOf((*VirtualAppVAppState)(nil)).Elem() -} - -type VirtualDeviceConfigSpecFileOperation string - -const ( - VirtualDeviceConfigSpecFileOperationCreate = VirtualDeviceConfigSpecFileOperation("create") - VirtualDeviceConfigSpecFileOperationDestroy = VirtualDeviceConfigSpecFileOperation("destroy") - VirtualDeviceConfigSpecFileOperationReplace = VirtualDeviceConfigSpecFileOperation("replace") -) - -func init() { - t["VirtualDeviceConfigSpecFileOperation"] = reflect.TypeOf((*VirtualDeviceConfigSpecFileOperation)(nil)).Elem() -} - -type VirtualDeviceConfigSpecOperation string - -const ( - VirtualDeviceConfigSpecOperationAdd = VirtualDeviceConfigSpecOperation("add") - VirtualDeviceConfigSpecOperationRemove = VirtualDeviceConfigSpecOperation("remove") - VirtualDeviceConfigSpecOperationEdit = VirtualDeviceConfigSpecOperation("edit") -) - -func init() { - t["VirtualDeviceConfigSpecOperation"] = reflect.TypeOf((*VirtualDeviceConfigSpecOperation)(nil)).Elem() -} - -type VirtualDeviceConnectInfoStatus string - -const ( - VirtualDeviceConnectInfoStatusOk = VirtualDeviceConnectInfoStatus("ok") - VirtualDeviceConnectInfoStatusRecoverableError = VirtualDeviceConnectInfoStatus("recoverableError") - VirtualDeviceConnectInfoStatusUnrecoverableError = VirtualDeviceConnectInfoStatus("unrecoverableError") - VirtualDeviceConnectInfoStatusUntried = VirtualDeviceConnectInfoStatus("untried") -) - -func init() { - t["VirtualDeviceConnectInfoStatus"] = reflect.TypeOf((*VirtualDeviceConnectInfoStatus)(nil)).Elem() -} - -type VirtualDeviceFileExtension string - -const ( - VirtualDeviceFileExtensionIso = VirtualDeviceFileExtension("iso") - VirtualDeviceFileExtensionFlp = VirtualDeviceFileExtension("flp") - VirtualDeviceFileExtensionVmdk = VirtualDeviceFileExtension("vmdk") - VirtualDeviceFileExtensionDsk = VirtualDeviceFileExtension("dsk") - VirtualDeviceFileExtensionRdm = VirtualDeviceFileExtension("rdm") -) - -func init() { - t["VirtualDeviceFileExtension"] = reflect.TypeOf((*VirtualDeviceFileExtension)(nil)).Elem() -} - -type VirtualDeviceURIBackingOptionDirection string - -const ( - VirtualDeviceURIBackingOptionDirectionServer = VirtualDeviceURIBackingOptionDirection("server") - VirtualDeviceURIBackingOptionDirectionClient = VirtualDeviceURIBackingOptionDirection("client") -) - -func init() { - t["VirtualDeviceURIBackingOptionDirection"] = reflect.TypeOf((*VirtualDeviceURIBackingOptionDirection)(nil)).Elem() -} - -type VirtualDiskAdapterType string - -const ( - VirtualDiskAdapterTypeIde = VirtualDiskAdapterType("ide") - VirtualDiskAdapterTypeBusLogic = VirtualDiskAdapterType("busLogic") - VirtualDiskAdapterTypeLsiLogic = VirtualDiskAdapterType("lsiLogic") -) - -func init() { - t["VirtualDiskAdapterType"] = reflect.TypeOf((*VirtualDiskAdapterType)(nil)).Elem() -} - -type VirtualDiskCompatibilityMode string - -const ( - VirtualDiskCompatibilityModeVirtualMode = VirtualDiskCompatibilityMode("virtualMode") - VirtualDiskCompatibilityModePhysicalMode = VirtualDiskCompatibilityMode("physicalMode") -) - -func init() { - t["VirtualDiskCompatibilityMode"] = reflect.TypeOf((*VirtualDiskCompatibilityMode)(nil)).Elem() -} - -type VirtualDiskDeltaDiskFormat string - -const ( - VirtualDiskDeltaDiskFormatRedoLogFormat = VirtualDiskDeltaDiskFormat("redoLogFormat") - VirtualDiskDeltaDiskFormatNativeFormat = VirtualDiskDeltaDiskFormat("nativeFormat") - VirtualDiskDeltaDiskFormatSeSparseFormat = VirtualDiskDeltaDiskFormat("seSparseFormat") -) - -func init() { - t["VirtualDiskDeltaDiskFormat"] = reflect.TypeOf((*VirtualDiskDeltaDiskFormat)(nil)).Elem() -} - -type VirtualDiskDeltaDiskFormatVariant string - -const ( - VirtualDiskDeltaDiskFormatVariantVmfsSparseVariant = VirtualDiskDeltaDiskFormatVariant("vmfsSparseVariant") - VirtualDiskDeltaDiskFormatVariantVsanSparseVariant = VirtualDiskDeltaDiskFormatVariant("vsanSparseVariant") -) - -func init() { - t["VirtualDiskDeltaDiskFormatVariant"] = reflect.TypeOf((*VirtualDiskDeltaDiskFormatVariant)(nil)).Elem() -} - -type VirtualDiskMode string - -const ( - VirtualDiskModePersistent = VirtualDiskMode("persistent") - VirtualDiskModeNonpersistent = VirtualDiskMode("nonpersistent") - VirtualDiskModeUndoable = VirtualDiskMode("undoable") - VirtualDiskModeIndependent_persistent = VirtualDiskMode("independent_persistent") - VirtualDiskModeIndependent_nonpersistent = VirtualDiskMode("independent_nonpersistent") - VirtualDiskModeAppend = VirtualDiskMode("append") -) - -func init() { - t["VirtualDiskMode"] = reflect.TypeOf((*VirtualDiskMode)(nil)).Elem() -} - -type VirtualDiskSharing string - -const ( - VirtualDiskSharingSharingNone = VirtualDiskSharing("sharingNone") - VirtualDiskSharingSharingMultiWriter = VirtualDiskSharing("sharingMultiWriter") -) - -func init() { - t["VirtualDiskSharing"] = reflect.TypeOf((*VirtualDiskSharing)(nil)).Elem() -} - -type VirtualDiskType string - -const ( - VirtualDiskTypePreallocated = VirtualDiskType("preallocated") - VirtualDiskTypeThin = VirtualDiskType("thin") - VirtualDiskTypeSeSparse = VirtualDiskType("seSparse") - VirtualDiskTypeRdm = VirtualDiskType("rdm") - VirtualDiskTypeRdmp = VirtualDiskType("rdmp") - VirtualDiskTypeRaw = VirtualDiskType("raw") - VirtualDiskTypeDelta = VirtualDiskType("delta") - VirtualDiskTypeSparse2Gb = VirtualDiskType("sparse2Gb") - VirtualDiskTypeThick2Gb = VirtualDiskType("thick2Gb") - VirtualDiskTypeEagerZeroedThick = VirtualDiskType("eagerZeroedThick") - VirtualDiskTypeSparseMonolithic = VirtualDiskType("sparseMonolithic") - VirtualDiskTypeFlatMonolithic = VirtualDiskType("flatMonolithic") - VirtualDiskTypeThick = VirtualDiskType("thick") -) - -func init() { - t["VirtualDiskType"] = reflect.TypeOf((*VirtualDiskType)(nil)).Elem() -} - -type VirtualDiskVFlashCacheConfigInfoCacheConsistencyType string - -const ( - VirtualDiskVFlashCacheConfigInfoCacheConsistencyTypeStrong = VirtualDiskVFlashCacheConfigInfoCacheConsistencyType("strong") - VirtualDiskVFlashCacheConfigInfoCacheConsistencyTypeWeak = VirtualDiskVFlashCacheConfigInfoCacheConsistencyType("weak") -) - -func init() { - t["VirtualDiskVFlashCacheConfigInfoCacheConsistencyType"] = reflect.TypeOf((*VirtualDiskVFlashCacheConfigInfoCacheConsistencyType)(nil)).Elem() -} - -type VirtualDiskVFlashCacheConfigInfoCacheMode string - -const ( - VirtualDiskVFlashCacheConfigInfoCacheModeWrite_thru = VirtualDiskVFlashCacheConfigInfoCacheMode("write_thru") - VirtualDiskVFlashCacheConfigInfoCacheModeWrite_back = VirtualDiskVFlashCacheConfigInfoCacheMode("write_back") -) - -func init() { - t["VirtualDiskVFlashCacheConfigInfoCacheMode"] = reflect.TypeOf((*VirtualDiskVFlashCacheConfigInfoCacheMode)(nil)).Elem() -} - -type VirtualEthernetCardLegacyNetworkDeviceName string - -const ( - VirtualEthernetCardLegacyNetworkDeviceNameBridged = VirtualEthernetCardLegacyNetworkDeviceName("bridged") - VirtualEthernetCardLegacyNetworkDeviceNameNat = VirtualEthernetCardLegacyNetworkDeviceName("nat") - VirtualEthernetCardLegacyNetworkDeviceNameHostonly = VirtualEthernetCardLegacyNetworkDeviceName("hostonly") -) - -func init() { - t["VirtualEthernetCardLegacyNetworkDeviceName"] = reflect.TypeOf((*VirtualEthernetCardLegacyNetworkDeviceName)(nil)).Elem() -} - -type VirtualEthernetCardMacType string - -const ( - VirtualEthernetCardMacTypeManual = VirtualEthernetCardMacType("manual") - VirtualEthernetCardMacTypeGenerated = VirtualEthernetCardMacType("generated") - VirtualEthernetCardMacTypeAssigned = VirtualEthernetCardMacType("assigned") -) - -func init() { - t["VirtualEthernetCardMacType"] = reflect.TypeOf((*VirtualEthernetCardMacType)(nil)).Elem() -} - -type VirtualMachineAppHeartbeatStatusType string - -const ( - VirtualMachineAppHeartbeatStatusTypeAppStatusGray = VirtualMachineAppHeartbeatStatusType("appStatusGray") - VirtualMachineAppHeartbeatStatusTypeAppStatusGreen = VirtualMachineAppHeartbeatStatusType("appStatusGreen") - VirtualMachineAppHeartbeatStatusTypeAppStatusRed = VirtualMachineAppHeartbeatStatusType("appStatusRed") -) - -func init() { - t["VirtualMachineAppHeartbeatStatusType"] = reflect.TypeOf((*VirtualMachineAppHeartbeatStatusType)(nil)).Elem() -} - -type VirtualMachineBootOptionsNetworkBootProtocolType string - -const ( - VirtualMachineBootOptionsNetworkBootProtocolTypeIpv4 = VirtualMachineBootOptionsNetworkBootProtocolType("ipv4") - VirtualMachineBootOptionsNetworkBootProtocolTypeIpv6 = VirtualMachineBootOptionsNetworkBootProtocolType("ipv6") -) - -func init() { - t["VirtualMachineBootOptionsNetworkBootProtocolType"] = reflect.TypeOf((*VirtualMachineBootOptionsNetworkBootProtocolType)(nil)).Elem() -} - -type VirtualMachineConfigInfoNpivWwnType string - -const ( - VirtualMachineConfigInfoNpivWwnTypeVc = VirtualMachineConfigInfoNpivWwnType("vc") - VirtualMachineConfigInfoNpivWwnTypeHost = VirtualMachineConfigInfoNpivWwnType("host") - VirtualMachineConfigInfoNpivWwnTypeExternal = VirtualMachineConfigInfoNpivWwnType("external") -) - -func init() { - t["VirtualMachineConfigInfoNpivWwnType"] = reflect.TypeOf((*VirtualMachineConfigInfoNpivWwnType)(nil)).Elem() -} - -type VirtualMachineConfigInfoSwapPlacementType string - -const ( - VirtualMachineConfigInfoSwapPlacementTypeInherit = VirtualMachineConfigInfoSwapPlacementType("inherit") - VirtualMachineConfigInfoSwapPlacementTypeVmDirectory = VirtualMachineConfigInfoSwapPlacementType("vmDirectory") - VirtualMachineConfigInfoSwapPlacementTypeHostLocal = VirtualMachineConfigInfoSwapPlacementType("hostLocal") -) - -func init() { - t["VirtualMachineConfigInfoSwapPlacementType"] = reflect.TypeOf((*VirtualMachineConfigInfoSwapPlacementType)(nil)).Elem() -} - -type VirtualMachineConfigSpecNpivWwnOp string - -const ( - VirtualMachineConfigSpecNpivWwnOpGenerate = VirtualMachineConfigSpecNpivWwnOp("generate") - VirtualMachineConfigSpecNpivWwnOpSet = VirtualMachineConfigSpecNpivWwnOp("set") - VirtualMachineConfigSpecNpivWwnOpRemove = VirtualMachineConfigSpecNpivWwnOp("remove") - VirtualMachineConfigSpecNpivWwnOpExtend = VirtualMachineConfigSpecNpivWwnOp("extend") -) - -func init() { - t["VirtualMachineConfigSpecNpivWwnOp"] = reflect.TypeOf((*VirtualMachineConfigSpecNpivWwnOp)(nil)).Elem() -} - -type VirtualMachineConnectionState string - -const ( - VirtualMachineConnectionStateConnected = VirtualMachineConnectionState("connected") - VirtualMachineConnectionStateDisconnected = VirtualMachineConnectionState("disconnected") - VirtualMachineConnectionStateOrphaned = VirtualMachineConnectionState("orphaned") - VirtualMachineConnectionStateInaccessible = VirtualMachineConnectionState("inaccessible") - VirtualMachineConnectionStateInvalid = VirtualMachineConnectionState("invalid") -) - -func init() { - t["VirtualMachineConnectionState"] = reflect.TypeOf((*VirtualMachineConnectionState)(nil)).Elem() -} - -type VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonOther string - -const ( - VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonOtherVmNptIncompatibleHost = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonOther("vmNptIncompatibleHost") - VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonOtherVmNptIncompatibleNetwork = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonOther("vmNptIncompatibleNetwork") -) - -func init() { - t["VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonOther"] = reflect.TypeOf((*VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonOther)(nil)).Elem() -} - -type VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm string - -const ( - VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVmVmNptIncompatibleGuest = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm("vmNptIncompatibleGuest") - VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVmVmNptIncompatibleGuestDriver = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm("vmNptIncompatibleGuestDriver") - VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVmVmNptIncompatibleAdapterType = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm("vmNptIncompatibleAdapterType") - VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVmVmNptDisabledOrDisconnectedAdapter = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm("vmNptDisabledOrDisconnectedAdapter") - VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVmVmNptIncompatibleAdapterFeatures = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm("vmNptIncompatibleAdapterFeatures") - VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVmVmNptIncompatibleBackingType = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm("vmNptIncompatibleBackingType") - VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVmVmNptInsufficientMemoryReservation = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm("vmNptInsufficientMemoryReservation") - VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVmVmNptFaultToleranceOrRecordReplayConfigured = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm("vmNptFaultToleranceOrRecordReplayConfigured") - VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVmVmNptConflictingIOChainConfigured = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm("vmNptConflictingIOChainConfigured") - VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVmVmNptMonitorBlocks = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm("vmNptMonitorBlocks") - VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVmVmNptConflictingOperationInProgress = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm("vmNptConflictingOperationInProgress") - VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVmVmNptRuntimeError = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm("vmNptRuntimeError") - VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVmVmNptOutOfIntrVector = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm("vmNptOutOfIntrVector") - VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVmVmNptVMCIActive = VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm("vmNptVMCIActive") -) - -func init() { - t["VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm"] = reflect.TypeOf((*VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm)(nil)).Elem() -} - -type VirtualMachineFaultToleranceState string - -const ( - VirtualMachineFaultToleranceStateNotConfigured = VirtualMachineFaultToleranceState("notConfigured") - VirtualMachineFaultToleranceStateDisabled = VirtualMachineFaultToleranceState("disabled") - VirtualMachineFaultToleranceStateEnabled = VirtualMachineFaultToleranceState("enabled") - VirtualMachineFaultToleranceStateNeedSecondary = VirtualMachineFaultToleranceState("needSecondary") - VirtualMachineFaultToleranceStateStarting = VirtualMachineFaultToleranceState("starting") - VirtualMachineFaultToleranceStateRunning = VirtualMachineFaultToleranceState("running") -) - -func init() { - t["VirtualMachineFaultToleranceState"] = reflect.TypeOf((*VirtualMachineFaultToleranceState)(nil)).Elem() -} - -type VirtualMachineFaultToleranceType string - -const ( - VirtualMachineFaultToleranceTypeUnset = VirtualMachineFaultToleranceType("unset") - VirtualMachineFaultToleranceTypeRecordReplay = VirtualMachineFaultToleranceType("recordReplay") - VirtualMachineFaultToleranceTypeCheckpointing = VirtualMachineFaultToleranceType("checkpointing") -) - -func init() { - t["VirtualMachineFaultToleranceType"] = reflect.TypeOf((*VirtualMachineFaultToleranceType)(nil)).Elem() -} - -type VirtualMachineFileLayoutExFileType string - -const ( - VirtualMachineFileLayoutExFileTypeConfig = VirtualMachineFileLayoutExFileType("config") - VirtualMachineFileLayoutExFileTypeExtendedConfig = VirtualMachineFileLayoutExFileType("extendedConfig") - VirtualMachineFileLayoutExFileTypeDiskDescriptor = VirtualMachineFileLayoutExFileType("diskDescriptor") - VirtualMachineFileLayoutExFileTypeDiskExtent = VirtualMachineFileLayoutExFileType("diskExtent") - VirtualMachineFileLayoutExFileTypeDigestDescriptor = VirtualMachineFileLayoutExFileType("digestDescriptor") - VirtualMachineFileLayoutExFileTypeDigestExtent = VirtualMachineFileLayoutExFileType("digestExtent") - VirtualMachineFileLayoutExFileTypeDiskReplicationState = VirtualMachineFileLayoutExFileType("diskReplicationState") - VirtualMachineFileLayoutExFileTypeLog = VirtualMachineFileLayoutExFileType("log") - VirtualMachineFileLayoutExFileTypeStat = VirtualMachineFileLayoutExFileType("stat") - VirtualMachineFileLayoutExFileTypeNamespaceData = VirtualMachineFileLayoutExFileType("namespaceData") - VirtualMachineFileLayoutExFileTypeNvram = VirtualMachineFileLayoutExFileType("nvram") - VirtualMachineFileLayoutExFileTypeSnapshotData = VirtualMachineFileLayoutExFileType("snapshotData") - VirtualMachineFileLayoutExFileTypeSnapshotMemory = VirtualMachineFileLayoutExFileType("snapshotMemory") - VirtualMachineFileLayoutExFileTypeSnapshotList = VirtualMachineFileLayoutExFileType("snapshotList") - VirtualMachineFileLayoutExFileTypeSnapshotManifestList = VirtualMachineFileLayoutExFileType("snapshotManifestList") - VirtualMachineFileLayoutExFileTypeSuspend = VirtualMachineFileLayoutExFileType("suspend") - VirtualMachineFileLayoutExFileTypeSuspendMemory = VirtualMachineFileLayoutExFileType("suspendMemory") - VirtualMachineFileLayoutExFileTypeSwap = VirtualMachineFileLayoutExFileType("swap") - VirtualMachineFileLayoutExFileTypeUwswap = VirtualMachineFileLayoutExFileType("uwswap") - VirtualMachineFileLayoutExFileTypeCore = VirtualMachineFileLayoutExFileType("core") - VirtualMachineFileLayoutExFileTypeScreenshot = VirtualMachineFileLayoutExFileType("screenshot") - VirtualMachineFileLayoutExFileTypeFtMetadata = VirtualMachineFileLayoutExFileType("ftMetadata") - VirtualMachineFileLayoutExFileTypeGuestCustomization = VirtualMachineFileLayoutExFileType("guestCustomization") -) - -func init() { - t["VirtualMachineFileLayoutExFileType"] = reflect.TypeOf((*VirtualMachineFileLayoutExFileType)(nil)).Elem() -} - -type VirtualMachineFlagInfoMonitorType string - -const ( - VirtualMachineFlagInfoMonitorTypeRelease = VirtualMachineFlagInfoMonitorType("release") - VirtualMachineFlagInfoMonitorTypeDebug = VirtualMachineFlagInfoMonitorType("debug") - VirtualMachineFlagInfoMonitorTypeStats = VirtualMachineFlagInfoMonitorType("stats") -) - -func init() { - t["VirtualMachineFlagInfoMonitorType"] = reflect.TypeOf((*VirtualMachineFlagInfoMonitorType)(nil)).Elem() -} - -type VirtualMachineFlagInfoVirtualExecUsage string - -const ( - VirtualMachineFlagInfoVirtualExecUsageHvAuto = VirtualMachineFlagInfoVirtualExecUsage("hvAuto") - VirtualMachineFlagInfoVirtualExecUsageHvOn = VirtualMachineFlagInfoVirtualExecUsage("hvOn") - VirtualMachineFlagInfoVirtualExecUsageHvOff = VirtualMachineFlagInfoVirtualExecUsage("hvOff") -) - -func init() { - t["VirtualMachineFlagInfoVirtualExecUsage"] = reflect.TypeOf((*VirtualMachineFlagInfoVirtualExecUsage)(nil)).Elem() -} - -type VirtualMachineFlagInfoVirtualMmuUsage string - -const ( - VirtualMachineFlagInfoVirtualMmuUsageAutomatic = VirtualMachineFlagInfoVirtualMmuUsage("automatic") - VirtualMachineFlagInfoVirtualMmuUsageOn = VirtualMachineFlagInfoVirtualMmuUsage("on") - VirtualMachineFlagInfoVirtualMmuUsageOff = VirtualMachineFlagInfoVirtualMmuUsage("off") -) - -func init() { - t["VirtualMachineFlagInfoVirtualMmuUsage"] = reflect.TypeOf((*VirtualMachineFlagInfoVirtualMmuUsage)(nil)).Elem() -} - -type VirtualMachineForkConfigInfoChildType string - -const ( - VirtualMachineForkConfigInfoChildTypeNone = VirtualMachineForkConfigInfoChildType("none") - VirtualMachineForkConfigInfoChildTypePersistent = VirtualMachineForkConfigInfoChildType("persistent") - VirtualMachineForkConfigInfoChildTypeNonpersistent = VirtualMachineForkConfigInfoChildType("nonpersistent") -) - -func init() { - t["VirtualMachineForkConfigInfoChildType"] = reflect.TypeOf((*VirtualMachineForkConfigInfoChildType)(nil)).Elem() -} - -type VirtualMachineGuestOsFamily string - -const ( - VirtualMachineGuestOsFamilyWindowsGuest = VirtualMachineGuestOsFamily("windowsGuest") - VirtualMachineGuestOsFamilyLinuxGuest = VirtualMachineGuestOsFamily("linuxGuest") - VirtualMachineGuestOsFamilyNetwareGuest = VirtualMachineGuestOsFamily("netwareGuest") - VirtualMachineGuestOsFamilySolarisGuest = VirtualMachineGuestOsFamily("solarisGuest") - VirtualMachineGuestOsFamilyDarwinGuestFamily = VirtualMachineGuestOsFamily("darwinGuestFamily") - VirtualMachineGuestOsFamilyOtherGuestFamily = VirtualMachineGuestOsFamily("otherGuestFamily") -) - -func init() { - t["VirtualMachineGuestOsFamily"] = reflect.TypeOf((*VirtualMachineGuestOsFamily)(nil)).Elem() -} - -type VirtualMachineGuestOsIdentifier string - -const ( - VirtualMachineGuestOsIdentifierDosGuest = VirtualMachineGuestOsIdentifier("dosGuest") - VirtualMachineGuestOsIdentifierWin31Guest = VirtualMachineGuestOsIdentifier("win31Guest") - VirtualMachineGuestOsIdentifierWin95Guest = VirtualMachineGuestOsIdentifier("win95Guest") - VirtualMachineGuestOsIdentifierWin98Guest = VirtualMachineGuestOsIdentifier("win98Guest") - VirtualMachineGuestOsIdentifierWinMeGuest = VirtualMachineGuestOsIdentifier("winMeGuest") - VirtualMachineGuestOsIdentifierWinNTGuest = VirtualMachineGuestOsIdentifier("winNTGuest") - VirtualMachineGuestOsIdentifierWin2000ProGuest = VirtualMachineGuestOsIdentifier("win2000ProGuest") - VirtualMachineGuestOsIdentifierWin2000ServGuest = VirtualMachineGuestOsIdentifier("win2000ServGuest") - VirtualMachineGuestOsIdentifierWin2000AdvServGuest = VirtualMachineGuestOsIdentifier("win2000AdvServGuest") - VirtualMachineGuestOsIdentifierWinXPHomeGuest = VirtualMachineGuestOsIdentifier("winXPHomeGuest") - VirtualMachineGuestOsIdentifierWinXPProGuest = VirtualMachineGuestOsIdentifier("winXPProGuest") - VirtualMachineGuestOsIdentifierWinXPPro64Guest = VirtualMachineGuestOsIdentifier("winXPPro64Guest") - VirtualMachineGuestOsIdentifierWinNetWebGuest = VirtualMachineGuestOsIdentifier("winNetWebGuest") - VirtualMachineGuestOsIdentifierWinNetStandardGuest = VirtualMachineGuestOsIdentifier("winNetStandardGuest") - VirtualMachineGuestOsIdentifierWinNetEnterpriseGuest = VirtualMachineGuestOsIdentifier("winNetEnterpriseGuest") - VirtualMachineGuestOsIdentifierWinNetDatacenterGuest = VirtualMachineGuestOsIdentifier("winNetDatacenterGuest") - VirtualMachineGuestOsIdentifierWinNetBusinessGuest = VirtualMachineGuestOsIdentifier("winNetBusinessGuest") - VirtualMachineGuestOsIdentifierWinNetStandard64Guest = VirtualMachineGuestOsIdentifier("winNetStandard64Guest") - VirtualMachineGuestOsIdentifierWinNetEnterprise64Guest = VirtualMachineGuestOsIdentifier("winNetEnterprise64Guest") - VirtualMachineGuestOsIdentifierWinLonghornGuest = VirtualMachineGuestOsIdentifier("winLonghornGuest") - VirtualMachineGuestOsIdentifierWinLonghorn64Guest = VirtualMachineGuestOsIdentifier("winLonghorn64Guest") - VirtualMachineGuestOsIdentifierWinNetDatacenter64Guest = VirtualMachineGuestOsIdentifier("winNetDatacenter64Guest") - VirtualMachineGuestOsIdentifierWinVistaGuest = VirtualMachineGuestOsIdentifier("winVistaGuest") - VirtualMachineGuestOsIdentifierWinVista64Guest = VirtualMachineGuestOsIdentifier("winVista64Guest") - VirtualMachineGuestOsIdentifierWindows7Guest = VirtualMachineGuestOsIdentifier("windows7Guest") - VirtualMachineGuestOsIdentifierWindows7_64Guest = VirtualMachineGuestOsIdentifier("windows7_64Guest") - VirtualMachineGuestOsIdentifierWindows7Server64Guest = VirtualMachineGuestOsIdentifier("windows7Server64Guest") - VirtualMachineGuestOsIdentifierWindows8Guest = VirtualMachineGuestOsIdentifier("windows8Guest") - VirtualMachineGuestOsIdentifierWindows8_64Guest = VirtualMachineGuestOsIdentifier("windows8_64Guest") - VirtualMachineGuestOsIdentifierWindows8Server64Guest = VirtualMachineGuestOsIdentifier("windows8Server64Guest") - VirtualMachineGuestOsIdentifierWindows9Guest = VirtualMachineGuestOsIdentifier("windows9Guest") - VirtualMachineGuestOsIdentifierWindows9_64Guest = VirtualMachineGuestOsIdentifier("windows9_64Guest") - VirtualMachineGuestOsIdentifierWindows9Server64Guest = VirtualMachineGuestOsIdentifier("windows9Server64Guest") - VirtualMachineGuestOsIdentifierWindowsHyperVGuest = VirtualMachineGuestOsIdentifier("windowsHyperVGuest") - VirtualMachineGuestOsIdentifierFreebsdGuest = VirtualMachineGuestOsIdentifier("freebsdGuest") - VirtualMachineGuestOsIdentifierFreebsd64Guest = VirtualMachineGuestOsIdentifier("freebsd64Guest") - VirtualMachineGuestOsIdentifierRedhatGuest = VirtualMachineGuestOsIdentifier("redhatGuest") - VirtualMachineGuestOsIdentifierRhel2Guest = VirtualMachineGuestOsIdentifier("rhel2Guest") - VirtualMachineGuestOsIdentifierRhel3Guest = VirtualMachineGuestOsIdentifier("rhel3Guest") - VirtualMachineGuestOsIdentifierRhel3_64Guest = VirtualMachineGuestOsIdentifier("rhel3_64Guest") - VirtualMachineGuestOsIdentifierRhel4Guest = VirtualMachineGuestOsIdentifier("rhel4Guest") - VirtualMachineGuestOsIdentifierRhel4_64Guest = VirtualMachineGuestOsIdentifier("rhel4_64Guest") - VirtualMachineGuestOsIdentifierRhel5Guest = VirtualMachineGuestOsIdentifier("rhel5Guest") - VirtualMachineGuestOsIdentifierRhel5_64Guest = VirtualMachineGuestOsIdentifier("rhel5_64Guest") - VirtualMachineGuestOsIdentifierRhel6Guest = VirtualMachineGuestOsIdentifier("rhel6Guest") - VirtualMachineGuestOsIdentifierRhel6_64Guest = VirtualMachineGuestOsIdentifier("rhel6_64Guest") - VirtualMachineGuestOsIdentifierRhel7Guest = VirtualMachineGuestOsIdentifier("rhel7Guest") - VirtualMachineGuestOsIdentifierRhel7_64Guest = VirtualMachineGuestOsIdentifier("rhel7_64Guest") - VirtualMachineGuestOsIdentifierCentosGuest = VirtualMachineGuestOsIdentifier("centosGuest") - VirtualMachineGuestOsIdentifierCentos64Guest = VirtualMachineGuestOsIdentifier("centos64Guest") - VirtualMachineGuestOsIdentifierOracleLinuxGuest = VirtualMachineGuestOsIdentifier("oracleLinuxGuest") - VirtualMachineGuestOsIdentifierOracleLinux64Guest = VirtualMachineGuestOsIdentifier("oracleLinux64Guest") - VirtualMachineGuestOsIdentifierSuseGuest = VirtualMachineGuestOsIdentifier("suseGuest") - VirtualMachineGuestOsIdentifierSuse64Guest = VirtualMachineGuestOsIdentifier("suse64Guest") - VirtualMachineGuestOsIdentifierSlesGuest = VirtualMachineGuestOsIdentifier("slesGuest") - VirtualMachineGuestOsIdentifierSles64Guest = VirtualMachineGuestOsIdentifier("sles64Guest") - VirtualMachineGuestOsIdentifierSles10Guest = VirtualMachineGuestOsIdentifier("sles10Guest") - VirtualMachineGuestOsIdentifierSles10_64Guest = VirtualMachineGuestOsIdentifier("sles10_64Guest") - VirtualMachineGuestOsIdentifierSles11Guest = VirtualMachineGuestOsIdentifier("sles11Guest") - VirtualMachineGuestOsIdentifierSles11_64Guest = VirtualMachineGuestOsIdentifier("sles11_64Guest") - VirtualMachineGuestOsIdentifierSles12Guest = VirtualMachineGuestOsIdentifier("sles12Guest") - VirtualMachineGuestOsIdentifierSles12_64Guest = VirtualMachineGuestOsIdentifier("sles12_64Guest") - VirtualMachineGuestOsIdentifierNld9Guest = VirtualMachineGuestOsIdentifier("nld9Guest") - VirtualMachineGuestOsIdentifierOesGuest = VirtualMachineGuestOsIdentifier("oesGuest") - VirtualMachineGuestOsIdentifierSjdsGuest = VirtualMachineGuestOsIdentifier("sjdsGuest") - VirtualMachineGuestOsIdentifierMandrakeGuest = VirtualMachineGuestOsIdentifier("mandrakeGuest") - VirtualMachineGuestOsIdentifierMandrivaGuest = VirtualMachineGuestOsIdentifier("mandrivaGuest") - VirtualMachineGuestOsIdentifierMandriva64Guest = VirtualMachineGuestOsIdentifier("mandriva64Guest") - VirtualMachineGuestOsIdentifierTurboLinuxGuest = VirtualMachineGuestOsIdentifier("turboLinuxGuest") - VirtualMachineGuestOsIdentifierTurboLinux64Guest = VirtualMachineGuestOsIdentifier("turboLinux64Guest") - VirtualMachineGuestOsIdentifierUbuntuGuest = VirtualMachineGuestOsIdentifier("ubuntuGuest") - VirtualMachineGuestOsIdentifierUbuntu64Guest = VirtualMachineGuestOsIdentifier("ubuntu64Guest") - VirtualMachineGuestOsIdentifierDebian4Guest = VirtualMachineGuestOsIdentifier("debian4Guest") - VirtualMachineGuestOsIdentifierDebian4_64Guest = VirtualMachineGuestOsIdentifier("debian4_64Guest") - VirtualMachineGuestOsIdentifierDebian5Guest = VirtualMachineGuestOsIdentifier("debian5Guest") - VirtualMachineGuestOsIdentifierDebian5_64Guest = VirtualMachineGuestOsIdentifier("debian5_64Guest") - VirtualMachineGuestOsIdentifierDebian6Guest = VirtualMachineGuestOsIdentifier("debian6Guest") - VirtualMachineGuestOsIdentifierDebian6_64Guest = VirtualMachineGuestOsIdentifier("debian6_64Guest") - VirtualMachineGuestOsIdentifierDebian7Guest = VirtualMachineGuestOsIdentifier("debian7Guest") - VirtualMachineGuestOsIdentifierDebian7_64Guest = VirtualMachineGuestOsIdentifier("debian7_64Guest") - VirtualMachineGuestOsIdentifierDebian8Guest = VirtualMachineGuestOsIdentifier("debian8Guest") - VirtualMachineGuestOsIdentifierDebian8_64Guest = VirtualMachineGuestOsIdentifier("debian8_64Guest") - VirtualMachineGuestOsIdentifierAsianux3Guest = VirtualMachineGuestOsIdentifier("asianux3Guest") - VirtualMachineGuestOsIdentifierAsianux3_64Guest = VirtualMachineGuestOsIdentifier("asianux3_64Guest") - VirtualMachineGuestOsIdentifierAsianux4Guest = VirtualMachineGuestOsIdentifier("asianux4Guest") - VirtualMachineGuestOsIdentifierAsianux4_64Guest = VirtualMachineGuestOsIdentifier("asianux4_64Guest") - VirtualMachineGuestOsIdentifierAsianux5_64Guest = VirtualMachineGuestOsIdentifier("asianux5_64Guest") - VirtualMachineGuestOsIdentifierOpensuseGuest = VirtualMachineGuestOsIdentifier("opensuseGuest") - VirtualMachineGuestOsIdentifierOpensuse64Guest = VirtualMachineGuestOsIdentifier("opensuse64Guest") - VirtualMachineGuestOsIdentifierFedoraGuest = VirtualMachineGuestOsIdentifier("fedoraGuest") - VirtualMachineGuestOsIdentifierFedora64Guest = VirtualMachineGuestOsIdentifier("fedora64Guest") - VirtualMachineGuestOsIdentifierCoreos64Guest = VirtualMachineGuestOsIdentifier("coreos64Guest") - VirtualMachineGuestOsIdentifierOther24xLinuxGuest = VirtualMachineGuestOsIdentifier("other24xLinuxGuest") - VirtualMachineGuestOsIdentifierOther26xLinuxGuest = VirtualMachineGuestOsIdentifier("other26xLinuxGuest") - VirtualMachineGuestOsIdentifierOtherLinuxGuest = VirtualMachineGuestOsIdentifier("otherLinuxGuest") - VirtualMachineGuestOsIdentifierOther3xLinuxGuest = VirtualMachineGuestOsIdentifier("other3xLinuxGuest") - VirtualMachineGuestOsIdentifierGenericLinuxGuest = VirtualMachineGuestOsIdentifier("genericLinuxGuest") - VirtualMachineGuestOsIdentifierOther24xLinux64Guest = VirtualMachineGuestOsIdentifier("other24xLinux64Guest") - VirtualMachineGuestOsIdentifierOther26xLinux64Guest = VirtualMachineGuestOsIdentifier("other26xLinux64Guest") - VirtualMachineGuestOsIdentifierOther3xLinux64Guest = VirtualMachineGuestOsIdentifier("other3xLinux64Guest") - VirtualMachineGuestOsIdentifierOtherLinux64Guest = VirtualMachineGuestOsIdentifier("otherLinux64Guest") - VirtualMachineGuestOsIdentifierSolaris6Guest = VirtualMachineGuestOsIdentifier("solaris6Guest") - VirtualMachineGuestOsIdentifierSolaris7Guest = VirtualMachineGuestOsIdentifier("solaris7Guest") - VirtualMachineGuestOsIdentifierSolaris8Guest = VirtualMachineGuestOsIdentifier("solaris8Guest") - VirtualMachineGuestOsIdentifierSolaris9Guest = VirtualMachineGuestOsIdentifier("solaris9Guest") - VirtualMachineGuestOsIdentifierSolaris10Guest = VirtualMachineGuestOsIdentifier("solaris10Guest") - VirtualMachineGuestOsIdentifierSolaris10_64Guest = VirtualMachineGuestOsIdentifier("solaris10_64Guest") - VirtualMachineGuestOsIdentifierSolaris11_64Guest = VirtualMachineGuestOsIdentifier("solaris11_64Guest") - VirtualMachineGuestOsIdentifierOs2Guest = VirtualMachineGuestOsIdentifier("os2Guest") - VirtualMachineGuestOsIdentifierEComStationGuest = VirtualMachineGuestOsIdentifier("eComStationGuest") - VirtualMachineGuestOsIdentifierEComStation2Guest = VirtualMachineGuestOsIdentifier("eComStation2Guest") - VirtualMachineGuestOsIdentifierNetware4Guest = VirtualMachineGuestOsIdentifier("netware4Guest") - VirtualMachineGuestOsIdentifierNetware5Guest = VirtualMachineGuestOsIdentifier("netware5Guest") - VirtualMachineGuestOsIdentifierNetware6Guest = VirtualMachineGuestOsIdentifier("netware6Guest") - VirtualMachineGuestOsIdentifierOpenServer5Guest = VirtualMachineGuestOsIdentifier("openServer5Guest") - VirtualMachineGuestOsIdentifierOpenServer6Guest = VirtualMachineGuestOsIdentifier("openServer6Guest") - VirtualMachineGuestOsIdentifierUnixWare7Guest = VirtualMachineGuestOsIdentifier("unixWare7Guest") - VirtualMachineGuestOsIdentifierDarwinGuest = VirtualMachineGuestOsIdentifier("darwinGuest") - VirtualMachineGuestOsIdentifierDarwin64Guest = VirtualMachineGuestOsIdentifier("darwin64Guest") - VirtualMachineGuestOsIdentifierDarwin10Guest = VirtualMachineGuestOsIdentifier("darwin10Guest") - VirtualMachineGuestOsIdentifierDarwin10_64Guest = VirtualMachineGuestOsIdentifier("darwin10_64Guest") - VirtualMachineGuestOsIdentifierDarwin11Guest = VirtualMachineGuestOsIdentifier("darwin11Guest") - VirtualMachineGuestOsIdentifierDarwin11_64Guest = VirtualMachineGuestOsIdentifier("darwin11_64Guest") - VirtualMachineGuestOsIdentifierDarwin12_64Guest = VirtualMachineGuestOsIdentifier("darwin12_64Guest") - VirtualMachineGuestOsIdentifierDarwin13_64Guest = VirtualMachineGuestOsIdentifier("darwin13_64Guest") - VirtualMachineGuestOsIdentifierDarwin14_64Guest = VirtualMachineGuestOsIdentifier("darwin14_64Guest") - VirtualMachineGuestOsIdentifierVmkernelGuest = VirtualMachineGuestOsIdentifier("vmkernelGuest") - VirtualMachineGuestOsIdentifierVmkernel5Guest = VirtualMachineGuestOsIdentifier("vmkernel5Guest") - VirtualMachineGuestOsIdentifierVmkernel6Guest = VirtualMachineGuestOsIdentifier("vmkernel6Guest") - VirtualMachineGuestOsIdentifierOtherGuest = VirtualMachineGuestOsIdentifier("otherGuest") - VirtualMachineGuestOsIdentifierOtherGuest64 = VirtualMachineGuestOsIdentifier("otherGuest64") -) - -func init() { - t["VirtualMachineGuestOsIdentifier"] = reflect.TypeOf((*VirtualMachineGuestOsIdentifier)(nil)).Elem() -} - -type VirtualMachineGuestState string - -const ( - VirtualMachineGuestStateRunning = VirtualMachineGuestState("running") - VirtualMachineGuestStateShuttingDown = VirtualMachineGuestState("shuttingDown") - VirtualMachineGuestStateResetting = VirtualMachineGuestState("resetting") - VirtualMachineGuestStateStandby = VirtualMachineGuestState("standby") - VirtualMachineGuestStateNotRunning = VirtualMachineGuestState("notRunning") - VirtualMachineGuestStateUnknown = VirtualMachineGuestState("unknown") -) - -func init() { - t["VirtualMachineGuestState"] = reflect.TypeOf((*VirtualMachineGuestState)(nil)).Elem() -} - -type VirtualMachineHtSharing string - -const ( - VirtualMachineHtSharingAny = VirtualMachineHtSharing("any") - VirtualMachineHtSharingNone = VirtualMachineHtSharing("none") - VirtualMachineHtSharingInternal = VirtualMachineHtSharing("internal") -) - -func init() { - t["VirtualMachineHtSharing"] = reflect.TypeOf((*VirtualMachineHtSharing)(nil)).Elem() -} - -type VirtualMachineMemoryAllocationPolicy string - -const ( - VirtualMachineMemoryAllocationPolicySwapNone = VirtualMachineMemoryAllocationPolicy("swapNone") - VirtualMachineMemoryAllocationPolicySwapSome = VirtualMachineMemoryAllocationPolicy("swapSome") - VirtualMachineMemoryAllocationPolicySwapMost = VirtualMachineMemoryAllocationPolicy("swapMost") -) - -func init() { - t["VirtualMachineMemoryAllocationPolicy"] = reflect.TypeOf((*VirtualMachineMemoryAllocationPolicy)(nil)).Elem() -} - -type VirtualMachineMetadataManagerVmMetadataOp string - -const ( - VirtualMachineMetadataManagerVmMetadataOpUpdate = VirtualMachineMetadataManagerVmMetadataOp("Update") - VirtualMachineMetadataManagerVmMetadataOpRemove = VirtualMachineMetadataManagerVmMetadataOp("Remove") -) - -func init() { - t["VirtualMachineMetadataManagerVmMetadataOp"] = reflect.TypeOf((*VirtualMachineMetadataManagerVmMetadataOp)(nil)).Elem() -} - -type VirtualMachineMetadataManagerVmMetadataOwnerOwner string - -const ( - VirtualMachineMetadataManagerVmMetadataOwnerOwnerComVmwareVsphereHA = VirtualMachineMetadataManagerVmMetadataOwnerOwner("ComVmwareVsphereHA") -) - -func init() { - t["VirtualMachineMetadataManagerVmMetadataOwnerOwner"] = reflect.TypeOf((*VirtualMachineMetadataManagerVmMetadataOwnerOwner)(nil)).Elem() -} - -type VirtualMachineMovePriority string - -const ( - VirtualMachineMovePriorityLowPriority = VirtualMachineMovePriority("lowPriority") - VirtualMachineMovePriorityHighPriority = VirtualMachineMovePriority("highPriority") - VirtualMachineMovePriorityDefaultPriority = VirtualMachineMovePriority("defaultPriority") -) - -func init() { - t["VirtualMachineMovePriority"] = reflect.TypeOf((*VirtualMachineMovePriority)(nil)).Elem() -} - -type VirtualMachineNeedSecondaryReason string - -const ( - VirtualMachineNeedSecondaryReasonInitializing = VirtualMachineNeedSecondaryReason("initializing") - VirtualMachineNeedSecondaryReasonDivergence = VirtualMachineNeedSecondaryReason("divergence") - VirtualMachineNeedSecondaryReasonLostConnection = VirtualMachineNeedSecondaryReason("lostConnection") - VirtualMachineNeedSecondaryReasonPartialHardwareFailure = VirtualMachineNeedSecondaryReason("partialHardwareFailure") - VirtualMachineNeedSecondaryReasonUserAction = VirtualMachineNeedSecondaryReason("userAction") - VirtualMachineNeedSecondaryReasonCheckpointError = VirtualMachineNeedSecondaryReason("checkpointError") - VirtualMachineNeedSecondaryReasonOther = VirtualMachineNeedSecondaryReason("other") -) - -func init() { - t["VirtualMachineNeedSecondaryReason"] = reflect.TypeOf((*VirtualMachineNeedSecondaryReason)(nil)).Elem() -} - -type VirtualMachinePowerOffBehavior string - -const ( - VirtualMachinePowerOffBehaviorPowerOff = VirtualMachinePowerOffBehavior("powerOff") - VirtualMachinePowerOffBehaviorRevert = VirtualMachinePowerOffBehavior("revert") - VirtualMachinePowerOffBehaviorPrompt = VirtualMachinePowerOffBehavior("prompt") - VirtualMachinePowerOffBehaviorTake = VirtualMachinePowerOffBehavior("take") -) - -func init() { - t["VirtualMachinePowerOffBehavior"] = reflect.TypeOf((*VirtualMachinePowerOffBehavior)(nil)).Elem() -} - -type VirtualMachinePowerOpType string - -const ( - VirtualMachinePowerOpTypeSoft = VirtualMachinePowerOpType("soft") - VirtualMachinePowerOpTypeHard = VirtualMachinePowerOpType("hard") - VirtualMachinePowerOpTypePreset = VirtualMachinePowerOpType("preset") -) - -func init() { - t["VirtualMachinePowerOpType"] = reflect.TypeOf((*VirtualMachinePowerOpType)(nil)).Elem() -} - -type VirtualMachinePowerState string - -const ( - VirtualMachinePowerStatePoweredOff = VirtualMachinePowerState("poweredOff") - VirtualMachinePowerStatePoweredOn = VirtualMachinePowerState("poweredOn") - VirtualMachinePowerStateSuspended = VirtualMachinePowerState("suspended") -) - -func init() { - t["VirtualMachinePowerState"] = reflect.TypeOf((*VirtualMachinePowerState)(nil)).Elem() -} - -type VirtualMachineRecordReplayState string - -const ( - VirtualMachineRecordReplayStateRecording = VirtualMachineRecordReplayState("recording") - VirtualMachineRecordReplayStateReplaying = VirtualMachineRecordReplayState("replaying") - VirtualMachineRecordReplayStateInactive = VirtualMachineRecordReplayState("inactive") -) - -func init() { - t["VirtualMachineRecordReplayState"] = reflect.TypeOf((*VirtualMachineRecordReplayState)(nil)).Elem() -} - -type VirtualMachineRelocateDiskMoveOptions string - -const ( - VirtualMachineRelocateDiskMoveOptionsMoveAllDiskBackingsAndAllowSharing = VirtualMachineRelocateDiskMoveOptions("moveAllDiskBackingsAndAllowSharing") - VirtualMachineRelocateDiskMoveOptionsMoveAllDiskBackingsAndDisallowSharing = VirtualMachineRelocateDiskMoveOptions("moveAllDiskBackingsAndDisallowSharing") - VirtualMachineRelocateDiskMoveOptionsMoveChildMostDiskBacking = VirtualMachineRelocateDiskMoveOptions("moveChildMostDiskBacking") - VirtualMachineRelocateDiskMoveOptionsCreateNewChildDiskBacking = VirtualMachineRelocateDiskMoveOptions("createNewChildDiskBacking") - VirtualMachineRelocateDiskMoveOptionsMoveAllDiskBackingsAndConsolidate = VirtualMachineRelocateDiskMoveOptions("moveAllDiskBackingsAndConsolidate") -) - -func init() { - t["VirtualMachineRelocateDiskMoveOptions"] = reflect.TypeOf((*VirtualMachineRelocateDiskMoveOptions)(nil)).Elem() -} - -type VirtualMachineRelocateTransformation string - -const ( - VirtualMachineRelocateTransformationFlat = VirtualMachineRelocateTransformation("flat") - VirtualMachineRelocateTransformationSparse = VirtualMachineRelocateTransformation("sparse") -) - -func init() { - t["VirtualMachineRelocateTransformation"] = reflect.TypeOf((*VirtualMachineRelocateTransformation)(nil)).Elem() -} - -type VirtualMachineScsiPassthroughType string - -const ( - VirtualMachineScsiPassthroughTypeDisk = VirtualMachineScsiPassthroughType("disk") - VirtualMachineScsiPassthroughTypeTape = VirtualMachineScsiPassthroughType("tape") - VirtualMachineScsiPassthroughTypePrinter = VirtualMachineScsiPassthroughType("printer") - VirtualMachineScsiPassthroughTypeProcessor = VirtualMachineScsiPassthroughType("processor") - VirtualMachineScsiPassthroughTypeWorm = VirtualMachineScsiPassthroughType("worm") - VirtualMachineScsiPassthroughTypeCdrom = VirtualMachineScsiPassthroughType("cdrom") - VirtualMachineScsiPassthroughTypeScanner = VirtualMachineScsiPassthroughType("scanner") - VirtualMachineScsiPassthroughTypeOptical = VirtualMachineScsiPassthroughType("optical") - VirtualMachineScsiPassthroughTypeMedia = VirtualMachineScsiPassthroughType("media") - VirtualMachineScsiPassthroughTypeCom = VirtualMachineScsiPassthroughType("com") - VirtualMachineScsiPassthroughTypeRaid = VirtualMachineScsiPassthroughType("raid") - VirtualMachineScsiPassthroughTypeUnknown = VirtualMachineScsiPassthroughType("unknown") -) - -func init() { - t["VirtualMachineScsiPassthroughType"] = reflect.TypeOf((*VirtualMachineScsiPassthroughType)(nil)).Elem() -} - -type VirtualMachineStandbyActionType string - -const ( - VirtualMachineStandbyActionTypeCheckpoint = VirtualMachineStandbyActionType("checkpoint") - VirtualMachineStandbyActionTypePowerOnSuspend = VirtualMachineStandbyActionType("powerOnSuspend") -) - -func init() { - t["VirtualMachineStandbyActionType"] = reflect.TypeOf((*VirtualMachineStandbyActionType)(nil)).Elem() -} - -type VirtualMachineTargetInfoConfigurationTag string - -const ( - VirtualMachineTargetInfoConfigurationTagCompliant = VirtualMachineTargetInfoConfigurationTag("compliant") - VirtualMachineTargetInfoConfigurationTagClusterWide = VirtualMachineTargetInfoConfigurationTag("clusterWide") -) - -func init() { - t["VirtualMachineTargetInfoConfigurationTag"] = reflect.TypeOf((*VirtualMachineTargetInfoConfigurationTag)(nil)).Elem() -} - -type VirtualMachineTicketType string - -const ( - VirtualMachineTicketTypeMks = VirtualMachineTicketType("mks") - VirtualMachineTicketTypeDevice = VirtualMachineTicketType("device") - VirtualMachineTicketTypeGuestControl = VirtualMachineTicketType("guestControl") - VirtualMachineTicketTypeWebmks = VirtualMachineTicketType("webmks") -) - -func init() { - t["VirtualMachineTicketType"] = reflect.TypeOf((*VirtualMachineTicketType)(nil)).Elem() -} - -type VirtualMachineToolsRunningStatus string - -const ( - VirtualMachineToolsRunningStatusGuestToolsNotRunning = VirtualMachineToolsRunningStatus("guestToolsNotRunning") - VirtualMachineToolsRunningStatusGuestToolsRunning = VirtualMachineToolsRunningStatus("guestToolsRunning") - VirtualMachineToolsRunningStatusGuestToolsExecutingScripts = VirtualMachineToolsRunningStatus("guestToolsExecutingScripts") -) - -func init() { - t["VirtualMachineToolsRunningStatus"] = reflect.TypeOf((*VirtualMachineToolsRunningStatus)(nil)).Elem() -} - -type VirtualMachineToolsStatus string - -const ( - VirtualMachineToolsStatusToolsNotInstalled = VirtualMachineToolsStatus("toolsNotInstalled") - VirtualMachineToolsStatusToolsNotRunning = VirtualMachineToolsStatus("toolsNotRunning") - VirtualMachineToolsStatusToolsOld = VirtualMachineToolsStatus("toolsOld") - VirtualMachineToolsStatusToolsOk = VirtualMachineToolsStatus("toolsOk") -) - -func init() { - t["VirtualMachineToolsStatus"] = reflect.TypeOf((*VirtualMachineToolsStatus)(nil)).Elem() -} - -type VirtualMachineToolsVersionStatus string - -const ( - VirtualMachineToolsVersionStatusGuestToolsNotInstalled = VirtualMachineToolsVersionStatus("guestToolsNotInstalled") - VirtualMachineToolsVersionStatusGuestToolsNeedUpgrade = VirtualMachineToolsVersionStatus("guestToolsNeedUpgrade") - VirtualMachineToolsVersionStatusGuestToolsCurrent = VirtualMachineToolsVersionStatus("guestToolsCurrent") - VirtualMachineToolsVersionStatusGuestToolsUnmanaged = VirtualMachineToolsVersionStatus("guestToolsUnmanaged") - VirtualMachineToolsVersionStatusGuestToolsTooOld = VirtualMachineToolsVersionStatus("guestToolsTooOld") - VirtualMachineToolsVersionStatusGuestToolsSupportedOld = VirtualMachineToolsVersionStatus("guestToolsSupportedOld") - VirtualMachineToolsVersionStatusGuestToolsSupportedNew = VirtualMachineToolsVersionStatus("guestToolsSupportedNew") - VirtualMachineToolsVersionStatusGuestToolsTooNew = VirtualMachineToolsVersionStatus("guestToolsTooNew") - VirtualMachineToolsVersionStatusGuestToolsBlacklisted = VirtualMachineToolsVersionStatus("guestToolsBlacklisted") -) - -func init() { - t["VirtualMachineToolsVersionStatus"] = reflect.TypeOf((*VirtualMachineToolsVersionStatus)(nil)).Elem() -} - -type VirtualMachineUsbInfoFamily string - -const ( - VirtualMachineUsbInfoFamilyAudio = VirtualMachineUsbInfoFamily("audio") - VirtualMachineUsbInfoFamilyHid = VirtualMachineUsbInfoFamily("hid") - VirtualMachineUsbInfoFamilyHid_bootable = VirtualMachineUsbInfoFamily("hid_bootable") - VirtualMachineUsbInfoFamilyPhysical = VirtualMachineUsbInfoFamily("physical") - VirtualMachineUsbInfoFamilyCommunication = VirtualMachineUsbInfoFamily("communication") - VirtualMachineUsbInfoFamilyImaging = VirtualMachineUsbInfoFamily("imaging") - VirtualMachineUsbInfoFamilyPrinter = VirtualMachineUsbInfoFamily("printer") - VirtualMachineUsbInfoFamilyStorage = VirtualMachineUsbInfoFamily("storage") - VirtualMachineUsbInfoFamilyHub = VirtualMachineUsbInfoFamily("hub") - VirtualMachineUsbInfoFamilySmart_card = VirtualMachineUsbInfoFamily("smart_card") - VirtualMachineUsbInfoFamilySecurity = VirtualMachineUsbInfoFamily("security") - VirtualMachineUsbInfoFamilyVideo = VirtualMachineUsbInfoFamily("video") - VirtualMachineUsbInfoFamilyWireless = VirtualMachineUsbInfoFamily("wireless") - VirtualMachineUsbInfoFamilyBluetooth = VirtualMachineUsbInfoFamily("bluetooth") - VirtualMachineUsbInfoFamilyWusb = VirtualMachineUsbInfoFamily("wusb") - VirtualMachineUsbInfoFamilyPda = VirtualMachineUsbInfoFamily("pda") - VirtualMachineUsbInfoFamilyVendor_specific = VirtualMachineUsbInfoFamily("vendor_specific") - VirtualMachineUsbInfoFamilyOther = VirtualMachineUsbInfoFamily("other") - VirtualMachineUsbInfoFamilyUnknownFamily = VirtualMachineUsbInfoFamily("unknownFamily") -) - -func init() { - t["VirtualMachineUsbInfoFamily"] = reflect.TypeOf((*VirtualMachineUsbInfoFamily)(nil)).Elem() -} - -type VirtualMachineUsbInfoSpeed string - -const ( - VirtualMachineUsbInfoSpeedLow = VirtualMachineUsbInfoSpeed("low") - VirtualMachineUsbInfoSpeedFull = VirtualMachineUsbInfoSpeed("full") - VirtualMachineUsbInfoSpeedHigh = VirtualMachineUsbInfoSpeed("high") - VirtualMachineUsbInfoSpeedSuperSpeed = VirtualMachineUsbInfoSpeed("superSpeed") - VirtualMachineUsbInfoSpeedUnknownSpeed = VirtualMachineUsbInfoSpeed("unknownSpeed") -) - -func init() { - t["VirtualMachineUsbInfoSpeed"] = reflect.TypeOf((*VirtualMachineUsbInfoSpeed)(nil)).Elem() -} - -type VirtualMachineVMCIDeviceAction string - -const ( - VirtualMachineVMCIDeviceActionAllow = VirtualMachineVMCIDeviceAction("allow") - VirtualMachineVMCIDeviceActionDeny = VirtualMachineVMCIDeviceAction("deny") -) - -func init() { - t["VirtualMachineVMCIDeviceAction"] = reflect.TypeOf((*VirtualMachineVMCIDeviceAction)(nil)).Elem() -} - -type VirtualMachineVMCIDeviceDirection string - -const ( - VirtualMachineVMCIDeviceDirectionGuest = VirtualMachineVMCIDeviceDirection("guest") - VirtualMachineVMCIDeviceDirectionHost = VirtualMachineVMCIDeviceDirection("host") - VirtualMachineVMCIDeviceDirectionAnyDirection = VirtualMachineVMCIDeviceDirection("anyDirection") -) - -func init() { - t["VirtualMachineVMCIDeviceDirection"] = reflect.TypeOf((*VirtualMachineVMCIDeviceDirection)(nil)).Elem() -} - -type VirtualMachineVMCIDeviceProtocol string - -const ( - VirtualMachineVMCIDeviceProtocolHypervisor = VirtualMachineVMCIDeviceProtocol("hypervisor") - VirtualMachineVMCIDeviceProtocolDoorbell = VirtualMachineVMCIDeviceProtocol("doorbell") - VirtualMachineVMCIDeviceProtocolQueuepair = VirtualMachineVMCIDeviceProtocol("queuepair") - VirtualMachineVMCIDeviceProtocolDatagram = VirtualMachineVMCIDeviceProtocol("datagram") - VirtualMachineVMCIDeviceProtocolStream = VirtualMachineVMCIDeviceProtocol("stream") - VirtualMachineVMCIDeviceProtocolAnyProtocol = VirtualMachineVMCIDeviceProtocol("anyProtocol") -) - -func init() { - t["VirtualMachineVMCIDeviceProtocol"] = reflect.TypeOf((*VirtualMachineVMCIDeviceProtocol)(nil)).Elem() -} - -type VirtualMachineVideoCardUse3dRenderer string - -const ( - VirtualMachineVideoCardUse3dRendererAutomatic = VirtualMachineVideoCardUse3dRenderer("automatic") - VirtualMachineVideoCardUse3dRendererSoftware = VirtualMachineVideoCardUse3dRenderer("software") - VirtualMachineVideoCardUse3dRendererHardware = VirtualMachineVideoCardUse3dRenderer("hardware") -) - -func init() { - t["VirtualMachineVideoCardUse3dRenderer"] = reflect.TypeOf((*VirtualMachineVideoCardUse3dRenderer)(nil)).Elem() -} - -type VirtualPointingDeviceHostChoice string - -const ( - VirtualPointingDeviceHostChoiceAutodetect = VirtualPointingDeviceHostChoice("autodetect") - VirtualPointingDeviceHostChoiceIntellimouseExplorer = VirtualPointingDeviceHostChoice("intellimouseExplorer") - VirtualPointingDeviceHostChoiceIntellimousePs2 = VirtualPointingDeviceHostChoice("intellimousePs2") - VirtualPointingDeviceHostChoiceLogitechMouseman = VirtualPointingDeviceHostChoice("logitechMouseman") - VirtualPointingDeviceHostChoiceMicrosoft_serial = VirtualPointingDeviceHostChoice("microsoft_serial") - VirtualPointingDeviceHostChoiceMouseSystems = VirtualPointingDeviceHostChoice("mouseSystems") - VirtualPointingDeviceHostChoiceMousemanSerial = VirtualPointingDeviceHostChoice("mousemanSerial") - VirtualPointingDeviceHostChoicePs2 = VirtualPointingDeviceHostChoice("ps2") -) - -func init() { - t["VirtualPointingDeviceHostChoice"] = reflect.TypeOf((*VirtualPointingDeviceHostChoice)(nil)).Elem() -} - -type VirtualSCSISharing string - -const ( - VirtualSCSISharingNoSharing = VirtualSCSISharing("noSharing") - VirtualSCSISharingVirtualSharing = VirtualSCSISharing("virtualSharing") - VirtualSCSISharingPhysicalSharing = VirtualSCSISharing("physicalSharing") -) - -func init() { - t["VirtualSCSISharing"] = reflect.TypeOf((*VirtualSCSISharing)(nil)).Elem() -} - -type VirtualSerialPortEndPoint string - -const ( - VirtualSerialPortEndPointClient = VirtualSerialPortEndPoint("client") - VirtualSerialPortEndPointServer = VirtualSerialPortEndPoint("server") -) - -func init() { - t["VirtualSerialPortEndPoint"] = reflect.TypeOf((*VirtualSerialPortEndPoint)(nil)).Elem() -} - -type VmDasBeingResetEventReasonCode string - -const ( - VmDasBeingResetEventReasonCodeVmtoolsHeartbeatFailure = VmDasBeingResetEventReasonCode("vmtoolsHeartbeatFailure") - VmDasBeingResetEventReasonCodeAppHeartbeatFailure = VmDasBeingResetEventReasonCode("appHeartbeatFailure") - VmDasBeingResetEventReasonCodeAppImmediateResetRequest = VmDasBeingResetEventReasonCode("appImmediateResetRequest") - VmDasBeingResetEventReasonCodeVmcpResetApdCleared = VmDasBeingResetEventReasonCode("vmcpResetApdCleared") -) - -func init() { - t["VmDasBeingResetEventReasonCode"] = reflect.TypeOf((*VmDasBeingResetEventReasonCode)(nil)).Elem() -} - -type VmFailedStartingSecondaryEventFailureReason string - -const ( - VmFailedStartingSecondaryEventFailureReasonIncompatibleHost = VmFailedStartingSecondaryEventFailureReason("incompatibleHost") - VmFailedStartingSecondaryEventFailureReasonLoginFailed = VmFailedStartingSecondaryEventFailureReason("loginFailed") - VmFailedStartingSecondaryEventFailureReasonRegisterVmFailed = VmFailedStartingSecondaryEventFailureReason("registerVmFailed") - VmFailedStartingSecondaryEventFailureReasonMigrateFailed = VmFailedStartingSecondaryEventFailureReason("migrateFailed") -) - -func init() { - t["VmFailedStartingSecondaryEventFailureReason"] = reflect.TypeOf((*VmFailedStartingSecondaryEventFailureReason)(nil)).Elem() -} - -type VmFaultToleranceConfigIssueReasonForIssue string - -const ( - VmFaultToleranceConfigIssueReasonForIssueHaNotEnabled = VmFaultToleranceConfigIssueReasonForIssue("haNotEnabled") - VmFaultToleranceConfigIssueReasonForIssueMoreThanOneSecondary = VmFaultToleranceConfigIssueReasonForIssue("moreThanOneSecondary") - VmFaultToleranceConfigIssueReasonForIssueRecordReplayNotSupported = VmFaultToleranceConfigIssueReasonForIssue("recordReplayNotSupported") - VmFaultToleranceConfigIssueReasonForIssueReplayNotSupported = VmFaultToleranceConfigIssueReasonForIssue("replayNotSupported") - VmFaultToleranceConfigIssueReasonForIssueTemplateVm = VmFaultToleranceConfigIssueReasonForIssue("templateVm") - VmFaultToleranceConfigIssueReasonForIssueMultipleVCPU = VmFaultToleranceConfigIssueReasonForIssue("multipleVCPU") - VmFaultToleranceConfigIssueReasonForIssueHostInactive = VmFaultToleranceConfigIssueReasonForIssue("hostInactive") - VmFaultToleranceConfigIssueReasonForIssueFtUnsupportedHardware = VmFaultToleranceConfigIssueReasonForIssue("ftUnsupportedHardware") - VmFaultToleranceConfigIssueReasonForIssueFtUnsupportedProduct = VmFaultToleranceConfigIssueReasonForIssue("ftUnsupportedProduct") - VmFaultToleranceConfigIssueReasonForIssueMissingVMotionNic = VmFaultToleranceConfigIssueReasonForIssue("missingVMotionNic") - VmFaultToleranceConfigIssueReasonForIssueMissingFTLoggingNic = VmFaultToleranceConfigIssueReasonForIssue("missingFTLoggingNic") - VmFaultToleranceConfigIssueReasonForIssueThinDisk = VmFaultToleranceConfigIssueReasonForIssue("thinDisk") - VmFaultToleranceConfigIssueReasonForIssueVerifySSLCertificateFlagNotSet = VmFaultToleranceConfigIssueReasonForIssue("verifySSLCertificateFlagNotSet") - VmFaultToleranceConfigIssueReasonForIssueHasSnapshots = VmFaultToleranceConfigIssueReasonForIssue("hasSnapshots") - VmFaultToleranceConfigIssueReasonForIssueNoConfig = VmFaultToleranceConfigIssueReasonForIssue("noConfig") - VmFaultToleranceConfigIssueReasonForIssueFtSecondaryVm = VmFaultToleranceConfigIssueReasonForIssue("ftSecondaryVm") - VmFaultToleranceConfigIssueReasonForIssueHasLocalDisk = VmFaultToleranceConfigIssueReasonForIssue("hasLocalDisk") - VmFaultToleranceConfigIssueReasonForIssueEsxAgentVm = VmFaultToleranceConfigIssueReasonForIssue("esxAgentVm") - VmFaultToleranceConfigIssueReasonForIssueVideo3dEnabled = VmFaultToleranceConfigIssueReasonForIssue("video3dEnabled") - VmFaultToleranceConfigIssueReasonForIssueHasUnsupportedDisk = VmFaultToleranceConfigIssueReasonForIssue("hasUnsupportedDisk") - VmFaultToleranceConfigIssueReasonForIssueInsufficientBandwidth = VmFaultToleranceConfigIssueReasonForIssue("insufficientBandwidth") - VmFaultToleranceConfigIssueReasonForIssueHasNestedHVConfiguration = VmFaultToleranceConfigIssueReasonForIssue("hasNestedHVConfiguration") - VmFaultToleranceConfigIssueReasonForIssueHasVFlashConfiguration = VmFaultToleranceConfigIssueReasonForIssue("hasVFlashConfiguration") - VmFaultToleranceConfigIssueReasonForIssueUnsupportedProduct = VmFaultToleranceConfigIssueReasonForIssue("unsupportedProduct") - VmFaultToleranceConfigIssueReasonForIssueCpuHvUnsupported = VmFaultToleranceConfigIssueReasonForIssue("cpuHvUnsupported") - VmFaultToleranceConfigIssueReasonForIssueCpuHwmmuUnsupported = VmFaultToleranceConfigIssueReasonForIssue("cpuHwmmuUnsupported") - VmFaultToleranceConfigIssueReasonForIssueCpuHvDisabled = VmFaultToleranceConfigIssueReasonForIssue("cpuHvDisabled") - VmFaultToleranceConfigIssueReasonForIssueHasEFIFirmware = VmFaultToleranceConfigIssueReasonForIssue("hasEFIFirmware") -) - -func init() { - t["VmFaultToleranceConfigIssueReasonForIssue"] = reflect.TypeOf((*VmFaultToleranceConfigIssueReasonForIssue)(nil)).Elem() -} - -type VmFaultToleranceInvalidFileBackingDeviceType string - -const ( - VmFaultToleranceInvalidFileBackingDeviceTypeVirtualFloppy = VmFaultToleranceInvalidFileBackingDeviceType("virtualFloppy") - VmFaultToleranceInvalidFileBackingDeviceTypeVirtualCdrom = VmFaultToleranceInvalidFileBackingDeviceType("virtualCdrom") - VmFaultToleranceInvalidFileBackingDeviceTypeVirtualSerialPort = VmFaultToleranceInvalidFileBackingDeviceType("virtualSerialPort") - VmFaultToleranceInvalidFileBackingDeviceTypeVirtualParallelPort = VmFaultToleranceInvalidFileBackingDeviceType("virtualParallelPort") - VmFaultToleranceInvalidFileBackingDeviceTypeVirtualDisk = VmFaultToleranceInvalidFileBackingDeviceType("virtualDisk") -) - -func init() { - t["VmFaultToleranceInvalidFileBackingDeviceType"] = reflect.TypeOf((*VmFaultToleranceInvalidFileBackingDeviceType)(nil)).Elem() -} - -type VmShutdownOnIsolationEventOperation string - -const ( - VmShutdownOnIsolationEventOperationShutdown = VmShutdownOnIsolationEventOperation("shutdown") - VmShutdownOnIsolationEventOperationPoweredOff = VmShutdownOnIsolationEventOperation("poweredOff") -) - -func init() { - t["VmShutdownOnIsolationEventOperation"] = reflect.TypeOf((*VmShutdownOnIsolationEventOperation)(nil)).Elem() -} - -type VmwareDistributedVirtualSwitchPvlanPortType string - -const ( - VmwareDistributedVirtualSwitchPvlanPortTypePromiscuous = VmwareDistributedVirtualSwitchPvlanPortType("promiscuous") - VmwareDistributedVirtualSwitchPvlanPortTypeIsolated = VmwareDistributedVirtualSwitchPvlanPortType("isolated") - VmwareDistributedVirtualSwitchPvlanPortTypeCommunity = VmwareDistributedVirtualSwitchPvlanPortType("community") -) - -func init() { - t["VmwareDistributedVirtualSwitchPvlanPortType"] = reflect.TypeOf((*VmwareDistributedVirtualSwitchPvlanPortType)(nil)).Elem() -} - -type VsanDiskIssueType string - -const ( - VsanDiskIssueTypeNonExist = VsanDiskIssueType("nonExist") - VsanDiskIssueTypeStampMismatch = VsanDiskIssueType("stampMismatch") - VsanDiskIssueTypeUnknown = VsanDiskIssueType("unknown") -) - -func init() { - t["VsanDiskIssueType"] = reflect.TypeOf((*VsanDiskIssueType)(nil)).Elem() -} - -type VsanHostDecommissionModeObjectAction string - -const ( - VsanHostDecommissionModeObjectActionNoAction = VsanHostDecommissionModeObjectAction("noAction") - VsanHostDecommissionModeObjectActionEnsureObjectAccessibility = VsanHostDecommissionModeObjectAction("ensureObjectAccessibility") - VsanHostDecommissionModeObjectActionEvacuateAllData = VsanHostDecommissionModeObjectAction("evacuateAllData") -) - -func init() { - t["VsanHostDecommissionModeObjectAction"] = reflect.TypeOf((*VsanHostDecommissionModeObjectAction)(nil)).Elem() -} - -type VsanHostDiskResultState string - -const ( - VsanHostDiskResultStateInUse = VsanHostDiskResultState("inUse") - VsanHostDiskResultStateEligible = VsanHostDiskResultState("eligible") - VsanHostDiskResultStateIneligible = VsanHostDiskResultState("ineligible") -) - -func init() { - t["VsanHostDiskResultState"] = reflect.TypeOf((*VsanHostDiskResultState)(nil)).Elem() -} - -type VsanHostHealthState string - -const ( - VsanHostHealthStateUnknown = VsanHostHealthState("unknown") - VsanHostHealthStateHealthy = VsanHostHealthState("healthy") - VsanHostHealthStateUnhealthy = VsanHostHealthState("unhealthy") -) - -func init() { - t["VsanHostHealthState"] = reflect.TypeOf((*VsanHostHealthState)(nil)).Elem() -} - -type VsanHostNodeState string - -const ( - VsanHostNodeStateError = VsanHostNodeState("error") - VsanHostNodeStateDisabled = VsanHostNodeState("disabled") - VsanHostNodeStateAgent = VsanHostNodeState("agent") - VsanHostNodeStateMaster = VsanHostNodeState("master") - VsanHostNodeStateBackup = VsanHostNodeState("backup") - VsanHostNodeStateStarting = VsanHostNodeState("starting") - VsanHostNodeStateStopping = VsanHostNodeState("stopping") - VsanHostNodeStateEnteringMaintenanceMode = VsanHostNodeState("enteringMaintenanceMode") - VsanHostNodeStateExitingMaintenanceMode = VsanHostNodeState("exitingMaintenanceMode") - VsanHostNodeStateDecommissioning = VsanHostNodeState("decommissioning") -) - -func init() { - t["VsanHostNodeState"] = reflect.TypeOf((*VsanHostNodeState)(nil)).Elem() -} - -type VsanUpgradeSystemUpgradeHistoryDiskGroupOpType string - -const ( - VsanUpgradeSystemUpgradeHistoryDiskGroupOpTypeAdd = VsanUpgradeSystemUpgradeHistoryDiskGroupOpType("add") - VsanUpgradeSystemUpgradeHistoryDiskGroupOpTypeRemove = VsanUpgradeSystemUpgradeHistoryDiskGroupOpType("remove") -) - -func init() { - t["VsanUpgradeSystemUpgradeHistoryDiskGroupOpType"] = reflect.TypeOf((*VsanUpgradeSystemUpgradeHistoryDiskGroupOpType)(nil)).Elem() -} - -type WeekOfMonth string - -const ( - WeekOfMonthFirst = WeekOfMonth("first") - WeekOfMonthSecond = WeekOfMonth("second") - WeekOfMonthThird = WeekOfMonth("third") - WeekOfMonthFourth = WeekOfMonth("fourth") - WeekOfMonthLast = WeekOfMonth("last") -) - -func init() { - t["WeekOfMonth"] = reflect.TypeOf((*WeekOfMonth)(nil)).Elem() -} - -type WillLoseHAProtectionResolution string - -const ( - WillLoseHAProtectionResolutionSvmotion = WillLoseHAProtectionResolution("svmotion") - WillLoseHAProtectionResolutionRelocate = WillLoseHAProtectionResolution("relocate") -) - -func init() { - t["WillLoseHAProtectionResolution"] = reflect.TypeOf((*WillLoseHAProtectionResolution)(nil)).Elem() -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/fault.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/fault.go deleted file mode 100644 index c2503fa5..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/fault.go +++ /dev/null @@ -1,32 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package types - -type HasFault interface { - Fault() BaseMethodFault -} - -func IsFileNotFound(err error) bool { - if f, ok := err.(HasFault); ok { - switch f.Fault().(type) { - case *FileNotFound: - return true - } - } - - return false -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/helpers.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/helpers.go deleted file mode 100644 index 75c82cab..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/helpers.go +++ /dev/null @@ -1,25 +0,0 @@ -/* -Copyright (c) 2015 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package types - -func NewBool(v bool) *bool { - return &v -} - -func NewReference(r ManagedObjectReference) *ManagedObjectReference { - return &r -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/if.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/if.go deleted file mode 100644 index 5894e906..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/if.go +++ /dev/null @@ -1,3287 +0,0 @@ -/* -Copyright (c) 2014-2016 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package types - -import "reflect" - -func (b *Action) GetAction() *Action { return b } - -type BaseAction interface { - GetAction() *Action -} - -func init() { - t["BaseAction"] = reflect.TypeOf((*Action)(nil)).Elem() -} - -func (b *ActiveDirectoryFault) GetActiveDirectoryFault() *ActiveDirectoryFault { return b } - -type BaseActiveDirectoryFault interface { - GetActiveDirectoryFault() *ActiveDirectoryFault -} - -func init() { - t["BaseActiveDirectoryFault"] = reflect.TypeOf((*ActiveDirectoryFault)(nil)).Elem() -} - -func (b *AlarmAction) GetAlarmAction() *AlarmAction { return b } - -type BaseAlarmAction interface { - GetAlarmAction() *AlarmAction -} - -func init() { - t["BaseAlarmAction"] = reflect.TypeOf((*AlarmAction)(nil)).Elem() -} - -func (b *AlarmEvent) GetAlarmEvent() *AlarmEvent { return b } - -type BaseAlarmEvent interface { - GetAlarmEvent() *AlarmEvent -} - -func init() { - t["BaseAlarmEvent"] = reflect.TypeOf((*AlarmEvent)(nil)).Elem() -} - -func (b *AlarmExpression) GetAlarmExpression() *AlarmExpression { return b } - -type BaseAlarmExpression interface { - GetAlarmExpression() *AlarmExpression -} - -func init() { - t["BaseAlarmExpression"] = reflect.TypeOf((*AlarmExpression)(nil)).Elem() -} - -func (b *AlarmSpec) GetAlarmSpec() *AlarmSpec { return b } - -type BaseAlarmSpec interface { - GetAlarmSpec() *AlarmSpec -} - -func init() { - t["BaseAlarmSpec"] = reflect.TypeOf((*AlarmSpec)(nil)).Elem() -} - -func (b *AnswerFileCreateSpec) GetAnswerFileCreateSpec() *AnswerFileCreateSpec { return b } - -type BaseAnswerFileCreateSpec interface { - GetAnswerFileCreateSpec() *AnswerFileCreateSpec -} - -func init() { - t["BaseAnswerFileCreateSpec"] = reflect.TypeOf((*AnswerFileCreateSpec)(nil)).Elem() -} - -func (b *ApplyProfile) GetApplyProfile() *ApplyProfile { return b } - -type BaseApplyProfile interface { - GetApplyProfile() *ApplyProfile -} - -func init() { - t["BaseApplyProfile"] = reflect.TypeOf((*ApplyProfile)(nil)).Elem() -} - -func (b *ArrayUpdateSpec) GetArrayUpdateSpec() *ArrayUpdateSpec { return b } - -type BaseArrayUpdateSpec interface { - GetArrayUpdateSpec() *ArrayUpdateSpec -} - -func init() { - t["BaseArrayUpdateSpec"] = reflect.TypeOf((*ArrayUpdateSpec)(nil)).Elem() -} - -func (b *AuthorizationEvent) GetAuthorizationEvent() *AuthorizationEvent { return b } - -type BaseAuthorizationEvent interface { - GetAuthorizationEvent() *AuthorizationEvent -} - -func init() { - t["BaseAuthorizationEvent"] = reflect.TypeOf((*AuthorizationEvent)(nil)).Elem() -} - -func (b *CannotAccessNetwork) GetCannotAccessNetwork() *CannotAccessNetwork { return b } - -type BaseCannotAccessNetwork interface { - GetCannotAccessNetwork() *CannotAccessNetwork -} - -func init() { - t["BaseCannotAccessNetwork"] = reflect.TypeOf((*CannotAccessNetwork)(nil)).Elem() -} - -func (b *CannotAccessVmComponent) GetCannotAccessVmComponent() *CannotAccessVmComponent { return b } - -type BaseCannotAccessVmComponent interface { - GetCannotAccessVmComponent() *CannotAccessVmComponent -} - -func init() { - t["BaseCannotAccessVmComponent"] = reflect.TypeOf((*CannotAccessVmComponent)(nil)).Elem() -} - -func (b *CannotAccessVmDevice) GetCannotAccessVmDevice() *CannotAccessVmDevice { return b } - -type BaseCannotAccessVmDevice interface { - GetCannotAccessVmDevice() *CannotAccessVmDevice -} - -func init() { - t["BaseCannotAccessVmDevice"] = reflect.TypeOf((*CannotAccessVmDevice)(nil)).Elem() -} - -func (b *CannotAccessVmDisk) GetCannotAccessVmDisk() *CannotAccessVmDisk { return b } - -type BaseCannotAccessVmDisk interface { - GetCannotAccessVmDisk() *CannotAccessVmDisk -} - -func init() { - t["BaseCannotAccessVmDisk"] = reflect.TypeOf((*CannotAccessVmDisk)(nil)).Elem() -} - -func (b *CannotMoveVsanEnabledHost) GetCannotMoveVsanEnabledHost() *CannotMoveVsanEnabledHost { - return b -} - -type BaseCannotMoveVsanEnabledHost interface { - GetCannotMoveVsanEnabledHost() *CannotMoveVsanEnabledHost -} - -func init() { - t["BaseCannotMoveVsanEnabledHost"] = reflect.TypeOf((*CannotMoveVsanEnabledHost)(nil)).Elem() -} - -func (b *ClusterAction) GetClusterAction() *ClusterAction { return b } - -type BaseClusterAction interface { - GetClusterAction() *ClusterAction -} - -func init() { - t["BaseClusterAction"] = reflect.TypeOf((*ClusterAction)(nil)).Elem() -} - -func (b *ClusterDasAdmissionControlInfo) GetClusterDasAdmissionControlInfo() *ClusterDasAdmissionControlInfo { - return b -} - -type BaseClusterDasAdmissionControlInfo interface { - GetClusterDasAdmissionControlInfo() *ClusterDasAdmissionControlInfo -} - -func init() { - t["BaseClusterDasAdmissionControlInfo"] = reflect.TypeOf((*ClusterDasAdmissionControlInfo)(nil)).Elem() -} - -func (b *ClusterDasAdmissionControlPolicy) GetClusterDasAdmissionControlPolicy() *ClusterDasAdmissionControlPolicy { - return b -} - -type BaseClusterDasAdmissionControlPolicy interface { - GetClusterDasAdmissionControlPolicy() *ClusterDasAdmissionControlPolicy -} - -func init() { - t["BaseClusterDasAdmissionControlPolicy"] = reflect.TypeOf((*ClusterDasAdmissionControlPolicy)(nil)).Elem() -} - -func (b *ClusterDasAdvancedRuntimeInfo) GetClusterDasAdvancedRuntimeInfo() *ClusterDasAdvancedRuntimeInfo { - return b -} - -type BaseClusterDasAdvancedRuntimeInfo interface { - GetClusterDasAdvancedRuntimeInfo() *ClusterDasAdvancedRuntimeInfo -} - -func init() { - t["BaseClusterDasAdvancedRuntimeInfo"] = reflect.TypeOf((*ClusterDasAdvancedRuntimeInfo)(nil)).Elem() -} - -func (b *ClusterDasData) GetClusterDasData() *ClusterDasData { return b } - -type BaseClusterDasData interface { - GetClusterDasData() *ClusterDasData -} - -func init() { - t["BaseClusterDasData"] = reflect.TypeOf((*ClusterDasData)(nil)).Elem() -} - -func (b *ClusterDasHostInfo) GetClusterDasHostInfo() *ClusterDasHostInfo { return b } - -type BaseClusterDasHostInfo interface { - GetClusterDasHostInfo() *ClusterDasHostInfo -} - -func init() { - t["BaseClusterDasHostInfo"] = reflect.TypeOf((*ClusterDasHostInfo)(nil)).Elem() -} - -func (b *ClusterDrsFaultsFaultsByVm) GetClusterDrsFaultsFaultsByVm() *ClusterDrsFaultsFaultsByVm { - return b -} - -type BaseClusterDrsFaultsFaultsByVm interface { - GetClusterDrsFaultsFaultsByVm() *ClusterDrsFaultsFaultsByVm -} - -func init() { - t["BaseClusterDrsFaultsFaultsByVm"] = reflect.TypeOf((*ClusterDrsFaultsFaultsByVm)(nil)).Elem() -} - -func (b *ClusterEvent) GetClusterEvent() *ClusterEvent { return b } - -type BaseClusterEvent interface { - GetClusterEvent() *ClusterEvent -} - -func init() { - t["BaseClusterEvent"] = reflect.TypeOf((*ClusterEvent)(nil)).Elem() -} - -func (b *ClusterGroupInfo) GetClusterGroupInfo() *ClusterGroupInfo { return b } - -type BaseClusterGroupInfo interface { - GetClusterGroupInfo() *ClusterGroupInfo -} - -func init() { - t["BaseClusterGroupInfo"] = reflect.TypeOf((*ClusterGroupInfo)(nil)).Elem() -} - -func (b *ClusterOvercommittedEvent) GetClusterOvercommittedEvent() *ClusterOvercommittedEvent { - return b -} - -type BaseClusterOvercommittedEvent interface { - GetClusterOvercommittedEvent() *ClusterOvercommittedEvent -} - -func init() { - t["BaseClusterOvercommittedEvent"] = reflect.TypeOf((*ClusterOvercommittedEvent)(nil)).Elem() -} - -func (b *ClusterProfileConfigSpec) GetClusterProfileConfigSpec() *ClusterProfileConfigSpec { return b } - -type BaseClusterProfileConfigSpec interface { - GetClusterProfileConfigSpec() *ClusterProfileConfigSpec -} - -func init() { - t["BaseClusterProfileConfigSpec"] = reflect.TypeOf((*ClusterProfileConfigSpec)(nil)).Elem() -} - -func (b *ClusterProfileCreateSpec) GetClusterProfileCreateSpec() *ClusterProfileCreateSpec { return b } - -type BaseClusterProfileCreateSpec interface { - GetClusterProfileCreateSpec() *ClusterProfileCreateSpec -} - -func init() { - t["BaseClusterProfileCreateSpec"] = reflect.TypeOf((*ClusterProfileCreateSpec)(nil)).Elem() -} - -func (b *ClusterRuleInfo) GetClusterRuleInfo() *ClusterRuleInfo { return b } - -type BaseClusterRuleInfo interface { - GetClusterRuleInfo() *ClusterRuleInfo -} - -func init() { - t["BaseClusterRuleInfo"] = reflect.TypeOf((*ClusterRuleInfo)(nil)).Elem() -} - -func (b *ClusterSlotPolicy) GetClusterSlotPolicy() *ClusterSlotPolicy { return b } - -type BaseClusterSlotPolicy interface { - GetClusterSlotPolicy() *ClusterSlotPolicy -} - -func init() { - t["BaseClusterSlotPolicy"] = reflect.TypeOf((*ClusterSlotPolicy)(nil)).Elem() -} - -func (b *ClusterStatusChangedEvent) GetClusterStatusChangedEvent() *ClusterStatusChangedEvent { - return b -} - -type BaseClusterStatusChangedEvent interface { - GetClusterStatusChangedEvent() *ClusterStatusChangedEvent -} - -func init() { - t["BaseClusterStatusChangedEvent"] = reflect.TypeOf((*ClusterStatusChangedEvent)(nil)).Elem() -} - -func (b *ComputeResourceConfigInfo) GetComputeResourceConfigInfo() *ComputeResourceConfigInfo { - return b -} - -type BaseComputeResourceConfigInfo interface { - GetComputeResourceConfigInfo() *ComputeResourceConfigInfo -} - -func init() { - t["BaseComputeResourceConfigInfo"] = reflect.TypeOf((*ComputeResourceConfigInfo)(nil)).Elem() -} - -func (b *ComputeResourceConfigSpec) GetComputeResourceConfigSpec() *ComputeResourceConfigSpec { - return b -} - -type BaseComputeResourceConfigSpec interface { - GetComputeResourceConfigSpec() *ComputeResourceConfigSpec -} - -func init() { - t["BaseComputeResourceConfigSpec"] = reflect.TypeOf((*ComputeResourceConfigSpec)(nil)).Elem() -} - -func (b *ComputeResourceSummary) GetComputeResourceSummary() *ComputeResourceSummary { return b } - -type BaseComputeResourceSummary interface { - GetComputeResourceSummary() *ComputeResourceSummary -} - -func init() { - t["BaseComputeResourceSummary"] = reflect.TypeOf((*ComputeResourceSummary)(nil)).Elem() -} - -func (b *CpuIncompatible) GetCpuIncompatible() *CpuIncompatible { return b } - -type BaseCpuIncompatible interface { - GetCpuIncompatible() *CpuIncompatible -} - -func init() { - t["BaseCpuIncompatible"] = reflect.TypeOf((*CpuIncompatible)(nil)).Elem() -} - -func (b *CustomFieldDefEvent) GetCustomFieldDefEvent() *CustomFieldDefEvent { return b } - -type BaseCustomFieldDefEvent interface { - GetCustomFieldDefEvent() *CustomFieldDefEvent -} - -func init() { - t["BaseCustomFieldDefEvent"] = reflect.TypeOf((*CustomFieldDefEvent)(nil)).Elem() -} - -func (b *CustomFieldEvent) GetCustomFieldEvent() *CustomFieldEvent { return b } - -type BaseCustomFieldEvent interface { - GetCustomFieldEvent() *CustomFieldEvent -} - -func init() { - t["BaseCustomFieldEvent"] = reflect.TypeOf((*CustomFieldEvent)(nil)).Elem() -} - -func (b *CustomFieldValue) GetCustomFieldValue() *CustomFieldValue { return b } - -type BaseCustomFieldValue interface { - GetCustomFieldValue() *CustomFieldValue -} - -func init() { - t["BaseCustomFieldValue"] = reflect.TypeOf((*CustomFieldValue)(nil)).Elem() -} - -func (b *CustomizationEvent) GetCustomizationEvent() *CustomizationEvent { return b } - -type BaseCustomizationEvent interface { - GetCustomizationEvent() *CustomizationEvent -} - -func init() { - t["BaseCustomizationEvent"] = reflect.TypeOf((*CustomizationEvent)(nil)).Elem() -} - -func (b *CustomizationFailed) GetCustomizationFailed() *CustomizationFailed { return b } - -type BaseCustomizationFailed interface { - GetCustomizationFailed() *CustomizationFailed -} - -func init() { - t["BaseCustomizationFailed"] = reflect.TypeOf((*CustomizationFailed)(nil)).Elem() -} - -func (b *CustomizationFault) GetCustomizationFault() *CustomizationFault { return b } - -type BaseCustomizationFault interface { - GetCustomizationFault() *CustomizationFault -} - -func init() { - t["BaseCustomizationFault"] = reflect.TypeOf((*CustomizationFault)(nil)).Elem() -} - -func (b *CustomizationIdentitySettings) GetCustomizationIdentitySettings() *CustomizationIdentitySettings { - return b -} - -type BaseCustomizationIdentitySettings interface { - GetCustomizationIdentitySettings() *CustomizationIdentitySettings -} - -func init() { - t["BaseCustomizationIdentitySettings"] = reflect.TypeOf((*CustomizationIdentitySettings)(nil)).Elem() -} - -func (b *CustomizationIpGenerator) GetCustomizationIpGenerator() *CustomizationIpGenerator { return b } - -type BaseCustomizationIpGenerator interface { - GetCustomizationIpGenerator() *CustomizationIpGenerator -} - -func init() { - t["BaseCustomizationIpGenerator"] = reflect.TypeOf((*CustomizationIpGenerator)(nil)).Elem() -} - -func (b *CustomizationIpV6Generator) GetCustomizationIpV6Generator() *CustomizationIpV6Generator { - return b -} - -type BaseCustomizationIpV6Generator interface { - GetCustomizationIpV6Generator() *CustomizationIpV6Generator -} - -func init() { - t["BaseCustomizationIpV6Generator"] = reflect.TypeOf((*CustomizationIpV6Generator)(nil)).Elem() -} - -func (b *CustomizationName) GetCustomizationName() *CustomizationName { return b } - -type BaseCustomizationName interface { - GetCustomizationName() *CustomizationName -} - -func init() { - t["BaseCustomizationName"] = reflect.TypeOf((*CustomizationName)(nil)).Elem() -} - -func (b *CustomizationOptions) GetCustomizationOptions() *CustomizationOptions { return b } - -type BaseCustomizationOptions interface { - GetCustomizationOptions() *CustomizationOptions -} - -func init() { - t["BaseCustomizationOptions"] = reflect.TypeOf((*CustomizationOptions)(nil)).Elem() -} - -func (b *DVPortSetting) GetDVPortSetting() *DVPortSetting { return b } - -type BaseDVPortSetting interface { - GetDVPortSetting() *DVPortSetting -} - -func init() { - t["BaseDVPortSetting"] = reflect.TypeOf((*DVPortSetting)(nil)).Elem() -} - -func (b *DVPortgroupEvent) GetDVPortgroupEvent() *DVPortgroupEvent { return b } - -type BaseDVPortgroupEvent interface { - GetDVPortgroupEvent() *DVPortgroupEvent -} - -func init() { - t["BaseDVPortgroupEvent"] = reflect.TypeOf((*DVPortgroupEvent)(nil)).Elem() -} - -func (b *DVPortgroupPolicy) GetDVPortgroupPolicy() *DVPortgroupPolicy { return b } - -type BaseDVPortgroupPolicy interface { - GetDVPortgroupPolicy() *DVPortgroupPolicy -} - -func init() { - t["BaseDVPortgroupPolicy"] = reflect.TypeOf((*DVPortgroupPolicy)(nil)).Elem() -} - -func (b *DVSConfigInfo) GetDVSConfigInfo() *DVSConfigInfo { return b } - -type BaseDVSConfigInfo interface { - GetDVSConfigInfo() *DVSConfigInfo -} - -func init() { - t["BaseDVSConfigInfo"] = reflect.TypeOf((*DVSConfigInfo)(nil)).Elem() -} - -func (b *DVSConfigSpec) GetDVSConfigSpec() *DVSConfigSpec { return b } - -type BaseDVSConfigSpec interface { - GetDVSConfigSpec() *DVSConfigSpec -} - -func init() { - t["BaseDVSConfigSpec"] = reflect.TypeOf((*DVSConfigSpec)(nil)).Elem() -} - -func (b *DVSFeatureCapability) GetDVSFeatureCapability() *DVSFeatureCapability { return b } - -type BaseDVSFeatureCapability interface { - GetDVSFeatureCapability() *DVSFeatureCapability -} - -func init() { - t["BaseDVSFeatureCapability"] = reflect.TypeOf((*DVSFeatureCapability)(nil)).Elem() -} - -func (b *DVSHealthCheckCapability) GetDVSHealthCheckCapability() *DVSHealthCheckCapability { return b } - -type BaseDVSHealthCheckCapability interface { - GetDVSHealthCheckCapability() *DVSHealthCheckCapability -} - -func init() { - t["BaseDVSHealthCheckCapability"] = reflect.TypeOf((*DVSHealthCheckCapability)(nil)).Elem() -} - -func (b *DVSHealthCheckConfig) GetDVSHealthCheckConfig() *DVSHealthCheckConfig { return b } - -type BaseDVSHealthCheckConfig interface { - GetDVSHealthCheckConfig() *DVSHealthCheckConfig -} - -func init() { - t["BaseDVSHealthCheckConfig"] = reflect.TypeOf((*DVSHealthCheckConfig)(nil)).Elem() -} - -func (b *DVSUplinkPortPolicy) GetDVSUplinkPortPolicy() *DVSUplinkPortPolicy { return b } - -type BaseDVSUplinkPortPolicy interface { - GetDVSUplinkPortPolicy() *DVSUplinkPortPolicy -} - -func init() { - t["BaseDVSUplinkPortPolicy"] = reflect.TypeOf((*DVSUplinkPortPolicy)(nil)).Elem() -} - -func (b *DailyTaskScheduler) GetDailyTaskScheduler() *DailyTaskScheduler { return b } - -type BaseDailyTaskScheduler interface { - GetDailyTaskScheduler() *DailyTaskScheduler -} - -func init() { - t["BaseDailyTaskScheduler"] = reflect.TypeOf((*DailyTaskScheduler)(nil)).Elem() -} - -func (b *DatacenterEvent) GetDatacenterEvent() *DatacenterEvent { return b } - -type BaseDatacenterEvent interface { - GetDatacenterEvent() *DatacenterEvent -} - -func init() { - t["BaseDatacenterEvent"] = reflect.TypeOf((*DatacenterEvent)(nil)).Elem() -} - -func (b *DatastoreEvent) GetDatastoreEvent() *DatastoreEvent { return b } - -type BaseDatastoreEvent interface { - GetDatastoreEvent() *DatastoreEvent -} - -func init() { - t["BaseDatastoreEvent"] = reflect.TypeOf((*DatastoreEvent)(nil)).Elem() -} - -func (b *DatastoreFileEvent) GetDatastoreFileEvent() *DatastoreFileEvent { return b } - -type BaseDatastoreFileEvent interface { - GetDatastoreFileEvent() *DatastoreFileEvent -} - -func init() { - t["BaseDatastoreFileEvent"] = reflect.TypeOf((*DatastoreFileEvent)(nil)).Elem() -} - -func (b *DatastoreInfo) GetDatastoreInfo() *DatastoreInfo { return b } - -type BaseDatastoreInfo interface { - GetDatastoreInfo() *DatastoreInfo -} - -func init() { - t["BaseDatastoreInfo"] = reflect.TypeOf((*DatastoreInfo)(nil)).Elem() -} - -func (b *DatastoreNotWritableOnHost) GetDatastoreNotWritableOnHost() *DatastoreNotWritableOnHost { - return b -} - -type BaseDatastoreNotWritableOnHost interface { - GetDatastoreNotWritableOnHost() *DatastoreNotWritableOnHost -} - -func init() { - t["BaseDatastoreNotWritableOnHost"] = reflect.TypeOf((*DatastoreNotWritableOnHost)(nil)).Elem() -} - -func (b *Description) GetDescription() *Description { return b } - -type BaseDescription interface { - GetDescription() *Description -} - -func init() { - t["BaseDescription"] = reflect.TypeOf((*Description)(nil)).Elem() -} - -func (b *DeviceBackingNotSupported) GetDeviceBackingNotSupported() *DeviceBackingNotSupported { - return b -} - -type BaseDeviceBackingNotSupported interface { - GetDeviceBackingNotSupported() *DeviceBackingNotSupported -} - -func init() { - t["BaseDeviceBackingNotSupported"] = reflect.TypeOf((*DeviceBackingNotSupported)(nil)).Elem() -} - -func (b *DeviceNotSupported) GetDeviceNotSupported() *DeviceNotSupported { return b } - -type BaseDeviceNotSupported interface { - GetDeviceNotSupported() *DeviceNotSupported -} - -func init() { - t["BaseDeviceNotSupported"] = reflect.TypeOf((*DeviceNotSupported)(nil)).Elem() -} - -func (b *DiskNotSupported) GetDiskNotSupported() *DiskNotSupported { return b } - -type BaseDiskNotSupported interface { - GetDiskNotSupported() *DiskNotSupported -} - -func init() { - t["BaseDiskNotSupported"] = reflect.TypeOf((*DiskNotSupported)(nil)).Elem() -} - -func (b *DistributedVirtualSwitchHostMemberBacking) GetDistributedVirtualSwitchHostMemberBacking() *DistributedVirtualSwitchHostMemberBacking { - return b -} - -type BaseDistributedVirtualSwitchHostMemberBacking interface { - GetDistributedVirtualSwitchHostMemberBacking() *DistributedVirtualSwitchHostMemberBacking -} - -func init() { - t["BaseDistributedVirtualSwitchHostMemberBacking"] = reflect.TypeOf((*DistributedVirtualSwitchHostMemberBacking)(nil)).Elem() -} - -func (b *DistributedVirtualSwitchManagerHostDvsFilterSpec) GetDistributedVirtualSwitchManagerHostDvsFilterSpec() *DistributedVirtualSwitchManagerHostDvsFilterSpec { - return b -} - -type BaseDistributedVirtualSwitchManagerHostDvsFilterSpec interface { - GetDistributedVirtualSwitchManagerHostDvsFilterSpec() *DistributedVirtualSwitchManagerHostDvsFilterSpec -} - -func init() { - t["BaseDistributedVirtualSwitchManagerHostDvsFilterSpec"] = reflect.TypeOf((*DistributedVirtualSwitchManagerHostDvsFilterSpec)(nil)).Elem() -} - -func (b *DvsEvent) GetDvsEvent() *DvsEvent { return b } - -type BaseDvsEvent interface { - GetDvsEvent() *DvsEvent -} - -func init() { - t["BaseDvsEvent"] = reflect.TypeOf((*DvsEvent)(nil)).Elem() -} - -func (b *DvsFault) GetDvsFault() *DvsFault { return b } - -type BaseDvsFault interface { - GetDvsFault() *DvsFault -} - -func init() { - t["BaseDvsFault"] = reflect.TypeOf((*DvsFault)(nil)).Elem() -} - -func (b *DvsFilterConfig) GetDvsFilterConfig() *DvsFilterConfig { return b } - -type BaseDvsFilterConfig interface { - GetDvsFilterConfig() *DvsFilterConfig -} - -func init() { - t["BaseDvsFilterConfig"] = reflect.TypeOf((*DvsFilterConfig)(nil)).Elem() -} - -func (b *DvsHealthStatusChangeEvent) GetDvsHealthStatusChangeEvent() *DvsHealthStatusChangeEvent { - return b -} - -type BaseDvsHealthStatusChangeEvent interface { - GetDvsHealthStatusChangeEvent() *DvsHealthStatusChangeEvent -} - -func init() { - t["BaseDvsHealthStatusChangeEvent"] = reflect.TypeOf((*DvsHealthStatusChangeEvent)(nil)).Elem() -} - -func (b *DvsIpPort) GetDvsIpPort() *DvsIpPort { return b } - -type BaseDvsIpPort interface { - GetDvsIpPort() *DvsIpPort -} - -func init() { - t["BaseDvsIpPort"] = reflect.TypeOf((*DvsIpPort)(nil)).Elem() -} - -func (b *DvsNetworkRuleAction) GetDvsNetworkRuleAction() *DvsNetworkRuleAction { return b } - -type BaseDvsNetworkRuleAction interface { - GetDvsNetworkRuleAction() *DvsNetworkRuleAction -} - -func init() { - t["BaseDvsNetworkRuleAction"] = reflect.TypeOf((*DvsNetworkRuleAction)(nil)).Elem() -} - -func (b *DvsNetworkRuleQualifier) GetDvsNetworkRuleQualifier() *DvsNetworkRuleQualifier { return b } - -type BaseDvsNetworkRuleQualifier interface { - GetDvsNetworkRuleQualifier() *DvsNetworkRuleQualifier -} - -func init() { - t["BaseDvsNetworkRuleQualifier"] = reflect.TypeOf((*DvsNetworkRuleQualifier)(nil)).Elem() -} - -func (b *DvsTrafficFilterConfig) GetDvsTrafficFilterConfig() *DvsTrafficFilterConfig { return b } - -type BaseDvsTrafficFilterConfig interface { - GetDvsTrafficFilterConfig() *DvsTrafficFilterConfig -} - -func init() { - t["BaseDvsTrafficFilterConfig"] = reflect.TypeOf((*DvsTrafficFilterConfig)(nil)).Elem() -} - -func (b *DvsVNicProfile) GetDvsVNicProfile() *DvsVNicProfile { return b } - -type BaseDvsVNicProfile interface { - GetDvsVNicProfile() *DvsVNicProfile -} - -func init() { - t["BaseDvsVNicProfile"] = reflect.TypeOf((*DvsVNicProfile)(nil)).Elem() -} - -func (b *DynamicData) GetDynamicData() *DynamicData { return b } - -type BaseDynamicData interface { - GetDynamicData() *DynamicData -} - -func init() { - t["BaseDynamicData"] = reflect.TypeOf((*DynamicData)(nil)).Elem() -} - -func (b *EVCAdmissionFailed) GetEVCAdmissionFailed() *EVCAdmissionFailed { return b } - -type BaseEVCAdmissionFailed interface { - GetEVCAdmissionFailed() *EVCAdmissionFailed -} - -func init() { - t["BaseEVCAdmissionFailed"] = reflect.TypeOf((*EVCAdmissionFailed)(nil)).Elem() -} - -func (b *EVCConfigFault) GetEVCConfigFault() *EVCConfigFault { return b } - -type BaseEVCConfigFault interface { - GetEVCConfigFault() *EVCConfigFault -} - -func init() { - t["BaseEVCConfigFault"] = reflect.TypeOf((*EVCConfigFault)(nil)).Elem() -} - -func (b *ElementDescription) GetElementDescription() *ElementDescription { return b } - -type BaseElementDescription interface { - GetElementDescription() *ElementDescription -} - -func init() { - t["BaseElementDescription"] = reflect.TypeOf((*ElementDescription)(nil)).Elem() -} - -func (b *EnteredStandbyModeEvent) GetEnteredStandbyModeEvent() *EnteredStandbyModeEvent { return b } - -type BaseEnteredStandbyModeEvent interface { - GetEnteredStandbyModeEvent() *EnteredStandbyModeEvent -} - -func init() { - t["BaseEnteredStandbyModeEvent"] = reflect.TypeOf((*EnteredStandbyModeEvent)(nil)).Elem() -} - -func (b *EnteringStandbyModeEvent) GetEnteringStandbyModeEvent() *EnteringStandbyModeEvent { return b } - -type BaseEnteringStandbyModeEvent interface { - GetEnteringStandbyModeEvent() *EnteringStandbyModeEvent -} - -func init() { - t["BaseEnteringStandbyModeEvent"] = reflect.TypeOf((*EnteringStandbyModeEvent)(nil)).Elem() -} - -func (b *EntityEventArgument) GetEntityEventArgument() *EntityEventArgument { return b } - -type BaseEntityEventArgument interface { - GetEntityEventArgument() *EntityEventArgument -} - -func init() { - t["BaseEntityEventArgument"] = reflect.TypeOf((*EntityEventArgument)(nil)).Elem() -} - -func (b *Event) GetEvent() *Event { return b } - -type BaseEvent interface { - GetEvent() *Event -} - -func init() { - t["BaseEvent"] = reflect.TypeOf((*Event)(nil)).Elem() -} - -func (b *EventArgument) GetEventArgument() *EventArgument { return b } - -type BaseEventArgument interface { - GetEventArgument() *EventArgument -} - -func init() { - t["BaseEventArgument"] = reflect.TypeOf((*EventArgument)(nil)).Elem() -} - -func (b *ExitStandbyModeFailedEvent) GetExitStandbyModeFailedEvent() *ExitStandbyModeFailedEvent { - return b -} - -type BaseExitStandbyModeFailedEvent interface { - GetExitStandbyModeFailedEvent() *ExitStandbyModeFailedEvent -} - -func init() { - t["BaseExitStandbyModeFailedEvent"] = reflect.TypeOf((*ExitStandbyModeFailedEvent)(nil)).Elem() -} - -func (b *ExitedStandbyModeEvent) GetExitedStandbyModeEvent() *ExitedStandbyModeEvent { return b } - -type BaseExitedStandbyModeEvent interface { - GetExitedStandbyModeEvent() *ExitedStandbyModeEvent -} - -func init() { - t["BaseExitedStandbyModeEvent"] = reflect.TypeOf((*ExitedStandbyModeEvent)(nil)).Elem() -} - -func (b *ExitingStandbyModeEvent) GetExitingStandbyModeEvent() *ExitingStandbyModeEvent { return b } - -type BaseExitingStandbyModeEvent interface { - GetExitingStandbyModeEvent() *ExitingStandbyModeEvent -} - -func init() { - t["BaseExitingStandbyModeEvent"] = reflect.TypeOf((*ExitingStandbyModeEvent)(nil)).Elem() -} - -func (b *ExpiredFeatureLicense) GetExpiredFeatureLicense() *ExpiredFeatureLicense { return b } - -type BaseExpiredFeatureLicense interface { - GetExpiredFeatureLicense() *ExpiredFeatureLicense -} - -func init() { - t["BaseExpiredFeatureLicense"] = reflect.TypeOf((*ExpiredFeatureLicense)(nil)).Elem() -} - -func (b *FaultToleranceConfigInfo) GetFaultToleranceConfigInfo() *FaultToleranceConfigInfo { return b } - -type BaseFaultToleranceConfigInfo interface { - GetFaultToleranceConfigInfo() *FaultToleranceConfigInfo -} - -func init() { - t["BaseFaultToleranceConfigInfo"] = reflect.TypeOf((*FaultToleranceConfigInfo)(nil)).Elem() -} - -func (b *FcoeFault) GetFcoeFault() *FcoeFault { return b } - -type BaseFcoeFault interface { - GetFcoeFault() *FcoeFault -} - -func init() { - t["BaseFcoeFault"] = reflect.TypeOf((*FcoeFault)(nil)).Elem() -} - -func (b *FileBackedVirtualDiskSpec) GetFileBackedVirtualDiskSpec() *FileBackedVirtualDiskSpec { - return b -} - -type BaseFileBackedVirtualDiskSpec interface { - GetFileBackedVirtualDiskSpec() *FileBackedVirtualDiskSpec -} - -func init() { - t["BaseFileBackedVirtualDiskSpec"] = reflect.TypeOf((*FileBackedVirtualDiskSpec)(nil)).Elem() -} - -func (b *FileFault) GetFileFault() *FileFault { return b } - -type BaseFileFault interface { - GetFileFault() *FileFault -} - -func init() { - t["BaseFileFault"] = reflect.TypeOf((*FileFault)(nil)).Elem() -} - -func (b *FileInfo) GetFileInfo() *FileInfo { return b } - -type BaseFileInfo interface { - GetFileInfo() *FileInfo -} - -func init() { - t["BaseFileInfo"] = reflect.TypeOf((*FileInfo)(nil)).Elem() -} - -func (b *FileQuery) GetFileQuery() *FileQuery { return b } - -type BaseFileQuery interface { - GetFileQuery() *FileQuery -} - -func init() { - t["BaseFileQuery"] = reflect.TypeOf((*FileQuery)(nil)).Elem() -} - -func (b *GatewayConnectFault) GetGatewayConnectFault() *GatewayConnectFault { return b } - -type BaseGatewayConnectFault interface { - GetGatewayConnectFault() *GatewayConnectFault -} - -func init() { - t["BaseGatewayConnectFault"] = reflect.TypeOf((*GatewayConnectFault)(nil)).Elem() -} - -func (b *GatewayToHostConnectFault) GetGatewayToHostConnectFault() *GatewayToHostConnectFault { - return b -} - -type BaseGatewayToHostConnectFault interface { - GetGatewayToHostConnectFault() *GatewayToHostConnectFault -} - -func init() { - t["BaseGatewayToHostConnectFault"] = reflect.TypeOf((*GatewayToHostConnectFault)(nil)).Elem() -} - -func (b *GeneralEvent) GetGeneralEvent() *GeneralEvent { return b } - -type BaseGeneralEvent interface { - GetGeneralEvent() *GeneralEvent -} - -func init() { - t["BaseGeneralEvent"] = reflect.TypeOf((*GeneralEvent)(nil)).Elem() -} - -func (b *GuestAuthSubject) GetGuestAuthSubject() *GuestAuthSubject { return b } - -type BaseGuestAuthSubject interface { - GetGuestAuthSubject() *GuestAuthSubject -} - -func init() { - t["BaseGuestAuthSubject"] = reflect.TypeOf((*GuestAuthSubject)(nil)).Elem() -} - -func (b *GuestAuthentication) GetGuestAuthentication() *GuestAuthentication { return b } - -type BaseGuestAuthentication interface { - GetGuestAuthentication() *GuestAuthentication -} - -func init() { - t["BaseGuestAuthentication"] = reflect.TypeOf((*GuestAuthentication)(nil)).Elem() -} - -func (b *GuestFileAttributes) GetGuestFileAttributes() *GuestFileAttributes { return b } - -type BaseGuestFileAttributes interface { - GetGuestFileAttributes() *GuestFileAttributes -} - -func init() { - t["BaseGuestFileAttributes"] = reflect.TypeOf((*GuestFileAttributes)(nil)).Elem() -} - -func (b *GuestOperationsFault) GetGuestOperationsFault() *GuestOperationsFault { return b } - -type BaseGuestOperationsFault interface { - GetGuestOperationsFault() *GuestOperationsFault -} - -func init() { - t["BaseGuestOperationsFault"] = reflect.TypeOf((*GuestOperationsFault)(nil)).Elem() -} - -func (b *GuestProgramSpec) GetGuestProgramSpec() *GuestProgramSpec { return b } - -type BaseGuestProgramSpec interface { - GetGuestProgramSpec() *GuestProgramSpec -} - -func init() { - t["BaseGuestProgramSpec"] = reflect.TypeOf((*GuestProgramSpec)(nil)).Elem() -} - -func (b *GuestRegValueDataSpec) GetGuestRegValueDataSpec() *GuestRegValueDataSpec { return b } - -type BaseGuestRegValueDataSpec interface { - GetGuestRegValueDataSpec() *GuestRegValueDataSpec -} - -func init() { - t["BaseGuestRegValueDataSpec"] = reflect.TypeOf((*GuestRegValueDataSpec)(nil)).Elem() -} - -func (b *GuestRegistryFault) GetGuestRegistryFault() *GuestRegistryFault { return b } - -type BaseGuestRegistryFault interface { - GetGuestRegistryFault() *GuestRegistryFault -} - -func init() { - t["BaseGuestRegistryFault"] = reflect.TypeOf((*GuestRegistryFault)(nil)).Elem() -} - -func (b *GuestRegistryKeyFault) GetGuestRegistryKeyFault() *GuestRegistryKeyFault { return b } - -type BaseGuestRegistryKeyFault interface { - GetGuestRegistryKeyFault() *GuestRegistryKeyFault -} - -func init() { - t["BaseGuestRegistryKeyFault"] = reflect.TypeOf((*GuestRegistryKeyFault)(nil)).Elem() -} - -func (b *GuestRegistryValueFault) GetGuestRegistryValueFault() *GuestRegistryValueFault { return b } - -type BaseGuestRegistryValueFault interface { - GetGuestRegistryValueFault() *GuestRegistryValueFault -} - -func init() { - t["BaseGuestRegistryValueFault"] = reflect.TypeOf((*GuestRegistryValueFault)(nil)).Elem() -} - -func (b *HostAccountSpec) GetHostAccountSpec() *HostAccountSpec { return b } - -type BaseHostAccountSpec interface { - GetHostAccountSpec() *HostAccountSpec -} - -func init() { - t["BaseHostAccountSpec"] = reflect.TypeOf((*HostAccountSpec)(nil)).Elem() -} - -func (b *HostAuthenticationStoreInfo) GetHostAuthenticationStoreInfo() *HostAuthenticationStoreInfo { - return b -} - -type BaseHostAuthenticationStoreInfo interface { - GetHostAuthenticationStoreInfo() *HostAuthenticationStoreInfo -} - -func init() { - t["BaseHostAuthenticationStoreInfo"] = reflect.TypeOf((*HostAuthenticationStoreInfo)(nil)).Elem() -} - -func (b *HostCommunication) GetHostCommunication() *HostCommunication { return b } - -type BaseHostCommunication interface { - GetHostCommunication() *HostCommunication -} - -func init() { - t["BaseHostCommunication"] = reflect.TypeOf((*HostCommunication)(nil)).Elem() -} - -func (b *HostConfigFault) GetHostConfigFault() *HostConfigFault { return b } - -type BaseHostConfigFault interface { - GetHostConfigFault() *HostConfigFault -} - -func init() { - t["BaseHostConfigFault"] = reflect.TypeOf((*HostConfigFault)(nil)).Elem() -} - -func (b *HostConnectFault) GetHostConnectFault() *HostConnectFault { return b } - -type BaseHostConnectFault interface { - GetHostConnectFault() *HostConnectFault -} - -func init() { - t["BaseHostConnectFault"] = reflect.TypeOf((*HostConnectFault)(nil)).Elem() -} - -func (b *HostConnectInfoNetworkInfo) GetHostConnectInfoNetworkInfo() *HostConnectInfoNetworkInfo { - return b -} - -type BaseHostConnectInfoNetworkInfo interface { - GetHostConnectInfoNetworkInfo() *HostConnectInfoNetworkInfo -} - -func init() { - t["BaseHostConnectInfoNetworkInfo"] = reflect.TypeOf((*HostConnectInfoNetworkInfo)(nil)).Elem() -} - -func (b *HostDasEvent) GetHostDasEvent() *HostDasEvent { return b } - -type BaseHostDasEvent interface { - GetHostDasEvent() *HostDasEvent -} - -func init() { - t["BaseHostDasEvent"] = reflect.TypeOf((*HostDasEvent)(nil)).Elem() -} - -func (b *HostDatastoreConnectInfo) GetHostDatastoreConnectInfo() *HostDatastoreConnectInfo { return b } - -type BaseHostDatastoreConnectInfo interface { - GetHostDatastoreConnectInfo() *HostDatastoreConnectInfo -} - -func init() { - t["BaseHostDatastoreConnectInfo"] = reflect.TypeOf((*HostDatastoreConnectInfo)(nil)).Elem() -} - -func (b *HostDevice) GetHostDevice() *HostDevice { return b } - -type BaseHostDevice interface { - GetHostDevice() *HostDevice -} - -func init() { - t["BaseHostDevice"] = reflect.TypeOf((*HostDevice)(nil)).Elem() -} - -func (b *HostDigestInfo) GetHostDigestInfo() *HostDigestInfo { return b } - -type BaseHostDigestInfo interface { - GetHostDigestInfo() *HostDigestInfo -} - -func init() { - t["BaseHostDigestInfo"] = reflect.TypeOf((*HostDigestInfo)(nil)).Elem() -} - -func (b *HostDirectoryStoreInfo) GetHostDirectoryStoreInfo() *HostDirectoryStoreInfo { return b } - -type BaseHostDirectoryStoreInfo interface { - GetHostDirectoryStoreInfo() *HostDirectoryStoreInfo -} - -func init() { - t["BaseHostDirectoryStoreInfo"] = reflect.TypeOf((*HostDirectoryStoreInfo)(nil)).Elem() -} - -func (b *HostDnsConfig) GetHostDnsConfig() *HostDnsConfig { return b } - -type BaseHostDnsConfig interface { - GetHostDnsConfig() *HostDnsConfig -} - -func init() { - t["BaseHostDnsConfig"] = reflect.TypeOf((*HostDnsConfig)(nil)).Elem() -} - -func (b *HostEvent) GetHostEvent() *HostEvent { return b } - -type BaseHostEvent interface { - GetHostEvent() *HostEvent -} - -func init() { - t["BaseHostEvent"] = reflect.TypeOf((*HostEvent)(nil)).Elem() -} - -func (b *HostFibreChannelHba) GetHostFibreChannelHba() *HostFibreChannelHba { return b } - -type BaseHostFibreChannelHba interface { - GetHostFibreChannelHba() *HostFibreChannelHba -} - -func init() { - t["BaseHostFibreChannelHba"] = reflect.TypeOf((*HostFibreChannelHba)(nil)).Elem() -} - -func (b *HostFibreChannelTargetTransport) GetHostFibreChannelTargetTransport() *HostFibreChannelTargetTransport { - return b -} - -type BaseHostFibreChannelTargetTransport interface { - GetHostFibreChannelTargetTransport() *HostFibreChannelTargetTransport -} - -func init() { - t["BaseHostFibreChannelTargetTransport"] = reflect.TypeOf((*HostFibreChannelTargetTransport)(nil)).Elem() -} - -func (b *HostFileSystemVolume) GetHostFileSystemVolume() *HostFileSystemVolume { return b } - -type BaseHostFileSystemVolume interface { - GetHostFileSystemVolume() *HostFileSystemVolume -} - -func init() { - t["BaseHostFileSystemVolume"] = reflect.TypeOf((*HostFileSystemVolume)(nil)).Elem() -} - -func (b *HostHardwareElementInfo) GetHostHardwareElementInfo() *HostHardwareElementInfo { return b } - -type BaseHostHardwareElementInfo interface { - GetHostHardwareElementInfo() *HostHardwareElementInfo -} - -func init() { - t["BaseHostHardwareElementInfo"] = reflect.TypeOf((*HostHardwareElementInfo)(nil)).Elem() -} - -func (b *HostHostBusAdapter) GetHostHostBusAdapter() *HostHostBusAdapter { return b } - -type BaseHostHostBusAdapter interface { - GetHostHostBusAdapter() *HostHostBusAdapter -} - -func init() { - t["BaseHostHostBusAdapter"] = reflect.TypeOf((*HostHostBusAdapter)(nil)).Elem() -} - -func (b *HostIpRouteConfig) GetHostIpRouteConfig() *HostIpRouteConfig { return b } - -type BaseHostIpRouteConfig interface { - GetHostIpRouteConfig() *HostIpRouteConfig -} - -func init() { - t["BaseHostIpRouteConfig"] = reflect.TypeOf((*HostIpRouteConfig)(nil)).Elem() -} - -func (b *HostMemberHealthCheckResult) GetHostMemberHealthCheckResult() *HostMemberHealthCheckResult { - return b -} - -type BaseHostMemberHealthCheckResult interface { - GetHostMemberHealthCheckResult() *HostMemberHealthCheckResult -} - -func init() { - t["BaseHostMemberHealthCheckResult"] = reflect.TypeOf((*HostMemberHealthCheckResult)(nil)).Elem() -} - -func (b *HostMemberUplinkHealthCheckResult) GetHostMemberUplinkHealthCheckResult() *HostMemberUplinkHealthCheckResult { - return b -} - -type BaseHostMemberUplinkHealthCheckResult interface { - GetHostMemberUplinkHealthCheckResult() *HostMemberUplinkHealthCheckResult -} - -func init() { - t["BaseHostMemberUplinkHealthCheckResult"] = reflect.TypeOf((*HostMemberUplinkHealthCheckResult)(nil)).Elem() -} - -func (b *HostMultipathInfoLogicalUnitPolicy) GetHostMultipathInfoLogicalUnitPolicy() *HostMultipathInfoLogicalUnitPolicy { - return b -} - -type BaseHostMultipathInfoLogicalUnitPolicy interface { - GetHostMultipathInfoLogicalUnitPolicy() *HostMultipathInfoLogicalUnitPolicy -} - -func init() { - t["BaseHostMultipathInfoLogicalUnitPolicy"] = reflect.TypeOf((*HostMultipathInfoLogicalUnitPolicy)(nil)).Elem() -} - -func (b *HostPciPassthruConfig) GetHostPciPassthruConfig() *HostPciPassthruConfig { return b } - -type BaseHostPciPassthruConfig interface { - GetHostPciPassthruConfig() *HostPciPassthruConfig -} - -func init() { - t["BaseHostPciPassthruConfig"] = reflect.TypeOf((*HostPciPassthruConfig)(nil)).Elem() -} - -func (b *HostPciPassthruInfo) GetHostPciPassthruInfo() *HostPciPassthruInfo { return b } - -type BaseHostPciPassthruInfo interface { - GetHostPciPassthruInfo() *HostPciPassthruInfo -} - -func init() { - t["BaseHostPciPassthruInfo"] = reflect.TypeOf((*HostPciPassthruInfo)(nil)).Elem() -} - -func (b *HostPowerOpFailed) GetHostPowerOpFailed() *HostPowerOpFailed { return b } - -type BaseHostPowerOpFailed interface { - GetHostPowerOpFailed() *HostPowerOpFailed -} - -func init() { - t["BaseHostPowerOpFailed"] = reflect.TypeOf((*HostPowerOpFailed)(nil)).Elem() -} - -func (b *HostProfileConfigSpec) GetHostProfileConfigSpec() *HostProfileConfigSpec { return b } - -type BaseHostProfileConfigSpec interface { - GetHostProfileConfigSpec() *HostProfileConfigSpec -} - -func init() { - t["BaseHostProfileConfigSpec"] = reflect.TypeOf((*HostProfileConfigSpec)(nil)).Elem() -} - -func (b *HostSystemSwapConfigurationSystemSwapOption) GetHostSystemSwapConfigurationSystemSwapOption() *HostSystemSwapConfigurationSystemSwapOption { - return b -} - -type BaseHostSystemSwapConfigurationSystemSwapOption interface { - GetHostSystemSwapConfigurationSystemSwapOption() *HostSystemSwapConfigurationSystemSwapOption -} - -func init() { - t["BaseHostSystemSwapConfigurationSystemSwapOption"] = reflect.TypeOf((*HostSystemSwapConfigurationSystemSwapOption)(nil)).Elem() -} - -func (b *HostTargetTransport) GetHostTargetTransport() *HostTargetTransport { return b } - -type BaseHostTargetTransport interface { - GetHostTargetTransport() *HostTargetTransport -} - -func init() { - t["BaseHostTargetTransport"] = reflect.TypeOf((*HostTargetTransport)(nil)).Elem() -} - -func (b *HostTpmEventDetails) GetHostTpmEventDetails() *HostTpmEventDetails { return b } - -type BaseHostTpmEventDetails interface { - GetHostTpmEventDetails() *HostTpmEventDetails -} - -func init() { - t["BaseHostTpmEventDetails"] = reflect.TypeOf((*HostTpmEventDetails)(nil)).Elem() -} - -func (b *HostVirtualSwitchBridge) GetHostVirtualSwitchBridge() *HostVirtualSwitchBridge { return b } - -type BaseHostVirtualSwitchBridge interface { - GetHostVirtualSwitchBridge() *HostVirtualSwitchBridge -} - -func init() { - t["BaseHostVirtualSwitchBridge"] = reflect.TypeOf((*HostVirtualSwitchBridge)(nil)).Elem() -} - -func (b *HourlyTaskScheduler) GetHourlyTaskScheduler() *HourlyTaskScheduler { return b } - -type BaseHourlyTaskScheduler interface { - GetHourlyTaskScheduler() *HourlyTaskScheduler -} - -func init() { - t["BaseHourlyTaskScheduler"] = reflect.TypeOf((*HourlyTaskScheduler)(nil)).Elem() -} - -func (b *ImportSpec) GetImportSpec() *ImportSpec { return b } - -type BaseImportSpec interface { - GetImportSpec() *ImportSpec -} - -func init() { - t["BaseImportSpec"] = reflect.TypeOf((*ImportSpec)(nil)).Elem() -} - -func (b *InaccessibleDatastore) GetInaccessibleDatastore() *InaccessibleDatastore { return b } - -type BaseInaccessibleDatastore interface { - GetInaccessibleDatastore() *InaccessibleDatastore -} - -func init() { - t["BaseInaccessibleDatastore"] = reflect.TypeOf((*InaccessibleDatastore)(nil)).Elem() -} - -func (b *InheritablePolicy) GetInheritablePolicy() *InheritablePolicy { return b } - -type BaseInheritablePolicy interface { - GetInheritablePolicy() *InheritablePolicy -} - -func init() { - t["BaseInheritablePolicy"] = reflect.TypeOf((*InheritablePolicy)(nil)).Elem() -} - -func (b *InsufficientHostCapacityFault) GetInsufficientHostCapacityFault() *InsufficientHostCapacityFault { - return b -} - -type BaseInsufficientHostCapacityFault interface { - GetInsufficientHostCapacityFault() *InsufficientHostCapacityFault -} - -func init() { - t["BaseInsufficientHostCapacityFault"] = reflect.TypeOf((*InsufficientHostCapacityFault)(nil)).Elem() -} - -func (b *InsufficientResourcesFault) GetInsufficientResourcesFault() *InsufficientResourcesFault { - return b -} - -type BaseInsufficientResourcesFault interface { - GetInsufficientResourcesFault() *InsufficientResourcesFault -} - -func init() { - t["BaseInsufficientResourcesFault"] = reflect.TypeOf((*InsufficientResourcesFault)(nil)).Elem() -} - -func (b *InsufficientStandbyResource) GetInsufficientStandbyResource() *InsufficientStandbyResource { - return b -} - -type BaseInsufficientStandbyResource interface { - GetInsufficientStandbyResource() *InsufficientStandbyResource -} - -func init() { - t["BaseInsufficientStandbyResource"] = reflect.TypeOf((*InsufficientStandbyResource)(nil)).Elem() -} - -func (b *InvalidArgument) GetInvalidArgument() *InvalidArgument { return b } - -type BaseInvalidArgument interface { - GetInvalidArgument() *InvalidArgument -} - -func init() { - t["BaseInvalidArgument"] = reflect.TypeOf((*InvalidArgument)(nil)).Elem() -} - -func (b *InvalidCAMServer) GetInvalidCAMServer() *InvalidCAMServer { return b } - -type BaseInvalidCAMServer interface { - GetInvalidCAMServer() *InvalidCAMServer -} - -func init() { - t["BaseInvalidCAMServer"] = reflect.TypeOf((*InvalidCAMServer)(nil)).Elem() -} - -func (b *InvalidDatastore) GetInvalidDatastore() *InvalidDatastore { return b } - -type BaseInvalidDatastore interface { - GetInvalidDatastore() *InvalidDatastore -} - -func init() { - t["BaseInvalidDatastore"] = reflect.TypeOf((*InvalidDatastore)(nil)).Elem() -} - -func (b *InvalidDeviceSpec) GetInvalidDeviceSpec() *InvalidDeviceSpec { return b } - -type BaseInvalidDeviceSpec interface { - GetInvalidDeviceSpec() *InvalidDeviceSpec -} - -func init() { - t["BaseInvalidDeviceSpec"] = reflect.TypeOf((*InvalidDeviceSpec)(nil)).Elem() -} - -func (b *InvalidFolder) GetInvalidFolder() *InvalidFolder { return b } - -type BaseInvalidFolder interface { - GetInvalidFolder() *InvalidFolder -} - -func init() { - t["BaseInvalidFolder"] = reflect.TypeOf((*InvalidFolder)(nil)).Elem() -} - -func (b *InvalidFormat) GetInvalidFormat() *InvalidFormat { return b } - -type BaseInvalidFormat interface { - GetInvalidFormat() *InvalidFormat -} - -func init() { - t["BaseInvalidFormat"] = reflect.TypeOf((*InvalidFormat)(nil)).Elem() -} - -func (b *InvalidHostState) GetInvalidHostState() *InvalidHostState { return b } - -type BaseInvalidHostState interface { - GetInvalidHostState() *InvalidHostState -} - -func init() { - t["BaseInvalidHostState"] = reflect.TypeOf((*InvalidHostState)(nil)).Elem() -} - -func (b *InvalidLogin) GetInvalidLogin() *InvalidLogin { return b } - -type BaseInvalidLogin interface { - GetInvalidLogin() *InvalidLogin -} - -func init() { - t["BaseInvalidLogin"] = reflect.TypeOf((*InvalidLogin)(nil)).Elem() -} - -func (b *InvalidPropertyValue) GetInvalidPropertyValue() *InvalidPropertyValue { return b } - -type BaseInvalidPropertyValue interface { - GetInvalidPropertyValue() *InvalidPropertyValue -} - -func init() { - t["BaseInvalidPropertyValue"] = reflect.TypeOf((*InvalidPropertyValue)(nil)).Elem() -} - -func (b *InvalidRequest) GetInvalidRequest() *InvalidRequest { return b } - -type BaseInvalidRequest interface { - GetInvalidRequest() *InvalidRequest -} - -func init() { - t["BaseInvalidRequest"] = reflect.TypeOf((*InvalidRequest)(nil)).Elem() -} - -func (b *InvalidState) GetInvalidState() *InvalidState { return b } - -type BaseInvalidState interface { - GetInvalidState() *InvalidState -} - -func init() { - t["BaseInvalidState"] = reflect.TypeOf((*InvalidState)(nil)).Elem() -} - -func (b *InvalidVmConfig) GetInvalidVmConfig() *InvalidVmConfig { return b } - -type BaseInvalidVmConfig interface { - GetInvalidVmConfig() *InvalidVmConfig -} - -func init() { - t["BaseInvalidVmConfig"] = reflect.TypeOf((*InvalidVmConfig)(nil)).Elem() -} - -func (b *IoFilterInfo) GetIoFilterInfo() *IoFilterInfo { return b } - -type BaseIoFilterInfo interface { - GetIoFilterInfo() *IoFilterInfo -} - -func init() { - t["BaseIoFilterInfo"] = reflect.TypeOf((*IoFilterInfo)(nil)).Elem() -} - -func (b *IpAddress) GetIpAddress() *IpAddress { return b } - -type BaseIpAddress interface { - GetIpAddress() *IpAddress -} - -func init() { - t["BaseIpAddress"] = reflect.TypeOf((*IpAddress)(nil)).Elem() -} - -func (b *IscsiFault) GetIscsiFault() *IscsiFault { return b } - -type BaseIscsiFault interface { - GetIscsiFault() *IscsiFault -} - -func init() { - t["BaseIscsiFault"] = reflect.TypeOf((*IscsiFault)(nil)).Elem() -} - -func (b *LicenseEvent) GetLicenseEvent() *LicenseEvent { return b } - -type BaseLicenseEvent interface { - GetLicenseEvent() *LicenseEvent -} - -func init() { - t["BaseLicenseEvent"] = reflect.TypeOf((*LicenseEvent)(nil)).Elem() -} - -func (b *LicenseSource) GetLicenseSource() *LicenseSource { return b } - -type BaseLicenseSource interface { - GetLicenseSource() *LicenseSource -} - -func init() { - t["BaseLicenseSource"] = reflect.TypeOf((*LicenseSource)(nil)).Elem() -} - -func (b *MacAddress) GetMacAddress() *MacAddress { return b } - -type BaseMacAddress interface { - GetMacAddress() *MacAddress -} - -func init() { - t["BaseMacAddress"] = reflect.TypeOf((*MacAddress)(nil)).Elem() -} - -func (b *MethodFault) GetMethodFault() *MethodFault { return b } - -type BaseMethodFault interface { - GetMethodFault() *MethodFault -} - -func init() { - t["BaseMethodFault"] = reflect.TypeOf((*MethodFault)(nil)).Elem() -} - -func (b *MigrationEvent) GetMigrationEvent() *MigrationEvent { return b } - -type BaseMigrationEvent interface { - GetMigrationEvent() *MigrationEvent -} - -func init() { - t["BaseMigrationEvent"] = reflect.TypeOf((*MigrationEvent)(nil)).Elem() -} - -func (b *MigrationFault) GetMigrationFault() *MigrationFault { return b } - -type BaseMigrationFault interface { - GetMigrationFault() *MigrationFault -} - -func init() { - t["BaseMigrationFault"] = reflect.TypeOf((*MigrationFault)(nil)).Elem() -} - -func (b *MigrationFeatureNotSupported) GetMigrationFeatureNotSupported() *MigrationFeatureNotSupported { - return b -} - -type BaseMigrationFeatureNotSupported interface { - GetMigrationFeatureNotSupported() *MigrationFeatureNotSupported -} - -func init() { - t["BaseMigrationFeatureNotSupported"] = reflect.TypeOf((*MigrationFeatureNotSupported)(nil)).Elem() -} - -func (b *MonthlyTaskScheduler) GetMonthlyTaskScheduler() *MonthlyTaskScheduler { return b } - -type BaseMonthlyTaskScheduler interface { - GetMonthlyTaskScheduler() *MonthlyTaskScheduler -} - -func init() { - t["BaseMonthlyTaskScheduler"] = reflect.TypeOf((*MonthlyTaskScheduler)(nil)).Elem() -} - -func (b *NasConfigFault) GetNasConfigFault() *NasConfigFault { return b } - -type BaseNasConfigFault interface { - GetNasConfigFault() *NasConfigFault -} - -func init() { - t["BaseNasConfigFault"] = reflect.TypeOf((*NasConfigFault)(nil)).Elem() -} - -func (b *NegatableExpression) GetNegatableExpression() *NegatableExpression { return b } - -type BaseNegatableExpression interface { - GetNegatableExpression() *NegatableExpression -} - -func init() { - t["BaseNegatableExpression"] = reflect.TypeOf((*NegatableExpression)(nil)).Elem() -} - -func (b *NetBIOSConfigInfo) GetNetBIOSConfigInfo() *NetBIOSConfigInfo { return b } - -type BaseNetBIOSConfigInfo interface { - GetNetBIOSConfigInfo() *NetBIOSConfigInfo -} - -func init() { - t["BaseNetBIOSConfigInfo"] = reflect.TypeOf((*NetBIOSConfigInfo)(nil)).Elem() -} - -func (b *NetworkSummary) GetNetworkSummary() *NetworkSummary { return b } - -type BaseNetworkSummary interface { - GetNetworkSummary() *NetworkSummary -} - -func init() { - t["BaseNetworkSummary"] = reflect.TypeOf((*NetworkSummary)(nil)).Elem() -} - -func (b *NoCompatibleHost) GetNoCompatibleHost() *NoCompatibleHost { return b } - -type BaseNoCompatibleHost interface { - GetNoCompatibleHost() *NoCompatibleHost -} - -func init() { - t["BaseNoCompatibleHost"] = reflect.TypeOf((*NoCompatibleHost)(nil)).Elem() -} - -func (b *NoPermission) GetNoPermission() *NoPermission { return b } - -type BaseNoPermission interface { - GetNoPermission() *NoPermission -} - -func init() { - t["BaseNoPermission"] = reflect.TypeOf((*NoPermission)(nil)).Elem() -} - -func (b *NotEnoughCpus) GetNotEnoughCpus() *NotEnoughCpus { return b } - -type BaseNotEnoughCpus interface { - GetNotEnoughCpus() *NotEnoughCpus -} - -func init() { - t["BaseNotEnoughCpus"] = reflect.TypeOf((*NotEnoughCpus)(nil)).Elem() -} - -func (b *NotEnoughLicenses) GetNotEnoughLicenses() *NotEnoughLicenses { return b } - -type BaseNotEnoughLicenses interface { - GetNotEnoughLicenses() *NotEnoughLicenses -} - -func init() { - t["BaseNotEnoughLicenses"] = reflect.TypeOf((*NotEnoughLicenses)(nil)).Elem() -} - -func (b *NotSupported) GetNotSupported() *NotSupported { return b } - -type BaseNotSupported interface { - GetNotSupported() *NotSupported -} - -func init() { - t["BaseNotSupported"] = reflect.TypeOf((*NotSupported)(nil)).Elem() -} - -func (b *NotSupportedHost) GetNotSupportedHost() *NotSupportedHost { return b } - -type BaseNotSupportedHost interface { - GetNotSupportedHost() *NotSupportedHost -} - -func init() { - t["BaseNotSupportedHost"] = reflect.TypeOf((*NotSupportedHost)(nil)).Elem() -} - -func (b *NotSupportedHostInCluster) GetNotSupportedHostInCluster() *NotSupportedHostInCluster { - return b -} - -type BaseNotSupportedHostInCluster interface { - GetNotSupportedHostInCluster() *NotSupportedHostInCluster -} - -func init() { - t["BaseNotSupportedHostInCluster"] = reflect.TypeOf((*NotSupportedHostInCluster)(nil)).Elem() -} - -func (b *OptionType) GetOptionType() *OptionType { return b } - -type BaseOptionType interface { - GetOptionType() *OptionType -} - -func init() { - t["BaseOptionType"] = reflect.TypeOf((*OptionType)(nil)).Elem() -} - -func (b *OptionValue) GetOptionValue() *OptionValue { return b } - -type BaseOptionValue interface { - GetOptionValue() *OptionValue -} - -func init() { - t["BaseOptionValue"] = reflect.TypeOf((*OptionValue)(nil)).Elem() -} - -func (b *OvfAttribute) GetOvfAttribute() *OvfAttribute { return b } - -type BaseOvfAttribute interface { - GetOvfAttribute() *OvfAttribute -} - -func init() { - t["BaseOvfAttribute"] = reflect.TypeOf((*OvfAttribute)(nil)).Elem() -} - -func (b *OvfConnectedDevice) GetOvfConnectedDevice() *OvfConnectedDevice { return b } - -type BaseOvfConnectedDevice interface { - GetOvfConnectedDevice() *OvfConnectedDevice -} - -func init() { - t["BaseOvfConnectedDevice"] = reflect.TypeOf((*OvfConnectedDevice)(nil)).Elem() -} - -func (b *OvfConstraint) GetOvfConstraint() *OvfConstraint { return b } - -type BaseOvfConstraint interface { - GetOvfConstraint() *OvfConstraint -} - -func init() { - t["BaseOvfConstraint"] = reflect.TypeOf((*OvfConstraint)(nil)).Elem() -} - -func (b *OvfConsumerCallbackFault) GetOvfConsumerCallbackFault() *OvfConsumerCallbackFault { return b } - -type BaseOvfConsumerCallbackFault interface { - GetOvfConsumerCallbackFault() *OvfConsumerCallbackFault -} - -func init() { - t["BaseOvfConsumerCallbackFault"] = reflect.TypeOf((*OvfConsumerCallbackFault)(nil)).Elem() -} - -func (b *OvfElement) GetOvfElement() *OvfElement { return b } - -type BaseOvfElement interface { - GetOvfElement() *OvfElement -} - -func init() { - t["BaseOvfElement"] = reflect.TypeOf((*OvfElement)(nil)).Elem() -} - -func (b *OvfExport) GetOvfExport() *OvfExport { return b } - -type BaseOvfExport interface { - GetOvfExport() *OvfExport -} - -func init() { - t["BaseOvfExport"] = reflect.TypeOf((*OvfExport)(nil)).Elem() -} - -func (b *OvfFault) GetOvfFault() *OvfFault { return b } - -type BaseOvfFault interface { - GetOvfFault() *OvfFault -} - -func init() { - t["BaseOvfFault"] = reflect.TypeOf((*OvfFault)(nil)).Elem() -} - -func (b *OvfHardwareExport) GetOvfHardwareExport() *OvfHardwareExport { return b } - -type BaseOvfHardwareExport interface { - GetOvfHardwareExport() *OvfHardwareExport -} - -func init() { - t["BaseOvfHardwareExport"] = reflect.TypeOf((*OvfHardwareExport)(nil)).Elem() -} - -func (b *OvfImport) GetOvfImport() *OvfImport { return b } - -type BaseOvfImport interface { - GetOvfImport() *OvfImport -} - -func init() { - t["BaseOvfImport"] = reflect.TypeOf((*OvfImport)(nil)).Elem() -} - -func (b *OvfInvalidPackage) GetOvfInvalidPackage() *OvfInvalidPackage { return b } - -type BaseOvfInvalidPackage interface { - GetOvfInvalidPackage() *OvfInvalidPackage -} - -func init() { - t["BaseOvfInvalidPackage"] = reflect.TypeOf((*OvfInvalidPackage)(nil)).Elem() -} - -func (b *OvfInvalidValue) GetOvfInvalidValue() *OvfInvalidValue { return b } - -type BaseOvfInvalidValue interface { - GetOvfInvalidValue() *OvfInvalidValue -} - -func init() { - t["BaseOvfInvalidValue"] = reflect.TypeOf((*OvfInvalidValue)(nil)).Elem() -} - -func (b *OvfManagerCommonParams) GetOvfManagerCommonParams() *OvfManagerCommonParams { return b } - -type BaseOvfManagerCommonParams interface { - GetOvfManagerCommonParams() *OvfManagerCommonParams -} - -func init() { - t["BaseOvfManagerCommonParams"] = reflect.TypeOf((*OvfManagerCommonParams)(nil)).Elem() -} - -func (b *OvfMissingElement) GetOvfMissingElement() *OvfMissingElement { return b } - -type BaseOvfMissingElement interface { - GetOvfMissingElement() *OvfMissingElement -} - -func init() { - t["BaseOvfMissingElement"] = reflect.TypeOf((*OvfMissingElement)(nil)).Elem() -} - -func (b *OvfProperty) GetOvfProperty() *OvfProperty { return b } - -type BaseOvfProperty interface { - GetOvfProperty() *OvfProperty -} - -func init() { - t["BaseOvfProperty"] = reflect.TypeOf((*OvfProperty)(nil)).Elem() -} - -func (b *OvfSystemFault) GetOvfSystemFault() *OvfSystemFault { return b } - -type BaseOvfSystemFault interface { - GetOvfSystemFault() *OvfSystemFault -} - -func init() { - t["BaseOvfSystemFault"] = reflect.TypeOf((*OvfSystemFault)(nil)).Elem() -} - -func (b *OvfUnsupportedAttribute) GetOvfUnsupportedAttribute() *OvfUnsupportedAttribute { return b } - -type BaseOvfUnsupportedAttribute interface { - GetOvfUnsupportedAttribute() *OvfUnsupportedAttribute -} - -func init() { - t["BaseOvfUnsupportedAttribute"] = reflect.TypeOf((*OvfUnsupportedAttribute)(nil)).Elem() -} - -func (b *OvfUnsupportedElement) GetOvfUnsupportedElement() *OvfUnsupportedElement { return b } - -type BaseOvfUnsupportedElement interface { - GetOvfUnsupportedElement() *OvfUnsupportedElement -} - -func init() { - t["BaseOvfUnsupportedElement"] = reflect.TypeOf((*OvfUnsupportedElement)(nil)).Elem() -} - -func (b *OvfUnsupportedPackage) GetOvfUnsupportedPackage() *OvfUnsupportedPackage { return b } - -type BaseOvfUnsupportedPackage interface { - GetOvfUnsupportedPackage() *OvfUnsupportedPackage -} - -func init() { - t["BaseOvfUnsupportedPackage"] = reflect.TypeOf((*OvfUnsupportedPackage)(nil)).Elem() -} - -func (b *PatchMetadataInvalid) GetPatchMetadataInvalid() *PatchMetadataInvalid { return b } - -type BasePatchMetadataInvalid interface { - GetPatchMetadataInvalid() *PatchMetadataInvalid -} - -func init() { - t["BasePatchMetadataInvalid"] = reflect.TypeOf((*PatchMetadataInvalid)(nil)).Elem() -} - -func (b *PatchNotApplicable) GetPatchNotApplicable() *PatchNotApplicable { return b } - -type BasePatchNotApplicable interface { - GetPatchNotApplicable() *PatchNotApplicable -} - -func init() { - t["BasePatchNotApplicable"] = reflect.TypeOf((*PatchNotApplicable)(nil)).Elem() -} - -func (b *PerfEntityMetricBase) GetPerfEntityMetricBase() *PerfEntityMetricBase { return b } - -type BasePerfEntityMetricBase interface { - GetPerfEntityMetricBase() *PerfEntityMetricBase -} - -func init() { - t["BasePerfEntityMetricBase"] = reflect.TypeOf((*PerfEntityMetricBase)(nil)).Elem() -} - -func (b *PerfMetricSeries) GetPerfMetricSeries() *PerfMetricSeries { return b } - -type BasePerfMetricSeries interface { - GetPerfMetricSeries() *PerfMetricSeries -} - -func init() { - t["BasePerfMetricSeries"] = reflect.TypeOf((*PerfMetricSeries)(nil)).Elem() -} - -func (b *PermissionEvent) GetPermissionEvent() *PermissionEvent { return b } - -type BasePermissionEvent interface { - GetPermissionEvent() *PermissionEvent -} - -func init() { - t["BasePermissionEvent"] = reflect.TypeOf((*PermissionEvent)(nil)).Elem() -} - -func (b *PhysicalNicHint) GetPhysicalNicHint() *PhysicalNicHint { return b } - -type BasePhysicalNicHint interface { - GetPhysicalNicHint() *PhysicalNicHint -} - -func init() { - t["BasePhysicalNicHint"] = reflect.TypeOf((*PhysicalNicHint)(nil)).Elem() -} - -func (b *PlatformConfigFault) GetPlatformConfigFault() *PlatformConfigFault { return b } - -type BasePlatformConfigFault interface { - GetPlatformConfigFault() *PlatformConfigFault -} - -func init() { - t["BasePlatformConfigFault"] = reflect.TypeOf((*PlatformConfigFault)(nil)).Elem() -} - -func (b *PolicyOption) GetPolicyOption() *PolicyOption { return b } - -type BasePolicyOption interface { - GetPolicyOption() *PolicyOption -} - -func init() { - t["BasePolicyOption"] = reflect.TypeOf((*PolicyOption)(nil)).Elem() -} - -func (b *PortGroupProfile) GetPortGroupProfile() *PortGroupProfile { return b } - -type BasePortGroupProfile interface { - GetPortGroupProfile() *PortGroupProfile -} - -func init() { - t["BasePortGroupProfile"] = reflect.TypeOf((*PortGroupProfile)(nil)).Elem() -} - -func (b *ProfileConfigInfo) GetProfileConfigInfo() *ProfileConfigInfo { return b } - -type BaseProfileConfigInfo interface { - GetProfileConfigInfo() *ProfileConfigInfo -} - -func init() { - t["BaseProfileConfigInfo"] = reflect.TypeOf((*ProfileConfigInfo)(nil)).Elem() -} - -func (b *ProfileCreateSpec) GetProfileCreateSpec() *ProfileCreateSpec { return b } - -type BaseProfileCreateSpec interface { - GetProfileCreateSpec() *ProfileCreateSpec -} - -func init() { - t["BaseProfileCreateSpec"] = reflect.TypeOf((*ProfileCreateSpec)(nil)).Elem() -} - -func (b *ProfileEvent) GetProfileEvent() *ProfileEvent { return b } - -type BaseProfileEvent interface { - GetProfileEvent() *ProfileEvent -} - -func init() { - t["BaseProfileEvent"] = reflect.TypeOf((*ProfileEvent)(nil)).Elem() -} - -func (b *ProfileExpression) GetProfileExpression() *ProfileExpression { return b } - -type BaseProfileExpression interface { - GetProfileExpression() *ProfileExpression -} - -func init() { - t["BaseProfileExpression"] = reflect.TypeOf((*ProfileExpression)(nil)).Elem() -} - -func (b *ProfilePolicyOptionMetadata) GetProfilePolicyOptionMetadata() *ProfilePolicyOptionMetadata { - return b -} - -type BaseProfilePolicyOptionMetadata interface { - GetProfilePolicyOptionMetadata() *ProfilePolicyOptionMetadata -} - -func init() { - t["BaseProfilePolicyOptionMetadata"] = reflect.TypeOf((*ProfilePolicyOptionMetadata)(nil)).Elem() -} - -func (b *ProfileSerializedCreateSpec) GetProfileSerializedCreateSpec() *ProfileSerializedCreateSpec { - return b -} - -type BaseProfileSerializedCreateSpec interface { - GetProfileSerializedCreateSpec() *ProfileSerializedCreateSpec -} - -func init() { - t["BaseProfileSerializedCreateSpec"] = reflect.TypeOf((*ProfileSerializedCreateSpec)(nil)).Elem() -} - -func (b *RDMNotSupported) GetRDMNotSupported() *RDMNotSupported { return b } - -type BaseRDMNotSupported interface { - GetRDMNotSupported() *RDMNotSupported -} - -func init() { - t["BaseRDMNotSupported"] = reflect.TypeOf((*RDMNotSupported)(nil)).Elem() -} - -func (b *RecurrentTaskScheduler) GetRecurrentTaskScheduler() *RecurrentTaskScheduler { return b } - -type BaseRecurrentTaskScheduler interface { - GetRecurrentTaskScheduler() *RecurrentTaskScheduler -} - -func init() { - t["BaseRecurrentTaskScheduler"] = reflect.TypeOf((*RecurrentTaskScheduler)(nil)).Elem() -} - -func (b *ReplicationConfigFault) GetReplicationConfigFault() *ReplicationConfigFault { return b } - -type BaseReplicationConfigFault interface { - GetReplicationConfigFault() *ReplicationConfigFault -} - -func init() { - t["BaseReplicationConfigFault"] = reflect.TypeOf((*ReplicationConfigFault)(nil)).Elem() -} - -func (b *ReplicationFault) GetReplicationFault() *ReplicationFault { return b } - -type BaseReplicationFault interface { - GetReplicationFault() *ReplicationFault -} - -func init() { - t["BaseReplicationFault"] = reflect.TypeOf((*ReplicationFault)(nil)).Elem() -} - -func (b *ReplicationVmFault) GetReplicationVmFault() *ReplicationVmFault { return b } - -type BaseReplicationVmFault interface { - GetReplicationVmFault() *ReplicationVmFault -} - -func init() { - t["BaseReplicationVmFault"] = reflect.TypeOf((*ReplicationVmFault)(nil)).Elem() -} - -func (b *ResourceAllocationInfo) GetResourceAllocationInfo() *ResourceAllocationInfo { return b } - -type BaseResourceAllocationInfo interface { - GetResourceAllocationInfo() *ResourceAllocationInfo -} - -func init() { - t["BaseResourceAllocationInfo"] = reflect.TypeOf((*ResourceAllocationInfo)(nil)).Elem() -} - -func (b *ResourceInUse) GetResourceInUse() *ResourceInUse { return b } - -type BaseResourceInUse interface { - GetResourceInUse() *ResourceInUse -} - -func init() { - t["BaseResourceInUse"] = reflect.TypeOf((*ResourceInUse)(nil)).Elem() -} - -func (b *ResourcePoolEvent) GetResourcePoolEvent() *ResourcePoolEvent { return b } - -type BaseResourcePoolEvent interface { - GetResourcePoolEvent() *ResourcePoolEvent -} - -func init() { - t["BaseResourcePoolEvent"] = reflect.TypeOf((*ResourcePoolEvent)(nil)).Elem() -} - -func (b *ResourcePoolSummary) GetResourcePoolSummary() *ResourcePoolSummary { return b } - -type BaseResourcePoolSummary interface { - GetResourcePoolSummary() *ResourcePoolSummary -} - -func init() { - t["BaseResourcePoolSummary"] = reflect.TypeOf((*ResourcePoolSummary)(nil)).Elem() -} - -func (b *RoleEvent) GetRoleEvent() *RoleEvent { return b } - -type BaseRoleEvent interface { - GetRoleEvent() *RoleEvent -} - -func init() { - t["BaseRoleEvent"] = reflect.TypeOf((*RoleEvent)(nil)).Elem() -} - -func (b *RuntimeFault) GetRuntimeFault() *RuntimeFault { return b } - -type BaseRuntimeFault interface { - GetRuntimeFault() *RuntimeFault -} - -func init() { - t["BaseRuntimeFault"] = reflect.TypeOf((*RuntimeFault)(nil)).Elem() -} - -func (b *ScheduledTaskEvent) GetScheduledTaskEvent() *ScheduledTaskEvent { return b } - -type BaseScheduledTaskEvent interface { - GetScheduledTaskEvent() *ScheduledTaskEvent -} - -func init() { - t["BaseScheduledTaskEvent"] = reflect.TypeOf((*ScheduledTaskEvent)(nil)).Elem() -} - -func (b *ScheduledTaskSpec) GetScheduledTaskSpec() *ScheduledTaskSpec { return b } - -type BaseScheduledTaskSpec interface { - GetScheduledTaskSpec() *ScheduledTaskSpec -} - -func init() { - t["BaseScheduledTaskSpec"] = reflect.TypeOf((*ScheduledTaskSpec)(nil)).Elem() -} - -func (b *ScsiLun) GetScsiLun() *ScsiLun { return b } - -type BaseScsiLun interface { - GetScsiLun() *ScsiLun -} - -func init() { - t["BaseScsiLun"] = reflect.TypeOf((*ScsiLun)(nil)).Elem() -} - -func (b *SecurityError) GetSecurityError() *SecurityError { return b } - -type BaseSecurityError interface { - GetSecurityError() *SecurityError -} - -func init() { - t["BaseSecurityError"] = reflect.TypeOf((*SecurityError)(nil)).Elem() -} - -func (b *SelectionSet) GetSelectionSet() *SelectionSet { return b } - -type BaseSelectionSet interface { - GetSelectionSet() *SelectionSet -} - -func init() { - t["BaseSelectionSet"] = reflect.TypeOf((*SelectionSet)(nil)).Elem() -} - -func (b *SelectionSpec) GetSelectionSpec() *SelectionSpec { return b } - -type BaseSelectionSpec interface { - GetSelectionSpec() *SelectionSpec -} - -func init() { - t["BaseSelectionSpec"] = reflect.TypeOf((*SelectionSpec)(nil)).Elem() -} - -func (b *ServiceLocatorCredential) GetServiceLocatorCredential() *ServiceLocatorCredential { return b } - -type BaseServiceLocatorCredential interface { - GetServiceLocatorCredential() *ServiceLocatorCredential -} - -func init() { - t["BaseServiceLocatorCredential"] = reflect.TypeOf((*ServiceLocatorCredential)(nil)).Elem() -} - -func (b *SessionEvent) GetSessionEvent() *SessionEvent { return b } - -type BaseSessionEvent interface { - GetSessionEvent() *SessionEvent -} - -func init() { - t["BaseSessionEvent"] = reflect.TypeOf((*SessionEvent)(nil)).Elem() -} - -func (b *SessionManagerServiceRequestSpec) GetSessionManagerServiceRequestSpec() *SessionManagerServiceRequestSpec { - return b -} - -type BaseSessionManagerServiceRequestSpec interface { - GetSessionManagerServiceRequestSpec() *SessionManagerServiceRequestSpec -} - -func init() { - t["BaseSessionManagerServiceRequestSpec"] = reflect.TypeOf((*SessionManagerServiceRequestSpec)(nil)).Elem() -} - -func (b *SnapshotCopyNotSupported) GetSnapshotCopyNotSupported() *SnapshotCopyNotSupported { return b } - -type BaseSnapshotCopyNotSupported interface { - GetSnapshotCopyNotSupported() *SnapshotCopyNotSupported -} - -func init() { - t["BaseSnapshotCopyNotSupported"] = reflect.TypeOf((*SnapshotCopyNotSupported)(nil)).Elem() -} - -func (b *SnapshotFault) GetSnapshotFault() *SnapshotFault { return b } - -type BaseSnapshotFault interface { - GetSnapshotFault() *SnapshotFault -} - -func init() { - t["BaseSnapshotFault"] = reflect.TypeOf((*SnapshotFault)(nil)).Elem() -} - -func (b *TaskEvent) GetTaskEvent() *TaskEvent { return b } - -type BaseTaskEvent interface { - GetTaskEvent() *TaskEvent -} - -func init() { - t["BaseTaskEvent"] = reflect.TypeOf((*TaskEvent)(nil)).Elem() -} - -func (b *TaskInProgress) GetTaskInProgress() *TaskInProgress { return b } - -type BaseTaskInProgress interface { - GetTaskInProgress() *TaskInProgress -} - -func init() { - t["BaseTaskInProgress"] = reflect.TypeOf((*TaskInProgress)(nil)).Elem() -} - -func (b *TaskReason) GetTaskReason() *TaskReason { return b } - -type BaseTaskReason interface { - GetTaskReason() *TaskReason -} - -func init() { - t["BaseTaskReason"] = reflect.TypeOf((*TaskReason)(nil)).Elem() -} - -func (b *TaskScheduler) GetTaskScheduler() *TaskScheduler { return b } - -type BaseTaskScheduler interface { - GetTaskScheduler() *TaskScheduler -} - -func init() { - t["BaseTaskScheduler"] = reflect.TypeOf((*TaskScheduler)(nil)).Elem() -} - -func (b *TemplateUpgradeEvent) GetTemplateUpgradeEvent() *TemplateUpgradeEvent { return b } - -type BaseTemplateUpgradeEvent interface { - GetTemplateUpgradeEvent() *TemplateUpgradeEvent -} - -func init() { - t["BaseTemplateUpgradeEvent"] = reflect.TypeOf((*TemplateUpgradeEvent)(nil)).Elem() -} - -func (b *Timedout) GetTimedout() *Timedout { return b } - -type BaseTimedout interface { - GetTimedout() *Timedout -} - -func init() { - t["BaseTimedout"] = reflect.TypeOf((*Timedout)(nil)).Elem() -} - -func (b *TypeDescription) GetTypeDescription() *TypeDescription { return b } - -type BaseTypeDescription interface { - GetTypeDescription() *TypeDescription -} - -func init() { - t["BaseTypeDescription"] = reflect.TypeOf((*TypeDescription)(nil)).Elem() -} - -func (b *UnsupportedDatastore) GetUnsupportedDatastore() *UnsupportedDatastore { return b } - -type BaseUnsupportedDatastore interface { - GetUnsupportedDatastore() *UnsupportedDatastore -} - -func init() { - t["BaseUnsupportedDatastore"] = reflect.TypeOf((*UnsupportedDatastore)(nil)).Elem() -} - -func (b *UpgradeEvent) GetUpgradeEvent() *UpgradeEvent { return b } - -type BaseUpgradeEvent interface { - GetUpgradeEvent() *UpgradeEvent -} - -func init() { - t["BaseUpgradeEvent"] = reflect.TypeOf((*UpgradeEvent)(nil)).Elem() -} - -func (b *UserSearchResult) GetUserSearchResult() *UserSearchResult { return b } - -type BaseUserSearchResult interface { - GetUserSearchResult() *UserSearchResult -} - -func init() { - t["BaseUserSearchResult"] = reflect.TypeOf((*UserSearchResult)(nil)).Elem() -} - -func (b *VAppConfigFault) GetVAppConfigFault() *VAppConfigFault { return b } - -type BaseVAppConfigFault interface { - GetVAppConfigFault() *VAppConfigFault -} - -func init() { - t["BaseVAppConfigFault"] = reflect.TypeOf((*VAppConfigFault)(nil)).Elem() -} - -func (b *VAppPropertyFault) GetVAppPropertyFault() *VAppPropertyFault { return b } - -type BaseVAppPropertyFault interface { - GetVAppPropertyFault() *VAppPropertyFault -} - -func init() { - t["BaseVAppPropertyFault"] = reflect.TypeOf((*VAppPropertyFault)(nil)).Elem() -} - -func (b *VMotionInterfaceIssue) GetVMotionInterfaceIssue() *VMotionInterfaceIssue { return b } - -type BaseVMotionInterfaceIssue interface { - GetVMotionInterfaceIssue() *VMotionInterfaceIssue -} - -func init() { - t["BaseVMotionInterfaceIssue"] = reflect.TypeOf((*VMotionInterfaceIssue)(nil)).Elem() -} - -func (b *VMwareDVSHealthCheckConfig) GetVMwareDVSHealthCheckConfig() *VMwareDVSHealthCheckConfig { - return b -} - -type BaseVMwareDVSHealthCheckConfig interface { - GetVMwareDVSHealthCheckConfig() *VMwareDVSHealthCheckConfig -} - -func init() { - t["BaseVMwareDVSHealthCheckConfig"] = reflect.TypeOf((*VMwareDVSHealthCheckConfig)(nil)).Elem() -} - -func (b *VimFault) GetVimFault() *VimFault { return b } - -type BaseVimFault interface { - GetVimFault() *VimFault -} - -func init() { - t["BaseVimFault"] = reflect.TypeOf((*VimFault)(nil)).Elem() -} - -func (b *VirtualController) GetVirtualController() *VirtualController { return b } - -type BaseVirtualController interface { - GetVirtualController() *VirtualController -} - -func init() { - t["BaseVirtualController"] = reflect.TypeOf((*VirtualController)(nil)).Elem() -} - -func (b *VirtualControllerOption) GetVirtualControllerOption() *VirtualControllerOption { return b } - -type BaseVirtualControllerOption interface { - GetVirtualControllerOption() *VirtualControllerOption -} - -func init() { - t["BaseVirtualControllerOption"] = reflect.TypeOf((*VirtualControllerOption)(nil)).Elem() -} - -func (b *VirtualDevice) GetVirtualDevice() *VirtualDevice { return b } - -type BaseVirtualDevice interface { - GetVirtualDevice() *VirtualDevice -} - -func init() { - t["BaseVirtualDevice"] = reflect.TypeOf((*VirtualDevice)(nil)).Elem() -} - -func (b *VirtualDeviceBackingInfo) GetVirtualDeviceBackingInfo() *VirtualDeviceBackingInfo { return b } - -type BaseVirtualDeviceBackingInfo interface { - GetVirtualDeviceBackingInfo() *VirtualDeviceBackingInfo -} - -func init() { - t["BaseVirtualDeviceBackingInfo"] = reflect.TypeOf((*VirtualDeviceBackingInfo)(nil)).Elem() -} - -func (b *VirtualDeviceBackingOption) GetVirtualDeviceBackingOption() *VirtualDeviceBackingOption { - return b -} - -type BaseVirtualDeviceBackingOption interface { - GetVirtualDeviceBackingOption() *VirtualDeviceBackingOption -} - -func init() { - t["BaseVirtualDeviceBackingOption"] = reflect.TypeOf((*VirtualDeviceBackingOption)(nil)).Elem() -} - -func (b *VirtualDeviceBusSlotInfo) GetVirtualDeviceBusSlotInfo() *VirtualDeviceBusSlotInfo { return b } - -type BaseVirtualDeviceBusSlotInfo interface { - GetVirtualDeviceBusSlotInfo() *VirtualDeviceBusSlotInfo -} - -func init() { - t["BaseVirtualDeviceBusSlotInfo"] = reflect.TypeOf((*VirtualDeviceBusSlotInfo)(nil)).Elem() -} - -func (b *VirtualDeviceConfigSpec) GetVirtualDeviceConfigSpec() *VirtualDeviceConfigSpec { return b } - -type BaseVirtualDeviceConfigSpec interface { - GetVirtualDeviceConfigSpec() *VirtualDeviceConfigSpec -} - -func init() { - t["BaseVirtualDeviceConfigSpec"] = reflect.TypeOf((*VirtualDeviceConfigSpec)(nil)).Elem() -} - -func (b *VirtualDeviceDeviceBackingInfo) GetVirtualDeviceDeviceBackingInfo() *VirtualDeviceDeviceBackingInfo { - return b -} - -type BaseVirtualDeviceDeviceBackingInfo interface { - GetVirtualDeviceDeviceBackingInfo() *VirtualDeviceDeviceBackingInfo -} - -func init() { - t["BaseVirtualDeviceDeviceBackingInfo"] = reflect.TypeOf((*VirtualDeviceDeviceBackingInfo)(nil)).Elem() -} - -func (b *VirtualDeviceDeviceBackingOption) GetVirtualDeviceDeviceBackingOption() *VirtualDeviceDeviceBackingOption { - return b -} - -type BaseVirtualDeviceDeviceBackingOption interface { - GetVirtualDeviceDeviceBackingOption() *VirtualDeviceDeviceBackingOption -} - -func init() { - t["BaseVirtualDeviceDeviceBackingOption"] = reflect.TypeOf((*VirtualDeviceDeviceBackingOption)(nil)).Elem() -} - -func (b *VirtualDeviceFileBackingInfo) GetVirtualDeviceFileBackingInfo() *VirtualDeviceFileBackingInfo { - return b -} - -type BaseVirtualDeviceFileBackingInfo interface { - GetVirtualDeviceFileBackingInfo() *VirtualDeviceFileBackingInfo -} - -func init() { - t["BaseVirtualDeviceFileBackingInfo"] = reflect.TypeOf((*VirtualDeviceFileBackingInfo)(nil)).Elem() -} - -func (b *VirtualDeviceFileBackingOption) GetVirtualDeviceFileBackingOption() *VirtualDeviceFileBackingOption { - return b -} - -type BaseVirtualDeviceFileBackingOption interface { - GetVirtualDeviceFileBackingOption() *VirtualDeviceFileBackingOption -} - -func init() { - t["BaseVirtualDeviceFileBackingOption"] = reflect.TypeOf((*VirtualDeviceFileBackingOption)(nil)).Elem() -} - -func (b *VirtualDeviceOption) GetVirtualDeviceOption() *VirtualDeviceOption { return b } - -type BaseVirtualDeviceOption interface { - GetVirtualDeviceOption() *VirtualDeviceOption -} - -func init() { - t["BaseVirtualDeviceOption"] = reflect.TypeOf((*VirtualDeviceOption)(nil)).Elem() -} - -func (b *VirtualDevicePciBusSlotInfo) GetVirtualDevicePciBusSlotInfo() *VirtualDevicePciBusSlotInfo { - return b -} - -type BaseVirtualDevicePciBusSlotInfo interface { - GetVirtualDevicePciBusSlotInfo() *VirtualDevicePciBusSlotInfo -} - -func init() { - t["BaseVirtualDevicePciBusSlotInfo"] = reflect.TypeOf((*VirtualDevicePciBusSlotInfo)(nil)).Elem() -} - -func (b *VirtualDevicePipeBackingInfo) GetVirtualDevicePipeBackingInfo() *VirtualDevicePipeBackingInfo { - return b -} - -type BaseVirtualDevicePipeBackingInfo interface { - GetVirtualDevicePipeBackingInfo() *VirtualDevicePipeBackingInfo -} - -func init() { - t["BaseVirtualDevicePipeBackingInfo"] = reflect.TypeOf((*VirtualDevicePipeBackingInfo)(nil)).Elem() -} - -func (b *VirtualDevicePipeBackingOption) GetVirtualDevicePipeBackingOption() *VirtualDevicePipeBackingOption { - return b -} - -type BaseVirtualDevicePipeBackingOption interface { - GetVirtualDevicePipeBackingOption() *VirtualDevicePipeBackingOption -} - -func init() { - t["BaseVirtualDevicePipeBackingOption"] = reflect.TypeOf((*VirtualDevicePipeBackingOption)(nil)).Elem() -} - -func (b *VirtualDeviceRemoteDeviceBackingInfo) GetVirtualDeviceRemoteDeviceBackingInfo() *VirtualDeviceRemoteDeviceBackingInfo { - return b -} - -type BaseVirtualDeviceRemoteDeviceBackingInfo interface { - GetVirtualDeviceRemoteDeviceBackingInfo() *VirtualDeviceRemoteDeviceBackingInfo -} - -func init() { - t["BaseVirtualDeviceRemoteDeviceBackingInfo"] = reflect.TypeOf((*VirtualDeviceRemoteDeviceBackingInfo)(nil)).Elem() -} - -func (b *VirtualDeviceRemoteDeviceBackingOption) GetVirtualDeviceRemoteDeviceBackingOption() *VirtualDeviceRemoteDeviceBackingOption { - return b -} - -type BaseVirtualDeviceRemoteDeviceBackingOption interface { - GetVirtualDeviceRemoteDeviceBackingOption() *VirtualDeviceRemoteDeviceBackingOption -} - -func init() { - t["BaseVirtualDeviceRemoteDeviceBackingOption"] = reflect.TypeOf((*VirtualDeviceRemoteDeviceBackingOption)(nil)).Elem() -} - -func (b *VirtualDeviceURIBackingInfo) GetVirtualDeviceURIBackingInfo() *VirtualDeviceURIBackingInfo { - return b -} - -type BaseVirtualDeviceURIBackingInfo interface { - GetVirtualDeviceURIBackingInfo() *VirtualDeviceURIBackingInfo -} - -func init() { - t["BaseVirtualDeviceURIBackingInfo"] = reflect.TypeOf((*VirtualDeviceURIBackingInfo)(nil)).Elem() -} - -func (b *VirtualDeviceURIBackingOption) GetVirtualDeviceURIBackingOption() *VirtualDeviceURIBackingOption { - return b -} - -type BaseVirtualDeviceURIBackingOption interface { - GetVirtualDeviceURIBackingOption() *VirtualDeviceURIBackingOption -} - -func init() { - t["BaseVirtualDeviceURIBackingOption"] = reflect.TypeOf((*VirtualDeviceURIBackingOption)(nil)).Elem() -} - -func (b *VirtualDiskRawDiskVer2BackingInfo) GetVirtualDiskRawDiskVer2BackingInfo() *VirtualDiskRawDiskVer2BackingInfo { - return b -} - -type BaseVirtualDiskRawDiskVer2BackingInfo interface { - GetVirtualDiskRawDiskVer2BackingInfo() *VirtualDiskRawDiskVer2BackingInfo -} - -func init() { - t["BaseVirtualDiskRawDiskVer2BackingInfo"] = reflect.TypeOf((*VirtualDiskRawDiskVer2BackingInfo)(nil)).Elem() -} - -func (b *VirtualDiskRawDiskVer2BackingOption) GetVirtualDiskRawDiskVer2BackingOption() *VirtualDiskRawDiskVer2BackingOption { - return b -} - -type BaseVirtualDiskRawDiskVer2BackingOption interface { - GetVirtualDiskRawDiskVer2BackingOption() *VirtualDiskRawDiskVer2BackingOption -} - -func init() { - t["BaseVirtualDiskRawDiskVer2BackingOption"] = reflect.TypeOf((*VirtualDiskRawDiskVer2BackingOption)(nil)).Elem() -} - -func (b *VirtualDiskSpec) GetVirtualDiskSpec() *VirtualDiskSpec { return b } - -type BaseVirtualDiskSpec interface { - GetVirtualDiskSpec() *VirtualDiskSpec -} - -func init() { - t["BaseVirtualDiskSpec"] = reflect.TypeOf((*VirtualDiskSpec)(nil)).Elem() -} - -func (b *VirtualEthernetCard) GetVirtualEthernetCard() *VirtualEthernetCard { return b } - -type BaseVirtualEthernetCard interface { - GetVirtualEthernetCard() *VirtualEthernetCard -} - -func init() { - t["BaseVirtualEthernetCard"] = reflect.TypeOf((*VirtualEthernetCard)(nil)).Elem() -} - -func (b *VirtualEthernetCardOption) GetVirtualEthernetCardOption() *VirtualEthernetCardOption { - return b -} - -type BaseVirtualEthernetCardOption interface { - GetVirtualEthernetCardOption() *VirtualEthernetCardOption -} - -func init() { - t["BaseVirtualEthernetCardOption"] = reflect.TypeOf((*VirtualEthernetCardOption)(nil)).Elem() -} - -func (b *VirtualHardwareCompatibilityIssue) GetVirtualHardwareCompatibilityIssue() *VirtualHardwareCompatibilityIssue { - return b -} - -type BaseVirtualHardwareCompatibilityIssue interface { - GetVirtualHardwareCompatibilityIssue() *VirtualHardwareCompatibilityIssue -} - -func init() { - t["BaseVirtualHardwareCompatibilityIssue"] = reflect.TypeOf((*VirtualHardwareCompatibilityIssue)(nil)).Elem() -} - -func (b *VirtualMachineBootOptionsBootableDevice) GetVirtualMachineBootOptionsBootableDevice() *VirtualMachineBootOptionsBootableDevice { - return b -} - -type BaseVirtualMachineBootOptionsBootableDevice interface { - GetVirtualMachineBootOptionsBootableDevice() *VirtualMachineBootOptionsBootableDevice -} - -func init() { - t["BaseVirtualMachineBootOptionsBootableDevice"] = reflect.TypeOf((*VirtualMachineBootOptionsBootableDevice)(nil)).Elem() -} - -func (b *VirtualMachineDeviceRuntimeInfoDeviceRuntimeState) GetVirtualMachineDeviceRuntimeInfoDeviceRuntimeState() *VirtualMachineDeviceRuntimeInfoDeviceRuntimeState { - return b -} - -type BaseVirtualMachineDeviceRuntimeInfoDeviceRuntimeState interface { - GetVirtualMachineDeviceRuntimeInfoDeviceRuntimeState() *VirtualMachineDeviceRuntimeInfoDeviceRuntimeState -} - -func init() { - t["BaseVirtualMachineDeviceRuntimeInfoDeviceRuntimeState"] = reflect.TypeOf((*VirtualMachineDeviceRuntimeInfoDeviceRuntimeState)(nil)).Elem() -} - -func (b *VirtualMachineDiskDeviceInfo) GetVirtualMachineDiskDeviceInfo() *VirtualMachineDiskDeviceInfo { - return b -} - -type BaseVirtualMachineDiskDeviceInfo interface { - GetVirtualMachineDiskDeviceInfo() *VirtualMachineDiskDeviceInfo -} - -func init() { - t["BaseVirtualMachineDiskDeviceInfo"] = reflect.TypeOf((*VirtualMachineDiskDeviceInfo)(nil)).Elem() -} - -func (b *VirtualMachinePciPassthroughInfo) GetVirtualMachinePciPassthroughInfo() *VirtualMachinePciPassthroughInfo { - return b -} - -type BaseVirtualMachinePciPassthroughInfo interface { - GetVirtualMachinePciPassthroughInfo() *VirtualMachinePciPassthroughInfo -} - -func init() { - t["BaseVirtualMachinePciPassthroughInfo"] = reflect.TypeOf((*VirtualMachinePciPassthroughInfo)(nil)).Elem() -} - -func (b *VirtualMachineProfileSpec) GetVirtualMachineProfileSpec() *VirtualMachineProfileSpec { - return b -} - -type BaseVirtualMachineProfileSpec interface { - GetVirtualMachineProfileSpec() *VirtualMachineProfileSpec -} - -func init() { - t["BaseVirtualMachineProfileSpec"] = reflect.TypeOf((*VirtualMachineProfileSpec)(nil)).Elem() -} - -func (b *VirtualMachineTargetInfo) GetVirtualMachineTargetInfo() *VirtualMachineTargetInfo { return b } - -type BaseVirtualMachineTargetInfo interface { - GetVirtualMachineTargetInfo() *VirtualMachineTargetInfo -} - -func init() { - t["BaseVirtualMachineTargetInfo"] = reflect.TypeOf((*VirtualMachineTargetInfo)(nil)).Elem() -} - -func (b *VirtualPCIPassthroughPluginBackingInfo) GetVirtualPCIPassthroughPluginBackingInfo() *VirtualPCIPassthroughPluginBackingInfo { - return b -} - -type BaseVirtualPCIPassthroughPluginBackingInfo interface { - GetVirtualPCIPassthroughPluginBackingInfo() *VirtualPCIPassthroughPluginBackingInfo -} - -func init() { - t["BaseVirtualPCIPassthroughPluginBackingInfo"] = reflect.TypeOf((*VirtualPCIPassthroughPluginBackingInfo)(nil)).Elem() -} - -func (b *VirtualPCIPassthroughPluginBackingOption) GetVirtualPCIPassthroughPluginBackingOption() *VirtualPCIPassthroughPluginBackingOption { - return b -} - -type BaseVirtualPCIPassthroughPluginBackingOption interface { - GetVirtualPCIPassthroughPluginBackingOption() *VirtualPCIPassthroughPluginBackingOption -} - -func init() { - t["BaseVirtualPCIPassthroughPluginBackingOption"] = reflect.TypeOf((*VirtualPCIPassthroughPluginBackingOption)(nil)).Elem() -} - -func (b *VirtualSATAController) GetVirtualSATAController() *VirtualSATAController { return b } - -type BaseVirtualSATAController interface { - GetVirtualSATAController() *VirtualSATAController -} - -func init() { - t["BaseVirtualSATAController"] = reflect.TypeOf((*VirtualSATAController)(nil)).Elem() -} - -func (b *VirtualSATAControllerOption) GetVirtualSATAControllerOption() *VirtualSATAControllerOption { - return b -} - -type BaseVirtualSATAControllerOption interface { - GetVirtualSATAControllerOption() *VirtualSATAControllerOption -} - -func init() { - t["BaseVirtualSATAControllerOption"] = reflect.TypeOf((*VirtualSATAControllerOption)(nil)).Elem() -} - -func (b *VirtualSCSIController) GetVirtualSCSIController() *VirtualSCSIController { return b } - -type BaseVirtualSCSIController interface { - GetVirtualSCSIController() *VirtualSCSIController -} - -func init() { - t["BaseVirtualSCSIController"] = reflect.TypeOf((*VirtualSCSIController)(nil)).Elem() -} - -func (b *VirtualSCSIControllerOption) GetVirtualSCSIControllerOption() *VirtualSCSIControllerOption { - return b -} - -type BaseVirtualSCSIControllerOption interface { - GetVirtualSCSIControllerOption() *VirtualSCSIControllerOption -} - -func init() { - t["BaseVirtualSCSIControllerOption"] = reflect.TypeOf((*VirtualSCSIControllerOption)(nil)).Elem() -} - -func (b *VirtualSoundCard) GetVirtualSoundCard() *VirtualSoundCard { return b } - -type BaseVirtualSoundCard interface { - GetVirtualSoundCard() *VirtualSoundCard -} - -func init() { - t["BaseVirtualSoundCard"] = reflect.TypeOf((*VirtualSoundCard)(nil)).Elem() -} - -func (b *VirtualSoundCardOption) GetVirtualSoundCardOption() *VirtualSoundCardOption { return b } - -type BaseVirtualSoundCardOption interface { - GetVirtualSoundCardOption() *VirtualSoundCardOption -} - -func init() { - t["BaseVirtualSoundCardOption"] = reflect.TypeOf((*VirtualSoundCardOption)(nil)).Elem() -} - -func (b *VirtualVmxnet) GetVirtualVmxnet() *VirtualVmxnet { return b } - -type BaseVirtualVmxnet interface { - GetVirtualVmxnet() *VirtualVmxnet -} - -func init() { - t["BaseVirtualVmxnet"] = reflect.TypeOf((*VirtualVmxnet)(nil)).Elem() -} - -func (b *VirtualVmxnetOption) GetVirtualVmxnetOption() *VirtualVmxnetOption { return b } - -type BaseVirtualVmxnetOption interface { - GetVirtualVmxnetOption() *VirtualVmxnetOption -} - -func init() { - t["BaseVirtualVmxnetOption"] = reflect.TypeOf((*VirtualVmxnetOption)(nil)).Elem() -} - -func (b *VmCloneEvent) GetVmCloneEvent() *VmCloneEvent { return b } - -type BaseVmCloneEvent interface { - GetVmCloneEvent() *VmCloneEvent -} - -func init() { - t["BaseVmCloneEvent"] = reflect.TypeOf((*VmCloneEvent)(nil)).Elem() -} - -func (b *VmConfigFault) GetVmConfigFault() *VmConfigFault { return b } - -type BaseVmConfigFault interface { - GetVmConfigFault() *VmConfigFault -} - -func init() { - t["BaseVmConfigFault"] = reflect.TypeOf((*VmConfigFault)(nil)).Elem() -} - -func (b *VmConfigFileInfo) GetVmConfigFileInfo() *VmConfigFileInfo { return b } - -type BaseVmConfigFileInfo interface { - GetVmConfigFileInfo() *VmConfigFileInfo -} - -func init() { - t["BaseVmConfigFileInfo"] = reflect.TypeOf((*VmConfigFileInfo)(nil)).Elem() -} - -func (b *VmConfigFileQuery) GetVmConfigFileQuery() *VmConfigFileQuery { return b } - -type BaseVmConfigFileQuery interface { - GetVmConfigFileQuery() *VmConfigFileQuery -} - -func init() { - t["BaseVmConfigFileQuery"] = reflect.TypeOf((*VmConfigFileQuery)(nil)).Elem() -} - -func (b *VmConfigInfo) GetVmConfigInfo() *VmConfigInfo { return b } - -type BaseVmConfigInfo interface { - GetVmConfigInfo() *VmConfigInfo -} - -func init() { - t["BaseVmConfigInfo"] = reflect.TypeOf((*VmConfigInfo)(nil)).Elem() -} - -func (b *VmConfigSpec) GetVmConfigSpec() *VmConfigSpec { return b } - -type BaseVmConfigSpec interface { - GetVmConfigSpec() *VmConfigSpec -} - -func init() { - t["BaseVmConfigSpec"] = reflect.TypeOf((*VmConfigSpec)(nil)).Elem() -} - -func (b *VmDasBeingResetEvent) GetVmDasBeingResetEvent() *VmDasBeingResetEvent { return b } - -type BaseVmDasBeingResetEvent interface { - GetVmDasBeingResetEvent() *VmDasBeingResetEvent -} - -func init() { - t["BaseVmDasBeingResetEvent"] = reflect.TypeOf((*VmDasBeingResetEvent)(nil)).Elem() -} - -func (b *VmEvent) GetVmEvent() *VmEvent { return b } - -type BaseVmEvent interface { - GetVmEvent() *VmEvent -} - -func init() { - t["BaseVmEvent"] = reflect.TypeOf((*VmEvent)(nil)).Elem() -} - -func (b *VmFaultToleranceIssue) GetVmFaultToleranceIssue() *VmFaultToleranceIssue { return b } - -type BaseVmFaultToleranceIssue interface { - GetVmFaultToleranceIssue() *VmFaultToleranceIssue -} - -func init() { - t["BaseVmFaultToleranceIssue"] = reflect.TypeOf((*VmFaultToleranceIssue)(nil)).Elem() -} - -func (b *VmMigratedEvent) GetVmMigratedEvent() *VmMigratedEvent { return b } - -type BaseVmMigratedEvent interface { - GetVmMigratedEvent() *VmMigratedEvent -} - -func init() { - t["BaseVmMigratedEvent"] = reflect.TypeOf((*VmMigratedEvent)(nil)).Elem() -} - -func (b *VmPoweredOffEvent) GetVmPoweredOffEvent() *VmPoweredOffEvent { return b } - -type BaseVmPoweredOffEvent interface { - GetVmPoweredOffEvent() *VmPoweredOffEvent -} - -func init() { - t["BaseVmPoweredOffEvent"] = reflect.TypeOf((*VmPoweredOffEvent)(nil)).Elem() -} - -func (b *VmPoweredOnEvent) GetVmPoweredOnEvent() *VmPoweredOnEvent { return b } - -type BaseVmPoweredOnEvent interface { - GetVmPoweredOnEvent() *VmPoweredOnEvent -} - -func init() { - t["BaseVmPoweredOnEvent"] = reflect.TypeOf((*VmPoweredOnEvent)(nil)).Elem() -} - -func (b *VmRelocateSpecEvent) GetVmRelocateSpecEvent() *VmRelocateSpecEvent { return b } - -type BaseVmRelocateSpecEvent interface { - GetVmRelocateSpecEvent() *VmRelocateSpecEvent -} - -func init() { - t["BaseVmRelocateSpecEvent"] = reflect.TypeOf((*VmRelocateSpecEvent)(nil)).Elem() -} - -func (b *VmStartingEvent) GetVmStartingEvent() *VmStartingEvent { return b } - -type BaseVmStartingEvent interface { - GetVmStartingEvent() *VmStartingEvent -} - -func init() { - t["BaseVmStartingEvent"] = reflect.TypeOf((*VmStartingEvent)(nil)).Elem() -} - -func (b *VmToolsUpgradeFault) GetVmToolsUpgradeFault() *VmToolsUpgradeFault { return b } - -type BaseVmToolsUpgradeFault interface { - GetVmToolsUpgradeFault() *VmToolsUpgradeFault -} - -func init() { - t["BaseVmToolsUpgradeFault"] = reflect.TypeOf((*VmToolsUpgradeFault)(nil)).Elem() -} - -func (b *VmfsDatastoreBaseOption) GetVmfsDatastoreBaseOption() *VmfsDatastoreBaseOption { return b } - -type BaseVmfsDatastoreBaseOption interface { - GetVmfsDatastoreBaseOption() *VmfsDatastoreBaseOption -} - -func init() { - t["BaseVmfsDatastoreBaseOption"] = reflect.TypeOf((*VmfsDatastoreBaseOption)(nil)).Elem() -} - -func (b *VmfsDatastoreSingleExtentOption) GetVmfsDatastoreSingleExtentOption() *VmfsDatastoreSingleExtentOption { - return b -} - -type BaseVmfsDatastoreSingleExtentOption interface { - GetVmfsDatastoreSingleExtentOption() *VmfsDatastoreSingleExtentOption -} - -func init() { - t["BaseVmfsDatastoreSingleExtentOption"] = reflect.TypeOf((*VmfsDatastoreSingleExtentOption)(nil)).Elem() -} - -func (b *VmfsDatastoreSpec) GetVmfsDatastoreSpec() *VmfsDatastoreSpec { return b } - -type BaseVmfsDatastoreSpec interface { - GetVmfsDatastoreSpec() *VmfsDatastoreSpec -} - -func init() { - t["BaseVmfsDatastoreSpec"] = reflect.TypeOf((*VmfsDatastoreSpec)(nil)).Elem() -} - -func (b *VmfsMountFault) GetVmfsMountFault() *VmfsMountFault { return b } - -type BaseVmfsMountFault interface { - GetVmfsMountFault() *VmfsMountFault -} - -func init() { - t["BaseVmfsMountFault"] = reflect.TypeOf((*VmfsMountFault)(nil)).Elem() -} - -func (b *VmwareDistributedVirtualSwitchVlanSpec) GetVmwareDistributedVirtualSwitchVlanSpec() *VmwareDistributedVirtualSwitchVlanSpec { - return b -} - -type BaseVmwareDistributedVirtualSwitchVlanSpec interface { - GetVmwareDistributedVirtualSwitchVlanSpec() *VmwareDistributedVirtualSwitchVlanSpec -} - -func init() { - t["BaseVmwareDistributedVirtualSwitchVlanSpec"] = reflect.TypeOf((*VmwareDistributedVirtualSwitchVlanSpec)(nil)).Elem() -} - -func (b *VsanDiskFault) GetVsanDiskFault() *VsanDiskFault { return b } - -type BaseVsanDiskFault interface { - GetVsanDiskFault() *VsanDiskFault -} - -func init() { - t["BaseVsanDiskFault"] = reflect.TypeOf((*VsanDiskFault)(nil)).Elem() -} - -func (b *VsanFault) GetVsanFault() *VsanFault { return b } - -type BaseVsanFault interface { - GetVsanFault() *VsanFault -} - -func init() { - t["BaseVsanFault"] = reflect.TypeOf((*VsanFault)(nil)).Elem() -} - -func (b *VsanUpgradeSystemPreflightCheckIssue) GetVsanUpgradeSystemPreflightCheckIssue() *VsanUpgradeSystemPreflightCheckIssue { - return b -} - -type BaseVsanUpgradeSystemPreflightCheckIssue interface { - GetVsanUpgradeSystemPreflightCheckIssue() *VsanUpgradeSystemPreflightCheckIssue -} - -func init() { - t["BaseVsanUpgradeSystemPreflightCheckIssue"] = reflect.TypeOf((*VsanUpgradeSystemPreflightCheckIssue)(nil)).Elem() -} - -func (b *VsanUpgradeSystemUpgradeHistoryItem) GetVsanUpgradeSystemUpgradeHistoryItem() *VsanUpgradeSystemUpgradeHistoryItem { - return b -} - -type BaseVsanUpgradeSystemUpgradeHistoryItem interface { - GetVsanUpgradeSystemUpgradeHistoryItem() *VsanUpgradeSystemUpgradeHistoryItem -} - -func init() { - t["BaseVsanUpgradeSystemUpgradeHistoryItem"] = reflect.TypeOf((*VsanUpgradeSystemUpgradeHistoryItem)(nil)).Elem() -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/internal.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/internal.go deleted file mode 100644 index 5a9e6c63..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/internal.go +++ /dev/null @@ -1,262 +0,0 @@ -/* -Copyright (c) 2014 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package types - -import "reflect" - -type DynamicTypeMgrQueryMoInstances struct { - This ManagedObjectReference `xml:"_this"` - FilterSpec BaseDynamicTypeMgrFilterSpec `xml:"filterSpec,omitempty,typeattr"` -} - -type DynamicTypeMgrQueryMoInstancesResponse struct { - Returnval []DynamicTypeMgrMoInstance `xml:"urn:vim25 returnval"` -} - -type DynamicTypeEnumTypeInfo struct { - DynamicData - - Name string `xml:"name"` - WsdlName string `xml:"wsdlName"` - Version string `xml:"version"` - Value []string `xml:"value,omitempty"` - Annotation []DynamicTypeMgrAnnotation `xml:"annotation,omitempty"` -} - -func init() { - t["DynamicTypeEnumTypeInfo"] = reflect.TypeOf((*DynamicTypeEnumTypeInfo)(nil)).Elem() -} - -type DynamicTypeMgrAllTypeInfo struct { - DynamicData - - ManagedTypeInfo []DynamicTypeMgrManagedTypeInfo `xml:"managedTypeInfo,omitempty"` - EnumTypeInfo []DynamicTypeEnumTypeInfo `xml:"enumTypeInfo,omitempty"` - DataTypeInfo []DynamicTypeMgrDataTypeInfo `xml:"dataTypeInfo,omitempty"` -} - -func init() { - t["DynamicTypeMgrAllTypeInfo"] = reflect.TypeOf((*DynamicTypeMgrAllTypeInfo)(nil)).Elem() -} - -type DynamicTypeMgrAnnotation struct { - DynamicData - - Name string `xml:"name"` - Parameter []string `xml:"parameter,omitempty"` -} - -func init() { - t["DynamicTypeMgrAnnotation"] = reflect.TypeOf((*DynamicTypeMgrAnnotation)(nil)).Elem() -} - -type DynamicTypeMgrDataTypeInfo struct { - DynamicData - - Name string `xml:"name"` - WsdlName string `xml:"wsdlName"` - Version string `xml:"version"` - Base []string `xml:"base,omitempty"` - Property []DynamicTypeMgrPropertyTypeInfo `xml:"property,omitempty"` - Annotation []DynamicTypeMgrAnnotation `xml:"annotation,omitempty"` -} - -func init() { - t["DynamicTypeMgrDataTypeInfo"] = reflect.TypeOf((*DynamicTypeMgrDataTypeInfo)(nil)).Elem() -} - -func (b *DynamicTypeMgrFilterSpec) GetDynamicTypeMgrFilterSpec() *DynamicTypeMgrFilterSpec { return b } - -type BaseDynamicTypeMgrFilterSpec interface { - GetDynamicTypeMgrFilterSpec() *DynamicTypeMgrFilterSpec -} - -type DynamicTypeMgrFilterSpec struct { - DynamicData -} - -func init() { - t["DynamicTypeMgrFilterSpec"] = reflect.TypeOf((*DynamicTypeMgrFilterSpec)(nil)).Elem() -} - -type DynamicTypeMgrManagedTypeInfo struct { - DynamicData - - Name string `xml:"name"` - WsdlName string `xml:"wsdlName"` - Version string `xml:"version"` - Base []string `xml:"base,omitempty"` - Property []DynamicTypeMgrPropertyTypeInfo `xml:"property,omitempty"` - Method []DynamicTypeMgrMethodTypeInfo `xml:"method,omitempty"` - Annotation []DynamicTypeMgrAnnotation `xml:"annotation,omitempty"` -} - -func init() { - t["DynamicTypeMgrManagedTypeInfo"] = reflect.TypeOf((*DynamicTypeMgrManagedTypeInfo)(nil)).Elem() -} - -type DynamicTypeMgrMethodTypeInfo struct { - DynamicData - - Name string `xml:"name"` - WsdlName string `xml:"wsdlName"` - Version string `xml:"version"` - ParamTypeInfo []DynamicTypeMgrParamTypeInfo `xml:"paramTypeInfo,omitempty"` - ReturnTypeInfo *DynamicTypeMgrParamTypeInfo `xml:"returnTypeInfo,omitempty"` - Fault []string `xml:"fault,omitempty"` - PrivId string `xml:"privId,omitempty"` - Annotation []DynamicTypeMgrAnnotation `xml:"annotation,omitempty"` -} - -func init() { - t["DynamicTypeMgrMethodTypeInfo"] = reflect.TypeOf((*DynamicTypeMgrMethodTypeInfo)(nil)).Elem() -} - -type DynamicTypeMgrMoFilterSpec struct { - DynamicTypeMgrFilterSpec - - Id string `xml:"id,omitempty"` - TypeSubstr string `xml:"typeSubstr,omitempty"` -} - -func init() { - t["DynamicTypeMgrMoFilterSpec"] = reflect.TypeOf((*DynamicTypeMgrMoFilterSpec)(nil)).Elem() -} - -type DynamicTypeMgrMoInstance struct { - DynamicData - - Id string `xml:"id"` - MoType string `xml:"moType"` -} - -func init() { - t["DynamicTypeMgrMoInstance"] = reflect.TypeOf((*DynamicTypeMgrMoInstance)(nil)).Elem() -} - -type DynamicTypeMgrParamTypeInfo struct { - DynamicData - - Name string `xml:"name"` - Version string `xml:"version"` - Type string `xml:"type"` - PrivId string `xml:"privId,omitempty"` - Annotation []DynamicTypeMgrAnnotation `xml:"annotation,omitempty"` -} - -func init() { - t["DynamicTypeMgrParamTypeInfo"] = reflect.TypeOf((*DynamicTypeMgrParamTypeInfo)(nil)).Elem() -} - -type DynamicTypeMgrPropertyTypeInfo struct { - DynamicData - - Name string `xml:"name"` - Version string `xml:"version"` - Type string `xml:"type"` - PrivId string `xml:"privId,omitempty"` - MsgIdFormat string `xml:"msgIdFormat,omitempty"` - Annotation []DynamicTypeMgrAnnotation `xml:"annotation,omitempty"` -} - -type DynamicTypeMgrQueryTypeInfo struct { - This ManagedObjectReference `xml:"_this"` - FilterSpec BaseDynamicTypeMgrFilterSpec `xml:"filterSpec,omitempty,typeattr"` -} - -type DynamicTypeMgrQueryTypeInfoResponse struct { - Returnval DynamicTypeMgrAllTypeInfo `xml:"urn:vim25 returnval"` -} - -func init() { - t["DynamicTypeMgrPropertyTypeInfo"] = reflect.TypeOf((*DynamicTypeMgrPropertyTypeInfo)(nil)).Elem() -} - -type DynamicTypeMgrTypeFilterSpec struct { - DynamicTypeMgrFilterSpec - - TypeSubstr string `xml:"typeSubstr,omitempty"` -} - -func init() { - t["DynamicTypeMgrTypeFilterSpec"] = reflect.TypeOf((*DynamicTypeMgrTypeFilterSpec)(nil)).Elem() -} - -type ReflectManagedMethodExecuterSoapArgument struct { - DynamicData - - Name string `xml:"name"` - Val string `xml:"val"` -} - -func init() { - t["ReflectManagedMethodExecuterSoapArgument"] = reflect.TypeOf((*ReflectManagedMethodExecuterSoapArgument)(nil)).Elem() -} - -type ReflectManagedMethodExecuterSoapFault struct { - DynamicData - - FaultMsg string `xml:"faultMsg"` - FaultDetail string `xml:"faultDetail,omitempty"` -} - -func init() { - t["ReflectManagedMethodExecuterSoapFault"] = reflect.TypeOf((*ReflectManagedMethodExecuterSoapFault)(nil)).Elem() -} - -type ReflectManagedMethodExecuterSoapResult struct { - DynamicData - - Response string `xml:"response,omitempty"` - Fault *ReflectManagedMethodExecuterSoapFault `xml:"fault,omitempty"` -} - -type RetrieveDynamicTypeManager struct { - This ManagedObjectReference `xml:"_this"` -} - -type RetrieveDynamicTypeManagerResponse struct { - Returnval *InternalDynamicTypeManager `xml:"urn:vim25 returnval"` -} - -type RetrieveManagedMethodExecuter struct { - This ManagedObjectReference `xml:"_this"` -} - -type RetrieveManagedMethodExecuterResponse struct { - Returnval *ReflectManagedMethodExecuter `xml:"urn:vim25 returnval"` -} - -type InternalDynamicTypeManager struct { - ManagedObjectReference -} - -type ReflectManagedMethodExecuter struct { - ManagedObjectReference -} - -type ExecuteSoap struct { - This ManagedObjectReference `xml:"_this"` - Moid string `xml:"moid"` - Version string `xml:"version"` - Method string `xml:"method"` - Argument []ReflectManagedMethodExecuterSoapArgument `xml:"argument,omitempty"` -} - -type ExecuteSoapResponse struct { - Returnval *ReflectManagedMethodExecuterSoapResult `xml:"urn:vim25 returnval"` -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/registry.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/registry.go deleted file mode 100644 index 8f238088..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/registry.go +++ /dev/null @@ -1,30 +0,0 @@ -/* -Copyright (c) 2014 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package types - -import "reflect" - -var t = map[string]reflect.Type{} - -type Func func(string) (reflect.Type, bool) - -func TypeFunc() Func { - return func(name string) (reflect.Type, bool) { - typ, ok := t[name] - return typ, ok - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/types.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/types.go deleted file mode 100644 index 03b976c2..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/types/types.go +++ /dev/null @@ -1,49702 +0,0 @@ -/* -Copyright (c) 2014-2016 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package types - -import ( - "net/url" - "reflect" - "time" -) - -type AbdicateDomOwnership AbdicateDomOwnershipRequestType - -func init() { - t["AbdicateDomOwnership"] = reflect.TypeOf((*AbdicateDomOwnership)(nil)).Elem() -} - -type AbdicateDomOwnershipRequestType struct { - This ManagedObjectReference `xml:"_this"` - Uuids []string `xml:"uuids"` -} - -func init() { - t["AbdicateDomOwnershipRequestType"] = reflect.TypeOf((*AbdicateDomOwnershipRequestType)(nil)).Elem() -} - -type AbdicateDomOwnershipResponse struct { - Returnval []string `xml:"returnval,omitempty"` -} - -type AboutInfo struct { - DynamicData - - Name string `xml:"name"` - FullName string `xml:"fullName"` - Vendor string `xml:"vendor"` - Version string `xml:"version"` - Build string `xml:"build"` - LocaleVersion string `xml:"localeVersion,omitempty"` - LocaleBuild string `xml:"localeBuild,omitempty"` - OsType string `xml:"osType"` - ProductLineId string `xml:"productLineId"` - ApiType string `xml:"apiType"` - ApiVersion string `xml:"apiVersion"` - InstanceUuid string `xml:"instanceUuid,omitempty"` - LicenseProductName string `xml:"licenseProductName,omitempty"` - LicenseProductVersion string `xml:"licenseProductVersion,omitempty"` -} - -func init() { - t["AboutInfo"] = reflect.TypeOf((*AboutInfo)(nil)).Elem() -} - -type AccountCreatedEvent struct { - HostEvent - - Spec BaseHostAccountSpec `xml:"spec,typeattr"` - Group bool `xml:"group"` -} - -func init() { - t["AccountCreatedEvent"] = reflect.TypeOf((*AccountCreatedEvent)(nil)).Elem() -} - -type AccountRemovedEvent struct { - HostEvent - - Account string `xml:"account"` - Group bool `xml:"group"` -} - -func init() { - t["AccountRemovedEvent"] = reflect.TypeOf((*AccountRemovedEvent)(nil)).Elem() -} - -type AccountUpdatedEvent struct { - HostEvent - - Spec BaseHostAccountSpec `xml:"spec,typeattr"` - Group bool `xml:"group"` -} - -func init() { - t["AccountUpdatedEvent"] = reflect.TypeOf((*AccountUpdatedEvent)(nil)).Elem() -} - -type AcknowledgeAlarm AcknowledgeAlarmRequestType - -func init() { - t["AcknowledgeAlarm"] = reflect.TypeOf((*AcknowledgeAlarm)(nil)).Elem() -} - -type AcknowledgeAlarmRequestType struct { - This ManagedObjectReference `xml:"_this"` - Alarm ManagedObjectReference `xml:"alarm"` - Entity ManagedObjectReference `xml:"entity"` -} - -func init() { - t["AcknowledgeAlarmRequestType"] = reflect.TypeOf((*AcknowledgeAlarmRequestType)(nil)).Elem() -} - -type AcknowledgeAlarmResponse struct { -} - -type AcquireCimServicesTicket AcquireCimServicesTicketRequestType - -func init() { - t["AcquireCimServicesTicket"] = reflect.TypeOf((*AcquireCimServicesTicket)(nil)).Elem() -} - -type AcquireCimServicesTicketRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["AcquireCimServicesTicketRequestType"] = reflect.TypeOf((*AcquireCimServicesTicketRequestType)(nil)).Elem() -} - -type AcquireCimServicesTicketResponse struct { - Returnval HostServiceTicket `xml:"returnval"` -} - -type AcquireCloneTicket AcquireCloneTicketRequestType - -func init() { - t["AcquireCloneTicket"] = reflect.TypeOf((*AcquireCloneTicket)(nil)).Elem() -} - -type AcquireCloneTicketRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["AcquireCloneTicketRequestType"] = reflect.TypeOf((*AcquireCloneTicketRequestType)(nil)).Elem() -} - -type AcquireCloneTicketResponse struct { - Returnval string `xml:"returnval"` -} - -type AcquireCredentialsInGuest AcquireCredentialsInGuestRequestType - -func init() { - t["AcquireCredentialsInGuest"] = reflect.TypeOf((*AcquireCredentialsInGuest)(nil)).Elem() -} - -type AcquireCredentialsInGuestRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - RequestedAuth BaseGuestAuthentication `xml:"requestedAuth,typeattr"` - SessionID int64 `xml:"sessionID,omitempty"` -} - -func init() { - t["AcquireCredentialsInGuestRequestType"] = reflect.TypeOf((*AcquireCredentialsInGuestRequestType)(nil)).Elem() -} - -type AcquireCredentialsInGuestResponse struct { - Returnval BaseGuestAuthentication `xml:"returnval,typeattr"` -} - -type AcquireGenericServiceTicket AcquireGenericServiceTicketRequestType - -func init() { - t["AcquireGenericServiceTicket"] = reflect.TypeOf((*AcquireGenericServiceTicket)(nil)).Elem() -} - -type AcquireGenericServiceTicketRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec BaseSessionManagerServiceRequestSpec `xml:"spec,typeattr"` -} - -func init() { - t["AcquireGenericServiceTicketRequestType"] = reflect.TypeOf((*AcquireGenericServiceTicketRequestType)(nil)).Elem() -} - -type AcquireGenericServiceTicketResponse struct { - Returnval SessionManagerGenericServiceTicket `xml:"returnval"` -} - -type AcquireLocalTicket AcquireLocalTicketRequestType - -func init() { - t["AcquireLocalTicket"] = reflect.TypeOf((*AcquireLocalTicket)(nil)).Elem() -} - -type AcquireLocalTicketRequestType struct { - This ManagedObjectReference `xml:"_this"` - UserName string `xml:"userName"` -} - -func init() { - t["AcquireLocalTicketRequestType"] = reflect.TypeOf((*AcquireLocalTicketRequestType)(nil)).Elem() -} - -type AcquireLocalTicketResponse struct { - Returnval SessionManagerLocalTicket `xml:"returnval"` -} - -type AcquireMksTicket AcquireMksTicketRequestType - -func init() { - t["AcquireMksTicket"] = reflect.TypeOf((*AcquireMksTicket)(nil)).Elem() -} - -type AcquireMksTicketRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["AcquireMksTicketRequestType"] = reflect.TypeOf((*AcquireMksTicketRequestType)(nil)).Elem() -} - -type AcquireMksTicketResponse struct { - Returnval VirtualMachineMksTicket `xml:"returnval"` -} - -type AcquireTicket AcquireTicketRequestType - -func init() { - t["AcquireTicket"] = reflect.TypeOf((*AcquireTicket)(nil)).Elem() -} - -type AcquireTicketRequestType struct { - This ManagedObjectReference `xml:"_this"` - TicketType string `xml:"ticketType"` -} - -func init() { - t["AcquireTicketRequestType"] = reflect.TypeOf((*AcquireTicketRequestType)(nil)).Elem() -} - -type AcquireTicketResponse struct { - Returnval VirtualMachineTicket `xml:"returnval"` -} - -type Action struct { - DynamicData -} - -func init() { - t["Action"] = reflect.TypeOf((*Action)(nil)).Elem() -} - -type ActiveDirectoryFault struct { - VimFault - - ErrorCode int32 `xml:"errorCode,omitempty"` -} - -func init() { - t["ActiveDirectoryFault"] = reflect.TypeOf((*ActiveDirectoryFault)(nil)).Elem() -} - -type ActiveDirectoryFaultFault BaseActiveDirectoryFault - -func init() { - t["ActiveDirectoryFaultFault"] = reflect.TypeOf((*ActiveDirectoryFaultFault)(nil)).Elem() -} - -type ActiveDirectoryProfile struct { - ApplyProfile -} - -func init() { - t["ActiveDirectoryProfile"] = reflect.TypeOf((*ActiveDirectoryProfile)(nil)).Elem() -} - -type ActiveVMsBlockingEVC struct { - EVCConfigFault - - EvcMode string `xml:"evcMode,omitempty"` - Host []ManagedObjectReference `xml:"host,omitempty"` - HostName []string `xml:"hostName,omitempty"` -} - -func init() { - t["ActiveVMsBlockingEVC"] = reflect.TypeOf((*ActiveVMsBlockingEVC)(nil)).Elem() -} - -type ActiveVMsBlockingEVCFault ActiveVMsBlockingEVC - -func init() { - t["ActiveVMsBlockingEVCFault"] = reflect.TypeOf((*ActiveVMsBlockingEVCFault)(nil)).Elem() -} - -type AddAuthorizationRole AddAuthorizationRoleRequestType - -func init() { - t["AddAuthorizationRole"] = reflect.TypeOf((*AddAuthorizationRole)(nil)).Elem() -} - -type AddAuthorizationRoleRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` - PrivIds []string `xml:"privIds,omitempty"` -} - -func init() { - t["AddAuthorizationRoleRequestType"] = reflect.TypeOf((*AddAuthorizationRoleRequestType)(nil)).Elem() -} - -type AddAuthorizationRoleResponse struct { - Returnval int32 `xml:"returnval"` -} - -type AddCustomFieldDef AddCustomFieldDefRequestType - -func init() { - t["AddCustomFieldDef"] = reflect.TypeOf((*AddCustomFieldDef)(nil)).Elem() -} - -type AddCustomFieldDefRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` - MoType string `xml:"moType,omitempty"` - FieldDefPolicy *PrivilegePolicyDef `xml:"fieldDefPolicy,omitempty"` - FieldPolicy *PrivilegePolicyDef `xml:"fieldPolicy,omitempty"` -} - -func init() { - t["AddCustomFieldDefRequestType"] = reflect.TypeOf((*AddCustomFieldDefRequestType)(nil)).Elem() -} - -type AddCustomFieldDefResponse struct { - Returnval CustomFieldDef `xml:"returnval"` -} - -type AddDVPortgroupRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec []DVPortgroupConfigSpec `xml:"spec"` -} - -func init() { - t["AddDVPortgroupRequestType"] = reflect.TypeOf((*AddDVPortgroupRequestType)(nil)).Elem() -} - -type AddDVPortgroup_Task AddDVPortgroupRequestType - -func init() { - t["AddDVPortgroup_Task"] = reflect.TypeOf((*AddDVPortgroup_Task)(nil)).Elem() -} - -type AddDVPortgroup_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type AddDisksRequestType struct { - This ManagedObjectReference `xml:"_this"` - Disk []HostScsiDisk `xml:"disk"` -} - -func init() { - t["AddDisksRequestType"] = reflect.TypeOf((*AddDisksRequestType)(nil)).Elem() -} - -type AddDisks_Task AddDisksRequestType - -func init() { - t["AddDisks_Task"] = reflect.TypeOf((*AddDisks_Task)(nil)).Elem() -} - -type AddDisks_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type AddGuestAlias AddGuestAliasRequestType - -func init() { - t["AddGuestAlias"] = reflect.TypeOf((*AddGuestAlias)(nil)).Elem() -} - -type AddGuestAliasRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Auth BaseGuestAuthentication `xml:"auth,typeattr"` - Username string `xml:"username"` - MapCert bool `xml:"mapCert"` - Base64Cert string `xml:"base64Cert"` - AliasInfo GuestAuthAliasInfo `xml:"aliasInfo"` -} - -func init() { - t["AddGuestAliasRequestType"] = reflect.TypeOf((*AddGuestAliasRequestType)(nil)).Elem() -} - -type AddGuestAliasResponse struct { -} - -type AddHostRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec HostConnectSpec `xml:"spec"` - AsConnected bool `xml:"asConnected"` - ResourcePool *ManagedObjectReference `xml:"resourcePool,omitempty"` - License string `xml:"license,omitempty"` -} - -func init() { - t["AddHostRequestType"] = reflect.TypeOf((*AddHostRequestType)(nil)).Elem() -} - -type AddHost_Task AddHostRequestType - -func init() { - t["AddHost_Task"] = reflect.TypeOf((*AddHost_Task)(nil)).Elem() -} - -type AddHost_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type AddInternetScsiSendTargets AddInternetScsiSendTargetsRequestType - -func init() { - t["AddInternetScsiSendTargets"] = reflect.TypeOf((*AddInternetScsiSendTargets)(nil)).Elem() -} - -type AddInternetScsiSendTargetsRequestType struct { - This ManagedObjectReference `xml:"_this"` - IScsiHbaDevice string `xml:"iScsiHbaDevice"` - Targets []HostInternetScsiHbaSendTarget `xml:"targets"` -} - -func init() { - t["AddInternetScsiSendTargetsRequestType"] = reflect.TypeOf((*AddInternetScsiSendTargetsRequestType)(nil)).Elem() -} - -type AddInternetScsiSendTargetsResponse struct { -} - -type AddInternetScsiStaticTargets AddInternetScsiStaticTargetsRequestType - -func init() { - t["AddInternetScsiStaticTargets"] = reflect.TypeOf((*AddInternetScsiStaticTargets)(nil)).Elem() -} - -type AddInternetScsiStaticTargetsRequestType struct { - This ManagedObjectReference `xml:"_this"` - IScsiHbaDevice string `xml:"iScsiHbaDevice"` - Targets []HostInternetScsiHbaStaticTarget `xml:"targets"` -} - -func init() { - t["AddInternetScsiStaticTargetsRequestType"] = reflect.TypeOf((*AddInternetScsiStaticTargetsRequestType)(nil)).Elem() -} - -type AddInternetScsiStaticTargetsResponse struct { -} - -type AddLicense AddLicenseRequestType - -func init() { - t["AddLicense"] = reflect.TypeOf((*AddLicense)(nil)).Elem() -} - -type AddLicenseRequestType struct { - This ManagedObjectReference `xml:"_this"` - LicenseKey string `xml:"licenseKey"` - Labels []KeyValue `xml:"labels,omitempty"` -} - -func init() { - t["AddLicenseRequestType"] = reflect.TypeOf((*AddLicenseRequestType)(nil)).Elem() -} - -type AddLicenseResponse struct { - Returnval LicenseManagerLicenseInfo `xml:"returnval"` -} - -type AddNetworkResourcePool AddNetworkResourcePoolRequestType - -func init() { - t["AddNetworkResourcePool"] = reflect.TypeOf((*AddNetworkResourcePool)(nil)).Elem() -} - -type AddNetworkResourcePoolRequestType struct { - This ManagedObjectReference `xml:"_this"` - ConfigSpec []DVSNetworkResourcePoolConfigSpec `xml:"configSpec"` -} - -func init() { - t["AddNetworkResourcePoolRequestType"] = reflect.TypeOf((*AddNetworkResourcePoolRequestType)(nil)).Elem() -} - -type AddNetworkResourcePoolResponse struct { -} - -type AddPortGroup AddPortGroupRequestType - -func init() { - t["AddPortGroup"] = reflect.TypeOf((*AddPortGroup)(nil)).Elem() -} - -type AddPortGroupRequestType struct { - This ManagedObjectReference `xml:"_this"` - Portgrp HostPortGroupSpec `xml:"portgrp"` -} - -func init() { - t["AddPortGroupRequestType"] = reflect.TypeOf((*AddPortGroupRequestType)(nil)).Elem() -} - -type AddPortGroupResponse struct { -} - -type AddServiceConsoleVirtualNic AddServiceConsoleVirtualNicRequestType - -func init() { - t["AddServiceConsoleVirtualNic"] = reflect.TypeOf((*AddServiceConsoleVirtualNic)(nil)).Elem() -} - -type AddServiceConsoleVirtualNicRequestType struct { - This ManagedObjectReference `xml:"_this"` - Portgroup string `xml:"portgroup"` - Nic HostVirtualNicSpec `xml:"nic"` -} - -func init() { - t["AddServiceConsoleVirtualNicRequestType"] = reflect.TypeOf((*AddServiceConsoleVirtualNicRequestType)(nil)).Elem() -} - -type AddServiceConsoleVirtualNicResponse struct { - Returnval string `xml:"returnval"` -} - -type AddStandaloneHostRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec HostConnectSpec `xml:"spec"` - CompResSpec BaseComputeResourceConfigSpec `xml:"compResSpec,omitempty,typeattr"` - AddConnected bool `xml:"addConnected"` - License string `xml:"license,omitempty"` -} - -func init() { - t["AddStandaloneHostRequestType"] = reflect.TypeOf((*AddStandaloneHostRequestType)(nil)).Elem() -} - -type AddStandaloneHost_Task AddStandaloneHostRequestType - -func init() { - t["AddStandaloneHost_Task"] = reflect.TypeOf((*AddStandaloneHost_Task)(nil)).Elem() -} - -type AddStandaloneHost_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type AddVirtualNic AddVirtualNicRequestType - -func init() { - t["AddVirtualNic"] = reflect.TypeOf((*AddVirtualNic)(nil)).Elem() -} - -type AddVirtualNicRequestType struct { - This ManagedObjectReference `xml:"_this"` - Portgroup string `xml:"portgroup"` - Nic HostVirtualNicSpec `xml:"nic"` -} - -func init() { - t["AddVirtualNicRequestType"] = reflect.TypeOf((*AddVirtualNicRequestType)(nil)).Elem() -} - -type AddVirtualNicResponse struct { - Returnval string `xml:"returnval"` -} - -type AddVirtualSwitch AddVirtualSwitchRequestType - -func init() { - t["AddVirtualSwitch"] = reflect.TypeOf((*AddVirtualSwitch)(nil)).Elem() -} - -type AddVirtualSwitchRequestType struct { - This ManagedObjectReference `xml:"_this"` - VswitchName string `xml:"vswitchName"` - Spec *HostVirtualSwitchSpec `xml:"spec,omitempty"` -} - -func init() { - t["AddVirtualSwitchRequestType"] = reflect.TypeOf((*AddVirtualSwitchRequestType)(nil)).Elem() -} - -type AddVirtualSwitchResponse struct { -} - -type AdminDisabled struct { - HostConfigFault -} - -func init() { - t["AdminDisabled"] = reflect.TypeOf((*AdminDisabled)(nil)).Elem() -} - -type AdminDisabledFault AdminDisabled - -func init() { - t["AdminDisabledFault"] = reflect.TypeOf((*AdminDisabledFault)(nil)).Elem() -} - -type AdminNotDisabled struct { - HostConfigFault -} - -func init() { - t["AdminNotDisabled"] = reflect.TypeOf((*AdminNotDisabled)(nil)).Elem() -} - -type AdminNotDisabledFault AdminNotDisabled - -func init() { - t["AdminNotDisabledFault"] = reflect.TypeOf((*AdminNotDisabledFault)(nil)).Elem() -} - -type AdminPasswordNotChangedEvent struct { - HostEvent -} - -func init() { - t["AdminPasswordNotChangedEvent"] = reflect.TypeOf((*AdminPasswordNotChangedEvent)(nil)).Elem() -} - -type AffinityConfigured struct { - MigrationFault - - ConfiguredAffinity []string `xml:"configuredAffinity"` -} - -func init() { - t["AffinityConfigured"] = reflect.TypeOf((*AffinityConfigured)(nil)).Elem() -} - -type AffinityConfiguredFault AffinityConfigured - -func init() { - t["AffinityConfiguredFault"] = reflect.TypeOf((*AffinityConfiguredFault)(nil)).Elem() -} - -type AfterStartupTaskScheduler struct { - TaskScheduler - - Minute int32 `xml:"minute"` -} - -func init() { - t["AfterStartupTaskScheduler"] = reflect.TypeOf((*AfterStartupTaskScheduler)(nil)).Elem() -} - -type AgentInstallFailed struct { - HostConnectFault - - Reason string `xml:"reason,omitempty"` - StatusCode int32 `xml:"statusCode,omitempty"` - InstallerOutput string `xml:"installerOutput,omitempty"` -} - -func init() { - t["AgentInstallFailed"] = reflect.TypeOf((*AgentInstallFailed)(nil)).Elem() -} - -type AgentInstallFailedFault AgentInstallFailed - -func init() { - t["AgentInstallFailedFault"] = reflect.TypeOf((*AgentInstallFailedFault)(nil)).Elem() -} - -type AlarmAcknowledgedEvent struct { - AlarmEvent - - Source ManagedEntityEventArgument `xml:"source"` - Entity ManagedEntityEventArgument `xml:"entity"` -} - -func init() { - t["AlarmAcknowledgedEvent"] = reflect.TypeOf((*AlarmAcknowledgedEvent)(nil)).Elem() -} - -type AlarmAction struct { - DynamicData -} - -func init() { - t["AlarmAction"] = reflect.TypeOf((*AlarmAction)(nil)).Elem() -} - -type AlarmActionTriggeredEvent struct { - AlarmEvent - - Source ManagedEntityEventArgument `xml:"source"` - Entity ManagedEntityEventArgument `xml:"entity"` -} - -func init() { - t["AlarmActionTriggeredEvent"] = reflect.TypeOf((*AlarmActionTriggeredEvent)(nil)).Elem() -} - -type AlarmClearedEvent struct { - AlarmEvent - - Source ManagedEntityEventArgument `xml:"source"` - Entity ManagedEntityEventArgument `xml:"entity"` - From string `xml:"from"` -} - -func init() { - t["AlarmClearedEvent"] = reflect.TypeOf((*AlarmClearedEvent)(nil)).Elem() -} - -type AlarmCreatedEvent struct { - AlarmEvent - - Entity ManagedEntityEventArgument `xml:"entity"` -} - -func init() { - t["AlarmCreatedEvent"] = reflect.TypeOf((*AlarmCreatedEvent)(nil)).Elem() -} - -type AlarmDescription struct { - DynamicData - - Expr []BaseTypeDescription `xml:"expr,typeattr"` - StateOperator []BaseElementDescription `xml:"stateOperator,typeattr"` - MetricOperator []BaseElementDescription `xml:"metricOperator,typeattr"` - HostSystemConnectionState []BaseElementDescription `xml:"hostSystemConnectionState,typeattr"` - VirtualMachinePowerState []BaseElementDescription `xml:"virtualMachinePowerState,typeattr"` - DatastoreConnectionState []BaseElementDescription `xml:"datastoreConnectionState,omitempty,typeattr"` - HostSystemPowerState []BaseElementDescription `xml:"hostSystemPowerState,omitempty,typeattr"` - VirtualMachineGuestHeartbeatStatus []BaseElementDescription `xml:"virtualMachineGuestHeartbeatStatus,omitempty,typeattr"` - EntityStatus []BaseElementDescription `xml:"entityStatus,typeattr"` - Action []BaseTypeDescription `xml:"action,typeattr"` -} - -func init() { - t["AlarmDescription"] = reflect.TypeOf((*AlarmDescription)(nil)).Elem() -} - -type AlarmEmailCompletedEvent struct { - AlarmEvent - - Entity ManagedEntityEventArgument `xml:"entity"` - To string `xml:"to"` -} - -func init() { - t["AlarmEmailCompletedEvent"] = reflect.TypeOf((*AlarmEmailCompletedEvent)(nil)).Elem() -} - -type AlarmEmailFailedEvent struct { - AlarmEvent - - Entity ManagedEntityEventArgument `xml:"entity"` - To string `xml:"to"` - Reason LocalizedMethodFault `xml:"reason"` -} - -func init() { - t["AlarmEmailFailedEvent"] = reflect.TypeOf((*AlarmEmailFailedEvent)(nil)).Elem() -} - -type AlarmEvent struct { - Event - - Alarm AlarmEventArgument `xml:"alarm"` -} - -func init() { - t["AlarmEvent"] = reflect.TypeOf((*AlarmEvent)(nil)).Elem() -} - -type AlarmEventArgument struct { - EntityEventArgument - - Alarm ManagedObjectReference `xml:"alarm"` -} - -func init() { - t["AlarmEventArgument"] = reflect.TypeOf((*AlarmEventArgument)(nil)).Elem() -} - -type AlarmExpression struct { - DynamicData -} - -func init() { - t["AlarmExpression"] = reflect.TypeOf((*AlarmExpression)(nil)).Elem() -} - -type AlarmInfo struct { - AlarmSpec - - Key string `xml:"key"` - Alarm ManagedObjectReference `xml:"alarm"` - Entity ManagedObjectReference `xml:"entity"` - LastModifiedTime time.Time `xml:"lastModifiedTime"` - LastModifiedUser string `xml:"lastModifiedUser"` - CreationEventId int32 `xml:"creationEventId"` -} - -func init() { - t["AlarmInfo"] = reflect.TypeOf((*AlarmInfo)(nil)).Elem() -} - -type AlarmReconfiguredEvent struct { - AlarmEvent - - Entity ManagedEntityEventArgument `xml:"entity"` -} - -func init() { - t["AlarmReconfiguredEvent"] = reflect.TypeOf((*AlarmReconfiguredEvent)(nil)).Elem() -} - -type AlarmRemovedEvent struct { - AlarmEvent - - Entity ManagedEntityEventArgument `xml:"entity"` -} - -func init() { - t["AlarmRemovedEvent"] = reflect.TypeOf((*AlarmRemovedEvent)(nil)).Elem() -} - -type AlarmScriptCompleteEvent struct { - AlarmEvent - - Entity ManagedEntityEventArgument `xml:"entity"` - Script string `xml:"script"` -} - -func init() { - t["AlarmScriptCompleteEvent"] = reflect.TypeOf((*AlarmScriptCompleteEvent)(nil)).Elem() -} - -type AlarmScriptFailedEvent struct { - AlarmEvent - - Entity ManagedEntityEventArgument `xml:"entity"` - Script string `xml:"script"` - Reason LocalizedMethodFault `xml:"reason"` -} - -func init() { - t["AlarmScriptFailedEvent"] = reflect.TypeOf((*AlarmScriptFailedEvent)(nil)).Elem() -} - -type AlarmSetting struct { - DynamicData - - ToleranceRange int32 `xml:"toleranceRange"` - ReportingFrequency int32 `xml:"reportingFrequency"` -} - -func init() { - t["AlarmSetting"] = reflect.TypeOf((*AlarmSetting)(nil)).Elem() -} - -type AlarmSnmpCompletedEvent struct { - AlarmEvent - - Entity ManagedEntityEventArgument `xml:"entity"` -} - -func init() { - t["AlarmSnmpCompletedEvent"] = reflect.TypeOf((*AlarmSnmpCompletedEvent)(nil)).Elem() -} - -type AlarmSnmpFailedEvent struct { - AlarmEvent - - Entity ManagedEntityEventArgument `xml:"entity"` - Reason LocalizedMethodFault `xml:"reason"` -} - -func init() { - t["AlarmSnmpFailedEvent"] = reflect.TypeOf((*AlarmSnmpFailedEvent)(nil)).Elem() -} - -type AlarmSpec struct { - DynamicData - - Name string `xml:"name"` - SystemName string `xml:"systemName,omitempty"` - Description string `xml:"description"` - Enabled bool `xml:"enabled"` - Expression BaseAlarmExpression `xml:"expression,typeattr"` - Action BaseAlarmAction `xml:"action,omitempty,typeattr"` - ActionFrequency int32 `xml:"actionFrequency,omitempty"` - Setting *AlarmSetting `xml:"setting,omitempty"` -} - -func init() { - t["AlarmSpec"] = reflect.TypeOf((*AlarmSpec)(nil)).Elem() -} - -type AlarmState struct { - DynamicData - - Key string `xml:"key"` - Entity ManagedObjectReference `xml:"entity"` - Alarm ManagedObjectReference `xml:"alarm"` - OverallStatus ManagedEntityStatus `xml:"overallStatus"` - Time time.Time `xml:"time"` - Acknowledged *bool `xml:"acknowledged"` - AcknowledgedByUser string `xml:"acknowledgedByUser,omitempty"` - AcknowledgedTime *time.Time `xml:"acknowledgedTime"` - EventKey int32 `xml:"eventKey,omitempty"` -} - -func init() { - t["AlarmState"] = reflect.TypeOf((*AlarmState)(nil)).Elem() -} - -type AlarmStatusChangedEvent struct { - AlarmEvent - - Source ManagedEntityEventArgument `xml:"source"` - Entity ManagedEntityEventArgument `xml:"entity"` - From string `xml:"from"` - To string `xml:"to"` -} - -func init() { - t["AlarmStatusChangedEvent"] = reflect.TypeOf((*AlarmStatusChangedEvent)(nil)).Elem() -} - -type AlarmTriggeringAction struct { - AlarmAction - - Action BaseAction `xml:"action,typeattr"` - TransitionSpecs []AlarmTriggeringActionTransitionSpec `xml:"transitionSpecs,omitempty"` - Green2yellow bool `xml:"green2yellow"` - Yellow2red bool `xml:"yellow2red"` - Red2yellow bool `xml:"red2yellow"` - Yellow2green bool `xml:"yellow2green"` -} - -func init() { - t["AlarmTriggeringAction"] = reflect.TypeOf((*AlarmTriggeringAction)(nil)).Elem() -} - -type AlarmTriggeringActionTransitionSpec struct { - DynamicData - - StartState ManagedEntityStatus `xml:"startState"` - FinalState ManagedEntityStatus `xml:"finalState"` - Repeats bool `xml:"repeats"` -} - -func init() { - t["AlarmTriggeringActionTransitionSpec"] = reflect.TypeOf((*AlarmTriggeringActionTransitionSpec)(nil)).Elem() -} - -type AllVirtualMachinesLicensedEvent struct { - LicenseEvent -} - -func init() { - t["AllVirtualMachinesLicensedEvent"] = reflect.TypeOf((*AllVirtualMachinesLicensedEvent)(nil)).Elem() -} - -type AllocateIpv4Address AllocateIpv4AddressRequestType - -func init() { - t["AllocateIpv4Address"] = reflect.TypeOf((*AllocateIpv4Address)(nil)).Elem() -} - -type AllocateIpv4AddressRequestType struct { - This ManagedObjectReference `xml:"_this"` - Dc ManagedObjectReference `xml:"dc"` - PoolId int32 `xml:"poolId"` - AllocationId string `xml:"allocationId"` -} - -func init() { - t["AllocateIpv4AddressRequestType"] = reflect.TypeOf((*AllocateIpv4AddressRequestType)(nil)).Elem() -} - -type AllocateIpv4AddressResponse struct { - Returnval string `xml:"returnval"` -} - -type AllocateIpv6Address AllocateIpv6AddressRequestType - -func init() { - t["AllocateIpv6Address"] = reflect.TypeOf((*AllocateIpv6Address)(nil)).Elem() -} - -type AllocateIpv6AddressRequestType struct { - This ManagedObjectReference `xml:"_this"` - Dc ManagedObjectReference `xml:"dc"` - PoolId int32 `xml:"poolId"` - AllocationId string `xml:"allocationId"` -} - -func init() { - t["AllocateIpv6AddressRequestType"] = reflect.TypeOf((*AllocateIpv6AddressRequestType)(nil)).Elem() -} - -type AllocateIpv6AddressResponse struct { - Returnval string `xml:"returnval"` -} - -type AlreadyAuthenticatedSessionEvent struct { - SessionEvent -} - -func init() { - t["AlreadyAuthenticatedSessionEvent"] = reflect.TypeOf((*AlreadyAuthenticatedSessionEvent)(nil)).Elem() -} - -type AlreadyBeingManaged struct { - HostConnectFault - - IpAddress string `xml:"ipAddress"` -} - -func init() { - t["AlreadyBeingManaged"] = reflect.TypeOf((*AlreadyBeingManaged)(nil)).Elem() -} - -type AlreadyBeingManagedFault AlreadyBeingManaged - -func init() { - t["AlreadyBeingManagedFault"] = reflect.TypeOf((*AlreadyBeingManagedFault)(nil)).Elem() -} - -type AlreadyConnected struct { - HostConnectFault - - Name string `xml:"name"` -} - -func init() { - t["AlreadyConnected"] = reflect.TypeOf((*AlreadyConnected)(nil)).Elem() -} - -type AlreadyConnectedFault AlreadyConnected - -func init() { - t["AlreadyConnectedFault"] = reflect.TypeOf((*AlreadyConnectedFault)(nil)).Elem() -} - -type AlreadyExists struct { - VimFault - - Name string `xml:"name,omitempty"` -} - -func init() { - t["AlreadyExists"] = reflect.TypeOf((*AlreadyExists)(nil)).Elem() -} - -type AlreadyExistsFault AlreadyExists - -func init() { - t["AlreadyExistsFault"] = reflect.TypeOf((*AlreadyExistsFault)(nil)).Elem() -} - -type AlreadyUpgraded struct { - VimFault -} - -func init() { - t["AlreadyUpgraded"] = reflect.TypeOf((*AlreadyUpgraded)(nil)).Elem() -} - -type AlreadyUpgradedFault AlreadyUpgraded - -func init() { - t["AlreadyUpgradedFault"] = reflect.TypeOf((*AlreadyUpgradedFault)(nil)).Elem() -} - -type AndAlarmExpression struct { - AlarmExpression - - Expression []BaseAlarmExpression `xml:"expression,typeattr"` -} - -func init() { - t["AndAlarmExpression"] = reflect.TypeOf((*AndAlarmExpression)(nil)).Elem() -} - -type AnswerFile struct { - DynamicData - - UserInput []ProfileDeferredPolicyOptionParameter `xml:"userInput,omitempty"` - CreatedTime time.Time `xml:"createdTime"` - ModifiedTime time.Time `xml:"modifiedTime"` -} - -func init() { - t["AnswerFile"] = reflect.TypeOf((*AnswerFile)(nil)).Elem() -} - -type AnswerFileCreateSpec struct { - DynamicData - - Validating *bool `xml:"validating"` -} - -func init() { - t["AnswerFileCreateSpec"] = reflect.TypeOf((*AnswerFileCreateSpec)(nil)).Elem() -} - -type AnswerFileOptionsCreateSpec struct { - AnswerFileCreateSpec - - UserInput []ProfileDeferredPolicyOptionParameter `xml:"userInput,omitempty"` -} - -func init() { - t["AnswerFileOptionsCreateSpec"] = reflect.TypeOf((*AnswerFileOptionsCreateSpec)(nil)).Elem() -} - -type AnswerFileSerializedCreateSpec struct { - AnswerFileCreateSpec - - AnswerFileConfigString string `xml:"answerFileConfigString"` -} - -func init() { - t["AnswerFileSerializedCreateSpec"] = reflect.TypeOf((*AnswerFileSerializedCreateSpec)(nil)).Elem() -} - -type AnswerFileStatusError struct { - DynamicData - - UserInputPath ProfilePropertyPath `xml:"userInputPath"` - ErrMsg LocalizableMessage `xml:"errMsg"` -} - -func init() { - t["AnswerFileStatusError"] = reflect.TypeOf((*AnswerFileStatusError)(nil)).Elem() -} - -type AnswerFileStatusResult struct { - DynamicData - - CheckedTime time.Time `xml:"checkedTime"` - Host ManagedObjectReference `xml:"host"` - Status string `xml:"status"` - Error []AnswerFileStatusError `xml:"error,omitempty"` -} - -func init() { - t["AnswerFileStatusResult"] = reflect.TypeOf((*AnswerFileStatusResult)(nil)).Elem() -} - -type AnswerFileUpdateFailed struct { - VimFault - - Failure []AnswerFileUpdateFailure `xml:"failure"` -} - -func init() { - t["AnswerFileUpdateFailed"] = reflect.TypeOf((*AnswerFileUpdateFailed)(nil)).Elem() -} - -type AnswerFileUpdateFailedFault AnswerFileUpdateFailed - -func init() { - t["AnswerFileUpdateFailedFault"] = reflect.TypeOf((*AnswerFileUpdateFailedFault)(nil)).Elem() -} - -type AnswerFileUpdateFailure struct { - DynamicData - - UserInputPath ProfilePropertyPath `xml:"userInputPath"` - ErrMsg LocalizableMessage `xml:"errMsg"` -} - -func init() { - t["AnswerFileUpdateFailure"] = reflect.TypeOf((*AnswerFileUpdateFailure)(nil)).Elem() -} - -type AnswerVM AnswerVMRequestType - -func init() { - t["AnswerVM"] = reflect.TypeOf((*AnswerVM)(nil)).Elem() -} - -type AnswerVMRequestType struct { - This ManagedObjectReference `xml:"_this"` - QuestionId string `xml:"questionId"` - AnswerChoice string `xml:"answerChoice"` -} - -func init() { - t["AnswerVMRequestType"] = reflect.TypeOf((*AnswerVMRequestType)(nil)).Elem() -} - -type AnswerVMResponse struct { -} - -type ApplicationQuiesceFault struct { - SnapshotFault -} - -func init() { - t["ApplicationQuiesceFault"] = reflect.TypeOf((*ApplicationQuiesceFault)(nil)).Elem() -} - -type ApplicationQuiesceFaultFault ApplicationQuiesceFault - -func init() { - t["ApplicationQuiesceFaultFault"] = reflect.TypeOf((*ApplicationQuiesceFaultFault)(nil)).Elem() -} - -type ApplyHostConfigRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host ManagedObjectReference `xml:"host"` - ConfigSpec HostConfigSpec `xml:"configSpec"` - UserInput []ProfileDeferredPolicyOptionParameter `xml:"userInput,omitempty"` -} - -func init() { - t["ApplyHostConfigRequestType"] = reflect.TypeOf((*ApplyHostConfigRequestType)(nil)).Elem() -} - -type ApplyHostConfig_Task ApplyHostConfigRequestType - -func init() { - t["ApplyHostConfig_Task"] = reflect.TypeOf((*ApplyHostConfig_Task)(nil)).Elem() -} - -type ApplyHostConfig_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ApplyProfile struct { - DynamicData - - Enabled bool `xml:"enabled"` - Policy []ProfilePolicy `xml:"policy,omitempty"` - ProfileTypeName string `xml:"profileTypeName,omitempty"` - ProfileVersion string `xml:"profileVersion,omitempty"` - Property []ProfileApplyProfileProperty `xml:"property,omitempty"` -} - -func init() { - t["ApplyProfile"] = reflect.TypeOf((*ApplyProfile)(nil)).Elem() -} - -type ApplyRecommendation ApplyRecommendationRequestType - -func init() { - t["ApplyRecommendation"] = reflect.TypeOf((*ApplyRecommendation)(nil)).Elem() -} - -type ApplyRecommendationRequestType struct { - This ManagedObjectReference `xml:"_this"` - Key string `xml:"key"` -} - -func init() { - t["ApplyRecommendationRequestType"] = reflect.TypeOf((*ApplyRecommendationRequestType)(nil)).Elem() -} - -type ApplyRecommendationResponse struct { -} - -type ApplyStorageDrsRecommendationRequestType struct { - This ManagedObjectReference `xml:"_this"` - Key []string `xml:"key"` -} - -func init() { - t["ApplyStorageDrsRecommendationRequestType"] = reflect.TypeOf((*ApplyStorageDrsRecommendationRequestType)(nil)).Elem() -} - -type ApplyStorageDrsRecommendationToPodRequestType struct { - This ManagedObjectReference `xml:"_this"` - Pod ManagedObjectReference `xml:"pod"` - Key string `xml:"key"` -} - -func init() { - t["ApplyStorageDrsRecommendationToPodRequestType"] = reflect.TypeOf((*ApplyStorageDrsRecommendationToPodRequestType)(nil)).Elem() -} - -type ApplyStorageDrsRecommendationToPod_Task ApplyStorageDrsRecommendationToPodRequestType - -func init() { - t["ApplyStorageDrsRecommendationToPod_Task"] = reflect.TypeOf((*ApplyStorageDrsRecommendationToPod_Task)(nil)).Elem() -} - -type ApplyStorageDrsRecommendationToPod_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ApplyStorageDrsRecommendation_Task ApplyStorageDrsRecommendationRequestType - -func init() { - t["ApplyStorageDrsRecommendation_Task"] = reflect.TypeOf((*ApplyStorageDrsRecommendation_Task)(nil)).Elem() -} - -type ApplyStorageDrsRecommendation_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ApplyStorageRecommendationResult struct { - DynamicData - - Vm *ManagedObjectReference `xml:"vm,omitempty"` -} - -func init() { - t["ApplyStorageRecommendationResult"] = reflect.TypeOf((*ApplyStorageRecommendationResult)(nil)).Elem() -} - -type AreAlarmActionsEnabled AreAlarmActionsEnabledRequestType - -func init() { - t["AreAlarmActionsEnabled"] = reflect.TypeOf((*AreAlarmActionsEnabled)(nil)).Elem() -} - -type AreAlarmActionsEnabledRequestType struct { - This ManagedObjectReference `xml:"_this"` - Entity ManagedObjectReference `xml:"entity"` -} - -func init() { - t["AreAlarmActionsEnabledRequestType"] = reflect.TypeOf((*AreAlarmActionsEnabledRequestType)(nil)).Elem() -} - -type AreAlarmActionsEnabledResponse struct { - Returnval bool `xml:"returnval"` -} - -type ArrayOfAlarmAction struct { - AlarmAction []BaseAlarmAction `xml:"AlarmAction,omitempty,typeattr"` -} - -func init() { - t["ArrayOfAlarmAction"] = reflect.TypeOf((*ArrayOfAlarmAction)(nil)).Elem() -} - -type ArrayOfAlarmExpression struct { - AlarmExpression []BaseAlarmExpression `xml:"AlarmExpression,omitempty,typeattr"` -} - -func init() { - t["ArrayOfAlarmExpression"] = reflect.TypeOf((*ArrayOfAlarmExpression)(nil)).Elem() -} - -type ArrayOfAlarmState struct { - AlarmState []AlarmState `xml:"AlarmState,omitempty"` -} - -func init() { - t["ArrayOfAlarmState"] = reflect.TypeOf((*ArrayOfAlarmState)(nil)).Elem() -} - -type ArrayOfAlarmTriggeringActionTransitionSpec struct { - AlarmTriggeringActionTransitionSpec []AlarmTriggeringActionTransitionSpec `xml:"AlarmTriggeringActionTransitionSpec,omitempty"` -} - -func init() { - t["ArrayOfAlarmTriggeringActionTransitionSpec"] = reflect.TypeOf((*ArrayOfAlarmTriggeringActionTransitionSpec)(nil)).Elem() -} - -type ArrayOfAnswerFileStatusError struct { - AnswerFileStatusError []AnswerFileStatusError `xml:"AnswerFileStatusError,omitempty"` -} - -func init() { - t["ArrayOfAnswerFileStatusError"] = reflect.TypeOf((*ArrayOfAnswerFileStatusError)(nil)).Elem() -} - -type ArrayOfAnswerFileStatusResult struct { - AnswerFileStatusResult []AnswerFileStatusResult `xml:"AnswerFileStatusResult,omitempty"` -} - -func init() { - t["ArrayOfAnswerFileStatusResult"] = reflect.TypeOf((*ArrayOfAnswerFileStatusResult)(nil)).Elem() -} - -type ArrayOfAnswerFileUpdateFailure struct { - AnswerFileUpdateFailure []AnswerFileUpdateFailure `xml:"AnswerFileUpdateFailure,omitempty"` -} - -func init() { - t["ArrayOfAnswerFileUpdateFailure"] = reflect.TypeOf((*ArrayOfAnswerFileUpdateFailure)(nil)).Elem() -} - -type ArrayOfAnyType struct { - AnyType []AnyType `xml:"anyType,omitempty,typeattr"` -} - -func init() { - t["ArrayOfAnyType"] = reflect.TypeOf((*ArrayOfAnyType)(nil)).Elem() -} - -type ArrayOfAnyURI struct { - AnyURI []url.URL `xml:"anyURI,omitempty"` -} - -func init() { - t["ArrayOfAnyURI"] = reflect.TypeOf((*ArrayOfAnyURI)(nil)).Elem() -} - -type ArrayOfApplyProfile struct { - ApplyProfile []BaseApplyProfile `xml:"ApplyProfile,omitempty,typeattr"` -} - -func init() { - t["ArrayOfApplyProfile"] = reflect.TypeOf((*ArrayOfApplyProfile)(nil)).Elem() -} - -type ArrayOfAuthorizationPrivilege struct { - AuthorizationPrivilege []AuthorizationPrivilege `xml:"AuthorizationPrivilege,omitempty"` -} - -func init() { - t["ArrayOfAuthorizationPrivilege"] = reflect.TypeOf((*ArrayOfAuthorizationPrivilege)(nil)).Elem() -} - -type ArrayOfAuthorizationRole struct { - AuthorizationRole []AuthorizationRole `xml:"AuthorizationRole,omitempty"` -} - -func init() { - t["ArrayOfAuthorizationRole"] = reflect.TypeOf((*ArrayOfAuthorizationRole)(nil)).Elem() -} - -type ArrayOfAutoStartPowerInfo struct { - AutoStartPowerInfo []AutoStartPowerInfo `xml:"AutoStartPowerInfo,omitempty"` -} - -func init() { - t["ArrayOfAutoStartPowerInfo"] = reflect.TypeOf((*ArrayOfAutoStartPowerInfo)(nil)).Elem() -} - -type ArrayOfBoolean struct { - Boolean []bool `xml:"boolean,omitempty"` -} - -func init() { - t["ArrayOfBoolean"] = reflect.TypeOf((*ArrayOfBoolean)(nil)).Elem() -} - -type ArrayOfByte struct { - Byte []byte `xml:"byte,omitempty"` -} - -func init() { - t["ArrayOfByte"] = reflect.TypeOf((*ArrayOfByte)(nil)).Elem() -} - -type ArrayOfCheckResult struct { - CheckResult []CheckResult `xml:"CheckResult,omitempty"` -} - -func init() { - t["ArrayOfCheckResult"] = reflect.TypeOf((*ArrayOfCheckResult)(nil)).Elem() -} - -type ArrayOfClusterAction struct { - ClusterAction []BaseClusterAction `xml:"ClusterAction,omitempty,typeattr"` -} - -func init() { - t["ArrayOfClusterAction"] = reflect.TypeOf((*ArrayOfClusterAction)(nil)).Elem() -} - -type ArrayOfClusterActionHistory struct { - ClusterActionHistory []ClusterActionHistory `xml:"ClusterActionHistory,omitempty"` -} - -func init() { - t["ArrayOfClusterActionHistory"] = reflect.TypeOf((*ArrayOfClusterActionHistory)(nil)).Elem() -} - -type ArrayOfClusterAttemptedVmInfo struct { - ClusterAttemptedVmInfo []ClusterAttemptedVmInfo `xml:"ClusterAttemptedVmInfo,omitempty"` -} - -func init() { - t["ArrayOfClusterAttemptedVmInfo"] = reflect.TypeOf((*ArrayOfClusterAttemptedVmInfo)(nil)).Elem() -} - -type ArrayOfClusterDasAamNodeState struct { - ClusterDasAamNodeState []ClusterDasAamNodeState `xml:"ClusterDasAamNodeState,omitempty"` -} - -func init() { - t["ArrayOfClusterDasAamNodeState"] = reflect.TypeOf((*ArrayOfClusterDasAamNodeState)(nil)).Elem() -} - -type ArrayOfClusterDasFailoverLevelAdvancedRuntimeInfoHostSlots struct { - ClusterDasFailoverLevelAdvancedRuntimeInfoHostSlots []ClusterDasFailoverLevelAdvancedRuntimeInfoHostSlots `xml:"ClusterDasFailoverLevelAdvancedRuntimeInfoHostSlots,omitempty"` -} - -func init() { - t["ArrayOfClusterDasFailoverLevelAdvancedRuntimeInfoHostSlots"] = reflect.TypeOf((*ArrayOfClusterDasFailoverLevelAdvancedRuntimeInfoHostSlots)(nil)).Elem() -} - -type ArrayOfClusterDasFailoverLevelAdvancedRuntimeInfoVmSlots struct { - ClusterDasFailoverLevelAdvancedRuntimeInfoVmSlots []ClusterDasFailoverLevelAdvancedRuntimeInfoVmSlots `xml:"ClusterDasFailoverLevelAdvancedRuntimeInfoVmSlots,omitempty"` -} - -func init() { - t["ArrayOfClusterDasFailoverLevelAdvancedRuntimeInfoVmSlots"] = reflect.TypeOf((*ArrayOfClusterDasFailoverLevelAdvancedRuntimeInfoVmSlots)(nil)).Elem() -} - -type ArrayOfClusterDasVmConfigInfo struct { - ClusterDasVmConfigInfo []ClusterDasVmConfigInfo `xml:"ClusterDasVmConfigInfo,omitempty"` -} - -func init() { - t["ArrayOfClusterDasVmConfigInfo"] = reflect.TypeOf((*ArrayOfClusterDasVmConfigInfo)(nil)).Elem() -} - -type ArrayOfClusterDasVmConfigSpec struct { - ClusterDasVmConfigSpec []ClusterDasVmConfigSpec `xml:"ClusterDasVmConfigSpec,omitempty"` -} - -func init() { - t["ArrayOfClusterDasVmConfigSpec"] = reflect.TypeOf((*ArrayOfClusterDasVmConfigSpec)(nil)).Elem() -} - -type ArrayOfClusterDpmHostConfigInfo struct { - ClusterDpmHostConfigInfo []ClusterDpmHostConfigInfo `xml:"ClusterDpmHostConfigInfo,omitempty"` -} - -func init() { - t["ArrayOfClusterDpmHostConfigInfo"] = reflect.TypeOf((*ArrayOfClusterDpmHostConfigInfo)(nil)).Elem() -} - -type ArrayOfClusterDpmHostConfigSpec struct { - ClusterDpmHostConfigSpec []ClusterDpmHostConfigSpec `xml:"ClusterDpmHostConfigSpec,omitempty"` -} - -func init() { - t["ArrayOfClusterDpmHostConfigSpec"] = reflect.TypeOf((*ArrayOfClusterDpmHostConfigSpec)(nil)).Elem() -} - -type ArrayOfClusterDrsFaults struct { - ClusterDrsFaults []ClusterDrsFaults `xml:"ClusterDrsFaults,omitempty"` -} - -func init() { - t["ArrayOfClusterDrsFaults"] = reflect.TypeOf((*ArrayOfClusterDrsFaults)(nil)).Elem() -} - -type ArrayOfClusterDrsFaultsFaultsByVm struct { - ClusterDrsFaultsFaultsByVm []BaseClusterDrsFaultsFaultsByVm `xml:"ClusterDrsFaultsFaultsByVm,omitempty,typeattr"` -} - -func init() { - t["ArrayOfClusterDrsFaultsFaultsByVm"] = reflect.TypeOf((*ArrayOfClusterDrsFaultsFaultsByVm)(nil)).Elem() -} - -type ArrayOfClusterDrsMigration struct { - ClusterDrsMigration []ClusterDrsMigration `xml:"ClusterDrsMigration,omitempty"` -} - -func init() { - t["ArrayOfClusterDrsMigration"] = reflect.TypeOf((*ArrayOfClusterDrsMigration)(nil)).Elem() -} - -type ArrayOfClusterDrsRecommendation struct { - ClusterDrsRecommendation []ClusterDrsRecommendation `xml:"ClusterDrsRecommendation,omitempty"` -} - -func init() { - t["ArrayOfClusterDrsRecommendation"] = reflect.TypeOf((*ArrayOfClusterDrsRecommendation)(nil)).Elem() -} - -type ArrayOfClusterDrsVmConfigInfo struct { - ClusterDrsVmConfigInfo []ClusterDrsVmConfigInfo `xml:"ClusterDrsVmConfigInfo,omitempty"` -} - -func init() { - t["ArrayOfClusterDrsVmConfigInfo"] = reflect.TypeOf((*ArrayOfClusterDrsVmConfigInfo)(nil)).Elem() -} - -type ArrayOfClusterDrsVmConfigSpec struct { - ClusterDrsVmConfigSpec []ClusterDrsVmConfigSpec `xml:"ClusterDrsVmConfigSpec,omitempty"` -} - -func init() { - t["ArrayOfClusterDrsVmConfigSpec"] = reflect.TypeOf((*ArrayOfClusterDrsVmConfigSpec)(nil)).Elem() -} - -type ArrayOfClusterEVCManagerCheckResult struct { - ClusterEVCManagerCheckResult []ClusterEVCManagerCheckResult `xml:"ClusterEVCManagerCheckResult,omitempty"` -} - -func init() { - t["ArrayOfClusterEVCManagerCheckResult"] = reflect.TypeOf((*ArrayOfClusterEVCManagerCheckResult)(nil)).Elem() -} - -type ArrayOfClusterFailoverHostAdmissionControlInfoHostStatus struct { - ClusterFailoverHostAdmissionControlInfoHostStatus []ClusterFailoverHostAdmissionControlInfoHostStatus `xml:"ClusterFailoverHostAdmissionControlInfoHostStatus,omitempty"` -} - -func init() { - t["ArrayOfClusterFailoverHostAdmissionControlInfoHostStatus"] = reflect.TypeOf((*ArrayOfClusterFailoverHostAdmissionControlInfoHostStatus)(nil)).Elem() -} - -type ArrayOfClusterGroupInfo struct { - ClusterGroupInfo []BaseClusterGroupInfo `xml:"ClusterGroupInfo,omitempty,typeattr"` -} - -func init() { - t["ArrayOfClusterGroupInfo"] = reflect.TypeOf((*ArrayOfClusterGroupInfo)(nil)).Elem() -} - -type ArrayOfClusterGroupSpec struct { - ClusterGroupSpec []ClusterGroupSpec `xml:"ClusterGroupSpec,omitempty"` -} - -func init() { - t["ArrayOfClusterGroupSpec"] = reflect.TypeOf((*ArrayOfClusterGroupSpec)(nil)).Elem() -} - -type ArrayOfClusterHostRecommendation struct { - ClusterHostRecommendation []ClusterHostRecommendation `xml:"ClusterHostRecommendation,omitempty"` -} - -func init() { - t["ArrayOfClusterHostRecommendation"] = reflect.TypeOf((*ArrayOfClusterHostRecommendation)(nil)).Elem() -} - -type ArrayOfClusterIoFilterInfo struct { - ClusterIoFilterInfo []ClusterIoFilterInfo `xml:"ClusterIoFilterInfo,omitempty"` -} - -func init() { - t["ArrayOfClusterIoFilterInfo"] = reflect.TypeOf((*ArrayOfClusterIoFilterInfo)(nil)).Elem() -} - -type ArrayOfClusterNotAttemptedVmInfo struct { - ClusterNotAttemptedVmInfo []ClusterNotAttemptedVmInfo `xml:"ClusterNotAttemptedVmInfo,omitempty"` -} - -func init() { - t["ArrayOfClusterNotAttemptedVmInfo"] = reflect.TypeOf((*ArrayOfClusterNotAttemptedVmInfo)(nil)).Elem() -} - -type ArrayOfClusterRecommendation struct { - ClusterRecommendation []ClusterRecommendation `xml:"ClusterRecommendation,omitempty"` -} - -func init() { - t["ArrayOfClusterRecommendation"] = reflect.TypeOf((*ArrayOfClusterRecommendation)(nil)).Elem() -} - -type ArrayOfClusterRuleInfo struct { - ClusterRuleInfo []BaseClusterRuleInfo `xml:"ClusterRuleInfo,omitempty,typeattr"` -} - -func init() { - t["ArrayOfClusterRuleInfo"] = reflect.TypeOf((*ArrayOfClusterRuleInfo)(nil)).Elem() -} - -type ArrayOfClusterRuleSpec struct { - ClusterRuleSpec []ClusterRuleSpec `xml:"ClusterRuleSpec,omitempty"` -} - -func init() { - t["ArrayOfClusterRuleSpec"] = reflect.TypeOf((*ArrayOfClusterRuleSpec)(nil)).Elem() -} - -type ArrayOfComplianceFailure struct { - ComplianceFailure []ComplianceFailure `xml:"ComplianceFailure,omitempty"` -} - -func init() { - t["ArrayOfComplianceFailure"] = reflect.TypeOf((*ArrayOfComplianceFailure)(nil)).Elem() -} - -type ArrayOfComplianceLocator struct { - ComplianceLocator []ComplianceLocator `xml:"ComplianceLocator,omitempty"` -} - -func init() { - t["ArrayOfComplianceLocator"] = reflect.TypeOf((*ArrayOfComplianceLocator)(nil)).Elem() -} - -type ArrayOfComplianceResult struct { - ComplianceResult []ComplianceResult `xml:"ComplianceResult,omitempty"` -} - -func init() { - t["ArrayOfComplianceResult"] = reflect.TypeOf((*ArrayOfComplianceResult)(nil)).Elem() -} - -type ArrayOfComputeResourceHostSPBMLicenseInfo struct { - ComputeResourceHostSPBMLicenseInfo []ComputeResourceHostSPBMLicenseInfo `xml:"ComputeResourceHostSPBMLicenseInfo,omitempty"` -} - -func init() { - t["ArrayOfComputeResourceHostSPBMLicenseInfo"] = reflect.TypeOf((*ArrayOfComputeResourceHostSPBMLicenseInfo)(nil)).Elem() -} - -type ArrayOfConflictingConfigurationConfig struct { - ConflictingConfigurationConfig []ConflictingConfigurationConfig `xml:"ConflictingConfigurationConfig,omitempty"` -} - -func init() { - t["ArrayOfConflictingConfigurationConfig"] = reflect.TypeOf((*ArrayOfConflictingConfigurationConfig)(nil)).Elem() -} - -type ArrayOfCustomFieldDef struct { - CustomFieldDef []CustomFieldDef `xml:"CustomFieldDef,omitempty"` -} - -func init() { - t["ArrayOfCustomFieldDef"] = reflect.TypeOf((*ArrayOfCustomFieldDef)(nil)).Elem() -} - -type ArrayOfCustomFieldValue struct { - CustomFieldValue []BaseCustomFieldValue `xml:"CustomFieldValue,omitempty,typeattr"` -} - -func init() { - t["ArrayOfCustomFieldValue"] = reflect.TypeOf((*ArrayOfCustomFieldValue)(nil)).Elem() -} - -type ArrayOfCustomizationAdapterMapping struct { - CustomizationAdapterMapping []CustomizationAdapterMapping `xml:"CustomizationAdapterMapping,omitempty"` -} - -func init() { - t["ArrayOfCustomizationAdapterMapping"] = reflect.TypeOf((*ArrayOfCustomizationAdapterMapping)(nil)).Elem() -} - -type ArrayOfCustomizationIpV6Generator struct { - CustomizationIpV6Generator []BaseCustomizationIpV6Generator `xml:"CustomizationIpV6Generator,omitempty,typeattr"` -} - -func init() { - t["ArrayOfCustomizationIpV6Generator"] = reflect.TypeOf((*ArrayOfCustomizationIpV6Generator)(nil)).Elem() -} - -type ArrayOfCustomizationSpecInfo struct { - CustomizationSpecInfo []CustomizationSpecInfo `xml:"CustomizationSpecInfo,omitempty"` -} - -func init() { - t["ArrayOfCustomizationSpecInfo"] = reflect.TypeOf((*ArrayOfCustomizationSpecInfo)(nil)).Elem() -} - -type ArrayOfDVPortConfigSpec struct { - DVPortConfigSpec []DVPortConfigSpec `xml:"DVPortConfigSpec,omitempty"` -} - -func init() { - t["ArrayOfDVPortConfigSpec"] = reflect.TypeOf((*ArrayOfDVPortConfigSpec)(nil)).Elem() -} - -type ArrayOfDVPortgroupConfigSpec struct { - DVPortgroupConfigSpec []DVPortgroupConfigSpec `xml:"DVPortgroupConfigSpec,omitempty"` -} - -func init() { - t["ArrayOfDVPortgroupConfigSpec"] = reflect.TypeOf((*ArrayOfDVPortgroupConfigSpec)(nil)).Elem() -} - -type ArrayOfDVSHealthCheckConfig struct { - DVSHealthCheckConfig []BaseDVSHealthCheckConfig `xml:"DVSHealthCheckConfig,omitempty,typeattr"` -} - -func init() { - t["ArrayOfDVSHealthCheckConfig"] = reflect.TypeOf((*ArrayOfDVSHealthCheckConfig)(nil)).Elem() -} - -type ArrayOfDVSNetworkResourcePool struct { - DVSNetworkResourcePool []DVSNetworkResourcePool `xml:"DVSNetworkResourcePool,omitempty"` -} - -func init() { - t["ArrayOfDVSNetworkResourcePool"] = reflect.TypeOf((*ArrayOfDVSNetworkResourcePool)(nil)).Elem() -} - -type ArrayOfDVSNetworkResourcePoolConfigSpec struct { - DVSNetworkResourcePoolConfigSpec []DVSNetworkResourcePoolConfigSpec `xml:"DVSNetworkResourcePoolConfigSpec,omitempty"` -} - -func init() { - t["ArrayOfDVSNetworkResourcePoolConfigSpec"] = reflect.TypeOf((*ArrayOfDVSNetworkResourcePoolConfigSpec)(nil)).Elem() -} - -type ArrayOfDVSVmVnicNetworkResourcePool struct { - DVSVmVnicNetworkResourcePool []DVSVmVnicNetworkResourcePool `xml:"DVSVmVnicNetworkResourcePool,omitempty"` -} - -func init() { - t["ArrayOfDVSVmVnicNetworkResourcePool"] = reflect.TypeOf((*ArrayOfDVSVmVnicNetworkResourcePool)(nil)).Elem() -} - -type ArrayOfDasHeartbeatDatastoreInfo struct { - DasHeartbeatDatastoreInfo []DasHeartbeatDatastoreInfo `xml:"DasHeartbeatDatastoreInfo,omitempty"` -} - -func init() { - t["ArrayOfDasHeartbeatDatastoreInfo"] = reflect.TypeOf((*ArrayOfDasHeartbeatDatastoreInfo)(nil)).Elem() -} - -type ArrayOfDatacenterMismatchArgument struct { - DatacenterMismatchArgument []DatacenterMismatchArgument `xml:"DatacenterMismatchArgument,omitempty"` -} - -func init() { - t["ArrayOfDatacenterMismatchArgument"] = reflect.TypeOf((*ArrayOfDatacenterMismatchArgument)(nil)).Elem() -} - -type ArrayOfDatastoreHostMount struct { - DatastoreHostMount []DatastoreHostMount `xml:"DatastoreHostMount,omitempty"` -} - -func init() { - t["ArrayOfDatastoreHostMount"] = reflect.TypeOf((*ArrayOfDatastoreHostMount)(nil)).Elem() -} - -type ArrayOfDatastoreMountPathDatastorePair struct { - DatastoreMountPathDatastorePair []DatastoreMountPathDatastorePair `xml:"DatastoreMountPathDatastorePair,omitempty"` -} - -func init() { - t["ArrayOfDatastoreMountPathDatastorePair"] = reflect.TypeOf((*ArrayOfDatastoreMountPathDatastorePair)(nil)).Elem() -} - -type ArrayOfDiagnosticManagerBundleInfo struct { - DiagnosticManagerBundleInfo []DiagnosticManagerBundleInfo `xml:"DiagnosticManagerBundleInfo,omitempty"` -} - -func init() { - t["ArrayOfDiagnosticManagerBundleInfo"] = reflect.TypeOf((*ArrayOfDiagnosticManagerBundleInfo)(nil)).Elem() -} - -type ArrayOfDiagnosticManagerLogDescriptor struct { - DiagnosticManagerLogDescriptor []DiagnosticManagerLogDescriptor `xml:"DiagnosticManagerLogDescriptor,omitempty"` -} - -func init() { - t["ArrayOfDiagnosticManagerLogDescriptor"] = reflect.TypeOf((*ArrayOfDiagnosticManagerLogDescriptor)(nil)).Elem() -} - -type ArrayOfDiskChangeExtent struct { - DiskChangeExtent []DiskChangeExtent `xml:"DiskChangeExtent,omitempty"` -} - -func init() { - t["ArrayOfDiskChangeExtent"] = reflect.TypeOf((*ArrayOfDiskChangeExtent)(nil)).Elem() -} - -type ArrayOfDistributedVirtualPort struct { - DistributedVirtualPort []DistributedVirtualPort `xml:"DistributedVirtualPort,omitempty"` -} - -func init() { - t["ArrayOfDistributedVirtualPort"] = reflect.TypeOf((*ArrayOfDistributedVirtualPort)(nil)).Elem() -} - -type ArrayOfDistributedVirtualPortgroupInfo struct { - DistributedVirtualPortgroupInfo []DistributedVirtualPortgroupInfo `xml:"DistributedVirtualPortgroupInfo,omitempty"` -} - -func init() { - t["ArrayOfDistributedVirtualPortgroupInfo"] = reflect.TypeOf((*ArrayOfDistributedVirtualPortgroupInfo)(nil)).Elem() -} - -type ArrayOfDistributedVirtualSwitchHostMember struct { - DistributedVirtualSwitchHostMember []DistributedVirtualSwitchHostMember `xml:"DistributedVirtualSwitchHostMember,omitempty"` -} - -func init() { - t["ArrayOfDistributedVirtualSwitchHostMember"] = reflect.TypeOf((*ArrayOfDistributedVirtualSwitchHostMember)(nil)).Elem() -} - -type ArrayOfDistributedVirtualSwitchHostMemberConfigSpec struct { - DistributedVirtualSwitchHostMemberConfigSpec []DistributedVirtualSwitchHostMemberConfigSpec `xml:"DistributedVirtualSwitchHostMemberConfigSpec,omitempty"` -} - -func init() { - t["ArrayOfDistributedVirtualSwitchHostMemberConfigSpec"] = reflect.TypeOf((*ArrayOfDistributedVirtualSwitchHostMemberConfigSpec)(nil)).Elem() -} - -type ArrayOfDistributedVirtualSwitchHostMemberPnicSpec struct { - DistributedVirtualSwitchHostMemberPnicSpec []DistributedVirtualSwitchHostMemberPnicSpec `xml:"DistributedVirtualSwitchHostMemberPnicSpec,omitempty"` -} - -func init() { - t["ArrayOfDistributedVirtualSwitchHostMemberPnicSpec"] = reflect.TypeOf((*ArrayOfDistributedVirtualSwitchHostMemberPnicSpec)(nil)).Elem() -} - -type ArrayOfDistributedVirtualSwitchHostProductSpec struct { - DistributedVirtualSwitchHostProductSpec []DistributedVirtualSwitchHostProductSpec `xml:"DistributedVirtualSwitchHostProductSpec,omitempty"` -} - -func init() { - t["ArrayOfDistributedVirtualSwitchHostProductSpec"] = reflect.TypeOf((*ArrayOfDistributedVirtualSwitchHostProductSpec)(nil)).Elem() -} - -type ArrayOfDistributedVirtualSwitchInfo struct { - DistributedVirtualSwitchInfo []DistributedVirtualSwitchInfo `xml:"DistributedVirtualSwitchInfo,omitempty"` -} - -func init() { - t["ArrayOfDistributedVirtualSwitchInfo"] = reflect.TypeOf((*ArrayOfDistributedVirtualSwitchInfo)(nil)).Elem() -} - -type ArrayOfDistributedVirtualSwitchKeyedOpaqueBlob struct { - DistributedVirtualSwitchKeyedOpaqueBlob []DistributedVirtualSwitchKeyedOpaqueBlob `xml:"DistributedVirtualSwitchKeyedOpaqueBlob,omitempty"` -} - -func init() { - t["ArrayOfDistributedVirtualSwitchKeyedOpaqueBlob"] = reflect.TypeOf((*ArrayOfDistributedVirtualSwitchKeyedOpaqueBlob)(nil)).Elem() -} - -type ArrayOfDistributedVirtualSwitchManagerCompatibilityResult struct { - DistributedVirtualSwitchManagerCompatibilityResult []DistributedVirtualSwitchManagerCompatibilityResult `xml:"DistributedVirtualSwitchManagerCompatibilityResult,omitempty"` -} - -func init() { - t["ArrayOfDistributedVirtualSwitchManagerCompatibilityResult"] = reflect.TypeOf((*ArrayOfDistributedVirtualSwitchManagerCompatibilityResult)(nil)).Elem() -} - -type ArrayOfDistributedVirtualSwitchManagerHostDvsFilterSpec struct { - DistributedVirtualSwitchManagerHostDvsFilterSpec []BaseDistributedVirtualSwitchManagerHostDvsFilterSpec `xml:"DistributedVirtualSwitchManagerHostDvsFilterSpec,omitempty,typeattr"` -} - -func init() { - t["ArrayOfDistributedVirtualSwitchManagerHostDvsFilterSpec"] = reflect.TypeOf((*ArrayOfDistributedVirtualSwitchManagerHostDvsFilterSpec)(nil)).Elem() -} - -type ArrayOfDistributedVirtualSwitchProductSpec struct { - DistributedVirtualSwitchProductSpec []DistributedVirtualSwitchProductSpec `xml:"DistributedVirtualSwitchProductSpec,omitempty"` -} - -func init() { - t["ArrayOfDistributedVirtualSwitchProductSpec"] = reflect.TypeOf((*ArrayOfDistributedVirtualSwitchProductSpec)(nil)).Elem() -} - -type ArrayOfDouble struct { - Double []float64 `xml:"double,omitempty"` -} - -func init() { - t["ArrayOfDouble"] = reflect.TypeOf((*ArrayOfDouble)(nil)).Elem() -} - -type ArrayOfDvsApplyOperationFaultFaultOnObject struct { - DvsApplyOperationFaultFaultOnObject []DvsApplyOperationFaultFaultOnObject `xml:"DvsApplyOperationFaultFaultOnObject,omitempty"` -} - -func init() { - t["ArrayOfDvsApplyOperationFaultFaultOnObject"] = reflect.TypeOf((*ArrayOfDvsApplyOperationFaultFaultOnObject)(nil)).Elem() -} - -type ArrayOfDvsFilterConfig struct { - DvsFilterConfig []BaseDvsFilterConfig `xml:"DvsFilterConfig,omitempty,typeattr"` -} - -func init() { - t["ArrayOfDvsFilterConfig"] = reflect.TypeOf((*ArrayOfDvsFilterConfig)(nil)).Elem() -} - -type ArrayOfDvsHostInfrastructureTrafficResource struct { - DvsHostInfrastructureTrafficResource []DvsHostInfrastructureTrafficResource `xml:"DvsHostInfrastructureTrafficResource,omitempty"` -} - -func init() { - t["ArrayOfDvsHostInfrastructureTrafficResource"] = reflect.TypeOf((*ArrayOfDvsHostInfrastructureTrafficResource)(nil)).Elem() -} - -type ArrayOfDvsHostVNicProfile struct { - DvsHostVNicProfile []DvsHostVNicProfile `xml:"DvsHostVNicProfile,omitempty"` -} - -func init() { - t["ArrayOfDvsHostVNicProfile"] = reflect.TypeOf((*ArrayOfDvsHostVNicProfile)(nil)).Elem() -} - -type ArrayOfDvsNetworkRuleQualifier struct { - DvsNetworkRuleQualifier []BaseDvsNetworkRuleQualifier `xml:"DvsNetworkRuleQualifier,omitempty,typeattr"` -} - -func init() { - t["ArrayOfDvsNetworkRuleQualifier"] = reflect.TypeOf((*ArrayOfDvsNetworkRuleQualifier)(nil)).Elem() -} - -type ArrayOfDvsOperationBulkFaultFaultOnHost struct { - DvsOperationBulkFaultFaultOnHost []DvsOperationBulkFaultFaultOnHost `xml:"DvsOperationBulkFaultFaultOnHost,omitempty"` -} - -func init() { - t["ArrayOfDvsOperationBulkFaultFaultOnHost"] = reflect.TypeOf((*ArrayOfDvsOperationBulkFaultFaultOnHost)(nil)).Elem() -} - -type ArrayOfDvsOutOfSyncHostArgument struct { - DvsOutOfSyncHostArgument []DvsOutOfSyncHostArgument `xml:"DvsOutOfSyncHostArgument,omitempty"` -} - -func init() { - t["ArrayOfDvsOutOfSyncHostArgument"] = reflect.TypeOf((*ArrayOfDvsOutOfSyncHostArgument)(nil)).Elem() -} - -type ArrayOfDvsProfile struct { - DvsProfile []DvsProfile `xml:"DvsProfile,omitempty"` -} - -func init() { - t["ArrayOfDvsProfile"] = reflect.TypeOf((*ArrayOfDvsProfile)(nil)).Elem() -} - -type ArrayOfDvsServiceConsoleVNicProfile struct { - DvsServiceConsoleVNicProfile []DvsServiceConsoleVNicProfile `xml:"DvsServiceConsoleVNicProfile,omitempty"` -} - -func init() { - t["ArrayOfDvsServiceConsoleVNicProfile"] = reflect.TypeOf((*ArrayOfDvsServiceConsoleVNicProfile)(nil)).Elem() -} - -type ArrayOfDvsTrafficRule struct { - DvsTrafficRule []DvsTrafficRule `xml:"DvsTrafficRule,omitempty"` -} - -func init() { - t["ArrayOfDvsTrafficRule"] = reflect.TypeOf((*ArrayOfDvsTrafficRule)(nil)).Elem() -} - -type ArrayOfDvsVmVnicNetworkResourcePoolRuntimeInfo struct { - DvsVmVnicNetworkResourcePoolRuntimeInfo []DvsVmVnicNetworkResourcePoolRuntimeInfo `xml:"DvsVmVnicNetworkResourcePoolRuntimeInfo,omitempty"` -} - -func init() { - t["ArrayOfDvsVmVnicNetworkResourcePoolRuntimeInfo"] = reflect.TypeOf((*ArrayOfDvsVmVnicNetworkResourcePoolRuntimeInfo)(nil)).Elem() -} - -type ArrayOfDvsVmVnicResourcePoolConfigSpec struct { - DvsVmVnicResourcePoolConfigSpec []DvsVmVnicResourcePoolConfigSpec `xml:"DvsVmVnicResourcePoolConfigSpec,omitempty"` -} - -func init() { - t["ArrayOfDvsVmVnicResourcePoolConfigSpec"] = reflect.TypeOf((*ArrayOfDvsVmVnicResourcePoolConfigSpec)(nil)).Elem() -} - -type ArrayOfDvsVnicAllocatedResource struct { - DvsVnicAllocatedResource []DvsVnicAllocatedResource `xml:"DvsVnicAllocatedResource,omitempty"` -} - -func init() { - t["ArrayOfDvsVnicAllocatedResource"] = reflect.TypeOf((*ArrayOfDvsVnicAllocatedResource)(nil)).Elem() -} - -type ArrayOfDynamicProperty struct { - DynamicProperty []DynamicProperty `xml:"DynamicProperty,omitempty"` -} - -func init() { - t["ArrayOfDynamicProperty"] = reflect.TypeOf((*ArrayOfDynamicProperty)(nil)).Elem() -} - -type ArrayOfEVCMode struct { - EVCMode []EVCMode `xml:"EVCMode,omitempty"` -} - -func init() { - t["ArrayOfEVCMode"] = reflect.TypeOf((*ArrayOfEVCMode)(nil)).Elem() -} - -type ArrayOfElementDescription struct { - ElementDescription []BaseElementDescription `xml:"ElementDescription,omitempty,typeattr"` -} - -func init() { - t["ArrayOfElementDescription"] = reflect.TypeOf((*ArrayOfElementDescription)(nil)).Elem() -} - -type ArrayOfEntityBackupConfig struct { - EntityBackupConfig []EntityBackupConfig `xml:"EntityBackupConfig,omitempty"` -} - -func init() { - t["ArrayOfEntityBackupConfig"] = reflect.TypeOf((*ArrayOfEntityBackupConfig)(nil)).Elem() -} - -type ArrayOfEntityPrivilege struct { - EntityPrivilege []EntityPrivilege `xml:"EntityPrivilege,omitempty"` -} - -func init() { - t["ArrayOfEntityPrivilege"] = reflect.TypeOf((*ArrayOfEntityPrivilege)(nil)).Elem() -} - -type ArrayOfEnumDescription struct { - EnumDescription []EnumDescription `xml:"EnumDescription,omitempty"` -} - -func init() { - t["ArrayOfEnumDescription"] = reflect.TypeOf((*ArrayOfEnumDescription)(nil)).Elem() -} - -type ArrayOfEvent struct { - Event []BaseEvent `xml:"Event,omitempty,typeattr"` -} - -func init() { - t["ArrayOfEvent"] = reflect.TypeOf((*ArrayOfEvent)(nil)).Elem() -} - -type ArrayOfEventAlarmExpressionComparison struct { - EventAlarmExpressionComparison []EventAlarmExpressionComparison `xml:"EventAlarmExpressionComparison,omitempty"` -} - -func init() { - t["ArrayOfEventAlarmExpressionComparison"] = reflect.TypeOf((*ArrayOfEventAlarmExpressionComparison)(nil)).Elem() -} - -type ArrayOfEventArgDesc struct { - EventArgDesc []EventArgDesc `xml:"EventArgDesc,omitempty"` -} - -func init() { - t["ArrayOfEventArgDesc"] = reflect.TypeOf((*ArrayOfEventArgDesc)(nil)).Elem() -} - -type ArrayOfEventDescriptionEventDetail struct { - EventDescriptionEventDetail []EventDescriptionEventDetail `xml:"EventDescriptionEventDetail,omitempty"` -} - -func init() { - t["ArrayOfEventDescriptionEventDetail"] = reflect.TypeOf((*ArrayOfEventDescriptionEventDetail)(nil)).Elem() -} - -type ArrayOfExtManagedEntityInfo struct { - ExtManagedEntityInfo []ExtManagedEntityInfo `xml:"ExtManagedEntityInfo,omitempty"` -} - -func init() { - t["ArrayOfExtManagedEntityInfo"] = reflect.TypeOf((*ArrayOfExtManagedEntityInfo)(nil)).Elem() -} - -type ArrayOfExtSolutionManagerInfoTabInfo struct { - ExtSolutionManagerInfoTabInfo []ExtSolutionManagerInfoTabInfo `xml:"ExtSolutionManagerInfoTabInfo,omitempty"` -} - -func init() { - t["ArrayOfExtSolutionManagerInfoTabInfo"] = reflect.TypeOf((*ArrayOfExtSolutionManagerInfoTabInfo)(nil)).Elem() -} - -type ArrayOfExtendedEventPair struct { - ExtendedEventPair []ExtendedEventPair `xml:"ExtendedEventPair,omitempty"` -} - -func init() { - t["ArrayOfExtendedEventPair"] = reflect.TypeOf((*ArrayOfExtendedEventPair)(nil)).Elem() -} - -type ArrayOfExtension struct { - Extension []Extension `xml:"Extension,omitempty"` -} - -func init() { - t["ArrayOfExtension"] = reflect.TypeOf((*ArrayOfExtension)(nil)).Elem() -} - -type ArrayOfExtensionClientInfo struct { - ExtensionClientInfo []ExtensionClientInfo `xml:"ExtensionClientInfo,omitempty"` -} - -func init() { - t["ArrayOfExtensionClientInfo"] = reflect.TypeOf((*ArrayOfExtensionClientInfo)(nil)).Elem() -} - -type ArrayOfExtensionEventTypeInfo struct { - ExtensionEventTypeInfo []ExtensionEventTypeInfo `xml:"ExtensionEventTypeInfo,omitempty"` -} - -func init() { - t["ArrayOfExtensionEventTypeInfo"] = reflect.TypeOf((*ArrayOfExtensionEventTypeInfo)(nil)).Elem() -} - -type ArrayOfExtensionFaultTypeInfo struct { - ExtensionFaultTypeInfo []ExtensionFaultTypeInfo `xml:"ExtensionFaultTypeInfo,omitempty"` -} - -func init() { - t["ArrayOfExtensionFaultTypeInfo"] = reflect.TypeOf((*ArrayOfExtensionFaultTypeInfo)(nil)).Elem() -} - -type ArrayOfExtensionManagerIpAllocationUsage struct { - ExtensionManagerIpAllocationUsage []ExtensionManagerIpAllocationUsage `xml:"ExtensionManagerIpAllocationUsage,omitempty"` -} - -func init() { - t["ArrayOfExtensionManagerIpAllocationUsage"] = reflect.TypeOf((*ArrayOfExtensionManagerIpAllocationUsage)(nil)).Elem() -} - -type ArrayOfExtensionPrivilegeInfo struct { - ExtensionPrivilegeInfo []ExtensionPrivilegeInfo `xml:"ExtensionPrivilegeInfo,omitempty"` -} - -func init() { - t["ArrayOfExtensionPrivilegeInfo"] = reflect.TypeOf((*ArrayOfExtensionPrivilegeInfo)(nil)).Elem() -} - -type ArrayOfExtensionResourceInfo struct { - ExtensionResourceInfo []ExtensionResourceInfo `xml:"ExtensionResourceInfo,omitempty"` -} - -func init() { - t["ArrayOfExtensionResourceInfo"] = reflect.TypeOf((*ArrayOfExtensionResourceInfo)(nil)).Elem() -} - -type ArrayOfExtensionServerInfo struct { - ExtensionServerInfo []ExtensionServerInfo `xml:"ExtensionServerInfo,omitempty"` -} - -func init() { - t["ArrayOfExtensionServerInfo"] = reflect.TypeOf((*ArrayOfExtensionServerInfo)(nil)).Elem() -} - -type ArrayOfExtensionTaskTypeInfo struct { - ExtensionTaskTypeInfo []ExtensionTaskTypeInfo `xml:"ExtensionTaskTypeInfo,omitempty"` -} - -func init() { - t["ArrayOfExtensionTaskTypeInfo"] = reflect.TypeOf((*ArrayOfExtensionTaskTypeInfo)(nil)).Elem() -} - -type ArrayOfFaultToleranceDiskSpec struct { - FaultToleranceDiskSpec []FaultToleranceDiskSpec `xml:"FaultToleranceDiskSpec,omitempty"` -} - -func init() { - t["ArrayOfFaultToleranceDiskSpec"] = reflect.TypeOf((*ArrayOfFaultToleranceDiskSpec)(nil)).Elem() -} - -type ArrayOfFcoeConfigVlanRange struct { - FcoeConfigVlanRange []FcoeConfigVlanRange `xml:"FcoeConfigVlanRange,omitempty"` -} - -func init() { - t["ArrayOfFcoeConfigVlanRange"] = reflect.TypeOf((*ArrayOfFcoeConfigVlanRange)(nil)).Elem() -} - -type ArrayOfFileInfo struct { - FileInfo []BaseFileInfo `xml:"FileInfo,omitempty,typeattr"` -} - -func init() { - t["ArrayOfFileInfo"] = reflect.TypeOf((*ArrayOfFileInfo)(nil)).Elem() -} - -type ArrayOfFileQuery struct { - FileQuery []BaseFileQuery `xml:"FileQuery,omitempty,typeattr"` -} - -func init() { - t["ArrayOfFileQuery"] = reflect.TypeOf((*ArrayOfFileQuery)(nil)).Elem() -} - -type ArrayOfFirewallProfileRulesetProfile struct { - FirewallProfileRulesetProfile []FirewallProfileRulesetProfile `xml:"FirewallProfileRulesetProfile,omitempty"` -} - -func init() { - t["ArrayOfFirewallProfileRulesetProfile"] = reflect.TypeOf((*ArrayOfFirewallProfileRulesetProfile)(nil)).Elem() -} - -type ArrayOfGuestAliases struct { - GuestAliases []GuestAliases `xml:"GuestAliases,omitempty"` -} - -func init() { - t["ArrayOfGuestAliases"] = reflect.TypeOf((*ArrayOfGuestAliases)(nil)).Elem() -} - -type ArrayOfGuestAuthAliasInfo struct { - GuestAuthAliasInfo []GuestAuthAliasInfo `xml:"GuestAuthAliasInfo,omitempty"` -} - -func init() { - t["ArrayOfGuestAuthAliasInfo"] = reflect.TypeOf((*ArrayOfGuestAuthAliasInfo)(nil)).Elem() -} - -type ArrayOfGuestAuthSubject struct { - GuestAuthSubject []BaseGuestAuthSubject `xml:"GuestAuthSubject,omitempty,typeattr"` -} - -func init() { - t["ArrayOfGuestAuthSubject"] = reflect.TypeOf((*ArrayOfGuestAuthSubject)(nil)).Elem() -} - -type ArrayOfGuestDiskInfo struct { - GuestDiskInfo []GuestDiskInfo `xml:"GuestDiskInfo,omitempty"` -} - -func init() { - t["ArrayOfGuestDiskInfo"] = reflect.TypeOf((*ArrayOfGuestDiskInfo)(nil)).Elem() -} - -type ArrayOfGuestFileInfo struct { - GuestFileInfo []GuestFileInfo `xml:"GuestFileInfo,omitempty"` -} - -func init() { - t["ArrayOfGuestFileInfo"] = reflect.TypeOf((*ArrayOfGuestFileInfo)(nil)).Elem() -} - -type ArrayOfGuestInfoNamespaceGenerationInfo struct { - GuestInfoNamespaceGenerationInfo []GuestInfoNamespaceGenerationInfo `xml:"GuestInfoNamespaceGenerationInfo,omitempty"` -} - -func init() { - t["ArrayOfGuestInfoNamespaceGenerationInfo"] = reflect.TypeOf((*ArrayOfGuestInfoNamespaceGenerationInfo)(nil)).Elem() -} - -type ArrayOfGuestMappedAliases struct { - GuestMappedAliases []GuestMappedAliases `xml:"GuestMappedAliases,omitempty"` -} - -func init() { - t["ArrayOfGuestMappedAliases"] = reflect.TypeOf((*ArrayOfGuestMappedAliases)(nil)).Elem() -} - -type ArrayOfGuestNicInfo struct { - GuestNicInfo []GuestNicInfo `xml:"GuestNicInfo,omitempty"` -} - -func init() { - t["ArrayOfGuestNicInfo"] = reflect.TypeOf((*ArrayOfGuestNicInfo)(nil)).Elem() -} - -type ArrayOfGuestOsDescriptor struct { - GuestOsDescriptor []GuestOsDescriptor `xml:"GuestOsDescriptor,omitempty"` -} - -func init() { - t["ArrayOfGuestOsDescriptor"] = reflect.TypeOf((*ArrayOfGuestOsDescriptor)(nil)).Elem() -} - -type ArrayOfGuestProcessInfo struct { - GuestProcessInfo []GuestProcessInfo `xml:"GuestProcessInfo,omitempty"` -} - -func init() { - t["ArrayOfGuestProcessInfo"] = reflect.TypeOf((*ArrayOfGuestProcessInfo)(nil)).Elem() -} - -type ArrayOfGuestRegKeyRecordSpec struct { - GuestRegKeyRecordSpec []GuestRegKeyRecordSpec `xml:"GuestRegKeyRecordSpec,omitempty"` -} - -func init() { - t["ArrayOfGuestRegKeyRecordSpec"] = reflect.TypeOf((*ArrayOfGuestRegKeyRecordSpec)(nil)).Elem() -} - -type ArrayOfGuestRegValueSpec struct { - GuestRegValueSpec []GuestRegValueSpec `xml:"GuestRegValueSpec,omitempty"` -} - -func init() { - t["ArrayOfGuestRegValueSpec"] = reflect.TypeOf((*ArrayOfGuestRegValueSpec)(nil)).Elem() -} - -type ArrayOfGuestStackInfo struct { - GuestStackInfo []GuestStackInfo `xml:"GuestStackInfo,omitempty"` -} - -func init() { - t["ArrayOfGuestStackInfo"] = reflect.TypeOf((*ArrayOfGuestStackInfo)(nil)).Elem() -} - -type ArrayOfHbrManagerVmReplicationCapability struct { - HbrManagerVmReplicationCapability []HbrManagerVmReplicationCapability `xml:"HbrManagerVmReplicationCapability,omitempty"` -} - -func init() { - t["ArrayOfHbrManagerVmReplicationCapability"] = reflect.TypeOf((*ArrayOfHbrManagerVmReplicationCapability)(nil)).Elem() -} - -type ArrayOfHostAccessControlEntry struct { - HostAccessControlEntry []HostAccessControlEntry `xml:"HostAccessControlEntry,omitempty"` -} - -func init() { - t["ArrayOfHostAccessControlEntry"] = reflect.TypeOf((*ArrayOfHostAccessControlEntry)(nil)).Elem() -} - -type ArrayOfHostAccountSpec struct { - HostAccountSpec []BaseHostAccountSpec `xml:"HostAccountSpec,omitempty,typeattr"` -} - -func init() { - t["ArrayOfHostAccountSpec"] = reflect.TypeOf((*ArrayOfHostAccountSpec)(nil)).Elem() -} - -type ArrayOfHostActiveDirectory struct { - HostActiveDirectory []HostActiveDirectory `xml:"HostActiveDirectory,omitempty"` -} - -func init() { - t["ArrayOfHostActiveDirectory"] = reflect.TypeOf((*ArrayOfHostActiveDirectory)(nil)).Elem() -} - -type ArrayOfHostAuthenticationStoreInfo struct { - HostAuthenticationStoreInfo []BaseHostAuthenticationStoreInfo `xml:"HostAuthenticationStoreInfo,omitempty,typeattr"` -} - -func init() { - t["ArrayOfHostAuthenticationStoreInfo"] = reflect.TypeOf((*ArrayOfHostAuthenticationStoreInfo)(nil)).Elem() -} - -type ArrayOfHostBootDevice struct { - HostBootDevice []HostBootDevice `xml:"HostBootDevice,omitempty"` -} - -func init() { - t["ArrayOfHostBootDevice"] = reflect.TypeOf((*ArrayOfHostBootDevice)(nil)).Elem() -} - -type ArrayOfHostCacheConfigurationInfo struct { - HostCacheConfigurationInfo []HostCacheConfigurationInfo `xml:"HostCacheConfigurationInfo,omitempty"` -} - -func init() { - t["ArrayOfHostCacheConfigurationInfo"] = reflect.TypeOf((*ArrayOfHostCacheConfigurationInfo)(nil)).Elem() -} - -type ArrayOfHostConnectInfoNetworkInfo struct { - HostConnectInfoNetworkInfo []BaseHostConnectInfoNetworkInfo `xml:"HostConnectInfoNetworkInfo,omitempty,typeattr"` -} - -func init() { - t["ArrayOfHostConnectInfoNetworkInfo"] = reflect.TypeOf((*ArrayOfHostConnectInfoNetworkInfo)(nil)).Elem() -} - -type ArrayOfHostCpuIdInfo struct { - HostCpuIdInfo []HostCpuIdInfo `xml:"HostCpuIdInfo,omitempty"` -} - -func init() { - t["ArrayOfHostCpuIdInfo"] = reflect.TypeOf((*ArrayOfHostCpuIdInfo)(nil)).Elem() -} - -type ArrayOfHostCpuPackage struct { - HostCpuPackage []HostCpuPackage `xml:"HostCpuPackage,omitempty"` -} - -func init() { - t["ArrayOfHostCpuPackage"] = reflect.TypeOf((*ArrayOfHostCpuPackage)(nil)).Elem() -} - -type ArrayOfHostDatastoreBrowserSearchResults struct { - HostDatastoreBrowserSearchResults []HostDatastoreBrowserSearchResults `xml:"HostDatastoreBrowserSearchResults,omitempty"` -} - -func init() { - t["ArrayOfHostDatastoreBrowserSearchResults"] = reflect.TypeOf((*ArrayOfHostDatastoreBrowserSearchResults)(nil)).Elem() -} - -type ArrayOfHostDatastoreConnectInfo struct { - HostDatastoreConnectInfo []BaseHostDatastoreConnectInfo `xml:"HostDatastoreConnectInfo,omitempty,typeattr"` -} - -func init() { - t["ArrayOfHostDatastoreConnectInfo"] = reflect.TypeOf((*ArrayOfHostDatastoreConnectInfo)(nil)).Elem() -} - -type ArrayOfHostDatastoreSystemDatastoreResult struct { - HostDatastoreSystemDatastoreResult []HostDatastoreSystemDatastoreResult `xml:"HostDatastoreSystemDatastoreResult,omitempty"` -} - -func init() { - t["ArrayOfHostDatastoreSystemDatastoreResult"] = reflect.TypeOf((*ArrayOfHostDatastoreSystemDatastoreResult)(nil)).Elem() -} - -type ArrayOfHostDateTimeSystemTimeZone struct { - HostDateTimeSystemTimeZone []HostDateTimeSystemTimeZone `xml:"HostDateTimeSystemTimeZone,omitempty"` -} - -func init() { - t["ArrayOfHostDateTimeSystemTimeZone"] = reflect.TypeOf((*ArrayOfHostDateTimeSystemTimeZone)(nil)).Elem() -} - -type ArrayOfHostDhcpService struct { - HostDhcpService []HostDhcpService `xml:"HostDhcpService,omitempty"` -} - -func init() { - t["ArrayOfHostDhcpService"] = reflect.TypeOf((*ArrayOfHostDhcpService)(nil)).Elem() -} - -type ArrayOfHostDhcpServiceConfig struct { - HostDhcpServiceConfig []HostDhcpServiceConfig `xml:"HostDhcpServiceConfig,omitempty"` -} - -func init() { - t["ArrayOfHostDhcpServiceConfig"] = reflect.TypeOf((*ArrayOfHostDhcpServiceConfig)(nil)).Elem() -} - -type ArrayOfHostDiagnosticPartition struct { - HostDiagnosticPartition []HostDiagnosticPartition `xml:"HostDiagnosticPartition,omitempty"` -} - -func init() { - t["ArrayOfHostDiagnosticPartition"] = reflect.TypeOf((*ArrayOfHostDiagnosticPartition)(nil)).Elem() -} - -type ArrayOfHostDiagnosticPartitionCreateOption struct { - HostDiagnosticPartitionCreateOption []HostDiagnosticPartitionCreateOption `xml:"HostDiagnosticPartitionCreateOption,omitempty"` -} - -func init() { - t["ArrayOfHostDiagnosticPartitionCreateOption"] = reflect.TypeOf((*ArrayOfHostDiagnosticPartitionCreateOption)(nil)).Elem() -} - -type ArrayOfHostDiskConfigurationResult struct { - HostDiskConfigurationResult []HostDiskConfigurationResult `xml:"HostDiskConfigurationResult,omitempty"` -} - -func init() { - t["ArrayOfHostDiskConfigurationResult"] = reflect.TypeOf((*ArrayOfHostDiskConfigurationResult)(nil)).Elem() -} - -type ArrayOfHostDiskMappingPartitionOption struct { - HostDiskMappingPartitionOption []HostDiskMappingPartitionOption `xml:"HostDiskMappingPartitionOption,omitempty"` -} - -func init() { - t["ArrayOfHostDiskMappingPartitionOption"] = reflect.TypeOf((*ArrayOfHostDiskMappingPartitionOption)(nil)).Elem() -} - -type ArrayOfHostDiskPartitionAttributes struct { - HostDiskPartitionAttributes []HostDiskPartitionAttributes `xml:"HostDiskPartitionAttributes,omitempty"` -} - -func init() { - t["ArrayOfHostDiskPartitionAttributes"] = reflect.TypeOf((*ArrayOfHostDiskPartitionAttributes)(nil)).Elem() -} - -type ArrayOfHostDiskPartitionBlockRange struct { - HostDiskPartitionBlockRange []HostDiskPartitionBlockRange `xml:"HostDiskPartitionBlockRange,omitempty"` -} - -func init() { - t["ArrayOfHostDiskPartitionBlockRange"] = reflect.TypeOf((*ArrayOfHostDiskPartitionBlockRange)(nil)).Elem() -} - -type ArrayOfHostDiskPartitionInfo struct { - HostDiskPartitionInfo []HostDiskPartitionInfo `xml:"HostDiskPartitionInfo,omitempty"` -} - -func init() { - t["ArrayOfHostDiskPartitionInfo"] = reflect.TypeOf((*ArrayOfHostDiskPartitionInfo)(nil)).Elem() -} - -type ArrayOfHostEventArgument struct { - HostEventArgument []HostEventArgument `xml:"HostEventArgument,omitempty"` -} - -func init() { - t["ArrayOfHostEventArgument"] = reflect.TypeOf((*ArrayOfHostEventArgument)(nil)).Elem() -} - -type ArrayOfHostFeatureCapability struct { - HostFeatureCapability []HostFeatureCapability `xml:"HostFeatureCapability,omitempty"` -} - -func init() { - t["ArrayOfHostFeatureCapability"] = reflect.TypeOf((*ArrayOfHostFeatureCapability)(nil)).Elem() -} - -type ArrayOfHostFeatureMask struct { - HostFeatureMask []HostFeatureMask `xml:"HostFeatureMask,omitempty"` -} - -func init() { - t["ArrayOfHostFeatureMask"] = reflect.TypeOf((*ArrayOfHostFeatureMask)(nil)).Elem() -} - -type ArrayOfHostFeatureVersionInfo struct { - HostFeatureVersionInfo []HostFeatureVersionInfo `xml:"HostFeatureVersionInfo,omitempty"` -} - -func init() { - t["ArrayOfHostFeatureVersionInfo"] = reflect.TypeOf((*ArrayOfHostFeatureVersionInfo)(nil)).Elem() -} - -type ArrayOfHostFileSystemMountInfo struct { - HostFileSystemMountInfo []HostFileSystemMountInfo `xml:"HostFileSystemMountInfo,omitempty"` -} - -func init() { - t["ArrayOfHostFileSystemMountInfo"] = reflect.TypeOf((*ArrayOfHostFileSystemMountInfo)(nil)).Elem() -} - -type ArrayOfHostFirewallConfigRuleSetConfig struct { - HostFirewallConfigRuleSetConfig []HostFirewallConfigRuleSetConfig `xml:"HostFirewallConfigRuleSetConfig,omitempty"` -} - -func init() { - t["ArrayOfHostFirewallConfigRuleSetConfig"] = reflect.TypeOf((*ArrayOfHostFirewallConfigRuleSetConfig)(nil)).Elem() -} - -type ArrayOfHostFirewallRule struct { - HostFirewallRule []HostFirewallRule `xml:"HostFirewallRule,omitempty"` -} - -func init() { - t["ArrayOfHostFirewallRule"] = reflect.TypeOf((*ArrayOfHostFirewallRule)(nil)).Elem() -} - -type ArrayOfHostFirewallRuleset struct { - HostFirewallRuleset []HostFirewallRuleset `xml:"HostFirewallRuleset,omitempty"` -} - -func init() { - t["ArrayOfHostFirewallRuleset"] = reflect.TypeOf((*ArrayOfHostFirewallRuleset)(nil)).Elem() -} - -type ArrayOfHostFirewallRulesetIpNetwork struct { - HostFirewallRulesetIpNetwork []HostFirewallRulesetIpNetwork `xml:"HostFirewallRulesetIpNetwork,omitempty"` -} - -func init() { - t["ArrayOfHostFirewallRulesetIpNetwork"] = reflect.TypeOf((*ArrayOfHostFirewallRulesetIpNetwork)(nil)).Elem() -} - -type ArrayOfHostGraphicsInfo struct { - HostGraphicsInfo []HostGraphicsInfo `xml:"HostGraphicsInfo,omitempty"` -} - -func init() { - t["ArrayOfHostGraphicsInfo"] = reflect.TypeOf((*ArrayOfHostGraphicsInfo)(nil)).Elem() -} - -type ArrayOfHostHardwareElementInfo struct { - HostHardwareElementInfo []BaseHostHardwareElementInfo `xml:"HostHardwareElementInfo,omitempty,typeattr"` -} - -func init() { - t["ArrayOfHostHardwareElementInfo"] = reflect.TypeOf((*ArrayOfHostHardwareElementInfo)(nil)).Elem() -} - -type ArrayOfHostHostBusAdapter struct { - HostHostBusAdapter []BaseHostHostBusAdapter `xml:"HostHostBusAdapter,omitempty,typeattr"` -} - -func init() { - t["ArrayOfHostHostBusAdapter"] = reflect.TypeOf((*ArrayOfHostHostBusAdapter)(nil)).Elem() -} - -type ArrayOfHostInternetScsiHbaIscsiIpv6Address struct { - HostInternetScsiHbaIscsiIpv6Address []HostInternetScsiHbaIscsiIpv6Address `xml:"HostInternetScsiHbaIscsiIpv6Address,omitempty"` -} - -func init() { - t["ArrayOfHostInternetScsiHbaIscsiIpv6Address"] = reflect.TypeOf((*ArrayOfHostInternetScsiHbaIscsiIpv6Address)(nil)).Elem() -} - -type ArrayOfHostInternetScsiHbaParamValue struct { - HostInternetScsiHbaParamValue []HostInternetScsiHbaParamValue `xml:"HostInternetScsiHbaParamValue,omitempty"` -} - -func init() { - t["ArrayOfHostInternetScsiHbaParamValue"] = reflect.TypeOf((*ArrayOfHostInternetScsiHbaParamValue)(nil)).Elem() -} - -type ArrayOfHostInternetScsiHbaSendTarget struct { - HostInternetScsiHbaSendTarget []HostInternetScsiHbaSendTarget `xml:"HostInternetScsiHbaSendTarget,omitempty"` -} - -func init() { - t["ArrayOfHostInternetScsiHbaSendTarget"] = reflect.TypeOf((*ArrayOfHostInternetScsiHbaSendTarget)(nil)).Elem() -} - -type ArrayOfHostInternetScsiHbaStaticTarget struct { - HostInternetScsiHbaStaticTarget []HostInternetScsiHbaStaticTarget `xml:"HostInternetScsiHbaStaticTarget,omitempty"` -} - -func init() { - t["ArrayOfHostInternetScsiHbaStaticTarget"] = reflect.TypeOf((*ArrayOfHostInternetScsiHbaStaticTarget)(nil)).Elem() -} - -type ArrayOfHostIoFilterInfo struct { - HostIoFilterInfo []HostIoFilterInfo `xml:"HostIoFilterInfo,omitempty"` -} - -func init() { - t["ArrayOfHostIoFilterInfo"] = reflect.TypeOf((*ArrayOfHostIoFilterInfo)(nil)).Elem() -} - -type ArrayOfHostIpConfigIpV6Address struct { - HostIpConfigIpV6Address []HostIpConfigIpV6Address `xml:"HostIpConfigIpV6Address,omitempty"` -} - -func init() { - t["ArrayOfHostIpConfigIpV6Address"] = reflect.TypeOf((*ArrayOfHostIpConfigIpV6Address)(nil)).Elem() -} - -type ArrayOfHostIpRouteEntry struct { - HostIpRouteEntry []HostIpRouteEntry `xml:"HostIpRouteEntry,omitempty"` -} - -func init() { - t["ArrayOfHostIpRouteEntry"] = reflect.TypeOf((*ArrayOfHostIpRouteEntry)(nil)).Elem() -} - -type ArrayOfHostIpRouteOp struct { - HostIpRouteOp []HostIpRouteOp `xml:"HostIpRouteOp,omitempty"` -} - -func init() { - t["ArrayOfHostIpRouteOp"] = reflect.TypeOf((*ArrayOfHostIpRouteOp)(nil)).Elem() -} - -type ArrayOfHostLowLevelProvisioningManagerDiskLayoutSpec struct { - HostLowLevelProvisioningManagerDiskLayoutSpec []HostLowLevelProvisioningManagerDiskLayoutSpec `xml:"HostLowLevelProvisioningManagerDiskLayoutSpec,omitempty"` -} - -func init() { - t["ArrayOfHostLowLevelProvisioningManagerDiskLayoutSpec"] = reflect.TypeOf((*ArrayOfHostLowLevelProvisioningManagerDiskLayoutSpec)(nil)).Elem() -} - -type ArrayOfHostLowLevelProvisioningManagerFileDeleteResult struct { - HostLowLevelProvisioningManagerFileDeleteResult []HostLowLevelProvisioningManagerFileDeleteResult `xml:"HostLowLevelProvisioningManagerFileDeleteResult,omitempty"` -} - -func init() { - t["ArrayOfHostLowLevelProvisioningManagerFileDeleteResult"] = reflect.TypeOf((*ArrayOfHostLowLevelProvisioningManagerFileDeleteResult)(nil)).Elem() -} - -type ArrayOfHostLowLevelProvisioningManagerFileDeleteSpec struct { - HostLowLevelProvisioningManagerFileDeleteSpec []HostLowLevelProvisioningManagerFileDeleteSpec `xml:"HostLowLevelProvisioningManagerFileDeleteSpec,omitempty"` -} - -func init() { - t["ArrayOfHostLowLevelProvisioningManagerFileDeleteSpec"] = reflect.TypeOf((*ArrayOfHostLowLevelProvisioningManagerFileDeleteSpec)(nil)).Elem() -} - -type ArrayOfHostLowLevelProvisioningManagerFileReserveResult struct { - HostLowLevelProvisioningManagerFileReserveResult []HostLowLevelProvisioningManagerFileReserveResult `xml:"HostLowLevelProvisioningManagerFileReserveResult,omitempty"` -} - -func init() { - t["ArrayOfHostLowLevelProvisioningManagerFileReserveResult"] = reflect.TypeOf((*ArrayOfHostLowLevelProvisioningManagerFileReserveResult)(nil)).Elem() -} - -type ArrayOfHostLowLevelProvisioningManagerFileReserveSpec struct { - HostLowLevelProvisioningManagerFileReserveSpec []HostLowLevelProvisioningManagerFileReserveSpec `xml:"HostLowLevelProvisioningManagerFileReserveSpec,omitempty"` -} - -func init() { - t["ArrayOfHostLowLevelProvisioningManagerFileReserveSpec"] = reflect.TypeOf((*ArrayOfHostLowLevelProvisioningManagerFileReserveSpec)(nil)).Elem() -} - -type ArrayOfHostLowLevelProvisioningManagerSnapshotLayoutSpec struct { - HostLowLevelProvisioningManagerSnapshotLayoutSpec []HostLowLevelProvisioningManagerSnapshotLayoutSpec `xml:"HostLowLevelProvisioningManagerSnapshotLayoutSpec,omitempty"` -} - -func init() { - t["ArrayOfHostLowLevelProvisioningManagerSnapshotLayoutSpec"] = reflect.TypeOf((*ArrayOfHostLowLevelProvisioningManagerSnapshotLayoutSpec)(nil)).Elem() -} - -type ArrayOfHostMemberHealthCheckResult struct { - HostMemberHealthCheckResult []BaseHostMemberHealthCheckResult `xml:"HostMemberHealthCheckResult,omitempty,typeattr"` -} - -func init() { - t["ArrayOfHostMemberHealthCheckResult"] = reflect.TypeOf((*ArrayOfHostMemberHealthCheckResult)(nil)).Elem() -} - -type ArrayOfHostMemberRuntimeInfo struct { - HostMemberRuntimeInfo []HostMemberRuntimeInfo `xml:"HostMemberRuntimeInfo,omitempty"` -} - -func init() { - t["ArrayOfHostMemberRuntimeInfo"] = reflect.TypeOf((*ArrayOfHostMemberRuntimeInfo)(nil)).Elem() -} - -type ArrayOfHostMultipathInfoLogicalUnit struct { - HostMultipathInfoLogicalUnit []HostMultipathInfoLogicalUnit `xml:"HostMultipathInfoLogicalUnit,omitempty"` -} - -func init() { - t["ArrayOfHostMultipathInfoLogicalUnit"] = reflect.TypeOf((*ArrayOfHostMultipathInfoLogicalUnit)(nil)).Elem() -} - -type ArrayOfHostMultipathInfoPath struct { - HostMultipathInfoPath []HostMultipathInfoPath `xml:"HostMultipathInfoPath,omitempty"` -} - -func init() { - t["ArrayOfHostMultipathInfoPath"] = reflect.TypeOf((*ArrayOfHostMultipathInfoPath)(nil)).Elem() -} - -type ArrayOfHostMultipathStateInfoPath struct { - HostMultipathStateInfoPath []HostMultipathStateInfoPath `xml:"HostMultipathStateInfoPath,omitempty"` -} - -func init() { - t["ArrayOfHostMultipathStateInfoPath"] = reflect.TypeOf((*ArrayOfHostMultipathStateInfoPath)(nil)).Elem() -} - -type ArrayOfHostNasVolumeConfig struct { - HostNasVolumeConfig []HostNasVolumeConfig `xml:"HostNasVolumeConfig,omitempty"` -} - -func init() { - t["ArrayOfHostNasVolumeConfig"] = reflect.TypeOf((*ArrayOfHostNasVolumeConfig)(nil)).Elem() -} - -type ArrayOfHostNatService struct { - HostNatService []HostNatService `xml:"HostNatService,omitempty"` -} - -func init() { - t["ArrayOfHostNatService"] = reflect.TypeOf((*ArrayOfHostNatService)(nil)).Elem() -} - -type ArrayOfHostNatServiceConfig struct { - HostNatServiceConfig []HostNatServiceConfig `xml:"HostNatServiceConfig,omitempty"` -} - -func init() { - t["ArrayOfHostNatServiceConfig"] = reflect.TypeOf((*ArrayOfHostNatServiceConfig)(nil)).Elem() -} - -type ArrayOfHostNatServicePortForwardSpec struct { - HostNatServicePortForwardSpec []HostNatServicePortForwardSpec `xml:"HostNatServicePortForwardSpec,omitempty"` -} - -func init() { - t["ArrayOfHostNatServicePortForwardSpec"] = reflect.TypeOf((*ArrayOfHostNatServicePortForwardSpec)(nil)).Elem() -} - -type ArrayOfHostNetStackInstance struct { - HostNetStackInstance []HostNetStackInstance `xml:"HostNetStackInstance,omitempty"` -} - -func init() { - t["ArrayOfHostNetStackInstance"] = reflect.TypeOf((*ArrayOfHostNetStackInstance)(nil)).Elem() -} - -type ArrayOfHostNetworkConfigNetStackSpec struct { - HostNetworkConfigNetStackSpec []HostNetworkConfigNetStackSpec `xml:"HostNetworkConfigNetStackSpec,omitempty"` -} - -func init() { - t["ArrayOfHostNetworkConfigNetStackSpec"] = reflect.TypeOf((*ArrayOfHostNetworkConfigNetStackSpec)(nil)).Elem() -} - -type ArrayOfHostNumaNode struct { - HostNumaNode []HostNumaNode `xml:"HostNumaNode,omitempty"` -} - -func init() { - t["ArrayOfHostNumaNode"] = reflect.TypeOf((*ArrayOfHostNumaNode)(nil)).Elem() -} - -type ArrayOfHostNumericSensorInfo struct { - HostNumericSensorInfo []HostNumericSensorInfo `xml:"HostNumericSensorInfo,omitempty"` -} - -func init() { - t["ArrayOfHostNumericSensorInfo"] = reflect.TypeOf((*ArrayOfHostNumericSensorInfo)(nil)).Elem() -} - -type ArrayOfHostOpaqueNetworkInfo struct { - HostOpaqueNetworkInfo []HostOpaqueNetworkInfo `xml:"HostOpaqueNetworkInfo,omitempty"` -} - -func init() { - t["ArrayOfHostOpaqueNetworkInfo"] = reflect.TypeOf((*ArrayOfHostOpaqueNetworkInfo)(nil)).Elem() -} - -type ArrayOfHostOpaqueSwitch struct { - HostOpaqueSwitch []HostOpaqueSwitch `xml:"HostOpaqueSwitch,omitempty"` -} - -func init() { - t["ArrayOfHostOpaqueSwitch"] = reflect.TypeOf((*ArrayOfHostOpaqueSwitch)(nil)).Elem() -} - -type ArrayOfHostOpaqueSwitchPhysicalNicZone struct { - HostOpaqueSwitchPhysicalNicZone []HostOpaqueSwitchPhysicalNicZone `xml:"HostOpaqueSwitchPhysicalNicZone,omitempty"` -} - -func init() { - t["ArrayOfHostOpaqueSwitchPhysicalNicZone"] = reflect.TypeOf((*ArrayOfHostOpaqueSwitchPhysicalNicZone)(nil)).Elem() -} - -type ArrayOfHostPatchManagerStatus struct { - HostPatchManagerStatus []HostPatchManagerStatus `xml:"HostPatchManagerStatus,omitempty"` -} - -func init() { - t["ArrayOfHostPatchManagerStatus"] = reflect.TypeOf((*ArrayOfHostPatchManagerStatus)(nil)).Elem() -} - -type ArrayOfHostPatchManagerStatusPrerequisitePatch struct { - HostPatchManagerStatusPrerequisitePatch []HostPatchManagerStatusPrerequisitePatch `xml:"HostPatchManagerStatusPrerequisitePatch,omitempty"` -} - -func init() { - t["ArrayOfHostPatchManagerStatusPrerequisitePatch"] = reflect.TypeOf((*ArrayOfHostPatchManagerStatusPrerequisitePatch)(nil)).Elem() -} - -type ArrayOfHostPathSelectionPolicyOption struct { - HostPathSelectionPolicyOption []HostPathSelectionPolicyOption `xml:"HostPathSelectionPolicyOption,omitempty"` -} - -func init() { - t["ArrayOfHostPathSelectionPolicyOption"] = reflect.TypeOf((*ArrayOfHostPathSelectionPolicyOption)(nil)).Elem() -} - -type ArrayOfHostPciDevice struct { - HostPciDevice []HostPciDevice `xml:"HostPciDevice,omitempty"` -} - -func init() { - t["ArrayOfHostPciDevice"] = reflect.TypeOf((*ArrayOfHostPciDevice)(nil)).Elem() -} - -type ArrayOfHostPciPassthruConfig struct { - HostPciPassthruConfig []BaseHostPciPassthruConfig `xml:"HostPciPassthruConfig,omitempty,typeattr"` -} - -func init() { - t["ArrayOfHostPciPassthruConfig"] = reflect.TypeOf((*ArrayOfHostPciPassthruConfig)(nil)).Elem() -} - -type ArrayOfHostPciPassthruInfo struct { - HostPciPassthruInfo []BaseHostPciPassthruInfo `xml:"HostPciPassthruInfo,omitempty,typeattr"` -} - -func init() { - t["ArrayOfHostPciPassthruInfo"] = reflect.TypeOf((*ArrayOfHostPciPassthruInfo)(nil)).Elem() -} - -type ArrayOfHostPlacedVirtualNicIdentifier struct { - HostPlacedVirtualNicIdentifier []HostPlacedVirtualNicIdentifier `xml:"HostPlacedVirtualNicIdentifier,omitempty"` -} - -func init() { - t["ArrayOfHostPlacedVirtualNicIdentifier"] = reflect.TypeOf((*ArrayOfHostPlacedVirtualNicIdentifier)(nil)).Elem() -} - -type ArrayOfHostPlugStoreTopologyAdapter struct { - HostPlugStoreTopologyAdapter []HostPlugStoreTopologyAdapter `xml:"HostPlugStoreTopologyAdapter,omitempty"` -} - -func init() { - t["ArrayOfHostPlugStoreTopologyAdapter"] = reflect.TypeOf((*ArrayOfHostPlugStoreTopologyAdapter)(nil)).Elem() -} - -type ArrayOfHostPlugStoreTopologyDevice struct { - HostPlugStoreTopologyDevice []HostPlugStoreTopologyDevice `xml:"HostPlugStoreTopologyDevice,omitempty"` -} - -func init() { - t["ArrayOfHostPlugStoreTopologyDevice"] = reflect.TypeOf((*ArrayOfHostPlugStoreTopologyDevice)(nil)).Elem() -} - -type ArrayOfHostPlugStoreTopologyPath struct { - HostPlugStoreTopologyPath []HostPlugStoreTopologyPath `xml:"HostPlugStoreTopologyPath,omitempty"` -} - -func init() { - t["ArrayOfHostPlugStoreTopologyPath"] = reflect.TypeOf((*ArrayOfHostPlugStoreTopologyPath)(nil)).Elem() -} - -type ArrayOfHostPlugStoreTopologyPlugin struct { - HostPlugStoreTopologyPlugin []HostPlugStoreTopologyPlugin `xml:"HostPlugStoreTopologyPlugin,omitempty"` -} - -func init() { - t["ArrayOfHostPlugStoreTopologyPlugin"] = reflect.TypeOf((*ArrayOfHostPlugStoreTopologyPlugin)(nil)).Elem() -} - -type ArrayOfHostPlugStoreTopologyTarget struct { - HostPlugStoreTopologyTarget []HostPlugStoreTopologyTarget `xml:"HostPlugStoreTopologyTarget,omitempty"` -} - -func init() { - t["ArrayOfHostPlugStoreTopologyTarget"] = reflect.TypeOf((*ArrayOfHostPlugStoreTopologyTarget)(nil)).Elem() -} - -type ArrayOfHostPnicNetworkResourceInfo struct { - HostPnicNetworkResourceInfo []HostPnicNetworkResourceInfo `xml:"HostPnicNetworkResourceInfo,omitempty"` -} - -func init() { - t["ArrayOfHostPnicNetworkResourceInfo"] = reflect.TypeOf((*ArrayOfHostPnicNetworkResourceInfo)(nil)).Elem() -} - -type ArrayOfHostPortGroup struct { - HostPortGroup []HostPortGroup `xml:"HostPortGroup,omitempty"` -} - -func init() { - t["ArrayOfHostPortGroup"] = reflect.TypeOf((*ArrayOfHostPortGroup)(nil)).Elem() -} - -type ArrayOfHostPortGroupConfig struct { - HostPortGroupConfig []HostPortGroupConfig `xml:"HostPortGroupConfig,omitempty"` -} - -func init() { - t["ArrayOfHostPortGroupConfig"] = reflect.TypeOf((*ArrayOfHostPortGroupConfig)(nil)).Elem() -} - -type ArrayOfHostPortGroupPort struct { - HostPortGroupPort []HostPortGroupPort `xml:"HostPortGroupPort,omitempty"` -} - -func init() { - t["ArrayOfHostPortGroupPort"] = reflect.TypeOf((*ArrayOfHostPortGroupPort)(nil)).Elem() -} - -type ArrayOfHostPortGroupProfile struct { - HostPortGroupProfile []HostPortGroupProfile `xml:"HostPortGroupProfile,omitempty"` -} - -func init() { - t["ArrayOfHostPortGroupProfile"] = reflect.TypeOf((*ArrayOfHostPortGroupProfile)(nil)).Elem() -} - -type ArrayOfHostPowerPolicy struct { - HostPowerPolicy []HostPowerPolicy `xml:"HostPowerPolicy,omitempty"` -} - -func init() { - t["ArrayOfHostPowerPolicy"] = reflect.TypeOf((*ArrayOfHostPowerPolicy)(nil)).Elem() -} - -type ArrayOfHostProtocolEndpoint struct { - HostProtocolEndpoint []HostProtocolEndpoint `xml:"HostProtocolEndpoint,omitempty"` -} - -func init() { - t["ArrayOfHostProtocolEndpoint"] = reflect.TypeOf((*ArrayOfHostProtocolEndpoint)(nil)).Elem() -} - -type ArrayOfHostProxySwitch struct { - HostProxySwitch []HostProxySwitch `xml:"HostProxySwitch,omitempty"` -} - -func init() { - t["ArrayOfHostProxySwitch"] = reflect.TypeOf((*ArrayOfHostProxySwitch)(nil)).Elem() -} - -type ArrayOfHostProxySwitchConfig struct { - HostProxySwitchConfig []HostProxySwitchConfig `xml:"HostProxySwitchConfig,omitempty"` -} - -func init() { - t["ArrayOfHostProxySwitchConfig"] = reflect.TypeOf((*ArrayOfHostProxySwitchConfig)(nil)).Elem() -} - -type ArrayOfHostProxySwitchHostLagConfig struct { - HostProxySwitchHostLagConfig []HostProxySwitchHostLagConfig `xml:"HostProxySwitchHostLagConfig,omitempty"` -} - -func init() { - t["ArrayOfHostProxySwitchHostLagConfig"] = reflect.TypeOf((*ArrayOfHostProxySwitchHostLagConfig)(nil)).Elem() -} - -type ArrayOfHostRuntimeInfoNetStackInstanceRuntimeInfo struct { - HostRuntimeInfoNetStackInstanceRuntimeInfo []HostRuntimeInfoNetStackInstanceRuntimeInfo `xml:"HostRuntimeInfoNetStackInstanceRuntimeInfo,omitempty"` -} - -func init() { - t["ArrayOfHostRuntimeInfoNetStackInstanceRuntimeInfo"] = reflect.TypeOf((*ArrayOfHostRuntimeInfoNetStackInstanceRuntimeInfo)(nil)).Elem() -} - -type ArrayOfHostScsiDisk struct { - HostScsiDisk []HostScsiDisk `xml:"HostScsiDisk,omitempty"` -} - -func init() { - t["ArrayOfHostScsiDisk"] = reflect.TypeOf((*ArrayOfHostScsiDisk)(nil)).Elem() -} - -type ArrayOfHostScsiDiskPartition struct { - HostScsiDiskPartition []HostScsiDiskPartition `xml:"HostScsiDiskPartition,omitempty"` -} - -func init() { - t["ArrayOfHostScsiDiskPartition"] = reflect.TypeOf((*ArrayOfHostScsiDiskPartition)(nil)).Elem() -} - -type ArrayOfHostScsiTopologyInterface struct { - HostScsiTopologyInterface []HostScsiTopologyInterface `xml:"HostScsiTopologyInterface,omitempty"` -} - -func init() { - t["ArrayOfHostScsiTopologyInterface"] = reflect.TypeOf((*ArrayOfHostScsiTopologyInterface)(nil)).Elem() -} - -type ArrayOfHostScsiTopologyLun struct { - HostScsiTopologyLun []HostScsiTopologyLun `xml:"HostScsiTopologyLun,omitempty"` -} - -func init() { - t["ArrayOfHostScsiTopologyLun"] = reflect.TypeOf((*ArrayOfHostScsiTopologyLun)(nil)).Elem() -} - -type ArrayOfHostScsiTopologyTarget struct { - HostScsiTopologyTarget []HostScsiTopologyTarget `xml:"HostScsiTopologyTarget,omitempty"` -} - -func init() { - t["ArrayOfHostScsiTopologyTarget"] = reflect.TypeOf((*ArrayOfHostScsiTopologyTarget)(nil)).Elem() -} - -type ArrayOfHostService struct { - HostService []HostService `xml:"HostService,omitempty"` -} - -func init() { - t["ArrayOfHostService"] = reflect.TypeOf((*ArrayOfHostService)(nil)).Elem() -} - -type ArrayOfHostServiceConfig struct { - HostServiceConfig []HostServiceConfig `xml:"HostServiceConfig,omitempty"` -} - -func init() { - t["ArrayOfHostServiceConfig"] = reflect.TypeOf((*ArrayOfHostServiceConfig)(nil)).Elem() -} - -type ArrayOfHostSnmpDestination struct { - HostSnmpDestination []HostSnmpDestination `xml:"HostSnmpDestination,omitempty"` -} - -func init() { - t["ArrayOfHostSnmpDestination"] = reflect.TypeOf((*ArrayOfHostSnmpDestination)(nil)).Elem() -} - -type ArrayOfHostSslThumbprintInfo struct { - HostSslThumbprintInfo []HostSslThumbprintInfo `xml:"HostSslThumbprintInfo,omitempty"` -} - -func init() { - t["ArrayOfHostSslThumbprintInfo"] = reflect.TypeOf((*ArrayOfHostSslThumbprintInfo)(nil)).Elem() -} - -type ArrayOfHostStorageArrayTypePolicyOption struct { - HostStorageArrayTypePolicyOption []HostStorageArrayTypePolicyOption `xml:"HostStorageArrayTypePolicyOption,omitempty"` -} - -func init() { - t["ArrayOfHostStorageArrayTypePolicyOption"] = reflect.TypeOf((*ArrayOfHostStorageArrayTypePolicyOption)(nil)).Elem() -} - -type ArrayOfHostStorageElementInfo struct { - HostStorageElementInfo []HostStorageElementInfo `xml:"HostStorageElementInfo,omitempty"` -} - -func init() { - t["ArrayOfHostStorageElementInfo"] = reflect.TypeOf((*ArrayOfHostStorageElementInfo)(nil)).Elem() -} - -type ArrayOfHostStorageOperationalInfo struct { - HostStorageOperationalInfo []HostStorageOperationalInfo `xml:"HostStorageOperationalInfo,omitempty"` -} - -func init() { - t["ArrayOfHostStorageOperationalInfo"] = reflect.TypeOf((*ArrayOfHostStorageOperationalInfo)(nil)).Elem() -} - -type ArrayOfHostStorageSystemDiskLocatorLedResult struct { - HostStorageSystemDiskLocatorLedResult []HostStorageSystemDiskLocatorLedResult `xml:"HostStorageSystemDiskLocatorLedResult,omitempty"` -} - -func init() { - t["ArrayOfHostStorageSystemDiskLocatorLedResult"] = reflect.TypeOf((*ArrayOfHostStorageSystemDiskLocatorLedResult)(nil)).Elem() -} - -type ArrayOfHostStorageSystemScsiLunResult struct { - HostStorageSystemScsiLunResult []HostStorageSystemScsiLunResult `xml:"HostStorageSystemScsiLunResult,omitempty"` -} - -func init() { - t["ArrayOfHostStorageSystemScsiLunResult"] = reflect.TypeOf((*ArrayOfHostStorageSystemScsiLunResult)(nil)).Elem() -} - -type ArrayOfHostStorageSystemVmfsVolumeResult struct { - HostStorageSystemVmfsVolumeResult []HostStorageSystemVmfsVolumeResult `xml:"HostStorageSystemVmfsVolumeResult,omitempty"` -} - -func init() { - t["ArrayOfHostStorageSystemVmfsVolumeResult"] = reflect.TypeOf((*ArrayOfHostStorageSystemVmfsVolumeResult)(nil)).Elem() -} - -type ArrayOfHostSystemIdentificationInfo struct { - HostSystemIdentificationInfo []HostSystemIdentificationInfo `xml:"HostSystemIdentificationInfo,omitempty"` -} - -func init() { - t["ArrayOfHostSystemIdentificationInfo"] = reflect.TypeOf((*ArrayOfHostSystemIdentificationInfo)(nil)).Elem() -} - -type ArrayOfHostSystemResourceInfo struct { - HostSystemResourceInfo []HostSystemResourceInfo `xml:"HostSystemResourceInfo,omitempty"` -} - -func init() { - t["ArrayOfHostSystemResourceInfo"] = reflect.TypeOf((*ArrayOfHostSystemResourceInfo)(nil)).Elem() -} - -type ArrayOfHostSystemSwapConfigurationSystemSwapOption struct { - HostSystemSwapConfigurationSystemSwapOption []BaseHostSystemSwapConfigurationSystemSwapOption `xml:"HostSystemSwapConfigurationSystemSwapOption,omitempty,typeattr"` -} - -func init() { - t["ArrayOfHostSystemSwapConfigurationSystemSwapOption"] = reflect.TypeOf((*ArrayOfHostSystemSwapConfigurationSystemSwapOption)(nil)).Elem() -} - -type ArrayOfHostTpmDigestInfo struct { - HostTpmDigestInfo []HostTpmDigestInfo `xml:"HostTpmDigestInfo,omitempty"` -} - -func init() { - t["ArrayOfHostTpmDigestInfo"] = reflect.TypeOf((*ArrayOfHostTpmDigestInfo)(nil)).Elem() -} - -type ArrayOfHostTpmEventLogEntry struct { - HostTpmEventLogEntry []HostTpmEventLogEntry `xml:"HostTpmEventLogEntry,omitempty"` -} - -func init() { - t["ArrayOfHostTpmEventLogEntry"] = reflect.TypeOf((*ArrayOfHostTpmEventLogEntry)(nil)).Elem() -} - -type ArrayOfHostUnresolvedVmfsExtent struct { - HostUnresolvedVmfsExtent []HostUnresolvedVmfsExtent `xml:"HostUnresolvedVmfsExtent,omitempty"` -} - -func init() { - t["ArrayOfHostUnresolvedVmfsExtent"] = reflect.TypeOf((*ArrayOfHostUnresolvedVmfsExtent)(nil)).Elem() -} - -type ArrayOfHostUnresolvedVmfsResolutionResult struct { - HostUnresolvedVmfsResolutionResult []HostUnresolvedVmfsResolutionResult `xml:"HostUnresolvedVmfsResolutionResult,omitempty"` -} - -func init() { - t["ArrayOfHostUnresolvedVmfsResolutionResult"] = reflect.TypeOf((*ArrayOfHostUnresolvedVmfsResolutionResult)(nil)).Elem() -} - -type ArrayOfHostUnresolvedVmfsResolutionSpec struct { - HostUnresolvedVmfsResolutionSpec []HostUnresolvedVmfsResolutionSpec `xml:"HostUnresolvedVmfsResolutionSpec,omitempty"` -} - -func init() { - t["ArrayOfHostUnresolvedVmfsResolutionSpec"] = reflect.TypeOf((*ArrayOfHostUnresolvedVmfsResolutionSpec)(nil)).Elem() -} - -type ArrayOfHostUnresolvedVmfsVolume struct { - HostUnresolvedVmfsVolume []HostUnresolvedVmfsVolume `xml:"HostUnresolvedVmfsVolume,omitempty"` -} - -func init() { - t["ArrayOfHostUnresolvedVmfsVolume"] = reflect.TypeOf((*ArrayOfHostUnresolvedVmfsVolume)(nil)).Elem() -} - -type ArrayOfHostVFlashManagerVFlashCacheConfigInfoVFlashModuleConfigOption struct { - HostVFlashManagerVFlashCacheConfigInfoVFlashModuleConfigOption []HostVFlashManagerVFlashCacheConfigInfoVFlashModuleConfigOption `xml:"HostVFlashManagerVFlashCacheConfigInfoVFlashModuleConfigOption,omitempty"` -} - -func init() { - t["ArrayOfHostVFlashManagerVFlashCacheConfigInfoVFlashModuleConfigOption"] = reflect.TypeOf((*ArrayOfHostVFlashManagerVFlashCacheConfigInfoVFlashModuleConfigOption)(nil)).Elem() -} - -type ArrayOfHostVMotionCompatibility struct { - HostVMotionCompatibility []HostVMotionCompatibility `xml:"HostVMotionCompatibility,omitempty"` -} - -func init() { - t["ArrayOfHostVMotionCompatibility"] = reflect.TypeOf((*ArrayOfHostVMotionCompatibility)(nil)).Elem() -} - -type ArrayOfHostVirtualNic struct { - HostVirtualNic []HostVirtualNic `xml:"HostVirtualNic,omitempty"` -} - -func init() { - t["ArrayOfHostVirtualNic"] = reflect.TypeOf((*ArrayOfHostVirtualNic)(nil)).Elem() -} - -type ArrayOfHostVirtualNicConfig struct { - HostVirtualNicConfig []HostVirtualNicConfig `xml:"HostVirtualNicConfig,omitempty"` -} - -func init() { - t["ArrayOfHostVirtualNicConfig"] = reflect.TypeOf((*ArrayOfHostVirtualNicConfig)(nil)).Elem() -} - -type ArrayOfHostVirtualNicManagerNicTypeSelection struct { - HostVirtualNicManagerNicTypeSelection []HostVirtualNicManagerNicTypeSelection `xml:"HostVirtualNicManagerNicTypeSelection,omitempty"` -} - -func init() { - t["ArrayOfHostVirtualNicManagerNicTypeSelection"] = reflect.TypeOf((*ArrayOfHostVirtualNicManagerNicTypeSelection)(nil)).Elem() -} - -type ArrayOfHostVirtualSwitch struct { - HostVirtualSwitch []HostVirtualSwitch `xml:"HostVirtualSwitch,omitempty"` -} - -func init() { - t["ArrayOfHostVirtualSwitch"] = reflect.TypeOf((*ArrayOfHostVirtualSwitch)(nil)).Elem() -} - -type ArrayOfHostVirtualSwitchConfig struct { - HostVirtualSwitchConfig []HostVirtualSwitchConfig `xml:"HostVirtualSwitchConfig,omitempty"` -} - -func init() { - t["ArrayOfHostVirtualSwitchConfig"] = reflect.TypeOf((*ArrayOfHostVirtualSwitchConfig)(nil)).Elem() -} - -type ArrayOfHostVmciAccessManagerAccessSpec struct { - HostVmciAccessManagerAccessSpec []HostVmciAccessManagerAccessSpec `xml:"HostVmciAccessManagerAccessSpec,omitempty"` -} - -func init() { - t["ArrayOfHostVmciAccessManagerAccessSpec"] = reflect.TypeOf((*ArrayOfHostVmciAccessManagerAccessSpec)(nil)).Elem() -} - -type ArrayOfHostVmfsRescanResult struct { - HostVmfsRescanResult []HostVmfsRescanResult `xml:"HostVmfsRescanResult,omitempty"` -} - -func init() { - t["ArrayOfHostVmfsRescanResult"] = reflect.TypeOf((*ArrayOfHostVmfsRescanResult)(nil)).Elem() -} - -type ArrayOfHostVsanInternalSystemCmmdsQuery struct { - HostVsanInternalSystemCmmdsQuery []HostVsanInternalSystemCmmdsQuery `xml:"HostVsanInternalSystemCmmdsQuery,omitempty"` -} - -func init() { - t["ArrayOfHostVsanInternalSystemCmmdsQuery"] = reflect.TypeOf((*ArrayOfHostVsanInternalSystemCmmdsQuery)(nil)).Elem() -} - -type ArrayOfHostVsanInternalSystemDeleteVsanObjectsResult struct { - HostVsanInternalSystemDeleteVsanObjectsResult []HostVsanInternalSystemDeleteVsanObjectsResult `xml:"HostVsanInternalSystemDeleteVsanObjectsResult,omitempty"` -} - -func init() { - t["ArrayOfHostVsanInternalSystemDeleteVsanObjectsResult"] = reflect.TypeOf((*ArrayOfHostVsanInternalSystemDeleteVsanObjectsResult)(nil)).Elem() -} - -type ArrayOfHostVsanInternalSystemVsanObjectOperationResult struct { - HostVsanInternalSystemVsanObjectOperationResult []HostVsanInternalSystemVsanObjectOperationResult `xml:"HostVsanInternalSystemVsanObjectOperationResult,omitempty"` -} - -func init() { - t["ArrayOfHostVsanInternalSystemVsanObjectOperationResult"] = reflect.TypeOf((*ArrayOfHostVsanInternalSystemVsanObjectOperationResult)(nil)).Elem() -} - -type ArrayOfHostVsanInternalSystemVsanPhysicalDiskDiagnosticsResult struct { - HostVsanInternalSystemVsanPhysicalDiskDiagnosticsResult []HostVsanInternalSystemVsanPhysicalDiskDiagnosticsResult `xml:"HostVsanInternalSystemVsanPhysicalDiskDiagnosticsResult,omitempty"` -} - -func init() { - t["ArrayOfHostVsanInternalSystemVsanPhysicalDiskDiagnosticsResult"] = reflect.TypeOf((*ArrayOfHostVsanInternalSystemVsanPhysicalDiskDiagnosticsResult)(nil)).Elem() -} - -type ArrayOfHttpNfcLeaseDatastoreLeaseInfo struct { - HttpNfcLeaseDatastoreLeaseInfo []HttpNfcLeaseDatastoreLeaseInfo `xml:"HttpNfcLeaseDatastoreLeaseInfo,omitempty"` -} - -func init() { - t["ArrayOfHttpNfcLeaseDatastoreLeaseInfo"] = reflect.TypeOf((*ArrayOfHttpNfcLeaseDatastoreLeaseInfo)(nil)).Elem() -} - -type ArrayOfHttpNfcLeaseDeviceUrl struct { - HttpNfcLeaseDeviceUrl []HttpNfcLeaseDeviceUrl `xml:"HttpNfcLeaseDeviceUrl,omitempty"` -} - -func init() { - t["ArrayOfHttpNfcLeaseDeviceUrl"] = reflect.TypeOf((*ArrayOfHttpNfcLeaseDeviceUrl)(nil)).Elem() -} - -type ArrayOfHttpNfcLeaseHostInfo struct { - HttpNfcLeaseHostInfo []HttpNfcLeaseHostInfo `xml:"HttpNfcLeaseHostInfo,omitempty"` -} - -func init() { - t["ArrayOfHttpNfcLeaseHostInfo"] = reflect.TypeOf((*ArrayOfHttpNfcLeaseHostInfo)(nil)).Elem() -} - -type ArrayOfHttpNfcLeaseManifestEntry struct { - HttpNfcLeaseManifestEntry []HttpNfcLeaseManifestEntry `xml:"HttpNfcLeaseManifestEntry,omitempty"` -} - -func init() { - t["ArrayOfHttpNfcLeaseManifestEntry"] = reflect.TypeOf((*ArrayOfHttpNfcLeaseManifestEntry)(nil)).Elem() -} - -type ArrayOfImportOperationBulkFaultFaultOnImport struct { - ImportOperationBulkFaultFaultOnImport []ImportOperationBulkFaultFaultOnImport `xml:"ImportOperationBulkFaultFaultOnImport,omitempty"` -} - -func init() { - t["ArrayOfImportOperationBulkFaultFaultOnImport"] = reflect.TypeOf((*ArrayOfImportOperationBulkFaultFaultOnImport)(nil)).Elem() -} - -type ArrayOfImportSpec struct { - ImportSpec []BaseImportSpec `xml:"ImportSpec,omitempty,typeattr"` -} - -func init() { - t["ArrayOfImportSpec"] = reflect.TypeOf((*ArrayOfImportSpec)(nil)).Elem() -} - -type ArrayOfInt struct { - Int []int32 `xml:"int,omitempty"` -} - -func init() { - t["ArrayOfInt"] = reflect.TypeOf((*ArrayOfInt)(nil)).Elem() -} - -type ArrayOfIoFilterHostIssue struct { - IoFilterHostIssue []IoFilterHostIssue `xml:"IoFilterHostIssue,omitempty"` -} - -func init() { - t["ArrayOfIoFilterHostIssue"] = reflect.TypeOf((*ArrayOfIoFilterHostIssue)(nil)).Elem() -} - -type ArrayOfIpPool struct { - IpPool []IpPool `xml:"IpPool,omitempty"` -} - -func init() { - t["ArrayOfIpPool"] = reflect.TypeOf((*ArrayOfIpPool)(nil)).Elem() -} - -type ArrayOfIpPoolAssociation struct { - IpPoolAssociation []IpPoolAssociation `xml:"IpPoolAssociation,omitempty"` -} - -func init() { - t["ArrayOfIpPoolAssociation"] = reflect.TypeOf((*ArrayOfIpPoolAssociation)(nil)).Elem() -} - -type ArrayOfIpPoolManagerIpAllocation struct { - IpPoolManagerIpAllocation []IpPoolManagerIpAllocation `xml:"IpPoolManagerIpAllocation,omitempty"` -} - -func init() { - t["ArrayOfIpPoolManagerIpAllocation"] = reflect.TypeOf((*ArrayOfIpPoolManagerIpAllocation)(nil)).Elem() -} - -type ArrayOfIscsiDependencyEntity struct { - IscsiDependencyEntity []IscsiDependencyEntity `xml:"IscsiDependencyEntity,omitempty"` -} - -func init() { - t["ArrayOfIscsiDependencyEntity"] = reflect.TypeOf((*ArrayOfIscsiDependencyEntity)(nil)).Elem() -} - -type ArrayOfIscsiPortInfo struct { - IscsiPortInfo []IscsiPortInfo `xml:"IscsiPortInfo,omitempty"` -} - -func init() { - t["ArrayOfIscsiPortInfo"] = reflect.TypeOf((*ArrayOfIscsiPortInfo)(nil)).Elem() -} - -type ArrayOfKernelModuleInfo struct { - KernelModuleInfo []KernelModuleInfo `xml:"KernelModuleInfo,omitempty"` -} - -func init() { - t["ArrayOfKernelModuleInfo"] = reflect.TypeOf((*ArrayOfKernelModuleInfo)(nil)).Elem() -} - -type ArrayOfKeyAnyValue struct { - KeyAnyValue []KeyAnyValue `xml:"KeyAnyValue,omitempty"` -} - -func init() { - t["ArrayOfKeyAnyValue"] = reflect.TypeOf((*ArrayOfKeyAnyValue)(nil)).Elem() -} - -type ArrayOfKeyValue struct { - KeyValue []KeyValue `xml:"KeyValue,omitempty"` -} - -func init() { - t["ArrayOfKeyValue"] = reflect.TypeOf((*ArrayOfKeyValue)(nil)).Elem() -} - -type ArrayOfLicenseAssignmentManagerLicenseAssignment struct { - LicenseAssignmentManagerLicenseAssignment []LicenseAssignmentManagerLicenseAssignment `xml:"LicenseAssignmentManagerLicenseAssignment,omitempty"` -} - -func init() { - t["ArrayOfLicenseAssignmentManagerLicenseAssignment"] = reflect.TypeOf((*ArrayOfLicenseAssignmentManagerLicenseAssignment)(nil)).Elem() -} - -type ArrayOfLicenseAvailabilityInfo struct { - LicenseAvailabilityInfo []LicenseAvailabilityInfo `xml:"LicenseAvailabilityInfo,omitempty"` -} - -func init() { - t["ArrayOfLicenseAvailabilityInfo"] = reflect.TypeOf((*ArrayOfLicenseAvailabilityInfo)(nil)).Elem() -} - -type ArrayOfLicenseFeatureInfo struct { - LicenseFeatureInfo []LicenseFeatureInfo `xml:"LicenseFeatureInfo,omitempty"` -} - -func init() { - t["ArrayOfLicenseFeatureInfo"] = reflect.TypeOf((*ArrayOfLicenseFeatureInfo)(nil)).Elem() -} - -type ArrayOfLicenseManagerLicenseInfo struct { - LicenseManagerLicenseInfo []LicenseManagerLicenseInfo `xml:"LicenseManagerLicenseInfo,omitempty"` -} - -func init() { - t["ArrayOfLicenseManagerLicenseInfo"] = reflect.TypeOf((*ArrayOfLicenseManagerLicenseInfo)(nil)).Elem() -} - -type ArrayOfLicenseReservationInfo struct { - LicenseReservationInfo []LicenseReservationInfo `xml:"LicenseReservationInfo,omitempty"` -} - -func init() { - t["ArrayOfLicenseReservationInfo"] = reflect.TypeOf((*ArrayOfLicenseReservationInfo)(nil)).Elem() -} - -type ArrayOfLocalizableMessage struct { - LocalizableMessage []LocalizableMessage `xml:"LocalizableMessage,omitempty"` -} - -func init() { - t["ArrayOfLocalizableMessage"] = reflect.TypeOf((*ArrayOfLocalizableMessage)(nil)).Elem() -} - -type ArrayOfLocalizationManagerMessageCatalog struct { - LocalizationManagerMessageCatalog []LocalizationManagerMessageCatalog `xml:"LocalizationManagerMessageCatalog,omitempty"` -} - -func init() { - t["ArrayOfLocalizationManagerMessageCatalog"] = reflect.TypeOf((*ArrayOfLocalizationManagerMessageCatalog)(nil)).Elem() -} - -type ArrayOfLong struct { - Long []int64 `xml:"long,omitempty"` -} - -func init() { - t["ArrayOfLong"] = reflect.TypeOf((*ArrayOfLong)(nil)).Elem() -} - -type ArrayOfManagedObjectReference struct { - ManagedObjectReference []ManagedObjectReference `xml:"ManagedObjectReference,omitempty"` -} - -func init() { - t["ArrayOfManagedObjectReference"] = reflect.TypeOf((*ArrayOfManagedObjectReference)(nil)).Elem() -} - -type ArrayOfMethodActionArgument struct { - MethodActionArgument []MethodActionArgument `xml:"MethodActionArgument,omitempty"` -} - -func init() { - t["ArrayOfMethodActionArgument"] = reflect.TypeOf((*ArrayOfMethodActionArgument)(nil)).Elem() -} - -type ArrayOfMethodFault struct { - MethodFault []BaseMethodFault `xml:"MethodFault,omitempty,typeattr"` -} - -func init() { - t["ArrayOfMethodFault"] = reflect.TypeOf((*ArrayOfMethodFault)(nil)).Elem() -} - -type ArrayOfMissingObject struct { - MissingObject []MissingObject `xml:"MissingObject,omitempty"` -} - -func init() { - t["ArrayOfMissingObject"] = reflect.TypeOf((*ArrayOfMissingObject)(nil)).Elem() -} - -type ArrayOfMissingProperty struct { - MissingProperty []MissingProperty `xml:"MissingProperty,omitempty"` -} - -func init() { - t["ArrayOfMissingProperty"] = reflect.TypeOf((*ArrayOfMissingProperty)(nil)).Elem() -} - -type ArrayOfMultipleCertificatesVerifyFaultThumbprintData struct { - MultipleCertificatesVerifyFaultThumbprintData []MultipleCertificatesVerifyFaultThumbprintData `xml:"MultipleCertificatesVerifyFaultThumbprintData,omitempty"` -} - -func init() { - t["ArrayOfMultipleCertificatesVerifyFaultThumbprintData"] = reflect.TypeOf((*ArrayOfMultipleCertificatesVerifyFaultThumbprintData)(nil)).Elem() -} - -type ArrayOfNasStorageProfile struct { - NasStorageProfile []NasStorageProfile `xml:"NasStorageProfile,omitempty"` -} - -func init() { - t["ArrayOfNasStorageProfile"] = reflect.TypeOf((*ArrayOfNasStorageProfile)(nil)).Elem() -} - -type ArrayOfNetIpConfigInfoIpAddress struct { - NetIpConfigInfoIpAddress []NetIpConfigInfoIpAddress `xml:"NetIpConfigInfoIpAddress,omitempty"` -} - -func init() { - t["ArrayOfNetIpConfigInfoIpAddress"] = reflect.TypeOf((*ArrayOfNetIpConfigInfoIpAddress)(nil)).Elem() -} - -type ArrayOfNetIpConfigSpecIpAddressSpec struct { - NetIpConfigSpecIpAddressSpec []NetIpConfigSpecIpAddressSpec `xml:"NetIpConfigSpecIpAddressSpec,omitempty"` -} - -func init() { - t["ArrayOfNetIpConfigSpecIpAddressSpec"] = reflect.TypeOf((*ArrayOfNetIpConfigSpecIpAddressSpec)(nil)).Elem() -} - -type ArrayOfNetIpRouteConfigInfoIpRoute struct { - NetIpRouteConfigInfoIpRoute []NetIpRouteConfigInfoIpRoute `xml:"NetIpRouteConfigInfoIpRoute,omitempty"` -} - -func init() { - t["ArrayOfNetIpRouteConfigInfoIpRoute"] = reflect.TypeOf((*ArrayOfNetIpRouteConfigInfoIpRoute)(nil)).Elem() -} - -type ArrayOfNetIpRouteConfigSpecIpRouteSpec struct { - NetIpRouteConfigSpecIpRouteSpec []NetIpRouteConfigSpecIpRouteSpec `xml:"NetIpRouteConfigSpecIpRouteSpec,omitempty"` -} - -func init() { - t["ArrayOfNetIpRouteConfigSpecIpRouteSpec"] = reflect.TypeOf((*ArrayOfNetIpRouteConfigSpecIpRouteSpec)(nil)).Elem() -} - -type ArrayOfNetIpStackInfoDefaultRouter struct { - NetIpStackInfoDefaultRouter []NetIpStackInfoDefaultRouter `xml:"NetIpStackInfoDefaultRouter,omitempty"` -} - -func init() { - t["ArrayOfNetIpStackInfoDefaultRouter"] = reflect.TypeOf((*ArrayOfNetIpStackInfoDefaultRouter)(nil)).Elem() -} - -type ArrayOfNetIpStackInfoNetToMedia struct { - NetIpStackInfoNetToMedia []NetIpStackInfoNetToMedia `xml:"NetIpStackInfoNetToMedia,omitempty"` -} - -func init() { - t["ArrayOfNetIpStackInfoNetToMedia"] = reflect.TypeOf((*ArrayOfNetIpStackInfoNetToMedia)(nil)).Elem() -} - -type ArrayOfNetStackInstanceProfile struct { - NetStackInstanceProfile []NetStackInstanceProfile `xml:"NetStackInstanceProfile,omitempty"` -} - -func init() { - t["ArrayOfNetStackInstanceProfile"] = reflect.TypeOf((*ArrayOfNetStackInstanceProfile)(nil)).Elem() -} - -type ArrayOfNumericRange struct { - NumericRange []NumericRange `xml:"NumericRange,omitempty"` -} - -func init() { - t["ArrayOfNumericRange"] = reflect.TypeOf((*ArrayOfNumericRange)(nil)).Elem() -} - -type ArrayOfObjectContent struct { - ObjectContent []ObjectContent `xml:"ObjectContent,omitempty"` -} - -func init() { - t["ArrayOfObjectContent"] = reflect.TypeOf((*ArrayOfObjectContent)(nil)).Elem() -} - -type ArrayOfObjectSpec struct { - ObjectSpec []ObjectSpec `xml:"ObjectSpec,omitempty"` -} - -func init() { - t["ArrayOfObjectSpec"] = reflect.TypeOf((*ArrayOfObjectSpec)(nil)).Elem() -} - -type ArrayOfObjectUpdate struct { - ObjectUpdate []ObjectUpdate `xml:"ObjectUpdate,omitempty"` -} - -func init() { - t["ArrayOfObjectUpdate"] = reflect.TypeOf((*ArrayOfObjectUpdate)(nil)).Elem() -} - -type ArrayOfOpaqueNetworkTargetInfo struct { - OpaqueNetworkTargetInfo []OpaqueNetworkTargetInfo `xml:"OpaqueNetworkTargetInfo,omitempty"` -} - -func init() { - t["ArrayOfOpaqueNetworkTargetInfo"] = reflect.TypeOf((*ArrayOfOpaqueNetworkTargetInfo)(nil)).Elem() -} - -type ArrayOfOptionDef struct { - OptionDef []OptionDef `xml:"OptionDef,omitempty"` -} - -func init() { - t["ArrayOfOptionDef"] = reflect.TypeOf((*ArrayOfOptionDef)(nil)).Elem() -} - -type ArrayOfOptionProfile struct { - OptionProfile []OptionProfile `xml:"OptionProfile,omitempty"` -} - -func init() { - t["ArrayOfOptionProfile"] = reflect.TypeOf((*ArrayOfOptionProfile)(nil)).Elem() -} - -type ArrayOfOptionValue struct { - OptionValue []BaseOptionValue `xml:"OptionValue,omitempty,typeattr"` -} - -func init() { - t["ArrayOfOptionValue"] = reflect.TypeOf((*ArrayOfOptionValue)(nil)).Elem() -} - -type ArrayOfOvfConsumerOstNode struct { - OvfConsumerOstNode []OvfConsumerOstNode `xml:"OvfConsumerOstNode,omitempty"` -} - -func init() { - t["ArrayOfOvfConsumerOstNode"] = reflect.TypeOf((*ArrayOfOvfConsumerOstNode)(nil)).Elem() -} - -type ArrayOfOvfConsumerOvfSection struct { - OvfConsumerOvfSection []OvfConsumerOvfSection `xml:"OvfConsumerOvfSection,omitempty"` -} - -func init() { - t["ArrayOfOvfConsumerOvfSection"] = reflect.TypeOf((*ArrayOfOvfConsumerOvfSection)(nil)).Elem() -} - -type ArrayOfOvfDeploymentOption struct { - OvfDeploymentOption []OvfDeploymentOption `xml:"OvfDeploymentOption,omitempty"` -} - -func init() { - t["ArrayOfOvfDeploymentOption"] = reflect.TypeOf((*ArrayOfOvfDeploymentOption)(nil)).Elem() -} - -type ArrayOfOvfFile struct { - OvfFile []OvfFile `xml:"OvfFile,omitempty"` -} - -func init() { - t["ArrayOfOvfFile"] = reflect.TypeOf((*ArrayOfOvfFile)(nil)).Elem() -} - -type ArrayOfOvfFileItem struct { - OvfFileItem []OvfFileItem `xml:"OvfFileItem,omitempty"` -} - -func init() { - t["ArrayOfOvfFileItem"] = reflect.TypeOf((*ArrayOfOvfFileItem)(nil)).Elem() -} - -type ArrayOfOvfNetworkInfo struct { - OvfNetworkInfo []OvfNetworkInfo `xml:"OvfNetworkInfo,omitempty"` -} - -func init() { - t["ArrayOfOvfNetworkInfo"] = reflect.TypeOf((*ArrayOfOvfNetworkInfo)(nil)).Elem() -} - -type ArrayOfOvfNetworkMapping struct { - OvfNetworkMapping []OvfNetworkMapping `xml:"OvfNetworkMapping,omitempty"` -} - -func init() { - t["ArrayOfOvfNetworkMapping"] = reflect.TypeOf((*ArrayOfOvfNetworkMapping)(nil)).Elem() -} - -type ArrayOfOvfOptionInfo struct { - OvfOptionInfo []OvfOptionInfo `xml:"OvfOptionInfo,omitempty"` -} - -func init() { - t["ArrayOfOvfOptionInfo"] = reflect.TypeOf((*ArrayOfOvfOptionInfo)(nil)).Elem() -} - -type ArrayOfOvfResourceMap struct { - OvfResourceMap []OvfResourceMap `xml:"OvfResourceMap,omitempty"` -} - -func init() { - t["ArrayOfOvfResourceMap"] = reflect.TypeOf((*ArrayOfOvfResourceMap)(nil)).Elem() -} - -type ArrayOfPerfCounterInfo struct { - PerfCounterInfo []PerfCounterInfo `xml:"PerfCounterInfo,omitempty"` -} - -func init() { - t["ArrayOfPerfCounterInfo"] = reflect.TypeOf((*ArrayOfPerfCounterInfo)(nil)).Elem() -} - -type ArrayOfPerfEntityMetricBase struct { - PerfEntityMetricBase []BasePerfEntityMetricBase `xml:"PerfEntityMetricBase,omitempty,typeattr"` -} - -func init() { - t["ArrayOfPerfEntityMetricBase"] = reflect.TypeOf((*ArrayOfPerfEntityMetricBase)(nil)).Elem() -} - -type ArrayOfPerfInterval struct { - PerfInterval []PerfInterval `xml:"PerfInterval,omitempty"` -} - -func init() { - t["ArrayOfPerfInterval"] = reflect.TypeOf((*ArrayOfPerfInterval)(nil)).Elem() -} - -type ArrayOfPerfMetricId struct { - PerfMetricId []PerfMetricId `xml:"PerfMetricId,omitempty"` -} - -func init() { - t["ArrayOfPerfMetricId"] = reflect.TypeOf((*ArrayOfPerfMetricId)(nil)).Elem() -} - -type ArrayOfPerfMetricSeries struct { - PerfMetricSeries []BasePerfMetricSeries `xml:"PerfMetricSeries,omitempty,typeattr"` -} - -func init() { - t["ArrayOfPerfMetricSeries"] = reflect.TypeOf((*ArrayOfPerfMetricSeries)(nil)).Elem() -} - -type ArrayOfPerfMetricSeriesCSV struct { - PerfMetricSeriesCSV []PerfMetricSeriesCSV `xml:"PerfMetricSeriesCSV,omitempty"` -} - -func init() { - t["ArrayOfPerfMetricSeriesCSV"] = reflect.TypeOf((*ArrayOfPerfMetricSeriesCSV)(nil)).Elem() -} - -type ArrayOfPerfQuerySpec struct { - PerfQuerySpec []PerfQuerySpec `xml:"PerfQuerySpec,omitempty"` -} - -func init() { - t["ArrayOfPerfQuerySpec"] = reflect.TypeOf((*ArrayOfPerfQuerySpec)(nil)).Elem() -} - -type ArrayOfPerfSampleInfo struct { - PerfSampleInfo []PerfSampleInfo `xml:"PerfSampleInfo,omitempty"` -} - -func init() { - t["ArrayOfPerfSampleInfo"] = reflect.TypeOf((*ArrayOfPerfSampleInfo)(nil)).Elem() -} - -type ArrayOfPerformanceManagerCounterLevelMapping struct { - PerformanceManagerCounterLevelMapping []PerformanceManagerCounterLevelMapping `xml:"PerformanceManagerCounterLevelMapping,omitempty"` -} - -func init() { - t["ArrayOfPerformanceManagerCounterLevelMapping"] = reflect.TypeOf((*ArrayOfPerformanceManagerCounterLevelMapping)(nil)).Elem() -} - -type ArrayOfPermission struct { - Permission []Permission `xml:"Permission,omitempty"` -} - -func init() { - t["ArrayOfPermission"] = reflect.TypeOf((*ArrayOfPermission)(nil)).Elem() -} - -type ArrayOfPermissionProfile struct { - PermissionProfile []PermissionProfile `xml:"PermissionProfile,omitempty"` -} - -func init() { - t["ArrayOfPermissionProfile"] = reflect.TypeOf((*ArrayOfPermissionProfile)(nil)).Elem() -} - -type ArrayOfPhysicalNic struct { - PhysicalNic []PhysicalNic `xml:"PhysicalNic,omitempty"` -} - -func init() { - t["ArrayOfPhysicalNic"] = reflect.TypeOf((*ArrayOfPhysicalNic)(nil)).Elem() -} - -type ArrayOfPhysicalNicConfig struct { - PhysicalNicConfig []PhysicalNicConfig `xml:"PhysicalNicConfig,omitempty"` -} - -func init() { - t["ArrayOfPhysicalNicConfig"] = reflect.TypeOf((*ArrayOfPhysicalNicConfig)(nil)).Elem() -} - -type ArrayOfPhysicalNicHintInfo struct { - PhysicalNicHintInfo []PhysicalNicHintInfo `xml:"PhysicalNicHintInfo,omitempty"` -} - -func init() { - t["ArrayOfPhysicalNicHintInfo"] = reflect.TypeOf((*ArrayOfPhysicalNicHintInfo)(nil)).Elem() -} - -type ArrayOfPhysicalNicIpHint struct { - PhysicalNicIpHint []PhysicalNicIpHint `xml:"PhysicalNicIpHint,omitempty"` -} - -func init() { - t["ArrayOfPhysicalNicIpHint"] = reflect.TypeOf((*ArrayOfPhysicalNicIpHint)(nil)).Elem() -} - -type ArrayOfPhysicalNicLinkInfo struct { - PhysicalNicLinkInfo []PhysicalNicLinkInfo `xml:"PhysicalNicLinkInfo,omitempty"` -} - -func init() { - t["ArrayOfPhysicalNicLinkInfo"] = reflect.TypeOf((*ArrayOfPhysicalNicLinkInfo)(nil)).Elem() -} - -type ArrayOfPhysicalNicNameHint struct { - PhysicalNicNameHint []PhysicalNicNameHint `xml:"PhysicalNicNameHint,omitempty"` -} - -func init() { - t["ArrayOfPhysicalNicNameHint"] = reflect.TypeOf((*ArrayOfPhysicalNicNameHint)(nil)).Elem() -} - -type ArrayOfPhysicalNicProfile struct { - PhysicalNicProfile []PhysicalNicProfile `xml:"PhysicalNicProfile,omitempty"` -} - -func init() { - t["ArrayOfPhysicalNicProfile"] = reflect.TypeOf((*ArrayOfPhysicalNicProfile)(nil)).Elem() -} - -type ArrayOfPlacementAffinityRule struct { - PlacementAffinityRule []PlacementAffinityRule `xml:"PlacementAffinityRule,omitempty"` -} - -func init() { - t["ArrayOfPlacementAffinityRule"] = reflect.TypeOf((*ArrayOfPlacementAffinityRule)(nil)).Elem() -} - -type ArrayOfPlacementSpec struct { - PlacementSpec []PlacementSpec `xml:"PlacementSpec,omitempty"` -} - -func init() { - t["ArrayOfPlacementSpec"] = reflect.TypeOf((*ArrayOfPlacementSpec)(nil)).Elem() -} - -type ArrayOfPnicUplinkProfile struct { - PnicUplinkProfile []PnicUplinkProfile `xml:"PnicUplinkProfile,omitempty"` -} - -func init() { - t["ArrayOfPnicUplinkProfile"] = reflect.TypeOf((*ArrayOfPnicUplinkProfile)(nil)).Elem() -} - -type ArrayOfPodDiskLocator struct { - PodDiskLocator []PodDiskLocator `xml:"PodDiskLocator,omitempty"` -} - -func init() { - t["ArrayOfPodDiskLocator"] = reflect.TypeOf((*ArrayOfPodDiskLocator)(nil)).Elem() -} - -type ArrayOfPolicyOption struct { - PolicyOption []BasePolicyOption `xml:"PolicyOption,omitempty,typeattr"` -} - -func init() { - t["ArrayOfPolicyOption"] = reflect.TypeOf((*ArrayOfPolicyOption)(nil)).Elem() -} - -type ArrayOfPrivilegeAvailability struct { - PrivilegeAvailability []PrivilegeAvailability `xml:"PrivilegeAvailability,omitempty"` -} - -func init() { - t["ArrayOfPrivilegeAvailability"] = reflect.TypeOf((*ArrayOfPrivilegeAvailability)(nil)).Elem() -} - -type ArrayOfProductComponentInfo struct { - ProductComponentInfo []ProductComponentInfo `xml:"ProductComponentInfo,omitempty"` -} - -func init() { - t["ArrayOfProductComponentInfo"] = reflect.TypeOf((*ArrayOfProductComponentInfo)(nil)).Elem() -} - -type ArrayOfProfileApplyProfileProperty struct { - ProfileApplyProfileProperty []ProfileApplyProfileProperty `xml:"ProfileApplyProfileProperty,omitempty"` -} - -func init() { - t["ArrayOfProfileApplyProfileProperty"] = reflect.TypeOf((*ArrayOfProfileApplyProfileProperty)(nil)).Elem() -} - -type ArrayOfProfileDeferredPolicyOptionParameter struct { - ProfileDeferredPolicyOptionParameter []ProfileDeferredPolicyOptionParameter `xml:"ProfileDeferredPolicyOptionParameter,omitempty"` -} - -func init() { - t["ArrayOfProfileDeferredPolicyOptionParameter"] = reflect.TypeOf((*ArrayOfProfileDeferredPolicyOptionParameter)(nil)).Elem() -} - -type ArrayOfProfileDescriptionSection struct { - ProfileDescriptionSection []ProfileDescriptionSection `xml:"ProfileDescriptionSection,omitempty"` -} - -func init() { - t["ArrayOfProfileDescriptionSection"] = reflect.TypeOf((*ArrayOfProfileDescriptionSection)(nil)).Elem() -} - -type ArrayOfProfileExecuteError struct { - ProfileExecuteError []ProfileExecuteError `xml:"ProfileExecuteError,omitempty"` -} - -func init() { - t["ArrayOfProfileExecuteError"] = reflect.TypeOf((*ArrayOfProfileExecuteError)(nil)).Elem() -} - -type ArrayOfProfileExpression struct { - ProfileExpression []BaseProfileExpression `xml:"ProfileExpression,omitempty,typeattr"` -} - -func init() { - t["ArrayOfProfileExpression"] = reflect.TypeOf((*ArrayOfProfileExpression)(nil)).Elem() -} - -type ArrayOfProfileExpressionMetadata struct { - ProfileExpressionMetadata []ProfileExpressionMetadata `xml:"ProfileExpressionMetadata,omitempty"` -} - -func init() { - t["ArrayOfProfileExpressionMetadata"] = reflect.TypeOf((*ArrayOfProfileExpressionMetadata)(nil)).Elem() -} - -type ArrayOfProfileMetadata struct { - ProfileMetadata []ProfileMetadata `xml:"ProfileMetadata,omitempty"` -} - -func init() { - t["ArrayOfProfileMetadata"] = reflect.TypeOf((*ArrayOfProfileMetadata)(nil)).Elem() -} - -type ArrayOfProfileMetadataProfileSortSpec struct { - ProfileMetadataProfileSortSpec []ProfileMetadataProfileSortSpec `xml:"ProfileMetadataProfileSortSpec,omitempty"` -} - -func init() { - t["ArrayOfProfileMetadataProfileSortSpec"] = reflect.TypeOf((*ArrayOfProfileMetadataProfileSortSpec)(nil)).Elem() -} - -type ArrayOfProfileParameterMetadata struct { - ProfileParameterMetadata []ProfileParameterMetadata `xml:"ProfileParameterMetadata,omitempty"` -} - -func init() { - t["ArrayOfProfileParameterMetadata"] = reflect.TypeOf((*ArrayOfProfileParameterMetadata)(nil)).Elem() -} - -type ArrayOfProfilePolicy struct { - ProfilePolicy []ProfilePolicy `xml:"ProfilePolicy,omitempty"` -} - -func init() { - t["ArrayOfProfilePolicy"] = reflect.TypeOf((*ArrayOfProfilePolicy)(nil)).Elem() -} - -type ArrayOfProfilePolicyMetadata struct { - ProfilePolicyMetadata []ProfilePolicyMetadata `xml:"ProfilePolicyMetadata,omitempty"` -} - -func init() { - t["ArrayOfProfilePolicyMetadata"] = reflect.TypeOf((*ArrayOfProfilePolicyMetadata)(nil)).Elem() -} - -type ArrayOfProfilePolicyOptionMetadata struct { - ProfilePolicyOptionMetadata []BaseProfilePolicyOptionMetadata `xml:"ProfilePolicyOptionMetadata,omitempty,typeattr"` -} - -func init() { - t["ArrayOfProfilePolicyOptionMetadata"] = reflect.TypeOf((*ArrayOfProfilePolicyOptionMetadata)(nil)).Elem() -} - -type ArrayOfProfileProfileStructureProperty struct { - ProfileProfileStructureProperty []ProfileProfileStructureProperty `xml:"ProfileProfileStructureProperty,omitempty"` -} - -func init() { - t["ArrayOfProfileProfileStructureProperty"] = reflect.TypeOf((*ArrayOfProfileProfileStructureProperty)(nil)).Elem() -} - -type ArrayOfProfilePropertyPath struct { - ProfilePropertyPath []ProfilePropertyPath `xml:"ProfilePropertyPath,omitempty"` -} - -func init() { - t["ArrayOfProfilePropertyPath"] = reflect.TypeOf((*ArrayOfProfilePropertyPath)(nil)).Elem() -} - -type ArrayOfProfileUpdateFailedUpdateFailure struct { - ProfileUpdateFailedUpdateFailure []ProfileUpdateFailedUpdateFailure `xml:"ProfileUpdateFailedUpdateFailure,omitempty"` -} - -func init() { - t["ArrayOfProfileUpdateFailedUpdateFailure"] = reflect.TypeOf((*ArrayOfProfileUpdateFailedUpdateFailure)(nil)).Elem() -} - -type ArrayOfPropertyChange struct { - PropertyChange []PropertyChange `xml:"PropertyChange,omitempty"` -} - -func init() { - t["ArrayOfPropertyChange"] = reflect.TypeOf((*ArrayOfPropertyChange)(nil)).Elem() -} - -type ArrayOfPropertyFilterSpec struct { - PropertyFilterSpec []PropertyFilterSpec `xml:"PropertyFilterSpec,omitempty"` -} - -func init() { - t["ArrayOfPropertyFilterSpec"] = reflect.TypeOf((*ArrayOfPropertyFilterSpec)(nil)).Elem() -} - -type ArrayOfPropertyFilterUpdate struct { - PropertyFilterUpdate []PropertyFilterUpdate `xml:"PropertyFilterUpdate,omitempty"` -} - -func init() { - t["ArrayOfPropertyFilterUpdate"] = reflect.TypeOf((*ArrayOfPropertyFilterUpdate)(nil)).Elem() -} - -type ArrayOfPropertySpec struct { - PropertySpec []PropertySpec `xml:"PropertySpec,omitempty"` -} - -func init() { - t["ArrayOfPropertySpec"] = reflect.TypeOf((*ArrayOfPropertySpec)(nil)).Elem() -} - -type ArrayOfReplicationInfoDiskSettings struct { - ReplicationInfoDiskSettings []ReplicationInfoDiskSettings `xml:"ReplicationInfoDiskSettings,omitempty"` -} - -func init() { - t["ArrayOfReplicationInfoDiskSettings"] = reflect.TypeOf((*ArrayOfReplicationInfoDiskSettings)(nil)).Elem() -} - -type ArrayOfResourceConfigSpec struct { - ResourceConfigSpec []ResourceConfigSpec `xml:"ResourceConfigSpec,omitempty"` -} - -func init() { - t["ArrayOfResourceConfigSpec"] = reflect.TypeOf((*ArrayOfResourceConfigSpec)(nil)).Elem() -} - -type ArrayOfScheduledTaskDetail struct { - ScheduledTaskDetail []ScheduledTaskDetail `xml:"ScheduledTaskDetail,omitempty"` -} - -func init() { - t["ArrayOfScheduledTaskDetail"] = reflect.TypeOf((*ArrayOfScheduledTaskDetail)(nil)).Elem() -} - -type ArrayOfScsiLun struct { - ScsiLun []BaseScsiLun `xml:"ScsiLun,omitempty,typeattr"` -} - -func init() { - t["ArrayOfScsiLun"] = reflect.TypeOf((*ArrayOfScsiLun)(nil)).Elem() -} - -type ArrayOfScsiLunDescriptor struct { - ScsiLunDescriptor []ScsiLunDescriptor `xml:"ScsiLunDescriptor,omitempty"` -} - -func init() { - t["ArrayOfScsiLunDescriptor"] = reflect.TypeOf((*ArrayOfScsiLunDescriptor)(nil)).Elem() -} - -type ArrayOfScsiLunDurableName struct { - ScsiLunDurableName []ScsiLunDurableName `xml:"ScsiLunDurableName,omitempty"` -} - -func init() { - t["ArrayOfScsiLunDurableName"] = reflect.TypeOf((*ArrayOfScsiLunDurableName)(nil)).Elem() -} - -type ArrayOfSelectionSet struct { - SelectionSet []BaseSelectionSet `xml:"SelectionSet,omitempty,typeattr"` -} - -func init() { - t["ArrayOfSelectionSet"] = reflect.TypeOf((*ArrayOfSelectionSet)(nil)).Elem() -} - -type ArrayOfSelectionSpec struct { - SelectionSpec []BaseSelectionSpec `xml:"SelectionSpec,omitempty,typeattr"` -} - -func init() { - t["ArrayOfSelectionSpec"] = reflect.TypeOf((*ArrayOfSelectionSpec)(nil)).Elem() -} - -type ArrayOfServiceConsolePortGroupProfile struct { - ServiceConsolePortGroupProfile []ServiceConsolePortGroupProfile `xml:"ServiceConsolePortGroupProfile,omitempty"` -} - -func init() { - t["ArrayOfServiceConsolePortGroupProfile"] = reflect.TypeOf((*ArrayOfServiceConsolePortGroupProfile)(nil)).Elem() -} - -type ArrayOfServiceLocator struct { - ServiceLocator []ServiceLocator `xml:"ServiceLocator,omitempty"` -} - -func init() { - t["ArrayOfServiceLocator"] = reflect.TypeOf((*ArrayOfServiceLocator)(nil)).Elem() -} - -type ArrayOfServiceManagerServiceInfo struct { - ServiceManagerServiceInfo []ServiceManagerServiceInfo `xml:"ServiceManagerServiceInfo,omitempty"` -} - -func init() { - t["ArrayOfServiceManagerServiceInfo"] = reflect.TypeOf((*ArrayOfServiceManagerServiceInfo)(nil)).Elem() -} - -type ArrayOfServiceProfile struct { - ServiceProfile []ServiceProfile `xml:"ServiceProfile,omitempty"` -} - -func init() { - t["ArrayOfServiceProfile"] = reflect.TypeOf((*ArrayOfServiceProfile)(nil)).Elem() -} - -type ArrayOfShort struct { - Short []int16 `xml:"short,omitempty"` -} - -func init() { - t["ArrayOfShort"] = reflect.TypeOf((*ArrayOfShort)(nil)).Elem() -} - -type ArrayOfStaticRouteProfile struct { - StaticRouteProfile []StaticRouteProfile `xml:"StaticRouteProfile,omitempty"` -} - -func init() { - t["ArrayOfStaticRouteProfile"] = reflect.TypeOf((*ArrayOfStaticRouteProfile)(nil)).Elem() -} - -type ArrayOfStorageDrsOptionSpec struct { - StorageDrsOptionSpec []StorageDrsOptionSpec `xml:"StorageDrsOptionSpec,omitempty"` -} - -func init() { - t["ArrayOfStorageDrsOptionSpec"] = reflect.TypeOf((*ArrayOfStorageDrsOptionSpec)(nil)).Elem() -} - -type ArrayOfStorageDrsPlacementRankVmSpec struct { - StorageDrsPlacementRankVmSpec []StorageDrsPlacementRankVmSpec `xml:"StorageDrsPlacementRankVmSpec,omitempty"` -} - -func init() { - t["ArrayOfStorageDrsPlacementRankVmSpec"] = reflect.TypeOf((*ArrayOfStorageDrsPlacementRankVmSpec)(nil)).Elem() -} - -type ArrayOfStorageDrsVmConfigInfo struct { - StorageDrsVmConfigInfo []StorageDrsVmConfigInfo `xml:"StorageDrsVmConfigInfo,omitempty"` -} - -func init() { - t["ArrayOfStorageDrsVmConfigInfo"] = reflect.TypeOf((*ArrayOfStorageDrsVmConfigInfo)(nil)).Elem() -} - -type ArrayOfStorageDrsVmConfigSpec struct { - StorageDrsVmConfigSpec []StorageDrsVmConfigSpec `xml:"StorageDrsVmConfigSpec,omitempty"` -} - -func init() { - t["ArrayOfStorageDrsVmConfigSpec"] = reflect.TypeOf((*ArrayOfStorageDrsVmConfigSpec)(nil)).Elem() -} - -type ArrayOfStoragePerformanceSummary struct { - StoragePerformanceSummary []StoragePerformanceSummary `xml:"StoragePerformanceSummary,omitempty"` -} - -func init() { - t["ArrayOfStoragePerformanceSummary"] = reflect.TypeOf((*ArrayOfStoragePerformanceSummary)(nil)).Elem() -} - -type ArrayOfStorageRequirement struct { - StorageRequirement []StorageRequirement `xml:"StorageRequirement,omitempty"` -} - -func init() { - t["ArrayOfStorageRequirement"] = reflect.TypeOf((*ArrayOfStorageRequirement)(nil)).Elem() -} - -type ArrayOfString struct { - String []string `xml:"string,omitempty"` -} - -func init() { - t["ArrayOfString"] = reflect.TypeOf((*ArrayOfString)(nil)).Elem() -} - -type ArrayOfTag struct { - Tag []Tag `xml:"Tag,omitempty"` -} - -func init() { - t["ArrayOfTag"] = reflect.TypeOf((*ArrayOfTag)(nil)).Elem() -} - -type ArrayOfTaskInfo struct { - TaskInfo []TaskInfo `xml:"TaskInfo,omitempty"` -} - -func init() { - t["ArrayOfTaskInfo"] = reflect.TypeOf((*ArrayOfTaskInfo)(nil)).Elem() -} - -type ArrayOfTaskInfoState struct { - TaskInfoState []TaskInfoState `xml:"TaskInfoState,omitempty"` -} - -func init() { - t["ArrayOfTaskInfoState"] = reflect.TypeOf((*ArrayOfTaskInfoState)(nil)).Elem() -} - -type ArrayOfTypeDescription struct { - TypeDescription []BaseTypeDescription `xml:"TypeDescription,omitempty,typeattr"` -} - -func init() { - t["ArrayOfTypeDescription"] = reflect.TypeOf((*ArrayOfTypeDescription)(nil)).Elem() -} - -type ArrayOfUpdateVirtualMachineFilesResultFailedVmFileInfo struct { - UpdateVirtualMachineFilesResultFailedVmFileInfo []UpdateVirtualMachineFilesResultFailedVmFileInfo `xml:"UpdateVirtualMachineFilesResultFailedVmFileInfo,omitempty"` -} - -func init() { - t["ArrayOfUpdateVirtualMachineFilesResultFailedVmFileInfo"] = reflect.TypeOf((*ArrayOfUpdateVirtualMachineFilesResultFailedVmFileInfo)(nil)).Elem() -} - -type ArrayOfUserGroupProfile struct { - UserGroupProfile []UserGroupProfile `xml:"UserGroupProfile,omitempty"` -} - -func init() { - t["ArrayOfUserGroupProfile"] = reflect.TypeOf((*ArrayOfUserGroupProfile)(nil)).Elem() -} - -type ArrayOfUserProfile struct { - UserProfile []UserProfile `xml:"UserProfile,omitempty"` -} - -func init() { - t["ArrayOfUserProfile"] = reflect.TypeOf((*ArrayOfUserProfile)(nil)).Elem() -} - -type ArrayOfUserSearchResult struct { - UserSearchResult []BaseUserSearchResult `xml:"UserSearchResult,omitempty,typeattr"` -} - -func init() { - t["ArrayOfUserSearchResult"] = reflect.TypeOf((*ArrayOfUserSearchResult)(nil)).Elem() -} - -type ArrayOfUserSession struct { - UserSession []UserSession `xml:"UserSession,omitempty"` -} - -func init() { - t["ArrayOfUserSession"] = reflect.TypeOf((*ArrayOfUserSession)(nil)).Elem() -} - -type ArrayOfVASAStorageArray struct { - VASAStorageArray []VASAStorageArray `xml:"VASAStorageArray,omitempty"` -} - -func init() { - t["ArrayOfVASAStorageArray"] = reflect.TypeOf((*ArrayOfVASAStorageArray)(nil)).Elem() -} - -type ArrayOfVAppCloneSpecNetworkMappingPair struct { - VAppCloneSpecNetworkMappingPair []VAppCloneSpecNetworkMappingPair `xml:"VAppCloneSpecNetworkMappingPair,omitempty"` -} - -func init() { - t["ArrayOfVAppCloneSpecNetworkMappingPair"] = reflect.TypeOf((*ArrayOfVAppCloneSpecNetworkMappingPair)(nil)).Elem() -} - -type ArrayOfVAppCloneSpecResourceMap struct { - VAppCloneSpecResourceMap []VAppCloneSpecResourceMap `xml:"VAppCloneSpecResourceMap,omitempty"` -} - -func init() { - t["ArrayOfVAppCloneSpecResourceMap"] = reflect.TypeOf((*ArrayOfVAppCloneSpecResourceMap)(nil)).Elem() -} - -type ArrayOfVAppEntityConfigInfo struct { - VAppEntityConfigInfo []VAppEntityConfigInfo `xml:"VAppEntityConfigInfo,omitempty"` -} - -func init() { - t["ArrayOfVAppEntityConfigInfo"] = reflect.TypeOf((*ArrayOfVAppEntityConfigInfo)(nil)).Elem() -} - -type ArrayOfVAppOvfSectionInfo struct { - VAppOvfSectionInfo []VAppOvfSectionInfo `xml:"VAppOvfSectionInfo,omitempty"` -} - -func init() { - t["ArrayOfVAppOvfSectionInfo"] = reflect.TypeOf((*ArrayOfVAppOvfSectionInfo)(nil)).Elem() -} - -type ArrayOfVAppOvfSectionSpec struct { - VAppOvfSectionSpec []VAppOvfSectionSpec `xml:"VAppOvfSectionSpec,omitempty"` -} - -func init() { - t["ArrayOfVAppOvfSectionSpec"] = reflect.TypeOf((*ArrayOfVAppOvfSectionSpec)(nil)).Elem() -} - -type ArrayOfVAppProductInfo struct { - VAppProductInfo []VAppProductInfo `xml:"VAppProductInfo,omitempty"` -} - -func init() { - t["ArrayOfVAppProductInfo"] = reflect.TypeOf((*ArrayOfVAppProductInfo)(nil)).Elem() -} - -type ArrayOfVAppProductSpec struct { - VAppProductSpec []VAppProductSpec `xml:"VAppProductSpec,omitempty"` -} - -func init() { - t["ArrayOfVAppProductSpec"] = reflect.TypeOf((*ArrayOfVAppProductSpec)(nil)).Elem() -} - -type ArrayOfVAppPropertyInfo struct { - VAppPropertyInfo []VAppPropertyInfo `xml:"VAppPropertyInfo,omitempty"` -} - -func init() { - t["ArrayOfVAppPropertyInfo"] = reflect.TypeOf((*ArrayOfVAppPropertyInfo)(nil)).Elem() -} - -type ArrayOfVAppPropertySpec struct { - VAppPropertySpec []VAppPropertySpec `xml:"VAppPropertySpec,omitempty"` -} - -func init() { - t["ArrayOfVAppPropertySpec"] = reflect.TypeOf((*ArrayOfVAppPropertySpec)(nil)).Elem() -} - -type ArrayOfVMwareDVSPvlanConfigSpec struct { - VMwareDVSPvlanConfigSpec []VMwareDVSPvlanConfigSpec `xml:"VMwareDVSPvlanConfigSpec,omitempty"` -} - -func init() { - t["ArrayOfVMwareDVSPvlanConfigSpec"] = reflect.TypeOf((*ArrayOfVMwareDVSPvlanConfigSpec)(nil)).Elem() -} - -type ArrayOfVMwareDVSPvlanMapEntry struct { - VMwareDVSPvlanMapEntry []VMwareDVSPvlanMapEntry `xml:"VMwareDVSPvlanMapEntry,omitempty"` -} - -func init() { - t["ArrayOfVMwareDVSPvlanMapEntry"] = reflect.TypeOf((*ArrayOfVMwareDVSPvlanMapEntry)(nil)).Elem() -} - -type ArrayOfVMwareDVSVspanConfigSpec struct { - VMwareDVSVspanConfigSpec []VMwareDVSVspanConfigSpec `xml:"VMwareDVSVspanConfigSpec,omitempty"` -} - -func init() { - t["ArrayOfVMwareDVSVspanConfigSpec"] = reflect.TypeOf((*ArrayOfVMwareDVSVspanConfigSpec)(nil)).Elem() -} - -type ArrayOfVMwareDvsLacpGroupConfig struct { - VMwareDvsLacpGroupConfig []VMwareDvsLacpGroupConfig `xml:"VMwareDvsLacpGroupConfig,omitempty"` -} - -func init() { - t["ArrayOfVMwareDvsLacpGroupConfig"] = reflect.TypeOf((*ArrayOfVMwareDvsLacpGroupConfig)(nil)).Elem() -} - -type ArrayOfVMwareDvsLacpGroupSpec struct { - VMwareDvsLacpGroupSpec []VMwareDvsLacpGroupSpec `xml:"VMwareDvsLacpGroupSpec,omitempty"` -} - -func init() { - t["ArrayOfVMwareDvsLacpGroupSpec"] = reflect.TypeOf((*ArrayOfVMwareDvsLacpGroupSpec)(nil)).Elem() -} - -type ArrayOfVMwareVspanSession struct { - VMwareVspanSession []VMwareVspanSession `xml:"VMwareVspanSession,omitempty"` -} - -func init() { - t["ArrayOfVMwareVspanSession"] = reflect.TypeOf((*ArrayOfVMwareVspanSession)(nil)).Elem() -} - -type ArrayOfVVolHostPE struct { - VVolHostPE []VVolHostPE `xml:"VVolHostPE,omitempty"` -} - -func init() { - t["ArrayOfVVolHostPE"] = reflect.TypeOf((*ArrayOfVVolHostPE)(nil)).Elem() -} - -type ArrayOfVimVasaProviderInfo struct { - VimVasaProviderInfo []VimVasaProviderInfo `xml:"VimVasaProviderInfo,omitempty"` -} - -func init() { - t["ArrayOfVimVasaProviderInfo"] = reflect.TypeOf((*ArrayOfVimVasaProviderInfo)(nil)).Elem() -} - -type ArrayOfVimVasaProviderStatePerArray struct { - VimVasaProviderStatePerArray []VimVasaProviderStatePerArray `xml:"VimVasaProviderStatePerArray,omitempty"` -} - -func init() { - t["ArrayOfVimVasaProviderStatePerArray"] = reflect.TypeOf((*ArrayOfVimVasaProviderStatePerArray)(nil)).Elem() -} - -type ArrayOfVirtualAppLinkInfo struct { - VirtualAppLinkInfo []VirtualAppLinkInfo `xml:"VirtualAppLinkInfo,omitempty"` -} - -func init() { - t["ArrayOfVirtualAppLinkInfo"] = reflect.TypeOf((*ArrayOfVirtualAppLinkInfo)(nil)).Elem() -} - -type ArrayOfVirtualDevice struct { - VirtualDevice []BaseVirtualDevice `xml:"VirtualDevice,omitempty,typeattr"` -} - -func init() { - t["ArrayOfVirtualDevice"] = reflect.TypeOf((*ArrayOfVirtualDevice)(nil)).Elem() -} - -type ArrayOfVirtualDeviceBackingOption struct { - VirtualDeviceBackingOption []BaseVirtualDeviceBackingOption `xml:"VirtualDeviceBackingOption,omitempty,typeattr"` -} - -func init() { - t["ArrayOfVirtualDeviceBackingOption"] = reflect.TypeOf((*ArrayOfVirtualDeviceBackingOption)(nil)).Elem() -} - -type ArrayOfVirtualDeviceConfigSpec struct { - VirtualDeviceConfigSpec []BaseVirtualDeviceConfigSpec `xml:"VirtualDeviceConfigSpec,omitempty,typeattr"` -} - -func init() { - t["ArrayOfVirtualDeviceConfigSpec"] = reflect.TypeOf((*ArrayOfVirtualDeviceConfigSpec)(nil)).Elem() -} - -type ArrayOfVirtualDeviceOption struct { - VirtualDeviceOption []BaseVirtualDeviceOption `xml:"VirtualDeviceOption,omitempty,typeattr"` -} - -func init() { - t["ArrayOfVirtualDeviceOption"] = reflect.TypeOf((*ArrayOfVirtualDeviceOption)(nil)).Elem() -} - -type ArrayOfVirtualDisk struct { - VirtualDisk []VirtualDisk `xml:"VirtualDisk,omitempty"` -} - -func init() { - t["ArrayOfVirtualDisk"] = reflect.TypeOf((*ArrayOfVirtualDisk)(nil)).Elem() -} - -type ArrayOfVirtualDiskDeltaDiskFormatsSupported struct { - VirtualDiskDeltaDiskFormatsSupported []VirtualDiskDeltaDiskFormatsSupported `xml:"VirtualDiskDeltaDiskFormatsSupported,omitempty"` -} - -func init() { - t["ArrayOfVirtualDiskDeltaDiskFormatsSupported"] = reflect.TypeOf((*ArrayOfVirtualDiskDeltaDiskFormatsSupported)(nil)).Elem() -} - -type ArrayOfVirtualDiskId struct { - VirtualDiskId []VirtualDiskId `xml:"VirtualDiskId,omitempty"` -} - -func init() { - t["ArrayOfVirtualDiskId"] = reflect.TypeOf((*ArrayOfVirtualDiskId)(nil)).Elem() -} - -type ArrayOfVirtualMachineBootOptionsBootableDevice struct { - VirtualMachineBootOptionsBootableDevice []BaseVirtualMachineBootOptionsBootableDevice `xml:"VirtualMachineBootOptionsBootableDevice,omitempty,typeattr"` -} - -func init() { - t["ArrayOfVirtualMachineBootOptionsBootableDevice"] = reflect.TypeOf((*ArrayOfVirtualMachineBootOptionsBootableDevice)(nil)).Elem() -} - -type ArrayOfVirtualMachineCdromInfo struct { - VirtualMachineCdromInfo []VirtualMachineCdromInfo `xml:"VirtualMachineCdromInfo,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineCdromInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineCdromInfo)(nil)).Elem() -} - -type ArrayOfVirtualMachineConfigInfoDatastoreUrlPair struct { - VirtualMachineConfigInfoDatastoreUrlPair []VirtualMachineConfigInfoDatastoreUrlPair `xml:"VirtualMachineConfigInfoDatastoreUrlPair,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineConfigInfoDatastoreUrlPair"] = reflect.TypeOf((*ArrayOfVirtualMachineConfigInfoDatastoreUrlPair)(nil)).Elem() -} - -type ArrayOfVirtualMachineConfigOptionDescriptor struct { - VirtualMachineConfigOptionDescriptor []VirtualMachineConfigOptionDescriptor `xml:"VirtualMachineConfigOptionDescriptor,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineConfigOptionDescriptor"] = reflect.TypeOf((*ArrayOfVirtualMachineConfigOptionDescriptor)(nil)).Elem() -} - -type ArrayOfVirtualMachineCpuIdInfoSpec struct { - VirtualMachineCpuIdInfoSpec []VirtualMachineCpuIdInfoSpec `xml:"VirtualMachineCpuIdInfoSpec,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineCpuIdInfoSpec"] = reflect.TypeOf((*ArrayOfVirtualMachineCpuIdInfoSpec)(nil)).Elem() -} - -type ArrayOfVirtualMachineDatastoreInfo struct { - VirtualMachineDatastoreInfo []VirtualMachineDatastoreInfo `xml:"VirtualMachineDatastoreInfo,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineDatastoreInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineDatastoreInfo)(nil)).Elem() -} - -type ArrayOfVirtualMachineDatastoreVolumeOption struct { - VirtualMachineDatastoreVolumeOption []VirtualMachineDatastoreVolumeOption `xml:"VirtualMachineDatastoreVolumeOption,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineDatastoreVolumeOption"] = reflect.TypeOf((*ArrayOfVirtualMachineDatastoreVolumeOption)(nil)).Elem() -} - -type ArrayOfVirtualMachineDeviceRuntimeInfo struct { - VirtualMachineDeviceRuntimeInfo []VirtualMachineDeviceRuntimeInfo `xml:"VirtualMachineDeviceRuntimeInfo,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineDeviceRuntimeInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineDeviceRuntimeInfo)(nil)).Elem() -} - -type ArrayOfVirtualMachineDisplayTopology struct { - VirtualMachineDisplayTopology []VirtualMachineDisplayTopology `xml:"VirtualMachineDisplayTopology,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineDisplayTopology"] = reflect.TypeOf((*ArrayOfVirtualMachineDisplayTopology)(nil)).Elem() -} - -type ArrayOfVirtualMachineFeatureRequirement struct { - VirtualMachineFeatureRequirement []VirtualMachineFeatureRequirement `xml:"VirtualMachineFeatureRequirement,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineFeatureRequirement"] = reflect.TypeOf((*ArrayOfVirtualMachineFeatureRequirement)(nil)).Elem() -} - -type ArrayOfVirtualMachineFileLayoutDiskLayout struct { - VirtualMachineFileLayoutDiskLayout []VirtualMachineFileLayoutDiskLayout `xml:"VirtualMachineFileLayoutDiskLayout,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineFileLayoutDiskLayout"] = reflect.TypeOf((*ArrayOfVirtualMachineFileLayoutDiskLayout)(nil)).Elem() -} - -type ArrayOfVirtualMachineFileLayoutExDiskLayout struct { - VirtualMachineFileLayoutExDiskLayout []VirtualMachineFileLayoutExDiskLayout `xml:"VirtualMachineFileLayoutExDiskLayout,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineFileLayoutExDiskLayout"] = reflect.TypeOf((*ArrayOfVirtualMachineFileLayoutExDiskLayout)(nil)).Elem() -} - -type ArrayOfVirtualMachineFileLayoutExDiskUnit struct { - VirtualMachineFileLayoutExDiskUnit []VirtualMachineFileLayoutExDiskUnit `xml:"VirtualMachineFileLayoutExDiskUnit,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineFileLayoutExDiskUnit"] = reflect.TypeOf((*ArrayOfVirtualMachineFileLayoutExDiskUnit)(nil)).Elem() -} - -type ArrayOfVirtualMachineFileLayoutExFileInfo struct { - VirtualMachineFileLayoutExFileInfo []VirtualMachineFileLayoutExFileInfo `xml:"VirtualMachineFileLayoutExFileInfo,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineFileLayoutExFileInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineFileLayoutExFileInfo)(nil)).Elem() -} - -type ArrayOfVirtualMachineFileLayoutExSnapshotLayout struct { - VirtualMachineFileLayoutExSnapshotLayout []VirtualMachineFileLayoutExSnapshotLayout `xml:"VirtualMachineFileLayoutExSnapshotLayout,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineFileLayoutExSnapshotLayout"] = reflect.TypeOf((*ArrayOfVirtualMachineFileLayoutExSnapshotLayout)(nil)).Elem() -} - -type ArrayOfVirtualMachineFileLayoutSnapshotLayout struct { - VirtualMachineFileLayoutSnapshotLayout []VirtualMachineFileLayoutSnapshotLayout `xml:"VirtualMachineFileLayoutSnapshotLayout,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineFileLayoutSnapshotLayout"] = reflect.TypeOf((*ArrayOfVirtualMachineFileLayoutSnapshotLayout)(nil)).Elem() -} - -type ArrayOfVirtualMachineFloppyInfo struct { - VirtualMachineFloppyInfo []VirtualMachineFloppyInfo `xml:"VirtualMachineFloppyInfo,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineFloppyInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineFloppyInfo)(nil)).Elem() -} - -type ArrayOfVirtualMachineIdeDiskDeviceInfo struct { - VirtualMachineIdeDiskDeviceInfo []VirtualMachineIdeDiskDeviceInfo `xml:"VirtualMachineIdeDiskDeviceInfo,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineIdeDiskDeviceInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineIdeDiskDeviceInfo)(nil)).Elem() -} - -type ArrayOfVirtualMachineIdeDiskDevicePartitionInfo struct { - VirtualMachineIdeDiskDevicePartitionInfo []VirtualMachineIdeDiskDevicePartitionInfo `xml:"VirtualMachineIdeDiskDevicePartitionInfo,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineIdeDiskDevicePartitionInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineIdeDiskDevicePartitionInfo)(nil)).Elem() -} - -type ArrayOfVirtualMachineLegacyNetworkSwitchInfo struct { - VirtualMachineLegacyNetworkSwitchInfo []VirtualMachineLegacyNetworkSwitchInfo `xml:"VirtualMachineLegacyNetworkSwitchInfo,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineLegacyNetworkSwitchInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineLegacyNetworkSwitchInfo)(nil)).Elem() -} - -type ArrayOfVirtualMachineMessage struct { - VirtualMachineMessage []VirtualMachineMessage `xml:"VirtualMachineMessage,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineMessage"] = reflect.TypeOf((*ArrayOfVirtualMachineMessage)(nil)).Elem() -} - -type ArrayOfVirtualMachineMetadataManagerVmMetadataInput struct { - VirtualMachineMetadataManagerVmMetadataInput []VirtualMachineMetadataManagerVmMetadataInput `xml:"VirtualMachineMetadataManagerVmMetadataInput,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineMetadataManagerVmMetadataInput"] = reflect.TypeOf((*ArrayOfVirtualMachineMetadataManagerVmMetadataInput)(nil)).Elem() -} - -type ArrayOfVirtualMachineMetadataManagerVmMetadataResult struct { - VirtualMachineMetadataManagerVmMetadataResult []VirtualMachineMetadataManagerVmMetadataResult `xml:"VirtualMachineMetadataManagerVmMetadataResult,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineMetadataManagerVmMetadataResult"] = reflect.TypeOf((*ArrayOfVirtualMachineMetadataManagerVmMetadataResult)(nil)).Elem() -} - -type ArrayOfVirtualMachineNetworkInfo struct { - VirtualMachineNetworkInfo []VirtualMachineNetworkInfo `xml:"VirtualMachineNetworkInfo,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineNetworkInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineNetworkInfo)(nil)).Elem() -} - -type ArrayOfVirtualMachineParallelInfo struct { - VirtualMachineParallelInfo []VirtualMachineParallelInfo `xml:"VirtualMachineParallelInfo,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineParallelInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineParallelInfo)(nil)).Elem() -} - -type ArrayOfVirtualMachinePciPassthroughInfo struct { - VirtualMachinePciPassthroughInfo []BaseVirtualMachinePciPassthroughInfo `xml:"VirtualMachinePciPassthroughInfo,omitempty,typeattr"` -} - -func init() { - t["ArrayOfVirtualMachinePciPassthroughInfo"] = reflect.TypeOf((*ArrayOfVirtualMachinePciPassthroughInfo)(nil)).Elem() -} - -type ArrayOfVirtualMachinePciSharedGpuPassthroughInfo struct { - VirtualMachinePciSharedGpuPassthroughInfo []VirtualMachinePciSharedGpuPassthroughInfo `xml:"VirtualMachinePciSharedGpuPassthroughInfo,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachinePciSharedGpuPassthroughInfo"] = reflect.TypeOf((*ArrayOfVirtualMachinePciSharedGpuPassthroughInfo)(nil)).Elem() -} - -type ArrayOfVirtualMachineProfileSpec struct { - VirtualMachineProfileSpec []BaseVirtualMachineProfileSpec `xml:"VirtualMachineProfileSpec,omitempty,typeattr"` -} - -func init() { - t["ArrayOfVirtualMachineProfileSpec"] = reflect.TypeOf((*ArrayOfVirtualMachineProfileSpec)(nil)).Elem() -} - -type ArrayOfVirtualMachineRelocateSpecDiskLocator struct { - VirtualMachineRelocateSpecDiskLocator []VirtualMachineRelocateSpecDiskLocator `xml:"VirtualMachineRelocateSpecDiskLocator,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineRelocateSpecDiskLocator"] = reflect.TypeOf((*ArrayOfVirtualMachineRelocateSpecDiskLocator)(nil)).Elem() -} - -type ArrayOfVirtualMachineScsiDiskDeviceInfo struct { - VirtualMachineScsiDiskDeviceInfo []VirtualMachineScsiDiskDeviceInfo `xml:"VirtualMachineScsiDiskDeviceInfo,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineScsiDiskDeviceInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineScsiDiskDeviceInfo)(nil)).Elem() -} - -type ArrayOfVirtualMachineScsiPassthroughInfo struct { - VirtualMachineScsiPassthroughInfo []VirtualMachineScsiPassthroughInfo `xml:"VirtualMachineScsiPassthroughInfo,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineScsiPassthroughInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineScsiPassthroughInfo)(nil)).Elem() -} - -type ArrayOfVirtualMachineSerialInfo struct { - VirtualMachineSerialInfo []VirtualMachineSerialInfo `xml:"VirtualMachineSerialInfo,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineSerialInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineSerialInfo)(nil)).Elem() -} - -type ArrayOfVirtualMachineSnapshotTree struct { - VirtualMachineSnapshotTree []VirtualMachineSnapshotTree `xml:"VirtualMachineSnapshotTree,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineSnapshotTree"] = reflect.TypeOf((*ArrayOfVirtualMachineSnapshotTree)(nil)).Elem() -} - -type ArrayOfVirtualMachineSoundInfo struct { - VirtualMachineSoundInfo []VirtualMachineSoundInfo `xml:"VirtualMachineSoundInfo,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineSoundInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineSoundInfo)(nil)).Elem() -} - -type ArrayOfVirtualMachineSriovInfo struct { - VirtualMachineSriovInfo []VirtualMachineSriovInfo `xml:"VirtualMachineSriovInfo,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineSriovInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineSriovInfo)(nil)).Elem() -} - -type ArrayOfVirtualMachineSummary struct { - VirtualMachineSummary []VirtualMachineSummary `xml:"VirtualMachineSummary,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineSummary"] = reflect.TypeOf((*ArrayOfVirtualMachineSummary)(nil)).Elem() -} - -type ArrayOfVirtualMachineUsageOnDatastore struct { - VirtualMachineUsageOnDatastore []VirtualMachineUsageOnDatastore `xml:"VirtualMachineUsageOnDatastore,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineUsageOnDatastore"] = reflect.TypeOf((*ArrayOfVirtualMachineUsageOnDatastore)(nil)).Elem() -} - -type ArrayOfVirtualMachineUsbInfo struct { - VirtualMachineUsbInfo []VirtualMachineUsbInfo `xml:"VirtualMachineUsbInfo,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineUsbInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineUsbInfo)(nil)).Elem() -} - -type ArrayOfVirtualMachineVFlashModuleInfo struct { - VirtualMachineVFlashModuleInfo []VirtualMachineVFlashModuleInfo `xml:"VirtualMachineVFlashModuleInfo,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineVFlashModuleInfo"] = reflect.TypeOf((*ArrayOfVirtualMachineVFlashModuleInfo)(nil)).Elem() -} - -type ArrayOfVirtualMachineVMCIDeviceFilterSpec struct { - VirtualMachineVMCIDeviceFilterSpec []VirtualMachineVMCIDeviceFilterSpec `xml:"VirtualMachineVMCIDeviceFilterSpec,omitempty"` -} - -func init() { - t["ArrayOfVirtualMachineVMCIDeviceFilterSpec"] = reflect.TypeOf((*ArrayOfVirtualMachineVMCIDeviceFilterSpec)(nil)).Elem() -} - -type ArrayOfVirtualNicManagerNetConfig struct { - VirtualNicManagerNetConfig []VirtualNicManagerNetConfig `xml:"VirtualNicManagerNetConfig,omitempty"` -} - -func init() { - t["ArrayOfVirtualNicManagerNetConfig"] = reflect.TypeOf((*ArrayOfVirtualNicManagerNetConfig)(nil)).Elem() -} - -type ArrayOfVirtualSCSISharing struct { - VirtualSCSISharing []VirtualSCSISharing `xml:"VirtualSCSISharing,omitempty"` -} - -func init() { - t["ArrayOfVirtualSCSISharing"] = reflect.TypeOf((*ArrayOfVirtualSCSISharing)(nil)).Elem() -} - -type ArrayOfVirtualSwitchProfile struct { - VirtualSwitchProfile []VirtualSwitchProfile `xml:"VirtualSwitchProfile,omitempty"` -} - -func init() { - t["ArrayOfVirtualSwitchProfile"] = reflect.TypeOf((*ArrayOfVirtualSwitchProfile)(nil)).Elem() -} - -type ArrayOfVmEventArgument struct { - VmEventArgument []VmEventArgument `xml:"VmEventArgument,omitempty"` -} - -func init() { - t["ArrayOfVmEventArgument"] = reflect.TypeOf((*ArrayOfVmEventArgument)(nil)).Elem() -} - -type ArrayOfVmPodConfigForPlacement struct { - VmPodConfigForPlacement []VmPodConfigForPlacement `xml:"VmPodConfigForPlacement,omitempty"` -} - -func init() { - t["ArrayOfVmPodConfigForPlacement"] = reflect.TypeOf((*ArrayOfVmPodConfigForPlacement)(nil)).Elem() -} - -type ArrayOfVmPortGroupProfile struct { - VmPortGroupProfile []VmPortGroupProfile `xml:"VmPortGroupProfile,omitempty"` -} - -func init() { - t["ArrayOfVmPortGroupProfile"] = reflect.TypeOf((*ArrayOfVmPortGroupProfile)(nil)).Elem() -} - -type ArrayOfVmfsDatastoreOption struct { - VmfsDatastoreOption []VmfsDatastoreOption `xml:"VmfsDatastoreOption,omitempty"` -} - -func init() { - t["ArrayOfVmfsDatastoreOption"] = reflect.TypeOf((*ArrayOfVmfsDatastoreOption)(nil)).Elem() -} - -type ArrayOfVnicPortArgument struct { - VnicPortArgument []VnicPortArgument `xml:"VnicPortArgument,omitempty"` -} - -func init() { - t["ArrayOfVnicPortArgument"] = reflect.TypeOf((*ArrayOfVnicPortArgument)(nil)).Elem() -} - -type ArrayOfVsanHostConfigInfo struct { - VsanHostConfigInfo []VsanHostConfigInfo `xml:"VsanHostConfigInfo,omitempty"` -} - -func init() { - t["ArrayOfVsanHostConfigInfo"] = reflect.TypeOf((*ArrayOfVsanHostConfigInfo)(nil)).Elem() -} - -type ArrayOfVsanHostConfigInfoNetworkInfoPortConfig struct { - VsanHostConfigInfoNetworkInfoPortConfig []VsanHostConfigInfoNetworkInfoPortConfig `xml:"VsanHostConfigInfoNetworkInfoPortConfig,omitempty"` -} - -func init() { - t["ArrayOfVsanHostConfigInfoNetworkInfoPortConfig"] = reflect.TypeOf((*ArrayOfVsanHostConfigInfoNetworkInfoPortConfig)(nil)).Elem() -} - -type ArrayOfVsanHostDiskMapInfo struct { - VsanHostDiskMapInfo []VsanHostDiskMapInfo `xml:"VsanHostDiskMapInfo,omitempty"` -} - -func init() { - t["ArrayOfVsanHostDiskMapInfo"] = reflect.TypeOf((*ArrayOfVsanHostDiskMapInfo)(nil)).Elem() -} - -type ArrayOfVsanHostDiskMapResult struct { - VsanHostDiskMapResult []VsanHostDiskMapResult `xml:"VsanHostDiskMapResult,omitempty"` -} - -func init() { - t["ArrayOfVsanHostDiskMapResult"] = reflect.TypeOf((*ArrayOfVsanHostDiskMapResult)(nil)).Elem() -} - -type ArrayOfVsanHostDiskMapping struct { - VsanHostDiskMapping []VsanHostDiskMapping `xml:"VsanHostDiskMapping,omitempty"` -} - -func init() { - t["ArrayOfVsanHostDiskMapping"] = reflect.TypeOf((*ArrayOfVsanHostDiskMapping)(nil)).Elem() -} - -type ArrayOfVsanHostDiskResult struct { - VsanHostDiskResult []VsanHostDiskResult `xml:"VsanHostDiskResult,omitempty"` -} - -func init() { - t["ArrayOfVsanHostDiskResult"] = reflect.TypeOf((*ArrayOfVsanHostDiskResult)(nil)).Elem() -} - -type ArrayOfVsanHostMembershipInfo struct { - VsanHostMembershipInfo []VsanHostMembershipInfo `xml:"VsanHostMembershipInfo,omitempty"` -} - -func init() { - t["ArrayOfVsanHostMembershipInfo"] = reflect.TypeOf((*ArrayOfVsanHostMembershipInfo)(nil)).Elem() -} - -type ArrayOfVsanHostRuntimeInfoDiskIssue struct { - VsanHostRuntimeInfoDiskIssue []VsanHostRuntimeInfoDiskIssue `xml:"VsanHostRuntimeInfoDiskIssue,omitempty"` -} - -func init() { - t["ArrayOfVsanHostRuntimeInfoDiskIssue"] = reflect.TypeOf((*ArrayOfVsanHostRuntimeInfoDiskIssue)(nil)).Elem() -} - -type ArrayOfVsanNewPolicyBatch struct { - VsanNewPolicyBatch []VsanNewPolicyBatch `xml:"VsanNewPolicyBatch,omitempty"` -} - -func init() { - t["ArrayOfVsanNewPolicyBatch"] = reflect.TypeOf((*ArrayOfVsanNewPolicyBatch)(nil)).Elem() -} - -type ArrayOfVsanPolicyChangeBatch struct { - VsanPolicyChangeBatch []VsanPolicyChangeBatch `xml:"VsanPolicyChangeBatch,omitempty"` -} - -func init() { - t["ArrayOfVsanPolicyChangeBatch"] = reflect.TypeOf((*ArrayOfVsanPolicyChangeBatch)(nil)).Elem() -} - -type ArrayOfVsanPolicySatisfiability struct { - VsanPolicySatisfiability []VsanPolicySatisfiability `xml:"VsanPolicySatisfiability,omitempty"` -} - -func init() { - t["ArrayOfVsanPolicySatisfiability"] = reflect.TypeOf((*ArrayOfVsanPolicySatisfiability)(nil)).Elem() -} - -type ArrayOfVsanUpgradeSystemNetworkPartitionInfo struct { - VsanUpgradeSystemNetworkPartitionInfo []VsanUpgradeSystemNetworkPartitionInfo `xml:"VsanUpgradeSystemNetworkPartitionInfo,omitempty"` -} - -func init() { - t["ArrayOfVsanUpgradeSystemNetworkPartitionInfo"] = reflect.TypeOf((*ArrayOfVsanUpgradeSystemNetworkPartitionInfo)(nil)).Elem() -} - -type ArrayOfVsanUpgradeSystemPreflightCheckIssue struct { - VsanUpgradeSystemPreflightCheckIssue []BaseVsanUpgradeSystemPreflightCheckIssue `xml:"VsanUpgradeSystemPreflightCheckIssue,omitempty,typeattr"` -} - -func init() { - t["ArrayOfVsanUpgradeSystemPreflightCheckIssue"] = reflect.TypeOf((*ArrayOfVsanUpgradeSystemPreflightCheckIssue)(nil)).Elem() -} - -type ArrayOfVsanUpgradeSystemUpgradeHistoryItem struct { - VsanUpgradeSystemUpgradeHistoryItem []BaseVsanUpgradeSystemUpgradeHistoryItem `xml:"VsanUpgradeSystemUpgradeHistoryItem,omitempty,typeattr"` -} - -func init() { - t["ArrayOfVsanUpgradeSystemUpgradeHistoryItem"] = reflect.TypeOf((*ArrayOfVsanUpgradeSystemUpgradeHistoryItem)(nil)).Elem() -} - -type ArrayUpdateSpec struct { - DynamicData - - Operation ArrayUpdateOperation `xml:"operation"` - RemoveKey AnyType `xml:"removeKey,omitempty,typeattr"` -} - -func init() { - t["ArrayUpdateSpec"] = reflect.TypeOf((*ArrayUpdateSpec)(nil)).Elem() -} - -type AssignUserToGroup AssignUserToGroupRequestType - -func init() { - t["AssignUserToGroup"] = reflect.TypeOf((*AssignUserToGroup)(nil)).Elem() -} - -type AssignUserToGroupRequestType struct { - This ManagedObjectReference `xml:"_this"` - User string `xml:"user"` - Group string `xml:"group"` -} - -func init() { - t["AssignUserToGroupRequestType"] = reflect.TypeOf((*AssignUserToGroupRequestType)(nil)).Elem() -} - -type AssignUserToGroupResponse struct { -} - -type AssociateProfile AssociateProfileRequestType - -func init() { - t["AssociateProfile"] = reflect.TypeOf((*AssociateProfile)(nil)).Elem() -} - -type AssociateProfileRequestType struct { - This ManagedObjectReference `xml:"_this"` - Entity []ManagedObjectReference `xml:"entity"` -} - -func init() { - t["AssociateProfileRequestType"] = reflect.TypeOf((*AssociateProfileRequestType)(nil)).Elem() -} - -type AssociateProfileResponse struct { -} - -type AttachScsiLun AttachScsiLunRequestType - -func init() { - t["AttachScsiLun"] = reflect.TypeOf((*AttachScsiLun)(nil)).Elem() -} - -type AttachScsiLunExRequestType struct { - This ManagedObjectReference `xml:"_this"` - LunUuid []string `xml:"lunUuid"` -} - -func init() { - t["AttachScsiLunExRequestType"] = reflect.TypeOf((*AttachScsiLunExRequestType)(nil)).Elem() -} - -type AttachScsiLunEx_Task AttachScsiLunExRequestType - -func init() { - t["AttachScsiLunEx_Task"] = reflect.TypeOf((*AttachScsiLunEx_Task)(nil)).Elem() -} - -type AttachScsiLunEx_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type AttachScsiLunRequestType struct { - This ManagedObjectReference `xml:"_this"` - LunUuid string `xml:"lunUuid"` -} - -func init() { - t["AttachScsiLunRequestType"] = reflect.TypeOf((*AttachScsiLunRequestType)(nil)).Elem() -} - -type AttachScsiLunResponse struct { -} - -type AttachVmfsExtent AttachVmfsExtentRequestType - -func init() { - t["AttachVmfsExtent"] = reflect.TypeOf((*AttachVmfsExtent)(nil)).Elem() -} - -type AttachVmfsExtentRequestType struct { - This ManagedObjectReference `xml:"_this"` - VmfsPath string `xml:"vmfsPath"` - Extent HostScsiDiskPartition `xml:"extent"` -} - -func init() { - t["AttachVmfsExtentRequestType"] = reflect.TypeOf((*AttachVmfsExtentRequestType)(nil)).Elem() -} - -type AttachVmfsExtentResponse struct { -} - -type AuthMinimumAdminPermission struct { - VimFault -} - -func init() { - t["AuthMinimumAdminPermission"] = reflect.TypeOf((*AuthMinimumAdminPermission)(nil)).Elem() -} - -type AuthMinimumAdminPermissionFault AuthMinimumAdminPermission - -func init() { - t["AuthMinimumAdminPermissionFault"] = reflect.TypeOf((*AuthMinimumAdminPermissionFault)(nil)).Elem() -} - -type AuthenticationProfile struct { - ApplyProfile - - ActiveDirectory *ActiveDirectoryProfile `xml:"activeDirectory,omitempty"` -} - -func init() { - t["AuthenticationProfile"] = reflect.TypeOf((*AuthenticationProfile)(nil)).Elem() -} - -type AuthorizationDescription struct { - DynamicData - - Privilege []BaseElementDescription `xml:"privilege,typeattr"` - PrivilegeGroup []BaseElementDescription `xml:"privilegeGroup,typeattr"` -} - -func init() { - t["AuthorizationDescription"] = reflect.TypeOf((*AuthorizationDescription)(nil)).Elem() -} - -type AuthorizationEvent struct { - Event -} - -func init() { - t["AuthorizationEvent"] = reflect.TypeOf((*AuthorizationEvent)(nil)).Elem() -} - -type AuthorizationPrivilege struct { - DynamicData - - PrivId string `xml:"privId"` - OnParent bool `xml:"onParent"` - Name string `xml:"name"` - PrivGroupName string `xml:"privGroupName"` -} - -func init() { - t["AuthorizationPrivilege"] = reflect.TypeOf((*AuthorizationPrivilege)(nil)).Elem() -} - -type AuthorizationRole struct { - DynamicData - - RoleId int32 `xml:"roleId"` - System bool `xml:"system"` - Name string `xml:"name"` - Info BaseDescription `xml:"info,typeattr"` - Privilege []string `xml:"privilege,omitempty"` -} - -func init() { - t["AuthorizationRole"] = reflect.TypeOf((*AuthorizationRole)(nil)).Elem() -} - -type AutoStartDefaults struct { - DynamicData - - Enabled *bool `xml:"enabled"` - StartDelay int32 `xml:"startDelay,omitempty"` - StopDelay int32 `xml:"stopDelay,omitempty"` - WaitForHeartbeat *bool `xml:"waitForHeartbeat"` - StopAction string `xml:"stopAction,omitempty"` -} - -func init() { - t["AutoStartDefaults"] = reflect.TypeOf((*AutoStartDefaults)(nil)).Elem() -} - -type AutoStartPowerInfo struct { - DynamicData - - Key ManagedObjectReference `xml:"key"` - StartOrder int32 `xml:"startOrder"` - StartDelay int32 `xml:"startDelay"` - WaitForHeartbeat AutoStartWaitHeartbeatSetting `xml:"waitForHeartbeat"` - StartAction string `xml:"startAction"` - StopDelay int32 `xml:"stopDelay"` - StopAction string `xml:"stopAction"` -} - -func init() { - t["AutoStartPowerInfo"] = reflect.TypeOf((*AutoStartPowerInfo)(nil)).Elem() -} - -type AutoStartPowerOff AutoStartPowerOffRequestType - -func init() { - t["AutoStartPowerOff"] = reflect.TypeOf((*AutoStartPowerOff)(nil)).Elem() -} - -type AutoStartPowerOffRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["AutoStartPowerOffRequestType"] = reflect.TypeOf((*AutoStartPowerOffRequestType)(nil)).Elem() -} - -type AutoStartPowerOffResponse struct { -} - -type AutoStartPowerOn AutoStartPowerOnRequestType - -func init() { - t["AutoStartPowerOn"] = reflect.TypeOf((*AutoStartPowerOn)(nil)).Elem() -} - -type AutoStartPowerOnRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["AutoStartPowerOnRequestType"] = reflect.TypeOf((*AutoStartPowerOnRequestType)(nil)).Elem() -} - -type AutoStartPowerOnResponse struct { -} - -type BackupBlobReadFailure struct { - DvsFault - - EntityName string `xml:"entityName"` - EntityType string `xml:"entityType"` - Fault LocalizedMethodFault `xml:"fault"` -} - -func init() { - t["BackupBlobReadFailure"] = reflect.TypeOf((*BackupBlobReadFailure)(nil)).Elem() -} - -type BackupBlobReadFailureFault BackupBlobReadFailure - -func init() { - t["BackupBlobReadFailureFault"] = reflect.TypeOf((*BackupBlobReadFailureFault)(nil)).Elem() -} - -type BackupBlobWriteFailure struct { - DvsFault - - EntityName string `xml:"entityName"` - EntityType string `xml:"entityType"` - Fault LocalizedMethodFault `xml:"fault"` -} - -func init() { - t["BackupBlobWriteFailure"] = reflect.TypeOf((*BackupBlobWriteFailure)(nil)).Elem() -} - -type BackupBlobWriteFailureFault BackupBlobWriteFailure - -func init() { - t["BackupBlobWriteFailureFault"] = reflect.TypeOf((*BackupBlobWriteFailureFault)(nil)).Elem() -} - -type BackupFirmwareConfiguration BackupFirmwareConfigurationRequestType - -func init() { - t["BackupFirmwareConfiguration"] = reflect.TypeOf((*BackupFirmwareConfiguration)(nil)).Elem() -} - -type BackupFirmwareConfigurationRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["BackupFirmwareConfigurationRequestType"] = reflect.TypeOf((*BackupFirmwareConfigurationRequestType)(nil)).Elem() -} - -type BackupFirmwareConfigurationResponse struct { - Returnval string `xml:"returnval"` -} - -type BadUsernameSessionEvent struct { - SessionEvent - - IpAddress string `xml:"ipAddress"` -} - -func init() { - t["BadUsernameSessionEvent"] = reflect.TypeOf((*BadUsernameSessionEvent)(nil)).Elem() -} - -type BatchResult struct { - DynamicData - - Result string `xml:"result"` - HostKey string `xml:"hostKey"` - Ds *ManagedObjectReference `xml:"ds,omitempty"` - Fault *LocalizedMethodFault `xml:"fault,omitempty"` -} - -func init() { - t["BatchResult"] = reflect.TypeOf((*BatchResult)(nil)).Elem() -} - -type BindVnic BindVnicRequestType - -func init() { - t["BindVnic"] = reflect.TypeOf((*BindVnic)(nil)).Elem() -} - -type BindVnicRequestType struct { - This ManagedObjectReference `xml:"_this"` - IScsiHbaName string `xml:"iScsiHbaName"` - VnicDevice string `xml:"vnicDevice"` -} - -func init() { - t["BindVnicRequestType"] = reflect.TypeOf((*BindVnicRequestType)(nil)).Elem() -} - -type BindVnicResponse struct { -} - -type BlockedByFirewall struct { - HostConfigFault -} - -func init() { - t["BlockedByFirewall"] = reflect.TypeOf((*BlockedByFirewall)(nil)).Elem() -} - -type BlockedByFirewallFault BlockedByFirewall - -func init() { - t["BlockedByFirewallFault"] = reflect.TypeOf((*BlockedByFirewallFault)(nil)).Elem() -} - -type BoolOption struct { - OptionType - - Supported bool `xml:"supported"` - DefaultValue bool `xml:"defaultValue"` -} - -func init() { - t["BoolOption"] = reflect.TypeOf((*BoolOption)(nil)).Elem() -} - -type BoolPolicy struct { - InheritablePolicy - - Value *bool `xml:"value"` -} - -func init() { - t["BoolPolicy"] = reflect.TypeOf((*BoolPolicy)(nil)).Elem() -} - -type BrowseDiagnosticLog BrowseDiagnosticLogRequestType - -func init() { - t["BrowseDiagnosticLog"] = reflect.TypeOf((*BrowseDiagnosticLog)(nil)).Elem() -} - -type BrowseDiagnosticLogRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host *ManagedObjectReference `xml:"host,omitempty"` - Key string `xml:"key"` - Start int32 `xml:"start,omitempty"` - Lines int32 `xml:"lines,omitempty"` -} - -func init() { - t["BrowseDiagnosticLogRequestType"] = reflect.TypeOf((*BrowseDiagnosticLogRequestType)(nil)).Elem() -} - -type BrowseDiagnosticLogResponse struct { - Returnval DiagnosticManagerLogHeader `xml:"returnval"` -} - -type CAMServerRefusedConnection struct { - InvalidCAMServer -} - -func init() { - t["CAMServerRefusedConnection"] = reflect.TypeOf((*CAMServerRefusedConnection)(nil)).Elem() -} - -type CAMServerRefusedConnectionFault CAMServerRefusedConnection - -func init() { - t["CAMServerRefusedConnectionFault"] = reflect.TypeOf((*CAMServerRefusedConnectionFault)(nil)).Elem() -} - -type CanProvisionObjects CanProvisionObjectsRequestType - -func init() { - t["CanProvisionObjects"] = reflect.TypeOf((*CanProvisionObjects)(nil)).Elem() -} - -type CanProvisionObjectsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Npbs []VsanNewPolicyBatch `xml:"npbs"` - IgnoreSatisfiability *bool `xml:"ignoreSatisfiability"` -} - -func init() { - t["CanProvisionObjectsRequestType"] = reflect.TypeOf((*CanProvisionObjectsRequestType)(nil)).Elem() -} - -type CanProvisionObjectsResponse struct { - Returnval []VsanPolicySatisfiability `xml:"returnval"` -} - -type CancelRecommendation CancelRecommendationRequestType - -func init() { - t["CancelRecommendation"] = reflect.TypeOf((*CancelRecommendation)(nil)).Elem() -} - -type CancelRecommendationRequestType struct { - This ManagedObjectReference `xml:"_this"` - Key string `xml:"key"` -} - -func init() { - t["CancelRecommendationRequestType"] = reflect.TypeOf((*CancelRecommendationRequestType)(nil)).Elem() -} - -type CancelRecommendationResponse struct { -} - -type CancelRetrievePropertiesEx CancelRetrievePropertiesExRequestType - -func init() { - t["CancelRetrievePropertiesEx"] = reflect.TypeOf((*CancelRetrievePropertiesEx)(nil)).Elem() -} - -type CancelRetrievePropertiesExRequestType struct { - This ManagedObjectReference `xml:"_this"` - Token string `xml:"token"` -} - -func init() { - t["CancelRetrievePropertiesExRequestType"] = reflect.TypeOf((*CancelRetrievePropertiesExRequestType)(nil)).Elem() -} - -type CancelRetrievePropertiesExResponse struct { -} - -type CancelStorageDrsRecommendation CancelStorageDrsRecommendationRequestType - -func init() { - t["CancelStorageDrsRecommendation"] = reflect.TypeOf((*CancelStorageDrsRecommendation)(nil)).Elem() -} - -type CancelStorageDrsRecommendationRequestType struct { - This ManagedObjectReference `xml:"_this"` - Key []string `xml:"key"` -} - -func init() { - t["CancelStorageDrsRecommendationRequestType"] = reflect.TypeOf((*CancelStorageDrsRecommendationRequestType)(nil)).Elem() -} - -type CancelStorageDrsRecommendationResponse struct { -} - -type CancelTask CancelTaskRequestType - -func init() { - t["CancelTask"] = reflect.TypeOf((*CancelTask)(nil)).Elem() -} - -type CancelTaskRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["CancelTaskRequestType"] = reflect.TypeOf((*CancelTaskRequestType)(nil)).Elem() -} - -type CancelTaskResponse struct { -} - -type CancelWaitForUpdates CancelWaitForUpdatesRequestType - -func init() { - t["CancelWaitForUpdates"] = reflect.TypeOf((*CancelWaitForUpdates)(nil)).Elem() -} - -type CancelWaitForUpdatesRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["CancelWaitForUpdatesRequestType"] = reflect.TypeOf((*CancelWaitForUpdatesRequestType)(nil)).Elem() -} - -type CancelWaitForUpdatesResponse struct { -} - -type CanceledHostOperationEvent struct { - HostEvent -} - -func init() { - t["CanceledHostOperationEvent"] = reflect.TypeOf((*CanceledHostOperationEvent)(nil)).Elem() -} - -type CannotAccessFile struct { - FileFault -} - -func init() { - t["CannotAccessFile"] = reflect.TypeOf((*CannotAccessFile)(nil)).Elem() -} - -type CannotAccessFileFault CannotAccessFile - -func init() { - t["CannotAccessFileFault"] = reflect.TypeOf((*CannotAccessFileFault)(nil)).Elem() -} - -type CannotAccessLocalSource struct { - VimFault -} - -func init() { - t["CannotAccessLocalSource"] = reflect.TypeOf((*CannotAccessLocalSource)(nil)).Elem() -} - -type CannotAccessLocalSourceFault CannotAccessLocalSource - -func init() { - t["CannotAccessLocalSourceFault"] = reflect.TypeOf((*CannotAccessLocalSourceFault)(nil)).Elem() -} - -type CannotAccessNetwork struct { - CannotAccessVmDevice - - Network *ManagedObjectReference `xml:"network,omitempty"` -} - -func init() { - t["CannotAccessNetwork"] = reflect.TypeOf((*CannotAccessNetwork)(nil)).Elem() -} - -type CannotAccessNetworkFault BaseCannotAccessNetwork - -func init() { - t["CannotAccessNetworkFault"] = reflect.TypeOf((*CannotAccessNetworkFault)(nil)).Elem() -} - -type CannotAccessVmComponent struct { - VmConfigFault -} - -func init() { - t["CannotAccessVmComponent"] = reflect.TypeOf((*CannotAccessVmComponent)(nil)).Elem() -} - -type CannotAccessVmComponentFault BaseCannotAccessVmComponent - -func init() { - t["CannotAccessVmComponentFault"] = reflect.TypeOf((*CannotAccessVmComponentFault)(nil)).Elem() -} - -type CannotAccessVmConfig struct { - CannotAccessVmComponent - - Reason LocalizedMethodFault `xml:"reason"` -} - -func init() { - t["CannotAccessVmConfig"] = reflect.TypeOf((*CannotAccessVmConfig)(nil)).Elem() -} - -type CannotAccessVmConfigFault CannotAccessVmConfig - -func init() { - t["CannotAccessVmConfigFault"] = reflect.TypeOf((*CannotAccessVmConfigFault)(nil)).Elem() -} - -type CannotAccessVmDevice struct { - CannotAccessVmComponent - - Device string `xml:"device"` - Backing string `xml:"backing"` - Connected bool `xml:"connected"` -} - -func init() { - t["CannotAccessVmDevice"] = reflect.TypeOf((*CannotAccessVmDevice)(nil)).Elem() -} - -type CannotAccessVmDeviceFault BaseCannotAccessVmDevice - -func init() { - t["CannotAccessVmDeviceFault"] = reflect.TypeOf((*CannotAccessVmDeviceFault)(nil)).Elem() -} - -type CannotAccessVmDisk struct { - CannotAccessVmDevice - - Fault LocalizedMethodFault `xml:"fault"` -} - -func init() { - t["CannotAccessVmDisk"] = reflect.TypeOf((*CannotAccessVmDisk)(nil)).Elem() -} - -type CannotAccessVmDiskFault BaseCannotAccessVmDisk - -func init() { - t["CannotAccessVmDiskFault"] = reflect.TypeOf((*CannotAccessVmDiskFault)(nil)).Elem() -} - -type CannotAddHostWithFTVmAsStandalone struct { - HostConnectFault -} - -func init() { - t["CannotAddHostWithFTVmAsStandalone"] = reflect.TypeOf((*CannotAddHostWithFTVmAsStandalone)(nil)).Elem() -} - -type CannotAddHostWithFTVmAsStandaloneFault CannotAddHostWithFTVmAsStandalone - -func init() { - t["CannotAddHostWithFTVmAsStandaloneFault"] = reflect.TypeOf((*CannotAddHostWithFTVmAsStandaloneFault)(nil)).Elem() -} - -type CannotAddHostWithFTVmToDifferentCluster struct { - HostConnectFault -} - -func init() { - t["CannotAddHostWithFTVmToDifferentCluster"] = reflect.TypeOf((*CannotAddHostWithFTVmToDifferentCluster)(nil)).Elem() -} - -type CannotAddHostWithFTVmToDifferentClusterFault CannotAddHostWithFTVmToDifferentCluster - -func init() { - t["CannotAddHostWithFTVmToDifferentClusterFault"] = reflect.TypeOf((*CannotAddHostWithFTVmToDifferentClusterFault)(nil)).Elem() -} - -type CannotAddHostWithFTVmToNonHACluster struct { - HostConnectFault -} - -func init() { - t["CannotAddHostWithFTVmToNonHACluster"] = reflect.TypeOf((*CannotAddHostWithFTVmToNonHACluster)(nil)).Elem() -} - -type CannotAddHostWithFTVmToNonHAClusterFault CannotAddHostWithFTVmToNonHACluster - -func init() { - t["CannotAddHostWithFTVmToNonHAClusterFault"] = reflect.TypeOf((*CannotAddHostWithFTVmToNonHAClusterFault)(nil)).Elem() -} - -type CannotChangeDrsBehaviorForFtSecondary struct { - VmFaultToleranceIssue - - Vm ManagedObjectReference `xml:"vm"` - VmName string `xml:"vmName"` -} - -func init() { - t["CannotChangeDrsBehaviorForFtSecondary"] = reflect.TypeOf((*CannotChangeDrsBehaviorForFtSecondary)(nil)).Elem() -} - -type CannotChangeDrsBehaviorForFtSecondaryFault CannotChangeDrsBehaviorForFtSecondary - -func init() { - t["CannotChangeDrsBehaviorForFtSecondaryFault"] = reflect.TypeOf((*CannotChangeDrsBehaviorForFtSecondaryFault)(nil)).Elem() -} - -type CannotChangeHaSettingsForFtSecondary struct { - VmFaultToleranceIssue - - Vm ManagedObjectReference `xml:"vm"` - VmName string `xml:"vmName"` -} - -func init() { - t["CannotChangeHaSettingsForFtSecondary"] = reflect.TypeOf((*CannotChangeHaSettingsForFtSecondary)(nil)).Elem() -} - -type CannotChangeHaSettingsForFtSecondaryFault CannotChangeHaSettingsForFtSecondary - -func init() { - t["CannotChangeHaSettingsForFtSecondaryFault"] = reflect.TypeOf((*CannotChangeHaSettingsForFtSecondaryFault)(nil)).Elem() -} - -type CannotChangeVsanClusterUuid struct { - VsanFault -} - -func init() { - t["CannotChangeVsanClusterUuid"] = reflect.TypeOf((*CannotChangeVsanClusterUuid)(nil)).Elem() -} - -type CannotChangeVsanClusterUuidFault CannotChangeVsanClusterUuid - -func init() { - t["CannotChangeVsanClusterUuidFault"] = reflect.TypeOf((*CannotChangeVsanClusterUuidFault)(nil)).Elem() -} - -type CannotChangeVsanNodeUuid struct { - VsanFault -} - -func init() { - t["CannotChangeVsanNodeUuid"] = reflect.TypeOf((*CannotChangeVsanNodeUuid)(nil)).Elem() -} - -type CannotChangeVsanNodeUuidFault CannotChangeVsanNodeUuid - -func init() { - t["CannotChangeVsanNodeUuidFault"] = reflect.TypeOf((*CannotChangeVsanNodeUuidFault)(nil)).Elem() -} - -type CannotComputeFTCompatibleHosts struct { - VmFaultToleranceIssue - - Vm ManagedObjectReference `xml:"vm"` - VmName string `xml:"vmName"` -} - -func init() { - t["CannotComputeFTCompatibleHosts"] = reflect.TypeOf((*CannotComputeFTCompatibleHosts)(nil)).Elem() -} - -type CannotComputeFTCompatibleHostsFault CannotComputeFTCompatibleHosts - -func init() { - t["CannotComputeFTCompatibleHostsFault"] = reflect.TypeOf((*CannotComputeFTCompatibleHostsFault)(nil)).Elem() -} - -type CannotCreateFile struct { - FileFault -} - -func init() { - t["CannotCreateFile"] = reflect.TypeOf((*CannotCreateFile)(nil)).Elem() -} - -type CannotCreateFileFault CannotCreateFile - -func init() { - t["CannotCreateFileFault"] = reflect.TypeOf((*CannotCreateFileFault)(nil)).Elem() -} - -type CannotDecryptPasswords struct { - CustomizationFault -} - -func init() { - t["CannotDecryptPasswords"] = reflect.TypeOf((*CannotDecryptPasswords)(nil)).Elem() -} - -type CannotDecryptPasswordsFault CannotDecryptPasswords - -func init() { - t["CannotDecryptPasswordsFault"] = reflect.TypeOf((*CannotDecryptPasswordsFault)(nil)).Elem() -} - -type CannotDeleteFile struct { - FileFault -} - -func init() { - t["CannotDeleteFile"] = reflect.TypeOf((*CannotDeleteFile)(nil)).Elem() -} - -type CannotDeleteFileFault CannotDeleteFile - -func init() { - t["CannotDeleteFileFault"] = reflect.TypeOf((*CannotDeleteFileFault)(nil)).Elem() -} - -type CannotDisableDrsOnClusterManagedByVDC struct { - RuntimeFault -} - -func init() { - t["CannotDisableDrsOnClusterManagedByVDC"] = reflect.TypeOf((*CannotDisableDrsOnClusterManagedByVDC)(nil)).Elem() -} - -type CannotDisableDrsOnClusterManagedByVDCFault CannotDisableDrsOnClusterManagedByVDC - -func init() { - t["CannotDisableDrsOnClusterManagedByVDCFault"] = reflect.TypeOf((*CannotDisableDrsOnClusterManagedByVDCFault)(nil)).Elem() -} - -type CannotDisableDrsOnClustersWithVApps struct { - RuntimeFault -} - -func init() { - t["CannotDisableDrsOnClustersWithVApps"] = reflect.TypeOf((*CannotDisableDrsOnClustersWithVApps)(nil)).Elem() -} - -type CannotDisableDrsOnClustersWithVAppsFault CannotDisableDrsOnClustersWithVApps - -func init() { - t["CannotDisableDrsOnClustersWithVAppsFault"] = reflect.TypeOf((*CannotDisableDrsOnClustersWithVAppsFault)(nil)).Elem() -} - -type CannotDisableSnapshot struct { - VmConfigFault -} - -func init() { - t["CannotDisableSnapshot"] = reflect.TypeOf((*CannotDisableSnapshot)(nil)).Elem() -} - -type CannotDisableSnapshotFault CannotDisableSnapshot - -func init() { - t["CannotDisableSnapshotFault"] = reflect.TypeOf((*CannotDisableSnapshotFault)(nil)).Elem() -} - -type CannotDisconnectHostWithFaultToleranceVm struct { - VimFault - - HostName string `xml:"hostName"` -} - -func init() { - t["CannotDisconnectHostWithFaultToleranceVm"] = reflect.TypeOf((*CannotDisconnectHostWithFaultToleranceVm)(nil)).Elem() -} - -type CannotDisconnectHostWithFaultToleranceVmFault CannotDisconnectHostWithFaultToleranceVm - -func init() { - t["CannotDisconnectHostWithFaultToleranceVmFault"] = reflect.TypeOf((*CannotDisconnectHostWithFaultToleranceVmFault)(nil)).Elem() -} - -type CannotEnableVmcpForCluster struct { - VimFault - - Host *ManagedObjectReference `xml:"host,omitempty"` - HostName string `xml:"hostName,omitempty"` - Reason string `xml:"reason,omitempty"` -} - -func init() { - t["CannotEnableVmcpForCluster"] = reflect.TypeOf((*CannotEnableVmcpForCluster)(nil)).Elem() -} - -type CannotEnableVmcpForClusterFault CannotEnableVmcpForCluster - -func init() { - t["CannotEnableVmcpForClusterFault"] = reflect.TypeOf((*CannotEnableVmcpForClusterFault)(nil)).Elem() -} - -type CannotModifyConfigCpuRequirements struct { - MigrationFault -} - -func init() { - t["CannotModifyConfigCpuRequirements"] = reflect.TypeOf((*CannotModifyConfigCpuRequirements)(nil)).Elem() -} - -type CannotModifyConfigCpuRequirementsFault CannotModifyConfigCpuRequirements - -func init() { - t["CannotModifyConfigCpuRequirementsFault"] = reflect.TypeOf((*CannotModifyConfigCpuRequirementsFault)(nil)).Elem() -} - -type CannotMoveFaultToleranceVm struct { - VimFault - - MoveType string `xml:"moveType"` - VmName string `xml:"vmName"` -} - -func init() { - t["CannotMoveFaultToleranceVm"] = reflect.TypeOf((*CannotMoveFaultToleranceVm)(nil)).Elem() -} - -type CannotMoveFaultToleranceVmFault CannotMoveFaultToleranceVm - -func init() { - t["CannotMoveFaultToleranceVmFault"] = reflect.TypeOf((*CannotMoveFaultToleranceVmFault)(nil)).Elem() -} - -type CannotMoveHostWithFaultToleranceVm struct { - VimFault -} - -func init() { - t["CannotMoveHostWithFaultToleranceVm"] = reflect.TypeOf((*CannotMoveHostWithFaultToleranceVm)(nil)).Elem() -} - -type CannotMoveHostWithFaultToleranceVmFault CannotMoveHostWithFaultToleranceVm - -func init() { - t["CannotMoveHostWithFaultToleranceVmFault"] = reflect.TypeOf((*CannotMoveHostWithFaultToleranceVmFault)(nil)).Elem() -} - -type CannotMoveVmWithDeltaDisk struct { - MigrationFault - - Device string `xml:"device"` -} - -func init() { - t["CannotMoveVmWithDeltaDisk"] = reflect.TypeOf((*CannotMoveVmWithDeltaDisk)(nil)).Elem() -} - -type CannotMoveVmWithDeltaDiskFault CannotMoveVmWithDeltaDisk - -func init() { - t["CannotMoveVmWithDeltaDiskFault"] = reflect.TypeOf((*CannotMoveVmWithDeltaDiskFault)(nil)).Elem() -} - -type CannotMoveVmWithNativeDeltaDisk struct { - MigrationFault -} - -func init() { - t["CannotMoveVmWithNativeDeltaDisk"] = reflect.TypeOf((*CannotMoveVmWithNativeDeltaDisk)(nil)).Elem() -} - -type CannotMoveVmWithNativeDeltaDiskFault CannotMoveVmWithNativeDeltaDisk - -func init() { - t["CannotMoveVmWithNativeDeltaDiskFault"] = reflect.TypeOf((*CannotMoveVmWithNativeDeltaDiskFault)(nil)).Elem() -} - -type CannotMoveVsanEnabledHost struct { - VsanFault -} - -func init() { - t["CannotMoveVsanEnabledHost"] = reflect.TypeOf((*CannotMoveVsanEnabledHost)(nil)).Elem() -} - -type CannotMoveVsanEnabledHostFault BaseCannotMoveVsanEnabledHost - -func init() { - t["CannotMoveVsanEnabledHostFault"] = reflect.TypeOf((*CannotMoveVsanEnabledHostFault)(nil)).Elem() -} - -type CannotPlaceWithoutPrerequisiteMoves struct { - VimFault -} - -func init() { - t["CannotPlaceWithoutPrerequisiteMoves"] = reflect.TypeOf((*CannotPlaceWithoutPrerequisiteMoves)(nil)).Elem() -} - -type CannotPlaceWithoutPrerequisiteMovesFault CannotPlaceWithoutPrerequisiteMoves - -func init() { - t["CannotPlaceWithoutPrerequisiteMovesFault"] = reflect.TypeOf((*CannotPlaceWithoutPrerequisiteMovesFault)(nil)).Elem() -} - -type CannotPowerOffVmInCluster struct { - InvalidState - - Operation string `xml:"operation"` - Vm ManagedObjectReference `xml:"vm"` - VmName string `xml:"vmName"` -} - -func init() { - t["CannotPowerOffVmInCluster"] = reflect.TypeOf((*CannotPowerOffVmInCluster)(nil)).Elem() -} - -type CannotPowerOffVmInClusterFault CannotPowerOffVmInCluster - -func init() { - t["CannotPowerOffVmInClusterFault"] = reflect.TypeOf((*CannotPowerOffVmInClusterFault)(nil)).Elem() -} - -type CannotReconfigureVsanWhenHaEnabled struct { - VsanFault -} - -func init() { - t["CannotReconfigureVsanWhenHaEnabled"] = reflect.TypeOf((*CannotReconfigureVsanWhenHaEnabled)(nil)).Elem() -} - -type CannotReconfigureVsanWhenHaEnabledFault CannotReconfigureVsanWhenHaEnabled - -func init() { - t["CannotReconfigureVsanWhenHaEnabledFault"] = reflect.TypeOf((*CannotReconfigureVsanWhenHaEnabledFault)(nil)).Elem() -} - -type CannotUseNetwork struct { - VmConfigFault - - Device string `xml:"device"` - Backing string `xml:"backing"` - Connected bool `xml:"connected"` - Reason string `xml:"reason"` - Network *ManagedObjectReference `xml:"network,omitempty"` -} - -func init() { - t["CannotUseNetwork"] = reflect.TypeOf((*CannotUseNetwork)(nil)).Elem() -} - -type CannotUseNetworkFault CannotUseNetwork - -func init() { - t["CannotUseNetworkFault"] = reflect.TypeOf((*CannotUseNetworkFault)(nil)).Elem() -} - -type Capability struct { - DynamicData - - ProvisioningSupported bool `xml:"provisioningSupported"` - MultiHostSupported bool `xml:"multiHostSupported"` - UserShellAccessSupported bool `xml:"userShellAccessSupported"` - SupportedEVCMode []EVCMode `xml:"supportedEVCMode,omitempty"` - NetworkBackupAndRestoreSupported *bool `xml:"networkBackupAndRestoreSupported"` -} - -func init() { - t["Capability"] = reflect.TypeOf((*Capability)(nil)).Elem() -} - -type CertMgrRefreshCACertificatesAndCRLsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host []ManagedObjectReference `xml:"host"` -} - -func init() { - t["CertMgrRefreshCACertificatesAndCRLsRequestType"] = reflect.TypeOf((*CertMgrRefreshCACertificatesAndCRLsRequestType)(nil)).Elem() -} - -type CertMgrRefreshCACertificatesAndCRLs_Task CertMgrRefreshCACertificatesAndCRLsRequestType - -func init() { - t["CertMgrRefreshCACertificatesAndCRLs_Task"] = reflect.TypeOf((*CertMgrRefreshCACertificatesAndCRLs_Task)(nil)).Elem() -} - -type CertMgrRefreshCACertificatesAndCRLs_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CertMgrRefreshCertificatesRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host []ManagedObjectReference `xml:"host"` -} - -func init() { - t["CertMgrRefreshCertificatesRequestType"] = reflect.TypeOf((*CertMgrRefreshCertificatesRequestType)(nil)).Elem() -} - -type CertMgrRefreshCertificates_Task CertMgrRefreshCertificatesRequestType - -func init() { - t["CertMgrRefreshCertificates_Task"] = reflect.TypeOf((*CertMgrRefreshCertificates_Task)(nil)).Elem() -} - -type CertMgrRefreshCertificates_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CertMgrRevokeCertificatesRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host []ManagedObjectReference `xml:"host"` -} - -func init() { - t["CertMgrRevokeCertificatesRequestType"] = reflect.TypeOf((*CertMgrRevokeCertificatesRequestType)(nil)).Elem() -} - -type CertMgrRevokeCertificates_Task CertMgrRevokeCertificatesRequestType - -func init() { - t["CertMgrRevokeCertificates_Task"] = reflect.TypeOf((*CertMgrRevokeCertificates_Task)(nil)).Elem() -} - -type CertMgrRevokeCertificates_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ChangeAccessMode ChangeAccessModeRequestType - -func init() { - t["ChangeAccessMode"] = reflect.TypeOf((*ChangeAccessMode)(nil)).Elem() -} - -type ChangeAccessModeRequestType struct { - This ManagedObjectReference `xml:"_this"` - Principal string `xml:"principal"` - IsGroup bool `xml:"isGroup"` - AccessMode HostAccessMode `xml:"accessMode"` -} - -func init() { - t["ChangeAccessModeRequestType"] = reflect.TypeOf((*ChangeAccessModeRequestType)(nil)).Elem() -} - -type ChangeAccessModeResponse struct { -} - -type ChangeFileAttributesInGuest ChangeFileAttributesInGuestRequestType - -func init() { - t["ChangeFileAttributesInGuest"] = reflect.TypeOf((*ChangeFileAttributesInGuest)(nil)).Elem() -} - -type ChangeFileAttributesInGuestRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Auth BaseGuestAuthentication `xml:"auth,typeattr"` - GuestFilePath string `xml:"guestFilePath"` - FileAttributes BaseGuestFileAttributes `xml:"fileAttributes,typeattr"` -} - -func init() { - t["ChangeFileAttributesInGuestRequestType"] = reflect.TypeOf((*ChangeFileAttributesInGuestRequestType)(nil)).Elem() -} - -type ChangeFileAttributesInGuestResponse struct { -} - -type ChangeLockdownMode ChangeLockdownModeRequestType - -func init() { - t["ChangeLockdownMode"] = reflect.TypeOf((*ChangeLockdownMode)(nil)).Elem() -} - -type ChangeLockdownModeRequestType struct { - This ManagedObjectReference `xml:"_this"` - Mode HostLockdownMode `xml:"mode"` -} - -func init() { - t["ChangeLockdownModeRequestType"] = reflect.TypeOf((*ChangeLockdownModeRequestType)(nil)).Elem() -} - -type ChangeLockdownModeResponse struct { -} - -type ChangeNFSUserPassword ChangeNFSUserPasswordRequestType - -func init() { - t["ChangeNFSUserPassword"] = reflect.TypeOf((*ChangeNFSUserPassword)(nil)).Elem() -} - -type ChangeNFSUserPasswordRequestType struct { - This ManagedObjectReference `xml:"_this"` - Password string `xml:"password"` -} - -func init() { - t["ChangeNFSUserPasswordRequestType"] = reflect.TypeOf((*ChangeNFSUserPasswordRequestType)(nil)).Elem() -} - -type ChangeNFSUserPasswordResponse struct { -} - -type ChangeOwner ChangeOwnerRequestType - -func init() { - t["ChangeOwner"] = reflect.TypeOf((*ChangeOwner)(nil)).Elem() -} - -type ChangeOwnerRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` - Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` - Owner string `xml:"owner"` -} - -func init() { - t["ChangeOwnerRequestType"] = reflect.TypeOf((*ChangeOwnerRequestType)(nil)).Elem() -} - -type ChangeOwnerResponse struct { -} - -type CheckAddHostEvcRequestType struct { - This ManagedObjectReference `xml:"_this"` - CnxSpec HostConnectSpec `xml:"cnxSpec"` -} - -func init() { - t["CheckAddHostEvcRequestType"] = reflect.TypeOf((*CheckAddHostEvcRequestType)(nil)).Elem() -} - -type CheckAddHostEvc_Task CheckAddHostEvcRequestType - -func init() { - t["CheckAddHostEvc_Task"] = reflect.TypeOf((*CheckAddHostEvc_Task)(nil)).Elem() -} - -type CheckAddHostEvc_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CheckAnswerFileStatusRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host []ManagedObjectReference `xml:"host"` -} - -func init() { - t["CheckAnswerFileStatusRequestType"] = reflect.TypeOf((*CheckAnswerFileStatusRequestType)(nil)).Elem() -} - -type CheckAnswerFileStatus_Task CheckAnswerFileStatusRequestType - -func init() { - t["CheckAnswerFileStatus_Task"] = reflect.TypeOf((*CheckAnswerFileStatus_Task)(nil)).Elem() -} - -type CheckAnswerFileStatus_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CheckCompatibilityRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Host *ManagedObjectReference `xml:"host,omitempty"` - Pool *ManagedObjectReference `xml:"pool,omitempty"` - TestType []string `xml:"testType,omitempty"` -} - -func init() { - t["CheckCompatibilityRequestType"] = reflect.TypeOf((*CheckCompatibilityRequestType)(nil)).Elem() -} - -type CheckCompatibility_Task CheckCompatibilityRequestType - -func init() { - t["CheckCompatibility_Task"] = reflect.TypeOf((*CheckCompatibility_Task)(nil)).Elem() -} - -type CheckCompatibility_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CheckComplianceRequestType struct { - This ManagedObjectReference `xml:"_this"` - Profile []ManagedObjectReference `xml:"profile,omitempty"` - Entity []ManagedObjectReference `xml:"entity,omitempty"` -} - -func init() { - t["CheckComplianceRequestType"] = reflect.TypeOf((*CheckComplianceRequestType)(nil)).Elem() -} - -type CheckCompliance_Task CheckComplianceRequestType - -func init() { - t["CheckCompliance_Task"] = reflect.TypeOf((*CheckCompliance_Task)(nil)).Elem() -} - -type CheckCompliance_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CheckConfigureEvcModeRequestType struct { - This ManagedObjectReference `xml:"_this"` - EvcModeKey string `xml:"evcModeKey"` -} - -func init() { - t["CheckConfigureEvcModeRequestType"] = reflect.TypeOf((*CheckConfigureEvcModeRequestType)(nil)).Elem() -} - -type CheckConfigureEvcMode_Task CheckConfigureEvcModeRequestType - -func init() { - t["CheckConfigureEvcMode_Task"] = reflect.TypeOf((*CheckConfigureEvcMode_Task)(nil)).Elem() -} - -type CheckConfigureEvcMode_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CheckCustomizationResources CheckCustomizationResourcesRequestType - -func init() { - t["CheckCustomizationResources"] = reflect.TypeOf((*CheckCustomizationResources)(nil)).Elem() -} - -type CheckCustomizationResourcesRequestType struct { - This ManagedObjectReference `xml:"_this"` - GuestOs string `xml:"guestOs"` -} - -func init() { - t["CheckCustomizationResourcesRequestType"] = reflect.TypeOf((*CheckCustomizationResourcesRequestType)(nil)).Elem() -} - -type CheckCustomizationResourcesResponse struct { -} - -type CheckCustomizationSpec CheckCustomizationSpecRequestType - -func init() { - t["CheckCustomizationSpec"] = reflect.TypeOf((*CheckCustomizationSpec)(nil)).Elem() -} - -type CheckCustomizationSpecRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec CustomizationSpec `xml:"spec"` -} - -func init() { - t["CheckCustomizationSpecRequestType"] = reflect.TypeOf((*CheckCustomizationSpecRequestType)(nil)).Elem() -} - -type CheckCustomizationSpecResponse struct { -} - -type CheckForUpdates CheckForUpdatesRequestType - -func init() { - t["CheckForUpdates"] = reflect.TypeOf((*CheckForUpdates)(nil)).Elem() -} - -type CheckForUpdatesRequestType struct { - This ManagedObjectReference `xml:"_this"` - Version string `xml:"version,omitempty"` -} - -func init() { - t["CheckForUpdatesRequestType"] = reflect.TypeOf((*CheckForUpdatesRequestType)(nil)).Elem() -} - -type CheckForUpdatesResponse struct { - Returnval *UpdateSet `xml:"returnval,omitempty"` -} - -type CheckHostPatchRequestType struct { - This ManagedObjectReference `xml:"_this"` - MetaUrls []string `xml:"metaUrls,omitempty"` - BundleUrls []string `xml:"bundleUrls,omitempty"` - Spec *HostPatchManagerPatchManagerOperationSpec `xml:"spec,omitempty"` -} - -func init() { - t["CheckHostPatchRequestType"] = reflect.TypeOf((*CheckHostPatchRequestType)(nil)).Elem() -} - -type CheckHostPatch_Task CheckHostPatchRequestType - -func init() { - t["CheckHostPatch_Task"] = reflect.TypeOf((*CheckHostPatch_Task)(nil)).Elem() -} - -type CheckHostPatch_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CheckLicenseFeature CheckLicenseFeatureRequestType - -func init() { - t["CheckLicenseFeature"] = reflect.TypeOf((*CheckLicenseFeature)(nil)).Elem() -} - -type CheckLicenseFeatureRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host *ManagedObjectReference `xml:"host,omitempty"` - FeatureKey string `xml:"featureKey"` -} - -func init() { - t["CheckLicenseFeatureRequestType"] = reflect.TypeOf((*CheckLicenseFeatureRequestType)(nil)).Elem() -} - -type CheckLicenseFeatureResponse struct { - Returnval bool `xml:"returnval"` -} - -type CheckMigrateRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Host *ManagedObjectReference `xml:"host,omitempty"` - Pool *ManagedObjectReference `xml:"pool,omitempty"` - State VirtualMachinePowerState `xml:"state,omitempty"` - TestType []string `xml:"testType,omitempty"` -} - -func init() { - t["CheckMigrateRequestType"] = reflect.TypeOf((*CheckMigrateRequestType)(nil)).Elem() -} - -type CheckMigrate_Task CheckMigrateRequestType - -func init() { - t["CheckMigrate_Task"] = reflect.TypeOf((*CheckMigrate_Task)(nil)).Elem() -} - -type CheckMigrate_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CheckProfileComplianceRequestType struct { - This ManagedObjectReference `xml:"_this"` - Entity []ManagedObjectReference `xml:"entity,omitempty"` -} - -func init() { - t["CheckProfileComplianceRequestType"] = reflect.TypeOf((*CheckProfileComplianceRequestType)(nil)).Elem() -} - -type CheckProfileCompliance_Task CheckProfileComplianceRequestType - -func init() { - t["CheckProfileCompliance_Task"] = reflect.TypeOf((*CheckProfileCompliance_Task)(nil)).Elem() -} - -type CheckProfileCompliance_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CheckRelocateRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Spec VirtualMachineRelocateSpec `xml:"spec"` - TestType []string `xml:"testType,omitempty"` -} - -func init() { - t["CheckRelocateRequestType"] = reflect.TypeOf((*CheckRelocateRequestType)(nil)).Elem() -} - -type CheckRelocate_Task CheckRelocateRequestType - -func init() { - t["CheckRelocate_Task"] = reflect.TypeOf((*CheckRelocate_Task)(nil)).Elem() -} - -type CheckRelocate_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CheckResult struct { - DynamicData - - Vm *ManagedObjectReference `xml:"vm,omitempty"` - Host *ManagedObjectReference `xml:"host,omitempty"` - Warning []LocalizedMethodFault `xml:"warning,omitempty"` - Error []LocalizedMethodFault `xml:"error,omitempty"` -} - -func init() { - t["CheckResult"] = reflect.TypeOf((*CheckResult)(nil)).Elem() -} - -type ChoiceOption struct { - OptionType - - ChoiceInfo []BaseElementDescription `xml:"choiceInfo,typeattr"` - DefaultIndex int32 `xml:"defaultIndex,omitempty"` -} - -func init() { - t["ChoiceOption"] = reflect.TypeOf((*ChoiceOption)(nil)).Elem() -} - -type ClearComplianceStatus ClearComplianceStatusRequestType - -func init() { - t["ClearComplianceStatus"] = reflect.TypeOf((*ClearComplianceStatus)(nil)).Elem() -} - -type ClearComplianceStatusRequestType struct { - This ManagedObjectReference `xml:"_this"` - Profile []ManagedObjectReference `xml:"profile,omitempty"` - Entity []ManagedObjectReference `xml:"entity,omitempty"` -} - -func init() { - t["ClearComplianceStatusRequestType"] = reflect.TypeOf((*ClearComplianceStatusRequestType)(nil)).Elem() -} - -type ClearComplianceStatusResponse struct { -} - -type ClearNFSUser ClearNFSUserRequestType - -func init() { - t["ClearNFSUser"] = reflect.TypeOf((*ClearNFSUser)(nil)).Elem() -} - -type ClearNFSUserRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["ClearNFSUserRequestType"] = reflect.TypeOf((*ClearNFSUserRequestType)(nil)).Elem() -} - -type ClearNFSUserResponse struct { -} - -type ClockSkew struct { - HostConfigFault -} - -func init() { - t["ClockSkew"] = reflect.TypeOf((*ClockSkew)(nil)).Elem() -} - -type ClockSkewFault ClockSkew - -func init() { - t["ClockSkewFault"] = reflect.TypeOf((*ClockSkewFault)(nil)).Elem() -} - -type CloneFromSnapshotNotSupported struct { - MigrationFault -} - -func init() { - t["CloneFromSnapshotNotSupported"] = reflect.TypeOf((*CloneFromSnapshotNotSupported)(nil)).Elem() -} - -type CloneFromSnapshotNotSupportedFault CloneFromSnapshotNotSupported - -func init() { - t["CloneFromSnapshotNotSupportedFault"] = reflect.TypeOf((*CloneFromSnapshotNotSupportedFault)(nil)).Elem() -} - -type CloneSession CloneSessionRequestType - -func init() { - t["CloneSession"] = reflect.TypeOf((*CloneSession)(nil)).Elem() -} - -type CloneSessionRequestType struct { - This ManagedObjectReference `xml:"_this"` - CloneTicket string `xml:"cloneTicket"` -} - -func init() { - t["CloneSessionRequestType"] = reflect.TypeOf((*CloneSessionRequestType)(nil)).Elem() -} - -type CloneSessionResponse struct { - Returnval UserSession `xml:"returnval"` -} - -type CloneVAppRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` - Target ManagedObjectReference `xml:"target"` - Spec VAppCloneSpec `xml:"spec"` -} - -func init() { - t["CloneVAppRequestType"] = reflect.TypeOf((*CloneVAppRequestType)(nil)).Elem() -} - -type CloneVApp_Task CloneVAppRequestType - -func init() { - t["CloneVApp_Task"] = reflect.TypeOf((*CloneVApp_Task)(nil)).Elem() -} - -type CloneVApp_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CloneVMRequestType struct { - This ManagedObjectReference `xml:"_this"` - Folder ManagedObjectReference `xml:"folder"` - Name string `xml:"name"` - Spec VirtualMachineCloneSpec `xml:"spec"` -} - -func init() { - t["CloneVMRequestType"] = reflect.TypeOf((*CloneVMRequestType)(nil)).Elem() -} - -type CloneVM_Task CloneVMRequestType - -func init() { - t["CloneVM_Task"] = reflect.TypeOf((*CloneVM_Task)(nil)).Elem() -} - -type CloneVM_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CloseInventoryViewFolder CloseInventoryViewFolderRequestType - -func init() { - t["CloseInventoryViewFolder"] = reflect.TypeOf((*CloseInventoryViewFolder)(nil)).Elem() -} - -type CloseInventoryViewFolderRequestType struct { - This ManagedObjectReference `xml:"_this"` - Entity []ManagedObjectReference `xml:"entity"` -} - -func init() { - t["CloseInventoryViewFolderRequestType"] = reflect.TypeOf((*CloseInventoryViewFolderRequestType)(nil)).Elem() -} - -type CloseInventoryViewFolderResponse struct { - Returnval []ManagedObjectReference `xml:"returnval,omitempty"` -} - -type ClusterAction struct { - DynamicData - - Type string `xml:"type"` - Target *ManagedObjectReference `xml:"target,omitempty"` -} - -func init() { - t["ClusterAction"] = reflect.TypeOf((*ClusterAction)(nil)).Elem() -} - -type ClusterActionHistory struct { - DynamicData - - Action BaseClusterAction `xml:"action,typeattr"` - Time time.Time `xml:"time"` -} - -func init() { - t["ClusterActionHistory"] = reflect.TypeOf((*ClusterActionHistory)(nil)).Elem() -} - -type ClusterAffinityRuleSpec struct { - ClusterRuleInfo - - Vm []ManagedObjectReference `xml:"vm"` -} - -func init() { - t["ClusterAffinityRuleSpec"] = reflect.TypeOf((*ClusterAffinityRuleSpec)(nil)).Elem() -} - -type ClusterAntiAffinityRuleSpec struct { - ClusterRuleInfo - - Vm []ManagedObjectReference `xml:"vm"` -} - -func init() { - t["ClusterAntiAffinityRuleSpec"] = reflect.TypeOf((*ClusterAntiAffinityRuleSpec)(nil)).Elem() -} - -type ClusterAttemptedVmInfo struct { - DynamicData - - Vm ManagedObjectReference `xml:"vm"` - Task *ManagedObjectReference `xml:"task,omitempty"` -} - -func init() { - t["ClusterAttemptedVmInfo"] = reflect.TypeOf((*ClusterAttemptedVmInfo)(nil)).Elem() -} - -type ClusterComplianceCheckedEvent struct { - ClusterEvent - - Profile ProfileEventArgument `xml:"profile"` -} - -func init() { - t["ClusterComplianceCheckedEvent"] = reflect.TypeOf((*ClusterComplianceCheckedEvent)(nil)).Elem() -} - -type ClusterComputeResourceSummary struct { - ComputeResourceSummary - - CurrentFailoverLevel int32 `xml:"currentFailoverLevel"` - AdmissionControlInfo BaseClusterDasAdmissionControlInfo `xml:"admissionControlInfo,omitempty,typeattr"` - NumVmotions int32 `xml:"numVmotions"` - TargetBalance int32 `xml:"targetBalance,omitempty"` - CurrentBalance int32 `xml:"currentBalance,omitempty"` - UsageSummary *ClusterUsageSummary `xml:"usageSummary,omitempty"` - CurrentEVCModeKey string `xml:"currentEVCModeKey,omitempty"` - DasData BaseClusterDasData `xml:"dasData,omitempty,typeattr"` -} - -func init() { - t["ClusterComputeResourceSummary"] = reflect.TypeOf((*ClusterComputeResourceSummary)(nil)).Elem() -} - -type ClusterConfigInfo struct { - DynamicData - - DasConfig ClusterDasConfigInfo `xml:"dasConfig"` - DasVmConfig []ClusterDasVmConfigInfo `xml:"dasVmConfig,omitempty"` - DrsConfig ClusterDrsConfigInfo `xml:"drsConfig"` - DrsVmConfig []ClusterDrsVmConfigInfo `xml:"drsVmConfig,omitempty"` - Rule []BaseClusterRuleInfo `xml:"rule,omitempty,typeattr"` -} - -func init() { - t["ClusterConfigInfo"] = reflect.TypeOf((*ClusterConfigInfo)(nil)).Elem() -} - -type ClusterConfigInfoEx struct { - ComputeResourceConfigInfo - - DasConfig ClusterDasConfigInfo `xml:"dasConfig"` - DasVmConfig []ClusterDasVmConfigInfo `xml:"dasVmConfig,omitempty"` - DrsConfig ClusterDrsConfigInfo `xml:"drsConfig"` - DrsVmConfig []ClusterDrsVmConfigInfo `xml:"drsVmConfig,omitempty"` - Rule []BaseClusterRuleInfo `xml:"rule,omitempty,typeattr"` - DpmConfigInfo *ClusterDpmConfigInfo `xml:"dpmConfigInfo,omitempty"` - DpmHostConfig []ClusterDpmHostConfigInfo `xml:"dpmHostConfig,omitempty"` - VsanConfigInfo *VsanClusterConfigInfo `xml:"vsanConfigInfo,omitempty"` - VsanHostConfig []VsanHostConfigInfo `xml:"vsanHostConfig,omitempty"` - Group []BaseClusterGroupInfo `xml:"group,omitempty,typeattr"` -} - -func init() { - t["ClusterConfigInfoEx"] = reflect.TypeOf((*ClusterConfigInfoEx)(nil)).Elem() -} - -type ClusterConfigSpec struct { - DynamicData - - DasConfig *ClusterDasConfigInfo `xml:"dasConfig,omitempty"` - DasVmConfigSpec []ClusterDasVmConfigSpec `xml:"dasVmConfigSpec,omitempty"` - DrsConfig *ClusterDrsConfigInfo `xml:"drsConfig,omitempty"` - DrsVmConfigSpec []ClusterDrsVmConfigSpec `xml:"drsVmConfigSpec,omitempty"` - RulesSpec []ClusterRuleSpec `xml:"rulesSpec,omitempty"` -} - -func init() { - t["ClusterConfigSpec"] = reflect.TypeOf((*ClusterConfigSpec)(nil)).Elem() -} - -type ClusterConfigSpecEx struct { - ComputeResourceConfigSpec - - DasConfig *ClusterDasConfigInfo `xml:"dasConfig,omitempty"` - DasVmConfigSpec []ClusterDasVmConfigSpec `xml:"dasVmConfigSpec,omitempty"` - DrsConfig *ClusterDrsConfigInfo `xml:"drsConfig,omitempty"` - DrsVmConfigSpec []ClusterDrsVmConfigSpec `xml:"drsVmConfigSpec,omitempty"` - RulesSpec []ClusterRuleSpec `xml:"rulesSpec,omitempty"` - DpmConfig *ClusterDpmConfigInfo `xml:"dpmConfig,omitempty"` - DpmHostConfigSpec []ClusterDpmHostConfigSpec `xml:"dpmHostConfigSpec,omitempty"` - VsanConfig *VsanClusterConfigInfo `xml:"vsanConfig,omitempty"` - VsanHostConfigSpec []VsanHostConfigInfo `xml:"vsanHostConfigSpec,omitempty"` - GroupSpec []ClusterGroupSpec `xml:"groupSpec,omitempty"` -} - -func init() { - t["ClusterConfigSpecEx"] = reflect.TypeOf((*ClusterConfigSpecEx)(nil)).Elem() -} - -type ClusterCreatedEvent struct { - ClusterEvent - - Parent FolderEventArgument `xml:"parent"` -} - -func init() { - t["ClusterCreatedEvent"] = reflect.TypeOf((*ClusterCreatedEvent)(nil)).Elem() -} - -type ClusterDasAamHostInfo struct { - ClusterDasHostInfo - - HostDasState []ClusterDasAamNodeState `xml:"hostDasState,omitempty"` - PrimaryHosts []string `xml:"primaryHosts,omitempty"` -} - -func init() { - t["ClusterDasAamHostInfo"] = reflect.TypeOf((*ClusterDasAamHostInfo)(nil)).Elem() -} - -type ClusterDasAamNodeState struct { - DynamicData - - Host ManagedObjectReference `xml:"host"` - Name string `xml:"name"` - ConfigState string `xml:"configState"` - RuntimeState string `xml:"runtimeState"` -} - -func init() { - t["ClusterDasAamNodeState"] = reflect.TypeOf((*ClusterDasAamNodeState)(nil)).Elem() -} - -type ClusterDasAdmissionControlInfo struct { - DynamicData -} - -func init() { - t["ClusterDasAdmissionControlInfo"] = reflect.TypeOf((*ClusterDasAdmissionControlInfo)(nil)).Elem() -} - -type ClusterDasAdmissionControlPolicy struct { - DynamicData -} - -func init() { - t["ClusterDasAdmissionControlPolicy"] = reflect.TypeOf((*ClusterDasAdmissionControlPolicy)(nil)).Elem() -} - -type ClusterDasAdvancedRuntimeInfo struct { - DynamicData - - DasHostInfo BaseClusterDasHostInfo `xml:"dasHostInfo,omitempty,typeattr"` - VmcpSupported *ClusterDasAdvancedRuntimeInfoVmcpCapabilityInfo `xml:"vmcpSupported,omitempty"` - HeartbeatDatastoreInfo []DasHeartbeatDatastoreInfo `xml:"heartbeatDatastoreInfo,omitempty"` -} - -func init() { - t["ClusterDasAdvancedRuntimeInfo"] = reflect.TypeOf((*ClusterDasAdvancedRuntimeInfo)(nil)).Elem() -} - -type ClusterDasAdvancedRuntimeInfoVmcpCapabilityInfo struct { - DynamicData - - StorageAPDSupported bool `xml:"storageAPDSupported"` - StoragePDLSupported bool `xml:"storagePDLSupported"` -} - -func init() { - t["ClusterDasAdvancedRuntimeInfoVmcpCapabilityInfo"] = reflect.TypeOf((*ClusterDasAdvancedRuntimeInfoVmcpCapabilityInfo)(nil)).Elem() -} - -type ClusterDasConfigInfo struct { - DynamicData - - Enabled *bool `xml:"enabled"` - VmMonitoring string `xml:"vmMonitoring,omitempty"` - HostMonitoring string `xml:"hostMonitoring,omitempty"` - VmComponentProtecting string `xml:"vmComponentProtecting,omitempty"` - FailoverLevel int32 `xml:"failoverLevel,omitempty"` - AdmissionControlPolicy BaseClusterDasAdmissionControlPolicy `xml:"admissionControlPolicy,omitempty,typeattr"` - AdmissionControlEnabled *bool `xml:"admissionControlEnabled"` - DefaultVmSettings *ClusterDasVmSettings `xml:"defaultVmSettings,omitempty"` - Option []BaseOptionValue `xml:"option,omitempty,typeattr"` - HeartbeatDatastore []ManagedObjectReference `xml:"heartbeatDatastore,omitempty"` - HBDatastoreCandidatePolicy string `xml:"hBDatastoreCandidatePolicy,omitempty"` -} - -func init() { - t["ClusterDasConfigInfo"] = reflect.TypeOf((*ClusterDasConfigInfo)(nil)).Elem() -} - -type ClusterDasData struct { - DynamicData -} - -func init() { - t["ClusterDasData"] = reflect.TypeOf((*ClusterDasData)(nil)).Elem() -} - -type ClusterDasDataSummary struct { - ClusterDasData - - HostListVersion int64 `xml:"hostListVersion"` - ClusterConfigVersion int64 `xml:"clusterConfigVersion"` - CompatListVersion int64 `xml:"compatListVersion"` -} - -func init() { - t["ClusterDasDataSummary"] = reflect.TypeOf((*ClusterDasDataSummary)(nil)).Elem() -} - -type ClusterDasFailoverLevelAdvancedRuntimeInfo struct { - ClusterDasAdvancedRuntimeInfo - - SlotInfo ClusterDasFailoverLevelAdvancedRuntimeInfoSlotInfo `xml:"slotInfo"` - TotalSlots int32 `xml:"totalSlots"` - UsedSlots int32 `xml:"usedSlots"` - UnreservedSlots int32 `xml:"unreservedSlots"` - TotalVms int32 `xml:"totalVms"` - TotalHosts int32 `xml:"totalHosts"` - TotalGoodHosts int32 `xml:"totalGoodHosts"` - HostSlots []ClusterDasFailoverLevelAdvancedRuntimeInfoHostSlots `xml:"hostSlots,omitempty"` - VmsRequiringMultipleSlots []ClusterDasFailoverLevelAdvancedRuntimeInfoVmSlots `xml:"vmsRequiringMultipleSlots,omitempty"` -} - -func init() { - t["ClusterDasFailoverLevelAdvancedRuntimeInfo"] = reflect.TypeOf((*ClusterDasFailoverLevelAdvancedRuntimeInfo)(nil)).Elem() -} - -type ClusterDasFailoverLevelAdvancedRuntimeInfoHostSlots struct { - DynamicData - - Host ManagedObjectReference `xml:"host"` - Slots int32 `xml:"slots"` -} - -func init() { - t["ClusterDasFailoverLevelAdvancedRuntimeInfoHostSlots"] = reflect.TypeOf((*ClusterDasFailoverLevelAdvancedRuntimeInfoHostSlots)(nil)).Elem() -} - -type ClusterDasFailoverLevelAdvancedRuntimeInfoSlotInfo struct { - DynamicData - - NumVcpus int32 `xml:"numVcpus"` - CpuMHz int32 `xml:"cpuMHz"` - MemoryMB int32 `xml:"memoryMB"` -} - -func init() { - t["ClusterDasFailoverLevelAdvancedRuntimeInfoSlotInfo"] = reflect.TypeOf((*ClusterDasFailoverLevelAdvancedRuntimeInfoSlotInfo)(nil)).Elem() -} - -type ClusterDasFailoverLevelAdvancedRuntimeInfoVmSlots struct { - DynamicData - - Vm ManagedObjectReference `xml:"vm"` - Slots int32 `xml:"slots"` -} - -func init() { - t["ClusterDasFailoverLevelAdvancedRuntimeInfoVmSlots"] = reflect.TypeOf((*ClusterDasFailoverLevelAdvancedRuntimeInfoVmSlots)(nil)).Elem() -} - -type ClusterDasFdmHostState struct { - DynamicData - - State string `xml:"state"` - StateReporter *ManagedObjectReference `xml:"stateReporter,omitempty"` -} - -func init() { - t["ClusterDasFdmHostState"] = reflect.TypeOf((*ClusterDasFdmHostState)(nil)).Elem() -} - -type ClusterDasHostInfo struct { - DynamicData -} - -func init() { - t["ClusterDasHostInfo"] = reflect.TypeOf((*ClusterDasHostInfo)(nil)).Elem() -} - -type ClusterDasHostRecommendation struct { - DynamicData - - Host ManagedObjectReference `xml:"host"` - DrsRating int32 `xml:"drsRating,omitempty"` -} - -func init() { - t["ClusterDasHostRecommendation"] = reflect.TypeOf((*ClusterDasHostRecommendation)(nil)).Elem() -} - -type ClusterDasVmConfigInfo struct { - DynamicData - - Key ManagedObjectReference `xml:"key"` - RestartPriority DasVmPriority `xml:"restartPriority,omitempty"` - PowerOffOnIsolation *bool `xml:"powerOffOnIsolation"` - DasSettings *ClusterDasVmSettings `xml:"dasSettings,omitempty"` -} - -func init() { - t["ClusterDasVmConfigInfo"] = reflect.TypeOf((*ClusterDasVmConfigInfo)(nil)).Elem() -} - -type ClusterDasVmConfigSpec struct { - ArrayUpdateSpec - - Info *ClusterDasVmConfigInfo `xml:"info,omitempty"` -} - -func init() { - t["ClusterDasVmConfigSpec"] = reflect.TypeOf((*ClusterDasVmConfigSpec)(nil)).Elem() -} - -type ClusterDasVmSettings struct { - DynamicData - - RestartPriority string `xml:"restartPriority,omitempty"` - IsolationResponse string `xml:"isolationResponse,omitempty"` - VmToolsMonitoringSettings *ClusterVmToolsMonitoringSettings `xml:"vmToolsMonitoringSettings,omitempty"` - VmComponentProtectionSettings *ClusterVmComponentProtectionSettings `xml:"vmComponentProtectionSettings,omitempty"` -} - -func init() { - t["ClusterDasVmSettings"] = reflect.TypeOf((*ClusterDasVmSettings)(nil)).Elem() -} - -type ClusterDestroyedEvent struct { - ClusterEvent -} - -func init() { - t["ClusterDestroyedEvent"] = reflect.TypeOf((*ClusterDestroyedEvent)(nil)).Elem() -} - -type ClusterDpmConfigInfo struct { - DynamicData - - Enabled *bool `xml:"enabled"` - DefaultDpmBehavior DpmBehavior `xml:"defaultDpmBehavior,omitempty"` - HostPowerActionRate int32 `xml:"hostPowerActionRate,omitempty"` - Option []BaseOptionValue `xml:"option,omitempty,typeattr"` -} - -func init() { - t["ClusterDpmConfigInfo"] = reflect.TypeOf((*ClusterDpmConfigInfo)(nil)).Elem() -} - -type ClusterDpmHostConfigInfo struct { - DynamicData - - Key ManagedObjectReference `xml:"key"` - Enabled *bool `xml:"enabled"` - Behavior DpmBehavior `xml:"behavior,omitempty"` -} - -func init() { - t["ClusterDpmHostConfigInfo"] = reflect.TypeOf((*ClusterDpmHostConfigInfo)(nil)).Elem() -} - -type ClusterDpmHostConfigSpec struct { - ArrayUpdateSpec - - Info *ClusterDpmHostConfigInfo `xml:"info,omitempty"` -} - -func init() { - t["ClusterDpmHostConfigSpec"] = reflect.TypeOf((*ClusterDpmHostConfigSpec)(nil)).Elem() -} - -type ClusterDrsConfigInfo struct { - DynamicData - - Enabled *bool `xml:"enabled"` - EnableVmBehaviorOverrides *bool `xml:"enableVmBehaviorOverrides"` - DefaultVmBehavior DrsBehavior `xml:"defaultVmBehavior,omitempty"` - VmotionRate int32 `xml:"vmotionRate,omitempty"` - Option []BaseOptionValue `xml:"option,omitempty,typeattr"` -} - -func init() { - t["ClusterDrsConfigInfo"] = reflect.TypeOf((*ClusterDrsConfigInfo)(nil)).Elem() -} - -type ClusterDrsFaults struct { - DynamicData - - Reason string `xml:"reason"` - FaultsByVm []BaseClusterDrsFaultsFaultsByVm `xml:"faultsByVm,typeattr"` -} - -func init() { - t["ClusterDrsFaults"] = reflect.TypeOf((*ClusterDrsFaults)(nil)).Elem() -} - -type ClusterDrsFaultsFaultsByVirtualDisk struct { - ClusterDrsFaultsFaultsByVm - - Disk *VirtualDiskId `xml:"disk,omitempty"` -} - -func init() { - t["ClusterDrsFaultsFaultsByVirtualDisk"] = reflect.TypeOf((*ClusterDrsFaultsFaultsByVirtualDisk)(nil)).Elem() -} - -type ClusterDrsFaultsFaultsByVm struct { - DynamicData - - Vm *ManagedObjectReference `xml:"vm,omitempty"` - Fault []LocalizedMethodFault `xml:"fault"` -} - -func init() { - t["ClusterDrsFaultsFaultsByVm"] = reflect.TypeOf((*ClusterDrsFaultsFaultsByVm)(nil)).Elem() -} - -type ClusterDrsMigration struct { - DynamicData - - Key string `xml:"key"` - Time time.Time `xml:"time"` - Vm ManagedObjectReference `xml:"vm"` - CpuLoad int32 `xml:"cpuLoad,omitempty"` - MemoryLoad int64 `xml:"memoryLoad,omitempty"` - Source ManagedObjectReference `xml:"source"` - SourceCpuLoad int32 `xml:"sourceCpuLoad,omitempty"` - SourceMemoryLoad int64 `xml:"sourceMemoryLoad,omitempty"` - Destination ManagedObjectReference `xml:"destination"` - DestinationCpuLoad int32 `xml:"destinationCpuLoad,omitempty"` - DestinationMemoryLoad int64 `xml:"destinationMemoryLoad,omitempty"` -} - -func init() { - t["ClusterDrsMigration"] = reflect.TypeOf((*ClusterDrsMigration)(nil)).Elem() -} - -type ClusterDrsRecommendation struct { - DynamicData - - Key string `xml:"key"` - Rating int32 `xml:"rating"` - Reason string `xml:"reason"` - ReasonText string `xml:"reasonText"` - MigrationList []ClusterDrsMigration `xml:"migrationList"` -} - -func init() { - t["ClusterDrsRecommendation"] = reflect.TypeOf((*ClusterDrsRecommendation)(nil)).Elem() -} - -type ClusterDrsVmConfigInfo struct { - DynamicData - - Key ManagedObjectReference `xml:"key"` - Enabled *bool `xml:"enabled"` - Behavior DrsBehavior `xml:"behavior,omitempty"` -} - -func init() { - t["ClusterDrsVmConfigInfo"] = reflect.TypeOf((*ClusterDrsVmConfigInfo)(nil)).Elem() -} - -type ClusterDrsVmConfigSpec struct { - ArrayUpdateSpec - - Info *ClusterDrsVmConfigInfo `xml:"info,omitempty"` -} - -func init() { - t["ClusterDrsVmConfigSpec"] = reflect.TypeOf((*ClusterDrsVmConfigSpec)(nil)).Elem() -} - -type ClusterEVCManagerCheckResult struct { - DynamicData - - EvcModeKey string `xml:"evcModeKey"` - Error LocalizedMethodFault `xml:"error"` - Host []ManagedObjectReference `xml:"host,omitempty"` -} - -func init() { - t["ClusterEVCManagerCheckResult"] = reflect.TypeOf((*ClusterEVCManagerCheckResult)(nil)).Elem() -} - -type ClusterEVCManagerEVCState struct { - DynamicData - - SupportedEVCMode []EVCMode `xml:"supportedEVCMode"` - CurrentEVCModeKey string `xml:"currentEVCModeKey,omitempty"` - GuaranteedCPUFeatures []HostCpuIdInfo `xml:"guaranteedCPUFeatures,omitempty"` - FeatureCapability []HostFeatureCapability `xml:"featureCapability,omitempty"` - FeatureMask []HostFeatureMask `xml:"featureMask,omitempty"` - FeatureRequirement []VirtualMachineFeatureRequirement `xml:"featureRequirement,omitempty"` -} - -func init() { - t["ClusterEVCManagerEVCState"] = reflect.TypeOf((*ClusterEVCManagerEVCState)(nil)).Elem() -} - -type ClusterEnterMaintenanceMode ClusterEnterMaintenanceModeRequestType - -func init() { - t["ClusterEnterMaintenanceMode"] = reflect.TypeOf((*ClusterEnterMaintenanceMode)(nil)).Elem() -} - -type ClusterEnterMaintenanceModeRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host []ManagedObjectReference `xml:"host"` - Option []BaseOptionValue `xml:"option,omitempty,typeattr"` -} - -func init() { - t["ClusterEnterMaintenanceModeRequestType"] = reflect.TypeOf((*ClusterEnterMaintenanceModeRequestType)(nil)).Elem() -} - -type ClusterEnterMaintenanceModeResponse struct { - Returnval ClusterEnterMaintenanceResult `xml:"returnval"` -} - -type ClusterEnterMaintenanceResult struct { - DynamicData - - Recommendations []ClusterRecommendation `xml:"recommendations,omitempty"` - Fault *ClusterDrsFaults `xml:"fault,omitempty"` -} - -func init() { - t["ClusterEnterMaintenanceResult"] = reflect.TypeOf((*ClusterEnterMaintenanceResult)(nil)).Elem() -} - -type ClusterEvent struct { - Event -} - -func init() { - t["ClusterEvent"] = reflect.TypeOf((*ClusterEvent)(nil)).Elem() -} - -type ClusterFailoverHostAdmissionControlInfo struct { - ClusterDasAdmissionControlInfo - - HostStatus []ClusterFailoverHostAdmissionControlInfoHostStatus `xml:"hostStatus,omitempty"` -} - -func init() { - t["ClusterFailoverHostAdmissionControlInfo"] = reflect.TypeOf((*ClusterFailoverHostAdmissionControlInfo)(nil)).Elem() -} - -type ClusterFailoverHostAdmissionControlInfoHostStatus struct { - DynamicData - - Host ManagedObjectReference `xml:"host"` - Status ManagedEntityStatus `xml:"status"` -} - -func init() { - t["ClusterFailoverHostAdmissionControlInfoHostStatus"] = reflect.TypeOf((*ClusterFailoverHostAdmissionControlInfoHostStatus)(nil)).Elem() -} - -type ClusterFailoverHostAdmissionControlPolicy struct { - ClusterDasAdmissionControlPolicy - - FailoverHosts []ManagedObjectReference `xml:"failoverHosts,omitempty"` -} - -func init() { - t["ClusterFailoverHostAdmissionControlPolicy"] = reflect.TypeOf((*ClusterFailoverHostAdmissionControlPolicy)(nil)).Elem() -} - -type ClusterFailoverLevelAdmissionControlInfo struct { - ClusterDasAdmissionControlInfo - - CurrentFailoverLevel int32 `xml:"currentFailoverLevel"` -} - -func init() { - t["ClusterFailoverLevelAdmissionControlInfo"] = reflect.TypeOf((*ClusterFailoverLevelAdmissionControlInfo)(nil)).Elem() -} - -type ClusterFailoverLevelAdmissionControlPolicy struct { - ClusterDasAdmissionControlPolicy - - FailoverLevel int32 `xml:"failoverLevel"` - SlotPolicy BaseClusterSlotPolicy `xml:"slotPolicy,omitempty,typeattr"` -} - -func init() { - t["ClusterFailoverLevelAdmissionControlPolicy"] = reflect.TypeOf((*ClusterFailoverLevelAdmissionControlPolicy)(nil)).Elem() -} - -type ClusterFailoverResourcesAdmissionControlInfo struct { - ClusterDasAdmissionControlInfo - - CurrentCpuFailoverResourcesPercent int32 `xml:"currentCpuFailoverResourcesPercent"` - CurrentMemoryFailoverResourcesPercent int32 `xml:"currentMemoryFailoverResourcesPercent"` -} - -func init() { - t["ClusterFailoverResourcesAdmissionControlInfo"] = reflect.TypeOf((*ClusterFailoverResourcesAdmissionControlInfo)(nil)).Elem() -} - -type ClusterFailoverResourcesAdmissionControlPolicy struct { - ClusterDasAdmissionControlPolicy - - CpuFailoverResourcesPercent int32 `xml:"cpuFailoverResourcesPercent"` - MemoryFailoverResourcesPercent int32 `xml:"memoryFailoverResourcesPercent"` -} - -func init() { - t["ClusterFailoverResourcesAdmissionControlPolicy"] = reflect.TypeOf((*ClusterFailoverResourcesAdmissionControlPolicy)(nil)).Elem() -} - -type ClusterFixedSizeSlotPolicy struct { - ClusterSlotPolicy - - Cpu int32 `xml:"cpu"` - Memory int32 `xml:"memory"` -} - -func init() { - t["ClusterFixedSizeSlotPolicy"] = reflect.TypeOf((*ClusterFixedSizeSlotPolicy)(nil)).Elem() -} - -type ClusterGroupInfo struct { - DynamicData - - Name string `xml:"name"` - UserCreated *bool `xml:"userCreated"` - UniqueID string `xml:"uniqueID,omitempty"` -} - -func init() { - t["ClusterGroupInfo"] = reflect.TypeOf((*ClusterGroupInfo)(nil)).Elem() -} - -type ClusterGroupSpec struct { - ArrayUpdateSpec - - Info BaseClusterGroupInfo `xml:"info,omitempty,typeattr"` -} - -func init() { - t["ClusterGroupSpec"] = reflect.TypeOf((*ClusterGroupSpec)(nil)).Elem() -} - -type ClusterHostGroup struct { - ClusterGroupInfo - - Host []ManagedObjectReference `xml:"host,omitempty"` -} - -func init() { - t["ClusterHostGroup"] = reflect.TypeOf((*ClusterHostGroup)(nil)).Elem() -} - -type ClusterHostPowerAction struct { - ClusterAction - - OperationType HostPowerOperationType `xml:"operationType"` - PowerConsumptionWatt int32 `xml:"powerConsumptionWatt,omitempty"` - CpuCapacityMHz int32 `xml:"cpuCapacityMHz,omitempty"` - MemCapacityMB int32 `xml:"memCapacityMB,omitempty"` -} - -func init() { - t["ClusterHostPowerAction"] = reflect.TypeOf((*ClusterHostPowerAction)(nil)).Elem() -} - -type ClusterHostRecommendation struct { - DynamicData - - Host ManagedObjectReference `xml:"host"` - Rating int32 `xml:"rating"` -} - -func init() { - t["ClusterHostRecommendation"] = reflect.TypeOf((*ClusterHostRecommendation)(nil)).Elem() -} - -type ClusterInitialPlacementAction struct { - ClusterAction - - TargetHost ManagedObjectReference `xml:"targetHost"` - Pool *ManagedObjectReference `xml:"pool,omitempty"` -} - -func init() { - t["ClusterInitialPlacementAction"] = reflect.TypeOf((*ClusterInitialPlacementAction)(nil)).Elem() -} - -type ClusterIoFilterInfo struct { - IoFilterInfo - - OpType string `xml:"opType"` -} - -func init() { - t["ClusterIoFilterInfo"] = reflect.TypeOf((*ClusterIoFilterInfo)(nil)).Elem() -} - -type ClusterMigrationAction struct { - ClusterAction - - DrsMigration *ClusterDrsMigration `xml:"drsMigration,omitempty"` -} - -func init() { - t["ClusterMigrationAction"] = reflect.TypeOf((*ClusterMigrationAction)(nil)).Elem() -} - -type ClusterNotAttemptedVmInfo struct { - DynamicData - - Vm ManagedObjectReference `xml:"vm"` - Fault LocalizedMethodFault `xml:"fault"` -} - -func init() { - t["ClusterNotAttemptedVmInfo"] = reflect.TypeOf((*ClusterNotAttemptedVmInfo)(nil)).Elem() -} - -type ClusterOvercommittedEvent struct { - ClusterEvent -} - -func init() { - t["ClusterOvercommittedEvent"] = reflect.TypeOf((*ClusterOvercommittedEvent)(nil)).Elem() -} - -type ClusterPowerOnVmResult struct { - DynamicData - - Attempted []ClusterAttemptedVmInfo `xml:"attempted,omitempty"` - NotAttempted []ClusterNotAttemptedVmInfo `xml:"notAttempted,omitempty"` - Recommendations []ClusterRecommendation `xml:"recommendations,omitempty"` -} - -func init() { - t["ClusterPowerOnVmResult"] = reflect.TypeOf((*ClusterPowerOnVmResult)(nil)).Elem() -} - -type ClusterProfileCompleteConfigSpec struct { - ClusterProfileConfigSpec - - ComplyProfile *ComplianceProfile `xml:"complyProfile,omitempty"` -} - -func init() { - t["ClusterProfileCompleteConfigSpec"] = reflect.TypeOf((*ClusterProfileCompleteConfigSpec)(nil)).Elem() -} - -type ClusterProfileConfigInfo struct { - ProfileConfigInfo - - ComplyProfile *ComplianceProfile `xml:"complyProfile,omitempty"` -} - -func init() { - t["ClusterProfileConfigInfo"] = reflect.TypeOf((*ClusterProfileConfigInfo)(nil)).Elem() -} - -type ClusterProfileConfigServiceCreateSpec struct { - ClusterProfileConfigSpec - - ServiceType []string `xml:"serviceType,omitempty"` -} - -func init() { - t["ClusterProfileConfigServiceCreateSpec"] = reflect.TypeOf((*ClusterProfileConfigServiceCreateSpec)(nil)).Elem() -} - -type ClusterProfileConfigSpec struct { - ClusterProfileCreateSpec -} - -func init() { - t["ClusterProfileConfigSpec"] = reflect.TypeOf((*ClusterProfileConfigSpec)(nil)).Elem() -} - -type ClusterProfileCreateSpec struct { - ProfileCreateSpec -} - -func init() { - t["ClusterProfileCreateSpec"] = reflect.TypeOf((*ClusterProfileCreateSpec)(nil)).Elem() -} - -type ClusterRecommendation struct { - DynamicData - - Key string `xml:"key"` - Type string `xml:"type"` - Time time.Time `xml:"time"` - Rating int32 `xml:"rating"` - Reason string `xml:"reason"` - ReasonText string `xml:"reasonText"` - WarningText string `xml:"warningText,omitempty"` - WarningDetails *LocalizableMessage `xml:"warningDetails,omitempty"` - Prerequisite []string `xml:"prerequisite,omitempty"` - Action []BaseClusterAction `xml:"action,omitempty,typeattr"` - Target *ManagedObjectReference `xml:"target,omitempty"` -} - -func init() { - t["ClusterRecommendation"] = reflect.TypeOf((*ClusterRecommendation)(nil)).Elem() -} - -type ClusterReconfiguredEvent struct { - ClusterEvent -} - -func init() { - t["ClusterReconfiguredEvent"] = reflect.TypeOf((*ClusterReconfiguredEvent)(nil)).Elem() -} - -type ClusterResourceUsageSummary struct { - DynamicData - - CpuUsedMHz int32 `xml:"cpuUsedMHz"` - CpuCapacityMHz int32 `xml:"cpuCapacityMHz"` - MemUsedMB int32 `xml:"memUsedMB"` - MemCapacityMB int32 `xml:"memCapacityMB"` - StorageUsedMB int64 `xml:"storageUsedMB"` - StorageCapacityMB int64 `xml:"storageCapacityMB"` -} - -func init() { - t["ClusterResourceUsageSummary"] = reflect.TypeOf((*ClusterResourceUsageSummary)(nil)).Elem() -} - -type ClusterRuleInfo struct { - DynamicData - - Key int32 `xml:"key,omitempty"` - Status ManagedEntityStatus `xml:"status,omitempty"` - Enabled *bool `xml:"enabled"` - Name string `xml:"name,omitempty"` - Mandatory *bool `xml:"mandatory"` - UserCreated *bool `xml:"userCreated"` - InCompliance *bool `xml:"inCompliance"` - RuleUuid string `xml:"ruleUuid,omitempty"` -} - -func init() { - t["ClusterRuleInfo"] = reflect.TypeOf((*ClusterRuleInfo)(nil)).Elem() -} - -type ClusterRuleSpec struct { - ArrayUpdateSpec - - Info BaseClusterRuleInfo `xml:"info,omitempty,typeattr"` -} - -func init() { - t["ClusterRuleSpec"] = reflect.TypeOf((*ClusterRuleSpec)(nil)).Elem() -} - -type ClusterSlotPolicy struct { - DynamicData -} - -func init() { - t["ClusterSlotPolicy"] = reflect.TypeOf((*ClusterSlotPolicy)(nil)).Elem() -} - -type ClusterStatusChangedEvent struct { - ClusterEvent - - OldStatus string `xml:"oldStatus"` - NewStatus string `xml:"newStatus"` -} - -func init() { - t["ClusterStatusChangedEvent"] = reflect.TypeOf((*ClusterStatusChangedEvent)(nil)).Elem() -} - -type ClusterUsageSummary struct { - DynamicData - - TotalCpuCapacityMhz int32 `xml:"totalCpuCapacityMhz"` - TotalMemCapacityMB int32 `xml:"totalMemCapacityMB"` - CpuReservationMhz int32 `xml:"cpuReservationMhz"` - MemReservationMB int32 `xml:"memReservationMB"` - PoweredOffCpuReservationMhz int32 `xml:"poweredOffCpuReservationMhz,omitempty"` - PoweredOffMemReservationMB int32 `xml:"poweredOffMemReservationMB,omitempty"` - CpuDemandMhz int32 `xml:"cpuDemandMhz"` - MemDemandMB int32 `xml:"memDemandMB"` - StatsGenNumber int64 `xml:"statsGenNumber"` - CpuEntitledMhz int32 `xml:"cpuEntitledMhz"` - MemEntitledMB int32 `xml:"memEntitledMB"` - PoweredOffVmCount int32 `xml:"poweredOffVmCount"` - TotalVmCount int32 `xml:"totalVmCount"` -} - -func init() { - t["ClusterUsageSummary"] = reflect.TypeOf((*ClusterUsageSummary)(nil)).Elem() -} - -type ClusterVmComponentProtectionSettings struct { - DynamicData - - VmStorageProtectionForAPD string `xml:"vmStorageProtectionForAPD,omitempty"` - EnableAPDTimeoutForHosts *bool `xml:"enableAPDTimeoutForHosts"` - VmTerminateDelayForAPDSec int32 `xml:"vmTerminateDelayForAPDSec,omitempty"` - VmReactionOnAPDCleared string `xml:"vmReactionOnAPDCleared,omitempty"` - VmStorageProtectionForPDL string `xml:"vmStorageProtectionForPDL,omitempty"` -} - -func init() { - t["ClusterVmComponentProtectionSettings"] = reflect.TypeOf((*ClusterVmComponentProtectionSettings)(nil)).Elem() -} - -type ClusterVmGroup struct { - ClusterGroupInfo - - Vm []ManagedObjectReference `xml:"vm,omitempty"` -} - -func init() { - t["ClusterVmGroup"] = reflect.TypeOf((*ClusterVmGroup)(nil)).Elem() -} - -type ClusterVmHostRuleInfo struct { - ClusterRuleInfo - - VmGroupName string `xml:"vmGroupName,omitempty"` - AffineHostGroupName string `xml:"affineHostGroupName,omitempty"` - AntiAffineHostGroupName string `xml:"antiAffineHostGroupName,omitempty"` -} - -func init() { - t["ClusterVmHostRuleInfo"] = reflect.TypeOf((*ClusterVmHostRuleInfo)(nil)).Elem() -} - -type ClusterVmToolsMonitoringSettings struct { - DynamicData - - Enabled *bool `xml:"enabled"` - VmMonitoring string `xml:"vmMonitoring,omitempty"` - ClusterSettings *bool `xml:"clusterSettings"` - FailureInterval int32 `xml:"failureInterval,omitempty"` - MinUpTime int32 `xml:"minUpTime,omitempty"` - MaxFailures int32 `xml:"maxFailures,omitempty"` - MaxFailureWindow int32 `xml:"maxFailureWindow,omitempty"` -} - -func init() { - t["ClusterVmToolsMonitoringSettings"] = reflect.TypeOf((*ClusterVmToolsMonitoringSettings)(nil)).Elem() -} - -type CollectorAddressUnset struct { - DvsFault -} - -func init() { - t["CollectorAddressUnset"] = reflect.TypeOf((*CollectorAddressUnset)(nil)).Elem() -} - -type CollectorAddressUnsetFault CollectorAddressUnset - -func init() { - t["CollectorAddressUnsetFault"] = reflect.TypeOf((*CollectorAddressUnsetFault)(nil)).Elem() -} - -type ComplianceFailure struct { - DynamicData - - FailureType string `xml:"failureType"` - Message LocalizableMessage `xml:"message"` - ExpressionName string `xml:"expressionName,omitempty"` -} - -func init() { - t["ComplianceFailure"] = reflect.TypeOf((*ComplianceFailure)(nil)).Elem() -} - -type ComplianceLocator struct { - DynamicData - - ExpressionName string `xml:"expressionName"` - ApplyPath ProfilePropertyPath `xml:"applyPath"` -} - -func init() { - t["ComplianceLocator"] = reflect.TypeOf((*ComplianceLocator)(nil)).Elem() -} - -type ComplianceProfile struct { - DynamicData - - Expression []BaseProfileExpression `xml:"expression,typeattr"` - RootExpression string `xml:"rootExpression"` -} - -func init() { - t["ComplianceProfile"] = reflect.TypeOf((*ComplianceProfile)(nil)).Elem() -} - -type ComplianceResult struct { - DynamicData - - Profile *ManagedObjectReference `xml:"profile,omitempty"` - ComplianceStatus string `xml:"complianceStatus"` - Entity *ManagedObjectReference `xml:"entity,omitempty"` - CheckTime *time.Time `xml:"checkTime"` - Failure []ComplianceFailure `xml:"failure,omitempty"` -} - -func init() { - t["ComplianceResult"] = reflect.TypeOf((*ComplianceResult)(nil)).Elem() -} - -type CompositePolicyOption struct { - PolicyOption - - Option []BasePolicyOption `xml:"option,omitempty,typeattr"` -} - -func init() { - t["CompositePolicyOption"] = reflect.TypeOf((*CompositePolicyOption)(nil)).Elem() -} - -type ComputeDiskPartitionInfo ComputeDiskPartitionInfoRequestType - -func init() { - t["ComputeDiskPartitionInfo"] = reflect.TypeOf((*ComputeDiskPartitionInfo)(nil)).Elem() -} - -type ComputeDiskPartitionInfoForResize ComputeDiskPartitionInfoForResizeRequestType - -func init() { - t["ComputeDiskPartitionInfoForResize"] = reflect.TypeOf((*ComputeDiskPartitionInfoForResize)(nil)).Elem() -} - -type ComputeDiskPartitionInfoForResizeRequestType struct { - This ManagedObjectReference `xml:"_this"` - Partition HostScsiDiskPartition `xml:"partition"` - BlockRange HostDiskPartitionBlockRange `xml:"blockRange"` - PartitionFormat string `xml:"partitionFormat,omitempty"` -} - -func init() { - t["ComputeDiskPartitionInfoForResizeRequestType"] = reflect.TypeOf((*ComputeDiskPartitionInfoForResizeRequestType)(nil)).Elem() -} - -type ComputeDiskPartitionInfoForResizeResponse struct { - Returnval HostDiskPartitionInfo `xml:"returnval"` -} - -type ComputeDiskPartitionInfoRequestType struct { - This ManagedObjectReference `xml:"_this"` - DevicePath string `xml:"devicePath"` - Layout HostDiskPartitionLayout `xml:"layout"` - PartitionFormat string `xml:"partitionFormat,omitempty"` -} - -func init() { - t["ComputeDiskPartitionInfoRequestType"] = reflect.TypeOf((*ComputeDiskPartitionInfoRequestType)(nil)).Elem() -} - -type ComputeDiskPartitionInfoResponse struct { - Returnval HostDiskPartitionInfo `xml:"returnval"` -} - -type ComputeResourceConfigInfo struct { - DynamicData - - VmSwapPlacement string `xml:"vmSwapPlacement"` - SpbmEnabled *bool `xml:"spbmEnabled"` - DefaultHardwareVersionKey string `xml:"defaultHardwareVersionKey,omitempty"` -} - -func init() { - t["ComputeResourceConfigInfo"] = reflect.TypeOf((*ComputeResourceConfigInfo)(nil)).Elem() -} - -type ComputeResourceConfigSpec struct { - DynamicData - - VmSwapPlacement string `xml:"vmSwapPlacement,omitempty"` - SpbmEnabled *bool `xml:"spbmEnabled"` - DefaultHardwareVersionKey string `xml:"defaultHardwareVersionKey,omitempty"` -} - -func init() { - t["ComputeResourceConfigSpec"] = reflect.TypeOf((*ComputeResourceConfigSpec)(nil)).Elem() -} - -type ComputeResourceEventArgument struct { - EntityEventArgument - - ComputeResource ManagedObjectReference `xml:"computeResource"` -} - -func init() { - t["ComputeResourceEventArgument"] = reflect.TypeOf((*ComputeResourceEventArgument)(nil)).Elem() -} - -type ComputeResourceHostSPBMLicenseInfo struct { - DynamicData - - Host ManagedObjectReference `xml:"host"` - LicenseState ComputeResourceHostSPBMLicenseInfoHostSPBMLicenseState `xml:"licenseState"` -} - -func init() { - t["ComputeResourceHostSPBMLicenseInfo"] = reflect.TypeOf((*ComputeResourceHostSPBMLicenseInfo)(nil)).Elem() -} - -type ComputeResourceSummary struct { - DynamicData - - TotalCpu int32 `xml:"totalCpu"` - TotalMemory int64 `xml:"totalMemory"` - NumCpuCores int16 `xml:"numCpuCores"` - NumCpuThreads int16 `xml:"numCpuThreads"` - EffectiveCpu int32 `xml:"effectiveCpu"` - EffectiveMemory int64 `xml:"effectiveMemory"` - NumHosts int32 `xml:"numHosts"` - NumEffectiveHosts int32 `xml:"numEffectiveHosts"` - OverallStatus ManagedEntityStatus `xml:"overallStatus"` -} - -func init() { - t["ComputeResourceSummary"] = reflect.TypeOf((*ComputeResourceSummary)(nil)).Elem() -} - -type ConcurrentAccess struct { - VimFault -} - -func init() { - t["ConcurrentAccess"] = reflect.TypeOf((*ConcurrentAccess)(nil)).Elem() -} - -type ConcurrentAccessFault ConcurrentAccess - -func init() { - t["ConcurrentAccessFault"] = reflect.TypeOf((*ConcurrentAccessFault)(nil)).Elem() -} - -type ConfigTarget struct { - DynamicData - - NumCpus int32 `xml:"numCpus"` - NumCpuCores int32 `xml:"numCpuCores"` - NumNumaNodes int32 `xml:"numNumaNodes"` - SmcPresent *bool `xml:"smcPresent"` - Datastore []VirtualMachineDatastoreInfo `xml:"datastore,omitempty"` - Network []VirtualMachineNetworkInfo `xml:"network,omitempty"` - OpaqueNetwork []OpaqueNetworkTargetInfo `xml:"opaqueNetwork,omitempty"` - DistributedVirtualPortgroup []DistributedVirtualPortgroupInfo `xml:"distributedVirtualPortgroup,omitempty"` - DistributedVirtualSwitch []DistributedVirtualSwitchInfo `xml:"distributedVirtualSwitch,omitempty"` - CdRom []VirtualMachineCdromInfo `xml:"cdRom,omitempty"` - Serial []VirtualMachineSerialInfo `xml:"serial,omitempty"` - Parallel []VirtualMachineParallelInfo `xml:"parallel,omitempty"` - Sound []VirtualMachineSoundInfo `xml:"sound,omitempty"` - Usb []VirtualMachineUsbInfo `xml:"usb,omitempty"` - Floppy []VirtualMachineFloppyInfo `xml:"floppy,omitempty"` - LegacyNetworkInfo []VirtualMachineLegacyNetworkSwitchInfo `xml:"legacyNetworkInfo,omitempty"` - ScsiPassthrough []VirtualMachineScsiPassthroughInfo `xml:"scsiPassthrough,omitempty"` - ScsiDisk []VirtualMachineScsiDiskDeviceInfo `xml:"scsiDisk,omitempty"` - IdeDisk []VirtualMachineIdeDiskDeviceInfo `xml:"ideDisk,omitempty"` - MaxMemMBOptimalPerf int32 `xml:"maxMemMBOptimalPerf"` - ResourcePool *ResourcePoolRuntimeInfo `xml:"resourcePool,omitempty"` - AutoVmotion *bool `xml:"autoVmotion"` - PciPassthrough []BaseVirtualMachinePciPassthroughInfo `xml:"pciPassthrough,omitempty,typeattr"` - Sriov []VirtualMachineSriovInfo `xml:"sriov,omitempty"` - VFlashModule []VirtualMachineVFlashModuleInfo `xml:"vFlashModule,omitempty"` - SharedGpuPassthroughTypes []VirtualMachinePciSharedGpuPassthroughInfo `xml:"sharedGpuPassthroughTypes,omitempty"` -} - -func init() { - t["ConfigTarget"] = reflect.TypeOf((*ConfigTarget)(nil)).Elem() -} - -type ConfigureDatastoreIORMRequestType struct { - This ManagedObjectReference `xml:"_this"` - Datastore ManagedObjectReference `xml:"datastore"` - Spec StorageIORMConfigSpec `xml:"spec"` -} - -func init() { - t["ConfigureDatastoreIORMRequestType"] = reflect.TypeOf((*ConfigureDatastoreIORMRequestType)(nil)).Elem() -} - -type ConfigureDatastoreIORM_Task ConfigureDatastoreIORMRequestType - -func init() { - t["ConfigureDatastoreIORM_Task"] = reflect.TypeOf((*ConfigureDatastoreIORM_Task)(nil)).Elem() -} - -type ConfigureDatastoreIORM_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ConfigureDatastorePrincipal ConfigureDatastorePrincipalRequestType - -func init() { - t["ConfigureDatastorePrincipal"] = reflect.TypeOf((*ConfigureDatastorePrincipal)(nil)).Elem() -} - -type ConfigureDatastorePrincipalRequestType struct { - This ManagedObjectReference `xml:"_this"` - UserName string `xml:"userName"` - Password string `xml:"password,omitempty"` -} - -func init() { - t["ConfigureDatastorePrincipalRequestType"] = reflect.TypeOf((*ConfigureDatastorePrincipalRequestType)(nil)).Elem() -} - -type ConfigureDatastorePrincipalResponse struct { -} - -type ConfigureEvcModeRequestType struct { - This ManagedObjectReference `xml:"_this"` - EvcModeKey string `xml:"evcModeKey"` -} - -func init() { - t["ConfigureEvcModeRequestType"] = reflect.TypeOf((*ConfigureEvcModeRequestType)(nil)).Elem() -} - -type ConfigureEvcMode_Task ConfigureEvcModeRequestType - -func init() { - t["ConfigureEvcMode_Task"] = reflect.TypeOf((*ConfigureEvcMode_Task)(nil)).Elem() -} - -type ConfigureEvcMode_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ConfigureHostCacheRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec HostCacheConfigurationSpec `xml:"spec"` -} - -func init() { - t["ConfigureHostCacheRequestType"] = reflect.TypeOf((*ConfigureHostCacheRequestType)(nil)).Elem() -} - -type ConfigureHostCache_Task ConfigureHostCacheRequestType - -func init() { - t["ConfigureHostCache_Task"] = reflect.TypeOf((*ConfigureHostCache_Task)(nil)).Elem() -} - -type ConfigureHostCache_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ConfigureLicenseSource ConfigureLicenseSourceRequestType - -func init() { - t["ConfigureLicenseSource"] = reflect.TypeOf((*ConfigureLicenseSource)(nil)).Elem() -} - -type ConfigureLicenseSourceRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host *ManagedObjectReference `xml:"host,omitempty"` - LicenseSource BaseLicenseSource `xml:"licenseSource,typeattr"` -} - -func init() { - t["ConfigureLicenseSourceRequestType"] = reflect.TypeOf((*ConfigureLicenseSourceRequestType)(nil)).Elem() -} - -type ConfigureLicenseSourceResponse struct { -} - -type ConfigurePowerPolicy ConfigurePowerPolicyRequestType - -func init() { - t["ConfigurePowerPolicy"] = reflect.TypeOf((*ConfigurePowerPolicy)(nil)).Elem() -} - -type ConfigurePowerPolicyRequestType struct { - This ManagedObjectReference `xml:"_this"` - Key int32 `xml:"key"` -} - -func init() { - t["ConfigurePowerPolicyRequestType"] = reflect.TypeOf((*ConfigurePowerPolicyRequestType)(nil)).Elem() -} - -type ConfigurePowerPolicyResponse struct { -} - -type ConfigureStorageDrsForPodRequestType struct { - This ManagedObjectReference `xml:"_this"` - Pod ManagedObjectReference `xml:"pod"` - Spec StorageDrsConfigSpec `xml:"spec"` - Modify bool `xml:"modify"` -} - -func init() { - t["ConfigureStorageDrsForPodRequestType"] = reflect.TypeOf((*ConfigureStorageDrsForPodRequestType)(nil)).Elem() -} - -type ConfigureStorageDrsForPod_Task ConfigureStorageDrsForPodRequestType - -func init() { - t["ConfigureStorageDrsForPod_Task"] = reflect.TypeOf((*ConfigureStorageDrsForPod_Task)(nil)).Elem() -} - -type ConfigureStorageDrsForPod_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ConfigureVFlashResourceExRequestType struct { - This ManagedObjectReference `xml:"_this"` - DevicePath []string `xml:"devicePath,omitempty"` -} - -func init() { - t["ConfigureVFlashResourceExRequestType"] = reflect.TypeOf((*ConfigureVFlashResourceExRequestType)(nil)).Elem() -} - -type ConfigureVFlashResourceEx_Task ConfigureVFlashResourceExRequestType - -func init() { - t["ConfigureVFlashResourceEx_Task"] = reflect.TypeOf((*ConfigureVFlashResourceEx_Task)(nil)).Elem() -} - -type ConfigureVFlashResourceEx_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ConflictingConfiguration struct { - DvsFault - - ConfigInConflict []ConflictingConfigurationConfig `xml:"configInConflict"` -} - -func init() { - t["ConflictingConfiguration"] = reflect.TypeOf((*ConflictingConfiguration)(nil)).Elem() -} - -type ConflictingConfigurationConfig struct { - DynamicData - - Entity *ManagedObjectReference `xml:"entity,omitempty"` - PropertyPath string `xml:"propertyPath"` -} - -func init() { - t["ConflictingConfigurationConfig"] = reflect.TypeOf((*ConflictingConfigurationConfig)(nil)).Elem() -} - -type ConflictingConfigurationFault ConflictingConfiguration - -func init() { - t["ConflictingConfigurationFault"] = reflect.TypeOf((*ConflictingConfigurationFault)(nil)).Elem() -} - -type ConflictingDatastoreFound struct { - RuntimeFault - - Name string `xml:"name"` - Url string `xml:"url"` -} - -func init() { - t["ConflictingDatastoreFound"] = reflect.TypeOf((*ConflictingDatastoreFound)(nil)).Elem() -} - -type ConflictingDatastoreFoundFault ConflictingDatastoreFound - -func init() { - t["ConflictingDatastoreFoundFault"] = reflect.TypeOf((*ConflictingDatastoreFoundFault)(nil)).Elem() -} - -type ConnectedIso struct { - OvfExport - - Cdrom VirtualCdrom `xml:"cdrom"` - Filename string `xml:"filename"` -} - -func init() { - t["ConnectedIso"] = reflect.TypeOf((*ConnectedIso)(nil)).Elem() -} - -type ConnectedIsoFault ConnectedIso - -func init() { - t["ConnectedIsoFault"] = reflect.TypeOf((*ConnectedIsoFault)(nil)).Elem() -} - -type ConsolidateVMDisksRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["ConsolidateVMDisksRequestType"] = reflect.TypeOf((*ConsolidateVMDisksRequestType)(nil)).Elem() -} - -type ConsolidateVMDisks_Task ConsolidateVMDisksRequestType - -func init() { - t["ConsolidateVMDisks_Task"] = reflect.TypeOf((*ConsolidateVMDisks_Task)(nil)).Elem() -} - -type ConsolidateVMDisks_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ContinueRetrievePropertiesEx ContinueRetrievePropertiesExRequestType - -func init() { - t["ContinueRetrievePropertiesEx"] = reflect.TypeOf((*ContinueRetrievePropertiesEx)(nil)).Elem() -} - -type ContinueRetrievePropertiesExRequestType struct { - This ManagedObjectReference `xml:"_this"` - Token string `xml:"token"` -} - -func init() { - t["ContinueRetrievePropertiesExRequestType"] = reflect.TypeOf((*ContinueRetrievePropertiesExRequestType)(nil)).Elem() -} - -type ContinueRetrievePropertiesExResponse struct { - Returnval RetrieveResult `xml:"returnval"` -} - -type CopyDatastoreFileRequestType struct { - This ManagedObjectReference `xml:"_this"` - SourceName string `xml:"sourceName"` - SourceDatacenter *ManagedObjectReference `xml:"sourceDatacenter,omitempty"` - DestinationName string `xml:"destinationName"` - DestinationDatacenter *ManagedObjectReference `xml:"destinationDatacenter,omitempty"` - Force *bool `xml:"force"` -} - -func init() { - t["CopyDatastoreFileRequestType"] = reflect.TypeOf((*CopyDatastoreFileRequestType)(nil)).Elem() -} - -type CopyDatastoreFile_Task CopyDatastoreFileRequestType - -func init() { - t["CopyDatastoreFile_Task"] = reflect.TypeOf((*CopyDatastoreFile_Task)(nil)).Elem() -} - -type CopyDatastoreFile_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CopyVirtualDiskRequestType struct { - This ManagedObjectReference `xml:"_this"` - SourceName string `xml:"sourceName"` - SourceDatacenter *ManagedObjectReference `xml:"sourceDatacenter,omitempty"` - DestName string `xml:"destName"` - DestDatacenter *ManagedObjectReference `xml:"destDatacenter,omitempty"` - DestSpec BaseVirtualDiskSpec `xml:"destSpec,omitempty,typeattr"` - Force *bool `xml:"force"` -} - -func init() { - t["CopyVirtualDiskRequestType"] = reflect.TypeOf((*CopyVirtualDiskRequestType)(nil)).Elem() -} - -type CopyVirtualDisk_Task CopyVirtualDiskRequestType - -func init() { - t["CopyVirtualDisk_Task"] = reflect.TypeOf((*CopyVirtualDisk_Task)(nil)).Elem() -} - -type CopyVirtualDisk_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CpuCompatibilityUnknown struct { - CpuIncompatible -} - -func init() { - t["CpuCompatibilityUnknown"] = reflect.TypeOf((*CpuCompatibilityUnknown)(nil)).Elem() -} - -type CpuCompatibilityUnknownFault CpuCompatibilityUnknown - -func init() { - t["CpuCompatibilityUnknownFault"] = reflect.TypeOf((*CpuCompatibilityUnknownFault)(nil)).Elem() -} - -type CpuHotPlugNotSupported struct { - VmConfigFault -} - -func init() { - t["CpuHotPlugNotSupported"] = reflect.TypeOf((*CpuHotPlugNotSupported)(nil)).Elem() -} - -type CpuHotPlugNotSupportedFault CpuHotPlugNotSupported - -func init() { - t["CpuHotPlugNotSupportedFault"] = reflect.TypeOf((*CpuHotPlugNotSupportedFault)(nil)).Elem() -} - -type CpuIncompatible struct { - VirtualHardwareCompatibilityIssue - - Level int32 `xml:"level"` - RegisterName string `xml:"registerName"` - RegisterBits string `xml:"registerBits,omitempty"` - DesiredBits string `xml:"desiredBits,omitempty"` - Host *ManagedObjectReference `xml:"host,omitempty"` -} - -func init() { - t["CpuIncompatible"] = reflect.TypeOf((*CpuIncompatible)(nil)).Elem() -} - -type CpuIncompatible1ECX struct { - CpuIncompatible - - Sse3 bool `xml:"sse3"` - Pclmulqdq *bool `xml:"pclmulqdq"` - Ssse3 bool `xml:"ssse3"` - Sse41 bool `xml:"sse41"` - Sse42 bool `xml:"sse42"` - Aes *bool `xml:"aes"` - Other bool `xml:"other"` - OtherOnly bool `xml:"otherOnly"` -} - -func init() { - t["CpuIncompatible1ECX"] = reflect.TypeOf((*CpuIncompatible1ECX)(nil)).Elem() -} - -type CpuIncompatible1ECXFault CpuIncompatible1ECX - -func init() { - t["CpuIncompatible1ECXFault"] = reflect.TypeOf((*CpuIncompatible1ECXFault)(nil)).Elem() -} - -type CpuIncompatible81EDX struct { - CpuIncompatible - - Nx bool `xml:"nx"` - Ffxsr bool `xml:"ffxsr"` - Rdtscp bool `xml:"rdtscp"` - Lm bool `xml:"lm"` - Other bool `xml:"other"` - OtherOnly bool `xml:"otherOnly"` -} - -func init() { - t["CpuIncompatible81EDX"] = reflect.TypeOf((*CpuIncompatible81EDX)(nil)).Elem() -} - -type CpuIncompatible81EDXFault CpuIncompatible81EDX - -func init() { - t["CpuIncompatible81EDXFault"] = reflect.TypeOf((*CpuIncompatible81EDXFault)(nil)).Elem() -} - -type CpuIncompatibleFault BaseCpuIncompatible - -func init() { - t["CpuIncompatibleFault"] = reflect.TypeOf((*CpuIncompatibleFault)(nil)).Elem() -} - -type CreateAlarm CreateAlarmRequestType - -func init() { - t["CreateAlarm"] = reflect.TypeOf((*CreateAlarm)(nil)).Elem() -} - -type CreateAlarmRequestType struct { - This ManagedObjectReference `xml:"_this"` - Entity ManagedObjectReference `xml:"entity"` - Spec BaseAlarmSpec `xml:"spec,typeattr"` -} - -func init() { - t["CreateAlarmRequestType"] = reflect.TypeOf((*CreateAlarmRequestType)(nil)).Elem() -} - -type CreateAlarmResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreateChildVMRequestType struct { - This ManagedObjectReference `xml:"_this"` - Config VirtualMachineConfigSpec `xml:"config"` - Host *ManagedObjectReference `xml:"host,omitempty"` -} - -func init() { - t["CreateChildVMRequestType"] = reflect.TypeOf((*CreateChildVMRequestType)(nil)).Elem() -} - -type CreateChildVM_Task CreateChildVMRequestType - -func init() { - t["CreateChildVM_Task"] = reflect.TypeOf((*CreateChildVM_Task)(nil)).Elem() -} - -type CreateChildVM_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreateCluster CreateClusterRequestType - -func init() { - t["CreateCluster"] = reflect.TypeOf((*CreateCluster)(nil)).Elem() -} - -type CreateClusterEx CreateClusterExRequestType - -func init() { - t["CreateClusterEx"] = reflect.TypeOf((*CreateClusterEx)(nil)).Elem() -} - -type CreateClusterExRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` - Spec ClusterConfigSpecEx `xml:"spec"` -} - -func init() { - t["CreateClusterExRequestType"] = reflect.TypeOf((*CreateClusterExRequestType)(nil)).Elem() -} - -type CreateClusterExResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreateClusterRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` - Spec ClusterConfigSpec `xml:"spec"` -} - -func init() { - t["CreateClusterRequestType"] = reflect.TypeOf((*CreateClusterRequestType)(nil)).Elem() -} - -type CreateClusterResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreateCollectorForEvents CreateCollectorForEventsRequestType - -func init() { - t["CreateCollectorForEvents"] = reflect.TypeOf((*CreateCollectorForEvents)(nil)).Elem() -} - -type CreateCollectorForEventsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Filter EventFilterSpec `xml:"filter"` -} - -func init() { - t["CreateCollectorForEventsRequestType"] = reflect.TypeOf((*CreateCollectorForEventsRequestType)(nil)).Elem() -} - -type CreateCollectorForEventsResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreateCollectorForTasks CreateCollectorForTasksRequestType - -func init() { - t["CreateCollectorForTasks"] = reflect.TypeOf((*CreateCollectorForTasks)(nil)).Elem() -} - -type CreateCollectorForTasksRequestType struct { - This ManagedObjectReference `xml:"_this"` - Filter TaskFilterSpec `xml:"filter"` -} - -func init() { - t["CreateCollectorForTasksRequestType"] = reflect.TypeOf((*CreateCollectorForTasksRequestType)(nil)).Elem() -} - -type CreateCollectorForTasksResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreateContainerView CreateContainerViewRequestType - -func init() { - t["CreateContainerView"] = reflect.TypeOf((*CreateContainerView)(nil)).Elem() -} - -type CreateContainerViewRequestType struct { - This ManagedObjectReference `xml:"_this"` - Container ManagedObjectReference `xml:"container"` - Type []string `xml:"type,omitempty"` - Recursive bool `xml:"recursive"` -} - -func init() { - t["CreateContainerViewRequestType"] = reflect.TypeOf((*CreateContainerViewRequestType)(nil)).Elem() -} - -type CreateContainerViewResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreateCustomizationSpec CreateCustomizationSpecRequestType - -func init() { - t["CreateCustomizationSpec"] = reflect.TypeOf((*CreateCustomizationSpec)(nil)).Elem() -} - -type CreateCustomizationSpecRequestType struct { - This ManagedObjectReference `xml:"_this"` - Item CustomizationSpecItem `xml:"item"` -} - -func init() { - t["CreateCustomizationSpecRequestType"] = reflect.TypeOf((*CreateCustomizationSpecRequestType)(nil)).Elem() -} - -type CreateCustomizationSpecResponse struct { -} - -type CreateDVPortgroupRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec DVPortgroupConfigSpec `xml:"spec"` -} - -func init() { - t["CreateDVPortgroupRequestType"] = reflect.TypeOf((*CreateDVPortgroupRequestType)(nil)).Elem() -} - -type CreateDVPortgroup_Task CreateDVPortgroupRequestType - -func init() { - t["CreateDVPortgroup_Task"] = reflect.TypeOf((*CreateDVPortgroup_Task)(nil)).Elem() -} - -type CreateDVPortgroup_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreateDVSRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec DVSCreateSpec `xml:"spec"` -} - -func init() { - t["CreateDVSRequestType"] = reflect.TypeOf((*CreateDVSRequestType)(nil)).Elem() -} - -type CreateDVS_Task CreateDVSRequestType - -func init() { - t["CreateDVS_Task"] = reflect.TypeOf((*CreateDVS_Task)(nil)).Elem() -} - -type CreateDVS_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreateDatacenter CreateDatacenterRequestType - -func init() { - t["CreateDatacenter"] = reflect.TypeOf((*CreateDatacenter)(nil)).Elem() -} - -type CreateDatacenterRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` -} - -func init() { - t["CreateDatacenterRequestType"] = reflect.TypeOf((*CreateDatacenterRequestType)(nil)).Elem() -} - -type CreateDatacenterResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreateDefaultProfile CreateDefaultProfileRequestType - -func init() { - t["CreateDefaultProfile"] = reflect.TypeOf((*CreateDefaultProfile)(nil)).Elem() -} - -type CreateDefaultProfileRequestType struct { - This ManagedObjectReference `xml:"_this"` - ProfileType string `xml:"profileType"` - ProfileTypeName string `xml:"profileTypeName,omitempty"` - Profile *ManagedObjectReference `xml:"profile,omitempty"` -} - -func init() { - t["CreateDefaultProfileRequestType"] = reflect.TypeOf((*CreateDefaultProfileRequestType)(nil)).Elem() -} - -type CreateDefaultProfileResponse struct { - Returnval BaseApplyProfile `xml:"returnval,typeattr"` -} - -type CreateDescriptor CreateDescriptorRequestType - -func init() { - t["CreateDescriptor"] = reflect.TypeOf((*CreateDescriptor)(nil)).Elem() -} - -type CreateDescriptorRequestType struct { - This ManagedObjectReference `xml:"_this"` - Obj ManagedObjectReference `xml:"obj"` - Cdp OvfCreateDescriptorParams `xml:"cdp"` -} - -func init() { - t["CreateDescriptorRequestType"] = reflect.TypeOf((*CreateDescriptorRequestType)(nil)).Elem() -} - -type CreateDescriptorResponse struct { - Returnval OvfCreateDescriptorResult `xml:"returnval"` -} - -type CreateDiagnosticPartition CreateDiagnosticPartitionRequestType - -func init() { - t["CreateDiagnosticPartition"] = reflect.TypeOf((*CreateDiagnosticPartition)(nil)).Elem() -} - -type CreateDiagnosticPartitionRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec HostDiagnosticPartitionCreateSpec `xml:"spec"` -} - -func init() { - t["CreateDiagnosticPartitionRequestType"] = reflect.TypeOf((*CreateDiagnosticPartitionRequestType)(nil)).Elem() -} - -type CreateDiagnosticPartitionResponse struct { -} - -type CreateDirectory CreateDirectoryRequestType - -func init() { - t["CreateDirectory"] = reflect.TypeOf((*CreateDirectory)(nil)).Elem() -} - -type CreateDirectoryRequestType struct { - This ManagedObjectReference `xml:"_this"` - Datastore ManagedObjectReference `xml:"datastore"` - DisplayName string `xml:"displayName,omitempty"` - Policy string `xml:"policy,omitempty"` -} - -func init() { - t["CreateDirectoryRequestType"] = reflect.TypeOf((*CreateDirectoryRequestType)(nil)).Elem() -} - -type CreateDirectoryResponse struct { - Returnval string `xml:"returnval"` -} - -type CreateFilter CreateFilterRequestType - -func init() { - t["CreateFilter"] = reflect.TypeOf((*CreateFilter)(nil)).Elem() -} - -type CreateFilterRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec PropertyFilterSpec `xml:"spec"` - PartialUpdates bool `xml:"partialUpdates"` -} - -func init() { - t["CreateFilterRequestType"] = reflect.TypeOf((*CreateFilterRequestType)(nil)).Elem() -} - -type CreateFilterResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreateFolder CreateFolderRequestType - -func init() { - t["CreateFolder"] = reflect.TypeOf((*CreateFolder)(nil)).Elem() -} - -type CreateFolderRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` -} - -func init() { - t["CreateFolderRequestType"] = reflect.TypeOf((*CreateFolderRequestType)(nil)).Elem() -} - -type CreateFolderResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreateGroup CreateGroupRequestType - -func init() { - t["CreateGroup"] = reflect.TypeOf((*CreateGroup)(nil)).Elem() -} - -type CreateGroupRequestType struct { - This ManagedObjectReference `xml:"_this"` - Group BaseHostAccountSpec `xml:"group,typeattr"` -} - -func init() { - t["CreateGroupRequestType"] = reflect.TypeOf((*CreateGroupRequestType)(nil)).Elem() -} - -type CreateGroupResponse struct { -} - -type CreateImportSpec CreateImportSpecRequestType - -func init() { - t["CreateImportSpec"] = reflect.TypeOf((*CreateImportSpec)(nil)).Elem() -} - -type CreateImportSpecRequestType struct { - This ManagedObjectReference `xml:"_this"` - OvfDescriptor string `xml:"ovfDescriptor"` - ResourcePool ManagedObjectReference `xml:"resourcePool"` - Datastore ManagedObjectReference `xml:"datastore"` - Cisp OvfCreateImportSpecParams `xml:"cisp"` -} - -func init() { - t["CreateImportSpecRequestType"] = reflect.TypeOf((*CreateImportSpecRequestType)(nil)).Elem() -} - -type CreateImportSpecResponse struct { - Returnval OvfCreateImportSpecResult `xml:"returnval"` -} - -type CreateInventoryView CreateInventoryViewRequestType - -func init() { - t["CreateInventoryView"] = reflect.TypeOf((*CreateInventoryView)(nil)).Elem() -} - -type CreateInventoryViewRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["CreateInventoryViewRequestType"] = reflect.TypeOf((*CreateInventoryViewRequestType)(nil)).Elem() -} - -type CreateInventoryViewResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreateIpPool CreateIpPoolRequestType - -func init() { - t["CreateIpPool"] = reflect.TypeOf((*CreateIpPool)(nil)).Elem() -} - -type CreateIpPoolRequestType struct { - This ManagedObjectReference `xml:"_this"` - Dc ManagedObjectReference `xml:"dc"` - Pool IpPool `xml:"pool"` -} - -func init() { - t["CreateIpPoolRequestType"] = reflect.TypeOf((*CreateIpPoolRequestType)(nil)).Elem() -} - -type CreateIpPoolResponse struct { - Returnval int32 `xml:"returnval"` -} - -type CreateListView CreateListViewRequestType - -func init() { - t["CreateListView"] = reflect.TypeOf((*CreateListView)(nil)).Elem() -} - -type CreateListViewFromView CreateListViewFromViewRequestType - -func init() { - t["CreateListViewFromView"] = reflect.TypeOf((*CreateListViewFromView)(nil)).Elem() -} - -type CreateListViewFromViewRequestType struct { - This ManagedObjectReference `xml:"_this"` - View ManagedObjectReference `xml:"view"` -} - -func init() { - t["CreateListViewFromViewRequestType"] = reflect.TypeOf((*CreateListViewFromViewRequestType)(nil)).Elem() -} - -type CreateListViewFromViewResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreateListViewRequestType struct { - This ManagedObjectReference `xml:"_this"` - Obj []ManagedObjectReference `xml:"obj,omitempty"` -} - -func init() { - t["CreateListViewRequestType"] = reflect.TypeOf((*CreateListViewRequestType)(nil)).Elem() -} - -type CreateListViewResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreateLocalDatastore CreateLocalDatastoreRequestType - -func init() { - t["CreateLocalDatastore"] = reflect.TypeOf((*CreateLocalDatastore)(nil)).Elem() -} - -type CreateLocalDatastoreRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` - Path string `xml:"path"` -} - -func init() { - t["CreateLocalDatastoreRequestType"] = reflect.TypeOf((*CreateLocalDatastoreRequestType)(nil)).Elem() -} - -type CreateLocalDatastoreResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreateNasDatastore CreateNasDatastoreRequestType - -func init() { - t["CreateNasDatastore"] = reflect.TypeOf((*CreateNasDatastore)(nil)).Elem() -} - -type CreateNasDatastoreRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec HostNasVolumeSpec `xml:"spec"` -} - -func init() { - t["CreateNasDatastoreRequestType"] = reflect.TypeOf((*CreateNasDatastoreRequestType)(nil)).Elem() -} - -type CreateNasDatastoreResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreateObjectScheduledTask CreateObjectScheduledTaskRequestType - -func init() { - t["CreateObjectScheduledTask"] = reflect.TypeOf((*CreateObjectScheduledTask)(nil)).Elem() -} - -type CreateObjectScheduledTaskRequestType struct { - This ManagedObjectReference `xml:"_this"` - Obj ManagedObjectReference `xml:"obj"` - Spec BaseScheduledTaskSpec `xml:"spec,typeattr"` -} - -func init() { - t["CreateObjectScheduledTaskRequestType"] = reflect.TypeOf((*CreateObjectScheduledTaskRequestType)(nil)).Elem() -} - -type CreateObjectScheduledTaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreatePerfInterval CreatePerfIntervalRequestType - -func init() { - t["CreatePerfInterval"] = reflect.TypeOf((*CreatePerfInterval)(nil)).Elem() -} - -type CreatePerfIntervalRequestType struct { - This ManagedObjectReference `xml:"_this"` - IntervalId PerfInterval `xml:"intervalId"` -} - -func init() { - t["CreatePerfIntervalRequestType"] = reflect.TypeOf((*CreatePerfIntervalRequestType)(nil)).Elem() -} - -type CreatePerfIntervalResponse struct { -} - -type CreateProfile CreateProfileRequestType - -func init() { - t["CreateProfile"] = reflect.TypeOf((*CreateProfile)(nil)).Elem() -} - -type CreateProfileRequestType struct { - This ManagedObjectReference `xml:"_this"` - CreateSpec BaseProfileCreateSpec `xml:"createSpec,typeattr"` -} - -func init() { - t["CreateProfileRequestType"] = reflect.TypeOf((*CreateProfileRequestType)(nil)).Elem() -} - -type CreateProfileResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreatePropertyCollector CreatePropertyCollectorRequestType - -func init() { - t["CreatePropertyCollector"] = reflect.TypeOf((*CreatePropertyCollector)(nil)).Elem() -} - -type CreatePropertyCollectorRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["CreatePropertyCollectorRequestType"] = reflect.TypeOf((*CreatePropertyCollectorRequestType)(nil)).Elem() -} - -type CreatePropertyCollectorResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreateRegistryKeyInGuest CreateRegistryKeyInGuestRequestType - -func init() { - t["CreateRegistryKeyInGuest"] = reflect.TypeOf((*CreateRegistryKeyInGuest)(nil)).Elem() -} - -type CreateRegistryKeyInGuestRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Auth BaseGuestAuthentication `xml:"auth,typeattr"` - KeyName GuestRegKeyNameSpec `xml:"keyName"` - IsVolatile bool `xml:"isVolatile"` - ClassType string `xml:"classType,omitempty"` -} - -func init() { - t["CreateRegistryKeyInGuestRequestType"] = reflect.TypeOf((*CreateRegistryKeyInGuestRequestType)(nil)).Elem() -} - -type CreateRegistryKeyInGuestResponse struct { -} - -type CreateResourcePool CreateResourcePoolRequestType - -func init() { - t["CreateResourcePool"] = reflect.TypeOf((*CreateResourcePool)(nil)).Elem() -} - -type CreateResourcePoolRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` - Spec ResourceConfigSpec `xml:"spec"` -} - -func init() { - t["CreateResourcePoolRequestType"] = reflect.TypeOf((*CreateResourcePoolRequestType)(nil)).Elem() -} - -type CreateResourcePoolResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreateScheduledTask CreateScheduledTaskRequestType - -func init() { - t["CreateScheduledTask"] = reflect.TypeOf((*CreateScheduledTask)(nil)).Elem() -} - -type CreateScheduledTaskRequestType struct { - This ManagedObjectReference `xml:"_this"` - Entity ManagedObjectReference `xml:"entity"` - Spec BaseScheduledTaskSpec `xml:"spec,typeattr"` -} - -func init() { - t["CreateScheduledTaskRequestType"] = reflect.TypeOf((*CreateScheduledTaskRequestType)(nil)).Elem() -} - -type CreateScheduledTaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreateScreenshotRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["CreateScreenshotRequestType"] = reflect.TypeOf((*CreateScreenshotRequestType)(nil)).Elem() -} - -type CreateScreenshot_Task CreateScreenshotRequestType - -func init() { - t["CreateScreenshot_Task"] = reflect.TypeOf((*CreateScreenshot_Task)(nil)).Elem() -} - -type CreateScreenshot_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreateSecondaryVMExRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host *ManagedObjectReference `xml:"host,omitempty"` - Spec *FaultToleranceConfigSpec `xml:"spec,omitempty"` -} - -func init() { - t["CreateSecondaryVMExRequestType"] = reflect.TypeOf((*CreateSecondaryVMExRequestType)(nil)).Elem() -} - -type CreateSecondaryVMEx_Task CreateSecondaryVMExRequestType - -func init() { - t["CreateSecondaryVMEx_Task"] = reflect.TypeOf((*CreateSecondaryVMEx_Task)(nil)).Elem() -} - -type CreateSecondaryVMEx_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreateSecondaryVMRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host *ManagedObjectReference `xml:"host,omitempty"` -} - -func init() { - t["CreateSecondaryVMRequestType"] = reflect.TypeOf((*CreateSecondaryVMRequestType)(nil)).Elem() -} - -type CreateSecondaryVM_Task CreateSecondaryVMRequestType - -func init() { - t["CreateSecondaryVM_Task"] = reflect.TypeOf((*CreateSecondaryVM_Task)(nil)).Elem() -} - -type CreateSecondaryVM_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreateSnapshotRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` - Description string `xml:"description,omitempty"` - Memory bool `xml:"memory"` - Quiesce bool `xml:"quiesce"` -} - -func init() { - t["CreateSnapshotRequestType"] = reflect.TypeOf((*CreateSnapshotRequestType)(nil)).Elem() -} - -type CreateSnapshot_Task CreateSnapshotRequestType - -func init() { - t["CreateSnapshot_Task"] = reflect.TypeOf((*CreateSnapshot_Task)(nil)).Elem() -} - -type CreateSnapshot_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreateStoragePod CreateStoragePodRequestType - -func init() { - t["CreateStoragePod"] = reflect.TypeOf((*CreateStoragePod)(nil)).Elem() -} - -type CreateStoragePodRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` -} - -func init() { - t["CreateStoragePodRequestType"] = reflect.TypeOf((*CreateStoragePodRequestType)(nil)).Elem() -} - -type CreateStoragePodResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreateTask CreateTaskRequestType - -func init() { - t["CreateTask"] = reflect.TypeOf((*CreateTask)(nil)).Elem() -} - -type CreateTaskAction struct { - Action - - TaskTypeId string `xml:"taskTypeId"` - Cancelable bool `xml:"cancelable"` -} - -func init() { - t["CreateTaskAction"] = reflect.TypeOf((*CreateTaskAction)(nil)).Elem() -} - -type CreateTaskRequestType struct { - This ManagedObjectReference `xml:"_this"` - Obj ManagedObjectReference `xml:"obj"` - TaskTypeId string `xml:"taskTypeId"` - InitiatedBy string `xml:"initiatedBy,omitempty"` - Cancelable bool `xml:"cancelable"` - ParentTaskKey string `xml:"parentTaskKey,omitempty"` - ActivationId string `xml:"activationId,omitempty"` -} - -func init() { - t["CreateTaskRequestType"] = reflect.TypeOf((*CreateTaskRequestType)(nil)).Elem() -} - -type CreateTaskResponse struct { - Returnval TaskInfo `xml:"returnval"` -} - -type CreateTemporaryDirectoryInGuest CreateTemporaryDirectoryInGuestRequestType - -func init() { - t["CreateTemporaryDirectoryInGuest"] = reflect.TypeOf((*CreateTemporaryDirectoryInGuest)(nil)).Elem() -} - -type CreateTemporaryDirectoryInGuestRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Auth BaseGuestAuthentication `xml:"auth,typeattr"` - Prefix string `xml:"prefix"` - Suffix string `xml:"suffix"` - DirectoryPath string `xml:"directoryPath,omitempty"` -} - -func init() { - t["CreateTemporaryDirectoryInGuestRequestType"] = reflect.TypeOf((*CreateTemporaryDirectoryInGuestRequestType)(nil)).Elem() -} - -type CreateTemporaryDirectoryInGuestResponse struct { - Returnval string `xml:"returnval"` -} - -type CreateTemporaryFileInGuest CreateTemporaryFileInGuestRequestType - -func init() { - t["CreateTemporaryFileInGuest"] = reflect.TypeOf((*CreateTemporaryFileInGuest)(nil)).Elem() -} - -type CreateTemporaryFileInGuestRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Auth BaseGuestAuthentication `xml:"auth,typeattr"` - Prefix string `xml:"prefix"` - Suffix string `xml:"suffix"` - DirectoryPath string `xml:"directoryPath,omitempty"` -} - -func init() { - t["CreateTemporaryFileInGuestRequestType"] = reflect.TypeOf((*CreateTemporaryFileInGuestRequestType)(nil)).Elem() -} - -type CreateTemporaryFileInGuestResponse struct { - Returnval string `xml:"returnval"` -} - -type CreateUser CreateUserRequestType - -func init() { - t["CreateUser"] = reflect.TypeOf((*CreateUser)(nil)).Elem() -} - -type CreateUserRequestType struct { - This ManagedObjectReference `xml:"_this"` - User BaseHostAccountSpec `xml:"user,typeattr"` -} - -func init() { - t["CreateUserRequestType"] = reflect.TypeOf((*CreateUserRequestType)(nil)).Elem() -} - -type CreateUserResponse struct { -} - -type CreateVApp CreateVAppRequestType - -func init() { - t["CreateVApp"] = reflect.TypeOf((*CreateVApp)(nil)).Elem() -} - -type CreateVAppRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` - ResSpec ResourceConfigSpec `xml:"resSpec"` - ConfigSpec VAppConfigSpec `xml:"configSpec"` - VmFolder *ManagedObjectReference `xml:"vmFolder,omitempty"` -} - -func init() { - t["CreateVAppRequestType"] = reflect.TypeOf((*CreateVAppRequestType)(nil)).Elem() -} - -type CreateVAppResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreateVMRequestType struct { - This ManagedObjectReference `xml:"_this"` - Config VirtualMachineConfigSpec `xml:"config"` - Pool ManagedObjectReference `xml:"pool"` - Host *ManagedObjectReference `xml:"host,omitempty"` -} - -func init() { - t["CreateVMRequestType"] = reflect.TypeOf((*CreateVMRequestType)(nil)).Elem() -} - -type CreateVM_Task CreateVMRequestType - -func init() { - t["CreateVM_Task"] = reflect.TypeOf((*CreateVM_Task)(nil)).Elem() -} - -type CreateVM_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreateVirtualDiskRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` - Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` - Spec BaseVirtualDiskSpec `xml:"spec,typeattr"` -} - -func init() { - t["CreateVirtualDiskRequestType"] = reflect.TypeOf((*CreateVirtualDiskRequestType)(nil)).Elem() -} - -type CreateVirtualDisk_Task CreateVirtualDiskRequestType - -func init() { - t["CreateVirtualDisk_Task"] = reflect.TypeOf((*CreateVirtualDisk_Task)(nil)).Elem() -} - -type CreateVirtualDisk_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreateVmfsDatastore CreateVmfsDatastoreRequestType - -func init() { - t["CreateVmfsDatastore"] = reflect.TypeOf((*CreateVmfsDatastore)(nil)).Elem() -} - -type CreateVmfsDatastoreRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec VmfsDatastoreCreateSpec `xml:"spec"` -} - -func init() { - t["CreateVmfsDatastoreRequestType"] = reflect.TypeOf((*CreateVmfsDatastoreRequestType)(nil)).Elem() -} - -type CreateVmfsDatastoreResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CreateVvolDatastore CreateVvolDatastoreRequestType - -func init() { - t["CreateVvolDatastore"] = reflect.TypeOf((*CreateVvolDatastore)(nil)).Elem() -} - -type CreateVvolDatastoreRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec HostDatastoreSystemVvolDatastoreSpec `xml:"spec"` -} - -func init() { - t["CreateVvolDatastoreRequestType"] = reflect.TypeOf((*CreateVvolDatastoreRequestType)(nil)).Elem() -} - -type CreateVvolDatastoreResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type CurrentTime CurrentTimeRequestType - -func init() { - t["CurrentTime"] = reflect.TypeOf((*CurrentTime)(nil)).Elem() -} - -type CurrentTimeRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["CurrentTimeRequestType"] = reflect.TypeOf((*CurrentTimeRequestType)(nil)).Elem() -} - -type CurrentTimeResponse struct { - Returnval time.Time `xml:"returnval"` -} - -type CustomFieldDef struct { - DynamicData - - Key int32 `xml:"key"` - Name string `xml:"name"` - Type string `xml:"type"` - ManagedObjectType string `xml:"managedObjectType,omitempty"` - FieldDefPrivileges *PrivilegePolicyDef `xml:"fieldDefPrivileges,omitempty"` - FieldInstancePrivileges *PrivilegePolicyDef `xml:"fieldInstancePrivileges,omitempty"` -} - -func init() { - t["CustomFieldDef"] = reflect.TypeOf((*CustomFieldDef)(nil)).Elem() -} - -type CustomFieldDefAddedEvent struct { - CustomFieldDefEvent -} - -func init() { - t["CustomFieldDefAddedEvent"] = reflect.TypeOf((*CustomFieldDefAddedEvent)(nil)).Elem() -} - -type CustomFieldDefEvent struct { - CustomFieldEvent - - FieldKey int32 `xml:"fieldKey"` - Name string `xml:"name"` -} - -func init() { - t["CustomFieldDefEvent"] = reflect.TypeOf((*CustomFieldDefEvent)(nil)).Elem() -} - -type CustomFieldDefRemovedEvent struct { - CustomFieldDefEvent -} - -func init() { - t["CustomFieldDefRemovedEvent"] = reflect.TypeOf((*CustomFieldDefRemovedEvent)(nil)).Elem() -} - -type CustomFieldDefRenamedEvent struct { - CustomFieldDefEvent - - NewName string `xml:"newName"` -} - -func init() { - t["CustomFieldDefRenamedEvent"] = reflect.TypeOf((*CustomFieldDefRenamedEvent)(nil)).Elem() -} - -type CustomFieldEvent struct { - Event -} - -func init() { - t["CustomFieldEvent"] = reflect.TypeOf((*CustomFieldEvent)(nil)).Elem() -} - -type CustomFieldStringValue struct { - CustomFieldValue - - Value string `xml:"value"` -} - -func init() { - t["CustomFieldStringValue"] = reflect.TypeOf((*CustomFieldStringValue)(nil)).Elem() -} - -type CustomFieldValue struct { - DynamicData - - Key int32 `xml:"key"` -} - -func init() { - t["CustomFieldValue"] = reflect.TypeOf((*CustomFieldValue)(nil)).Elem() -} - -type CustomFieldValueChangedEvent struct { - CustomFieldEvent - - Entity ManagedEntityEventArgument `xml:"entity"` - FieldKey int32 `xml:"fieldKey"` - Name string `xml:"name"` - Value string `xml:"value"` -} - -func init() { - t["CustomFieldValueChangedEvent"] = reflect.TypeOf((*CustomFieldValueChangedEvent)(nil)).Elem() -} - -type CustomizationAdapterMapping struct { - DynamicData - - MacAddress string `xml:"macAddress,omitempty"` - Adapter CustomizationIPSettings `xml:"adapter"` -} - -func init() { - t["CustomizationAdapterMapping"] = reflect.TypeOf((*CustomizationAdapterMapping)(nil)).Elem() -} - -type CustomizationAutoIpV6Generator struct { - CustomizationIpV6Generator -} - -func init() { - t["CustomizationAutoIpV6Generator"] = reflect.TypeOf((*CustomizationAutoIpV6Generator)(nil)).Elem() -} - -type CustomizationCustomIpGenerator struct { - CustomizationIpGenerator - - Argument string `xml:"argument,omitempty"` -} - -func init() { - t["CustomizationCustomIpGenerator"] = reflect.TypeOf((*CustomizationCustomIpGenerator)(nil)).Elem() -} - -type CustomizationCustomIpV6Generator struct { - CustomizationIpV6Generator - - Argument string `xml:"argument,omitempty"` -} - -func init() { - t["CustomizationCustomIpV6Generator"] = reflect.TypeOf((*CustomizationCustomIpV6Generator)(nil)).Elem() -} - -type CustomizationCustomName struct { - CustomizationName - - Argument string `xml:"argument,omitempty"` -} - -func init() { - t["CustomizationCustomName"] = reflect.TypeOf((*CustomizationCustomName)(nil)).Elem() -} - -type CustomizationDhcpIpGenerator struct { - CustomizationIpGenerator -} - -func init() { - t["CustomizationDhcpIpGenerator"] = reflect.TypeOf((*CustomizationDhcpIpGenerator)(nil)).Elem() -} - -type CustomizationDhcpIpV6Generator struct { - CustomizationIpV6Generator -} - -func init() { - t["CustomizationDhcpIpV6Generator"] = reflect.TypeOf((*CustomizationDhcpIpV6Generator)(nil)).Elem() -} - -type CustomizationEvent struct { - VmEvent - - LogLocation string `xml:"logLocation,omitempty"` -} - -func init() { - t["CustomizationEvent"] = reflect.TypeOf((*CustomizationEvent)(nil)).Elem() -} - -type CustomizationFailed struct { - CustomizationEvent -} - -func init() { - t["CustomizationFailed"] = reflect.TypeOf((*CustomizationFailed)(nil)).Elem() -} - -type CustomizationFault struct { - VimFault -} - -func init() { - t["CustomizationFault"] = reflect.TypeOf((*CustomizationFault)(nil)).Elem() -} - -type CustomizationFaultFault BaseCustomizationFault - -func init() { - t["CustomizationFaultFault"] = reflect.TypeOf((*CustomizationFaultFault)(nil)).Elem() -} - -type CustomizationFixedIp struct { - CustomizationIpGenerator - - IpAddress string `xml:"ipAddress"` -} - -func init() { - t["CustomizationFixedIp"] = reflect.TypeOf((*CustomizationFixedIp)(nil)).Elem() -} - -type CustomizationFixedIpV6 struct { - CustomizationIpV6Generator - - IpAddress string `xml:"ipAddress"` - SubnetMask int32 `xml:"subnetMask"` -} - -func init() { - t["CustomizationFixedIpV6"] = reflect.TypeOf((*CustomizationFixedIpV6)(nil)).Elem() -} - -type CustomizationFixedName struct { - CustomizationName - - Name string `xml:"name"` -} - -func init() { - t["CustomizationFixedName"] = reflect.TypeOf((*CustomizationFixedName)(nil)).Elem() -} - -type CustomizationGlobalIPSettings struct { - DynamicData - - DnsSuffixList []string `xml:"dnsSuffixList,omitempty"` - DnsServerList []string `xml:"dnsServerList,omitempty"` -} - -func init() { - t["CustomizationGlobalIPSettings"] = reflect.TypeOf((*CustomizationGlobalIPSettings)(nil)).Elem() -} - -type CustomizationGuiRunOnce struct { - DynamicData - - CommandList []string `xml:"commandList"` -} - -func init() { - t["CustomizationGuiRunOnce"] = reflect.TypeOf((*CustomizationGuiRunOnce)(nil)).Elem() -} - -type CustomizationGuiUnattended struct { - DynamicData - - Password *CustomizationPassword `xml:"password,omitempty"` - TimeZone int32 `xml:"timeZone"` - AutoLogon bool `xml:"autoLogon"` - AutoLogonCount int32 `xml:"autoLogonCount"` -} - -func init() { - t["CustomizationGuiUnattended"] = reflect.TypeOf((*CustomizationGuiUnattended)(nil)).Elem() -} - -type CustomizationIPSettings struct { - DynamicData - - Ip BaseCustomizationIpGenerator `xml:"ip,typeattr"` - SubnetMask string `xml:"subnetMask,omitempty"` - Gateway []string `xml:"gateway,omitempty"` - IpV6Spec *CustomizationIPSettingsIpV6AddressSpec `xml:"ipV6Spec,omitempty"` - DnsServerList []string `xml:"dnsServerList,omitempty"` - DnsDomain string `xml:"dnsDomain,omitempty"` - PrimaryWINS string `xml:"primaryWINS,omitempty"` - SecondaryWINS string `xml:"secondaryWINS,omitempty"` - NetBIOS CustomizationNetBIOSMode `xml:"netBIOS,omitempty"` -} - -func init() { - t["CustomizationIPSettings"] = reflect.TypeOf((*CustomizationIPSettings)(nil)).Elem() -} - -type CustomizationIPSettingsIpV6AddressSpec struct { - DynamicData - - Ip []BaseCustomizationIpV6Generator `xml:"ip,typeattr"` - Gateway []string `xml:"gateway,omitempty"` -} - -func init() { - t["CustomizationIPSettingsIpV6AddressSpec"] = reflect.TypeOf((*CustomizationIPSettingsIpV6AddressSpec)(nil)).Elem() -} - -type CustomizationIdentification struct { - DynamicData - - JoinWorkgroup string `xml:"joinWorkgroup,omitempty"` - JoinDomain string `xml:"joinDomain,omitempty"` - DomainAdmin string `xml:"domainAdmin,omitempty"` - DomainAdminPassword *CustomizationPassword `xml:"domainAdminPassword,omitempty"` -} - -func init() { - t["CustomizationIdentification"] = reflect.TypeOf((*CustomizationIdentification)(nil)).Elem() -} - -type CustomizationIdentitySettings struct { - DynamicData -} - -func init() { - t["CustomizationIdentitySettings"] = reflect.TypeOf((*CustomizationIdentitySettings)(nil)).Elem() -} - -type CustomizationIpGenerator struct { - DynamicData -} - -func init() { - t["CustomizationIpGenerator"] = reflect.TypeOf((*CustomizationIpGenerator)(nil)).Elem() -} - -type CustomizationIpV6Generator struct { - DynamicData -} - -func init() { - t["CustomizationIpV6Generator"] = reflect.TypeOf((*CustomizationIpV6Generator)(nil)).Elem() -} - -type CustomizationLicenseFilePrintData struct { - DynamicData - - AutoMode CustomizationLicenseDataMode `xml:"autoMode"` - AutoUsers int32 `xml:"autoUsers,omitempty"` -} - -func init() { - t["CustomizationLicenseFilePrintData"] = reflect.TypeOf((*CustomizationLicenseFilePrintData)(nil)).Elem() -} - -type CustomizationLinuxIdentityFailed struct { - CustomizationFailed -} - -func init() { - t["CustomizationLinuxIdentityFailed"] = reflect.TypeOf((*CustomizationLinuxIdentityFailed)(nil)).Elem() -} - -type CustomizationLinuxOptions struct { - CustomizationOptions -} - -func init() { - t["CustomizationLinuxOptions"] = reflect.TypeOf((*CustomizationLinuxOptions)(nil)).Elem() -} - -type CustomizationLinuxPrep struct { - CustomizationIdentitySettings - - HostName BaseCustomizationName `xml:"hostName,typeattr"` - Domain string `xml:"domain"` - TimeZone string `xml:"timeZone,omitempty"` - HwClockUTC *bool `xml:"hwClockUTC"` -} - -func init() { - t["CustomizationLinuxPrep"] = reflect.TypeOf((*CustomizationLinuxPrep)(nil)).Elem() -} - -type CustomizationName struct { - DynamicData -} - -func init() { - t["CustomizationName"] = reflect.TypeOf((*CustomizationName)(nil)).Elem() -} - -type CustomizationNetworkSetupFailed struct { - CustomizationFailed -} - -func init() { - t["CustomizationNetworkSetupFailed"] = reflect.TypeOf((*CustomizationNetworkSetupFailed)(nil)).Elem() -} - -type CustomizationOptions struct { - DynamicData -} - -func init() { - t["CustomizationOptions"] = reflect.TypeOf((*CustomizationOptions)(nil)).Elem() -} - -type CustomizationPassword struct { - DynamicData - - Value string `xml:"value"` - PlainText bool `xml:"plainText"` -} - -func init() { - t["CustomizationPassword"] = reflect.TypeOf((*CustomizationPassword)(nil)).Elem() -} - -type CustomizationPending struct { - CustomizationFault -} - -func init() { - t["CustomizationPending"] = reflect.TypeOf((*CustomizationPending)(nil)).Elem() -} - -type CustomizationPendingFault CustomizationPending - -func init() { - t["CustomizationPendingFault"] = reflect.TypeOf((*CustomizationPendingFault)(nil)).Elem() -} - -type CustomizationPrefixName struct { - CustomizationName - - Base string `xml:"base"` -} - -func init() { - t["CustomizationPrefixName"] = reflect.TypeOf((*CustomizationPrefixName)(nil)).Elem() -} - -type CustomizationSpec struct { - DynamicData - - Options BaseCustomizationOptions `xml:"options,omitempty,typeattr"` - Identity BaseCustomizationIdentitySettings `xml:"identity,typeattr"` - GlobalIPSettings CustomizationGlobalIPSettings `xml:"globalIPSettings"` - NicSettingMap []CustomizationAdapterMapping `xml:"nicSettingMap,omitempty"` - EncryptionKey []byte `xml:"encryptionKey,omitempty"` -} - -func init() { - t["CustomizationSpec"] = reflect.TypeOf((*CustomizationSpec)(nil)).Elem() -} - -type CustomizationSpecInfo struct { - DynamicData - - Name string `xml:"name"` - Description string `xml:"description"` - Type string `xml:"type"` - ChangeVersion string `xml:"changeVersion,omitempty"` - LastUpdateTime *time.Time `xml:"lastUpdateTime"` -} - -func init() { - t["CustomizationSpecInfo"] = reflect.TypeOf((*CustomizationSpecInfo)(nil)).Elem() -} - -type CustomizationSpecItem struct { - DynamicData - - Info CustomizationSpecInfo `xml:"info"` - Spec CustomizationSpec `xml:"spec"` -} - -func init() { - t["CustomizationSpecItem"] = reflect.TypeOf((*CustomizationSpecItem)(nil)).Elem() -} - -type CustomizationSpecItemToXml CustomizationSpecItemToXmlRequestType - -func init() { - t["CustomizationSpecItemToXml"] = reflect.TypeOf((*CustomizationSpecItemToXml)(nil)).Elem() -} - -type CustomizationSpecItemToXmlRequestType struct { - This ManagedObjectReference `xml:"_this"` - Item CustomizationSpecItem `xml:"item"` -} - -func init() { - t["CustomizationSpecItemToXmlRequestType"] = reflect.TypeOf((*CustomizationSpecItemToXmlRequestType)(nil)).Elem() -} - -type CustomizationSpecItemToXmlResponse struct { - Returnval string `xml:"returnval"` -} - -type CustomizationStartedEvent struct { - CustomizationEvent -} - -func init() { - t["CustomizationStartedEvent"] = reflect.TypeOf((*CustomizationStartedEvent)(nil)).Elem() -} - -type CustomizationStatelessIpV6Generator struct { - CustomizationIpV6Generator -} - -func init() { - t["CustomizationStatelessIpV6Generator"] = reflect.TypeOf((*CustomizationStatelessIpV6Generator)(nil)).Elem() -} - -type CustomizationSucceeded struct { - CustomizationEvent -} - -func init() { - t["CustomizationSucceeded"] = reflect.TypeOf((*CustomizationSucceeded)(nil)).Elem() -} - -type CustomizationSysprep struct { - CustomizationIdentitySettings - - GuiUnattended CustomizationGuiUnattended `xml:"guiUnattended"` - UserData CustomizationUserData `xml:"userData"` - GuiRunOnce *CustomizationGuiRunOnce `xml:"guiRunOnce,omitempty"` - Identification CustomizationIdentification `xml:"identification"` - LicenseFilePrintData *CustomizationLicenseFilePrintData `xml:"licenseFilePrintData,omitempty"` -} - -func init() { - t["CustomizationSysprep"] = reflect.TypeOf((*CustomizationSysprep)(nil)).Elem() -} - -type CustomizationSysprepFailed struct { - CustomizationFailed - - SysprepVersion string `xml:"sysprepVersion"` - SystemVersion string `xml:"systemVersion"` -} - -func init() { - t["CustomizationSysprepFailed"] = reflect.TypeOf((*CustomizationSysprepFailed)(nil)).Elem() -} - -type CustomizationSysprepText struct { - CustomizationIdentitySettings - - Value string `xml:"value"` -} - -func init() { - t["CustomizationSysprepText"] = reflect.TypeOf((*CustomizationSysprepText)(nil)).Elem() -} - -type CustomizationUnknownFailure struct { - CustomizationFailed -} - -func init() { - t["CustomizationUnknownFailure"] = reflect.TypeOf((*CustomizationUnknownFailure)(nil)).Elem() -} - -type CustomizationUnknownIpGenerator struct { - CustomizationIpGenerator -} - -func init() { - t["CustomizationUnknownIpGenerator"] = reflect.TypeOf((*CustomizationUnknownIpGenerator)(nil)).Elem() -} - -type CustomizationUnknownIpV6Generator struct { - CustomizationIpV6Generator -} - -func init() { - t["CustomizationUnknownIpV6Generator"] = reflect.TypeOf((*CustomizationUnknownIpV6Generator)(nil)).Elem() -} - -type CustomizationUnknownName struct { - CustomizationName -} - -func init() { - t["CustomizationUnknownName"] = reflect.TypeOf((*CustomizationUnknownName)(nil)).Elem() -} - -type CustomizationUserData struct { - DynamicData - - FullName string `xml:"fullName"` - OrgName string `xml:"orgName"` - ComputerName BaseCustomizationName `xml:"computerName,typeattr"` - ProductId string `xml:"productId"` -} - -func init() { - t["CustomizationUserData"] = reflect.TypeOf((*CustomizationUserData)(nil)).Elem() -} - -type CustomizationVirtualMachineName struct { - CustomizationName -} - -func init() { - t["CustomizationVirtualMachineName"] = reflect.TypeOf((*CustomizationVirtualMachineName)(nil)).Elem() -} - -type CustomizationWinOptions struct { - CustomizationOptions - - ChangeSID bool `xml:"changeSID"` - DeleteAccounts bool `xml:"deleteAccounts"` - Reboot CustomizationSysprepRebootOption `xml:"reboot,omitempty"` -} - -func init() { - t["CustomizationWinOptions"] = reflect.TypeOf((*CustomizationWinOptions)(nil)).Elem() -} - -type CustomizeVMRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec CustomizationSpec `xml:"spec"` -} - -func init() { - t["CustomizeVMRequestType"] = reflect.TypeOf((*CustomizeVMRequestType)(nil)).Elem() -} - -type CustomizeVM_Task CustomizeVMRequestType - -func init() { - t["CustomizeVM_Task"] = reflect.TypeOf((*CustomizeVM_Task)(nil)).Elem() -} - -type CustomizeVM_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type DVPortConfigInfo struct { - DynamicData - - Name string `xml:"name,omitempty"` - Scope []ManagedObjectReference `xml:"scope,omitempty"` - Description string `xml:"description,omitempty"` - Setting BaseDVPortSetting `xml:"setting,omitempty,typeattr"` - ConfigVersion string `xml:"configVersion"` -} - -func init() { - t["DVPortConfigInfo"] = reflect.TypeOf((*DVPortConfigInfo)(nil)).Elem() -} - -type DVPortConfigSpec struct { - DynamicData - - Operation string `xml:"operation"` - Key string `xml:"key,omitempty"` - Name string `xml:"name,omitempty"` - Scope []ManagedObjectReference `xml:"scope,omitempty"` - Description string `xml:"description,omitempty"` - Setting BaseDVPortSetting `xml:"setting,omitempty,typeattr"` - ConfigVersion string `xml:"configVersion,omitempty"` -} - -func init() { - t["DVPortConfigSpec"] = reflect.TypeOf((*DVPortConfigSpec)(nil)).Elem() -} - -type DVPortNotSupported struct { - DeviceBackingNotSupported -} - -func init() { - t["DVPortNotSupported"] = reflect.TypeOf((*DVPortNotSupported)(nil)).Elem() -} - -type DVPortNotSupportedFault DVPortNotSupported - -func init() { - t["DVPortNotSupportedFault"] = reflect.TypeOf((*DVPortNotSupportedFault)(nil)).Elem() -} - -type DVPortSetting struct { - DynamicData - - Blocked *BoolPolicy `xml:"blocked,omitempty"` - VmDirectPathGen2Allowed *BoolPolicy `xml:"vmDirectPathGen2Allowed,omitempty"` - InShapingPolicy *DVSTrafficShapingPolicy `xml:"inShapingPolicy,omitempty"` - OutShapingPolicy *DVSTrafficShapingPolicy `xml:"outShapingPolicy,omitempty"` - VendorSpecificConfig *DVSVendorSpecificConfig `xml:"vendorSpecificConfig,omitempty"` - NetworkResourcePoolKey *StringPolicy `xml:"networkResourcePoolKey,omitempty"` - FilterPolicy *DvsFilterPolicy `xml:"filterPolicy,omitempty"` -} - -func init() { - t["DVPortSetting"] = reflect.TypeOf((*DVPortSetting)(nil)).Elem() -} - -type DVPortState struct { - DynamicData - - RuntimeInfo *DVPortStatus `xml:"runtimeInfo,omitempty"` - Stats DistributedVirtualSwitchPortStatistics `xml:"stats"` - VendorSpecificState []DistributedVirtualSwitchKeyedOpaqueBlob `xml:"vendorSpecificState,omitempty"` -} - -func init() { - t["DVPortState"] = reflect.TypeOf((*DVPortState)(nil)).Elem() -} - -type DVPortStatus struct { - DynamicData - - LinkUp bool `xml:"linkUp"` - Blocked bool `xml:"blocked"` - VlanIds []NumericRange `xml:"vlanIds,omitempty"` - TrunkingMode *bool `xml:"trunkingMode"` - Mtu int32 `xml:"mtu,omitempty"` - LinkPeer string `xml:"linkPeer,omitempty"` - MacAddress string `xml:"macAddress,omitempty"` - StatusDetail string `xml:"statusDetail,omitempty"` - VmDirectPathGen2Active *bool `xml:"vmDirectPathGen2Active"` - VmDirectPathGen2InactiveReasonNetwork []string `xml:"vmDirectPathGen2InactiveReasonNetwork,omitempty"` - VmDirectPathGen2InactiveReasonOther []string `xml:"vmDirectPathGen2InactiveReasonOther,omitempty"` - VmDirectPathGen2InactiveReasonExtended string `xml:"vmDirectPathGen2InactiveReasonExtended,omitempty"` -} - -func init() { - t["DVPortStatus"] = reflect.TypeOf((*DVPortStatus)(nil)).Elem() -} - -type DVPortgroupConfigInfo struct { - DynamicData - - Key string `xml:"key"` - Name string `xml:"name"` - NumPorts int32 `xml:"numPorts"` - DistributedVirtualSwitch *ManagedObjectReference `xml:"distributedVirtualSwitch,omitempty"` - DefaultPortConfig BaseDVPortSetting `xml:"defaultPortConfig,omitempty,typeattr"` - Description string `xml:"description,omitempty"` - Type string `xml:"type"` - Policy BaseDVPortgroupPolicy `xml:"policy,typeattr"` - PortNameFormat string `xml:"portNameFormat,omitempty"` - Scope []ManagedObjectReference `xml:"scope,omitempty"` - VendorSpecificConfig []DistributedVirtualSwitchKeyedOpaqueBlob `xml:"vendorSpecificConfig,omitempty"` - ConfigVersion string `xml:"configVersion,omitempty"` - AutoExpand *bool `xml:"autoExpand"` - VmVnicNetworkResourcePoolKey string `xml:"vmVnicNetworkResourcePoolKey,omitempty"` -} - -func init() { - t["DVPortgroupConfigInfo"] = reflect.TypeOf((*DVPortgroupConfigInfo)(nil)).Elem() -} - -type DVPortgroupConfigSpec struct { - DynamicData - - ConfigVersion string `xml:"configVersion,omitempty"` - Name string `xml:"name,omitempty"` - NumPorts int32 `xml:"numPorts,omitempty"` - PortNameFormat string `xml:"portNameFormat,omitempty"` - DefaultPortConfig BaseDVPortSetting `xml:"defaultPortConfig,omitempty,typeattr"` - Description string `xml:"description,omitempty"` - Type string `xml:"type,omitempty"` - Scope []ManagedObjectReference `xml:"scope,omitempty"` - Policy BaseDVPortgroupPolicy `xml:"policy,omitempty,typeattr"` - VendorSpecificConfig []DistributedVirtualSwitchKeyedOpaqueBlob `xml:"vendorSpecificConfig,omitempty"` - AutoExpand *bool `xml:"autoExpand"` - VmVnicNetworkResourcePoolKey string `xml:"vmVnicNetworkResourcePoolKey,omitempty"` -} - -func init() { - t["DVPortgroupConfigSpec"] = reflect.TypeOf((*DVPortgroupConfigSpec)(nil)).Elem() -} - -type DVPortgroupCreatedEvent struct { - DVPortgroupEvent -} - -func init() { - t["DVPortgroupCreatedEvent"] = reflect.TypeOf((*DVPortgroupCreatedEvent)(nil)).Elem() -} - -type DVPortgroupDestroyedEvent struct { - DVPortgroupEvent -} - -func init() { - t["DVPortgroupDestroyedEvent"] = reflect.TypeOf((*DVPortgroupDestroyedEvent)(nil)).Elem() -} - -type DVPortgroupEvent struct { - Event -} - -func init() { - t["DVPortgroupEvent"] = reflect.TypeOf((*DVPortgroupEvent)(nil)).Elem() -} - -type DVPortgroupPolicy struct { - DynamicData - - BlockOverrideAllowed bool `xml:"blockOverrideAllowed"` - ShapingOverrideAllowed bool `xml:"shapingOverrideAllowed"` - VendorConfigOverrideAllowed bool `xml:"vendorConfigOverrideAllowed"` - LivePortMovingAllowed bool `xml:"livePortMovingAllowed"` - PortConfigResetAtDisconnect bool `xml:"portConfigResetAtDisconnect"` - NetworkResourcePoolOverrideAllowed *bool `xml:"networkResourcePoolOverrideAllowed"` - TrafficFilterOverrideAllowed *bool `xml:"trafficFilterOverrideAllowed"` -} - -func init() { - t["DVPortgroupPolicy"] = reflect.TypeOf((*DVPortgroupPolicy)(nil)).Elem() -} - -type DVPortgroupReconfiguredEvent struct { - DVPortgroupEvent - - ConfigSpec DVPortgroupConfigSpec `xml:"configSpec"` -} - -func init() { - t["DVPortgroupReconfiguredEvent"] = reflect.TypeOf((*DVPortgroupReconfiguredEvent)(nil)).Elem() -} - -type DVPortgroupRenamedEvent struct { - DVPortgroupEvent - - OldName string `xml:"oldName"` - NewName string `xml:"newName"` -} - -func init() { - t["DVPortgroupRenamedEvent"] = reflect.TypeOf((*DVPortgroupRenamedEvent)(nil)).Elem() -} - -type DVPortgroupRollbackRequestType struct { - This ManagedObjectReference `xml:"_this"` - EntityBackup *EntityBackupConfig `xml:"entityBackup,omitempty"` -} - -func init() { - t["DVPortgroupRollbackRequestType"] = reflect.TypeOf((*DVPortgroupRollbackRequestType)(nil)).Elem() -} - -type DVPortgroupRollback_Task DVPortgroupRollbackRequestType - -func init() { - t["DVPortgroupRollback_Task"] = reflect.TypeOf((*DVPortgroupRollback_Task)(nil)).Elem() -} - -type DVPortgroupRollback_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type DVPortgroupSelection struct { - SelectionSet - - DvsUuid string `xml:"dvsUuid"` - PortgroupKey []string `xml:"portgroupKey"` -} - -func init() { - t["DVPortgroupSelection"] = reflect.TypeOf((*DVPortgroupSelection)(nil)).Elem() -} - -type DVSBackupRestoreCapability struct { - DynamicData - - BackupRestoreSupported bool `xml:"backupRestoreSupported"` -} - -func init() { - t["DVSBackupRestoreCapability"] = reflect.TypeOf((*DVSBackupRestoreCapability)(nil)).Elem() -} - -type DVSCapability struct { - DynamicData - - DvsOperationSupported *bool `xml:"dvsOperationSupported"` - DvPortGroupOperationSupported *bool `xml:"dvPortGroupOperationSupported"` - DvPortOperationSupported *bool `xml:"dvPortOperationSupported"` - CompatibleHostComponentProductInfo []DistributedVirtualSwitchHostProductSpec `xml:"compatibleHostComponentProductInfo,omitempty"` - FeaturesSupported BaseDVSFeatureCapability `xml:"featuresSupported,omitempty,typeattr"` -} - -func init() { - t["DVSCapability"] = reflect.TypeOf((*DVSCapability)(nil)).Elem() -} - -type DVSConfigInfo struct { - DynamicData - - Uuid string `xml:"uuid"` - Name string `xml:"name"` - NumStandalonePorts int32 `xml:"numStandalonePorts"` - NumPorts int32 `xml:"numPorts"` - MaxPorts int32 `xml:"maxPorts"` - UplinkPortPolicy BaseDVSUplinkPortPolicy `xml:"uplinkPortPolicy,typeattr"` - UplinkPortgroup []ManagedObjectReference `xml:"uplinkPortgroup,omitempty"` - DefaultPortConfig BaseDVPortSetting `xml:"defaultPortConfig,typeattr"` - Host []DistributedVirtualSwitchHostMember `xml:"host,omitempty"` - ProductInfo DistributedVirtualSwitchProductSpec `xml:"productInfo"` - TargetInfo *DistributedVirtualSwitchProductSpec `xml:"targetInfo,omitempty"` - ExtensionKey string `xml:"extensionKey,omitempty"` - VendorSpecificConfig []DistributedVirtualSwitchKeyedOpaqueBlob `xml:"vendorSpecificConfig,omitempty"` - Policy *DVSPolicy `xml:"policy,omitempty"` - Description string `xml:"description,omitempty"` - ConfigVersion string `xml:"configVersion"` - Contact DVSContactInfo `xml:"contact"` - SwitchIpAddress string `xml:"switchIpAddress,omitempty"` - CreateTime time.Time `xml:"createTime"` - NetworkResourceManagementEnabled *bool `xml:"networkResourceManagementEnabled"` - DefaultProxySwitchMaxNumPorts int32 `xml:"defaultProxySwitchMaxNumPorts,omitempty"` - HealthCheckConfig []BaseDVSHealthCheckConfig `xml:"healthCheckConfig,omitempty,typeattr"` - InfrastructureTrafficResourceConfig []DvsHostInfrastructureTrafficResource `xml:"infrastructureTrafficResourceConfig,omitempty"` - NetworkResourceControlVersion string `xml:"networkResourceControlVersion,omitempty"` - VmVnicNetworkResourcePool []DVSVmVnicNetworkResourcePool `xml:"vmVnicNetworkResourcePool,omitempty"` - PnicCapacityRatioForReservation int32 `xml:"pnicCapacityRatioForReservation,omitempty"` -} - -func init() { - t["DVSConfigInfo"] = reflect.TypeOf((*DVSConfigInfo)(nil)).Elem() -} - -type DVSConfigSpec struct { - DynamicData - - ConfigVersion string `xml:"configVersion,omitempty"` - Name string `xml:"name,omitempty"` - NumStandalonePorts int32 `xml:"numStandalonePorts,omitempty"` - MaxPorts int32 `xml:"maxPorts,omitempty"` - UplinkPortPolicy BaseDVSUplinkPortPolicy `xml:"uplinkPortPolicy,omitempty,typeattr"` - UplinkPortgroup []ManagedObjectReference `xml:"uplinkPortgroup,omitempty"` - DefaultPortConfig BaseDVPortSetting `xml:"defaultPortConfig,omitempty,typeattr"` - Host []DistributedVirtualSwitchHostMemberConfigSpec `xml:"host,omitempty"` - ExtensionKey string `xml:"extensionKey,omitempty"` - Description string `xml:"description,omitempty"` - Policy *DVSPolicy `xml:"policy,omitempty"` - VendorSpecificConfig []DistributedVirtualSwitchKeyedOpaqueBlob `xml:"vendorSpecificConfig,omitempty"` - Contact *DVSContactInfo `xml:"contact,omitempty"` - SwitchIpAddress string `xml:"switchIpAddress,omitempty"` - DefaultProxySwitchMaxNumPorts int32 `xml:"defaultProxySwitchMaxNumPorts,omitempty"` - InfrastructureTrafficResourceConfig []DvsHostInfrastructureTrafficResource `xml:"infrastructureTrafficResourceConfig,omitempty"` - NetworkResourceControlVersion string `xml:"networkResourceControlVersion,omitempty"` -} - -func init() { - t["DVSConfigSpec"] = reflect.TypeOf((*DVSConfigSpec)(nil)).Elem() -} - -type DVSContactInfo struct { - DynamicData - - Name string `xml:"name,omitempty"` - Contact string `xml:"contact,omitempty"` -} - -func init() { - t["DVSContactInfo"] = reflect.TypeOf((*DVSContactInfo)(nil)).Elem() -} - -type DVSCreateSpec struct { - DynamicData - - ConfigSpec BaseDVSConfigSpec `xml:"configSpec,typeattr"` - ProductInfo *DistributedVirtualSwitchProductSpec `xml:"productInfo,omitempty"` - Capability *DVSCapability `xml:"capability,omitempty"` -} - -func init() { - t["DVSCreateSpec"] = reflect.TypeOf((*DVSCreateSpec)(nil)).Elem() -} - -type DVSFailureCriteria struct { - InheritablePolicy - - CheckSpeed *StringPolicy `xml:"checkSpeed,omitempty"` - Speed *IntPolicy `xml:"speed,omitempty"` - CheckDuplex *BoolPolicy `xml:"checkDuplex,omitempty"` - FullDuplex *BoolPolicy `xml:"fullDuplex,omitempty"` - CheckErrorPercent *BoolPolicy `xml:"checkErrorPercent,omitempty"` - Percentage *IntPolicy `xml:"percentage,omitempty"` - CheckBeacon *BoolPolicy `xml:"checkBeacon,omitempty"` -} - -func init() { - t["DVSFailureCriteria"] = reflect.TypeOf((*DVSFailureCriteria)(nil)).Elem() -} - -type DVSFeatureCapability struct { - DynamicData - - NetworkResourceManagementSupported bool `xml:"networkResourceManagementSupported"` - VmDirectPathGen2Supported bool `xml:"vmDirectPathGen2Supported"` - NicTeamingPolicy []string `xml:"nicTeamingPolicy,omitempty"` - NetworkResourcePoolHighShareValue int32 `xml:"networkResourcePoolHighShareValue,omitempty"` - NetworkResourceManagementCapability *DVSNetworkResourceManagementCapability `xml:"networkResourceManagementCapability,omitempty"` - HealthCheckCapability BaseDVSHealthCheckCapability `xml:"healthCheckCapability,omitempty,typeattr"` - RollbackCapability *DVSRollbackCapability `xml:"rollbackCapability,omitempty"` - BackupRestoreCapability *DVSBackupRestoreCapability `xml:"backupRestoreCapability,omitempty"` - NetworkFilterSupported *bool `xml:"networkFilterSupported"` -} - -func init() { - t["DVSFeatureCapability"] = reflect.TypeOf((*DVSFeatureCapability)(nil)).Elem() -} - -type DVSHealthCheckCapability struct { - DynamicData -} - -func init() { - t["DVSHealthCheckCapability"] = reflect.TypeOf((*DVSHealthCheckCapability)(nil)).Elem() -} - -type DVSHealthCheckConfig struct { - DynamicData - - Enable *bool `xml:"enable"` - Interval int32 `xml:"interval,omitempty"` -} - -func init() { - t["DVSHealthCheckConfig"] = reflect.TypeOf((*DVSHealthCheckConfig)(nil)).Elem() -} - -type DVSHostLocalPortInfo struct { - DynamicData - - SwitchUuid string `xml:"switchUuid"` - PortKey string `xml:"portKey"` - Setting BaseDVPortSetting `xml:"setting,typeattr"` - Vnic string `xml:"vnic"` -} - -func init() { - t["DVSHostLocalPortInfo"] = reflect.TypeOf((*DVSHostLocalPortInfo)(nil)).Elem() -} - -type DVSManagerDvsConfigTarget struct { - DynamicData - - DistributedVirtualPortgroup []DistributedVirtualPortgroupInfo `xml:"distributedVirtualPortgroup,omitempty"` - DistributedVirtualSwitch []DistributedVirtualSwitchInfo `xml:"distributedVirtualSwitch,omitempty"` -} - -func init() { - t["DVSManagerDvsConfigTarget"] = reflect.TypeOf((*DVSManagerDvsConfigTarget)(nil)).Elem() -} - -type DVSManagerExportEntityRequestType struct { - This ManagedObjectReference `xml:"_this"` - SelectionSet []BaseSelectionSet `xml:"selectionSet,typeattr"` -} - -func init() { - t["DVSManagerExportEntityRequestType"] = reflect.TypeOf((*DVSManagerExportEntityRequestType)(nil)).Elem() -} - -type DVSManagerExportEntity_Task DVSManagerExportEntityRequestType - -func init() { - t["DVSManagerExportEntity_Task"] = reflect.TypeOf((*DVSManagerExportEntity_Task)(nil)).Elem() -} - -type DVSManagerExportEntity_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type DVSManagerImportEntityRequestType struct { - This ManagedObjectReference `xml:"_this"` - EntityBackup []EntityBackupConfig `xml:"entityBackup"` - ImportType string `xml:"importType"` -} - -func init() { - t["DVSManagerImportEntityRequestType"] = reflect.TypeOf((*DVSManagerImportEntityRequestType)(nil)).Elem() -} - -type DVSManagerImportEntity_Task DVSManagerImportEntityRequestType - -func init() { - t["DVSManagerImportEntity_Task"] = reflect.TypeOf((*DVSManagerImportEntity_Task)(nil)).Elem() -} - -type DVSManagerImportEntity_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type DVSManagerLookupDvPortGroup DVSManagerLookupDvPortGroupRequestType - -func init() { - t["DVSManagerLookupDvPortGroup"] = reflect.TypeOf((*DVSManagerLookupDvPortGroup)(nil)).Elem() -} - -type DVSManagerLookupDvPortGroupRequestType struct { - This ManagedObjectReference `xml:"_this"` - SwitchUuid string `xml:"switchUuid"` - PortgroupKey string `xml:"portgroupKey"` -} - -func init() { - t["DVSManagerLookupDvPortGroupRequestType"] = reflect.TypeOf((*DVSManagerLookupDvPortGroupRequestType)(nil)).Elem() -} - -type DVSManagerLookupDvPortGroupResponse struct { - Returnval *ManagedObjectReference `xml:"returnval,omitempty"` -} - -type DVSNameArrayUplinkPortPolicy struct { - DVSUplinkPortPolicy - - UplinkPortName []string `xml:"uplinkPortName"` -} - -func init() { - t["DVSNameArrayUplinkPortPolicy"] = reflect.TypeOf((*DVSNameArrayUplinkPortPolicy)(nil)).Elem() -} - -type DVSNetworkResourceManagementCapability struct { - DynamicData - - NetworkResourceManagementSupported bool `xml:"networkResourceManagementSupported"` - NetworkResourcePoolHighShareValue int32 `xml:"networkResourcePoolHighShareValue"` - QosSupported bool `xml:"qosSupported"` - UserDefinedNetworkResourcePoolsSupported bool `xml:"userDefinedNetworkResourcePoolsSupported"` - NetworkResourceControlVersion3Supported *bool `xml:"networkResourceControlVersion3Supported"` -} - -func init() { - t["DVSNetworkResourceManagementCapability"] = reflect.TypeOf((*DVSNetworkResourceManagementCapability)(nil)).Elem() -} - -type DVSNetworkResourcePool struct { - DynamicData - - Key string `xml:"key"` - Name string `xml:"name,omitempty"` - Description string `xml:"description,omitempty"` - ConfigVersion string `xml:"configVersion"` - AllocationInfo DVSNetworkResourcePoolAllocationInfo `xml:"allocationInfo"` -} - -func init() { - t["DVSNetworkResourcePool"] = reflect.TypeOf((*DVSNetworkResourcePool)(nil)).Elem() -} - -type DVSNetworkResourcePoolAllocationInfo struct { - DynamicData - - Limit int64 `xml:"limit,omitempty"` - Shares *SharesInfo `xml:"shares,omitempty"` - PriorityTag int32 `xml:"priorityTag,omitempty"` -} - -func init() { - t["DVSNetworkResourcePoolAllocationInfo"] = reflect.TypeOf((*DVSNetworkResourcePoolAllocationInfo)(nil)).Elem() -} - -type DVSNetworkResourcePoolConfigSpec struct { - DynamicData - - Key string `xml:"key"` - ConfigVersion string `xml:"configVersion,omitempty"` - AllocationInfo *DVSNetworkResourcePoolAllocationInfo `xml:"allocationInfo,omitempty"` - Name string `xml:"name,omitempty"` - Description string `xml:"description,omitempty"` -} - -func init() { - t["DVSNetworkResourcePoolConfigSpec"] = reflect.TypeOf((*DVSNetworkResourcePoolConfigSpec)(nil)).Elem() -} - -type DVSPolicy struct { - DynamicData - - AutoPreInstallAllowed *bool `xml:"autoPreInstallAllowed"` - AutoUpgradeAllowed *bool `xml:"autoUpgradeAllowed"` - PartialUpgradeAllowed *bool `xml:"partialUpgradeAllowed"` -} - -func init() { - t["DVSPolicy"] = reflect.TypeOf((*DVSPolicy)(nil)).Elem() -} - -type DVSRollbackCapability struct { - DynamicData - - RollbackSupported bool `xml:"rollbackSupported"` -} - -func init() { - t["DVSRollbackCapability"] = reflect.TypeOf((*DVSRollbackCapability)(nil)).Elem() -} - -type DVSRollbackRequestType struct { - This ManagedObjectReference `xml:"_this"` - EntityBackup *EntityBackupConfig `xml:"entityBackup,omitempty"` -} - -func init() { - t["DVSRollbackRequestType"] = reflect.TypeOf((*DVSRollbackRequestType)(nil)).Elem() -} - -type DVSRollback_Task DVSRollbackRequestType - -func init() { - t["DVSRollback_Task"] = reflect.TypeOf((*DVSRollback_Task)(nil)).Elem() -} - -type DVSRollback_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type DVSRuntimeInfo struct { - DynamicData - - HostMemberRuntime []HostMemberRuntimeInfo `xml:"hostMemberRuntime,omitempty"` - ResourceRuntimeInfo *DvsResourceRuntimeInfo `xml:"resourceRuntimeInfo,omitempty"` -} - -func init() { - t["DVSRuntimeInfo"] = reflect.TypeOf((*DVSRuntimeInfo)(nil)).Elem() -} - -type DVSSecurityPolicy struct { - InheritablePolicy - - AllowPromiscuous *BoolPolicy `xml:"allowPromiscuous,omitempty"` - MacChanges *BoolPolicy `xml:"macChanges,omitempty"` - ForgedTransmits *BoolPolicy `xml:"forgedTransmits,omitempty"` -} - -func init() { - t["DVSSecurityPolicy"] = reflect.TypeOf((*DVSSecurityPolicy)(nil)).Elem() -} - -type DVSSelection struct { - SelectionSet - - DvsUuid string `xml:"dvsUuid"` -} - -func init() { - t["DVSSelection"] = reflect.TypeOf((*DVSSelection)(nil)).Elem() -} - -type DVSSummary struct { - DynamicData - - Name string `xml:"name"` - Uuid string `xml:"uuid"` - NumPorts int32 `xml:"numPorts"` - ProductInfo *DistributedVirtualSwitchProductSpec `xml:"productInfo,omitempty"` - HostMember []ManagedObjectReference `xml:"hostMember,omitempty"` - Vm []ManagedObjectReference `xml:"vm,omitempty"` - Host []ManagedObjectReference `xml:"host,omitempty"` - PortgroupName []string `xml:"portgroupName,omitempty"` - Description string `xml:"description,omitempty"` - Contact *DVSContactInfo `xml:"contact,omitempty"` - NumHosts int32 `xml:"numHosts,omitempty"` -} - -func init() { - t["DVSSummary"] = reflect.TypeOf((*DVSSummary)(nil)).Elem() -} - -type DVSTrafficShapingPolicy struct { - InheritablePolicy - - Enabled *BoolPolicy `xml:"enabled,omitempty"` - AverageBandwidth *LongPolicy `xml:"averageBandwidth,omitempty"` - PeakBandwidth *LongPolicy `xml:"peakBandwidth,omitempty"` - BurstSize *LongPolicy `xml:"burstSize,omitempty"` -} - -func init() { - t["DVSTrafficShapingPolicy"] = reflect.TypeOf((*DVSTrafficShapingPolicy)(nil)).Elem() -} - -type DVSUplinkPortPolicy struct { - DynamicData -} - -func init() { - t["DVSUplinkPortPolicy"] = reflect.TypeOf((*DVSUplinkPortPolicy)(nil)).Elem() -} - -type DVSVendorSpecificConfig struct { - InheritablePolicy - - KeyValue []DistributedVirtualSwitchKeyedOpaqueBlob `xml:"keyValue,omitempty"` -} - -func init() { - t["DVSVendorSpecificConfig"] = reflect.TypeOf((*DVSVendorSpecificConfig)(nil)).Elem() -} - -type DVSVmVnicNetworkResourcePool struct { - DynamicData - - Key string `xml:"key"` - Name string `xml:"name,omitempty"` - Description string `xml:"description,omitempty"` - ConfigVersion string `xml:"configVersion"` - AllocationInfo *DvsVmVnicResourceAllocation `xml:"allocationInfo,omitempty"` -} - -func init() { - t["DVSVmVnicNetworkResourcePool"] = reflect.TypeOf((*DVSVmVnicNetworkResourcePool)(nil)).Elem() -} - -type DailyTaskScheduler struct { - HourlyTaskScheduler - - Hour int32 `xml:"hour"` -} - -func init() { - t["DailyTaskScheduler"] = reflect.TypeOf((*DailyTaskScheduler)(nil)).Elem() -} - -type DasAdmissionControlDisabledEvent struct { - ClusterEvent -} - -func init() { - t["DasAdmissionControlDisabledEvent"] = reflect.TypeOf((*DasAdmissionControlDisabledEvent)(nil)).Elem() -} - -type DasAdmissionControlEnabledEvent struct { - ClusterEvent -} - -func init() { - t["DasAdmissionControlEnabledEvent"] = reflect.TypeOf((*DasAdmissionControlEnabledEvent)(nil)).Elem() -} - -type DasAgentFoundEvent struct { - ClusterEvent -} - -func init() { - t["DasAgentFoundEvent"] = reflect.TypeOf((*DasAgentFoundEvent)(nil)).Elem() -} - -type DasAgentUnavailableEvent struct { - ClusterEvent -} - -func init() { - t["DasAgentUnavailableEvent"] = reflect.TypeOf((*DasAgentUnavailableEvent)(nil)).Elem() -} - -type DasClusterIsolatedEvent struct { - ClusterEvent -} - -func init() { - t["DasClusterIsolatedEvent"] = reflect.TypeOf((*DasClusterIsolatedEvent)(nil)).Elem() -} - -type DasConfigFault struct { - VimFault - - Reason string `xml:"reason,omitempty"` - Output string `xml:"output,omitempty"` - Event []BaseEvent `xml:"event,omitempty,typeattr"` -} - -func init() { - t["DasConfigFault"] = reflect.TypeOf((*DasConfigFault)(nil)).Elem() -} - -type DasConfigFaultFault DasConfigFault - -func init() { - t["DasConfigFaultFault"] = reflect.TypeOf((*DasConfigFaultFault)(nil)).Elem() -} - -type DasDisabledEvent struct { - ClusterEvent -} - -func init() { - t["DasDisabledEvent"] = reflect.TypeOf((*DasDisabledEvent)(nil)).Elem() -} - -type DasEnabledEvent struct { - ClusterEvent -} - -func init() { - t["DasEnabledEvent"] = reflect.TypeOf((*DasEnabledEvent)(nil)).Elem() -} - -type DasHeartbeatDatastoreInfo struct { - DynamicData - - Datastore ManagedObjectReference `xml:"datastore"` - Hosts []ManagedObjectReference `xml:"hosts"` -} - -func init() { - t["DasHeartbeatDatastoreInfo"] = reflect.TypeOf((*DasHeartbeatDatastoreInfo)(nil)).Elem() -} - -type DasHostFailedEvent struct { - ClusterEvent - - FailedHost HostEventArgument `xml:"failedHost"` -} - -func init() { - t["DasHostFailedEvent"] = reflect.TypeOf((*DasHostFailedEvent)(nil)).Elem() -} - -type DasHostIsolatedEvent struct { - ClusterEvent - - IsolatedHost HostEventArgument `xml:"isolatedHost"` -} - -func init() { - t["DasHostIsolatedEvent"] = reflect.TypeOf((*DasHostIsolatedEvent)(nil)).Elem() -} - -type DatabaseError struct { - RuntimeFault -} - -func init() { - t["DatabaseError"] = reflect.TypeOf((*DatabaseError)(nil)).Elem() -} - -type DatabaseErrorFault DatabaseError - -func init() { - t["DatabaseErrorFault"] = reflect.TypeOf((*DatabaseErrorFault)(nil)).Elem() -} - -type DatabaseSizeEstimate struct { - DynamicData - - Size int64 `xml:"size"` -} - -func init() { - t["DatabaseSizeEstimate"] = reflect.TypeOf((*DatabaseSizeEstimate)(nil)).Elem() -} - -type DatabaseSizeParam struct { - DynamicData - - InventoryDesc InventoryDescription `xml:"inventoryDesc"` - PerfStatsDesc *PerformanceStatisticsDescription `xml:"perfStatsDesc,omitempty"` -} - -func init() { - t["DatabaseSizeParam"] = reflect.TypeOf((*DatabaseSizeParam)(nil)).Elem() -} - -type DatacenterConfigInfo struct { - DynamicData - - DefaultHardwareVersionKey string `xml:"defaultHardwareVersionKey,omitempty"` -} - -func init() { - t["DatacenterConfigInfo"] = reflect.TypeOf((*DatacenterConfigInfo)(nil)).Elem() -} - -type DatacenterConfigSpec struct { - DynamicData - - DefaultHardwareVersionKey string `xml:"defaultHardwareVersionKey,omitempty"` -} - -func init() { - t["DatacenterConfigSpec"] = reflect.TypeOf((*DatacenterConfigSpec)(nil)).Elem() -} - -type DatacenterCreatedEvent struct { - DatacenterEvent - - Parent FolderEventArgument `xml:"parent"` -} - -func init() { - t["DatacenterCreatedEvent"] = reflect.TypeOf((*DatacenterCreatedEvent)(nil)).Elem() -} - -type DatacenterEvent struct { - Event -} - -func init() { - t["DatacenterEvent"] = reflect.TypeOf((*DatacenterEvent)(nil)).Elem() -} - -type DatacenterEventArgument struct { - EntityEventArgument - - Datacenter ManagedObjectReference `xml:"datacenter"` -} - -func init() { - t["DatacenterEventArgument"] = reflect.TypeOf((*DatacenterEventArgument)(nil)).Elem() -} - -type DatacenterMismatch struct { - MigrationFault - - InvalidArgument []DatacenterMismatchArgument `xml:"invalidArgument"` - ExpectedDatacenter ManagedObjectReference `xml:"expectedDatacenter"` -} - -func init() { - t["DatacenterMismatch"] = reflect.TypeOf((*DatacenterMismatch)(nil)).Elem() -} - -type DatacenterMismatchArgument struct { - DynamicData - - Entity ManagedObjectReference `xml:"entity"` - InputDatacenter *ManagedObjectReference `xml:"inputDatacenter,omitempty"` -} - -func init() { - t["DatacenterMismatchArgument"] = reflect.TypeOf((*DatacenterMismatchArgument)(nil)).Elem() -} - -type DatacenterMismatchFault DatacenterMismatch - -func init() { - t["DatacenterMismatchFault"] = reflect.TypeOf((*DatacenterMismatchFault)(nil)).Elem() -} - -type DatacenterRenamedEvent struct { - DatacenterEvent - - OldName string `xml:"oldName"` - NewName string `xml:"newName"` -} - -func init() { - t["DatacenterRenamedEvent"] = reflect.TypeOf((*DatacenterRenamedEvent)(nil)).Elem() -} - -type DatastoreCapability struct { - DynamicData - - DirectoryHierarchySupported bool `xml:"directoryHierarchySupported"` - RawDiskMappingsSupported bool `xml:"rawDiskMappingsSupported"` - PerFileThinProvisioningSupported bool `xml:"perFileThinProvisioningSupported"` - StorageIORMSupported *bool `xml:"storageIORMSupported"` - NativeSnapshotSupported *bool `xml:"nativeSnapshotSupported"` - TopLevelDirectoryCreateSupported *bool `xml:"topLevelDirectoryCreateSupported"` - SeSparseSupported *bool `xml:"seSparseSupported"` -} - -func init() { - t["DatastoreCapability"] = reflect.TypeOf((*DatastoreCapability)(nil)).Elem() -} - -type DatastoreCapacityIncreasedEvent struct { - DatastoreEvent - - OldCapacity int64 `xml:"oldCapacity"` - NewCapacity int64 `xml:"newCapacity"` -} - -func init() { - t["DatastoreCapacityIncreasedEvent"] = reflect.TypeOf((*DatastoreCapacityIncreasedEvent)(nil)).Elem() -} - -type DatastoreDestroyedEvent struct { - DatastoreEvent -} - -func init() { - t["DatastoreDestroyedEvent"] = reflect.TypeOf((*DatastoreDestroyedEvent)(nil)).Elem() -} - -type DatastoreDiscoveredEvent struct { - HostEvent - - Datastore DatastoreEventArgument `xml:"datastore"` -} - -func init() { - t["DatastoreDiscoveredEvent"] = reflect.TypeOf((*DatastoreDiscoveredEvent)(nil)).Elem() -} - -type DatastoreDuplicatedEvent struct { - DatastoreEvent -} - -func init() { - t["DatastoreDuplicatedEvent"] = reflect.TypeOf((*DatastoreDuplicatedEvent)(nil)).Elem() -} - -type DatastoreEnterMaintenanceMode DatastoreEnterMaintenanceModeRequestType - -func init() { - t["DatastoreEnterMaintenanceMode"] = reflect.TypeOf((*DatastoreEnterMaintenanceMode)(nil)).Elem() -} - -type DatastoreEnterMaintenanceModeRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["DatastoreEnterMaintenanceModeRequestType"] = reflect.TypeOf((*DatastoreEnterMaintenanceModeRequestType)(nil)).Elem() -} - -type DatastoreEnterMaintenanceModeResponse struct { - Returnval StoragePlacementResult `xml:"returnval"` -} - -type DatastoreEvent struct { - Event - - Datastore *DatastoreEventArgument `xml:"datastore,omitempty"` -} - -func init() { - t["DatastoreEvent"] = reflect.TypeOf((*DatastoreEvent)(nil)).Elem() -} - -type DatastoreEventArgument struct { - EntityEventArgument - - Datastore ManagedObjectReference `xml:"datastore"` -} - -func init() { - t["DatastoreEventArgument"] = reflect.TypeOf((*DatastoreEventArgument)(nil)).Elem() -} - -type DatastoreExitMaintenanceModeRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["DatastoreExitMaintenanceModeRequestType"] = reflect.TypeOf((*DatastoreExitMaintenanceModeRequestType)(nil)).Elem() -} - -type DatastoreExitMaintenanceMode_Task DatastoreExitMaintenanceModeRequestType - -func init() { - t["DatastoreExitMaintenanceMode_Task"] = reflect.TypeOf((*DatastoreExitMaintenanceMode_Task)(nil)).Elem() -} - -type DatastoreExitMaintenanceMode_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type DatastoreFileCopiedEvent struct { - DatastoreFileEvent - - SourceDatastore DatastoreEventArgument `xml:"sourceDatastore"` - SourceFile string `xml:"sourceFile"` -} - -func init() { - t["DatastoreFileCopiedEvent"] = reflect.TypeOf((*DatastoreFileCopiedEvent)(nil)).Elem() -} - -type DatastoreFileDeletedEvent struct { - DatastoreFileEvent -} - -func init() { - t["DatastoreFileDeletedEvent"] = reflect.TypeOf((*DatastoreFileDeletedEvent)(nil)).Elem() -} - -type DatastoreFileEvent struct { - DatastoreEvent - - TargetFile string `xml:"targetFile"` -} - -func init() { - t["DatastoreFileEvent"] = reflect.TypeOf((*DatastoreFileEvent)(nil)).Elem() -} - -type DatastoreFileMovedEvent struct { - DatastoreFileEvent - - SourceDatastore DatastoreEventArgument `xml:"sourceDatastore"` - SourceFile string `xml:"sourceFile"` -} - -func init() { - t["DatastoreFileMovedEvent"] = reflect.TypeOf((*DatastoreFileMovedEvent)(nil)).Elem() -} - -type DatastoreHostMount struct { - DynamicData - - Key ManagedObjectReference `xml:"key"` - MountInfo HostMountInfo `xml:"mountInfo"` -} - -func init() { - t["DatastoreHostMount"] = reflect.TypeOf((*DatastoreHostMount)(nil)).Elem() -} - -type DatastoreIORMReconfiguredEvent struct { - DatastoreEvent -} - -func init() { - t["DatastoreIORMReconfiguredEvent"] = reflect.TypeOf((*DatastoreIORMReconfiguredEvent)(nil)).Elem() -} - -type DatastoreInfo struct { - DynamicData - - Name string `xml:"name"` - Url string `xml:"url"` - FreeSpace int64 `xml:"freeSpace"` - MaxFileSize int64 `xml:"maxFileSize"` - MaxVirtualDiskCapacity int64 `xml:"maxVirtualDiskCapacity,omitempty"` - MaxMemoryFileSize int64 `xml:"maxMemoryFileSize,omitempty"` - Timestamp *time.Time `xml:"timestamp"` - ContainerId string `xml:"containerId,omitempty"` -} - -func init() { - t["DatastoreInfo"] = reflect.TypeOf((*DatastoreInfo)(nil)).Elem() -} - -type DatastoreMountPathDatastorePair struct { - DynamicData - - OldMountPath string `xml:"oldMountPath"` - Datastore ManagedObjectReference `xml:"datastore"` -} - -func init() { - t["DatastoreMountPathDatastorePair"] = reflect.TypeOf((*DatastoreMountPathDatastorePair)(nil)).Elem() -} - -type DatastoreNotWritableOnHost struct { - InvalidDatastore - - Host ManagedObjectReference `xml:"host"` -} - -func init() { - t["DatastoreNotWritableOnHost"] = reflect.TypeOf((*DatastoreNotWritableOnHost)(nil)).Elem() -} - -type DatastoreNotWritableOnHostFault BaseDatastoreNotWritableOnHost - -func init() { - t["DatastoreNotWritableOnHostFault"] = reflect.TypeOf((*DatastoreNotWritableOnHostFault)(nil)).Elem() -} - -type DatastoreOption struct { - DynamicData - - UnsupportedVolumes []VirtualMachineDatastoreVolumeOption `xml:"unsupportedVolumes,omitempty"` -} - -func init() { - t["DatastoreOption"] = reflect.TypeOf((*DatastoreOption)(nil)).Elem() -} - -type DatastorePrincipalConfigured struct { - HostEvent - - DatastorePrincipal string `xml:"datastorePrincipal"` -} - -func init() { - t["DatastorePrincipalConfigured"] = reflect.TypeOf((*DatastorePrincipalConfigured)(nil)).Elem() -} - -type DatastoreRemovedOnHostEvent struct { - HostEvent - - Datastore DatastoreEventArgument `xml:"datastore"` -} - -func init() { - t["DatastoreRemovedOnHostEvent"] = reflect.TypeOf((*DatastoreRemovedOnHostEvent)(nil)).Elem() -} - -type DatastoreRenamedEvent struct { - DatastoreEvent - - OldName string `xml:"oldName"` - NewName string `xml:"newName"` -} - -func init() { - t["DatastoreRenamedEvent"] = reflect.TypeOf((*DatastoreRenamedEvent)(nil)).Elem() -} - -type DatastoreRenamedOnHostEvent struct { - HostEvent - - OldName string `xml:"oldName"` - NewName string `xml:"newName"` -} - -func init() { - t["DatastoreRenamedOnHostEvent"] = reflect.TypeOf((*DatastoreRenamedOnHostEvent)(nil)).Elem() -} - -type DatastoreSummary struct { - DynamicData - - Datastore *ManagedObjectReference `xml:"datastore,omitempty"` - Name string `xml:"name"` - Url string `xml:"url"` - Capacity int64 `xml:"capacity"` - FreeSpace int64 `xml:"freeSpace"` - Uncommitted int64 `xml:"uncommitted,omitempty"` - Accessible bool `xml:"accessible"` - MultipleHostAccess *bool `xml:"multipleHostAccess"` - Type string `xml:"type"` - MaintenanceMode string `xml:"maintenanceMode,omitempty"` -} - -func init() { - t["DatastoreSummary"] = reflect.TypeOf((*DatastoreSummary)(nil)).Elem() -} - -type DateTimeProfile struct { - ApplyProfile -} - -func init() { - t["DateTimeProfile"] = reflect.TypeOf((*DateTimeProfile)(nil)).Elem() -} - -type DecodeLicense DecodeLicenseRequestType - -func init() { - t["DecodeLicense"] = reflect.TypeOf((*DecodeLicense)(nil)).Elem() -} - -type DecodeLicenseRequestType struct { - This ManagedObjectReference `xml:"_this"` - LicenseKey string `xml:"licenseKey"` -} - -func init() { - t["DecodeLicenseRequestType"] = reflect.TypeOf((*DecodeLicenseRequestType)(nil)).Elem() -} - -type DecodeLicenseResponse struct { - Returnval LicenseManagerLicenseInfo `xml:"returnval"` -} - -type DefragmentAllDisks DefragmentAllDisksRequestType - -func init() { - t["DefragmentAllDisks"] = reflect.TypeOf((*DefragmentAllDisks)(nil)).Elem() -} - -type DefragmentAllDisksRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["DefragmentAllDisksRequestType"] = reflect.TypeOf((*DefragmentAllDisksRequestType)(nil)).Elem() -} - -type DefragmentAllDisksResponse struct { -} - -type DefragmentVirtualDiskRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` - Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` -} - -func init() { - t["DefragmentVirtualDiskRequestType"] = reflect.TypeOf((*DefragmentVirtualDiskRequestType)(nil)).Elem() -} - -type DefragmentVirtualDisk_Task DefragmentVirtualDiskRequestType - -func init() { - t["DefragmentVirtualDisk_Task"] = reflect.TypeOf((*DefragmentVirtualDisk_Task)(nil)).Elem() -} - -type DefragmentVirtualDisk_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type DeleteCustomizationSpec DeleteCustomizationSpecRequestType - -func init() { - t["DeleteCustomizationSpec"] = reflect.TypeOf((*DeleteCustomizationSpec)(nil)).Elem() -} - -type DeleteCustomizationSpecRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` -} - -func init() { - t["DeleteCustomizationSpecRequestType"] = reflect.TypeOf((*DeleteCustomizationSpecRequestType)(nil)).Elem() -} - -type DeleteCustomizationSpecResponse struct { -} - -type DeleteDatastoreFileRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` - Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` -} - -func init() { - t["DeleteDatastoreFileRequestType"] = reflect.TypeOf((*DeleteDatastoreFileRequestType)(nil)).Elem() -} - -type DeleteDatastoreFile_Task DeleteDatastoreFileRequestType - -func init() { - t["DeleteDatastoreFile_Task"] = reflect.TypeOf((*DeleteDatastoreFile_Task)(nil)).Elem() -} - -type DeleteDatastoreFile_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type DeleteDirectory DeleteDirectoryRequestType - -func init() { - t["DeleteDirectory"] = reflect.TypeOf((*DeleteDirectory)(nil)).Elem() -} - -type DeleteDirectoryInGuest DeleteDirectoryInGuestRequestType - -func init() { - t["DeleteDirectoryInGuest"] = reflect.TypeOf((*DeleteDirectoryInGuest)(nil)).Elem() -} - -type DeleteDirectoryInGuestRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Auth BaseGuestAuthentication `xml:"auth,typeattr"` - DirectoryPath string `xml:"directoryPath"` - Recursive bool `xml:"recursive"` -} - -func init() { - t["DeleteDirectoryInGuestRequestType"] = reflect.TypeOf((*DeleteDirectoryInGuestRequestType)(nil)).Elem() -} - -type DeleteDirectoryInGuestResponse struct { -} - -type DeleteDirectoryRequestType struct { - This ManagedObjectReference `xml:"_this"` - Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` - DatastorePath string `xml:"datastorePath"` -} - -func init() { - t["DeleteDirectoryRequestType"] = reflect.TypeOf((*DeleteDirectoryRequestType)(nil)).Elem() -} - -type DeleteDirectoryResponse struct { -} - -type DeleteFile DeleteFileRequestType - -func init() { - t["DeleteFile"] = reflect.TypeOf((*DeleteFile)(nil)).Elem() -} - -type DeleteFileInGuest DeleteFileInGuestRequestType - -func init() { - t["DeleteFileInGuest"] = reflect.TypeOf((*DeleteFileInGuest)(nil)).Elem() -} - -type DeleteFileInGuestRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Auth BaseGuestAuthentication `xml:"auth,typeattr"` - FilePath string `xml:"filePath"` -} - -func init() { - t["DeleteFileInGuestRequestType"] = reflect.TypeOf((*DeleteFileInGuestRequestType)(nil)).Elem() -} - -type DeleteFileInGuestResponse struct { -} - -type DeleteFileRequestType struct { - This ManagedObjectReference `xml:"_this"` - DatastorePath string `xml:"datastorePath"` -} - -func init() { - t["DeleteFileRequestType"] = reflect.TypeOf((*DeleteFileRequestType)(nil)).Elem() -} - -type DeleteFileResponse struct { -} - -type DeleteRegistryKeyInGuest DeleteRegistryKeyInGuestRequestType - -func init() { - t["DeleteRegistryKeyInGuest"] = reflect.TypeOf((*DeleteRegistryKeyInGuest)(nil)).Elem() -} - -type DeleteRegistryKeyInGuestRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Auth BaseGuestAuthentication `xml:"auth,typeattr"` - KeyName GuestRegKeyNameSpec `xml:"keyName"` - Recursive bool `xml:"recursive"` -} - -func init() { - t["DeleteRegistryKeyInGuestRequestType"] = reflect.TypeOf((*DeleteRegistryKeyInGuestRequestType)(nil)).Elem() -} - -type DeleteRegistryKeyInGuestResponse struct { -} - -type DeleteRegistryValueInGuest DeleteRegistryValueInGuestRequestType - -func init() { - t["DeleteRegistryValueInGuest"] = reflect.TypeOf((*DeleteRegistryValueInGuest)(nil)).Elem() -} - -type DeleteRegistryValueInGuestRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Auth BaseGuestAuthentication `xml:"auth,typeattr"` - ValueName GuestRegValueNameSpec `xml:"valueName"` -} - -func init() { - t["DeleteRegistryValueInGuestRequestType"] = reflect.TypeOf((*DeleteRegistryValueInGuestRequestType)(nil)).Elem() -} - -type DeleteRegistryValueInGuestResponse struct { -} - -type DeleteScsiLunState DeleteScsiLunStateRequestType - -func init() { - t["DeleteScsiLunState"] = reflect.TypeOf((*DeleteScsiLunState)(nil)).Elem() -} - -type DeleteScsiLunStateRequestType struct { - This ManagedObjectReference `xml:"_this"` - LunCanonicalName string `xml:"lunCanonicalName"` -} - -func init() { - t["DeleteScsiLunStateRequestType"] = reflect.TypeOf((*DeleteScsiLunStateRequestType)(nil)).Elem() -} - -type DeleteScsiLunStateResponse struct { -} - -type DeleteVffsVolumeState DeleteVffsVolumeStateRequestType - -func init() { - t["DeleteVffsVolumeState"] = reflect.TypeOf((*DeleteVffsVolumeState)(nil)).Elem() -} - -type DeleteVffsVolumeStateRequestType struct { - This ManagedObjectReference `xml:"_this"` - VffsUuid string `xml:"vffsUuid"` -} - -func init() { - t["DeleteVffsVolumeStateRequestType"] = reflect.TypeOf((*DeleteVffsVolumeStateRequestType)(nil)).Elem() -} - -type DeleteVffsVolumeStateResponse struct { -} - -type DeleteVirtualDiskRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` - Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` -} - -func init() { - t["DeleteVirtualDiskRequestType"] = reflect.TypeOf((*DeleteVirtualDiskRequestType)(nil)).Elem() -} - -type DeleteVirtualDisk_Task DeleteVirtualDiskRequestType - -func init() { - t["DeleteVirtualDisk_Task"] = reflect.TypeOf((*DeleteVirtualDisk_Task)(nil)).Elem() -} - -type DeleteVirtualDisk_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type DeleteVmfsVolumeState DeleteVmfsVolumeStateRequestType - -func init() { - t["DeleteVmfsVolumeState"] = reflect.TypeOf((*DeleteVmfsVolumeState)(nil)).Elem() -} - -type DeleteVmfsVolumeStateRequestType struct { - This ManagedObjectReference `xml:"_this"` - VmfsUuid string `xml:"vmfsUuid"` -} - -func init() { - t["DeleteVmfsVolumeStateRequestType"] = reflect.TypeOf((*DeleteVmfsVolumeStateRequestType)(nil)).Elem() -} - -type DeleteVmfsVolumeStateResponse struct { -} - -type DeleteVsanObjects DeleteVsanObjectsRequestType - -func init() { - t["DeleteVsanObjects"] = reflect.TypeOf((*DeleteVsanObjects)(nil)).Elem() -} - -type DeleteVsanObjectsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Uuids []string `xml:"uuids"` - Force *bool `xml:"force"` -} - -func init() { - t["DeleteVsanObjectsRequestType"] = reflect.TypeOf((*DeleteVsanObjectsRequestType)(nil)).Elem() -} - -type DeleteVsanObjectsResponse struct { - Returnval []HostVsanInternalSystemDeleteVsanObjectsResult `xml:"returnval"` -} - -type DeltaDiskFormatNotSupported struct { - VmConfigFault - - Datastore []ManagedObjectReference `xml:"datastore,omitempty"` - DeltaDiskFormat string `xml:"deltaDiskFormat"` -} - -func init() { - t["DeltaDiskFormatNotSupported"] = reflect.TypeOf((*DeltaDiskFormatNotSupported)(nil)).Elem() -} - -type DeltaDiskFormatNotSupportedFault DeltaDiskFormatNotSupported - -func init() { - t["DeltaDiskFormatNotSupportedFault"] = reflect.TypeOf((*DeltaDiskFormatNotSupportedFault)(nil)).Elem() -} - -type Description struct { - DynamicData - - Label string `xml:"label"` - Summary string `xml:"summary"` -} - -func init() { - t["Description"] = reflect.TypeOf((*Description)(nil)).Elem() -} - -type DeselectVnic DeselectVnicRequestType - -func init() { - t["DeselectVnic"] = reflect.TypeOf((*DeselectVnic)(nil)).Elem() -} - -type DeselectVnicForNicType DeselectVnicForNicTypeRequestType - -func init() { - t["DeselectVnicForNicType"] = reflect.TypeOf((*DeselectVnicForNicType)(nil)).Elem() -} - -type DeselectVnicForNicTypeRequestType struct { - This ManagedObjectReference `xml:"_this"` - NicType string `xml:"nicType"` - Device string `xml:"device"` -} - -func init() { - t["DeselectVnicForNicTypeRequestType"] = reflect.TypeOf((*DeselectVnicForNicTypeRequestType)(nil)).Elem() -} - -type DeselectVnicForNicTypeResponse struct { -} - -type DeselectVnicRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["DeselectVnicRequestType"] = reflect.TypeOf((*DeselectVnicRequestType)(nil)).Elem() -} - -type DeselectVnicResponse struct { -} - -type DestinationSwitchFull struct { - CannotAccessNetwork -} - -func init() { - t["DestinationSwitchFull"] = reflect.TypeOf((*DestinationSwitchFull)(nil)).Elem() -} - -type DestinationSwitchFullFault DestinationSwitchFull - -func init() { - t["DestinationSwitchFullFault"] = reflect.TypeOf((*DestinationSwitchFullFault)(nil)).Elem() -} - -type DestinationVsanDisabled struct { - CannotMoveVsanEnabledHost - - DestinationCluster string `xml:"destinationCluster"` -} - -func init() { - t["DestinationVsanDisabled"] = reflect.TypeOf((*DestinationVsanDisabled)(nil)).Elem() -} - -type DestinationVsanDisabledFault DestinationVsanDisabled - -func init() { - t["DestinationVsanDisabledFault"] = reflect.TypeOf((*DestinationVsanDisabledFault)(nil)).Elem() -} - -type DestroyChildren DestroyChildrenRequestType - -func init() { - t["DestroyChildren"] = reflect.TypeOf((*DestroyChildren)(nil)).Elem() -} - -type DestroyChildrenRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["DestroyChildrenRequestType"] = reflect.TypeOf((*DestroyChildrenRequestType)(nil)).Elem() -} - -type DestroyChildrenResponse struct { -} - -type DestroyCollector DestroyCollectorRequestType - -func init() { - t["DestroyCollector"] = reflect.TypeOf((*DestroyCollector)(nil)).Elem() -} - -type DestroyCollectorRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["DestroyCollectorRequestType"] = reflect.TypeOf((*DestroyCollectorRequestType)(nil)).Elem() -} - -type DestroyCollectorResponse struct { -} - -type DestroyDatastore DestroyDatastoreRequestType - -func init() { - t["DestroyDatastore"] = reflect.TypeOf((*DestroyDatastore)(nil)).Elem() -} - -type DestroyDatastoreRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["DestroyDatastoreRequestType"] = reflect.TypeOf((*DestroyDatastoreRequestType)(nil)).Elem() -} - -type DestroyDatastoreResponse struct { -} - -type DestroyIpPool DestroyIpPoolRequestType - -func init() { - t["DestroyIpPool"] = reflect.TypeOf((*DestroyIpPool)(nil)).Elem() -} - -type DestroyIpPoolRequestType struct { - This ManagedObjectReference `xml:"_this"` - Dc ManagedObjectReference `xml:"dc"` - Id int32 `xml:"id"` - Force bool `xml:"force"` -} - -func init() { - t["DestroyIpPoolRequestType"] = reflect.TypeOf((*DestroyIpPoolRequestType)(nil)).Elem() -} - -type DestroyIpPoolResponse struct { -} - -type DestroyNetwork DestroyNetworkRequestType - -func init() { - t["DestroyNetwork"] = reflect.TypeOf((*DestroyNetwork)(nil)).Elem() -} - -type DestroyNetworkRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["DestroyNetworkRequestType"] = reflect.TypeOf((*DestroyNetworkRequestType)(nil)).Elem() -} - -type DestroyNetworkResponse struct { -} - -type DestroyProfile DestroyProfileRequestType - -func init() { - t["DestroyProfile"] = reflect.TypeOf((*DestroyProfile)(nil)).Elem() -} - -type DestroyProfileRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["DestroyProfileRequestType"] = reflect.TypeOf((*DestroyProfileRequestType)(nil)).Elem() -} - -type DestroyProfileResponse struct { -} - -type DestroyPropertyCollector DestroyPropertyCollectorRequestType - -func init() { - t["DestroyPropertyCollector"] = reflect.TypeOf((*DestroyPropertyCollector)(nil)).Elem() -} - -type DestroyPropertyCollectorRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["DestroyPropertyCollectorRequestType"] = reflect.TypeOf((*DestroyPropertyCollectorRequestType)(nil)).Elem() -} - -type DestroyPropertyCollectorResponse struct { -} - -type DestroyPropertyFilter DestroyPropertyFilterRequestType - -func init() { - t["DestroyPropertyFilter"] = reflect.TypeOf((*DestroyPropertyFilter)(nil)).Elem() -} - -type DestroyPropertyFilterRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["DestroyPropertyFilterRequestType"] = reflect.TypeOf((*DestroyPropertyFilterRequestType)(nil)).Elem() -} - -type DestroyPropertyFilterResponse struct { -} - -type DestroyRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["DestroyRequestType"] = reflect.TypeOf((*DestroyRequestType)(nil)).Elem() -} - -type DestroyVffs DestroyVffsRequestType - -func init() { - t["DestroyVffs"] = reflect.TypeOf((*DestroyVffs)(nil)).Elem() -} - -type DestroyVffsRequestType struct { - This ManagedObjectReference `xml:"_this"` - VffsPath string `xml:"vffsPath"` -} - -func init() { - t["DestroyVffsRequestType"] = reflect.TypeOf((*DestroyVffsRequestType)(nil)).Elem() -} - -type DestroyVffsResponse struct { -} - -type DestroyView DestroyViewRequestType - -func init() { - t["DestroyView"] = reflect.TypeOf((*DestroyView)(nil)).Elem() -} - -type DestroyViewRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["DestroyViewRequestType"] = reflect.TypeOf((*DestroyViewRequestType)(nil)).Elem() -} - -type DestroyViewResponse struct { -} - -type Destroy_Task DestroyRequestType - -func init() { - t["Destroy_Task"] = reflect.TypeOf((*Destroy_Task)(nil)).Elem() -} - -type Destroy_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type DetachScsiLun DetachScsiLunRequestType - -func init() { - t["DetachScsiLun"] = reflect.TypeOf((*DetachScsiLun)(nil)).Elem() -} - -type DetachScsiLunExRequestType struct { - This ManagedObjectReference `xml:"_this"` - LunUuid []string `xml:"lunUuid"` -} - -func init() { - t["DetachScsiLunExRequestType"] = reflect.TypeOf((*DetachScsiLunExRequestType)(nil)).Elem() -} - -type DetachScsiLunEx_Task DetachScsiLunExRequestType - -func init() { - t["DetachScsiLunEx_Task"] = reflect.TypeOf((*DetachScsiLunEx_Task)(nil)).Elem() -} - -type DetachScsiLunEx_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type DetachScsiLunRequestType struct { - This ManagedObjectReference `xml:"_this"` - LunUuid string `xml:"lunUuid"` -} - -func init() { - t["DetachScsiLunRequestType"] = reflect.TypeOf((*DetachScsiLunRequestType)(nil)).Elem() -} - -type DetachScsiLunResponse struct { -} - -type DeviceBackedVirtualDiskSpec struct { - VirtualDiskSpec - - Device string `xml:"device"` -} - -func init() { - t["DeviceBackedVirtualDiskSpec"] = reflect.TypeOf((*DeviceBackedVirtualDiskSpec)(nil)).Elem() -} - -type DeviceBackingNotSupported struct { - DeviceNotSupported - - Backing string `xml:"backing"` -} - -func init() { - t["DeviceBackingNotSupported"] = reflect.TypeOf((*DeviceBackingNotSupported)(nil)).Elem() -} - -type DeviceBackingNotSupportedFault BaseDeviceBackingNotSupported - -func init() { - t["DeviceBackingNotSupportedFault"] = reflect.TypeOf((*DeviceBackingNotSupportedFault)(nil)).Elem() -} - -type DeviceControllerNotSupported struct { - DeviceNotSupported - - Controller string `xml:"controller"` -} - -func init() { - t["DeviceControllerNotSupported"] = reflect.TypeOf((*DeviceControllerNotSupported)(nil)).Elem() -} - -type DeviceControllerNotSupportedFault DeviceControllerNotSupported - -func init() { - t["DeviceControllerNotSupportedFault"] = reflect.TypeOf((*DeviceControllerNotSupportedFault)(nil)).Elem() -} - -type DeviceHotPlugNotSupported struct { - InvalidDeviceSpec -} - -func init() { - t["DeviceHotPlugNotSupported"] = reflect.TypeOf((*DeviceHotPlugNotSupported)(nil)).Elem() -} - -type DeviceHotPlugNotSupportedFault DeviceHotPlugNotSupported - -func init() { - t["DeviceHotPlugNotSupportedFault"] = reflect.TypeOf((*DeviceHotPlugNotSupportedFault)(nil)).Elem() -} - -type DeviceNotFound struct { - InvalidDeviceSpec -} - -func init() { - t["DeviceNotFound"] = reflect.TypeOf((*DeviceNotFound)(nil)).Elem() -} - -type DeviceNotFoundFault DeviceNotFound - -func init() { - t["DeviceNotFoundFault"] = reflect.TypeOf((*DeviceNotFoundFault)(nil)).Elem() -} - -type DeviceNotSupported struct { - VirtualHardwareCompatibilityIssue - - Device string `xml:"device"` - Reason string `xml:"reason,omitempty"` -} - -func init() { - t["DeviceNotSupported"] = reflect.TypeOf((*DeviceNotSupported)(nil)).Elem() -} - -type DeviceNotSupportedFault BaseDeviceNotSupported - -func init() { - t["DeviceNotSupportedFault"] = reflect.TypeOf((*DeviceNotSupportedFault)(nil)).Elem() -} - -type DeviceUnsupportedForVmPlatform struct { - InvalidDeviceSpec -} - -func init() { - t["DeviceUnsupportedForVmPlatform"] = reflect.TypeOf((*DeviceUnsupportedForVmPlatform)(nil)).Elem() -} - -type DeviceUnsupportedForVmPlatformFault DeviceUnsupportedForVmPlatform - -func init() { - t["DeviceUnsupportedForVmPlatformFault"] = reflect.TypeOf((*DeviceUnsupportedForVmPlatformFault)(nil)).Elem() -} - -type DeviceUnsupportedForVmVersion struct { - InvalidDeviceSpec - - CurrentVersion string `xml:"currentVersion"` - ExpectedVersion string `xml:"expectedVersion"` -} - -func init() { - t["DeviceUnsupportedForVmVersion"] = reflect.TypeOf((*DeviceUnsupportedForVmVersion)(nil)).Elem() -} - -type DeviceUnsupportedForVmVersionFault DeviceUnsupportedForVmVersion - -func init() { - t["DeviceUnsupportedForVmVersionFault"] = reflect.TypeOf((*DeviceUnsupportedForVmVersionFault)(nil)).Elem() -} - -type DiagnosticManagerBundleInfo struct { - DynamicData - - System *ManagedObjectReference `xml:"system,omitempty"` - Url string `xml:"url"` -} - -func init() { - t["DiagnosticManagerBundleInfo"] = reflect.TypeOf((*DiagnosticManagerBundleInfo)(nil)).Elem() -} - -type DiagnosticManagerLogDescriptor struct { - DynamicData - - Key string `xml:"key"` - FileName string `xml:"fileName"` - Creator string `xml:"creator"` - Format string `xml:"format"` - MimeType string `xml:"mimeType"` - Info BaseDescription `xml:"info,typeattr"` -} - -func init() { - t["DiagnosticManagerLogDescriptor"] = reflect.TypeOf((*DiagnosticManagerLogDescriptor)(nil)).Elem() -} - -type DiagnosticManagerLogHeader struct { - DynamicData - - LineStart int32 `xml:"lineStart"` - LineEnd int32 `xml:"lineEnd"` - LineText []string `xml:"lineText,omitempty"` -} - -func init() { - t["DiagnosticManagerLogHeader"] = reflect.TypeOf((*DiagnosticManagerLogHeader)(nil)).Elem() -} - -type DigestNotSupported struct { - DeviceNotSupported -} - -func init() { - t["DigestNotSupported"] = reflect.TypeOf((*DigestNotSupported)(nil)).Elem() -} - -type DigestNotSupportedFault DigestNotSupported - -func init() { - t["DigestNotSupportedFault"] = reflect.TypeOf((*DigestNotSupportedFault)(nil)).Elem() -} - -type DirectoryNotEmpty struct { - FileFault -} - -func init() { - t["DirectoryNotEmpty"] = reflect.TypeOf((*DirectoryNotEmpty)(nil)).Elem() -} - -type DirectoryNotEmptyFault DirectoryNotEmpty - -func init() { - t["DirectoryNotEmptyFault"] = reflect.TypeOf((*DirectoryNotEmptyFault)(nil)).Elem() -} - -type DisableAdminNotSupported struct { - HostConfigFault -} - -func init() { - t["DisableAdminNotSupported"] = reflect.TypeOf((*DisableAdminNotSupported)(nil)).Elem() -} - -type DisableAdminNotSupportedFault DisableAdminNotSupported - -func init() { - t["DisableAdminNotSupportedFault"] = reflect.TypeOf((*DisableAdminNotSupportedFault)(nil)).Elem() -} - -type DisableEvcModeRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["DisableEvcModeRequestType"] = reflect.TypeOf((*DisableEvcModeRequestType)(nil)).Elem() -} - -type DisableEvcMode_Task DisableEvcModeRequestType - -func init() { - t["DisableEvcMode_Task"] = reflect.TypeOf((*DisableEvcMode_Task)(nil)).Elem() -} - -type DisableEvcMode_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type DisableFeature DisableFeatureRequestType - -func init() { - t["DisableFeature"] = reflect.TypeOf((*DisableFeature)(nil)).Elem() -} - -type DisableFeatureRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host *ManagedObjectReference `xml:"host,omitempty"` - FeatureKey string `xml:"featureKey"` -} - -func init() { - t["DisableFeatureRequestType"] = reflect.TypeOf((*DisableFeatureRequestType)(nil)).Elem() -} - -type DisableFeatureResponse struct { - Returnval bool `xml:"returnval"` -} - -type DisableHyperThreading DisableHyperThreadingRequestType - -func init() { - t["DisableHyperThreading"] = reflect.TypeOf((*DisableHyperThreading)(nil)).Elem() -} - -type DisableHyperThreadingRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["DisableHyperThreadingRequestType"] = reflect.TypeOf((*DisableHyperThreadingRequestType)(nil)).Elem() -} - -type DisableHyperThreadingResponse struct { -} - -type DisableMultipathPath DisableMultipathPathRequestType - -func init() { - t["DisableMultipathPath"] = reflect.TypeOf((*DisableMultipathPath)(nil)).Elem() -} - -type DisableMultipathPathRequestType struct { - This ManagedObjectReference `xml:"_this"` - PathName string `xml:"pathName"` -} - -func init() { - t["DisableMultipathPathRequestType"] = reflect.TypeOf((*DisableMultipathPathRequestType)(nil)).Elem() -} - -type DisableMultipathPathResponse struct { -} - -type DisableRuleset DisableRulesetRequestType - -func init() { - t["DisableRuleset"] = reflect.TypeOf((*DisableRuleset)(nil)).Elem() -} - -type DisableRulesetRequestType struct { - This ManagedObjectReference `xml:"_this"` - Id string `xml:"id"` -} - -func init() { - t["DisableRulesetRequestType"] = reflect.TypeOf((*DisableRulesetRequestType)(nil)).Elem() -} - -type DisableRulesetResponse struct { -} - -type DisableSecondaryVMRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` -} - -func init() { - t["DisableSecondaryVMRequestType"] = reflect.TypeOf((*DisableSecondaryVMRequestType)(nil)).Elem() -} - -type DisableSecondaryVM_Task DisableSecondaryVMRequestType - -func init() { - t["DisableSecondaryVM_Task"] = reflect.TypeOf((*DisableSecondaryVM_Task)(nil)).Elem() -} - -type DisableSecondaryVM_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type DisableSmartCardAuthentication DisableSmartCardAuthenticationRequestType - -func init() { - t["DisableSmartCardAuthentication"] = reflect.TypeOf((*DisableSmartCardAuthentication)(nil)).Elem() -} - -type DisableSmartCardAuthenticationRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["DisableSmartCardAuthenticationRequestType"] = reflect.TypeOf((*DisableSmartCardAuthenticationRequestType)(nil)).Elem() -} - -type DisableSmartCardAuthenticationResponse struct { -} - -type DisallowedChangeByService struct { - RuntimeFault - - ServiceName string `xml:"serviceName"` - DisallowedChange string `xml:"disallowedChange,omitempty"` -} - -func init() { - t["DisallowedChangeByService"] = reflect.TypeOf((*DisallowedChangeByService)(nil)).Elem() -} - -type DisallowedChangeByServiceFault DisallowedChangeByService - -func init() { - t["DisallowedChangeByServiceFault"] = reflect.TypeOf((*DisallowedChangeByServiceFault)(nil)).Elem() -} - -type DisallowedDiskModeChange struct { - InvalidDeviceSpec -} - -func init() { - t["DisallowedDiskModeChange"] = reflect.TypeOf((*DisallowedDiskModeChange)(nil)).Elem() -} - -type DisallowedDiskModeChangeFault DisallowedDiskModeChange - -func init() { - t["DisallowedDiskModeChangeFault"] = reflect.TypeOf((*DisallowedDiskModeChangeFault)(nil)).Elem() -} - -type DisallowedMigrationDeviceAttached struct { - MigrationFault - - Fault LocalizedMethodFault `xml:"fault"` -} - -func init() { - t["DisallowedMigrationDeviceAttached"] = reflect.TypeOf((*DisallowedMigrationDeviceAttached)(nil)).Elem() -} - -type DisallowedMigrationDeviceAttachedFault DisallowedMigrationDeviceAttached - -func init() { - t["DisallowedMigrationDeviceAttachedFault"] = reflect.TypeOf((*DisallowedMigrationDeviceAttachedFault)(nil)).Elem() -} - -type DisallowedOperationOnFailoverHost struct { - RuntimeFault - - Host ManagedObjectReference `xml:"host"` - Hostname string `xml:"hostname"` -} - -func init() { - t["DisallowedOperationOnFailoverHost"] = reflect.TypeOf((*DisallowedOperationOnFailoverHost)(nil)).Elem() -} - -type DisallowedOperationOnFailoverHostFault DisallowedOperationOnFailoverHost - -func init() { - t["DisallowedOperationOnFailoverHostFault"] = reflect.TypeOf((*DisallowedOperationOnFailoverHostFault)(nil)).Elem() -} - -type DisconnectHostRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["DisconnectHostRequestType"] = reflect.TypeOf((*DisconnectHostRequestType)(nil)).Elem() -} - -type DisconnectHost_Task DisconnectHostRequestType - -func init() { - t["DisconnectHost_Task"] = reflect.TypeOf((*DisconnectHost_Task)(nil)).Elem() -} - -type DisconnectHost_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type DisconnectedHostsBlockingEVC struct { - EVCConfigFault -} - -func init() { - t["DisconnectedHostsBlockingEVC"] = reflect.TypeOf((*DisconnectedHostsBlockingEVC)(nil)).Elem() -} - -type DisconnectedHostsBlockingEVCFault DisconnectedHostsBlockingEVC - -func init() { - t["DisconnectedHostsBlockingEVCFault"] = reflect.TypeOf((*DisconnectedHostsBlockingEVCFault)(nil)).Elem() -} - -type DiscoverFcoeHbas DiscoverFcoeHbasRequestType - -func init() { - t["DiscoverFcoeHbas"] = reflect.TypeOf((*DiscoverFcoeHbas)(nil)).Elem() -} - -type DiscoverFcoeHbasRequestType struct { - This ManagedObjectReference `xml:"_this"` - FcoeSpec FcoeConfigFcoeSpecification `xml:"fcoeSpec"` -} - -func init() { - t["DiscoverFcoeHbasRequestType"] = reflect.TypeOf((*DiscoverFcoeHbasRequestType)(nil)).Elem() -} - -type DiscoverFcoeHbasResponse struct { -} - -type DiskChangeExtent struct { - DynamicData - - Start int64 `xml:"start"` - Length int64 `xml:"length"` -} - -func init() { - t["DiskChangeExtent"] = reflect.TypeOf((*DiskChangeExtent)(nil)).Elem() -} - -type DiskChangeInfo struct { - DynamicData - - StartOffset int64 `xml:"startOffset"` - Length int64 `xml:"length"` - ChangedArea []DiskChangeExtent `xml:"changedArea,omitempty"` -} - -func init() { - t["DiskChangeInfo"] = reflect.TypeOf((*DiskChangeInfo)(nil)).Elem() -} - -type DiskHasPartitions struct { - VsanDiskFault -} - -func init() { - t["DiskHasPartitions"] = reflect.TypeOf((*DiskHasPartitions)(nil)).Elem() -} - -type DiskHasPartitionsFault DiskHasPartitions - -func init() { - t["DiskHasPartitionsFault"] = reflect.TypeOf((*DiskHasPartitionsFault)(nil)).Elem() -} - -type DiskIsLastRemainingNonSSD struct { - VsanDiskFault -} - -func init() { - t["DiskIsLastRemainingNonSSD"] = reflect.TypeOf((*DiskIsLastRemainingNonSSD)(nil)).Elem() -} - -type DiskIsLastRemainingNonSSDFault DiskIsLastRemainingNonSSD - -func init() { - t["DiskIsLastRemainingNonSSDFault"] = reflect.TypeOf((*DiskIsLastRemainingNonSSDFault)(nil)).Elem() -} - -type DiskIsNonLocal struct { - VsanDiskFault -} - -func init() { - t["DiskIsNonLocal"] = reflect.TypeOf((*DiskIsNonLocal)(nil)).Elem() -} - -type DiskIsNonLocalFault DiskIsNonLocal - -func init() { - t["DiskIsNonLocalFault"] = reflect.TypeOf((*DiskIsNonLocalFault)(nil)).Elem() -} - -type DiskIsUSB struct { - VsanDiskFault -} - -func init() { - t["DiskIsUSB"] = reflect.TypeOf((*DiskIsUSB)(nil)).Elem() -} - -type DiskIsUSBFault DiskIsUSB - -func init() { - t["DiskIsUSBFault"] = reflect.TypeOf((*DiskIsUSBFault)(nil)).Elem() -} - -type DiskMoveTypeNotSupported struct { - MigrationFault -} - -func init() { - t["DiskMoveTypeNotSupported"] = reflect.TypeOf((*DiskMoveTypeNotSupported)(nil)).Elem() -} - -type DiskMoveTypeNotSupportedFault DiskMoveTypeNotSupported - -func init() { - t["DiskMoveTypeNotSupportedFault"] = reflect.TypeOf((*DiskMoveTypeNotSupportedFault)(nil)).Elem() -} - -type DiskNotSupported struct { - VirtualHardwareCompatibilityIssue - - Disk int32 `xml:"disk"` -} - -func init() { - t["DiskNotSupported"] = reflect.TypeOf((*DiskNotSupported)(nil)).Elem() -} - -type DiskNotSupportedFault BaseDiskNotSupported - -func init() { - t["DiskNotSupportedFault"] = reflect.TypeOf((*DiskNotSupportedFault)(nil)).Elem() -} - -type DiskTooSmall struct { - VsanDiskFault -} - -func init() { - t["DiskTooSmall"] = reflect.TypeOf((*DiskTooSmall)(nil)).Elem() -} - -type DiskTooSmallFault DiskTooSmall - -func init() { - t["DiskTooSmallFault"] = reflect.TypeOf((*DiskTooSmallFault)(nil)).Elem() -} - -type DissociateProfile DissociateProfileRequestType - -func init() { - t["DissociateProfile"] = reflect.TypeOf((*DissociateProfile)(nil)).Elem() -} - -type DissociateProfileRequestType struct { - This ManagedObjectReference `xml:"_this"` - Entity []ManagedObjectReference `xml:"entity,omitempty"` -} - -func init() { - t["DissociateProfileRequestType"] = reflect.TypeOf((*DissociateProfileRequestType)(nil)).Elem() -} - -type DissociateProfileResponse struct { -} - -type DistributedVirtualPort struct { - DynamicData - - Key string `xml:"key"` - Config DVPortConfigInfo `xml:"config"` - DvsUuid string `xml:"dvsUuid"` - PortgroupKey string `xml:"portgroupKey,omitempty"` - ProxyHost *ManagedObjectReference `xml:"proxyHost,omitempty"` - Connectee *DistributedVirtualSwitchPortConnectee `xml:"connectee,omitempty"` - Conflict bool `xml:"conflict"` - ConflictPortKey string `xml:"conflictPortKey,omitempty"` - State *DVPortState `xml:"state,omitempty"` - ConnectionCookie int32 `xml:"connectionCookie,omitempty"` - LastStatusChange time.Time `xml:"lastStatusChange"` - HostLocalPort *bool `xml:"hostLocalPort"` -} - -func init() { - t["DistributedVirtualPort"] = reflect.TypeOf((*DistributedVirtualPort)(nil)).Elem() -} - -type DistributedVirtualPortgroupInfo struct { - DynamicData - - SwitchName string `xml:"switchName"` - SwitchUuid string `xml:"switchUuid"` - PortgroupName string `xml:"portgroupName"` - PortgroupKey string `xml:"portgroupKey"` - PortgroupType string `xml:"portgroupType"` - UplinkPortgroup bool `xml:"uplinkPortgroup"` - Portgroup ManagedObjectReference `xml:"portgroup"` - NetworkReservationSupported *bool `xml:"networkReservationSupported"` -} - -func init() { - t["DistributedVirtualPortgroupInfo"] = reflect.TypeOf((*DistributedVirtualPortgroupInfo)(nil)).Elem() -} - -type DistributedVirtualSwitchHostMember struct { - DynamicData - - RuntimeState *DistributedVirtualSwitchHostMemberRuntimeState `xml:"runtimeState,omitempty"` - Config DistributedVirtualSwitchHostMemberConfigInfo `xml:"config"` - ProductInfo *DistributedVirtualSwitchProductSpec `xml:"productInfo,omitempty"` - UplinkPortKey []string `xml:"uplinkPortKey,omitempty"` - Status string `xml:"status"` - StatusDetail string `xml:"statusDetail,omitempty"` -} - -func init() { - t["DistributedVirtualSwitchHostMember"] = reflect.TypeOf((*DistributedVirtualSwitchHostMember)(nil)).Elem() -} - -type DistributedVirtualSwitchHostMemberBacking struct { - DynamicData -} - -func init() { - t["DistributedVirtualSwitchHostMemberBacking"] = reflect.TypeOf((*DistributedVirtualSwitchHostMemberBacking)(nil)).Elem() -} - -type DistributedVirtualSwitchHostMemberConfigInfo struct { - DynamicData - - Host *ManagedObjectReference `xml:"host,omitempty"` - MaxProxySwitchPorts int32 `xml:"maxProxySwitchPorts"` - VendorSpecificConfig []DistributedVirtualSwitchKeyedOpaqueBlob `xml:"vendorSpecificConfig,omitempty"` - Backing BaseDistributedVirtualSwitchHostMemberBacking `xml:"backing,typeattr"` -} - -func init() { - t["DistributedVirtualSwitchHostMemberConfigInfo"] = reflect.TypeOf((*DistributedVirtualSwitchHostMemberConfigInfo)(nil)).Elem() -} - -type DistributedVirtualSwitchHostMemberConfigSpec struct { - DynamicData - - Operation string `xml:"operation"` - Host ManagedObjectReference `xml:"host"` - Backing BaseDistributedVirtualSwitchHostMemberBacking `xml:"backing,omitempty,typeattr"` - MaxProxySwitchPorts int32 `xml:"maxProxySwitchPorts,omitempty"` - VendorSpecificConfig []DistributedVirtualSwitchKeyedOpaqueBlob `xml:"vendorSpecificConfig,omitempty"` -} - -func init() { - t["DistributedVirtualSwitchHostMemberConfigSpec"] = reflect.TypeOf((*DistributedVirtualSwitchHostMemberConfigSpec)(nil)).Elem() -} - -type DistributedVirtualSwitchHostMemberPnicBacking struct { - DistributedVirtualSwitchHostMemberBacking - - PnicSpec []DistributedVirtualSwitchHostMemberPnicSpec `xml:"pnicSpec,omitempty"` -} - -func init() { - t["DistributedVirtualSwitchHostMemberPnicBacking"] = reflect.TypeOf((*DistributedVirtualSwitchHostMemberPnicBacking)(nil)).Elem() -} - -type DistributedVirtualSwitchHostMemberPnicSpec struct { - DynamicData - - PnicDevice string `xml:"pnicDevice"` - UplinkPortKey string `xml:"uplinkPortKey,omitempty"` - UplinkPortgroupKey string `xml:"uplinkPortgroupKey,omitempty"` - ConnectionCookie int32 `xml:"connectionCookie,omitempty"` -} - -func init() { - t["DistributedVirtualSwitchHostMemberPnicSpec"] = reflect.TypeOf((*DistributedVirtualSwitchHostMemberPnicSpec)(nil)).Elem() -} - -type DistributedVirtualSwitchHostMemberRuntimeState struct { - DynamicData - - CurrentMaxProxySwitchPorts int32 `xml:"currentMaxProxySwitchPorts"` -} - -func init() { - t["DistributedVirtualSwitchHostMemberRuntimeState"] = reflect.TypeOf((*DistributedVirtualSwitchHostMemberRuntimeState)(nil)).Elem() -} - -type DistributedVirtualSwitchHostProductSpec struct { - DynamicData - - ProductLineId string `xml:"productLineId,omitempty"` - Version string `xml:"version,omitempty"` -} - -func init() { - t["DistributedVirtualSwitchHostProductSpec"] = reflect.TypeOf((*DistributedVirtualSwitchHostProductSpec)(nil)).Elem() -} - -type DistributedVirtualSwitchInfo struct { - DynamicData - - SwitchName string `xml:"switchName"` - SwitchUuid string `xml:"switchUuid"` - DistributedVirtualSwitch ManagedObjectReference `xml:"distributedVirtualSwitch"` - NetworkReservationSupported *bool `xml:"networkReservationSupported"` -} - -func init() { - t["DistributedVirtualSwitchInfo"] = reflect.TypeOf((*DistributedVirtualSwitchInfo)(nil)).Elem() -} - -type DistributedVirtualSwitchKeyedOpaqueBlob struct { - DynamicData - - Key string `xml:"key"` - OpaqueData string `xml:"opaqueData"` -} - -func init() { - t["DistributedVirtualSwitchKeyedOpaqueBlob"] = reflect.TypeOf((*DistributedVirtualSwitchKeyedOpaqueBlob)(nil)).Elem() -} - -type DistributedVirtualSwitchManagerCompatibilityResult struct { - DynamicData - - Host ManagedObjectReference `xml:"host"` - Error []LocalizedMethodFault `xml:"error,omitempty"` -} - -func init() { - t["DistributedVirtualSwitchManagerCompatibilityResult"] = reflect.TypeOf((*DistributedVirtualSwitchManagerCompatibilityResult)(nil)).Elem() -} - -type DistributedVirtualSwitchManagerDvsProductSpec struct { - DynamicData - - NewSwitchProductSpec *DistributedVirtualSwitchProductSpec `xml:"newSwitchProductSpec,omitempty"` - DistributedVirtualSwitch *ManagedObjectReference `xml:"distributedVirtualSwitch,omitempty"` -} - -func init() { - t["DistributedVirtualSwitchManagerDvsProductSpec"] = reflect.TypeOf((*DistributedVirtualSwitchManagerDvsProductSpec)(nil)).Elem() -} - -type DistributedVirtualSwitchManagerHostArrayFilter struct { - DistributedVirtualSwitchManagerHostDvsFilterSpec - - Host []ManagedObjectReference `xml:"host"` -} - -func init() { - t["DistributedVirtualSwitchManagerHostArrayFilter"] = reflect.TypeOf((*DistributedVirtualSwitchManagerHostArrayFilter)(nil)).Elem() -} - -type DistributedVirtualSwitchManagerHostContainer struct { - DynamicData - - Container ManagedObjectReference `xml:"container"` - Recursive bool `xml:"recursive"` -} - -func init() { - t["DistributedVirtualSwitchManagerHostContainer"] = reflect.TypeOf((*DistributedVirtualSwitchManagerHostContainer)(nil)).Elem() -} - -type DistributedVirtualSwitchManagerHostContainerFilter struct { - DistributedVirtualSwitchManagerHostDvsFilterSpec - - HostContainer DistributedVirtualSwitchManagerHostContainer `xml:"hostContainer"` -} - -func init() { - t["DistributedVirtualSwitchManagerHostContainerFilter"] = reflect.TypeOf((*DistributedVirtualSwitchManagerHostContainerFilter)(nil)).Elem() -} - -type DistributedVirtualSwitchManagerHostDvsFilterSpec struct { - DynamicData - - Inclusive bool `xml:"inclusive"` -} - -func init() { - t["DistributedVirtualSwitchManagerHostDvsFilterSpec"] = reflect.TypeOf((*DistributedVirtualSwitchManagerHostDvsFilterSpec)(nil)).Elem() -} - -type DistributedVirtualSwitchManagerHostDvsMembershipFilter struct { - DistributedVirtualSwitchManagerHostDvsFilterSpec - - DistributedVirtualSwitch ManagedObjectReference `xml:"distributedVirtualSwitch"` -} - -func init() { - t["DistributedVirtualSwitchManagerHostDvsMembershipFilter"] = reflect.TypeOf((*DistributedVirtualSwitchManagerHostDvsMembershipFilter)(nil)).Elem() -} - -type DistributedVirtualSwitchManagerImportResult struct { - DynamicData - - DistributedVirtualSwitch []ManagedObjectReference `xml:"distributedVirtualSwitch,omitempty"` - DistributedVirtualPortgroup []ManagedObjectReference `xml:"distributedVirtualPortgroup,omitempty"` - ImportFault []ImportOperationBulkFaultFaultOnImport `xml:"importFault,omitempty"` -} - -func init() { - t["DistributedVirtualSwitchManagerImportResult"] = reflect.TypeOf((*DistributedVirtualSwitchManagerImportResult)(nil)).Elem() -} - -type DistributedVirtualSwitchPortConnectee struct { - DynamicData - - ConnectedEntity *ManagedObjectReference `xml:"connectedEntity,omitempty"` - NicKey string `xml:"nicKey,omitempty"` - Type string `xml:"type,omitempty"` - AddressHint string `xml:"addressHint,omitempty"` -} - -func init() { - t["DistributedVirtualSwitchPortConnectee"] = reflect.TypeOf((*DistributedVirtualSwitchPortConnectee)(nil)).Elem() -} - -type DistributedVirtualSwitchPortConnection struct { - DynamicData - - SwitchUuid string `xml:"switchUuid"` - PortgroupKey string `xml:"portgroupKey,omitempty"` - PortKey string `xml:"portKey,omitempty"` - ConnectionCookie int32 `xml:"connectionCookie,omitempty"` -} - -func init() { - t["DistributedVirtualSwitchPortConnection"] = reflect.TypeOf((*DistributedVirtualSwitchPortConnection)(nil)).Elem() -} - -type DistributedVirtualSwitchPortCriteria struct { - DynamicData - - Connected *bool `xml:"connected"` - Active *bool `xml:"active"` - UplinkPort *bool `xml:"uplinkPort"` - Scope *ManagedObjectReference `xml:"scope,omitempty"` - PortgroupKey []string `xml:"portgroupKey,omitempty"` - Inside *bool `xml:"inside"` - PortKey []string `xml:"portKey,omitempty"` -} - -func init() { - t["DistributedVirtualSwitchPortCriteria"] = reflect.TypeOf((*DistributedVirtualSwitchPortCriteria)(nil)).Elem() -} - -type DistributedVirtualSwitchPortStatistics struct { - DynamicData - - PacketsInMulticast int64 `xml:"packetsInMulticast"` - PacketsOutMulticast int64 `xml:"packetsOutMulticast"` - BytesInMulticast int64 `xml:"bytesInMulticast"` - BytesOutMulticast int64 `xml:"bytesOutMulticast"` - PacketsInUnicast int64 `xml:"packetsInUnicast"` - PacketsOutUnicast int64 `xml:"packetsOutUnicast"` - BytesInUnicast int64 `xml:"bytesInUnicast"` - BytesOutUnicast int64 `xml:"bytesOutUnicast"` - PacketsInBroadcast int64 `xml:"packetsInBroadcast"` - PacketsOutBroadcast int64 `xml:"packetsOutBroadcast"` - BytesInBroadcast int64 `xml:"bytesInBroadcast"` - BytesOutBroadcast int64 `xml:"bytesOutBroadcast"` - PacketsInDropped int64 `xml:"packetsInDropped"` - PacketsOutDropped int64 `xml:"packetsOutDropped"` - PacketsInException int64 `xml:"packetsInException"` - PacketsOutException int64 `xml:"packetsOutException"` -} - -func init() { - t["DistributedVirtualSwitchPortStatistics"] = reflect.TypeOf((*DistributedVirtualSwitchPortStatistics)(nil)).Elem() -} - -type DistributedVirtualSwitchProductSpec struct { - DynamicData - - Name string `xml:"name,omitempty"` - Vendor string `xml:"vendor,omitempty"` - Version string `xml:"version,omitempty"` - Build string `xml:"build,omitempty"` - ForwardingClass string `xml:"forwardingClass,omitempty"` - BundleId string `xml:"bundleId,omitempty"` - BundleUrl string `xml:"bundleUrl,omitempty"` -} - -func init() { - t["DistributedVirtualSwitchProductSpec"] = reflect.TypeOf((*DistributedVirtualSwitchProductSpec)(nil)).Elem() -} - -type DoesCustomizationSpecExist DoesCustomizationSpecExistRequestType - -func init() { - t["DoesCustomizationSpecExist"] = reflect.TypeOf((*DoesCustomizationSpecExist)(nil)).Elem() -} - -type DoesCustomizationSpecExistRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` -} - -func init() { - t["DoesCustomizationSpecExistRequestType"] = reflect.TypeOf((*DoesCustomizationSpecExistRequestType)(nil)).Elem() -} - -type DoesCustomizationSpecExistResponse struct { - Returnval bool `xml:"returnval"` -} - -type DomainNotFound struct { - ActiveDirectoryFault - - DomainName string `xml:"domainName"` -} - -func init() { - t["DomainNotFound"] = reflect.TypeOf((*DomainNotFound)(nil)).Elem() -} - -type DomainNotFoundFault DomainNotFound - -func init() { - t["DomainNotFoundFault"] = reflect.TypeOf((*DomainNotFoundFault)(nil)).Elem() -} - -type DrsDisabledEvent struct { - ClusterEvent -} - -func init() { - t["DrsDisabledEvent"] = reflect.TypeOf((*DrsDisabledEvent)(nil)).Elem() -} - -type DrsDisabledOnVm struct { - VimFault -} - -func init() { - t["DrsDisabledOnVm"] = reflect.TypeOf((*DrsDisabledOnVm)(nil)).Elem() -} - -type DrsDisabledOnVmFault DrsDisabledOnVm - -func init() { - t["DrsDisabledOnVmFault"] = reflect.TypeOf((*DrsDisabledOnVmFault)(nil)).Elem() -} - -type DrsEnabledEvent struct { - ClusterEvent - - Behavior string `xml:"behavior"` -} - -func init() { - t["DrsEnabledEvent"] = reflect.TypeOf((*DrsEnabledEvent)(nil)).Elem() -} - -type DrsEnteredStandbyModeEvent struct { - EnteredStandbyModeEvent -} - -func init() { - t["DrsEnteredStandbyModeEvent"] = reflect.TypeOf((*DrsEnteredStandbyModeEvent)(nil)).Elem() -} - -type DrsEnteringStandbyModeEvent struct { - EnteringStandbyModeEvent -} - -func init() { - t["DrsEnteringStandbyModeEvent"] = reflect.TypeOf((*DrsEnteringStandbyModeEvent)(nil)).Elem() -} - -type DrsExitStandbyModeFailedEvent struct { - ExitStandbyModeFailedEvent -} - -func init() { - t["DrsExitStandbyModeFailedEvent"] = reflect.TypeOf((*DrsExitStandbyModeFailedEvent)(nil)).Elem() -} - -type DrsExitedStandbyModeEvent struct { - ExitedStandbyModeEvent -} - -func init() { - t["DrsExitedStandbyModeEvent"] = reflect.TypeOf((*DrsExitedStandbyModeEvent)(nil)).Elem() -} - -type DrsExitingStandbyModeEvent struct { - ExitingStandbyModeEvent -} - -func init() { - t["DrsExitingStandbyModeEvent"] = reflect.TypeOf((*DrsExitingStandbyModeEvent)(nil)).Elem() -} - -type DrsInvocationFailedEvent struct { - ClusterEvent -} - -func init() { - t["DrsInvocationFailedEvent"] = reflect.TypeOf((*DrsInvocationFailedEvent)(nil)).Elem() -} - -type DrsRecoveredFromFailureEvent struct { - ClusterEvent -} - -func init() { - t["DrsRecoveredFromFailureEvent"] = reflect.TypeOf((*DrsRecoveredFromFailureEvent)(nil)).Elem() -} - -type DrsResourceConfigureFailedEvent struct { - HostEvent - - Reason LocalizedMethodFault `xml:"reason"` -} - -func init() { - t["DrsResourceConfigureFailedEvent"] = reflect.TypeOf((*DrsResourceConfigureFailedEvent)(nil)).Elem() -} - -type DrsResourceConfigureSyncedEvent struct { - HostEvent -} - -func init() { - t["DrsResourceConfigureSyncedEvent"] = reflect.TypeOf((*DrsResourceConfigureSyncedEvent)(nil)).Elem() -} - -type DrsRuleComplianceEvent struct { - VmEvent -} - -func init() { - t["DrsRuleComplianceEvent"] = reflect.TypeOf((*DrsRuleComplianceEvent)(nil)).Elem() -} - -type DrsRuleViolationEvent struct { - VmEvent -} - -func init() { - t["DrsRuleViolationEvent"] = reflect.TypeOf((*DrsRuleViolationEvent)(nil)).Elem() -} - -type DrsSoftRuleViolationEvent struct { - VmEvent -} - -func init() { - t["DrsSoftRuleViolationEvent"] = reflect.TypeOf((*DrsSoftRuleViolationEvent)(nil)).Elem() -} - -type DrsVmMigratedEvent struct { - VmMigratedEvent -} - -func init() { - t["DrsVmMigratedEvent"] = reflect.TypeOf((*DrsVmMigratedEvent)(nil)).Elem() -} - -type DrsVmPoweredOnEvent struct { - VmPoweredOnEvent -} - -func init() { - t["DrsVmPoweredOnEvent"] = reflect.TypeOf((*DrsVmPoweredOnEvent)(nil)).Elem() -} - -type DrsVmotionIncompatibleFault struct { - VirtualHardwareCompatibilityIssue - - Host ManagedObjectReference `xml:"host"` -} - -func init() { - t["DrsVmotionIncompatibleFault"] = reflect.TypeOf((*DrsVmotionIncompatibleFault)(nil)).Elem() -} - -type DrsVmotionIncompatibleFaultFault DrsVmotionIncompatibleFault - -func init() { - t["DrsVmotionIncompatibleFaultFault"] = reflect.TypeOf((*DrsVmotionIncompatibleFaultFault)(nil)).Elem() -} - -type DuplicateCustomizationSpec DuplicateCustomizationSpecRequestType - -func init() { - t["DuplicateCustomizationSpec"] = reflect.TypeOf((*DuplicateCustomizationSpec)(nil)).Elem() -} - -type DuplicateCustomizationSpecRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` - NewName string `xml:"newName"` -} - -func init() { - t["DuplicateCustomizationSpecRequestType"] = reflect.TypeOf((*DuplicateCustomizationSpecRequestType)(nil)).Elem() -} - -type DuplicateCustomizationSpecResponse struct { -} - -type DuplicateDisks struct { - VsanDiskFault -} - -func init() { - t["DuplicateDisks"] = reflect.TypeOf((*DuplicateDisks)(nil)).Elem() -} - -type DuplicateDisksFault DuplicateDisks - -func init() { - t["DuplicateDisksFault"] = reflect.TypeOf((*DuplicateDisksFault)(nil)).Elem() -} - -type DuplicateIpDetectedEvent struct { - HostEvent - - DuplicateIP string `xml:"duplicateIP"` - MacAddress string `xml:"macAddress"` -} - -func init() { - t["DuplicateIpDetectedEvent"] = reflect.TypeOf((*DuplicateIpDetectedEvent)(nil)).Elem() -} - -type DuplicateName struct { - VimFault - - Name string `xml:"name"` - Object ManagedObjectReference `xml:"object"` -} - -func init() { - t["DuplicateName"] = reflect.TypeOf((*DuplicateName)(nil)).Elem() -} - -type DuplicateNameFault DuplicateName - -func init() { - t["DuplicateNameFault"] = reflect.TypeOf((*DuplicateNameFault)(nil)).Elem() -} - -type DuplicateVsanNetworkInterface struct { - VsanFault - - Device string `xml:"device"` -} - -func init() { - t["DuplicateVsanNetworkInterface"] = reflect.TypeOf((*DuplicateVsanNetworkInterface)(nil)).Elem() -} - -type DuplicateVsanNetworkInterfaceFault DuplicateVsanNetworkInterface - -func init() { - t["DuplicateVsanNetworkInterfaceFault"] = reflect.TypeOf((*DuplicateVsanNetworkInterfaceFault)(nil)).Elem() -} - -type DvpgImportEvent struct { - DVPortgroupEvent - - ImportType string `xml:"importType"` -} - -func init() { - t["DvpgImportEvent"] = reflect.TypeOf((*DvpgImportEvent)(nil)).Elem() -} - -type DvpgRestoreEvent struct { - DVPortgroupEvent -} - -func init() { - t["DvpgRestoreEvent"] = reflect.TypeOf((*DvpgRestoreEvent)(nil)).Elem() -} - -type DvsAcceptNetworkRuleAction struct { - DvsNetworkRuleAction -} - -func init() { - t["DvsAcceptNetworkRuleAction"] = reflect.TypeOf((*DvsAcceptNetworkRuleAction)(nil)).Elem() -} - -type DvsApplyOperationFault struct { - DvsFault - - ObjectFault []DvsApplyOperationFaultFaultOnObject `xml:"objectFault"` -} - -func init() { - t["DvsApplyOperationFault"] = reflect.TypeOf((*DvsApplyOperationFault)(nil)).Elem() -} - -type DvsApplyOperationFaultFault DvsApplyOperationFault - -func init() { - t["DvsApplyOperationFaultFault"] = reflect.TypeOf((*DvsApplyOperationFaultFault)(nil)).Elem() -} - -type DvsApplyOperationFaultFaultOnObject struct { - DynamicData - - ObjectId string `xml:"objectId"` - Type string `xml:"type"` - Fault LocalizedMethodFault `xml:"fault"` -} - -func init() { - t["DvsApplyOperationFaultFaultOnObject"] = reflect.TypeOf((*DvsApplyOperationFaultFaultOnObject)(nil)).Elem() -} - -type DvsCopyNetworkRuleAction struct { - DvsNetworkRuleAction -} - -func init() { - t["DvsCopyNetworkRuleAction"] = reflect.TypeOf((*DvsCopyNetworkRuleAction)(nil)).Elem() -} - -type DvsCreatedEvent struct { - DvsEvent - - Parent FolderEventArgument `xml:"parent"` -} - -func init() { - t["DvsCreatedEvent"] = reflect.TypeOf((*DvsCreatedEvent)(nil)).Elem() -} - -type DvsDestroyedEvent struct { - DvsEvent -} - -func init() { - t["DvsDestroyedEvent"] = reflect.TypeOf((*DvsDestroyedEvent)(nil)).Elem() -} - -type DvsDropNetworkRuleAction struct { - DvsNetworkRuleAction -} - -func init() { - t["DvsDropNetworkRuleAction"] = reflect.TypeOf((*DvsDropNetworkRuleAction)(nil)).Elem() -} - -type DvsEvent struct { - Event -} - -func init() { - t["DvsEvent"] = reflect.TypeOf((*DvsEvent)(nil)).Elem() -} - -type DvsEventArgument struct { - EntityEventArgument - - Dvs ManagedObjectReference `xml:"dvs"` -} - -func init() { - t["DvsEventArgument"] = reflect.TypeOf((*DvsEventArgument)(nil)).Elem() -} - -type DvsFault struct { - VimFault -} - -func init() { - t["DvsFault"] = reflect.TypeOf((*DvsFault)(nil)).Elem() -} - -type DvsFaultFault BaseDvsFault - -func init() { - t["DvsFaultFault"] = reflect.TypeOf((*DvsFaultFault)(nil)).Elem() -} - -type DvsFilterConfig struct { - InheritablePolicy - - Key string `xml:"key,omitempty"` - AgentName string `xml:"agentName,omitempty"` - SlotNumber string `xml:"slotNumber,omitempty"` - Parameters *DvsFilterParameter `xml:"parameters,omitempty"` - OnFailure string `xml:"onFailure,omitempty"` -} - -func init() { - t["DvsFilterConfig"] = reflect.TypeOf((*DvsFilterConfig)(nil)).Elem() -} - -type DvsFilterConfigSpec struct { - DvsFilterConfig - - Operation string `xml:"operation"` -} - -func init() { - t["DvsFilterConfigSpec"] = reflect.TypeOf((*DvsFilterConfigSpec)(nil)).Elem() -} - -type DvsFilterParameter struct { - DynamicData - - Parameters []string `xml:"parameters,omitempty"` -} - -func init() { - t["DvsFilterParameter"] = reflect.TypeOf((*DvsFilterParameter)(nil)).Elem() -} - -type DvsFilterPolicy struct { - InheritablePolicy - - FilterConfig []BaseDvsFilterConfig `xml:"filterConfig,omitempty,typeattr"` -} - -func init() { - t["DvsFilterPolicy"] = reflect.TypeOf((*DvsFilterPolicy)(nil)).Elem() -} - -type DvsGreEncapNetworkRuleAction struct { - DvsNetworkRuleAction - - EncapsulationIp SingleIp `xml:"encapsulationIp"` -} - -func init() { - t["DvsGreEncapNetworkRuleAction"] = reflect.TypeOf((*DvsGreEncapNetworkRuleAction)(nil)).Elem() -} - -type DvsHealthStatusChangeEvent struct { - HostEvent - - SwitchUuid string `xml:"switchUuid"` - HealthResult BaseHostMemberHealthCheckResult `xml:"healthResult,omitempty,typeattr"` -} - -func init() { - t["DvsHealthStatusChangeEvent"] = reflect.TypeOf((*DvsHealthStatusChangeEvent)(nil)).Elem() -} - -type DvsHostBackInSyncEvent struct { - DvsEvent - - HostBackInSync HostEventArgument `xml:"hostBackInSync"` -} - -func init() { - t["DvsHostBackInSyncEvent"] = reflect.TypeOf((*DvsHostBackInSyncEvent)(nil)).Elem() -} - -type DvsHostInfrastructureTrafficResource struct { - DynamicData - - Key string `xml:"key"` - Description string `xml:"description,omitempty"` - AllocationInfo DvsHostInfrastructureTrafficResourceAllocation `xml:"allocationInfo"` -} - -func init() { - t["DvsHostInfrastructureTrafficResource"] = reflect.TypeOf((*DvsHostInfrastructureTrafficResource)(nil)).Elem() -} - -type DvsHostInfrastructureTrafficResourceAllocation struct { - DynamicData - - Limit int64 `xml:"limit,omitempty"` - Shares *SharesInfo `xml:"shares,omitempty"` - Reservation int64 `xml:"reservation,omitempty"` -} - -func init() { - t["DvsHostInfrastructureTrafficResourceAllocation"] = reflect.TypeOf((*DvsHostInfrastructureTrafficResourceAllocation)(nil)).Elem() -} - -type DvsHostJoinedEvent struct { - DvsEvent - - HostJoined HostEventArgument `xml:"hostJoined"` -} - -func init() { - t["DvsHostJoinedEvent"] = reflect.TypeOf((*DvsHostJoinedEvent)(nil)).Elem() -} - -type DvsHostLeftEvent struct { - DvsEvent - - HostLeft HostEventArgument `xml:"hostLeft"` -} - -func init() { - t["DvsHostLeftEvent"] = reflect.TypeOf((*DvsHostLeftEvent)(nil)).Elem() -} - -type DvsHostStatusUpdated struct { - DvsEvent - - HostMember HostEventArgument `xml:"hostMember"` - OldStatus string `xml:"oldStatus,omitempty"` - NewStatus string `xml:"newStatus,omitempty"` - OldStatusDetail string `xml:"oldStatusDetail,omitempty"` - NewStatusDetail string `xml:"newStatusDetail,omitempty"` -} - -func init() { - t["DvsHostStatusUpdated"] = reflect.TypeOf((*DvsHostStatusUpdated)(nil)).Elem() -} - -type DvsHostVNicProfile struct { - DvsVNicProfile -} - -func init() { - t["DvsHostVNicProfile"] = reflect.TypeOf((*DvsHostVNicProfile)(nil)).Elem() -} - -type DvsHostWentOutOfSyncEvent struct { - DvsEvent - - HostOutOfSync DvsOutOfSyncHostArgument `xml:"hostOutOfSync"` -} - -func init() { - t["DvsHostWentOutOfSyncEvent"] = reflect.TypeOf((*DvsHostWentOutOfSyncEvent)(nil)).Elem() -} - -type DvsImportEvent struct { - DvsEvent - - ImportType string `xml:"importType"` -} - -func init() { - t["DvsImportEvent"] = reflect.TypeOf((*DvsImportEvent)(nil)).Elem() -} - -type DvsIpNetworkRuleQualifier struct { - DvsNetworkRuleQualifier - - SourceAddress BaseIpAddress `xml:"sourceAddress,omitempty,typeattr"` - DestinationAddress BaseIpAddress `xml:"destinationAddress,omitempty,typeattr"` - Protocol *IntExpression `xml:"protocol,omitempty"` - SourceIpPort BaseDvsIpPort `xml:"sourceIpPort,omitempty,typeattr"` - DestinationIpPort BaseDvsIpPort `xml:"destinationIpPort,omitempty,typeattr"` - TcpFlags *IntExpression `xml:"tcpFlags,omitempty"` -} - -func init() { - t["DvsIpNetworkRuleQualifier"] = reflect.TypeOf((*DvsIpNetworkRuleQualifier)(nil)).Elem() -} - -type DvsIpPort struct { - NegatableExpression -} - -func init() { - t["DvsIpPort"] = reflect.TypeOf((*DvsIpPort)(nil)).Elem() -} - -type DvsIpPortRange struct { - DvsIpPort - - StartPortNumber int32 `xml:"startPortNumber"` - EndPortNumber int32 `xml:"endPortNumber"` -} - -func init() { - t["DvsIpPortRange"] = reflect.TypeOf((*DvsIpPortRange)(nil)).Elem() -} - -type DvsLogNetworkRuleAction struct { - DvsNetworkRuleAction -} - -func init() { - t["DvsLogNetworkRuleAction"] = reflect.TypeOf((*DvsLogNetworkRuleAction)(nil)).Elem() -} - -type DvsMacNetworkRuleQualifier struct { - DvsNetworkRuleQualifier - - SourceAddress BaseMacAddress `xml:"sourceAddress,omitempty,typeattr"` - DestinationAddress BaseMacAddress `xml:"destinationAddress,omitempty,typeattr"` - Protocol *IntExpression `xml:"protocol,omitempty"` - VlanId *IntExpression `xml:"vlanId,omitempty"` -} - -func init() { - t["DvsMacNetworkRuleQualifier"] = reflect.TypeOf((*DvsMacNetworkRuleQualifier)(nil)).Elem() -} - -type DvsMacRewriteNetworkRuleAction struct { - DvsNetworkRuleAction - - RewriteMac string `xml:"rewriteMac"` -} - -func init() { - t["DvsMacRewriteNetworkRuleAction"] = reflect.TypeOf((*DvsMacRewriteNetworkRuleAction)(nil)).Elem() -} - -type DvsMergedEvent struct { - DvsEvent - - SourceDvs DvsEventArgument `xml:"sourceDvs"` - DestinationDvs DvsEventArgument `xml:"destinationDvs"` -} - -func init() { - t["DvsMergedEvent"] = reflect.TypeOf((*DvsMergedEvent)(nil)).Elem() -} - -type DvsNetworkRuleAction struct { - DynamicData -} - -func init() { - t["DvsNetworkRuleAction"] = reflect.TypeOf((*DvsNetworkRuleAction)(nil)).Elem() -} - -type DvsNetworkRuleQualifier struct { - DynamicData - - Key string `xml:"key,omitempty"` -} - -func init() { - t["DvsNetworkRuleQualifier"] = reflect.TypeOf((*DvsNetworkRuleQualifier)(nil)).Elem() -} - -type DvsNotAuthorized struct { - DvsFault - - SessionExtensionKey string `xml:"sessionExtensionKey,omitempty"` - DvsExtensionKey string `xml:"dvsExtensionKey,omitempty"` -} - -func init() { - t["DvsNotAuthorized"] = reflect.TypeOf((*DvsNotAuthorized)(nil)).Elem() -} - -type DvsNotAuthorizedFault DvsNotAuthorized - -func init() { - t["DvsNotAuthorizedFault"] = reflect.TypeOf((*DvsNotAuthorizedFault)(nil)).Elem() -} - -type DvsOperationBulkFault struct { - DvsFault - - HostFault []DvsOperationBulkFaultFaultOnHost `xml:"hostFault"` -} - -func init() { - t["DvsOperationBulkFault"] = reflect.TypeOf((*DvsOperationBulkFault)(nil)).Elem() -} - -type DvsOperationBulkFaultFault DvsOperationBulkFault - -func init() { - t["DvsOperationBulkFaultFault"] = reflect.TypeOf((*DvsOperationBulkFaultFault)(nil)).Elem() -} - -type DvsOperationBulkFaultFaultOnHost struct { - DynamicData - - Host ManagedObjectReference `xml:"host"` - Fault LocalizedMethodFault `xml:"fault"` -} - -func init() { - t["DvsOperationBulkFaultFaultOnHost"] = reflect.TypeOf((*DvsOperationBulkFaultFaultOnHost)(nil)).Elem() -} - -type DvsOutOfSyncHostArgument struct { - DynamicData - - OutOfSyncHost HostEventArgument `xml:"outOfSyncHost"` - ConfigParamters []string `xml:"configParamters"` -} - -func init() { - t["DvsOutOfSyncHostArgument"] = reflect.TypeOf((*DvsOutOfSyncHostArgument)(nil)).Elem() -} - -type DvsPortBlockedEvent struct { - DvsEvent - - PortKey string `xml:"portKey"` - StatusDetail string `xml:"statusDetail,omitempty"` - RuntimeInfo *DVPortStatus `xml:"runtimeInfo,omitempty"` -} - -func init() { - t["DvsPortBlockedEvent"] = reflect.TypeOf((*DvsPortBlockedEvent)(nil)).Elem() -} - -type DvsPortConnectedEvent struct { - DvsEvent - - PortKey string `xml:"portKey"` - Connectee *DistributedVirtualSwitchPortConnectee `xml:"connectee,omitempty"` -} - -func init() { - t["DvsPortConnectedEvent"] = reflect.TypeOf((*DvsPortConnectedEvent)(nil)).Elem() -} - -type DvsPortCreatedEvent struct { - DvsEvent - - PortKey []string `xml:"portKey"` -} - -func init() { - t["DvsPortCreatedEvent"] = reflect.TypeOf((*DvsPortCreatedEvent)(nil)).Elem() -} - -type DvsPortDeletedEvent struct { - DvsEvent - - PortKey []string `xml:"portKey"` -} - -func init() { - t["DvsPortDeletedEvent"] = reflect.TypeOf((*DvsPortDeletedEvent)(nil)).Elem() -} - -type DvsPortDisconnectedEvent struct { - DvsEvent - - PortKey string `xml:"portKey"` - Connectee *DistributedVirtualSwitchPortConnectee `xml:"connectee,omitempty"` -} - -func init() { - t["DvsPortDisconnectedEvent"] = reflect.TypeOf((*DvsPortDisconnectedEvent)(nil)).Elem() -} - -type DvsPortEnteredPassthruEvent struct { - DvsEvent - - PortKey string `xml:"portKey"` - RuntimeInfo *DVPortStatus `xml:"runtimeInfo,omitempty"` -} - -func init() { - t["DvsPortEnteredPassthruEvent"] = reflect.TypeOf((*DvsPortEnteredPassthruEvent)(nil)).Elem() -} - -type DvsPortExitedPassthruEvent struct { - DvsEvent - - PortKey string `xml:"portKey"` - RuntimeInfo *DVPortStatus `xml:"runtimeInfo,omitempty"` -} - -func init() { - t["DvsPortExitedPassthruEvent"] = reflect.TypeOf((*DvsPortExitedPassthruEvent)(nil)).Elem() -} - -type DvsPortJoinPortgroupEvent struct { - DvsEvent - - PortKey string `xml:"portKey"` - PortgroupKey string `xml:"portgroupKey"` - PortgroupName string `xml:"portgroupName"` -} - -func init() { - t["DvsPortJoinPortgroupEvent"] = reflect.TypeOf((*DvsPortJoinPortgroupEvent)(nil)).Elem() -} - -type DvsPortLeavePortgroupEvent struct { - DvsEvent - - PortKey string `xml:"portKey"` - PortgroupKey string `xml:"portgroupKey"` - PortgroupName string `xml:"portgroupName"` -} - -func init() { - t["DvsPortLeavePortgroupEvent"] = reflect.TypeOf((*DvsPortLeavePortgroupEvent)(nil)).Elem() -} - -type DvsPortLinkDownEvent struct { - DvsEvent - - PortKey string `xml:"portKey"` - RuntimeInfo *DVPortStatus `xml:"runtimeInfo,omitempty"` -} - -func init() { - t["DvsPortLinkDownEvent"] = reflect.TypeOf((*DvsPortLinkDownEvent)(nil)).Elem() -} - -type DvsPortLinkUpEvent struct { - DvsEvent - - PortKey string `xml:"portKey"` - RuntimeInfo *DVPortStatus `xml:"runtimeInfo,omitempty"` -} - -func init() { - t["DvsPortLinkUpEvent"] = reflect.TypeOf((*DvsPortLinkUpEvent)(nil)).Elem() -} - -type DvsPortReconfiguredEvent struct { - DvsEvent - - PortKey []string `xml:"portKey"` -} - -func init() { - t["DvsPortReconfiguredEvent"] = reflect.TypeOf((*DvsPortReconfiguredEvent)(nil)).Elem() -} - -type DvsPortRuntimeChangeEvent struct { - DvsEvent - - PortKey string `xml:"portKey"` - RuntimeInfo DVPortStatus `xml:"runtimeInfo"` -} - -func init() { - t["DvsPortRuntimeChangeEvent"] = reflect.TypeOf((*DvsPortRuntimeChangeEvent)(nil)).Elem() -} - -type DvsPortUnblockedEvent struct { - DvsEvent - - PortKey string `xml:"portKey"` - RuntimeInfo *DVPortStatus `xml:"runtimeInfo,omitempty"` -} - -func init() { - t["DvsPortUnblockedEvent"] = reflect.TypeOf((*DvsPortUnblockedEvent)(nil)).Elem() -} - -type DvsPortVendorSpecificStateChangeEvent struct { - DvsEvent - - PortKey string `xml:"portKey"` -} - -func init() { - t["DvsPortVendorSpecificStateChangeEvent"] = reflect.TypeOf((*DvsPortVendorSpecificStateChangeEvent)(nil)).Elem() -} - -type DvsProfile struct { - ApplyProfile - - Key string `xml:"key"` - Name string `xml:"name"` - Uplink []PnicUplinkProfile `xml:"uplink,omitempty"` -} - -func init() { - t["DvsProfile"] = reflect.TypeOf((*DvsProfile)(nil)).Elem() -} - -type DvsPuntNetworkRuleAction struct { - DvsNetworkRuleAction -} - -func init() { - t["DvsPuntNetworkRuleAction"] = reflect.TypeOf((*DvsPuntNetworkRuleAction)(nil)).Elem() -} - -type DvsRateLimitNetworkRuleAction struct { - DvsNetworkRuleAction - - PacketsPerSecond int32 `xml:"packetsPerSecond"` -} - -func init() { - t["DvsRateLimitNetworkRuleAction"] = reflect.TypeOf((*DvsRateLimitNetworkRuleAction)(nil)).Elem() -} - -type DvsReconfigureVmVnicNetworkResourcePoolRequestType struct { - This ManagedObjectReference `xml:"_this"` - ConfigSpec []DvsVmVnicResourcePoolConfigSpec `xml:"configSpec"` -} - -func init() { - t["DvsReconfigureVmVnicNetworkResourcePoolRequestType"] = reflect.TypeOf((*DvsReconfigureVmVnicNetworkResourcePoolRequestType)(nil)).Elem() -} - -type DvsReconfigureVmVnicNetworkResourcePool_Task DvsReconfigureVmVnicNetworkResourcePoolRequestType - -func init() { - t["DvsReconfigureVmVnicNetworkResourcePool_Task"] = reflect.TypeOf((*DvsReconfigureVmVnicNetworkResourcePool_Task)(nil)).Elem() -} - -type DvsReconfigureVmVnicNetworkResourcePool_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type DvsReconfiguredEvent struct { - DvsEvent - - ConfigSpec BaseDVSConfigSpec `xml:"configSpec,typeattr"` -} - -func init() { - t["DvsReconfiguredEvent"] = reflect.TypeOf((*DvsReconfiguredEvent)(nil)).Elem() -} - -type DvsRenamedEvent struct { - DvsEvent - - OldName string `xml:"oldName"` - NewName string `xml:"newName"` -} - -func init() { - t["DvsRenamedEvent"] = reflect.TypeOf((*DvsRenamedEvent)(nil)).Elem() -} - -type DvsResourceRuntimeInfo struct { - DynamicData - - Capacity int32 `xml:"capacity,omitempty"` - Usage int32 `xml:"usage,omitempty"` - Available int32 `xml:"available,omitempty"` - AllocatedResource []DvsVnicAllocatedResource `xml:"allocatedResource,omitempty"` - VmVnicNetworkResourcePoolRuntime []DvsVmVnicNetworkResourcePoolRuntimeInfo `xml:"vmVnicNetworkResourcePoolRuntime,omitempty"` -} - -func init() { - t["DvsResourceRuntimeInfo"] = reflect.TypeOf((*DvsResourceRuntimeInfo)(nil)).Elem() -} - -type DvsRestoreEvent struct { - DvsEvent -} - -func init() { - t["DvsRestoreEvent"] = reflect.TypeOf((*DvsRestoreEvent)(nil)).Elem() -} - -type DvsScopeViolated struct { - DvsFault - - Scope []ManagedObjectReference `xml:"scope"` - Entity ManagedObjectReference `xml:"entity"` -} - -func init() { - t["DvsScopeViolated"] = reflect.TypeOf((*DvsScopeViolated)(nil)).Elem() -} - -type DvsScopeViolatedFault DvsScopeViolated - -func init() { - t["DvsScopeViolatedFault"] = reflect.TypeOf((*DvsScopeViolatedFault)(nil)).Elem() -} - -type DvsServiceConsoleVNicProfile struct { - DvsVNicProfile -} - -func init() { - t["DvsServiceConsoleVNicProfile"] = reflect.TypeOf((*DvsServiceConsoleVNicProfile)(nil)).Elem() -} - -type DvsSingleIpPort struct { - DvsIpPort - - PortNumber int32 `xml:"portNumber"` -} - -func init() { - t["DvsSingleIpPort"] = reflect.TypeOf((*DvsSingleIpPort)(nil)).Elem() -} - -type DvsSystemTrafficNetworkRuleQualifier struct { - DvsNetworkRuleQualifier - - TypeOfSystemTraffic *StringExpression `xml:"typeOfSystemTraffic,omitempty"` -} - -func init() { - t["DvsSystemTrafficNetworkRuleQualifier"] = reflect.TypeOf((*DvsSystemTrafficNetworkRuleQualifier)(nil)).Elem() -} - -type DvsTrafficFilterConfig struct { - DvsFilterConfig - - TrafficRuleset *DvsTrafficRuleset `xml:"trafficRuleset,omitempty"` -} - -func init() { - t["DvsTrafficFilterConfig"] = reflect.TypeOf((*DvsTrafficFilterConfig)(nil)).Elem() -} - -type DvsTrafficFilterConfigSpec struct { - DvsTrafficFilterConfig - - Operation string `xml:"operation"` -} - -func init() { - t["DvsTrafficFilterConfigSpec"] = reflect.TypeOf((*DvsTrafficFilterConfigSpec)(nil)).Elem() -} - -type DvsTrafficRule struct { - DynamicData - - Key string `xml:"key,omitempty"` - Description string `xml:"description,omitempty"` - Sequence int32 `xml:"sequence,omitempty"` - Qualifier []BaseDvsNetworkRuleQualifier `xml:"qualifier,omitempty,typeattr"` - Action BaseDvsNetworkRuleAction `xml:"action,omitempty,typeattr"` - Direction string `xml:"direction,omitempty"` -} - -func init() { - t["DvsTrafficRule"] = reflect.TypeOf((*DvsTrafficRule)(nil)).Elem() -} - -type DvsTrafficRuleset struct { - DynamicData - - Key string `xml:"key,omitempty"` - Enabled *bool `xml:"enabled"` - Precedence int32 `xml:"precedence,omitempty"` - Rules []DvsTrafficRule `xml:"rules,omitempty"` -} - -func init() { - t["DvsTrafficRuleset"] = reflect.TypeOf((*DvsTrafficRuleset)(nil)).Elem() -} - -type DvsUpdateTagNetworkRuleAction struct { - DvsNetworkRuleAction - - QosTag int32 `xml:"qosTag,omitempty"` - DscpTag int32 `xml:"dscpTag,omitempty"` -} - -func init() { - t["DvsUpdateTagNetworkRuleAction"] = reflect.TypeOf((*DvsUpdateTagNetworkRuleAction)(nil)).Elem() -} - -type DvsUpgradeAvailableEvent struct { - DvsEvent - - ProductInfo DistributedVirtualSwitchProductSpec `xml:"productInfo"` -} - -func init() { - t["DvsUpgradeAvailableEvent"] = reflect.TypeOf((*DvsUpgradeAvailableEvent)(nil)).Elem() -} - -type DvsUpgradeInProgressEvent struct { - DvsEvent - - ProductInfo DistributedVirtualSwitchProductSpec `xml:"productInfo"` -} - -func init() { - t["DvsUpgradeInProgressEvent"] = reflect.TypeOf((*DvsUpgradeInProgressEvent)(nil)).Elem() -} - -type DvsUpgradeRejectedEvent struct { - DvsEvent - - ProductInfo DistributedVirtualSwitchProductSpec `xml:"productInfo"` -} - -func init() { - t["DvsUpgradeRejectedEvent"] = reflect.TypeOf((*DvsUpgradeRejectedEvent)(nil)).Elem() -} - -type DvsUpgradedEvent struct { - DvsEvent - - ProductInfo DistributedVirtualSwitchProductSpec `xml:"productInfo"` -} - -func init() { - t["DvsUpgradedEvent"] = reflect.TypeOf((*DvsUpgradedEvent)(nil)).Elem() -} - -type DvsVNicProfile struct { - ApplyProfile - - Key string `xml:"key"` - IpConfig IpAddressProfile `xml:"ipConfig"` -} - -func init() { - t["DvsVNicProfile"] = reflect.TypeOf((*DvsVNicProfile)(nil)).Elem() -} - -type DvsVmVnicNetworkResourcePoolRuntimeInfo struct { - DynamicData - - Key string `xml:"key"` - Name string `xml:"name,omitempty"` - Capacity int32 `xml:"capacity,omitempty"` - Usage int32 `xml:"usage,omitempty"` - Available int32 `xml:"available,omitempty"` - Status string `xml:"status"` - AllocatedResource []DvsVnicAllocatedResource `xml:"allocatedResource,omitempty"` -} - -func init() { - t["DvsVmVnicNetworkResourcePoolRuntimeInfo"] = reflect.TypeOf((*DvsVmVnicNetworkResourcePoolRuntimeInfo)(nil)).Elem() -} - -type DvsVmVnicResourceAllocation struct { - DynamicData - - ReservationQuota int64 `xml:"reservationQuota,omitempty"` -} - -func init() { - t["DvsVmVnicResourceAllocation"] = reflect.TypeOf((*DvsVmVnicResourceAllocation)(nil)).Elem() -} - -type DvsVmVnicResourcePoolConfigSpec struct { - DynamicData - - Operation string `xml:"operation"` - Key string `xml:"key,omitempty"` - ConfigVersion string `xml:"configVersion,omitempty"` - AllocationInfo *DvsVmVnicResourceAllocation `xml:"allocationInfo,omitempty"` - Name string `xml:"name,omitempty"` - Description string `xml:"description,omitempty"` -} - -func init() { - t["DvsVmVnicResourcePoolConfigSpec"] = reflect.TypeOf((*DvsVmVnicResourcePoolConfigSpec)(nil)).Elem() -} - -type DvsVnicAllocatedResource struct { - DynamicData - - Vm ManagedObjectReference `xml:"vm"` - VnicKey string `xml:"vnicKey"` - Reservation int64 `xml:"reservation,omitempty"` -} - -func init() { - t["DvsVnicAllocatedResource"] = reflect.TypeOf((*DvsVnicAllocatedResource)(nil)).Elem() -} - -type DynamicArray struct { - Val []AnyType `xml:"val,typeattr"` -} - -func init() { - t["DynamicArray"] = reflect.TypeOf((*DynamicArray)(nil)).Elem() -} - -type DynamicData struct { -} - -func init() { - t["DynamicData"] = reflect.TypeOf((*DynamicData)(nil)).Elem() -} - -type DynamicProperty struct { - Name string `xml:"name"` - Val AnyType `xml:"val,typeattr"` -} - -func init() { - t["DynamicProperty"] = reflect.TypeOf((*DynamicProperty)(nil)).Elem() -} - -type EVCAdmissionFailed struct { - NotSupportedHostInCluster - - Faults []LocalizedMethodFault `xml:"faults,omitempty"` -} - -func init() { - t["EVCAdmissionFailed"] = reflect.TypeOf((*EVCAdmissionFailed)(nil)).Elem() -} - -type EVCAdmissionFailedCPUFeaturesForMode struct { - EVCAdmissionFailed - - CurrentEVCModeKey string `xml:"currentEVCModeKey"` -} - -func init() { - t["EVCAdmissionFailedCPUFeaturesForMode"] = reflect.TypeOf((*EVCAdmissionFailedCPUFeaturesForMode)(nil)).Elem() -} - -type EVCAdmissionFailedCPUFeaturesForModeFault EVCAdmissionFailedCPUFeaturesForMode - -func init() { - t["EVCAdmissionFailedCPUFeaturesForModeFault"] = reflect.TypeOf((*EVCAdmissionFailedCPUFeaturesForModeFault)(nil)).Elem() -} - -type EVCAdmissionFailedCPUModel struct { - EVCAdmissionFailed -} - -func init() { - t["EVCAdmissionFailedCPUModel"] = reflect.TypeOf((*EVCAdmissionFailedCPUModel)(nil)).Elem() -} - -type EVCAdmissionFailedCPUModelFault EVCAdmissionFailedCPUModel - -func init() { - t["EVCAdmissionFailedCPUModelFault"] = reflect.TypeOf((*EVCAdmissionFailedCPUModelFault)(nil)).Elem() -} - -type EVCAdmissionFailedCPUModelForMode struct { - EVCAdmissionFailed - - CurrentEVCModeKey string `xml:"currentEVCModeKey"` -} - -func init() { - t["EVCAdmissionFailedCPUModelForMode"] = reflect.TypeOf((*EVCAdmissionFailedCPUModelForMode)(nil)).Elem() -} - -type EVCAdmissionFailedCPUModelForModeFault EVCAdmissionFailedCPUModelForMode - -func init() { - t["EVCAdmissionFailedCPUModelForModeFault"] = reflect.TypeOf((*EVCAdmissionFailedCPUModelForModeFault)(nil)).Elem() -} - -type EVCAdmissionFailedCPUVendor struct { - EVCAdmissionFailed - - ClusterCPUVendor string `xml:"clusterCPUVendor"` - HostCPUVendor string `xml:"hostCPUVendor"` -} - -func init() { - t["EVCAdmissionFailedCPUVendor"] = reflect.TypeOf((*EVCAdmissionFailedCPUVendor)(nil)).Elem() -} - -type EVCAdmissionFailedCPUVendorFault EVCAdmissionFailedCPUVendor - -func init() { - t["EVCAdmissionFailedCPUVendorFault"] = reflect.TypeOf((*EVCAdmissionFailedCPUVendorFault)(nil)).Elem() -} - -type EVCAdmissionFailedCPUVendorUnknown struct { - EVCAdmissionFailed -} - -func init() { - t["EVCAdmissionFailedCPUVendorUnknown"] = reflect.TypeOf((*EVCAdmissionFailedCPUVendorUnknown)(nil)).Elem() -} - -type EVCAdmissionFailedCPUVendorUnknownFault EVCAdmissionFailedCPUVendorUnknown - -func init() { - t["EVCAdmissionFailedCPUVendorUnknownFault"] = reflect.TypeOf((*EVCAdmissionFailedCPUVendorUnknownFault)(nil)).Elem() -} - -type EVCAdmissionFailedFault BaseEVCAdmissionFailed - -func init() { - t["EVCAdmissionFailedFault"] = reflect.TypeOf((*EVCAdmissionFailedFault)(nil)).Elem() -} - -type EVCAdmissionFailedHostDisconnected struct { - EVCAdmissionFailed -} - -func init() { - t["EVCAdmissionFailedHostDisconnected"] = reflect.TypeOf((*EVCAdmissionFailedHostDisconnected)(nil)).Elem() -} - -type EVCAdmissionFailedHostDisconnectedFault EVCAdmissionFailedHostDisconnected - -func init() { - t["EVCAdmissionFailedHostDisconnectedFault"] = reflect.TypeOf((*EVCAdmissionFailedHostDisconnectedFault)(nil)).Elem() -} - -type EVCAdmissionFailedHostSoftware struct { - EVCAdmissionFailed -} - -func init() { - t["EVCAdmissionFailedHostSoftware"] = reflect.TypeOf((*EVCAdmissionFailedHostSoftware)(nil)).Elem() -} - -type EVCAdmissionFailedHostSoftwareFault EVCAdmissionFailedHostSoftware - -func init() { - t["EVCAdmissionFailedHostSoftwareFault"] = reflect.TypeOf((*EVCAdmissionFailedHostSoftwareFault)(nil)).Elem() -} - -type EVCAdmissionFailedHostSoftwareForMode struct { - EVCAdmissionFailed -} - -func init() { - t["EVCAdmissionFailedHostSoftwareForMode"] = reflect.TypeOf((*EVCAdmissionFailedHostSoftwareForMode)(nil)).Elem() -} - -type EVCAdmissionFailedHostSoftwareForModeFault EVCAdmissionFailedHostSoftwareForMode - -func init() { - t["EVCAdmissionFailedHostSoftwareForModeFault"] = reflect.TypeOf((*EVCAdmissionFailedHostSoftwareForModeFault)(nil)).Elem() -} - -type EVCAdmissionFailedVmActive struct { - EVCAdmissionFailed -} - -func init() { - t["EVCAdmissionFailedVmActive"] = reflect.TypeOf((*EVCAdmissionFailedVmActive)(nil)).Elem() -} - -type EVCAdmissionFailedVmActiveFault EVCAdmissionFailedVmActive - -func init() { - t["EVCAdmissionFailedVmActiveFault"] = reflect.TypeOf((*EVCAdmissionFailedVmActiveFault)(nil)).Elem() -} - -type EVCConfigFault struct { - VimFault - - Faults []LocalizedMethodFault `xml:"faults,omitempty"` -} - -func init() { - t["EVCConfigFault"] = reflect.TypeOf((*EVCConfigFault)(nil)).Elem() -} - -type EVCConfigFaultFault BaseEVCConfigFault - -func init() { - t["EVCConfigFaultFault"] = reflect.TypeOf((*EVCConfigFaultFault)(nil)).Elem() -} - -type EVCMode struct { - ElementDescription - - GuaranteedCPUFeatures []HostCpuIdInfo `xml:"guaranteedCPUFeatures,omitempty"` - FeatureCapability []HostFeatureCapability `xml:"featureCapability,omitempty"` - FeatureMask []HostFeatureMask `xml:"featureMask,omitempty"` - FeatureRequirement []VirtualMachineFeatureRequirement `xml:"featureRequirement,omitempty"` - Vendor string `xml:"vendor"` - Track []string `xml:"track,omitempty"` - VendorTier int32 `xml:"vendorTier"` -} - -func init() { - t["EVCMode"] = reflect.TypeOf((*EVCMode)(nil)).Elem() -} - -type EVCModeIllegalByVendor struct { - EVCConfigFault - - ClusterCPUVendor string `xml:"clusterCPUVendor"` - ModeCPUVendor string `xml:"modeCPUVendor"` -} - -func init() { - t["EVCModeIllegalByVendor"] = reflect.TypeOf((*EVCModeIllegalByVendor)(nil)).Elem() -} - -type EVCModeIllegalByVendorFault EVCModeIllegalByVendor - -func init() { - t["EVCModeIllegalByVendorFault"] = reflect.TypeOf((*EVCModeIllegalByVendorFault)(nil)).Elem() -} - -type EVCModeUnsupportedByHosts struct { - EVCConfigFault - - EvcMode string `xml:"evcMode,omitempty"` - Host []ManagedObjectReference `xml:"host,omitempty"` - HostName []string `xml:"hostName,omitempty"` -} - -func init() { - t["EVCModeUnsupportedByHosts"] = reflect.TypeOf((*EVCModeUnsupportedByHosts)(nil)).Elem() -} - -type EVCModeUnsupportedByHostsFault EVCModeUnsupportedByHosts - -func init() { - t["EVCModeUnsupportedByHostsFault"] = reflect.TypeOf((*EVCModeUnsupportedByHostsFault)(nil)).Elem() -} - -type EVCUnsupportedByHostHardware struct { - EVCConfigFault - - Host []ManagedObjectReference `xml:"host"` - HostName []string `xml:"hostName"` -} - -func init() { - t["EVCUnsupportedByHostHardware"] = reflect.TypeOf((*EVCUnsupportedByHostHardware)(nil)).Elem() -} - -type EVCUnsupportedByHostHardwareFault EVCUnsupportedByHostHardware - -func init() { - t["EVCUnsupportedByHostHardwareFault"] = reflect.TypeOf((*EVCUnsupportedByHostHardwareFault)(nil)).Elem() -} - -type EVCUnsupportedByHostSoftware struct { - EVCConfigFault - - Host []ManagedObjectReference `xml:"host"` - HostName []string `xml:"hostName"` -} - -func init() { - t["EVCUnsupportedByHostSoftware"] = reflect.TypeOf((*EVCUnsupportedByHostSoftware)(nil)).Elem() -} - -type EVCUnsupportedByHostSoftwareFault EVCUnsupportedByHostSoftware - -func init() { - t["EVCUnsupportedByHostSoftwareFault"] = reflect.TypeOf((*EVCUnsupportedByHostSoftwareFault)(nil)).Elem() -} - -type EagerZeroVirtualDiskRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` - Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` -} - -func init() { - t["EagerZeroVirtualDiskRequestType"] = reflect.TypeOf((*EagerZeroVirtualDiskRequestType)(nil)).Elem() -} - -type EagerZeroVirtualDisk_Task EagerZeroVirtualDiskRequestType - -func init() { - t["EagerZeroVirtualDisk_Task"] = reflect.TypeOf((*EagerZeroVirtualDisk_Task)(nil)).Elem() -} - -type EagerZeroVirtualDisk_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type EightHostLimitViolated struct { - VmConfigFault -} - -func init() { - t["EightHostLimitViolated"] = reflect.TypeOf((*EightHostLimitViolated)(nil)).Elem() -} - -type EightHostLimitViolatedFault EightHostLimitViolated - -func init() { - t["EightHostLimitViolatedFault"] = reflect.TypeOf((*EightHostLimitViolatedFault)(nil)).Elem() -} - -type ElementDescription struct { - Description - - Key string `xml:"key"` -} - -func init() { - t["ElementDescription"] = reflect.TypeOf((*ElementDescription)(nil)).Elem() -} - -type EnableAlarmActions EnableAlarmActionsRequestType - -func init() { - t["EnableAlarmActions"] = reflect.TypeOf((*EnableAlarmActions)(nil)).Elem() -} - -type EnableAlarmActionsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Entity ManagedObjectReference `xml:"entity"` - Enabled bool `xml:"enabled"` -} - -func init() { - t["EnableAlarmActionsRequestType"] = reflect.TypeOf((*EnableAlarmActionsRequestType)(nil)).Elem() -} - -type EnableAlarmActionsResponse struct { -} - -type EnableFeature EnableFeatureRequestType - -func init() { - t["EnableFeature"] = reflect.TypeOf((*EnableFeature)(nil)).Elem() -} - -type EnableFeatureRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host *ManagedObjectReference `xml:"host,omitempty"` - FeatureKey string `xml:"featureKey"` -} - -func init() { - t["EnableFeatureRequestType"] = reflect.TypeOf((*EnableFeatureRequestType)(nil)).Elem() -} - -type EnableFeatureResponse struct { - Returnval bool `xml:"returnval"` -} - -type EnableHyperThreading EnableHyperThreadingRequestType - -func init() { - t["EnableHyperThreading"] = reflect.TypeOf((*EnableHyperThreading)(nil)).Elem() -} - -type EnableHyperThreadingRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["EnableHyperThreadingRequestType"] = reflect.TypeOf((*EnableHyperThreadingRequestType)(nil)).Elem() -} - -type EnableHyperThreadingResponse struct { -} - -type EnableMultipathPath EnableMultipathPathRequestType - -func init() { - t["EnableMultipathPath"] = reflect.TypeOf((*EnableMultipathPath)(nil)).Elem() -} - -type EnableMultipathPathRequestType struct { - This ManagedObjectReference `xml:"_this"` - PathName string `xml:"pathName"` -} - -func init() { - t["EnableMultipathPathRequestType"] = reflect.TypeOf((*EnableMultipathPathRequestType)(nil)).Elem() -} - -type EnableMultipathPathResponse struct { -} - -type EnableNetworkResourceManagement EnableNetworkResourceManagementRequestType - -func init() { - t["EnableNetworkResourceManagement"] = reflect.TypeOf((*EnableNetworkResourceManagement)(nil)).Elem() -} - -type EnableNetworkResourceManagementRequestType struct { - This ManagedObjectReference `xml:"_this"` - Enable bool `xml:"enable"` -} - -func init() { - t["EnableNetworkResourceManagementRequestType"] = reflect.TypeOf((*EnableNetworkResourceManagementRequestType)(nil)).Elem() -} - -type EnableNetworkResourceManagementResponse struct { -} - -type EnableRuleset EnableRulesetRequestType - -func init() { - t["EnableRuleset"] = reflect.TypeOf((*EnableRuleset)(nil)).Elem() -} - -type EnableRulesetRequestType struct { - This ManagedObjectReference `xml:"_this"` - Id string `xml:"id"` -} - -func init() { - t["EnableRulesetRequestType"] = reflect.TypeOf((*EnableRulesetRequestType)(nil)).Elem() -} - -type EnableRulesetResponse struct { -} - -type EnableSecondaryVMRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Host *ManagedObjectReference `xml:"host,omitempty"` -} - -func init() { - t["EnableSecondaryVMRequestType"] = reflect.TypeOf((*EnableSecondaryVMRequestType)(nil)).Elem() -} - -type EnableSecondaryVM_Task EnableSecondaryVMRequestType - -func init() { - t["EnableSecondaryVM_Task"] = reflect.TypeOf((*EnableSecondaryVM_Task)(nil)).Elem() -} - -type EnableSecondaryVM_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type EnableSmartCardAuthentication EnableSmartCardAuthenticationRequestType - -func init() { - t["EnableSmartCardAuthentication"] = reflect.TypeOf((*EnableSmartCardAuthentication)(nil)).Elem() -} - -type EnableSmartCardAuthenticationRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["EnableSmartCardAuthenticationRequestType"] = reflect.TypeOf((*EnableSmartCardAuthenticationRequestType)(nil)).Elem() -} - -type EnableSmartCardAuthenticationResponse struct { -} - -type EnterLockdownMode EnterLockdownModeRequestType - -func init() { - t["EnterLockdownMode"] = reflect.TypeOf((*EnterLockdownMode)(nil)).Elem() -} - -type EnterLockdownModeRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["EnterLockdownModeRequestType"] = reflect.TypeOf((*EnterLockdownModeRequestType)(nil)).Elem() -} - -type EnterLockdownModeResponse struct { -} - -type EnterMaintenanceModeRequestType struct { - This ManagedObjectReference `xml:"_this"` - Timeout int32 `xml:"timeout"` - EvacuatePoweredOffVms *bool `xml:"evacuatePoweredOffVms"` - MaintenanceSpec *HostMaintenanceSpec `xml:"maintenanceSpec,omitempty"` -} - -func init() { - t["EnterMaintenanceModeRequestType"] = reflect.TypeOf((*EnterMaintenanceModeRequestType)(nil)).Elem() -} - -type EnterMaintenanceMode_Task EnterMaintenanceModeRequestType - -func init() { - t["EnterMaintenanceMode_Task"] = reflect.TypeOf((*EnterMaintenanceMode_Task)(nil)).Elem() -} - -type EnterMaintenanceMode_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type EnteredMaintenanceModeEvent struct { - HostEvent -} - -func init() { - t["EnteredMaintenanceModeEvent"] = reflect.TypeOf((*EnteredMaintenanceModeEvent)(nil)).Elem() -} - -type EnteredStandbyModeEvent struct { - HostEvent -} - -func init() { - t["EnteredStandbyModeEvent"] = reflect.TypeOf((*EnteredStandbyModeEvent)(nil)).Elem() -} - -type EnteringMaintenanceModeEvent struct { - HostEvent -} - -func init() { - t["EnteringMaintenanceModeEvent"] = reflect.TypeOf((*EnteringMaintenanceModeEvent)(nil)).Elem() -} - -type EnteringStandbyModeEvent struct { - HostEvent -} - -func init() { - t["EnteringStandbyModeEvent"] = reflect.TypeOf((*EnteringStandbyModeEvent)(nil)).Elem() -} - -type EntityBackup struct { - DynamicData -} - -func init() { - t["EntityBackup"] = reflect.TypeOf((*EntityBackup)(nil)).Elem() -} - -type EntityBackupConfig struct { - DynamicData - - EntityType string `xml:"entityType"` - ConfigBlob []byte `xml:"configBlob"` - Key string `xml:"key,omitempty"` - Name string `xml:"name,omitempty"` - Container *ManagedObjectReference `xml:"container,omitempty"` - ConfigVersion string `xml:"configVersion,omitempty"` -} - -func init() { - t["EntityBackupConfig"] = reflect.TypeOf((*EntityBackupConfig)(nil)).Elem() -} - -type EntityEventArgument struct { - EventArgument - - Name string `xml:"name"` -} - -func init() { - t["EntityEventArgument"] = reflect.TypeOf((*EntityEventArgument)(nil)).Elem() -} - -type EntityPrivilege struct { - DynamicData - - Entity ManagedObjectReference `xml:"entity"` - PrivAvailability []PrivilegeAvailability `xml:"privAvailability"` -} - -func init() { - t["EntityPrivilege"] = reflect.TypeOf((*EntityPrivilege)(nil)).Elem() -} - -type EnumDescription struct { - DynamicData - - Key string `xml:"key"` - Tags []BaseElementDescription `xml:"tags,typeattr"` -} - -func init() { - t["EnumDescription"] = reflect.TypeOf((*EnumDescription)(nil)).Elem() -} - -type EnvironmentBrowserConfigOptionQuerySpec struct { - DynamicData - - Key string `xml:"key,omitempty"` - Host *ManagedObjectReference `xml:"host,omitempty"` - GuestId []string `xml:"guestId,omitempty"` -} - -func init() { - t["EnvironmentBrowserConfigOptionQuerySpec"] = reflect.TypeOf((*EnvironmentBrowserConfigOptionQuerySpec)(nil)).Elem() -} - -type ErrorUpgradeEvent struct { - UpgradeEvent -} - -func init() { - t["ErrorUpgradeEvent"] = reflect.TypeOf((*ErrorUpgradeEvent)(nil)).Elem() -} - -type EstimateDatabaseSize EstimateDatabaseSizeRequestType - -func init() { - t["EstimateDatabaseSize"] = reflect.TypeOf((*EstimateDatabaseSize)(nil)).Elem() -} - -type EstimateDatabaseSizeRequestType struct { - This ManagedObjectReference `xml:"_this"` - DbSizeParam DatabaseSizeParam `xml:"dbSizeParam"` -} - -func init() { - t["EstimateDatabaseSizeRequestType"] = reflect.TypeOf((*EstimateDatabaseSizeRequestType)(nil)).Elem() -} - -type EstimateDatabaseSizeResponse struct { - Returnval DatabaseSizeEstimate `xml:"returnval"` -} - -type EstimateStorageForConsolidateSnapshotsRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["EstimateStorageForConsolidateSnapshotsRequestType"] = reflect.TypeOf((*EstimateStorageForConsolidateSnapshotsRequestType)(nil)).Elem() -} - -type EstimateStorageForConsolidateSnapshots_Task EstimateStorageForConsolidateSnapshotsRequestType - -func init() { - t["EstimateStorageForConsolidateSnapshots_Task"] = reflect.TypeOf((*EstimateStorageForConsolidateSnapshots_Task)(nil)).Elem() -} - -type EstimateStorageForConsolidateSnapshots_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type EsxAgentHostManagerUpdateConfig EsxAgentHostManagerUpdateConfigRequestType - -func init() { - t["EsxAgentHostManagerUpdateConfig"] = reflect.TypeOf((*EsxAgentHostManagerUpdateConfig)(nil)).Elem() -} - -type EsxAgentHostManagerUpdateConfigRequestType struct { - This ManagedObjectReference `xml:"_this"` - ConfigInfo HostEsxAgentHostManagerConfigInfo `xml:"configInfo"` -} - -func init() { - t["EsxAgentHostManagerUpdateConfigRequestType"] = reflect.TypeOf((*EsxAgentHostManagerUpdateConfigRequestType)(nil)).Elem() -} - -type EsxAgentHostManagerUpdateConfigResponse struct { -} - -type EvacuateVsanNodeRequestType struct { - This ManagedObjectReference `xml:"_this"` - MaintenanceSpec HostMaintenanceSpec `xml:"maintenanceSpec"` - Timeout int32 `xml:"timeout"` -} - -func init() { - t["EvacuateVsanNodeRequestType"] = reflect.TypeOf((*EvacuateVsanNodeRequestType)(nil)).Elem() -} - -type EvacuateVsanNode_Task EvacuateVsanNodeRequestType - -func init() { - t["EvacuateVsanNode_Task"] = reflect.TypeOf((*EvacuateVsanNode_Task)(nil)).Elem() -} - -type EvacuateVsanNode_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type EvaluationLicenseSource struct { - LicenseSource - - RemainingHours int64 `xml:"remainingHours,omitempty"` -} - -func init() { - t["EvaluationLicenseSource"] = reflect.TypeOf((*EvaluationLicenseSource)(nil)).Elem() -} - -type EvcManager EvcManagerRequestType - -func init() { - t["EvcManager"] = reflect.TypeOf((*EvcManager)(nil)).Elem() -} - -type EvcManagerRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["EvcManagerRequestType"] = reflect.TypeOf((*EvcManagerRequestType)(nil)).Elem() -} - -type EvcManagerResponse struct { - Returnval *ManagedObjectReference `xml:"returnval,omitempty"` -} - -type Event struct { - DynamicData - - Key int32 `xml:"key"` - ChainId int32 `xml:"chainId"` - CreatedTime time.Time `xml:"createdTime"` - UserName string `xml:"userName"` - Datacenter *DatacenterEventArgument `xml:"datacenter,omitempty"` - ComputeResource *ComputeResourceEventArgument `xml:"computeResource,omitempty"` - Host *HostEventArgument `xml:"host,omitempty"` - Vm *VmEventArgument `xml:"vm,omitempty"` - Ds *DatastoreEventArgument `xml:"ds,omitempty"` - Net *NetworkEventArgument `xml:"net,omitempty"` - Dvs *DvsEventArgument `xml:"dvs,omitempty"` - FullFormattedMessage string `xml:"fullFormattedMessage,omitempty"` - ChangeTag string `xml:"changeTag,omitempty"` -} - -func init() { - t["Event"] = reflect.TypeOf((*Event)(nil)).Elem() -} - -type EventAlarmExpression struct { - AlarmExpression - - Comparisons []EventAlarmExpressionComparison `xml:"comparisons,omitempty"` - EventType string `xml:"eventType"` - EventTypeId string `xml:"eventTypeId,omitempty"` - ObjectType string `xml:"objectType,omitempty"` - Status ManagedEntityStatus `xml:"status,omitempty"` -} - -func init() { - t["EventAlarmExpression"] = reflect.TypeOf((*EventAlarmExpression)(nil)).Elem() -} - -type EventAlarmExpressionComparison struct { - DynamicData - - AttributeName string `xml:"attributeName"` - Operator string `xml:"operator"` - Value string `xml:"value"` -} - -func init() { - t["EventAlarmExpressionComparison"] = reflect.TypeOf((*EventAlarmExpressionComparison)(nil)).Elem() -} - -type EventArgDesc struct { - DynamicData - - Name string `xml:"name"` - Type string `xml:"type"` - Description BaseElementDescription `xml:"description,omitempty,typeattr"` -} - -func init() { - t["EventArgDesc"] = reflect.TypeOf((*EventArgDesc)(nil)).Elem() -} - -type EventArgument struct { - DynamicData -} - -func init() { - t["EventArgument"] = reflect.TypeOf((*EventArgument)(nil)).Elem() -} - -type EventDescription struct { - DynamicData - - Category []BaseElementDescription `xml:"category,typeattr"` - EventInfo []EventDescriptionEventDetail `xml:"eventInfo"` - EnumeratedTypes []EnumDescription `xml:"enumeratedTypes,omitempty"` -} - -func init() { - t["EventDescription"] = reflect.TypeOf((*EventDescription)(nil)).Elem() -} - -type EventDescriptionEventDetail struct { - DynamicData - - Key string `xml:"key"` - Description string `xml:"description,omitempty"` - Category string `xml:"category"` - FormatOnDatacenter string `xml:"formatOnDatacenter"` - FormatOnComputeResource string `xml:"formatOnComputeResource"` - FormatOnHost string `xml:"formatOnHost"` - FormatOnVm string `xml:"formatOnVm"` - FullFormat string `xml:"fullFormat"` - LongDescription string `xml:"longDescription,omitempty"` -} - -func init() { - t["EventDescriptionEventDetail"] = reflect.TypeOf((*EventDescriptionEventDetail)(nil)).Elem() -} - -type EventEx struct { - Event - - EventTypeId string `xml:"eventTypeId"` - Severity string `xml:"severity,omitempty"` - Message string `xml:"message,omitempty"` - Arguments []KeyAnyValue `xml:"arguments,omitempty"` - ObjectId string `xml:"objectId,omitempty"` - ObjectType string `xml:"objectType,omitempty"` - ObjectName string `xml:"objectName,omitempty"` - Fault *LocalizedMethodFault `xml:"fault,omitempty"` -} - -func init() { - t["EventEx"] = reflect.TypeOf((*EventEx)(nil)).Elem() -} - -type EventFilterSpec struct { - DynamicData - - Entity *EventFilterSpecByEntity `xml:"entity,omitempty"` - Time *EventFilterSpecByTime `xml:"time,omitempty"` - UserName *EventFilterSpecByUsername `xml:"userName,omitempty"` - EventChainId int32 `xml:"eventChainId,omitempty"` - Alarm *ManagedObjectReference `xml:"alarm,omitempty"` - ScheduledTask *ManagedObjectReference `xml:"scheduledTask,omitempty"` - DisableFullMessage *bool `xml:"disableFullMessage"` - Category []string `xml:"category,omitempty"` - Type []string `xml:"type,omitempty"` - Tag []string `xml:"tag,omitempty"` - EventTypeId []string `xml:"eventTypeId,omitempty"` -} - -func init() { - t["EventFilterSpec"] = reflect.TypeOf((*EventFilterSpec)(nil)).Elem() -} - -type EventFilterSpecByEntity struct { - DynamicData - - Entity ManagedObjectReference `xml:"entity"` - Recursion EventFilterSpecRecursionOption `xml:"recursion"` -} - -func init() { - t["EventFilterSpecByEntity"] = reflect.TypeOf((*EventFilterSpecByEntity)(nil)).Elem() -} - -type EventFilterSpecByTime struct { - DynamicData - - BeginTime *time.Time `xml:"beginTime"` - EndTime *time.Time `xml:"endTime"` -} - -func init() { - t["EventFilterSpecByTime"] = reflect.TypeOf((*EventFilterSpecByTime)(nil)).Elem() -} - -type EventFilterSpecByUsername struct { - DynamicData - - SystemUser bool `xml:"systemUser"` - UserList []string `xml:"userList,omitempty"` -} - -func init() { - t["EventFilterSpecByUsername"] = reflect.TypeOf((*EventFilterSpecByUsername)(nil)).Elem() -} - -type ExecuteHostProfile ExecuteHostProfileRequestType - -func init() { - t["ExecuteHostProfile"] = reflect.TypeOf((*ExecuteHostProfile)(nil)).Elem() -} - -type ExecuteHostProfileRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host ManagedObjectReference `xml:"host"` - DeferredParam []ProfileDeferredPolicyOptionParameter `xml:"deferredParam,omitempty"` -} - -func init() { - t["ExecuteHostProfileRequestType"] = reflect.TypeOf((*ExecuteHostProfileRequestType)(nil)).Elem() -} - -type ExecuteHostProfileResponse struct { - Returnval ProfileExecuteResult `xml:"returnval"` -} - -type ExecuteSimpleCommand ExecuteSimpleCommandRequestType - -func init() { - t["ExecuteSimpleCommand"] = reflect.TypeOf((*ExecuteSimpleCommand)(nil)).Elem() -} - -type ExecuteSimpleCommandRequestType struct { - This ManagedObjectReference `xml:"_this"` - Arguments []string `xml:"arguments,omitempty"` -} - -func init() { - t["ExecuteSimpleCommandRequestType"] = reflect.TypeOf((*ExecuteSimpleCommandRequestType)(nil)).Elem() -} - -type ExecuteSimpleCommandResponse struct { - Returnval string `xml:"returnval"` -} - -type ExitLockdownMode ExitLockdownModeRequestType - -func init() { - t["ExitLockdownMode"] = reflect.TypeOf((*ExitLockdownMode)(nil)).Elem() -} - -type ExitLockdownModeRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["ExitLockdownModeRequestType"] = reflect.TypeOf((*ExitLockdownModeRequestType)(nil)).Elem() -} - -type ExitLockdownModeResponse struct { -} - -type ExitMaintenanceModeEvent struct { - HostEvent -} - -func init() { - t["ExitMaintenanceModeEvent"] = reflect.TypeOf((*ExitMaintenanceModeEvent)(nil)).Elem() -} - -type ExitMaintenanceModeRequestType struct { - This ManagedObjectReference `xml:"_this"` - Timeout int32 `xml:"timeout"` -} - -func init() { - t["ExitMaintenanceModeRequestType"] = reflect.TypeOf((*ExitMaintenanceModeRequestType)(nil)).Elem() -} - -type ExitMaintenanceMode_Task ExitMaintenanceModeRequestType - -func init() { - t["ExitMaintenanceMode_Task"] = reflect.TypeOf((*ExitMaintenanceMode_Task)(nil)).Elem() -} - -type ExitMaintenanceMode_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ExitStandbyModeFailedEvent struct { - HostEvent -} - -func init() { - t["ExitStandbyModeFailedEvent"] = reflect.TypeOf((*ExitStandbyModeFailedEvent)(nil)).Elem() -} - -type ExitedStandbyModeEvent struct { - HostEvent -} - -func init() { - t["ExitedStandbyModeEvent"] = reflect.TypeOf((*ExitedStandbyModeEvent)(nil)).Elem() -} - -type ExitingStandbyModeEvent struct { - HostEvent -} - -func init() { - t["ExitingStandbyModeEvent"] = reflect.TypeOf((*ExitingStandbyModeEvent)(nil)).Elem() -} - -type ExpandVmfsDatastore ExpandVmfsDatastoreRequestType - -func init() { - t["ExpandVmfsDatastore"] = reflect.TypeOf((*ExpandVmfsDatastore)(nil)).Elem() -} - -type ExpandVmfsDatastoreRequestType struct { - This ManagedObjectReference `xml:"_this"` - Datastore ManagedObjectReference `xml:"datastore"` - Spec VmfsDatastoreExpandSpec `xml:"spec"` -} - -func init() { - t["ExpandVmfsDatastoreRequestType"] = reflect.TypeOf((*ExpandVmfsDatastoreRequestType)(nil)).Elem() -} - -type ExpandVmfsDatastoreResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ExpandVmfsExtent ExpandVmfsExtentRequestType - -func init() { - t["ExpandVmfsExtent"] = reflect.TypeOf((*ExpandVmfsExtent)(nil)).Elem() -} - -type ExpandVmfsExtentRequestType struct { - This ManagedObjectReference `xml:"_this"` - VmfsPath string `xml:"vmfsPath"` - Extent HostScsiDiskPartition `xml:"extent"` -} - -func init() { - t["ExpandVmfsExtentRequestType"] = reflect.TypeOf((*ExpandVmfsExtentRequestType)(nil)).Elem() -} - -type ExpandVmfsExtentResponse struct { -} - -type ExpiredAddonLicense struct { - ExpiredFeatureLicense -} - -func init() { - t["ExpiredAddonLicense"] = reflect.TypeOf((*ExpiredAddonLicense)(nil)).Elem() -} - -type ExpiredAddonLicenseFault ExpiredAddonLicense - -func init() { - t["ExpiredAddonLicenseFault"] = reflect.TypeOf((*ExpiredAddonLicenseFault)(nil)).Elem() -} - -type ExpiredEditionLicense struct { - ExpiredFeatureLicense -} - -func init() { - t["ExpiredEditionLicense"] = reflect.TypeOf((*ExpiredEditionLicense)(nil)).Elem() -} - -type ExpiredEditionLicenseFault ExpiredEditionLicense - -func init() { - t["ExpiredEditionLicenseFault"] = reflect.TypeOf((*ExpiredEditionLicenseFault)(nil)).Elem() -} - -type ExpiredFeatureLicense struct { - NotEnoughLicenses - - Feature string `xml:"feature"` - Count int32 `xml:"count"` - ExpirationDate time.Time `xml:"expirationDate"` -} - -func init() { - t["ExpiredFeatureLicense"] = reflect.TypeOf((*ExpiredFeatureLicense)(nil)).Elem() -} - -type ExpiredFeatureLicenseFault BaseExpiredFeatureLicense - -func init() { - t["ExpiredFeatureLicenseFault"] = reflect.TypeOf((*ExpiredFeatureLicenseFault)(nil)).Elem() -} - -type ExportAnswerFileRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host ManagedObjectReference `xml:"host"` -} - -func init() { - t["ExportAnswerFileRequestType"] = reflect.TypeOf((*ExportAnswerFileRequestType)(nil)).Elem() -} - -type ExportAnswerFile_Task ExportAnswerFileRequestType - -func init() { - t["ExportAnswerFile_Task"] = reflect.TypeOf((*ExportAnswerFile_Task)(nil)).Elem() -} - -type ExportAnswerFile_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ExportProfile ExportProfileRequestType - -func init() { - t["ExportProfile"] = reflect.TypeOf((*ExportProfile)(nil)).Elem() -} - -type ExportProfileRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["ExportProfileRequestType"] = reflect.TypeOf((*ExportProfileRequestType)(nil)).Elem() -} - -type ExportProfileResponse struct { - Returnval string `xml:"returnval"` -} - -type ExportSnapshot ExportSnapshotRequestType - -func init() { - t["ExportSnapshot"] = reflect.TypeOf((*ExportSnapshot)(nil)).Elem() -} - -type ExportSnapshotRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["ExportSnapshotRequestType"] = reflect.TypeOf((*ExportSnapshotRequestType)(nil)).Elem() -} - -type ExportSnapshotResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ExportVApp ExportVAppRequestType - -func init() { - t["ExportVApp"] = reflect.TypeOf((*ExportVApp)(nil)).Elem() -} - -type ExportVAppRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["ExportVAppRequestType"] = reflect.TypeOf((*ExportVAppRequestType)(nil)).Elem() -} - -type ExportVAppResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ExportVm ExportVmRequestType - -func init() { - t["ExportVm"] = reflect.TypeOf((*ExportVm)(nil)).Elem() -} - -type ExportVmRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["ExportVmRequestType"] = reflect.TypeOf((*ExportVmRequestType)(nil)).Elem() -} - -type ExportVmResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ExtExtendedProductInfo struct { - DynamicData - - CompanyUrl string `xml:"companyUrl,omitempty"` - ProductUrl string `xml:"productUrl,omitempty"` - ManagementUrl string `xml:"managementUrl,omitempty"` - Self *ManagedObjectReference `xml:"self,omitempty"` -} - -func init() { - t["ExtExtendedProductInfo"] = reflect.TypeOf((*ExtExtendedProductInfo)(nil)).Elem() -} - -type ExtManagedEntityInfo struct { - DynamicData - - Type string `xml:"type"` - SmallIconUrl string `xml:"smallIconUrl,omitempty"` - IconUrl string `xml:"iconUrl,omitempty"` - Description string `xml:"description,omitempty"` -} - -func init() { - t["ExtManagedEntityInfo"] = reflect.TypeOf((*ExtManagedEntityInfo)(nil)).Elem() -} - -type ExtSolutionManagerInfo struct { - DynamicData - - Tab []ExtSolutionManagerInfoTabInfo `xml:"tab,omitempty"` - SmallIconUrl string `xml:"smallIconUrl,omitempty"` -} - -func init() { - t["ExtSolutionManagerInfo"] = reflect.TypeOf((*ExtSolutionManagerInfo)(nil)).Elem() -} - -type ExtSolutionManagerInfoTabInfo struct { - DynamicData - - Label string `xml:"label"` - Url string `xml:"url"` -} - -func init() { - t["ExtSolutionManagerInfoTabInfo"] = reflect.TypeOf((*ExtSolutionManagerInfoTabInfo)(nil)).Elem() -} - -type ExtendVffs ExtendVffsRequestType - -func init() { - t["ExtendVffs"] = reflect.TypeOf((*ExtendVffs)(nil)).Elem() -} - -type ExtendVffsRequestType struct { - This ManagedObjectReference `xml:"_this"` - VffsPath string `xml:"vffsPath"` - DevicePath string `xml:"devicePath"` - Spec *HostDiskPartitionSpec `xml:"spec,omitempty"` -} - -func init() { - t["ExtendVffsRequestType"] = reflect.TypeOf((*ExtendVffsRequestType)(nil)).Elem() -} - -type ExtendVffsResponse struct { -} - -type ExtendVirtualDiskRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` - Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` - NewCapacityKb int64 `xml:"newCapacityKb"` - EagerZero *bool `xml:"eagerZero"` -} - -func init() { - t["ExtendVirtualDiskRequestType"] = reflect.TypeOf((*ExtendVirtualDiskRequestType)(nil)).Elem() -} - -type ExtendVirtualDisk_Task ExtendVirtualDiskRequestType - -func init() { - t["ExtendVirtualDisk_Task"] = reflect.TypeOf((*ExtendVirtualDisk_Task)(nil)).Elem() -} - -type ExtendVirtualDisk_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ExtendVmfsDatastore ExtendVmfsDatastoreRequestType - -func init() { - t["ExtendVmfsDatastore"] = reflect.TypeOf((*ExtendVmfsDatastore)(nil)).Elem() -} - -type ExtendVmfsDatastoreRequestType struct { - This ManagedObjectReference `xml:"_this"` - Datastore ManagedObjectReference `xml:"datastore"` - Spec VmfsDatastoreExtendSpec `xml:"spec"` -} - -func init() { - t["ExtendVmfsDatastoreRequestType"] = reflect.TypeOf((*ExtendVmfsDatastoreRequestType)(nil)).Elem() -} - -type ExtendVmfsDatastoreResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ExtendedDescription struct { - Description - - MessageCatalogKeyPrefix string `xml:"messageCatalogKeyPrefix"` - MessageArg []KeyAnyValue `xml:"messageArg,omitempty"` -} - -func init() { - t["ExtendedDescription"] = reflect.TypeOf((*ExtendedDescription)(nil)).Elem() -} - -type ExtendedElementDescription struct { - ElementDescription - - MessageCatalogKeyPrefix string `xml:"messageCatalogKeyPrefix"` - MessageArg []KeyAnyValue `xml:"messageArg,omitempty"` -} - -func init() { - t["ExtendedElementDescription"] = reflect.TypeOf((*ExtendedElementDescription)(nil)).Elem() -} - -type ExtendedEvent struct { - GeneralEvent - - EventTypeId string `xml:"eventTypeId"` - ManagedObject ManagedObjectReference `xml:"managedObject"` - Data []ExtendedEventPair `xml:"data,omitempty"` -} - -func init() { - t["ExtendedEvent"] = reflect.TypeOf((*ExtendedEvent)(nil)).Elem() -} - -type ExtendedEventPair struct { - DynamicData - - Key string `xml:"key"` - Value string `xml:"value"` -} - -func init() { - t["ExtendedEventPair"] = reflect.TypeOf((*ExtendedEventPair)(nil)).Elem() -} - -type ExtendedFault struct { - VimFault - - FaultTypeId string `xml:"faultTypeId"` - Data []KeyValue `xml:"data,omitempty"` -} - -func init() { - t["ExtendedFault"] = reflect.TypeOf((*ExtendedFault)(nil)).Elem() -} - -type ExtendedFaultFault ExtendedFault - -func init() { - t["ExtendedFaultFault"] = reflect.TypeOf((*ExtendedFaultFault)(nil)).Elem() -} - -type Extension struct { - DynamicData - - Description BaseDescription `xml:"description,typeattr"` - Key string `xml:"key"` - Company string `xml:"company,omitempty"` - Type string `xml:"type,omitempty"` - Version string `xml:"version"` - SubjectName string `xml:"subjectName,omitempty"` - Server []ExtensionServerInfo `xml:"server,omitempty"` - Client []ExtensionClientInfo `xml:"client,omitempty"` - TaskList []ExtensionTaskTypeInfo `xml:"taskList,omitempty"` - EventList []ExtensionEventTypeInfo `xml:"eventList,omitempty"` - FaultList []ExtensionFaultTypeInfo `xml:"faultList,omitempty"` - PrivilegeList []ExtensionPrivilegeInfo `xml:"privilegeList,omitempty"` - ResourceList []ExtensionResourceInfo `xml:"resourceList,omitempty"` - LastHeartbeatTime time.Time `xml:"lastHeartbeatTime"` - HealthInfo *ExtensionHealthInfo `xml:"healthInfo,omitempty"` - OvfConsumerInfo *ExtensionOvfConsumerInfo `xml:"ovfConsumerInfo,omitempty"` - ExtendedProductInfo *ExtExtendedProductInfo `xml:"extendedProductInfo,omitempty"` - ManagedEntityInfo []ExtManagedEntityInfo `xml:"managedEntityInfo,omitempty"` - ShownInSolutionManager *bool `xml:"shownInSolutionManager"` - SolutionManagerInfo *ExtSolutionManagerInfo `xml:"solutionManagerInfo,omitempty"` -} - -func init() { - t["Extension"] = reflect.TypeOf((*Extension)(nil)).Elem() -} - -type ExtensionClientInfo struct { - DynamicData - - Version string `xml:"version"` - Description BaseDescription `xml:"description,typeattr"` - Company string `xml:"company"` - Type string `xml:"type"` - Url string `xml:"url"` -} - -func init() { - t["ExtensionClientInfo"] = reflect.TypeOf((*ExtensionClientInfo)(nil)).Elem() -} - -type ExtensionEventTypeInfo struct { - DynamicData - - EventID string `xml:"eventID"` - EventTypeSchema string `xml:"eventTypeSchema,omitempty"` -} - -func init() { - t["ExtensionEventTypeInfo"] = reflect.TypeOf((*ExtensionEventTypeInfo)(nil)).Elem() -} - -type ExtensionFaultTypeInfo struct { - DynamicData - - FaultID string `xml:"faultID"` -} - -func init() { - t["ExtensionFaultTypeInfo"] = reflect.TypeOf((*ExtensionFaultTypeInfo)(nil)).Elem() -} - -type ExtensionHealthInfo struct { - DynamicData - - Url string `xml:"url"` -} - -func init() { - t["ExtensionHealthInfo"] = reflect.TypeOf((*ExtensionHealthInfo)(nil)).Elem() -} - -type ExtensionManagerIpAllocationUsage struct { - DynamicData - - ExtensionKey string `xml:"extensionKey"` - NumAddresses int32 `xml:"numAddresses"` -} - -func init() { - t["ExtensionManagerIpAllocationUsage"] = reflect.TypeOf((*ExtensionManagerIpAllocationUsage)(nil)).Elem() -} - -type ExtensionOvfConsumerInfo struct { - DynamicData - - CallbackUrl string `xml:"callbackUrl"` - SectionType []string `xml:"sectionType"` -} - -func init() { - t["ExtensionOvfConsumerInfo"] = reflect.TypeOf((*ExtensionOvfConsumerInfo)(nil)).Elem() -} - -type ExtensionPrivilegeInfo struct { - DynamicData - - PrivID string `xml:"privID"` - PrivGroupName string `xml:"privGroupName"` -} - -func init() { - t["ExtensionPrivilegeInfo"] = reflect.TypeOf((*ExtensionPrivilegeInfo)(nil)).Elem() -} - -type ExtensionResourceInfo struct { - DynamicData - - Locale string `xml:"locale"` - Module string `xml:"module"` - Data []KeyValue `xml:"data"` -} - -func init() { - t["ExtensionResourceInfo"] = reflect.TypeOf((*ExtensionResourceInfo)(nil)).Elem() -} - -type ExtensionServerInfo struct { - DynamicData - - Url string `xml:"url"` - Description BaseDescription `xml:"description,typeattr"` - Company string `xml:"company"` - Type string `xml:"type"` - AdminEmail []string `xml:"adminEmail"` - ServerThumbprint string `xml:"serverThumbprint,omitempty"` -} - -func init() { - t["ExtensionServerInfo"] = reflect.TypeOf((*ExtensionServerInfo)(nil)).Elem() -} - -type ExtensionTaskTypeInfo struct { - DynamicData - - TaskID string `xml:"taskID"` -} - -func init() { - t["ExtensionTaskTypeInfo"] = reflect.TypeOf((*ExtensionTaskTypeInfo)(nil)).Elem() -} - -type ExtractOvfEnvironment ExtractOvfEnvironmentRequestType - -func init() { - t["ExtractOvfEnvironment"] = reflect.TypeOf((*ExtractOvfEnvironment)(nil)).Elem() -} - -type ExtractOvfEnvironmentRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["ExtractOvfEnvironmentRequestType"] = reflect.TypeOf((*ExtractOvfEnvironmentRequestType)(nil)).Elem() -} - -type ExtractOvfEnvironmentResponse struct { - Returnval string `xml:"returnval"` -} - -type FailToEnableSPBM struct { - NotEnoughLicenses - - Cs ManagedObjectReference `xml:"cs"` - CsName string `xml:"csName"` - HostLicenseStates []ComputeResourceHostSPBMLicenseInfo `xml:"hostLicenseStates"` -} - -func init() { - t["FailToEnableSPBM"] = reflect.TypeOf((*FailToEnableSPBM)(nil)).Elem() -} - -type FailToEnableSPBMFault FailToEnableSPBM - -func init() { - t["FailToEnableSPBMFault"] = reflect.TypeOf((*FailToEnableSPBMFault)(nil)).Elem() -} - -type FailToLockFaultToleranceVMs struct { - RuntimeFault - - VmName string `xml:"vmName"` - Vm ManagedObjectReference `xml:"vm"` - AlreadyLockedVm ManagedObjectReference `xml:"alreadyLockedVm"` -} - -func init() { - t["FailToLockFaultToleranceVMs"] = reflect.TypeOf((*FailToLockFaultToleranceVMs)(nil)).Elem() -} - -type FailToLockFaultToleranceVMsFault FailToLockFaultToleranceVMs - -func init() { - t["FailToLockFaultToleranceVMsFault"] = reflect.TypeOf((*FailToLockFaultToleranceVMsFault)(nil)).Elem() -} - -type FailoverLevelRestored struct { - ClusterEvent -} - -func init() { - t["FailoverLevelRestored"] = reflect.TypeOf((*FailoverLevelRestored)(nil)).Elem() -} - -type FaultToleranceAntiAffinityViolated struct { - MigrationFault - - HostName string `xml:"hostName"` - Host ManagedObjectReference `xml:"host"` -} - -func init() { - t["FaultToleranceAntiAffinityViolated"] = reflect.TypeOf((*FaultToleranceAntiAffinityViolated)(nil)).Elem() -} - -type FaultToleranceAntiAffinityViolatedFault FaultToleranceAntiAffinityViolated - -func init() { - t["FaultToleranceAntiAffinityViolatedFault"] = reflect.TypeOf((*FaultToleranceAntiAffinityViolatedFault)(nil)).Elem() -} - -type FaultToleranceCannotEditMem struct { - VmConfigFault - - VmName string `xml:"vmName"` - Vm ManagedObjectReference `xml:"vm"` -} - -func init() { - t["FaultToleranceCannotEditMem"] = reflect.TypeOf((*FaultToleranceCannotEditMem)(nil)).Elem() -} - -type FaultToleranceCannotEditMemFault FaultToleranceCannotEditMem - -func init() { - t["FaultToleranceCannotEditMemFault"] = reflect.TypeOf((*FaultToleranceCannotEditMemFault)(nil)).Elem() -} - -type FaultToleranceConfigInfo struct { - DynamicData - - Role int32 `xml:"role"` - InstanceUuids []string `xml:"instanceUuids"` - ConfigPaths []string `xml:"configPaths"` - Orphaned *bool `xml:"orphaned"` -} - -func init() { - t["FaultToleranceConfigInfo"] = reflect.TypeOf((*FaultToleranceConfigInfo)(nil)).Elem() -} - -type FaultToleranceConfigSpec struct { - DynamicData - - MetaDataPath *FaultToleranceMetaSpec `xml:"metaDataPath,omitempty"` - SecondaryVmSpec *FaultToleranceVMConfigSpec `xml:"secondaryVmSpec,omitempty"` -} - -func init() { - t["FaultToleranceConfigSpec"] = reflect.TypeOf((*FaultToleranceConfigSpec)(nil)).Elem() -} - -type FaultToleranceCpuIncompatible struct { - CpuIncompatible - - Model bool `xml:"model"` - Family bool `xml:"family"` - Stepping bool `xml:"stepping"` -} - -func init() { - t["FaultToleranceCpuIncompatible"] = reflect.TypeOf((*FaultToleranceCpuIncompatible)(nil)).Elem() -} - -type FaultToleranceCpuIncompatibleFault FaultToleranceCpuIncompatible - -func init() { - t["FaultToleranceCpuIncompatibleFault"] = reflect.TypeOf((*FaultToleranceCpuIncompatibleFault)(nil)).Elem() -} - -type FaultToleranceDiskSpec struct { - DynamicData - - Disk BaseVirtualDevice `xml:"disk,typeattr"` - Datastore ManagedObjectReference `xml:"datastore"` -} - -func init() { - t["FaultToleranceDiskSpec"] = reflect.TypeOf((*FaultToleranceDiskSpec)(nil)).Elem() -} - -type FaultToleranceMetaSpec struct { - DynamicData - - MetaDataDatastore ManagedObjectReference `xml:"metaDataDatastore"` -} - -func init() { - t["FaultToleranceMetaSpec"] = reflect.TypeOf((*FaultToleranceMetaSpec)(nil)).Elem() -} - -type FaultToleranceNeedsThickDisk struct { - MigrationFault - - VmName string `xml:"vmName"` -} - -func init() { - t["FaultToleranceNeedsThickDisk"] = reflect.TypeOf((*FaultToleranceNeedsThickDisk)(nil)).Elem() -} - -type FaultToleranceNeedsThickDiskFault FaultToleranceNeedsThickDisk - -func init() { - t["FaultToleranceNeedsThickDiskFault"] = reflect.TypeOf((*FaultToleranceNeedsThickDiskFault)(nil)).Elem() -} - -type FaultToleranceNotLicensed struct { - VmFaultToleranceIssue - - HostName string `xml:"hostName,omitempty"` -} - -func init() { - t["FaultToleranceNotLicensed"] = reflect.TypeOf((*FaultToleranceNotLicensed)(nil)).Elem() -} - -type FaultToleranceNotLicensedFault FaultToleranceNotLicensed - -func init() { - t["FaultToleranceNotLicensedFault"] = reflect.TypeOf((*FaultToleranceNotLicensedFault)(nil)).Elem() -} - -type FaultToleranceNotSameBuild struct { - MigrationFault - - Build string `xml:"build"` -} - -func init() { - t["FaultToleranceNotSameBuild"] = reflect.TypeOf((*FaultToleranceNotSameBuild)(nil)).Elem() -} - -type FaultToleranceNotSameBuildFault FaultToleranceNotSameBuild - -func init() { - t["FaultToleranceNotSameBuildFault"] = reflect.TypeOf((*FaultToleranceNotSameBuildFault)(nil)).Elem() -} - -type FaultTolerancePrimaryConfigInfo struct { - FaultToleranceConfigInfo - - Secondaries []ManagedObjectReference `xml:"secondaries"` -} - -func init() { - t["FaultTolerancePrimaryConfigInfo"] = reflect.TypeOf((*FaultTolerancePrimaryConfigInfo)(nil)).Elem() -} - -type FaultTolerancePrimaryPowerOnNotAttempted struct { - VmFaultToleranceIssue - - SecondaryVm ManagedObjectReference `xml:"secondaryVm"` - PrimaryVm ManagedObjectReference `xml:"primaryVm"` -} - -func init() { - t["FaultTolerancePrimaryPowerOnNotAttempted"] = reflect.TypeOf((*FaultTolerancePrimaryPowerOnNotAttempted)(nil)).Elem() -} - -type FaultTolerancePrimaryPowerOnNotAttemptedFault FaultTolerancePrimaryPowerOnNotAttempted - -func init() { - t["FaultTolerancePrimaryPowerOnNotAttemptedFault"] = reflect.TypeOf((*FaultTolerancePrimaryPowerOnNotAttemptedFault)(nil)).Elem() -} - -type FaultToleranceSecondaryConfigInfo struct { - FaultToleranceConfigInfo - - PrimaryVM ManagedObjectReference `xml:"primaryVM"` -} - -func init() { - t["FaultToleranceSecondaryConfigInfo"] = reflect.TypeOf((*FaultToleranceSecondaryConfigInfo)(nil)).Elem() -} - -type FaultToleranceSecondaryOpResult struct { - DynamicData - - Vm ManagedObjectReference `xml:"vm"` - PowerOnAttempted bool `xml:"powerOnAttempted"` - PowerOnResult *ClusterPowerOnVmResult `xml:"powerOnResult,omitempty"` -} - -func init() { - t["FaultToleranceSecondaryOpResult"] = reflect.TypeOf((*FaultToleranceSecondaryOpResult)(nil)).Elem() -} - -type FaultToleranceVMConfigSpec struct { - DynamicData - - VmConfig *ManagedObjectReference `xml:"vmConfig,omitempty"` - Disks []FaultToleranceDiskSpec `xml:"disks,omitempty"` -} - -func init() { - t["FaultToleranceVMConfigSpec"] = reflect.TypeOf((*FaultToleranceVMConfigSpec)(nil)).Elem() -} - -type FaultToleranceVmNotDasProtected struct { - VimFault - - Vm ManagedObjectReference `xml:"vm"` - VmName string `xml:"vmName"` -} - -func init() { - t["FaultToleranceVmNotDasProtected"] = reflect.TypeOf((*FaultToleranceVmNotDasProtected)(nil)).Elem() -} - -type FaultToleranceVmNotDasProtectedFault FaultToleranceVmNotDasProtected - -func init() { - t["FaultToleranceVmNotDasProtectedFault"] = reflect.TypeOf((*FaultToleranceVmNotDasProtectedFault)(nil)).Elem() -} - -type FcoeConfig struct { - DynamicData - - PriorityClass int32 `xml:"priorityClass"` - SourceMac string `xml:"sourceMac"` - VlanRange []FcoeConfigVlanRange `xml:"vlanRange"` - Capabilities FcoeConfigFcoeCapabilities `xml:"capabilities"` - FcoeActive bool `xml:"fcoeActive"` -} - -func init() { - t["FcoeConfig"] = reflect.TypeOf((*FcoeConfig)(nil)).Elem() -} - -type FcoeConfigFcoeCapabilities struct { - DynamicData - - PriorityClass bool `xml:"priorityClass"` - SourceMacAddress bool `xml:"sourceMacAddress"` - VlanRange bool `xml:"vlanRange"` -} - -func init() { - t["FcoeConfigFcoeCapabilities"] = reflect.TypeOf((*FcoeConfigFcoeCapabilities)(nil)).Elem() -} - -type FcoeConfigFcoeSpecification struct { - DynamicData - - UnderlyingPnic string `xml:"underlyingPnic"` - PriorityClass int32 `xml:"priorityClass,omitempty"` - SourceMac string `xml:"sourceMac,omitempty"` - VlanRange []FcoeConfigVlanRange `xml:"vlanRange,omitempty"` -} - -func init() { - t["FcoeConfigFcoeSpecification"] = reflect.TypeOf((*FcoeConfigFcoeSpecification)(nil)).Elem() -} - -type FcoeConfigVlanRange struct { - DynamicData - - VlanLow int32 `xml:"vlanLow"` - VlanHigh int32 `xml:"vlanHigh"` -} - -func init() { - t["FcoeConfigVlanRange"] = reflect.TypeOf((*FcoeConfigVlanRange)(nil)).Elem() -} - -type FcoeFault struct { - VimFault -} - -func init() { - t["FcoeFault"] = reflect.TypeOf((*FcoeFault)(nil)).Elem() -} - -type FcoeFaultFault BaseFcoeFault - -func init() { - t["FcoeFaultFault"] = reflect.TypeOf((*FcoeFaultFault)(nil)).Elem() -} - -type FcoeFaultPnicHasNoPortSet struct { - FcoeFault - - NicDevice string `xml:"nicDevice"` -} - -func init() { - t["FcoeFaultPnicHasNoPortSet"] = reflect.TypeOf((*FcoeFaultPnicHasNoPortSet)(nil)).Elem() -} - -type FcoeFaultPnicHasNoPortSetFault FcoeFaultPnicHasNoPortSet - -func init() { - t["FcoeFaultPnicHasNoPortSetFault"] = reflect.TypeOf((*FcoeFaultPnicHasNoPortSetFault)(nil)).Elem() -} - -type FeatureRequirementsNotMet struct { - VirtualHardwareCompatibilityIssue - - FeatureRequirement []VirtualMachineFeatureRequirement `xml:"featureRequirement,omitempty"` - Vm *ManagedObjectReference `xml:"vm,omitempty"` - Host *ManagedObjectReference `xml:"host,omitempty"` -} - -func init() { - t["FeatureRequirementsNotMet"] = reflect.TypeOf((*FeatureRequirementsNotMet)(nil)).Elem() -} - -type FeatureRequirementsNotMetFault FeatureRequirementsNotMet - -func init() { - t["FeatureRequirementsNotMetFault"] = reflect.TypeOf((*FeatureRequirementsNotMetFault)(nil)).Elem() -} - -type FetchDVPortKeys FetchDVPortKeysRequestType - -func init() { - t["FetchDVPortKeys"] = reflect.TypeOf((*FetchDVPortKeys)(nil)).Elem() -} - -type FetchDVPortKeysRequestType struct { - This ManagedObjectReference `xml:"_this"` - Criteria *DistributedVirtualSwitchPortCriteria `xml:"criteria,omitempty"` -} - -func init() { - t["FetchDVPortKeysRequestType"] = reflect.TypeOf((*FetchDVPortKeysRequestType)(nil)).Elem() -} - -type FetchDVPortKeysResponse struct { - Returnval []string `xml:"returnval,omitempty"` -} - -type FetchDVPorts FetchDVPortsRequestType - -func init() { - t["FetchDVPorts"] = reflect.TypeOf((*FetchDVPorts)(nil)).Elem() -} - -type FetchDVPortsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Criteria *DistributedVirtualSwitchPortCriteria `xml:"criteria,omitempty"` -} - -func init() { - t["FetchDVPortsRequestType"] = reflect.TypeOf((*FetchDVPortsRequestType)(nil)).Elem() -} - -type FetchDVPortsResponse struct { - Returnval []DistributedVirtualPort `xml:"returnval,omitempty"` -} - -type FileAlreadyExists struct { - FileFault -} - -func init() { - t["FileAlreadyExists"] = reflect.TypeOf((*FileAlreadyExists)(nil)).Elem() -} - -type FileAlreadyExistsFault FileAlreadyExists - -func init() { - t["FileAlreadyExistsFault"] = reflect.TypeOf((*FileAlreadyExistsFault)(nil)).Elem() -} - -type FileBackedPortNotSupported struct { - DeviceNotSupported -} - -func init() { - t["FileBackedPortNotSupported"] = reflect.TypeOf((*FileBackedPortNotSupported)(nil)).Elem() -} - -type FileBackedPortNotSupportedFault FileBackedPortNotSupported - -func init() { - t["FileBackedPortNotSupportedFault"] = reflect.TypeOf((*FileBackedPortNotSupportedFault)(nil)).Elem() -} - -type FileBackedVirtualDiskSpec struct { - VirtualDiskSpec - - CapacityKb int64 `xml:"capacityKb"` - Profile []BaseVirtualMachineProfileSpec `xml:"profile,omitempty,typeattr"` -} - -func init() { - t["FileBackedVirtualDiskSpec"] = reflect.TypeOf((*FileBackedVirtualDiskSpec)(nil)).Elem() -} - -type FileFault struct { - VimFault - - File string `xml:"file"` -} - -func init() { - t["FileFault"] = reflect.TypeOf((*FileFault)(nil)).Elem() -} - -type FileFaultFault BaseFileFault - -func init() { - t["FileFaultFault"] = reflect.TypeOf((*FileFaultFault)(nil)).Elem() -} - -type FileInfo struct { - DynamicData - - Path string `xml:"path"` - FileSize int64 `xml:"fileSize,omitempty"` - Modification *time.Time `xml:"modification"` - Owner string `xml:"owner,omitempty"` -} - -func init() { - t["FileInfo"] = reflect.TypeOf((*FileInfo)(nil)).Elem() -} - -type FileLocked struct { - FileFault -} - -func init() { - t["FileLocked"] = reflect.TypeOf((*FileLocked)(nil)).Elem() -} - -type FileLockedFault FileLocked - -func init() { - t["FileLockedFault"] = reflect.TypeOf((*FileLockedFault)(nil)).Elem() -} - -type FileNameTooLong struct { - FileFault -} - -func init() { - t["FileNameTooLong"] = reflect.TypeOf((*FileNameTooLong)(nil)).Elem() -} - -type FileNameTooLongFault FileNameTooLong - -func init() { - t["FileNameTooLongFault"] = reflect.TypeOf((*FileNameTooLongFault)(nil)).Elem() -} - -type FileNotFound struct { - FileFault -} - -func init() { - t["FileNotFound"] = reflect.TypeOf((*FileNotFound)(nil)).Elem() -} - -type FileNotFoundFault FileNotFound - -func init() { - t["FileNotFoundFault"] = reflect.TypeOf((*FileNotFoundFault)(nil)).Elem() -} - -type FileNotWritable struct { - FileFault -} - -func init() { - t["FileNotWritable"] = reflect.TypeOf((*FileNotWritable)(nil)).Elem() -} - -type FileNotWritableFault FileNotWritable - -func init() { - t["FileNotWritableFault"] = reflect.TypeOf((*FileNotWritableFault)(nil)).Elem() -} - -type FileQuery struct { - DynamicData -} - -func init() { - t["FileQuery"] = reflect.TypeOf((*FileQuery)(nil)).Elem() -} - -type FileQueryFlags struct { - DynamicData - - FileType bool `xml:"fileType"` - FileSize bool `xml:"fileSize"` - Modification bool `xml:"modification"` - FileOwner *bool `xml:"fileOwner"` -} - -func init() { - t["FileQueryFlags"] = reflect.TypeOf((*FileQueryFlags)(nil)).Elem() -} - -type FileTooLarge struct { - FileFault - - Datastore string `xml:"datastore"` - FileSize int64 `xml:"fileSize"` - MaxFileSize int64 `xml:"maxFileSize,omitempty"` -} - -func init() { - t["FileTooLarge"] = reflect.TypeOf((*FileTooLarge)(nil)).Elem() -} - -type FileTooLargeFault FileTooLarge - -func init() { - t["FileTooLargeFault"] = reflect.TypeOf((*FileTooLargeFault)(nil)).Elem() -} - -type FileTransferInformation struct { - DynamicData - - Attributes BaseGuestFileAttributes `xml:"attributes,typeattr"` - Size int64 `xml:"size"` - Url string `xml:"url"` -} - -func init() { - t["FileTransferInformation"] = reflect.TypeOf((*FileTransferInformation)(nil)).Elem() -} - -type FilesystemQuiesceFault struct { - SnapshotFault -} - -func init() { - t["FilesystemQuiesceFault"] = reflect.TypeOf((*FilesystemQuiesceFault)(nil)).Elem() -} - -type FilesystemQuiesceFaultFault FilesystemQuiesceFault - -func init() { - t["FilesystemQuiesceFaultFault"] = reflect.TypeOf((*FilesystemQuiesceFaultFault)(nil)).Elem() -} - -type FilterInUse struct { - ResourceInUse - - Disk []VirtualDiskId `xml:"disk,omitempty"` -} - -func init() { - t["FilterInUse"] = reflect.TypeOf((*FilterInUse)(nil)).Elem() -} - -type FilterInUseFault FilterInUse - -func init() { - t["FilterInUseFault"] = reflect.TypeOf((*FilterInUseFault)(nil)).Elem() -} - -type FindAllByDnsName FindAllByDnsNameRequestType - -func init() { - t["FindAllByDnsName"] = reflect.TypeOf((*FindAllByDnsName)(nil)).Elem() -} - -type FindAllByDnsNameRequestType struct { - This ManagedObjectReference `xml:"_this"` - Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` - DnsName string `xml:"dnsName"` - VmSearch bool `xml:"vmSearch"` -} - -func init() { - t["FindAllByDnsNameRequestType"] = reflect.TypeOf((*FindAllByDnsNameRequestType)(nil)).Elem() -} - -type FindAllByDnsNameResponse struct { - Returnval []ManagedObjectReference `xml:"returnval"` -} - -type FindAllByIp FindAllByIpRequestType - -func init() { - t["FindAllByIp"] = reflect.TypeOf((*FindAllByIp)(nil)).Elem() -} - -type FindAllByIpRequestType struct { - This ManagedObjectReference `xml:"_this"` - Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` - Ip string `xml:"ip"` - VmSearch bool `xml:"vmSearch"` -} - -func init() { - t["FindAllByIpRequestType"] = reflect.TypeOf((*FindAllByIpRequestType)(nil)).Elem() -} - -type FindAllByIpResponse struct { - Returnval []ManagedObjectReference `xml:"returnval"` -} - -type FindAllByUuid FindAllByUuidRequestType - -func init() { - t["FindAllByUuid"] = reflect.TypeOf((*FindAllByUuid)(nil)).Elem() -} - -type FindAllByUuidRequestType struct { - This ManagedObjectReference `xml:"_this"` - Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` - Uuid string `xml:"uuid"` - VmSearch bool `xml:"vmSearch"` - InstanceUuid *bool `xml:"instanceUuid"` -} - -func init() { - t["FindAllByUuidRequestType"] = reflect.TypeOf((*FindAllByUuidRequestType)(nil)).Elem() -} - -type FindAllByUuidResponse struct { - Returnval []ManagedObjectReference `xml:"returnval"` -} - -type FindAssociatedProfile FindAssociatedProfileRequestType - -func init() { - t["FindAssociatedProfile"] = reflect.TypeOf((*FindAssociatedProfile)(nil)).Elem() -} - -type FindAssociatedProfileRequestType struct { - This ManagedObjectReference `xml:"_this"` - Entity ManagedObjectReference `xml:"entity"` -} - -func init() { - t["FindAssociatedProfileRequestType"] = reflect.TypeOf((*FindAssociatedProfileRequestType)(nil)).Elem() -} - -type FindAssociatedProfileResponse struct { - Returnval []ManagedObjectReference `xml:"returnval,omitempty"` -} - -type FindByDatastorePath FindByDatastorePathRequestType - -func init() { - t["FindByDatastorePath"] = reflect.TypeOf((*FindByDatastorePath)(nil)).Elem() -} - -type FindByDatastorePathRequestType struct { - This ManagedObjectReference `xml:"_this"` - Datacenter ManagedObjectReference `xml:"datacenter"` - Path string `xml:"path"` -} - -func init() { - t["FindByDatastorePathRequestType"] = reflect.TypeOf((*FindByDatastorePathRequestType)(nil)).Elem() -} - -type FindByDatastorePathResponse struct { - Returnval *ManagedObjectReference `xml:"returnval,omitempty"` -} - -type FindByDnsName FindByDnsNameRequestType - -func init() { - t["FindByDnsName"] = reflect.TypeOf((*FindByDnsName)(nil)).Elem() -} - -type FindByDnsNameRequestType struct { - This ManagedObjectReference `xml:"_this"` - Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` - DnsName string `xml:"dnsName"` - VmSearch bool `xml:"vmSearch"` -} - -func init() { - t["FindByDnsNameRequestType"] = reflect.TypeOf((*FindByDnsNameRequestType)(nil)).Elem() -} - -type FindByDnsNameResponse struct { - Returnval *ManagedObjectReference `xml:"returnval,omitempty"` -} - -type FindByInventoryPath FindByInventoryPathRequestType - -func init() { - t["FindByInventoryPath"] = reflect.TypeOf((*FindByInventoryPath)(nil)).Elem() -} - -type FindByInventoryPathRequestType struct { - This ManagedObjectReference `xml:"_this"` - InventoryPath string `xml:"inventoryPath"` -} - -func init() { - t["FindByInventoryPathRequestType"] = reflect.TypeOf((*FindByInventoryPathRequestType)(nil)).Elem() -} - -type FindByInventoryPathResponse struct { - Returnval *ManagedObjectReference `xml:"returnval,omitempty"` -} - -type FindByIp FindByIpRequestType - -func init() { - t["FindByIp"] = reflect.TypeOf((*FindByIp)(nil)).Elem() -} - -type FindByIpRequestType struct { - This ManagedObjectReference `xml:"_this"` - Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` - Ip string `xml:"ip"` - VmSearch bool `xml:"vmSearch"` -} - -func init() { - t["FindByIpRequestType"] = reflect.TypeOf((*FindByIpRequestType)(nil)).Elem() -} - -type FindByIpResponse struct { - Returnval *ManagedObjectReference `xml:"returnval,omitempty"` -} - -type FindByUuid FindByUuidRequestType - -func init() { - t["FindByUuid"] = reflect.TypeOf((*FindByUuid)(nil)).Elem() -} - -type FindByUuidRequestType struct { - This ManagedObjectReference `xml:"_this"` - Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` - Uuid string `xml:"uuid"` - VmSearch bool `xml:"vmSearch"` - InstanceUuid *bool `xml:"instanceUuid"` -} - -func init() { - t["FindByUuidRequestType"] = reflect.TypeOf((*FindByUuidRequestType)(nil)).Elem() -} - -type FindByUuidResponse struct { - Returnval *ManagedObjectReference `xml:"returnval,omitempty"` -} - -type FindChild FindChildRequestType - -func init() { - t["FindChild"] = reflect.TypeOf((*FindChild)(nil)).Elem() -} - -type FindChildRequestType struct { - This ManagedObjectReference `xml:"_this"` - Entity ManagedObjectReference `xml:"entity"` - Name string `xml:"name"` -} - -func init() { - t["FindChildRequestType"] = reflect.TypeOf((*FindChildRequestType)(nil)).Elem() -} - -type FindChildResponse struct { - Returnval *ManagedObjectReference `xml:"returnval,omitempty"` -} - -type FindExtension FindExtensionRequestType - -func init() { - t["FindExtension"] = reflect.TypeOf((*FindExtension)(nil)).Elem() -} - -type FindExtensionRequestType struct { - This ManagedObjectReference `xml:"_this"` - ExtensionKey string `xml:"extensionKey"` -} - -func init() { - t["FindExtensionRequestType"] = reflect.TypeOf((*FindExtensionRequestType)(nil)).Elem() -} - -type FindExtensionResponse struct { - Returnval *Extension `xml:"returnval,omitempty"` -} - -type FindRulesForVm FindRulesForVmRequestType - -func init() { - t["FindRulesForVm"] = reflect.TypeOf((*FindRulesForVm)(nil)).Elem() -} - -type FindRulesForVmRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` -} - -func init() { - t["FindRulesForVmRequestType"] = reflect.TypeOf((*FindRulesForVmRequestType)(nil)).Elem() -} - -type FindRulesForVmResponse struct { - Returnval []BaseClusterRuleInfo `xml:"returnval,omitempty,typeattr"` -} - -type FirewallProfile struct { - ApplyProfile - - Ruleset []FirewallProfileRulesetProfile `xml:"ruleset,omitempty"` -} - -func init() { - t["FirewallProfile"] = reflect.TypeOf((*FirewallProfile)(nil)).Elem() -} - -type FirewallProfileRulesetProfile struct { - ApplyProfile - - Key string `xml:"key"` -} - -func init() { - t["FirewallProfileRulesetProfile"] = reflect.TypeOf((*FirewallProfileRulesetProfile)(nil)).Elem() -} - -type FloatOption struct { - OptionType - - Min float32 `xml:"min"` - Max float32 `xml:"max"` - DefaultValue float32 `xml:"defaultValue"` -} - -func init() { - t["FloatOption"] = reflect.TypeOf((*FloatOption)(nil)).Elem() -} - -type FloppyImageFileInfo struct { - FileInfo -} - -func init() { - t["FloppyImageFileInfo"] = reflect.TypeOf((*FloppyImageFileInfo)(nil)).Elem() -} - -type FloppyImageFileQuery struct { - FileQuery -} - -func init() { - t["FloppyImageFileQuery"] = reflect.TypeOf((*FloppyImageFileQuery)(nil)).Elem() -} - -type FolderEventArgument struct { - EntityEventArgument - - Folder ManagedObjectReference `xml:"folder"` -} - -func init() { - t["FolderEventArgument"] = reflect.TypeOf((*FolderEventArgument)(nil)).Elem() -} - -type FolderFileInfo struct { - FileInfo -} - -func init() { - t["FolderFileInfo"] = reflect.TypeOf((*FolderFileInfo)(nil)).Elem() -} - -type FolderFileQuery struct { - FileQuery -} - -func init() { - t["FolderFileQuery"] = reflect.TypeOf((*FolderFileQuery)(nil)).Elem() -} - -type FormatVffs FormatVffsRequestType - -func init() { - t["FormatVffs"] = reflect.TypeOf((*FormatVffs)(nil)).Elem() -} - -type FormatVffsRequestType struct { - This ManagedObjectReference `xml:"_this"` - CreateSpec HostVffsSpec `xml:"createSpec"` -} - -func init() { - t["FormatVffsRequestType"] = reflect.TypeOf((*FormatVffsRequestType)(nil)).Elem() -} - -type FormatVffsResponse struct { - Returnval HostVffsVolume `xml:"returnval"` -} - -type FormatVmfs FormatVmfsRequestType - -func init() { - t["FormatVmfs"] = reflect.TypeOf((*FormatVmfs)(nil)).Elem() -} - -type FormatVmfsRequestType struct { - This ManagedObjectReference `xml:"_this"` - CreateSpec HostVmfsSpec `xml:"createSpec"` -} - -func init() { - t["FormatVmfsRequestType"] = reflect.TypeOf((*FormatVmfsRequestType)(nil)).Elem() -} - -type FormatVmfsResponse struct { - Returnval HostVmfsVolume `xml:"returnval"` -} - -type FtIssuesOnHost struct { - VmFaultToleranceIssue - - Host ManagedObjectReference `xml:"host"` - HostName string `xml:"hostName"` - Errors []LocalizedMethodFault `xml:"errors,omitempty"` -} - -func init() { - t["FtIssuesOnHost"] = reflect.TypeOf((*FtIssuesOnHost)(nil)).Elem() -} - -type FtIssuesOnHostFault FtIssuesOnHost - -func init() { - t["FtIssuesOnHostFault"] = reflect.TypeOf((*FtIssuesOnHostFault)(nil)).Elem() -} - -type FullStorageVMotionNotSupported struct { - MigrationFeatureNotSupported -} - -func init() { - t["FullStorageVMotionNotSupported"] = reflect.TypeOf((*FullStorageVMotionNotSupported)(nil)).Elem() -} - -type FullStorageVMotionNotSupportedFault FullStorageVMotionNotSupported - -func init() { - t["FullStorageVMotionNotSupportedFault"] = reflect.TypeOf((*FullStorageVMotionNotSupportedFault)(nil)).Elem() -} - -type GatewayConnectFault struct { - HostConnectFault - - GatewayType string `xml:"gatewayType"` - GatewayId string `xml:"gatewayId"` - GatewayInfo string `xml:"gatewayInfo"` - Details *LocalizableMessage `xml:"details,omitempty"` -} - -func init() { - t["GatewayConnectFault"] = reflect.TypeOf((*GatewayConnectFault)(nil)).Elem() -} - -type GatewayConnectFaultFault BaseGatewayConnectFault - -func init() { - t["GatewayConnectFaultFault"] = reflect.TypeOf((*GatewayConnectFaultFault)(nil)).Elem() -} - -type GatewayHostNotReachable struct { - GatewayToHostConnectFault -} - -func init() { - t["GatewayHostNotReachable"] = reflect.TypeOf((*GatewayHostNotReachable)(nil)).Elem() -} - -type GatewayHostNotReachableFault GatewayHostNotReachable - -func init() { - t["GatewayHostNotReachableFault"] = reflect.TypeOf((*GatewayHostNotReachableFault)(nil)).Elem() -} - -type GatewayNotFound struct { - GatewayConnectFault -} - -func init() { - t["GatewayNotFound"] = reflect.TypeOf((*GatewayNotFound)(nil)).Elem() -} - -type GatewayNotFoundFault GatewayNotFound - -func init() { - t["GatewayNotFoundFault"] = reflect.TypeOf((*GatewayNotFoundFault)(nil)).Elem() -} - -type GatewayNotReachable struct { - GatewayConnectFault -} - -func init() { - t["GatewayNotReachable"] = reflect.TypeOf((*GatewayNotReachable)(nil)).Elem() -} - -type GatewayNotReachableFault GatewayNotReachable - -func init() { - t["GatewayNotReachableFault"] = reflect.TypeOf((*GatewayNotReachableFault)(nil)).Elem() -} - -type GatewayOperationRefused struct { - GatewayConnectFault -} - -func init() { - t["GatewayOperationRefused"] = reflect.TypeOf((*GatewayOperationRefused)(nil)).Elem() -} - -type GatewayOperationRefusedFault GatewayOperationRefused - -func init() { - t["GatewayOperationRefusedFault"] = reflect.TypeOf((*GatewayOperationRefusedFault)(nil)).Elem() -} - -type GatewayToHostAuthFault struct { - GatewayToHostConnectFault - - InvalidProperties []string `xml:"invalidProperties"` - MissingProperties []string `xml:"missingProperties"` -} - -func init() { - t["GatewayToHostAuthFault"] = reflect.TypeOf((*GatewayToHostAuthFault)(nil)).Elem() -} - -type GatewayToHostAuthFaultFault GatewayToHostAuthFault - -func init() { - t["GatewayToHostAuthFaultFault"] = reflect.TypeOf((*GatewayToHostAuthFaultFault)(nil)).Elem() -} - -type GatewayToHostConnectFault struct { - GatewayConnectFault - - Hostname string `xml:"hostname"` - Port int32 `xml:"port,omitempty"` -} - -func init() { - t["GatewayToHostConnectFault"] = reflect.TypeOf((*GatewayToHostConnectFault)(nil)).Elem() -} - -type GatewayToHostConnectFaultFault BaseGatewayToHostConnectFault - -func init() { - t["GatewayToHostConnectFaultFault"] = reflect.TypeOf((*GatewayToHostConnectFaultFault)(nil)).Elem() -} - -type GatewayToHostTrustVerifyFault struct { - GatewayToHostConnectFault - - VerificationToken string `xml:"verificationToken"` - PropertiesToVerify []KeyValue `xml:"propertiesToVerify"` -} - -func init() { - t["GatewayToHostTrustVerifyFault"] = reflect.TypeOf((*GatewayToHostTrustVerifyFault)(nil)).Elem() -} - -type GatewayToHostTrustVerifyFaultFault GatewayToHostTrustVerifyFault - -func init() { - t["GatewayToHostTrustVerifyFaultFault"] = reflect.TypeOf((*GatewayToHostTrustVerifyFaultFault)(nil)).Elem() -} - -type GeneralEvent struct { - Event - - Message string `xml:"message"` -} - -func init() { - t["GeneralEvent"] = reflect.TypeOf((*GeneralEvent)(nil)).Elem() -} - -type GeneralHostErrorEvent struct { - GeneralEvent -} - -func init() { - t["GeneralHostErrorEvent"] = reflect.TypeOf((*GeneralHostErrorEvent)(nil)).Elem() -} - -type GeneralHostInfoEvent struct { - GeneralEvent -} - -func init() { - t["GeneralHostInfoEvent"] = reflect.TypeOf((*GeneralHostInfoEvent)(nil)).Elem() -} - -type GeneralHostWarningEvent struct { - GeneralEvent -} - -func init() { - t["GeneralHostWarningEvent"] = reflect.TypeOf((*GeneralHostWarningEvent)(nil)).Elem() -} - -type GeneralUserEvent struct { - GeneralEvent - - Entity *ManagedEntityEventArgument `xml:"entity,omitempty"` -} - -func init() { - t["GeneralUserEvent"] = reflect.TypeOf((*GeneralUserEvent)(nil)).Elem() -} - -type GeneralVmErrorEvent struct { - GeneralEvent -} - -func init() { - t["GeneralVmErrorEvent"] = reflect.TypeOf((*GeneralVmErrorEvent)(nil)).Elem() -} - -type GeneralVmInfoEvent struct { - GeneralEvent -} - -func init() { - t["GeneralVmInfoEvent"] = reflect.TypeOf((*GeneralVmInfoEvent)(nil)).Elem() -} - -type GeneralVmWarningEvent struct { - GeneralEvent -} - -func init() { - t["GeneralVmWarningEvent"] = reflect.TypeOf((*GeneralVmWarningEvent)(nil)).Elem() -} - -type GenerateCertificateSigningRequest GenerateCertificateSigningRequestRequestType - -func init() { - t["GenerateCertificateSigningRequest"] = reflect.TypeOf((*GenerateCertificateSigningRequest)(nil)).Elem() -} - -type GenerateCertificateSigningRequestByDn GenerateCertificateSigningRequestByDnRequestType - -func init() { - t["GenerateCertificateSigningRequestByDn"] = reflect.TypeOf((*GenerateCertificateSigningRequestByDn)(nil)).Elem() -} - -type GenerateCertificateSigningRequestByDnRequestType struct { - This ManagedObjectReference `xml:"_this"` - DistinguishedName string `xml:"distinguishedName"` -} - -func init() { - t["GenerateCertificateSigningRequestByDnRequestType"] = reflect.TypeOf((*GenerateCertificateSigningRequestByDnRequestType)(nil)).Elem() -} - -type GenerateCertificateSigningRequestByDnResponse struct { - Returnval string `xml:"returnval"` -} - -type GenerateCertificateSigningRequestRequestType struct { - This ManagedObjectReference `xml:"_this"` - UseIpAddressAsCommonName bool `xml:"useIpAddressAsCommonName"` -} - -func init() { - t["GenerateCertificateSigningRequestRequestType"] = reflect.TypeOf((*GenerateCertificateSigningRequestRequestType)(nil)).Elem() -} - -type GenerateCertificateSigningRequestResponse struct { - Returnval string `xml:"returnval"` -} - -type GenerateConfigTaskList GenerateConfigTaskListRequestType - -func init() { - t["GenerateConfigTaskList"] = reflect.TypeOf((*GenerateConfigTaskList)(nil)).Elem() -} - -type GenerateConfigTaskListRequestType struct { - This ManagedObjectReference `xml:"_this"` - ConfigSpec HostConfigSpec `xml:"configSpec"` - Host ManagedObjectReference `xml:"host"` -} - -func init() { - t["GenerateConfigTaskListRequestType"] = reflect.TypeOf((*GenerateConfigTaskListRequestType)(nil)).Elem() -} - -type GenerateConfigTaskListResponse struct { - Returnval HostProfileManagerConfigTaskList `xml:"returnval"` -} - -type GenerateHostProfileTaskListRequestType struct { - This ManagedObjectReference `xml:"_this"` - ConfigSpec HostConfigSpec `xml:"configSpec"` - Host ManagedObjectReference `xml:"host"` -} - -func init() { - t["GenerateHostProfileTaskListRequestType"] = reflect.TypeOf((*GenerateHostProfileTaskListRequestType)(nil)).Elem() -} - -type GenerateHostProfileTaskList_Task GenerateHostProfileTaskListRequestType - -func init() { - t["GenerateHostProfileTaskList_Task"] = reflect.TypeOf((*GenerateHostProfileTaskList_Task)(nil)).Elem() -} - -type GenerateHostProfileTaskList_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type GenerateLogBundlesRequestType struct { - This ManagedObjectReference `xml:"_this"` - IncludeDefault bool `xml:"includeDefault"` - Host []ManagedObjectReference `xml:"host,omitempty"` -} - -func init() { - t["GenerateLogBundlesRequestType"] = reflect.TypeOf((*GenerateLogBundlesRequestType)(nil)).Elem() -} - -type GenerateLogBundles_Task GenerateLogBundlesRequestType - -func init() { - t["GenerateLogBundles_Task"] = reflect.TypeOf((*GenerateLogBundles_Task)(nil)).Elem() -} - -type GenerateLogBundles_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type GenericDrsFault struct { - VimFault - - HostFaults []LocalizedMethodFault `xml:"hostFaults,omitempty"` -} - -func init() { - t["GenericDrsFault"] = reflect.TypeOf((*GenericDrsFault)(nil)).Elem() -} - -type GenericDrsFaultFault GenericDrsFault - -func init() { - t["GenericDrsFaultFault"] = reflect.TypeOf((*GenericDrsFaultFault)(nil)).Elem() -} - -type GenericVmConfigFault struct { - VmConfigFault - - Reason string `xml:"reason"` -} - -func init() { - t["GenericVmConfigFault"] = reflect.TypeOf((*GenericVmConfigFault)(nil)).Elem() -} - -type GenericVmConfigFaultFault GenericVmConfigFault - -func init() { - t["GenericVmConfigFaultFault"] = reflect.TypeOf((*GenericVmConfigFaultFault)(nil)).Elem() -} - -type GetAlarm GetAlarmRequestType - -func init() { - t["GetAlarm"] = reflect.TypeOf((*GetAlarm)(nil)).Elem() -} - -type GetAlarmRequestType struct { - This ManagedObjectReference `xml:"_this"` - Entity *ManagedObjectReference `xml:"entity,omitempty"` -} - -func init() { - t["GetAlarmRequestType"] = reflect.TypeOf((*GetAlarmRequestType)(nil)).Elem() -} - -type GetAlarmResponse struct { - Returnval []ManagedObjectReference `xml:"returnval,omitempty"` -} - -type GetAlarmState GetAlarmStateRequestType - -func init() { - t["GetAlarmState"] = reflect.TypeOf((*GetAlarmState)(nil)).Elem() -} - -type GetAlarmStateRequestType struct { - This ManagedObjectReference `xml:"_this"` - Entity ManagedObjectReference `xml:"entity"` -} - -func init() { - t["GetAlarmStateRequestType"] = reflect.TypeOf((*GetAlarmStateRequestType)(nil)).Elem() -} - -type GetAlarmStateResponse struct { - Returnval []AlarmState `xml:"returnval,omitempty"` -} - -type GetCustomizationSpec GetCustomizationSpecRequestType - -func init() { - t["GetCustomizationSpec"] = reflect.TypeOf((*GetCustomizationSpec)(nil)).Elem() -} - -type GetCustomizationSpecRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` -} - -func init() { - t["GetCustomizationSpecRequestType"] = reflect.TypeOf((*GetCustomizationSpecRequestType)(nil)).Elem() -} - -type GetCustomizationSpecResponse struct { - Returnval CustomizationSpecItem `xml:"returnval"` -} - -type GetPublicKey GetPublicKeyRequestType - -func init() { - t["GetPublicKey"] = reflect.TypeOf((*GetPublicKey)(nil)).Elem() -} - -type GetPublicKeyRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["GetPublicKeyRequestType"] = reflect.TypeOf((*GetPublicKeyRequestType)(nil)).Elem() -} - -type GetPublicKeyResponse struct { - Returnval string `xml:"returnval"` -} - -type GetResourceUsage GetResourceUsageRequestType - -func init() { - t["GetResourceUsage"] = reflect.TypeOf((*GetResourceUsage)(nil)).Elem() -} - -type GetResourceUsageRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["GetResourceUsageRequestType"] = reflect.TypeOf((*GetResourceUsageRequestType)(nil)).Elem() -} - -type GetResourceUsageResponse struct { - Returnval ClusterResourceUsageSummary `xml:"returnval"` -} - -type GetVsanObjExtAttrs GetVsanObjExtAttrsRequestType - -func init() { - t["GetVsanObjExtAttrs"] = reflect.TypeOf((*GetVsanObjExtAttrs)(nil)).Elem() -} - -type GetVsanObjExtAttrsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Uuids []string `xml:"uuids"` -} - -func init() { - t["GetVsanObjExtAttrsRequestType"] = reflect.TypeOf((*GetVsanObjExtAttrsRequestType)(nil)).Elem() -} - -type GetVsanObjExtAttrsResponse struct { - Returnval string `xml:"returnval"` -} - -type GhostDvsProxySwitchDetectedEvent struct { - HostEvent - - SwitchUuid []string `xml:"switchUuid"` -} - -func init() { - t["GhostDvsProxySwitchDetectedEvent"] = reflect.TypeOf((*GhostDvsProxySwitchDetectedEvent)(nil)).Elem() -} - -type GhostDvsProxySwitchRemovedEvent struct { - HostEvent - - SwitchUuid []string `xml:"switchUuid"` -} - -func init() { - t["GhostDvsProxySwitchRemovedEvent"] = reflect.TypeOf((*GhostDvsProxySwitchRemovedEvent)(nil)).Elem() -} - -type GlobalMessageChangedEvent struct { - SessionEvent - - Message string `xml:"message"` -} - -func init() { - t["GlobalMessageChangedEvent"] = reflect.TypeOf((*GlobalMessageChangedEvent)(nil)).Elem() -} - -type GroupAlarmAction struct { - AlarmAction - - Action []BaseAlarmAction `xml:"action,typeattr"` -} - -func init() { - t["GroupAlarmAction"] = reflect.TypeOf((*GroupAlarmAction)(nil)).Elem() -} - -type GuestAliases struct { - DynamicData - - Base64Cert string `xml:"base64Cert"` - Aliases []GuestAuthAliasInfo `xml:"aliases"` -} - -func init() { - t["GuestAliases"] = reflect.TypeOf((*GuestAliases)(nil)).Elem() -} - -type GuestAuthAliasInfo struct { - DynamicData - - Subject BaseGuestAuthSubject `xml:"subject,typeattr"` - Comment string `xml:"comment"` -} - -func init() { - t["GuestAuthAliasInfo"] = reflect.TypeOf((*GuestAuthAliasInfo)(nil)).Elem() -} - -type GuestAuthAnySubject struct { - GuestAuthSubject -} - -func init() { - t["GuestAuthAnySubject"] = reflect.TypeOf((*GuestAuthAnySubject)(nil)).Elem() -} - -type GuestAuthNamedSubject struct { - GuestAuthSubject - - Name string `xml:"name"` -} - -func init() { - t["GuestAuthNamedSubject"] = reflect.TypeOf((*GuestAuthNamedSubject)(nil)).Elem() -} - -type GuestAuthSubject struct { - DynamicData -} - -func init() { - t["GuestAuthSubject"] = reflect.TypeOf((*GuestAuthSubject)(nil)).Elem() -} - -type GuestAuthentication struct { - DynamicData - - InteractiveSession bool `xml:"interactiveSession"` -} - -func init() { - t["GuestAuthentication"] = reflect.TypeOf((*GuestAuthentication)(nil)).Elem() -} - -type GuestAuthenticationChallenge struct { - GuestOperationsFault - - ServerChallenge BaseGuestAuthentication `xml:"serverChallenge,typeattr"` - SessionID int64 `xml:"sessionID"` -} - -func init() { - t["GuestAuthenticationChallenge"] = reflect.TypeOf((*GuestAuthenticationChallenge)(nil)).Elem() -} - -type GuestAuthenticationChallengeFault GuestAuthenticationChallenge - -func init() { - t["GuestAuthenticationChallengeFault"] = reflect.TypeOf((*GuestAuthenticationChallengeFault)(nil)).Elem() -} - -type GuestComponentsOutOfDate struct { - GuestOperationsFault -} - -func init() { - t["GuestComponentsOutOfDate"] = reflect.TypeOf((*GuestComponentsOutOfDate)(nil)).Elem() -} - -type GuestComponentsOutOfDateFault GuestComponentsOutOfDate - -func init() { - t["GuestComponentsOutOfDateFault"] = reflect.TypeOf((*GuestComponentsOutOfDateFault)(nil)).Elem() -} - -type GuestDiskInfo struct { - DynamicData - - DiskPath string `xml:"diskPath,omitempty"` - Capacity int64 `xml:"capacity,omitempty"` - FreeSpace int64 `xml:"freeSpace,omitempty"` -} - -func init() { - t["GuestDiskInfo"] = reflect.TypeOf((*GuestDiskInfo)(nil)).Elem() -} - -type GuestFileAttributes struct { - DynamicData - - ModificationTime *time.Time `xml:"modificationTime"` - AccessTime *time.Time `xml:"accessTime"` - SymlinkTarget string `xml:"symlinkTarget,omitempty"` -} - -func init() { - t["GuestFileAttributes"] = reflect.TypeOf((*GuestFileAttributes)(nil)).Elem() -} - -type GuestFileInfo struct { - DynamicData - - Path string `xml:"path"` - Type string `xml:"type"` - Size int64 `xml:"size"` - Attributes BaseGuestFileAttributes `xml:"attributes,typeattr"` -} - -func init() { - t["GuestFileInfo"] = reflect.TypeOf((*GuestFileInfo)(nil)).Elem() -} - -type GuestInfo struct { - DynamicData - - ToolsStatus VirtualMachineToolsStatus `xml:"toolsStatus,omitempty"` - ToolsVersionStatus string `xml:"toolsVersionStatus,omitempty"` - ToolsVersionStatus2 string `xml:"toolsVersionStatus2,omitempty"` - ToolsRunningStatus string `xml:"toolsRunningStatus,omitempty"` - ToolsVersion string `xml:"toolsVersion,omitempty"` - GuestId string `xml:"guestId,omitempty"` - GuestFamily string `xml:"guestFamily,omitempty"` - GuestFullName string `xml:"guestFullName,omitempty"` - HostName string `xml:"hostName,omitempty"` - IpAddress string `xml:"ipAddress,omitempty"` - Net []GuestNicInfo `xml:"net,omitempty"` - IpStack []GuestStackInfo `xml:"ipStack,omitempty"` - Disk []GuestDiskInfo `xml:"disk,omitempty"` - Screen *GuestScreenInfo `xml:"screen,omitempty"` - GuestState string `xml:"guestState"` - AppHeartbeatStatus string `xml:"appHeartbeatStatus,omitempty"` - GuestKernelCrashed *bool `xml:"guestKernelCrashed"` - AppState string `xml:"appState,omitempty"` - GuestOperationsReady *bool `xml:"guestOperationsReady"` - InteractiveGuestOperationsReady *bool `xml:"interactiveGuestOperationsReady"` - GuestStateChangeSupported *bool `xml:"guestStateChangeSupported"` - GenerationInfo []GuestInfoNamespaceGenerationInfo `xml:"generationInfo,omitempty"` -} - -func init() { - t["GuestInfo"] = reflect.TypeOf((*GuestInfo)(nil)).Elem() -} - -type GuestInfoNamespaceGenerationInfo struct { - DynamicData - - Key string `xml:"key"` - GenerationNo int32 `xml:"generationNo"` -} - -func init() { - t["GuestInfoNamespaceGenerationInfo"] = reflect.TypeOf((*GuestInfoNamespaceGenerationInfo)(nil)).Elem() -} - -type GuestListFileInfo struct { - DynamicData - - Files []GuestFileInfo `xml:"files,omitempty"` - Remaining int32 `xml:"remaining"` -} - -func init() { - t["GuestListFileInfo"] = reflect.TypeOf((*GuestListFileInfo)(nil)).Elem() -} - -type GuestMappedAliases struct { - DynamicData - - Base64Cert string `xml:"base64Cert"` - Username string `xml:"username"` - Subjects []BaseGuestAuthSubject `xml:"subjects,typeattr"` -} - -func init() { - t["GuestMappedAliases"] = reflect.TypeOf((*GuestMappedAliases)(nil)).Elem() -} - -type GuestMultipleMappings struct { - GuestOperationsFault -} - -func init() { - t["GuestMultipleMappings"] = reflect.TypeOf((*GuestMultipleMappings)(nil)).Elem() -} - -type GuestMultipleMappingsFault GuestMultipleMappings - -func init() { - t["GuestMultipleMappingsFault"] = reflect.TypeOf((*GuestMultipleMappingsFault)(nil)).Elem() -} - -type GuestNicInfo struct { - DynamicData - - Network string `xml:"network,omitempty"` - IpAddress []string `xml:"ipAddress,omitempty"` - MacAddress string `xml:"macAddress,omitempty"` - Connected bool `xml:"connected"` - DeviceConfigId int32 `xml:"deviceConfigId"` - DnsConfig *NetDnsConfigInfo `xml:"dnsConfig,omitempty"` - IpConfig *NetIpConfigInfo `xml:"ipConfig,omitempty"` - NetBIOSConfig BaseNetBIOSConfigInfo `xml:"netBIOSConfig,omitempty,typeattr"` -} - -func init() { - t["GuestNicInfo"] = reflect.TypeOf((*GuestNicInfo)(nil)).Elem() -} - -type GuestOperationsFault struct { - VimFault -} - -func init() { - t["GuestOperationsFault"] = reflect.TypeOf((*GuestOperationsFault)(nil)).Elem() -} - -type GuestOperationsFaultFault BaseGuestOperationsFault - -func init() { - t["GuestOperationsFaultFault"] = reflect.TypeOf((*GuestOperationsFaultFault)(nil)).Elem() -} - -type GuestOperationsUnavailable struct { - GuestOperationsFault -} - -func init() { - t["GuestOperationsUnavailable"] = reflect.TypeOf((*GuestOperationsUnavailable)(nil)).Elem() -} - -type GuestOperationsUnavailableFault GuestOperationsUnavailable - -func init() { - t["GuestOperationsUnavailableFault"] = reflect.TypeOf((*GuestOperationsUnavailableFault)(nil)).Elem() -} - -type GuestOsDescriptor struct { - DynamicData - - Id string `xml:"id"` - Family string `xml:"family"` - FullName string `xml:"fullName"` - SupportedMaxCPUs int32 `xml:"supportedMaxCPUs"` - NumSupportedPhysicalSockets int32 `xml:"numSupportedPhysicalSockets,omitempty"` - NumSupportedCoresPerSocket int32 `xml:"numSupportedCoresPerSocket,omitempty"` - SupportedMinMemMB int32 `xml:"supportedMinMemMB"` - SupportedMaxMemMB int32 `xml:"supportedMaxMemMB"` - RecommendedMemMB int32 `xml:"recommendedMemMB"` - RecommendedColorDepth int32 `xml:"recommendedColorDepth"` - SupportedDiskControllerList []string `xml:"supportedDiskControllerList"` - RecommendedSCSIController string `xml:"recommendedSCSIController,omitempty"` - RecommendedDiskController string `xml:"recommendedDiskController"` - SupportedNumDisks int32 `xml:"supportedNumDisks"` - RecommendedDiskSizeMB int32 `xml:"recommendedDiskSizeMB"` - RecommendedCdromController string `xml:"recommendedCdromController,omitempty"` - SupportedEthernetCard []string `xml:"supportedEthernetCard"` - RecommendedEthernetCard string `xml:"recommendedEthernetCard,omitempty"` - SupportsSlaveDisk *bool `xml:"supportsSlaveDisk"` - CpuFeatureMask []HostCpuIdInfo `xml:"cpuFeatureMask,omitempty"` - SmcRequired *bool `xml:"smcRequired"` - SupportsWakeOnLan bool `xml:"supportsWakeOnLan"` - SupportsVMI *bool `xml:"supportsVMI"` - SupportsMemoryHotAdd *bool `xml:"supportsMemoryHotAdd"` - SupportsCpuHotAdd *bool `xml:"supportsCpuHotAdd"` - SupportsCpuHotRemove *bool `xml:"supportsCpuHotRemove"` - SupportedFirmware []string `xml:"supportedFirmware,omitempty"` - RecommendedFirmware string `xml:"recommendedFirmware,omitempty"` - SupportedUSBControllerList []string `xml:"supportedUSBControllerList,omitempty"` - RecommendedUSBController string `xml:"recommendedUSBController,omitempty"` - Supports3D *bool `xml:"supports3D"` - Recommended3D *bool `xml:"recommended3D"` - SmcRecommended *bool `xml:"smcRecommended"` - Ich7mRecommended *bool `xml:"ich7mRecommended"` - UsbRecommended *bool `xml:"usbRecommended"` - SupportLevel string `xml:"supportLevel,omitempty"` - SupportedForCreate *bool `xml:"supportedForCreate"` - VRAMSizeInKB *IntOption `xml:"vRAMSizeInKB,omitempty"` - NumSupportedFloppyDevices int32 `xml:"numSupportedFloppyDevices,omitempty"` - WakeOnLanEthernetCard []string `xml:"wakeOnLanEthernetCard,omitempty"` - SupportsPvscsiControllerForBoot *bool `xml:"supportsPvscsiControllerForBoot"` - DiskUuidEnabled *bool `xml:"diskUuidEnabled"` - SupportsHotPlugPCI *bool `xml:"supportsHotPlugPCI"` -} - -func init() { - t["GuestOsDescriptor"] = reflect.TypeOf((*GuestOsDescriptor)(nil)).Elem() -} - -type GuestPermissionDenied struct { - GuestOperationsFault -} - -func init() { - t["GuestPermissionDenied"] = reflect.TypeOf((*GuestPermissionDenied)(nil)).Elem() -} - -type GuestPermissionDeniedFault GuestPermissionDenied - -func init() { - t["GuestPermissionDeniedFault"] = reflect.TypeOf((*GuestPermissionDeniedFault)(nil)).Elem() -} - -type GuestPosixFileAttributes struct { - GuestFileAttributes - - OwnerId int32 `xml:"ownerId,omitempty"` - GroupId int32 `xml:"groupId,omitempty"` - Permissions int64 `xml:"permissions,omitempty"` -} - -func init() { - t["GuestPosixFileAttributes"] = reflect.TypeOf((*GuestPosixFileAttributes)(nil)).Elem() -} - -type GuestProcessInfo struct { - DynamicData - - Name string `xml:"name"` - Pid int64 `xml:"pid"` - Owner string `xml:"owner"` - CmdLine string `xml:"cmdLine"` - StartTime time.Time `xml:"startTime"` - EndTime *time.Time `xml:"endTime"` - ExitCode int32 `xml:"exitCode,omitempty"` -} - -func init() { - t["GuestProcessInfo"] = reflect.TypeOf((*GuestProcessInfo)(nil)).Elem() -} - -type GuestProcessNotFound struct { - GuestOperationsFault - - Pid int64 `xml:"pid"` -} - -func init() { - t["GuestProcessNotFound"] = reflect.TypeOf((*GuestProcessNotFound)(nil)).Elem() -} - -type GuestProcessNotFoundFault GuestProcessNotFound - -func init() { - t["GuestProcessNotFoundFault"] = reflect.TypeOf((*GuestProcessNotFoundFault)(nil)).Elem() -} - -type GuestProgramSpec struct { - DynamicData - - ProgramPath string `xml:"programPath"` - Arguments string `xml:"arguments"` - WorkingDirectory string `xml:"workingDirectory,omitempty"` - EnvVariables []string `xml:"envVariables,omitempty"` -} - -func init() { - t["GuestProgramSpec"] = reflect.TypeOf((*GuestProgramSpec)(nil)).Elem() -} - -type GuestRegKeyNameSpec struct { - DynamicData - - RegistryPath string `xml:"registryPath"` - WowBitness string `xml:"wowBitness"` -} - -func init() { - t["GuestRegKeyNameSpec"] = reflect.TypeOf((*GuestRegKeyNameSpec)(nil)).Elem() -} - -type GuestRegKeyRecordSpec struct { - DynamicData - - Key GuestRegKeySpec `xml:"key"` - Fault *LocalizedMethodFault `xml:"fault,omitempty"` -} - -func init() { - t["GuestRegKeyRecordSpec"] = reflect.TypeOf((*GuestRegKeyRecordSpec)(nil)).Elem() -} - -type GuestRegKeySpec struct { - DynamicData - - KeyName GuestRegKeyNameSpec `xml:"keyName"` - ClassType string `xml:"classType"` - LastWritten time.Time `xml:"lastWritten"` -} - -func init() { - t["GuestRegKeySpec"] = reflect.TypeOf((*GuestRegKeySpec)(nil)).Elem() -} - -type GuestRegValueBinarySpec struct { - GuestRegValueDataSpec - - Value []byte `xml:"value,omitempty"` -} - -func init() { - t["GuestRegValueBinarySpec"] = reflect.TypeOf((*GuestRegValueBinarySpec)(nil)).Elem() -} - -type GuestRegValueDataSpec struct { - DynamicData -} - -func init() { - t["GuestRegValueDataSpec"] = reflect.TypeOf((*GuestRegValueDataSpec)(nil)).Elem() -} - -type GuestRegValueDwordSpec struct { - GuestRegValueDataSpec - - Value int32 `xml:"value"` -} - -func init() { - t["GuestRegValueDwordSpec"] = reflect.TypeOf((*GuestRegValueDwordSpec)(nil)).Elem() -} - -type GuestRegValueExpandStringSpec struct { - GuestRegValueDataSpec - - Value string `xml:"value,omitempty"` -} - -func init() { - t["GuestRegValueExpandStringSpec"] = reflect.TypeOf((*GuestRegValueExpandStringSpec)(nil)).Elem() -} - -type GuestRegValueMultiStringSpec struct { - GuestRegValueDataSpec - - Value []string `xml:"value,omitempty"` -} - -func init() { - t["GuestRegValueMultiStringSpec"] = reflect.TypeOf((*GuestRegValueMultiStringSpec)(nil)).Elem() -} - -type GuestRegValueNameSpec struct { - DynamicData - - KeyName GuestRegKeyNameSpec `xml:"keyName"` - Name string `xml:"name"` -} - -func init() { - t["GuestRegValueNameSpec"] = reflect.TypeOf((*GuestRegValueNameSpec)(nil)).Elem() -} - -type GuestRegValueQwordSpec struct { - GuestRegValueDataSpec - - Value int64 `xml:"value"` -} - -func init() { - t["GuestRegValueQwordSpec"] = reflect.TypeOf((*GuestRegValueQwordSpec)(nil)).Elem() -} - -type GuestRegValueSpec struct { - DynamicData - - Name GuestRegValueNameSpec `xml:"name"` - Data BaseGuestRegValueDataSpec `xml:"data,typeattr"` -} - -func init() { - t["GuestRegValueSpec"] = reflect.TypeOf((*GuestRegValueSpec)(nil)).Elem() -} - -type GuestRegValueStringSpec struct { - GuestRegValueDataSpec - - Value string `xml:"value,omitempty"` -} - -func init() { - t["GuestRegValueStringSpec"] = reflect.TypeOf((*GuestRegValueStringSpec)(nil)).Elem() -} - -type GuestRegistryFault struct { - GuestOperationsFault - - WindowsSystemErrorCode int64 `xml:"windowsSystemErrorCode"` -} - -func init() { - t["GuestRegistryFault"] = reflect.TypeOf((*GuestRegistryFault)(nil)).Elem() -} - -type GuestRegistryFaultFault BaseGuestRegistryFault - -func init() { - t["GuestRegistryFaultFault"] = reflect.TypeOf((*GuestRegistryFaultFault)(nil)).Elem() -} - -type GuestRegistryKeyAlreadyExists struct { - GuestRegistryKeyFault -} - -func init() { - t["GuestRegistryKeyAlreadyExists"] = reflect.TypeOf((*GuestRegistryKeyAlreadyExists)(nil)).Elem() -} - -type GuestRegistryKeyAlreadyExistsFault GuestRegistryKeyAlreadyExists - -func init() { - t["GuestRegistryKeyAlreadyExistsFault"] = reflect.TypeOf((*GuestRegistryKeyAlreadyExistsFault)(nil)).Elem() -} - -type GuestRegistryKeyFault struct { - GuestRegistryFault - - KeyName string `xml:"keyName"` -} - -func init() { - t["GuestRegistryKeyFault"] = reflect.TypeOf((*GuestRegistryKeyFault)(nil)).Elem() -} - -type GuestRegistryKeyFaultFault BaseGuestRegistryKeyFault - -func init() { - t["GuestRegistryKeyFaultFault"] = reflect.TypeOf((*GuestRegistryKeyFaultFault)(nil)).Elem() -} - -type GuestRegistryKeyHasSubkeys struct { - GuestRegistryKeyFault -} - -func init() { - t["GuestRegistryKeyHasSubkeys"] = reflect.TypeOf((*GuestRegistryKeyHasSubkeys)(nil)).Elem() -} - -type GuestRegistryKeyHasSubkeysFault GuestRegistryKeyHasSubkeys - -func init() { - t["GuestRegistryKeyHasSubkeysFault"] = reflect.TypeOf((*GuestRegistryKeyHasSubkeysFault)(nil)).Elem() -} - -type GuestRegistryKeyInvalid struct { - GuestRegistryKeyFault -} - -func init() { - t["GuestRegistryKeyInvalid"] = reflect.TypeOf((*GuestRegistryKeyInvalid)(nil)).Elem() -} - -type GuestRegistryKeyInvalidFault GuestRegistryKeyInvalid - -func init() { - t["GuestRegistryKeyInvalidFault"] = reflect.TypeOf((*GuestRegistryKeyInvalidFault)(nil)).Elem() -} - -type GuestRegistryKeyParentVolatile struct { - GuestRegistryKeyFault -} - -func init() { - t["GuestRegistryKeyParentVolatile"] = reflect.TypeOf((*GuestRegistryKeyParentVolatile)(nil)).Elem() -} - -type GuestRegistryKeyParentVolatileFault GuestRegistryKeyParentVolatile - -func init() { - t["GuestRegistryKeyParentVolatileFault"] = reflect.TypeOf((*GuestRegistryKeyParentVolatileFault)(nil)).Elem() -} - -type GuestRegistryValueFault struct { - GuestRegistryFault - - KeyName string `xml:"keyName"` - ValueName string `xml:"valueName"` -} - -func init() { - t["GuestRegistryValueFault"] = reflect.TypeOf((*GuestRegistryValueFault)(nil)).Elem() -} - -type GuestRegistryValueFaultFault BaseGuestRegistryValueFault - -func init() { - t["GuestRegistryValueFaultFault"] = reflect.TypeOf((*GuestRegistryValueFaultFault)(nil)).Elem() -} - -type GuestRegistryValueNotFound struct { - GuestRegistryValueFault -} - -func init() { - t["GuestRegistryValueNotFound"] = reflect.TypeOf((*GuestRegistryValueNotFound)(nil)).Elem() -} - -type GuestRegistryValueNotFoundFault GuestRegistryValueNotFound - -func init() { - t["GuestRegistryValueNotFoundFault"] = reflect.TypeOf((*GuestRegistryValueNotFoundFault)(nil)).Elem() -} - -type GuestScreenInfo struct { - DynamicData - - Width int32 `xml:"width"` - Height int32 `xml:"height"` -} - -func init() { - t["GuestScreenInfo"] = reflect.TypeOf((*GuestScreenInfo)(nil)).Elem() -} - -type GuestStackInfo struct { - DynamicData - - DnsConfig *NetDnsConfigInfo `xml:"dnsConfig,omitempty"` - IpRouteConfig *NetIpRouteConfigInfo `xml:"ipRouteConfig,omitempty"` - IpStackConfig []KeyValue `xml:"ipStackConfig,omitempty"` - DhcpConfig *NetDhcpConfigInfo `xml:"dhcpConfig,omitempty"` -} - -func init() { - t["GuestStackInfo"] = reflect.TypeOf((*GuestStackInfo)(nil)).Elem() -} - -type GuestWindowsFileAttributes struct { - GuestFileAttributes - - Hidden *bool `xml:"hidden"` - ReadOnly *bool `xml:"readOnly"` - CreateTime *time.Time `xml:"createTime"` -} - -func init() { - t["GuestWindowsFileAttributes"] = reflect.TypeOf((*GuestWindowsFileAttributes)(nil)).Elem() -} - -type GuestWindowsProgramSpec struct { - GuestProgramSpec - - StartMinimized bool `xml:"startMinimized"` -} - -func init() { - t["GuestWindowsProgramSpec"] = reflect.TypeOf((*GuestWindowsProgramSpec)(nil)).Elem() -} - -type HAErrorsAtDest struct { - MigrationFault -} - -func init() { - t["HAErrorsAtDest"] = reflect.TypeOf((*HAErrorsAtDest)(nil)).Elem() -} - -type HAErrorsAtDestFault HAErrorsAtDest - -func init() { - t["HAErrorsAtDestFault"] = reflect.TypeOf((*HAErrorsAtDestFault)(nil)).Elem() -} - -type HasPrivilegeOnEntities HasPrivilegeOnEntitiesRequestType - -func init() { - t["HasPrivilegeOnEntities"] = reflect.TypeOf((*HasPrivilegeOnEntities)(nil)).Elem() -} - -type HasPrivilegeOnEntitiesRequestType struct { - This ManagedObjectReference `xml:"_this"` - Entity []ManagedObjectReference `xml:"entity"` - SessionId string `xml:"sessionId"` - PrivId []string `xml:"privId,omitempty"` -} - -func init() { - t["HasPrivilegeOnEntitiesRequestType"] = reflect.TypeOf((*HasPrivilegeOnEntitiesRequestType)(nil)).Elem() -} - -type HasPrivilegeOnEntitiesResponse struct { - Returnval []EntityPrivilege `xml:"returnval,omitempty"` -} - -type HasPrivilegeOnEntity HasPrivilegeOnEntityRequestType - -func init() { - t["HasPrivilegeOnEntity"] = reflect.TypeOf((*HasPrivilegeOnEntity)(nil)).Elem() -} - -type HasPrivilegeOnEntityRequestType struct { - This ManagedObjectReference `xml:"_this"` - Entity ManagedObjectReference `xml:"entity"` - SessionId string `xml:"sessionId"` - PrivId []string `xml:"privId,omitempty"` -} - -func init() { - t["HasPrivilegeOnEntityRequestType"] = reflect.TypeOf((*HasPrivilegeOnEntityRequestType)(nil)).Elem() -} - -type HasPrivilegeOnEntityResponse struct { - Returnval []bool `xml:"returnval,omitempty"` -} - -type HbrDiskMigrationAction struct { - ClusterAction - - CollectionId string `xml:"collectionId"` - CollectionName string `xml:"collectionName"` - DiskIds []string `xml:"diskIds"` - Source ManagedObjectReference `xml:"source"` - Destination ManagedObjectReference `xml:"destination"` - SizeTransferred int64 `xml:"sizeTransferred"` - SpaceUtilSrcBefore float32 `xml:"spaceUtilSrcBefore,omitempty"` - SpaceUtilDstBefore float32 `xml:"spaceUtilDstBefore,omitempty"` - SpaceUtilSrcAfter float32 `xml:"spaceUtilSrcAfter,omitempty"` - SpaceUtilDstAfter float32 `xml:"spaceUtilDstAfter,omitempty"` - IoLatencySrcBefore float32 `xml:"ioLatencySrcBefore,omitempty"` - IoLatencyDstBefore float32 `xml:"ioLatencyDstBefore,omitempty"` -} - -func init() { - t["HbrDiskMigrationAction"] = reflect.TypeOf((*HbrDiskMigrationAction)(nil)).Elem() -} - -type HbrManagerReplicationVmInfo struct { - DynamicData - - State string `xml:"state"` - ProgressInfo *ReplicationVmProgressInfo `xml:"progressInfo,omitempty"` - ImageId string `xml:"imageId,omitempty"` - LastError *LocalizedMethodFault `xml:"lastError,omitempty"` -} - -func init() { - t["HbrManagerReplicationVmInfo"] = reflect.TypeOf((*HbrManagerReplicationVmInfo)(nil)).Elem() -} - -type HbrManagerVmReplicationCapability struct { - DynamicData - - Vm ManagedObjectReference `xml:"vm"` - SupportedQuiesceMode string `xml:"supportedQuiesceMode"` - CompressionSupported bool `xml:"compressionSupported"` - MaxSupportedSourceDiskCapacity int64 `xml:"maxSupportedSourceDiskCapacity"` - MinRpo int64 `xml:"minRpo,omitempty"` - Fault *LocalizedMethodFault `xml:"fault,omitempty"` -} - -func init() { - t["HbrManagerVmReplicationCapability"] = reflect.TypeOf((*HbrManagerVmReplicationCapability)(nil)).Elem() -} - -type HealthStatusChangedEvent struct { - Event - - ComponentId string `xml:"componentId"` - OldStatus string `xml:"oldStatus"` - NewStatus string `xml:"newStatus"` - ComponentName string `xml:"componentName"` - ServiceId string `xml:"serviceId,omitempty"` -} - -func init() { - t["HealthStatusChangedEvent"] = reflect.TypeOf((*HealthStatusChangedEvent)(nil)).Elem() -} - -type HealthSystemRuntime struct { - DynamicData - - SystemHealthInfo *HostSystemHealthInfo `xml:"systemHealthInfo,omitempty"` - HardwareStatusInfo *HostHardwareStatusInfo `xml:"hardwareStatusInfo,omitempty"` -} - -func init() { - t["HealthSystemRuntime"] = reflect.TypeOf((*HealthSystemRuntime)(nil)).Elem() -} - -type HeterogenousHostsBlockingEVC struct { - EVCConfigFault -} - -func init() { - t["HeterogenousHostsBlockingEVC"] = reflect.TypeOf((*HeterogenousHostsBlockingEVC)(nil)).Elem() -} - -type HeterogenousHostsBlockingEVCFault HeterogenousHostsBlockingEVC - -func init() { - t["HeterogenousHostsBlockingEVCFault"] = reflect.TypeOf((*HeterogenousHostsBlockingEVCFault)(nil)).Elem() -} - -type HostAccessControlEntry struct { - DynamicData - - Principal string `xml:"principal"` - Group bool `xml:"group"` - AccessMode HostAccessMode `xml:"accessMode"` -} - -func init() { - t["HostAccessControlEntry"] = reflect.TypeOf((*HostAccessControlEntry)(nil)).Elem() -} - -type HostAccessRestrictedToManagementServer struct { - NotSupported - - ManagementServer string `xml:"managementServer"` -} - -func init() { - t["HostAccessRestrictedToManagementServer"] = reflect.TypeOf((*HostAccessRestrictedToManagementServer)(nil)).Elem() -} - -type HostAccessRestrictedToManagementServerFault HostAccessRestrictedToManagementServer - -func init() { - t["HostAccessRestrictedToManagementServerFault"] = reflect.TypeOf((*HostAccessRestrictedToManagementServerFault)(nil)).Elem() -} - -type HostAccountSpec struct { - DynamicData - - Id string `xml:"id"` - Password string `xml:"password,omitempty"` - Description string `xml:"description,omitempty"` -} - -func init() { - t["HostAccountSpec"] = reflect.TypeOf((*HostAccountSpec)(nil)).Elem() -} - -type HostActiveDirectory struct { - DynamicData - - ChangeOperation string `xml:"changeOperation"` - Spec *HostActiveDirectorySpec `xml:"spec,omitempty"` -} - -func init() { - t["HostActiveDirectory"] = reflect.TypeOf((*HostActiveDirectory)(nil)).Elem() -} - -type HostActiveDirectoryInfo struct { - HostDirectoryStoreInfo - - JoinedDomain string `xml:"joinedDomain,omitempty"` - TrustedDomain []string `xml:"trustedDomain,omitempty"` - DomainMembershipStatus string `xml:"domainMembershipStatus,omitempty"` - SmartCardAuthenticationEnabled *bool `xml:"smartCardAuthenticationEnabled"` -} - -func init() { - t["HostActiveDirectoryInfo"] = reflect.TypeOf((*HostActiveDirectoryInfo)(nil)).Elem() -} - -type HostActiveDirectorySpec struct { - DynamicData - - DomainName string `xml:"domainName,omitempty"` - UserName string `xml:"userName,omitempty"` - Password string `xml:"password,omitempty"` - CamServer string `xml:"camServer,omitempty"` - Thumbprint string `xml:"thumbprint,omitempty"` - SmartCardAuthenticationEnabled *bool `xml:"smartCardAuthenticationEnabled"` - SmartCardTrustAnchors []string `xml:"smartCardTrustAnchors,omitempty"` -} - -func init() { - t["HostActiveDirectorySpec"] = reflect.TypeOf((*HostActiveDirectorySpec)(nil)).Elem() -} - -type HostAddFailedEvent struct { - HostEvent - - Hostname string `xml:"hostname"` -} - -func init() { - t["HostAddFailedEvent"] = reflect.TypeOf((*HostAddFailedEvent)(nil)).Elem() -} - -type HostAddedEvent struct { - HostEvent -} - -func init() { - t["HostAddedEvent"] = reflect.TypeOf((*HostAddedEvent)(nil)).Elem() -} - -type HostAdminDisableEvent struct { - HostEvent -} - -func init() { - t["HostAdminDisableEvent"] = reflect.TypeOf((*HostAdminDisableEvent)(nil)).Elem() -} - -type HostAdminEnableEvent struct { - HostEvent -} - -func init() { - t["HostAdminEnableEvent"] = reflect.TypeOf((*HostAdminEnableEvent)(nil)).Elem() -} - -type HostApplyProfile struct { - ApplyProfile - - Memory *HostMemoryProfile `xml:"memory,omitempty"` - Storage *StorageProfile `xml:"storage,omitempty"` - Network *NetworkProfile `xml:"network,omitempty"` - Datetime *DateTimeProfile `xml:"datetime,omitempty"` - Firewall *FirewallProfile `xml:"firewall,omitempty"` - Security *SecurityProfile `xml:"security,omitempty"` - Service []ServiceProfile `xml:"service,omitempty"` - Option []OptionProfile `xml:"option,omitempty"` - UserAccount []UserProfile `xml:"userAccount,omitempty"` - UsergroupAccount []UserGroupProfile `xml:"usergroupAccount,omitempty"` - Authentication *AuthenticationProfile `xml:"authentication,omitempty"` -} - -func init() { - t["HostApplyProfile"] = reflect.TypeOf((*HostApplyProfile)(nil)).Elem() -} - -type HostAuthenticationManagerInfo struct { - DynamicData - - AuthConfig []BaseHostAuthenticationStoreInfo `xml:"authConfig,typeattr"` -} - -func init() { - t["HostAuthenticationManagerInfo"] = reflect.TypeOf((*HostAuthenticationManagerInfo)(nil)).Elem() -} - -type HostAuthenticationStoreInfo struct { - DynamicData - - Enabled bool `xml:"enabled"` -} - -func init() { - t["HostAuthenticationStoreInfo"] = reflect.TypeOf((*HostAuthenticationStoreInfo)(nil)).Elem() -} - -type HostAutoStartManagerConfig struct { - DynamicData - - Defaults *AutoStartDefaults `xml:"defaults,omitempty"` - PowerInfo []AutoStartPowerInfo `xml:"powerInfo,omitempty"` -} - -func init() { - t["HostAutoStartManagerConfig"] = reflect.TypeOf((*HostAutoStartManagerConfig)(nil)).Elem() -} - -type HostBIOSInfo struct { - DynamicData - - BiosVersion string `xml:"biosVersion,omitempty"` - ReleaseDate *time.Time `xml:"releaseDate"` -} - -func init() { - t["HostBIOSInfo"] = reflect.TypeOf((*HostBIOSInfo)(nil)).Elem() -} - -type HostBlockAdapterTargetTransport struct { - HostTargetTransport -} - -func init() { - t["HostBlockAdapterTargetTransport"] = reflect.TypeOf((*HostBlockAdapterTargetTransport)(nil)).Elem() -} - -type HostBlockHba struct { - HostHostBusAdapter -} - -func init() { - t["HostBlockHba"] = reflect.TypeOf((*HostBlockHba)(nil)).Elem() -} - -type HostBootDevice struct { - DynamicData - - Key string `xml:"key"` - Description string `xml:"description"` -} - -func init() { - t["HostBootDevice"] = reflect.TypeOf((*HostBootDevice)(nil)).Elem() -} - -type HostBootDeviceInfo struct { - DynamicData - - BootDevices []HostBootDevice `xml:"bootDevices,omitempty"` - CurrentBootDeviceKey string `xml:"currentBootDeviceKey,omitempty"` -} - -func init() { - t["HostBootDeviceInfo"] = reflect.TypeOf((*HostBootDeviceInfo)(nil)).Elem() -} - -type HostCacheConfigurationInfo struct { - DynamicData - - Key ManagedObjectReference `xml:"key"` - SwapSize int64 `xml:"swapSize"` -} - -func init() { - t["HostCacheConfigurationInfo"] = reflect.TypeOf((*HostCacheConfigurationInfo)(nil)).Elem() -} - -type HostCacheConfigurationSpec struct { - DynamicData - - Datastore ManagedObjectReference `xml:"datastore"` - SwapSize int64 `xml:"swapSize"` -} - -func init() { - t["HostCacheConfigurationSpec"] = reflect.TypeOf((*HostCacheConfigurationSpec)(nil)).Elem() -} - -type HostCapability struct { - DynamicData - - RecursiveResourcePoolsSupported bool `xml:"recursiveResourcePoolsSupported"` - CpuMemoryResourceConfigurationSupported bool `xml:"cpuMemoryResourceConfigurationSupported"` - RebootSupported bool `xml:"rebootSupported"` - ShutdownSupported bool `xml:"shutdownSupported"` - VmotionSupported bool `xml:"vmotionSupported"` - StandbySupported bool `xml:"standbySupported"` - IpmiSupported *bool `xml:"ipmiSupported"` - MaxSupportedVMs int32 `xml:"maxSupportedVMs,omitempty"` - MaxRunningVMs int32 `xml:"maxRunningVMs,omitempty"` - MaxSupportedVcpus int32 `xml:"maxSupportedVcpus,omitempty"` - MaxRegisteredVMs int32 `xml:"maxRegisteredVMs,omitempty"` - DatastorePrincipalSupported bool `xml:"datastorePrincipalSupported"` - SanSupported bool `xml:"sanSupported"` - NfsSupported bool `xml:"nfsSupported"` - IscsiSupported bool `xml:"iscsiSupported"` - VlanTaggingSupported bool `xml:"vlanTaggingSupported"` - NicTeamingSupported bool `xml:"nicTeamingSupported"` - HighGuestMemSupported bool `xml:"highGuestMemSupported"` - MaintenanceModeSupported bool `xml:"maintenanceModeSupported"` - SuspendedRelocateSupported bool `xml:"suspendedRelocateSupported"` - RestrictedSnapshotRelocateSupported bool `xml:"restrictedSnapshotRelocateSupported"` - PerVmSwapFiles bool `xml:"perVmSwapFiles"` - LocalSwapDatastoreSupported bool `xml:"localSwapDatastoreSupported"` - UnsharedSwapVMotionSupported bool `xml:"unsharedSwapVMotionSupported"` - BackgroundSnapshotsSupported bool `xml:"backgroundSnapshotsSupported"` - PreAssignedPCIUnitNumbersSupported bool `xml:"preAssignedPCIUnitNumbersSupported"` - ScreenshotSupported bool `xml:"screenshotSupported"` - ScaledScreenshotSupported bool `xml:"scaledScreenshotSupported"` - StorageVMotionSupported *bool `xml:"storageVMotionSupported"` - VmotionWithStorageVMotionSupported *bool `xml:"vmotionWithStorageVMotionSupported"` - VmotionAcrossNetworkSupported *bool `xml:"vmotionAcrossNetworkSupported"` - MaxNumDisksSVMotion int32 `xml:"maxNumDisksSVMotion,omitempty"` - HbrNicSelectionSupported *bool `xml:"hbrNicSelectionSupported"` - VrNfcNicSelectionSupported *bool `xml:"vrNfcNicSelectionSupported"` - RecordReplaySupported *bool `xml:"recordReplaySupported"` - FtSupported *bool `xml:"ftSupported"` - ReplayUnsupportedReason string `xml:"replayUnsupportedReason,omitempty"` - ReplayCompatibilityIssues []string `xml:"replayCompatibilityIssues,omitempty"` - SmpFtSupported *bool `xml:"smpFtSupported"` - FtCompatibilityIssues []string `xml:"ftCompatibilityIssues,omitempty"` - SmpFtCompatibilityIssues []string `xml:"smpFtCompatibilityIssues,omitempty"` - MaxVcpusPerFtVm int32 `xml:"maxVcpusPerFtVm,omitempty"` - LoginBySSLThumbprintSupported *bool `xml:"loginBySSLThumbprintSupported"` - CloneFromSnapshotSupported *bool `xml:"cloneFromSnapshotSupported"` - DeltaDiskBackingsSupported *bool `xml:"deltaDiskBackingsSupported"` - PerVMNetworkTrafficShapingSupported *bool `xml:"perVMNetworkTrafficShapingSupported"` - TpmSupported *bool `xml:"tpmSupported"` - SupportedCpuFeature []HostCpuIdInfo `xml:"supportedCpuFeature,omitempty"` - VirtualExecUsageSupported *bool `xml:"virtualExecUsageSupported"` - StorageIORMSupported *bool `xml:"storageIORMSupported"` - VmDirectPathGen2Supported *bool `xml:"vmDirectPathGen2Supported"` - VmDirectPathGen2UnsupportedReason []string `xml:"vmDirectPathGen2UnsupportedReason,omitempty"` - VmDirectPathGen2UnsupportedReasonExtended string `xml:"vmDirectPathGen2UnsupportedReasonExtended,omitempty"` - SupportedVmfsMajorVersion []int32 `xml:"supportedVmfsMajorVersion,omitempty"` - VStorageCapable *bool `xml:"vStorageCapable"` - SnapshotRelayoutSupported *bool `xml:"snapshotRelayoutSupported"` - FirewallIpRulesSupported *bool `xml:"firewallIpRulesSupported"` - ServicePackageInfoSupported *bool `xml:"servicePackageInfoSupported"` - MaxHostRunningVms int32 `xml:"maxHostRunningVms,omitempty"` - MaxHostSupportedVcpus int32 `xml:"maxHostSupportedVcpus,omitempty"` - VmfsDatastoreMountCapable *bool `xml:"vmfsDatastoreMountCapable"` - EightPlusHostVmfsSharedAccessSupported *bool `xml:"eightPlusHostVmfsSharedAccessSupported"` - NestedHVSupported *bool `xml:"nestedHVSupported"` - VPMCSupported *bool `xml:"vPMCSupported"` - InterVMCommunicationThroughVMCISupported *bool `xml:"interVMCommunicationThroughVMCISupported"` - ScheduledHardwareUpgradeSupported *bool `xml:"scheduledHardwareUpgradeSupported"` - FeatureCapabilitiesSupported *bool `xml:"featureCapabilitiesSupported"` - LatencySensitivitySupported *bool `xml:"latencySensitivitySupported"` - StoragePolicySupported *bool `xml:"storagePolicySupported"` - Accel3dSupported *bool `xml:"accel3dSupported"` - ReliableMemoryAware *bool `xml:"reliableMemoryAware"` - MultipleNetworkStackInstanceSupported *bool `xml:"multipleNetworkStackInstanceSupported"` - MessageBusProxySupported *bool `xml:"messageBusProxySupported"` - VsanSupported *bool `xml:"vsanSupported"` - VFlashSupported *bool `xml:"vFlashSupported"` - HostAccessManagerSupported *bool `xml:"hostAccessManagerSupported"` - ProvisioningNicSelectionSupported *bool `xml:"provisioningNicSelectionSupported"` - Nfs41Supported *bool `xml:"nfs41Supported"` - TurnDiskLocatorLedSupported *bool `xml:"turnDiskLocatorLedSupported"` - VirtualVolumeDatastoreSupported *bool `xml:"virtualVolumeDatastoreSupported"` - MarkAsSsdSupported *bool `xml:"markAsSsdSupported"` - MarkAsLocalSupported *bool `xml:"markAsLocalSupported"` - SmartCardAuthenticationSupported *bool `xml:"smartCardAuthenticationSupported"` -} - -func init() { - t["HostCapability"] = reflect.TypeOf((*HostCapability)(nil)).Elem() -} - -type HostCertificateManagerCertificateInfo struct { - DynamicData - - Issuer string `xml:"issuer,omitempty"` - NotBefore *time.Time `xml:"notBefore"` - NotAfter *time.Time `xml:"notAfter"` - Subject string `xml:"subject,omitempty"` - Status string `xml:"status"` -} - -func init() { - t["HostCertificateManagerCertificateInfo"] = reflect.TypeOf((*HostCertificateManagerCertificateInfo)(nil)).Elem() -} - -type HostCnxFailedAccountFailedEvent struct { - HostEvent -} - -func init() { - t["HostCnxFailedAccountFailedEvent"] = reflect.TypeOf((*HostCnxFailedAccountFailedEvent)(nil)).Elem() -} - -type HostCnxFailedAlreadyManagedEvent struct { - HostEvent - - ServerName string `xml:"serverName"` -} - -func init() { - t["HostCnxFailedAlreadyManagedEvent"] = reflect.TypeOf((*HostCnxFailedAlreadyManagedEvent)(nil)).Elem() -} - -type HostCnxFailedBadCcagentEvent struct { - HostEvent -} - -func init() { - t["HostCnxFailedBadCcagentEvent"] = reflect.TypeOf((*HostCnxFailedBadCcagentEvent)(nil)).Elem() -} - -type HostCnxFailedBadUsernameEvent struct { - HostEvent -} - -func init() { - t["HostCnxFailedBadUsernameEvent"] = reflect.TypeOf((*HostCnxFailedBadUsernameEvent)(nil)).Elem() -} - -type HostCnxFailedBadVersionEvent struct { - HostEvent -} - -func init() { - t["HostCnxFailedBadVersionEvent"] = reflect.TypeOf((*HostCnxFailedBadVersionEvent)(nil)).Elem() -} - -type HostCnxFailedCcagentUpgradeEvent struct { - HostEvent -} - -func init() { - t["HostCnxFailedCcagentUpgradeEvent"] = reflect.TypeOf((*HostCnxFailedCcagentUpgradeEvent)(nil)).Elem() -} - -type HostCnxFailedEvent struct { - HostEvent -} - -func init() { - t["HostCnxFailedEvent"] = reflect.TypeOf((*HostCnxFailedEvent)(nil)).Elem() -} - -type HostCnxFailedNetworkErrorEvent struct { - HostEvent -} - -func init() { - t["HostCnxFailedNetworkErrorEvent"] = reflect.TypeOf((*HostCnxFailedNetworkErrorEvent)(nil)).Elem() -} - -type HostCnxFailedNoAccessEvent struct { - HostEvent -} - -func init() { - t["HostCnxFailedNoAccessEvent"] = reflect.TypeOf((*HostCnxFailedNoAccessEvent)(nil)).Elem() -} - -type HostCnxFailedNoConnectionEvent struct { - HostEvent -} - -func init() { - t["HostCnxFailedNoConnectionEvent"] = reflect.TypeOf((*HostCnxFailedNoConnectionEvent)(nil)).Elem() -} - -type HostCnxFailedNoLicenseEvent struct { - HostEvent -} - -func init() { - t["HostCnxFailedNoLicenseEvent"] = reflect.TypeOf((*HostCnxFailedNoLicenseEvent)(nil)).Elem() -} - -type HostCnxFailedNotFoundEvent struct { - HostEvent -} - -func init() { - t["HostCnxFailedNotFoundEvent"] = reflect.TypeOf((*HostCnxFailedNotFoundEvent)(nil)).Elem() -} - -type HostCnxFailedTimeoutEvent struct { - HostEvent -} - -func init() { - t["HostCnxFailedTimeoutEvent"] = reflect.TypeOf((*HostCnxFailedTimeoutEvent)(nil)).Elem() -} - -type HostCommunication struct { - RuntimeFault -} - -func init() { - t["HostCommunication"] = reflect.TypeOf((*HostCommunication)(nil)).Elem() -} - -type HostCommunicationFault BaseHostCommunication - -func init() { - t["HostCommunicationFault"] = reflect.TypeOf((*HostCommunicationFault)(nil)).Elem() -} - -type HostComplianceCheckedEvent struct { - HostEvent - - Profile ProfileEventArgument `xml:"profile"` -} - -func init() { - t["HostComplianceCheckedEvent"] = reflect.TypeOf((*HostComplianceCheckedEvent)(nil)).Elem() -} - -type HostCompliantEvent struct { - HostEvent -} - -func init() { - t["HostCompliantEvent"] = reflect.TypeOf((*HostCompliantEvent)(nil)).Elem() -} - -type HostConfigAppliedEvent struct { - HostEvent -} - -func init() { - t["HostConfigAppliedEvent"] = reflect.TypeOf((*HostConfigAppliedEvent)(nil)).Elem() -} - -type HostConfigChange struct { - DynamicData -} - -func init() { - t["HostConfigChange"] = reflect.TypeOf((*HostConfigChange)(nil)).Elem() -} - -type HostConfigFailed struct { - HostConfigFault - - Failure []LocalizedMethodFault `xml:"failure"` -} - -func init() { - t["HostConfigFailed"] = reflect.TypeOf((*HostConfigFailed)(nil)).Elem() -} - -type HostConfigFailedFault HostConfigFailed - -func init() { - t["HostConfigFailedFault"] = reflect.TypeOf((*HostConfigFailedFault)(nil)).Elem() -} - -type HostConfigFault struct { - VimFault -} - -func init() { - t["HostConfigFault"] = reflect.TypeOf((*HostConfigFault)(nil)).Elem() -} - -type HostConfigFaultFault BaseHostConfigFault - -func init() { - t["HostConfigFaultFault"] = reflect.TypeOf((*HostConfigFaultFault)(nil)).Elem() -} - -type HostConfigInfo struct { - DynamicData - - Host ManagedObjectReference `xml:"host"` - Product AboutInfo `xml:"product"` - HyperThread *HostHyperThreadScheduleInfo `xml:"hyperThread,omitempty"` - ConsoleReservation *ServiceConsoleReservationInfo `xml:"consoleReservation,omitempty"` - VirtualMachineReservation *VirtualMachineMemoryReservationInfo `xml:"virtualMachineReservation,omitempty"` - StorageDevice *HostStorageDeviceInfo `xml:"storageDevice,omitempty"` - MultipathState *HostMultipathStateInfo `xml:"multipathState,omitempty"` - FileSystemVolume *HostFileSystemVolumeInfo `xml:"fileSystemVolume,omitempty"` - SystemFile []string `xml:"systemFile,omitempty"` - Network *HostNetworkInfo `xml:"network,omitempty"` - Vmotion *HostVMotionInfo `xml:"vmotion,omitempty"` - VirtualNicManagerInfo *HostVirtualNicManagerInfo `xml:"virtualNicManagerInfo,omitempty"` - Capabilities *HostNetCapabilities `xml:"capabilities,omitempty"` - DatastoreCapabilities *HostDatastoreSystemCapabilities `xml:"datastoreCapabilities,omitempty"` - OffloadCapabilities *HostNetOffloadCapabilities `xml:"offloadCapabilities,omitempty"` - Service *HostServiceInfo `xml:"service,omitempty"` - Firewall *HostFirewallInfo `xml:"firewall,omitempty"` - AutoStart *HostAutoStartManagerConfig `xml:"autoStart,omitempty"` - ActiveDiagnosticPartition *HostDiagnosticPartition `xml:"activeDiagnosticPartition,omitempty"` - Option []BaseOptionValue `xml:"option,omitempty,typeattr"` - OptionDef []OptionDef `xml:"optionDef,omitempty"` - DatastorePrincipal string `xml:"datastorePrincipal,omitempty"` - LocalSwapDatastore *ManagedObjectReference `xml:"localSwapDatastore,omitempty"` - SystemSwapConfiguration *HostSystemSwapConfiguration `xml:"systemSwapConfiguration,omitempty"` - SystemResources *HostSystemResourceInfo `xml:"systemResources,omitempty"` - DateTimeInfo *HostDateTimeInfo `xml:"dateTimeInfo,omitempty"` - Flags *HostFlagInfo `xml:"flags,omitempty"` - AdminDisabled *bool `xml:"adminDisabled"` - LockdownMode HostLockdownMode `xml:"lockdownMode,omitempty"` - Ipmi *HostIpmiInfo `xml:"ipmi,omitempty"` - SslThumbprintInfo *HostSslThumbprintInfo `xml:"sslThumbprintInfo,omitempty"` - SslThumbprintData []HostSslThumbprintInfo `xml:"sslThumbprintData,omitempty"` - Certificate []byte `xml:"certificate,omitempty"` - PciPassthruInfo []BaseHostPciPassthruInfo `xml:"pciPassthruInfo,omitempty,typeattr"` - AuthenticationManagerInfo *HostAuthenticationManagerInfo `xml:"authenticationManagerInfo,omitempty"` - FeatureVersion []HostFeatureVersionInfo `xml:"featureVersion,omitempty"` - PowerSystemCapability *PowerSystemCapability `xml:"powerSystemCapability,omitempty"` - PowerSystemInfo *PowerSystemInfo `xml:"powerSystemInfo,omitempty"` - CacheConfigurationInfo []HostCacheConfigurationInfo `xml:"cacheConfigurationInfo,omitempty"` - WakeOnLanCapable *bool `xml:"wakeOnLanCapable"` - FeatureCapability []HostFeatureCapability `xml:"featureCapability,omitempty"` - MaskedFeatureCapability []HostFeatureCapability `xml:"maskedFeatureCapability,omitempty"` - VFlashConfigInfo *HostVFlashManagerVFlashConfigInfo `xml:"vFlashConfigInfo,omitempty"` - VsanHostConfig *VsanHostConfigInfo `xml:"vsanHostConfig,omitempty"` - DomainList []string `xml:"domainList,omitempty"` - ScriptCheckSum []byte `xml:"scriptCheckSum,omitempty"` - HostConfigCheckSum []byte `xml:"hostConfigCheckSum,omitempty"` - GraphicsInfo []HostGraphicsInfo `xml:"graphicsInfo,omitempty"` - SharedPassthruGpuTypes []string `xml:"sharedPassthruGpuTypes,omitempty"` - IoFilterInfo []HostIoFilterInfo `xml:"ioFilterInfo,omitempty"` -} - -func init() { - t["HostConfigInfo"] = reflect.TypeOf((*HostConfigInfo)(nil)).Elem() -} - -type HostConfigManager struct { - DynamicData - - CpuScheduler *ManagedObjectReference `xml:"cpuScheduler,omitempty"` - DatastoreSystem *ManagedObjectReference `xml:"datastoreSystem,omitempty"` - MemoryManager *ManagedObjectReference `xml:"memoryManager,omitempty"` - StorageSystem *ManagedObjectReference `xml:"storageSystem,omitempty"` - NetworkSystem *ManagedObjectReference `xml:"networkSystem,omitempty"` - VmotionSystem *ManagedObjectReference `xml:"vmotionSystem,omitempty"` - VirtualNicManager *ManagedObjectReference `xml:"virtualNicManager,omitempty"` - ServiceSystem *ManagedObjectReference `xml:"serviceSystem,omitempty"` - FirewallSystem *ManagedObjectReference `xml:"firewallSystem,omitempty"` - AdvancedOption *ManagedObjectReference `xml:"advancedOption,omitempty"` - DiagnosticSystem *ManagedObjectReference `xml:"diagnosticSystem,omitempty"` - AutoStartManager *ManagedObjectReference `xml:"autoStartManager,omitempty"` - SnmpSystem *ManagedObjectReference `xml:"snmpSystem,omitempty"` - DateTimeSystem *ManagedObjectReference `xml:"dateTimeSystem,omitempty"` - PatchManager *ManagedObjectReference `xml:"patchManager,omitempty"` - ImageConfigManager *ManagedObjectReference `xml:"imageConfigManager,omitempty"` - BootDeviceSystem *ManagedObjectReference `xml:"bootDeviceSystem,omitempty"` - FirmwareSystem *ManagedObjectReference `xml:"firmwareSystem,omitempty"` - HealthStatusSystem *ManagedObjectReference `xml:"healthStatusSystem,omitempty"` - PciPassthruSystem *ManagedObjectReference `xml:"pciPassthruSystem,omitempty"` - LicenseManager *ManagedObjectReference `xml:"licenseManager,omitempty"` - KernelModuleSystem *ManagedObjectReference `xml:"kernelModuleSystem,omitempty"` - AuthenticationManager *ManagedObjectReference `xml:"authenticationManager,omitempty"` - PowerSystem *ManagedObjectReference `xml:"powerSystem,omitempty"` - CacheConfigurationManager *ManagedObjectReference `xml:"cacheConfigurationManager,omitempty"` - EsxAgentHostManager *ManagedObjectReference `xml:"esxAgentHostManager,omitempty"` - IscsiManager *ManagedObjectReference `xml:"iscsiManager,omitempty"` - VFlashManager *ManagedObjectReference `xml:"vFlashManager,omitempty"` - VsanSystem *ManagedObjectReference `xml:"vsanSystem,omitempty"` - MessageBusProxy *ManagedObjectReference `xml:"messageBusProxy,omitempty"` - UserDirectory *ManagedObjectReference `xml:"userDirectory,omitempty"` - AccountManager *ManagedObjectReference `xml:"accountManager,omitempty"` - HostAccessManager *ManagedObjectReference `xml:"hostAccessManager,omitempty"` - GraphicsManager *ManagedObjectReference `xml:"graphicsManager,omitempty"` - VsanInternalSystem *ManagedObjectReference `xml:"vsanInternalSystem,omitempty"` - CertificateManager *ManagedObjectReference `xml:"certificateManager,omitempty"` -} - -func init() { - t["HostConfigManager"] = reflect.TypeOf((*HostConfigManager)(nil)).Elem() -} - -type HostConfigSpec struct { - DynamicData - - NasDatastore []HostNasVolumeConfig `xml:"nasDatastore,omitempty"` - Network *HostNetworkConfig `xml:"network,omitempty"` - NicTypeSelection []HostVirtualNicManagerNicTypeSelection `xml:"nicTypeSelection,omitempty"` - Service []HostServiceConfig `xml:"service,omitempty"` - Firewall *HostFirewallConfig `xml:"firewall,omitempty"` - Option []BaseOptionValue `xml:"option,omitempty,typeattr"` - DatastorePrincipal string `xml:"datastorePrincipal,omitempty"` - DatastorePrincipalPasswd string `xml:"datastorePrincipalPasswd,omitempty"` - Datetime *HostDateTimeConfig `xml:"datetime,omitempty"` - StorageDevice *HostStorageDeviceInfo `xml:"storageDevice,omitempty"` - License *HostLicenseSpec `xml:"license,omitempty"` - Security *HostSecuritySpec `xml:"security,omitempty"` - UserAccount []BaseHostAccountSpec `xml:"userAccount,omitempty,typeattr"` - UsergroupAccount []BaseHostAccountSpec `xml:"usergroupAccount,omitempty,typeattr"` - Memory *HostMemorySpec `xml:"memory,omitempty"` - ActiveDirectory []HostActiveDirectory `xml:"activeDirectory,omitempty"` - GenericConfig []KeyAnyValue `xml:"genericConfig,omitempty"` -} - -func init() { - t["HostConfigSpec"] = reflect.TypeOf((*HostConfigSpec)(nil)).Elem() -} - -type HostConfigSummary struct { - DynamicData - - Name string `xml:"name"` - Port int32 `xml:"port"` - SslThumbprint string `xml:"sslThumbprint,omitempty"` - Product *AboutInfo `xml:"product,omitempty"` - VmotionEnabled bool `xml:"vmotionEnabled"` - FaultToleranceEnabled *bool `xml:"faultToleranceEnabled"` - FeatureVersion []HostFeatureVersionInfo `xml:"featureVersion,omitempty"` - AgentVmDatastore *ManagedObjectReference `xml:"agentVmDatastore,omitempty"` - AgentVmNetwork *ManagedObjectReference `xml:"agentVmNetwork,omitempty"` -} - -func init() { - t["HostConfigSummary"] = reflect.TypeOf((*HostConfigSummary)(nil)).Elem() -} - -type HostConfigVFlashCache HostConfigVFlashCacheRequestType - -func init() { - t["HostConfigVFlashCache"] = reflect.TypeOf((*HostConfigVFlashCache)(nil)).Elem() -} - -type HostConfigVFlashCacheRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec HostVFlashManagerVFlashCacheConfigSpec `xml:"spec"` -} - -func init() { - t["HostConfigVFlashCacheRequestType"] = reflect.TypeOf((*HostConfigVFlashCacheRequestType)(nil)).Elem() -} - -type HostConfigVFlashCacheResponse struct { -} - -type HostConfigureVFlashResource HostConfigureVFlashResourceRequestType - -func init() { - t["HostConfigureVFlashResource"] = reflect.TypeOf((*HostConfigureVFlashResource)(nil)).Elem() -} - -type HostConfigureVFlashResourceRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec HostVFlashManagerVFlashResourceConfigSpec `xml:"spec"` -} - -func init() { - t["HostConfigureVFlashResourceRequestType"] = reflect.TypeOf((*HostConfigureVFlashResourceRequestType)(nil)).Elem() -} - -type HostConfigureVFlashResourceResponse struct { -} - -type HostConnectFault struct { - VimFault -} - -func init() { - t["HostConnectFault"] = reflect.TypeOf((*HostConnectFault)(nil)).Elem() -} - -type HostConnectFaultFault BaseHostConnectFault - -func init() { - t["HostConnectFaultFault"] = reflect.TypeOf((*HostConnectFaultFault)(nil)).Elem() -} - -type HostConnectInfo struct { - DynamicData - - ServerIp string `xml:"serverIp,omitempty"` - InDasCluster *bool `xml:"inDasCluster"` - Host HostListSummary `xml:"host"` - Vm []VirtualMachineSummary `xml:"vm,omitempty"` - VimAccountNameRequired *bool `xml:"vimAccountNameRequired"` - ClusterSupported *bool `xml:"clusterSupported"` - Network []BaseHostConnectInfoNetworkInfo `xml:"network,omitempty,typeattr"` - Datastore []BaseHostDatastoreConnectInfo `xml:"datastore,omitempty,typeattr"` - License *HostLicenseConnectInfo `xml:"license,omitempty"` - Capability *HostCapability `xml:"capability,omitempty"` -} - -func init() { - t["HostConnectInfo"] = reflect.TypeOf((*HostConnectInfo)(nil)).Elem() -} - -type HostConnectInfoNetworkInfo struct { - DynamicData - - Summary BaseNetworkSummary `xml:"summary,typeattr"` -} - -func init() { - t["HostConnectInfoNetworkInfo"] = reflect.TypeOf((*HostConnectInfoNetworkInfo)(nil)).Elem() -} - -type HostConnectSpec struct { - DynamicData - - HostName string `xml:"hostName,omitempty"` - Port int32 `xml:"port,omitempty"` - SslThumbprint string `xml:"sslThumbprint,omitempty"` - UserName string `xml:"userName,omitempty"` - Password string `xml:"password,omitempty"` - VmFolder *ManagedObjectReference `xml:"vmFolder,omitempty"` - Force bool `xml:"force"` - VimAccountName string `xml:"vimAccountName,omitempty"` - VimAccountPassword string `xml:"vimAccountPassword,omitempty"` - ManagementIp string `xml:"managementIp,omitempty"` - LockdownMode HostLockdownMode `xml:"lockdownMode,omitempty"` - HostGateway *HostGatewaySpec `xml:"hostGateway,omitempty"` -} - -func init() { - t["HostConnectSpec"] = reflect.TypeOf((*HostConnectSpec)(nil)).Elem() -} - -type HostConnectedEvent struct { - HostEvent -} - -func init() { - t["HostConnectedEvent"] = reflect.TypeOf((*HostConnectedEvent)(nil)).Elem() -} - -type HostConnectionLostEvent struct { - HostEvent -} - -func init() { - t["HostConnectionLostEvent"] = reflect.TypeOf((*HostConnectionLostEvent)(nil)).Elem() -} - -type HostCpuIdInfo struct { - DynamicData - - Level int32 `xml:"level"` - Vendor string `xml:"vendor,omitempty"` - Eax string `xml:"eax,omitempty"` - Ebx string `xml:"ebx,omitempty"` - Ecx string `xml:"ecx,omitempty"` - Edx string `xml:"edx,omitempty"` -} - -func init() { - t["HostCpuIdInfo"] = reflect.TypeOf((*HostCpuIdInfo)(nil)).Elem() -} - -type HostCpuInfo struct { - DynamicData - - NumCpuPackages int16 `xml:"numCpuPackages"` - NumCpuCores int16 `xml:"numCpuCores"` - NumCpuThreads int16 `xml:"numCpuThreads"` - Hz int64 `xml:"hz"` -} - -func init() { - t["HostCpuInfo"] = reflect.TypeOf((*HostCpuInfo)(nil)).Elem() -} - -type HostCpuPackage struct { - DynamicData - - Index int16 `xml:"index"` - Vendor string `xml:"vendor"` - Hz int64 `xml:"hz"` - BusHz int64 `xml:"busHz"` - Description string `xml:"description"` - ThreadId []int16 `xml:"threadId"` - CpuFeature []HostCpuIdInfo `xml:"cpuFeature,omitempty"` -} - -func init() { - t["HostCpuPackage"] = reflect.TypeOf((*HostCpuPackage)(nil)).Elem() -} - -type HostCpuPowerManagementInfo struct { - DynamicData - - CurrentPolicy string `xml:"currentPolicy,omitempty"` - HardwareSupport string `xml:"hardwareSupport,omitempty"` -} - -func init() { - t["HostCpuPowerManagementInfo"] = reflect.TypeOf((*HostCpuPowerManagementInfo)(nil)).Elem() -} - -type HostDasDisabledEvent struct { - HostEvent -} - -func init() { - t["HostDasDisabledEvent"] = reflect.TypeOf((*HostDasDisabledEvent)(nil)).Elem() -} - -type HostDasDisablingEvent struct { - HostEvent -} - -func init() { - t["HostDasDisablingEvent"] = reflect.TypeOf((*HostDasDisablingEvent)(nil)).Elem() -} - -type HostDasEnabledEvent struct { - HostEvent -} - -func init() { - t["HostDasEnabledEvent"] = reflect.TypeOf((*HostDasEnabledEvent)(nil)).Elem() -} - -type HostDasEnablingEvent struct { - HostEvent -} - -func init() { - t["HostDasEnablingEvent"] = reflect.TypeOf((*HostDasEnablingEvent)(nil)).Elem() -} - -type HostDasErrorEvent struct { - HostEvent - - Message string `xml:"message,omitempty"` - Reason string `xml:"reason,omitempty"` -} - -func init() { - t["HostDasErrorEvent"] = reflect.TypeOf((*HostDasErrorEvent)(nil)).Elem() -} - -type HostDasEvent struct { - HostEvent -} - -func init() { - t["HostDasEvent"] = reflect.TypeOf((*HostDasEvent)(nil)).Elem() -} - -type HostDasOkEvent struct { - HostEvent -} - -func init() { - t["HostDasOkEvent"] = reflect.TypeOf((*HostDasOkEvent)(nil)).Elem() -} - -type HostDatastoreBrowserSearchResults struct { - DynamicData - - Datastore *ManagedObjectReference `xml:"datastore,omitempty"` - FolderPath string `xml:"folderPath,omitempty"` - File []BaseFileInfo `xml:"file,omitempty,typeattr"` -} - -func init() { - t["HostDatastoreBrowserSearchResults"] = reflect.TypeOf((*HostDatastoreBrowserSearchResults)(nil)).Elem() -} - -type HostDatastoreBrowserSearchSpec struct { - DynamicData - - Query []BaseFileQuery `xml:"query,omitempty,typeattr"` - Details *FileQueryFlags `xml:"details,omitempty"` - SearchCaseInsensitive *bool `xml:"searchCaseInsensitive"` - MatchPattern []string `xml:"matchPattern,omitempty"` - SortFoldersFirst *bool `xml:"sortFoldersFirst"` -} - -func init() { - t["HostDatastoreBrowserSearchSpec"] = reflect.TypeOf((*HostDatastoreBrowserSearchSpec)(nil)).Elem() -} - -type HostDatastoreConnectInfo struct { - DynamicData - - Summary DatastoreSummary `xml:"summary"` -} - -func init() { - t["HostDatastoreConnectInfo"] = reflect.TypeOf((*HostDatastoreConnectInfo)(nil)).Elem() -} - -type HostDatastoreExistsConnectInfo struct { - HostDatastoreConnectInfo - - NewDatastoreName string `xml:"newDatastoreName"` -} - -func init() { - t["HostDatastoreExistsConnectInfo"] = reflect.TypeOf((*HostDatastoreExistsConnectInfo)(nil)).Elem() -} - -type HostDatastoreNameConflictConnectInfo struct { - HostDatastoreConnectInfo - - NewDatastoreName string `xml:"newDatastoreName"` -} - -func init() { - t["HostDatastoreNameConflictConnectInfo"] = reflect.TypeOf((*HostDatastoreNameConflictConnectInfo)(nil)).Elem() -} - -type HostDatastoreSystemCapabilities struct { - DynamicData - - NfsMountCreationRequired bool `xml:"nfsMountCreationRequired"` - NfsMountCreationSupported bool `xml:"nfsMountCreationSupported"` - LocalDatastoreSupported bool `xml:"localDatastoreSupported"` - VmfsExtentExpansionSupported *bool `xml:"vmfsExtentExpansionSupported"` -} - -func init() { - t["HostDatastoreSystemCapabilities"] = reflect.TypeOf((*HostDatastoreSystemCapabilities)(nil)).Elem() -} - -type HostDatastoreSystemDatastoreResult struct { - DynamicData - - Key ManagedObjectReference `xml:"key"` - Fault *LocalizedMethodFault `xml:"fault,omitempty"` -} - -func init() { - t["HostDatastoreSystemDatastoreResult"] = reflect.TypeOf((*HostDatastoreSystemDatastoreResult)(nil)).Elem() -} - -type HostDatastoreSystemVvolDatastoreSpec struct { - DynamicData - - Name string `xml:"name"` - ScId string `xml:"scId"` -} - -func init() { - t["HostDatastoreSystemVvolDatastoreSpec"] = reflect.TypeOf((*HostDatastoreSystemVvolDatastoreSpec)(nil)).Elem() -} - -type HostDateTimeConfig struct { - DynamicData - - TimeZone string `xml:"timeZone,omitempty"` - NtpConfig *HostNtpConfig `xml:"ntpConfig,omitempty"` -} - -func init() { - t["HostDateTimeConfig"] = reflect.TypeOf((*HostDateTimeConfig)(nil)).Elem() -} - -type HostDateTimeInfo struct { - DynamicData - - TimeZone HostDateTimeSystemTimeZone `xml:"timeZone"` - NtpConfig *HostNtpConfig `xml:"ntpConfig,omitempty"` -} - -func init() { - t["HostDateTimeInfo"] = reflect.TypeOf((*HostDateTimeInfo)(nil)).Elem() -} - -type HostDateTimeSystemTimeZone struct { - DynamicData - - Key string `xml:"key"` - Name string `xml:"name"` - Description string `xml:"description"` - GmtOffset int32 `xml:"gmtOffset"` -} - -func init() { - t["HostDateTimeSystemTimeZone"] = reflect.TypeOf((*HostDateTimeSystemTimeZone)(nil)).Elem() -} - -type HostDevice struct { - DynamicData - - DeviceName string `xml:"deviceName"` - DeviceType string `xml:"deviceType"` -} - -func init() { - t["HostDevice"] = reflect.TypeOf((*HostDevice)(nil)).Elem() -} - -type HostDhcpService struct { - DynamicData - - Key string `xml:"key"` - Spec HostDhcpServiceSpec `xml:"spec"` -} - -func init() { - t["HostDhcpService"] = reflect.TypeOf((*HostDhcpService)(nil)).Elem() -} - -type HostDhcpServiceConfig struct { - DynamicData - - ChangeOperation string `xml:"changeOperation,omitempty"` - Key string `xml:"key"` - Spec HostDhcpServiceSpec `xml:"spec"` -} - -func init() { - t["HostDhcpServiceConfig"] = reflect.TypeOf((*HostDhcpServiceConfig)(nil)).Elem() -} - -type HostDhcpServiceSpec struct { - DynamicData - - VirtualSwitch string `xml:"virtualSwitch"` - DefaultLeaseDuration int32 `xml:"defaultLeaseDuration"` - LeaseBeginIp string `xml:"leaseBeginIp"` - LeaseEndIp string `xml:"leaseEndIp"` - MaxLeaseDuration int32 `xml:"maxLeaseDuration"` - UnlimitedLease bool `xml:"unlimitedLease"` - IpSubnetAddr string `xml:"ipSubnetAddr"` - IpSubnetMask string `xml:"ipSubnetMask"` -} - -func init() { - t["HostDhcpServiceSpec"] = reflect.TypeOf((*HostDhcpServiceSpec)(nil)).Elem() -} - -type HostDiagnosticPartition struct { - DynamicData - - StorageType string `xml:"storageType"` - DiagnosticType string `xml:"diagnosticType"` - Slots int32 `xml:"slots"` - Id HostScsiDiskPartition `xml:"id"` -} - -func init() { - t["HostDiagnosticPartition"] = reflect.TypeOf((*HostDiagnosticPartition)(nil)).Elem() -} - -type HostDiagnosticPartitionCreateDescription struct { - DynamicData - - Layout HostDiskPartitionLayout `xml:"layout"` - DiskUuid string `xml:"diskUuid"` - Spec HostDiagnosticPartitionCreateSpec `xml:"spec"` -} - -func init() { - t["HostDiagnosticPartitionCreateDescription"] = reflect.TypeOf((*HostDiagnosticPartitionCreateDescription)(nil)).Elem() -} - -type HostDiagnosticPartitionCreateOption struct { - DynamicData - - StorageType string `xml:"storageType"` - DiagnosticType string `xml:"diagnosticType"` - Disk HostScsiDisk `xml:"disk"` -} - -func init() { - t["HostDiagnosticPartitionCreateOption"] = reflect.TypeOf((*HostDiagnosticPartitionCreateOption)(nil)).Elem() -} - -type HostDiagnosticPartitionCreateSpec struct { - DynamicData - - StorageType string `xml:"storageType"` - DiagnosticType string `xml:"diagnosticType"` - Id HostScsiDiskPartition `xml:"id"` - Partition HostDiskPartitionSpec `xml:"partition"` - Active *bool `xml:"active"` -} - -func init() { - t["HostDiagnosticPartitionCreateSpec"] = reflect.TypeOf((*HostDiagnosticPartitionCreateSpec)(nil)).Elem() -} - -type HostDigestInfo struct { - DynamicData - - DigestMethod string `xml:"digestMethod"` - DigestValue []byte `xml:"digestValue"` - ObjectName string `xml:"objectName,omitempty"` -} - -func init() { - t["HostDigestInfo"] = reflect.TypeOf((*HostDigestInfo)(nil)).Elem() -} - -type HostDirectoryStoreInfo struct { - HostAuthenticationStoreInfo -} - -func init() { - t["HostDirectoryStoreInfo"] = reflect.TypeOf((*HostDirectoryStoreInfo)(nil)).Elem() -} - -type HostDisconnectedEvent struct { - HostEvent - - Reason string `xml:"reason,omitempty"` -} - -func init() { - t["HostDisconnectedEvent"] = reflect.TypeOf((*HostDisconnectedEvent)(nil)).Elem() -} - -type HostDiskConfigurationResult struct { - DynamicData - - DevicePath string `xml:"devicePath,omitempty"` - Success *bool `xml:"success"` - Fault *LocalizedMethodFault `xml:"fault,omitempty"` -} - -func init() { - t["HostDiskConfigurationResult"] = reflect.TypeOf((*HostDiskConfigurationResult)(nil)).Elem() -} - -type HostDiskDimensions struct { - DynamicData -} - -func init() { - t["HostDiskDimensions"] = reflect.TypeOf((*HostDiskDimensions)(nil)).Elem() -} - -type HostDiskDimensionsChs struct { - DynamicData - - Cylinder int64 `xml:"cylinder"` - Head int32 `xml:"head"` - Sector int32 `xml:"sector"` -} - -func init() { - t["HostDiskDimensionsChs"] = reflect.TypeOf((*HostDiskDimensionsChs)(nil)).Elem() -} - -type HostDiskDimensionsLba struct { - DynamicData - - BlockSize int32 `xml:"blockSize"` - Block int64 `xml:"block"` -} - -func init() { - t["HostDiskDimensionsLba"] = reflect.TypeOf((*HostDiskDimensionsLba)(nil)).Elem() -} - -type HostDiskMappingInfo struct { - DynamicData - - PhysicalPartition *HostDiskMappingPartitionInfo `xml:"physicalPartition,omitempty"` - Name string `xml:"name"` - Exclusive *bool `xml:"exclusive"` -} - -func init() { - t["HostDiskMappingInfo"] = reflect.TypeOf((*HostDiskMappingInfo)(nil)).Elem() -} - -type HostDiskMappingOption struct { - DynamicData - - PhysicalPartition []HostDiskMappingPartitionOption `xml:"physicalPartition,omitempty"` - Name string `xml:"name"` -} - -func init() { - t["HostDiskMappingOption"] = reflect.TypeOf((*HostDiskMappingOption)(nil)).Elem() -} - -type HostDiskMappingPartitionInfo struct { - DynamicData - - Name string `xml:"name"` - FileSystem string `xml:"fileSystem"` - CapacityInKb int64 `xml:"capacityInKb"` -} - -func init() { - t["HostDiskMappingPartitionInfo"] = reflect.TypeOf((*HostDiskMappingPartitionInfo)(nil)).Elem() -} - -type HostDiskMappingPartitionOption struct { - DynamicData - - Name string `xml:"name"` - FileSystem string `xml:"fileSystem"` - CapacityInKb int64 `xml:"capacityInKb"` -} - -func init() { - t["HostDiskMappingPartitionOption"] = reflect.TypeOf((*HostDiskMappingPartitionOption)(nil)).Elem() -} - -type HostDiskPartitionAttributes struct { - DynamicData - - Partition int32 `xml:"partition"` - StartSector int64 `xml:"startSector"` - EndSector int64 `xml:"endSector"` - Type string `xml:"type"` - Guid string `xml:"guid,omitempty"` - Logical bool `xml:"logical"` - Attributes byte `xml:"attributes"` - PartitionAlignment int64 `xml:"partitionAlignment,omitempty"` -} - -func init() { - t["HostDiskPartitionAttributes"] = reflect.TypeOf((*HostDiskPartitionAttributes)(nil)).Elem() -} - -type HostDiskPartitionBlockRange struct { - DynamicData - - Partition int32 `xml:"partition,omitempty"` - Type string `xml:"type"` - Start HostDiskDimensionsLba `xml:"start"` - End HostDiskDimensionsLba `xml:"end"` -} - -func init() { - t["HostDiskPartitionBlockRange"] = reflect.TypeOf((*HostDiskPartitionBlockRange)(nil)).Elem() -} - -type HostDiskPartitionInfo struct { - DynamicData - - DeviceName string `xml:"deviceName"` - Spec HostDiskPartitionSpec `xml:"spec"` - Layout HostDiskPartitionLayout `xml:"layout"` -} - -func init() { - t["HostDiskPartitionInfo"] = reflect.TypeOf((*HostDiskPartitionInfo)(nil)).Elem() -} - -type HostDiskPartitionLayout struct { - DynamicData - - Total *HostDiskDimensionsLba `xml:"total,omitempty"` - Partition []HostDiskPartitionBlockRange `xml:"partition"` -} - -func init() { - t["HostDiskPartitionLayout"] = reflect.TypeOf((*HostDiskPartitionLayout)(nil)).Elem() -} - -type HostDiskPartitionSpec struct { - DynamicData - - PartitionFormat string `xml:"partitionFormat,omitempty"` - Chs *HostDiskDimensionsChs `xml:"chs,omitempty"` - TotalSectors int64 `xml:"totalSectors,omitempty"` - Partition []HostDiskPartitionAttributes `xml:"partition,omitempty"` -} - -func init() { - t["HostDiskPartitionSpec"] = reflect.TypeOf((*HostDiskPartitionSpec)(nil)).Elem() -} - -type HostDnsConfig struct { - DynamicData - - Dhcp bool `xml:"dhcp"` - VirtualNicDevice string `xml:"virtualNicDevice,omitempty"` - HostName string `xml:"hostName"` - DomainName string `xml:"domainName"` - Address []string `xml:"address,omitempty"` - SearchDomain []string `xml:"searchDomain,omitempty"` -} - -func init() { - t["HostDnsConfig"] = reflect.TypeOf((*HostDnsConfig)(nil)).Elem() -} - -type HostDnsConfigSpec struct { - HostDnsConfig - - VirtualNicConnection *HostVirtualNicConnection `xml:"virtualNicConnection,omitempty"` -} - -func init() { - t["HostDnsConfigSpec"] = reflect.TypeOf((*HostDnsConfigSpec)(nil)).Elem() -} - -type HostEnableAdminFailedEvent struct { - HostEvent - - Permissions []Permission `xml:"permissions"` -} - -func init() { - t["HostEnableAdminFailedEvent"] = reflect.TypeOf((*HostEnableAdminFailedEvent)(nil)).Elem() -} - -type HostEsxAgentHostManagerConfigInfo struct { - DynamicData - - AgentVmDatastore *ManagedObjectReference `xml:"agentVmDatastore,omitempty"` - AgentVmNetwork *ManagedObjectReference `xml:"agentVmNetwork,omitempty"` -} - -func init() { - t["HostEsxAgentHostManagerConfigInfo"] = reflect.TypeOf((*HostEsxAgentHostManagerConfigInfo)(nil)).Elem() -} - -type HostEvent struct { - Event -} - -func init() { - t["HostEvent"] = reflect.TypeOf((*HostEvent)(nil)).Elem() -} - -type HostEventArgument struct { - EntityEventArgument - - Host ManagedObjectReference `xml:"host"` -} - -func init() { - t["HostEventArgument"] = reflect.TypeOf((*HostEventArgument)(nil)).Elem() -} - -type HostExtraNetworksEvent struct { - HostDasEvent - - Ips string `xml:"ips,omitempty"` -} - -func init() { - t["HostExtraNetworksEvent"] = reflect.TypeOf((*HostExtraNetworksEvent)(nil)).Elem() -} - -type HostFaultToleranceManagerComponentHealthInfo struct { - DynamicData - - IsStorageHealthy bool `xml:"isStorageHealthy"` - IsNetworkHealthy bool `xml:"isNetworkHealthy"` -} - -func init() { - t["HostFaultToleranceManagerComponentHealthInfo"] = reflect.TypeOf((*HostFaultToleranceManagerComponentHealthInfo)(nil)).Elem() -} - -type HostFeatureCapability struct { - DynamicData - - Key string `xml:"key"` - FeatureName string `xml:"featureName"` - Value string `xml:"value"` -} - -func init() { - t["HostFeatureCapability"] = reflect.TypeOf((*HostFeatureCapability)(nil)).Elem() -} - -type HostFeatureMask struct { - DynamicData - - Key string `xml:"key"` - FeatureName string `xml:"featureName"` - Value string `xml:"value"` -} - -func init() { - t["HostFeatureMask"] = reflect.TypeOf((*HostFeatureMask)(nil)).Elem() -} - -type HostFeatureVersionInfo struct { - DynamicData - - Key string `xml:"key"` - Value string `xml:"value"` -} - -func init() { - t["HostFeatureVersionInfo"] = reflect.TypeOf((*HostFeatureVersionInfo)(nil)).Elem() -} - -type HostFibreChannelHba struct { - HostHostBusAdapter - - PortWorldWideName int64 `xml:"portWorldWideName"` - NodeWorldWideName int64 `xml:"nodeWorldWideName"` - PortType FibreChannelPortType `xml:"portType"` - Speed int64 `xml:"speed"` -} - -func init() { - t["HostFibreChannelHba"] = reflect.TypeOf((*HostFibreChannelHba)(nil)).Elem() -} - -type HostFibreChannelOverEthernetHba struct { - HostFibreChannelHba - - UnderlyingNic string `xml:"underlyingNic"` - LinkInfo HostFibreChannelOverEthernetHbaLinkInfo `xml:"linkInfo"` - IsSoftwareFcoe bool `xml:"isSoftwareFcoe"` - MarkedForRemoval bool `xml:"markedForRemoval"` -} - -func init() { - t["HostFibreChannelOverEthernetHba"] = reflect.TypeOf((*HostFibreChannelOverEthernetHba)(nil)).Elem() -} - -type HostFibreChannelOverEthernetHbaLinkInfo struct { - DynamicData - - VnportMac string `xml:"vnportMac"` - FcfMac string `xml:"fcfMac"` - VlanId int32 `xml:"vlanId"` -} - -func init() { - t["HostFibreChannelOverEthernetHbaLinkInfo"] = reflect.TypeOf((*HostFibreChannelOverEthernetHbaLinkInfo)(nil)).Elem() -} - -type HostFibreChannelOverEthernetTargetTransport struct { - HostFibreChannelTargetTransport - - VnportMac string `xml:"vnportMac"` - FcfMac string `xml:"fcfMac"` - VlanId int32 `xml:"vlanId"` -} - -func init() { - t["HostFibreChannelOverEthernetTargetTransport"] = reflect.TypeOf((*HostFibreChannelOverEthernetTargetTransport)(nil)).Elem() -} - -type HostFibreChannelTargetTransport struct { - HostTargetTransport - - PortWorldWideName int64 `xml:"portWorldWideName"` - NodeWorldWideName int64 `xml:"nodeWorldWideName"` -} - -func init() { - t["HostFibreChannelTargetTransport"] = reflect.TypeOf((*HostFibreChannelTargetTransport)(nil)).Elem() -} - -type HostFileAccess struct { - DynamicData - - Who string `xml:"who"` - What string `xml:"what"` -} - -func init() { - t["HostFileAccess"] = reflect.TypeOf((*HostFileAccess)(nil)).Elem() -} - -type HostFileSystemMountInfo struct { - DynamicData - - MountInfo HostMountInfo `xml:"mountInfo"` - Volume BaseHostFileSystemVolume `xml:"volume,typeattr"` - VStorageSupport string `xml:"vStorageSupport,omitempty"` -} - -func init() { - t["HostFileSystemMountInfo"] = reflect.TypeOf((*HostFileSystemMountInfo)(nil)).Elem() -} - -type HostFileSystemVolume struct { - DynamicData - - Type string `xml:"type"` - Name string `xml:"name"` - Capacity int64 `xml:"capacity"` -} - -func init() { - t["HostFileSystemVolume"] = reflect.TypeOf((*HostFileSystemVolume)(nil)).Elem() -} - -type HostFileSystemVolumeInfo struct { - DynamicData - - VolumeTypeList []string `xml:"volumeTypeList,omitempty"` - MountInfo []HostFileSystemMountInfo `xml:"mountInfo,omitempty"` -} - -func init() { - t["HostFileSystemVolumeInfo"] = reflect.TypeOf((*HostFileSystemVolumeInfo)(nil)).Elem() -} - -type HostFirewallConfig struct { - DynamicData - - Rule []HostFirewallConfigRuleSetConfig `xml:"rule,omitempty"` - DefaultBlockingPolicy HostFirewallDefaultPolicy `xml:"defaultBlockingPolicy"` -} - -func init() { - t["HostFirewallConfig"] = reflect.TypeOf((*HostFirewallConfig)(nil)).Elem() -} - -type HostFirewallConfigRuleSetConfig struct { - DynamicData - - RulesetId string `xml:"rulesetId"` - Enabled bool `xml:"enabled"` - AllowedHosts *HostFirewallRulesetIpList `xml:"allowedHosts,omitempty"` -} - -func init() { - t["HostFirewallConfigRuleSetConfig"] = reflect.TypeOf((*HostFirewallConfigRuleSetConfig)(nil)).Elem() -} - -type HostFirewallDefaultPolicy struct { - DynamicData - - IncomingBlocked *bool `xml:"incomingBlocked"` - OutgoingBlocked *bool `xml:"outgoingBlocked"` -} - -func init() { - t["HostFirewallDefaultPolicy"] = reflect.TypeOf((*HostFirewallDefaultPolicy)(nil)).Elem() -} - -type HostFirewallInfo struct { - DynamicData - - DefaultPolicy HostFirewallDefaultPolicy `xml:"defaultPolicy"` - Ruleset []HostFirewallRuleset `xml:"ruleset,omitempty"` -} - -func init() { - t["HostFirewallInfo"] = reflect.TypeOf((*HostFirewallInfo)(nil)).Elem() -} - -type HostFirewallRule struct { - DynamicData - - Port int32 `xml:"port"` - EndPort int32 `xml:"endPort,omitempty"` - Direction HostFirewallRuleDirection `xml:"direction"` - PortType HostFirewallRulePortType `xml:"portType,omitempty"` - Protocol string `xml:"protocol"` -} - -func init() { - t["HostFirewallRule"] = reflect.TypeOf((*HostFirewallRule)(nil)).Elem() -} - -type HostFirewallRuleset struct { - DynamicData - - Key string `xml:"key"` - Label string `xml:"label"` - Required bool `xml:"required"` - Rule []HostFirewallRule `xml:"rule"` - Service string `xml:"service,omitempty"` - Enabled bool `xml:"enabled"` - AllowedHosts *HostFirewallRulesetIpList `xml:"allowedHosts,omitempty"` -} - -func init() { - t["HostFirewallRuleset"] = reflect.TypeOf((*HostFirewallRuleset)(nil)).Elem() -} - -type HostFirewallRulesetIpList struct { - DynamicData - - IpAddress []string `xml:"ipAddress,omitempty"` - IpNetwork []HostFirewallRulesetIpNetwork `xml:"ipNetwork,omitempty"` - AllIp bool `xml:"allIp"` -} - -func init() { - t["HostFirewallRulesetIpList"] = reflect.TypeOf((*HostFirewallRulesetIpList)(nil)).Elem() -} - -type HostFirewallRulesetIpNetwork struct { - DynamicData - - Network string `xml:"network"` - PrefixLength int32 `xml:"prefixLength"` -} - -func init() { - t["HostFirewallRulesetIpNetwork"] = reflect.TypeOf((*HostFirewallRulesetIpNetwork)(nil)).Elem() -} - -type HostFirewallRulesetRulesetSpec struct { - DynamicData - - AllowedHosts HostFirewallRulesetIpList `xml:"allowedHosts"` -} - -func init() { - t["HostFirewallRulesetRulesetSpec"] = reflect.TypeOf((*HostFirewallRulesetRulesetSpec)(nil)).Elem() -} - -type HostFlagInfo struct { - DynamicData - - BackgroundSnapshotsEnabled *bool `xml:"backgroundSnapshotsEnabled"` -} - -func init() { - t["HostFlagInfo"] = reflect.TypeOf((*HostFlagInfo)(nil)).Elem() -} - -type HostForceMountedInfo struct { - DynamicData - - Persist bool `xml:"persist"` - Mounted bool `xml:"mounted"` -} - -func init() { - t["HostForceMountedInfo"] = reflect.TypeOf((*HostForceMountedInfo)(nil)).Elem() -} - -type HostGatewaySpec struct { - DynamicData - - GatewayType string `xml:"gatewayType"` - GatewayId string `xml:"gatewayId,omitempty"` - TrustVerificationToken string `xml:"trustVerificationToken,omitempty"` - HostAuthParams []KeyValue `xml:"hostAuthParams,omitempty"` -} - -func init() { - t["HostGatewaySpec"] = reflect.TypeOf((*HostGatewaySpec)(nil)).Elem() -} - -type HostGetShortNameFailedEvent struct { - HostEvent -} - -func init() { - t["HostGetShortNameFailedEvent"] = reflect.TypeOf((*HostGetShortNameFailedEvent)(nil)).Elem() -} - -type HostGetVFlashModuleDefaultConfig HostGetVFlashModuleDefaultConfigRequestType - -func init() { - t["HostGetVFlashModuleDefaultConfig"] = reflect.TypeOf((*HostGetVFlashModuleDefaultConfig)(nil)).Elem() -} - -type HostGetVFlashModuleDefaultConfigRequestType struct { - This ManagedObjectReference `xml:"_this"` - VFlashModule string `xml:"vFlashModule"` -} - -func init() { - t["HostGetVFlashModuleDefaultConfigRequestType"] = reflect.TypeOf((*HostGetVFlashModuleDefaultConfigRequestType)(nil)).Elem() -} - -type HostGetVFlashModuleDefaultConfigResponse struct { - Returnval VirtualDiskVFlashCacheConfigInfo `xml:"returnval"` -} - -type HostGraphicsInfo struct { - DynamicData - - DeviceName string `xml:"deviceName"` - VendorName string `xml:"vendorName"` - PciId string `xml:"pciId"` - GraphicsType string `xml:"graphicsType"` - MemorySizeInKB int64 `xml:"memorySizeInKB"` - Vm []ManagedObjectReference `xml:"vm,omitempty"` -} - -func init() { - t["HostGraphicsInfo"] = reflect.TypeOf((*HostGraphicsInfo)(nil)).Elem() -} - -type HostHardwareElementInfo struct { - DynamicData - - Name string `xml:"name"` - Status BaseElementDescription `xml:"status,typeattr"` -} - -func init() { - t["HostHardwareElementInfo"] = reflect.TypeOf((*HostHardwareElementInfo)(nil)).Elem() -} - -type HostHardwareInfo struct { - DynamicData - - SystemInfo HostSystemInfo `xml:"systemInfo"` - CpuPowerManagementInfo *HostCpuPowerManagementInfo `xml:"cpuPowerManagementInfo,omitempty"` - CpuInfo HostCpuInfo `xml:"cpuInfo"` - CpuPkg []HostCpuPackage `xml:"cpuPkg"` - MemorySize int64 `xml:"memorySize"` - NumaInfo *HostNumaInfo `xml:"numaInfo,omitempty"` - SmcPresent *bool `xml:"smcPresent"` - PciDevice []HostPciDevice `xml:"pciDevice,omitempty"` - CpuFeature []HostCpuIdInfo `xml:"cpuFeature,omitempty"` - BiosInfo *HostBIOSInfo `xml:"biosInfo,omitempty"` - ReliableMemoryInfo *HostReliableMemoryInfo `xml:"reliableMemoryInfo,omitempty"` -} - -func init() { - t["HostHardwareInfo"] = reflect.TypeOf((*HostHardwareInfo)(nil)).Elem() -} - -type HostHardwareStatusInfo struct { - DynamicData - - MemoryStatusInfo []BaseHostHardwareElementInfo `xml:"memoryStatusInfo,omitempty,typeattr"` - CpuStatusInfo []BaseHostHardwareElementInfo `xml:"cpuStatusInfo,omitempty,typeattr"` - StorageStatusInfo []HostStorageElementInfo `xml:"storageStatusInfo,omitempty"` -} - -func init() { - t["HostHardwareStatusInfo"] = reflect.TypeOf((*HostHardwareStatusInfo)(nil)).Elem() -} - -type HostHardwareSummary struct { - DynamicData - - Vendor string `xml:"vendor"` - Model string `xml:"model"` - Uuid string `xml:"uuid"` - OtherIdentifyingInfo []HostSystemIdentificationInfo `xml:"otherIdentifyingInfo,omitempty"` - MemorySize int64 `xml:"memorySize"` - CpuModel string `xml:"cpuModel"` - CpuMhz int32 `xml:"cpuMhz"` - NumCpuPkgs int16 `xml:"numCpuPkgs"` - NumCpuCores int16 `xml:"numCpuCores"` - NumCpuThreads int16 `xml:"numCpuThreads"` - NumNics int32 `xml:"numNics"` - NumHBAs int32 `xml:"numHBAs"` -} - -func init() { - t["HostHardwareSummary"] = reflect.TypeOf((*HostHardwareSummary)(nil)).Elem() -} - -type HostHasComponentFailure struct { - VimFault - - HostName string `xml:"hostName"` - ComponentType string `xml:"componentType"` - ComponentName string `xml:"componentName"` -} - -func init() { - t["HostHasComponentFailure"] = reflect.TypeOf((*HostHasComponentFailure)(nil)).Elem() -} - -type HostHasComponentFailureFault HostHasComponentFailure - -func init() { - t["HostHasComponentFailureFault"] = reflect.TypeOf((*HostHasComponentFailureFault)(nil)).Elem() -} - -type HostHostBusAdapter struct { - DynamicData - - Key string `xml:"key,omitempty"` - Device string `xml:"device"` - Bus int32 `xml:"bus"` - Status string `xml:"status"` - Model string `xml:"model"` - Driver string `xml:"driver,omitempty"` - Pci string `xml:"pci,omitempty"` -} - -func init() { - t["HostHostBusAdapter"] = reflect.TypeOf((*HostHostBusAdapter)(nil)).Elem() -} - -type HostHyperThreadScheduleInfo struct { - DynamicData - - Available bool `xml:"available"` - Active bool `xml:"active"` - Config bool `xml:"config"` -} - -func init() { - t["HostHyperThreadScheduleInfo"] = reflect.TypeOf((*HostHyperThreadScheduleInfo)(nil)).Elem() -} - -type HostImageConfigGetAcceptance HostImageConfigGetAcceptanceRequestType - -func init() { - t["HostImageConfigGetAcceptance"] = reflect.TypeOf((*HostImageConfigGetAcceptance)(nil)).Elem() -} - -type HostImageConfigGetAcceptanceRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["HostImageConfigGetAcceptanceRequestType"] = reflect.TypeOf((*HostImageConfigGetAcceptanceRequestType)(nil)).Elem() -} - -type HostImageConfigGetAcceptanceResponse struct { - Returnval string `xml:"returnval"` -} - -type HostImageConfigGetProfile HostImageConfigGetProfileRequestType - -func init() { - t["HostImageConfigGetProfile"] = reflect.TypeOf((*HostImageConfigGetProfile)(nil)).Elem() -} - -type HostImageConfigGetProfileRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["HostImageConfigGetProfileRequestType"] = reflect.TypeOf((*HostImageConfigGetProfileRequestType)(nil)).Elem() -} - -type HostImageConfigGetProfileResponse struct { - Returnval HostImageProfileSummary `xml:"returnval"` -} - -type HostImageProfileSummary struct { - DynamicData - - Name string `xml:"name"` - Vendor string `xml:"vendor"` -} - -func init() { - t["HostImageProfileSummary"] = reflect.TypeOf((*HostImageProfileSummary)(nil)).Elem() -} - -type HostInAuditModeEvent struct { - HostEvent -} - -func init() { - t["HostInAuditModeEvent"] = reflect.TypeOf((*HostInAuditModeEvent)(nil)).Elem() -} - -type HostInDomain struct { - HostConfigFault -} - -func init() { - t["HostInDomain"] = reflect.TypeOf((*HostInDomain)(nil)).Elem() -} - -type HostInDomainFault HostInDomain - -func init() { - t["HostInDomainFault"] = reflect.TypeOf((*HostInDomainFault)(nil)).Elem() -} - -type HostIncompatibleForFaultTolerance struct { - VmFaultToleranceIssue - - HostName string `xml:"hostName,omitempty"` - Reason string `xml:"reason,omitempty"` -} - -func init() { - t["HostIncompatibleForFaultTolerance"] = reflect.TypeOf((*HostIncompatibleForFaultTolerance)(nil)).Elem() -} - -type HostIncompatibleForFaultToleranceFault HostIncompatibleForFaultTolerance - -func init() { - t["HostIncompatibleForFaultToleranceFault"] = reflect.TypeOf((*HostIncompatibleForFaultToleranceFault)(nil)).Elem() -} - -type HostIncompatibleForRecordReplay struct { - VimFault - - HostName string `xml:"hostName,omitempty"` - Reason string `xml:"reason,omitempty"` -} - -func init() { - t["HostIncompatibleForRecordReplay"] = reflect.TypeOf((*HostIncompatibleForRecordReplay)(nil)).Elem() -} - -type HostIncompatibleForRecordReplayFault HostIncompatibleForRecordReplay - -func init() { - t["HostIncompatibleForRecordReplayFault"] = reflect.TypeOf((*HostIncompatibleForRecordReplayFault)(nil)).Elem() -} - -type HostInternetScsiHba struct { - HostHostBusAdapter - - IsSoftwareBased bool `xml:"isSoftwareBased"` - CanBeDisabled *bool `xml:"canBeDisabled"` - NetworkBindingSupport HostInternetScsiHbaNetworkBindingSupportType `xml:"networkBindingSupport,omitempty"` - DiscoveryCapabilities HostInternetScsiHbaDiscoveryCapabilities `xml:"discoveryCapabilities"` - DiscoveryProperties HostInternetScsiHbaDiscoveryProperties `xml:"discoveryProperties"` - AuthenticationCapabilities HostInternetScsiHbaAuthenticationCapabilities `xml:"authenticationCapabilities"` - AuthenticationProperties HostInternetScsiHbaAuthenticationProperties `xml:"authenticationProperties"` - DigestCapabilities *HostInternetScsiHbaDigestCapabilities `xml:"digestCapabilities,omitempty"` - DigestProperties *HostInternetScsiHbaDigestProperties `xml:"digestProperties,omitempty"` - IpCapabilities HostInternetScsiHbaIPCapabilities `xml:"ipCapabilities"` - IpProperties HostInternetScsiHbaIPProperties `xml:"ipProperties"` - SupportedAdvancedOptions []OptionDef `xml:"supportedAdvancedOptions,omitempty"` - AdvancedOptions []HostInternetScsiHbaParamValue `xml:"advancedOptions,omitempty"` - IScsiName string `xml:"iScsiName"` - IScsiAlias string `xml:"iScsiAlias,omitempty"` - ConfiguredSendTarget []HostInternetScsiHbaSendTarget `xml:"configuredSendTarget,omitempty"` - ConfiguredStaticTarget []HostInternetScsiHbaStaticTarget `xml:"configuredStaticTarget,omitempty"` - MaxSpeedMb int32 `xml:"maxSpeedMb,omitempty"` - CurrentSpeedMb int32 `xml:"currentSpeedMb,omitempty"` -} - -func init() { - t["HostInternetScsiHba"] = reflect.TypeOf((*HostInternetScsiHba)(nil)).Elem() -} - -type HostInternetScsiHbaAuthenticationCapabilities struct { - DynamicData - - ChapAuthSettable bool `xml:"chapAuthSettable"` - Krb5AuthSettable bool `xml:"krb5AuthSettable"` - SrpAuthSettable bool `xml:"srpAuthSettable"` - SpkmAuthSettable bool `xml:"spkmAuthSettable"` - MutualChapSettable *bool `xml:"mutualChapSettable"` - TargetChapSettable *bool `xml:"targetChapSettable"` - TargetMutualChapSettable *bool `xml:"targetMutualChapSettable"` -} - -func init() { - t["HostInternetScsiHbaAuthenticationCapabilities"] = reflect.TypeOf((*HostInternetScsiHbaAuthenticationCapabilities)(nil)).Elem() -} - -type HostInternetScsiHbaAuthenticationProperties struct { - DynamicData - - ChapAuthEnabled bool `xml:"chapAuthEnabled"` - ChapName string `xml:"chapName,omitempty"` - ChapSecret string `xml:"chapSecret,omitempty"` - ChapAuthenticationType string `xml:"chapAuthenticationType,omitempty"` - ChapInherited *bool `xml:"chapInherited"` - MutualChapName string `xml:"mutualChapName,omitempty"` - MutualChapSecret string `xml:"mutualChapSecret,omitempty"` - MutualChapAuthenticationType string `xml:"mutualChapAuthenticationType,omitempty"` - MutualChapInherited *bool `xml:"mutualChapInherited"` -} - -func init() { - t["HostInternetScsiHbaAuthenticationProperties"] = reflect.TypeOf((*HostInternetScsiHbaAuthenticationProperties)(nil)).Elem() -} - -type HostInternetScsiHbaDigestCapabilities struct { - DynamicData - - HeaderDigestSettable *bool `xml:"headerDigestSettable"` - DataDigestSettable *bool `xml:"dataDigestSettable"` - TargetHeaderDigestSettable *bool `xml:"targetHeaderDigestSettable"` - TargetDataDigestSettable *bool `xml:"targetDataDigestSettable"` -} - -func init() { - t["HostInternetScsiHbaDigestCapabilities"] = reflect.TypeOf((*HostInternetScsiHbaDigestCapabilities)(nil)).Elem() -} - -type HostInternetScsiHbaDigestProperties struct { - DynamicData - - HeaderDigestType string `xml:"headerDigestType,omitempty"` - HeaderDigestInherited *bool `xml:"headerDigestInherited"` - DataDigestType string `xml:"dataDigestType,omitempty"` - DataDigestInherited *bool `xml:"dataDigestInherited"` -} - -func init() { - t["HostInternetScsiHbaDigestProperties"] = reflect.TypeOf((*HostInternetScsiHbaDigestProperties)(nil)).Elem() -} - -type HostInternetScsiHbaDiscoveryCapabilities struct { - DynamicData - - ISnsDiscoverySettable bool `xml:"iSnsDiscoverySettable"` - SlpDiscoverySettable bool `xml:"slpDiscoverySettable"` - StaticTargetDiscoverySettable bool `xml:"staticTargetDiscoverySettable"` - SendTargetsDiscoverySettable bool `xml:"sendTargetsDiscoverySettable"` -} - -func init() { - t["HostInternetScsiHbaDiscoveryCapabilities"] = reflect.TypeOf((*HostInternetScsiHbaDiscoveryCapabilities)(nil)).Elem() -} - -type HostInternetScsiHbaDiscoveryProperties struct { - DynamicData - - ISnsDiscoveryEnabled bool `xml:"iSnsDiscoveryEnabled"` - ISnsDiscoveryMethod string `xml:"iSnsDiscoveryMethod,omitempty"` - ISnsHost string `xml:"iSnsHost,omitempty"` - SlpDiscoveryEnabled bool `xml:"slpDiscoveryEnabled"` - SlpDiscoveryMethod string `xml:"slpDiscoveryMethod,omitempty"` - SlpHost string `xml:"slpHost,omitempty"` - StaticTargetDiscoveryEnabled bool `xml:"staticTargetDiscoveryEnabled"` - SendTargetsDiscoveryEnabled bool `xml:"sendTargetsDiscoveryEnabled"` -} - -func init() { - t["HostInternetScsiHbaDiscoveryProperties"] = reflect.TypeOf((*HostInternetScsiHbaDiscoveryProperties)(nil)).Elem() -} - -type HostInternetScsiHbaIPCapabilities struct { - DynamicData - - AddressSettable bool `xml:"addressSettable"` - IpConfigurationMethodSettable bool `xml:"ipConfigurationMethodSettable"` - SubnetMaskSettable bool `xml:"subnetMaskSettable"` - DefaultGatewaySettable bool `xml:"defaultGatewaySettable"` - PrimaryDnsServerAddressSettable bool `xml:"primaryDnsServerAddressSettable"` - AlternateDnsServerAddressSettable bool `xml:"alternateDnsServerAddressSettable"` - Ipv6Supported *bool `xml:"ipv6Supported"` - ArpRedirectSettable *bool `xml:"arpRedirectSettable"` - MtuSettable *bool `xml:"mtuSettable"` - HostNameAsTargetAddress *bool `xml:"hostNameAsTargetAddress"` - NameAliasSettable *bool `xml:"nameAliasSettable"` - Ipv4EnableSettable *bool `xml:"ipv4EnableSettable"` - Ipv6EnableSettable *bool `xml:"ipv6EnableSettable"` - Ipv6PrefixLengthSettable *bool `xml:"ipv6PrefixLengthSettable"` - Ipv6PrefixLength int32 `xml:"ipv6PrefixLength,omitempty"` - Ipv6DhcpConfigurationSettable *bool `xml:"ipv6DhcpConfigurationSettable"` - Ipv6LinkLocalAutoConfigurationSettable *bool `xml:"ipv6LinkLocalAutoConfigurationSettable"` - Ipv6RouterAdvertisementConfigurationSettable *bool `xml:"ipv6RouterAdvertisementConfigurationSettable"` - Ipv6DefaultGatewaySettable *bool `xml:"ipv6DefaultGatewaySettable"` - Ipv6MaxStaticAddressesSupported int32 `xml:"ipv6MaxStaticAddressesSupported,omitempty"` -} - -func init() { - t["HostInternetScsiHbaIPCapabilities"] = reflect.TypeOf((*HostInternetScsiHbaIPCapabilities)(nil)).Elem() -} - -type HostInternetScsiHbaIPProperties struct { - DynamicData - - Mac string `xml:"mac,omitempty"` - Address string `xml:"address,omitempty"` - DhcpConfigurationEnabled bool `xml:"dhcpConfigurationEnabled"` - SubnetMask string `xml:"subnetMask,omitempty"` - DefaultGateway string `xml:"defaultGateway,omitempty"` - PrimaryDnsServerAddress string `xml:"primaryDnsServerAddress,omitempty"` - AlternateDnsServerAddress string `xml:"alternateDnsServerAddress,omitempty"` - Ipv6Address string `xml:"ipv6Address,omitempty"` - Ipv6SubnetMask string `xml:"ipv6SubnetMask,omitempty"` - Ipv6DefaultGateway string `xml:"ipv6DefaultGateway,omitempty"` - ArpRedirectEnabled *bool `xml:"arpRedirectEnabled"` - Mtu int32 `xml:"mtu,omitempty"` - JumboFramesEnabled *bool `xml:"jumboFramesEnabled"` - Ipv4Enabled *bool `xml:"ipv4Enabled"` - Ipv6Enabled *bool `xml:"ipv6Enabled"` - Ipv6properties *HostInternetScsiHbaIPv6Properties `xml:"ipv6properties,omitempty"` -} - -func init() { - t["HostInternetScsiHbaIPProperties"] = reflect.TypeOf((*HostInternetScsiHbaIPProperties)(nil)).Elem() -} - -type HostInternetScsiHbaIPv6Properties struct { - DynamicData - - IscsiIpv6Address []HostInternetScsiHbaIscsiIpv6Address `xml:"iscsiIpv6Address,omitempty"` - Ipv6DhcpConfigurationEnabled *bool `xml:"ipv6DhcpConfigurationEnabled"` - Ipv6LinkLocalAutoConfigurationEnabled *bool `xml:"ipv6LinkLocalAutoConfigurationEnabled"` - Ipv6RouterAdvertisementConfigurationEnabled *bool `xml:"ipv6RouterAdvertisementConfigurationEnabled"` - Ipv6DefaultGateway string `xml:"ipv6DefaultGateway,omitempty"` -} - -func init() { - t["HostInternetScsiHbaIPv6Properties"] = reflect.TypeOf((*HostInternetScsiHbaIPv6Properties)(nil)).Elem() -} - -type HostInternetScsiHbaIscsiIpv6Address struct { - DynamicData - - Address string `xml:"address"` - PrefixLength int32 `xml:"prefixLength"` - Origin string `xml:"origin"` - Operation string `xml:"operation,omitempty"` -} - -func init() { - t["HostInternetScsiHbaIscsiIpv6Address"] = reflect.TypeOf((*HostInternetScsiHbaIscsiIpv6Address)(nil)).Elem() -} - -type HostInternetScsiHbaParamValue struct { - OptionValue - - IsInherited *bool `xml:"isInherited"` -} - -func init() { - t["HostInternetScsiHbaParamValue"] = reflect.TypeOf((*HostInternetScsiHbaParamValue)(nil)).Elem() -} - -type HostInternetScsiHbaSendTarget struct { - DynamicData - - Address string `xml:"address"` - Port int32 `xml:"port,omitempty"` - AuthenticationProperties *HostInternetScsiHbaAuthenticationProperties `xml:"authenticationProperties,omitempty"` - DigestProperties *HostInternetScsiHbaDigestProperties `xml:"digestProperties,omitempty"` - SupportedAdvancedOptions []OptionDef `xml:"supportedAdvancedOptions,omitempty"` - AdvancedOptions []HostInternetScsiHbaParamValue `xml:"advancedOptions,omitempty"` - Parent string `xml:"parent,omitempty"` -} - -func init() { - t["HostInternetScsiHbaSendTarget"] = reflect.TypeOf((*HostInternetScsiHbaSendTarget)(nil)).Elem() -} - -type HostInternetScsiHbaStaticTarget struct { - DynamicData - - Address string `xml:"address"` - Port int32 `xml:"port,omitempty"` - IScsiName string `xml:"iScsiName"` - DiscoveryMethod string `xml:"discoveryMethod,omitempty"` - AuthenticationProperties *HostInternetScsiHbaAuthenticationProperties `xml:"authenticationProperties,omitempty"` - DigestProperties *HostInternetScsiHbaDigestProperties `xml:"digestProperties,omitempty"` - SupportedAdvancedOptions []OptionDef `xml:"supportedAdvancedOptions,omitempty"` - AdvancedOptions []HostInternetScsiHbaParamValue `xml:"advancedOptions,omitempty"` - Parent string `xml:"parent,omitempty"` -} - -func init() { - t["HostInternetScsiHbaStaticTarget"] = reflect.TypeOf((*HostInternetScsiHbaStaticTarget)(nil)).Elem() -} - -type HostInternetScsiHbaTargetSet struct { - DynamicData - - StaticTargets []HostInternetScsiHbaStaticTarget `xml:"staticTargets,omitempty"` - SendTargets []HostInternetScsiHbaSendTarget `xml:"sendTargets,omitempty"` -} - -func init() { - t["HostInternetScsiHbaTargetSet"] = reflect.TypeOf((*HostInternetScsiHbaTargetSet)(nil)).Elem() -} - -type HostInternetScsiTargetTransport struct { - HostTargetTransport - - IScsiName string `xml:"iScsiName"` - IScsiAlias string `xml:"iScsiAlias"` - Address []string `xml:"address,omitempty"` -} - -func init() { - t["HostInternetScsiTargetTransport"] = reflect.TypeOf((*HostInternetScsiTargetTransport)(nil)).Elem() -} - -type HostInventoryFull struct { - NotEnoughLicenses - - Capacity int32 `xml:"capacity"` -} - -func init() { - t["HostInventoryFull"] = reflect.TypeOf((*HostInventoryFull)(nil)).Elem() -} - -type HostInventoryFullEvent struct { - LicenseEvent - - Capacity int32 `xml:"capacity"` -} - -func init() { - t["HostInventoryFullEvent"] = reflect.TypeOf((*HostInventoryFullEvent)(nil)).Elem() -} - -type HostInventoryFullFault HostInventoryFull - -func init() { - t["HostInventoryFullFault"] = reflect.TypeOf((*HostInventoryFullFault)(nil)).Elem() -} - -type HostInventoryUnreadableEvent struct { - Event -} - -func init() { - t["HostInventoryUnreadableEvent"] = reflect.TypeOf((*HostInventoryUnreadableEvent)(nil)).Elem() -} - -type HostIoFilterInfo struct { - IoFilterInfo - - Available bool `xml:"available"` -} - -func init() { - t["HostIoFilterInfo"] = reflect.TypeOf((*HostIoFilterInfo)(nil)).Elem() -} - -type HostIpChangedEvent struct { - HostEvent - - OldIP string `xml:"oldIP"` - NewIP string `xml:"newIP"` -} - -func init() { - t["HostIpChangedEvent"] = reflect.TypeOf((*HostIpChangedEvent)(nil)).Elem() -} - -type HostIpConfig struct { - DynamicData - - Dhcp bool `xml:"dhcp"` - IpAddress string `xml:"ipAddress,omitempty"` - SubnetMask string `xml:"subnetMask,omitempty"` - IpV6Config *HostIpConfigIpV6AddressConfiguration `xml:"ipV6Config,omitempty"` -} - -func init() { - t["HostIpConfig"] = reflect.TypeOf((*HostIpConfig)(nil)).Elem() -} - -type HostIpConfigIpV6Address struct { - DynamicData - - IpAddress string `xml:"ipAddress"` - PrefixLength int32 `xml:"prefixLength"` - Origin string `xml:"origin,omitempty"` - DadState string `xml:"dadState,omitempty"` - Lifetime *time.Time `xml:"lifetime"` - Operation string `xml:"operation,omitempty"` -} - -func init() { - t["HostIpConfigIpV6Address"] = reflect.TypeOf((*HostIpConfigIpV6Address)(nil)).Elem() -} - -type HostIpConfigIpV6AddressConfiguration struct { - DynamicData - - IpV6Address []HostIpConfigIpV6Address `xml:"ipV6Address,omitempty"` - AutoConfigurationEnabled *bool `xml:"autoConfigurationEnabled"` - DhcpV6Enabled *bool `xml:"dhcpV6Enabled"` -} - -func init() { - t["HostIpConfigIpV6AddressConfiguration"] = reflect.TypeOf((*HostIpConfigIpV6AddressConfiguration)(nil)).Elem() -} - -type HostIpInconsistentEvent struct { - HostEvent - - IpAddress string `xml:"ipAddress"` - IpAddress2 string `xml:"ipAddress2"` -} - -func init() { - t["HostIpInconsistentEvent"] = reflect.TypeOf((*HostIpInconsistentEvent)(nil)).Elem() -} - -type HostIpRouteConfig struct { - DynamicData - - DefaultGateway string `xml:"defaultGateway,omitempty"` - GatewayDevice string `xml:"gatewayDevice,omitempty"` - IpV6DefaultGateway string `xml:"ipV6DefaultGateway,omitempty"` - IpV6GatewayDevice string `xml:"ipV6GatewayDevice,omitempty"` -} - -func init() { - t["HostIpRouteConfig"] = reflect.TypeOf((*HostIpRouteConfig)(nil)).Elem() -} - -type HostIpRouteConfigSpec struct { - HostIpRouteConfig - - GatewayDeviceConnection *HostVirtualNicConnection `xml:"gatewayDeviceConnection,omitempty"` - IpV6GatewayDeviceConnection *HostVirtualNicConnection `xml:"ipV6GatewayDeviceConnection,omitempty"` -} - -func init() { - t["HostIpRouteConfigSpec"] = reflect.TypeOf((*HostIpRouteConfigSpec)(nil)).Elem() -} - -type HostIpRouteEntry struct { - DynamicData - - Network string `xml:"network"` - PrefixLength int32 `xml:"prefixLength"` - Gateway string `xml:"gateway"` - DeviceName string `xml:"deviceName,omitempty"` -} - -func init() { - t["HostIpRouteEntry"] = reflect.TypeOf((*HostIpRouteEntry)(nil)).Elem() -} - -type HostIpRouteOp struct { - DynamicData - - ChangeOperation string `xml:"changeOperation"` - Route HostIpRouteEntry `xml:"route"` -} - -func init() { - t["HostIpRouteOp"] = reflect.TypeOf((*HostIpRouteOp)(nil)).Elem() -} - -type HostIpRouteTableConfig struct { - DynamicData - - IpRoute []HostIpRouteOp `xml:"ipRoute,omitempty"` - Ipv6Route []HostIpRouteOp `xml:"ipv6Route,omitempty"` -} - -func init() { - t["HostIpRouteTableConfig"] = reflect.TypeOf((*HostIpRouteTableConfig)(nil)).Elem() -} - -type HostIpRouteTableInfo struct { - DynamicData - - IpRoute []HostIpRouteEntry `xml:"ipRoute,omitempty"` - Ipv6Route []HostIpRouteEntry `xml:"ipv6Route,omitempty"` -} - -func init() { - t["HostIpRouteTableInfo"] = reflect.TypeOf((*HostIpRouteTableInfo)(nil)).Elem() -} - -type HostIpToShortNameFailedEvent struct { - HostEvent -} - -func init() { - t["HostIpToShortNameFailedEvent"] = reflect.TypeOf((*HostIpToShortNameFailedEvent)(nil)).Elem() -} - -type HostIpmiInfo struct { - DynamicData - - BmcIpAddress string `xml:"bmcIpAddress,omitempty"` - BmcMacAddress string `xml:"bmcMacAddress,omitempty"` - Login string `xml:"login,omitempty"` - Password string `xml:"password,omitempty"` -} - -func init() { - t["HostIpmiInfo"] = reflect.TypeOf((*HostIpmiInfo)(nil)).Elem() -} - -type HostIsolationIpPingFailedEvent struct { - HostDasEvent - - IsolationIp string `xml:"isolationIp"` -} - -func init() { - t["HostIsolationIpPingFailedEvent"] = reflect.TypeOf((*HostIsolationIpPingFailedEvent)(nil)).Elem() -} - -type HostLicensableResourceInfo struct { - DynamicData - - Resource []KeyAnyValue `xml:"resource"` -} - -func init() { - t["HostLicensableResourceInfo"] = reflect.TypeOf((*HostLicensableResourceInfo)(nil)).Elem() -} - -type HostLicenseConnectInfo struct { - DynamicData - - License LicenseManagerLicenseInfo `xml:"license"` - Evaluation LicenseManagerEvaluationInfo `xml:"evaluation"` - Resource *HostLicensableResourceInfo `xml:"resource,omitempty"` -} - -func init() { - t["HostLicenseConnectInfo"] = reflect.TypeOf((*HostLicenseConnectInfo)(nil)).Elem() -} - -type HostLicenseExpiredEvent struct { - LicenseEvent -} - -func init() { - t["HostLicenseExpiredEvent"] = reflect.TypeOf((*HostLicenseExpiredEvent)(nil)).Elem() -} - -type HostLicenseSpec struct { - DynamicData - - Source BaseLicenseSource `xml:"source,omitempty,typeattr"` - EditionKey string `xml:"editionKey,omitempty"` - DisabledFeatureKey []string `xml:"disabledFeatureKey,omitempty"` - EnabledFeatureKey []string `xml:"enabledFeatureKey,omitempty"` -} - -func init() { - t["HostLicenseSpec"] = reflect.TypeOf((*HostLicenseSpec)(nil)).Elem() -} - -type HostListSummary struct { - DynamicData - - Host *ManagedObjectReference `xml:"host,omitempty"` - Hardware *HostHardwareSummary `xml:"hardware,omitempty"` - Runtime *HostRuntimeInfo `xml:"runtime,omitempty"` - Config HostConfigSummary `xml:"config"` - QuickStats HostListSummaryQuickStats `xml:"quickStats"` - OverallStatus ManagedEntityStatus `xml:"overallStatus"` - RebootRequired bool `xml:"rebootRequired"` - CustomValue []BaseCustomFieldValue `xml:"customValue,omitempty,typeattr"` - ManagementServerIp string `xml:"managementServerIp,omitempty"` - MaxEVCModeKey string `xml:"maxEVCModeKey,omitempty"` - CurrentEVCModeKey string `xml:"currentEVCModeKey,omitempty"` - Gateway *HostListSummaryGatewaySummary `xml:"gateway,omitempty"` -} - -func init() { - t["HostListSummary"] = reflect.TypeOf((*HostListSummary)(nil)).Elem() -} - -type HostListSummaryGatewaySummary struct { - DynamicData - - GatewayType string `xml:"gatewayType"` - GatewayId string `xml:"gatewayId"` -} - -func init() { - t["HostListSummaryGatewaySummary"] = reflect.TypeOf((*HostListSummaryGatewaySummary)(nil)).Elem() -} - -type HostListSummaryQuickStats struct { - DynamicData - - OverallCpuUsage int32 `xml:"overallCpuUsage,omitempty"` - OverallMemoryUsage int32 `xml:"overallMemoryUsage,omitempty"` - DistributedCpuFairness int32 `xml:"distributedCpuFairness,omitempty"` - DistributedMemoryFairness int32 `xml:"distributedMemoryFairness,omitempty"` - Uptime int32 `xml:"uptime,omitempty"` -} - -func init() { - t["HostListSummaryQuickStats"] = reflect.TypeOf((*HostListSummaryQuickStats)(nil)).Elem() -} - -type HostLocalAuthenticationInfo struct { - HostAuthenticationStoreInfo -} - -func init() { - t["HostLocalAuthenticationInfo"] = reflect.TypeOf((*HostLocalAuthenticationInfo)(nil)).Elem() -} - -type HostLocalFileSystemVolume struct { - HostFileSystemVolume - - Device string `xml:"device"` -} - -func init() { - t["HostLocalFileSystemVolume"] = reflect.TypeOf((*HostLocalFileSystemVolume)(nil)).Elem() -} - -type HostLocalFileSystemVolumeSpec struct { - DynamicData - - Device string `xml:"device"` - LocalPath string `xml:"localPath"` -} - -func init() { - t["HostLocalFileSystemVolumeSpec"] = reflect.TypeOf((*HostLocalFileSystemVolumeSpec)(nil)).Elem() -} - -type HostLocalPortCreatedEvent struct { - DvsEvent - - HostLocalPort DVSHostLocalPortInfo `xml:"hostLocalPort"` -} - -func init() { - t["HostLocalPortCreatedEvent"] = reflect.TypeOf((*HostLocalPortCreatedEvent)(nil)).Elem() -} - -type HostLowLevelProvisioningManagerDiskLayoutSpec struct { - DynamicData - - ControllerType string `xml:"controllerType"` - BusNumber int32 `xml:"busNumber"` - UnitNumber *int32 `xml:"unitNumber"` - SrcFilename string `xml:"srcFilename"` - DstFilename string `xml:"dstFilename"` -} - -func init() { - t["HostLowLevelProvisioningManagerDiskLayoutSpec"] = reflect.TypeOf((*HostLowLevelProvisioningManagerDiskLayoutSpec)(nil)).Elem() -} - -type HostLowLevelProvisioningManagerFileDeleteResult struct { - DynamicData - - FileName string `xml:"fileName"` - Fault LocalizedMethodFault `xml:"fault"` -} - -func init() { - t["HostLowLevelProvisioningManagerFileDeleteResult"] = reflect.TypeOf((*HostLowLevelProvisioningManagerFileDeleteResult)(nil)).Elem() -} - -type HostLowLevelProvisioningManagerFileDeleteSpec struct { - DynamicData - - FileName string `xml:"fileName"` - FileType string `xml:"fileType"` -} - -func init() { - t["HostLowLevelProvisioningManagerFileDeleteSpec"] = reflect.TypeOf((*HostLowLevelProvisioningManagerFileDeleteSpec)(nil)).Elem() -} - -type HostLowLevelProvisioningManagerFileReserveResult struct { - DynamicData - - BaseName string `xml:"baseName"` - ParentDir string `xml:"parentDir"` - ReservedName string `xml:"reservedName"` -} - -func init() { - t["HostLowLevelProvisioningManagerFileReserveResult"] = reflect.TypeOf((*HostLowLevelProvisioningManagerFileReserveResult)(nil)).Elem() -} - -type HostLowLevelProvisioningManagerFileReserveSpec struct { - DynamicData - - BaseName string `xml:"baseName"` - ParentDir string `xml:"parentDir"` - FileType string `xml:"fileType"` - StorageProfile string `xml:"storageProfile"` -} - -func init() { - t["HostLowLevelProvisioningManagerFileReserveSpec"] = reflect.TypeOf((*HostLowLevelProvisioningManagerFileReserveSpec)(nil)).Elem() -} - -type HostLowLevelProvisioningManagerSnapshotLayoutSpec struct { - DynamicData - - Id int32 `xml:"id"` - SrcFilename string `xml:"srcFilename"` - DstFilename string `xml:"dstFilename"` - Disk []HostLowLevelProvisioningManagerDiskLayoutSpec `xml:"disk,omitempty"` -} - -func init() { - t["HostLowLevelProvisioningManagerSnapshotLayoutSpec"] = reflect.TypeOf((*HostLowLevelProvisioningManagerSnapshotLayoutSpec)(nil)).Elem() -} - -type HostLowLevelProvisioningManagerVmMigrationStatus struct { - DynamicData - - MigrationId int64 `xml:"migrationId"` - Type string `xml:"type"` - Source bool `xml:"source"` - ConsideredSuccessful bool `xml:"consideredSuccessful"` -} - -func init() { - t["HostLowLevelProvisioningManagerVmMigrationStatus"] = reflect.TypeOf((*HostLowLevelProvisioningManagerVmMigrationStatus)(nil)).Elem() -} - -type HostLowLevelProvisioningManagerVmRecoveryInfo struct { - DynamicData - - Version string `xml:"version"` - BiosUUID string `xml:"biosUUID"` - InstanceUUID string `xml:"instanceUUID"` - FtInfo BaseFaultToleranceConfigInfo `xml:"ftInfo,omitempty,typeattr"` -} - -func init() { - t["HostLowLevelProvisioningManagerVmRecoveryInfo"] = reflect.TypeOf((*HostLowLevelProvisioningManagerVmRecoveryInfo)(nil)).Elem() -} - -type HostMaintenanceSpec struct { - DynamicData - - VsanMode *VsanHostDecommissionMode `xml:"vsanMode,omitempty"` -} - -func init() { - t["HostMaintenanceSpec"] = reflect.TypeOf((*HostMaintenanceSpec)(nil)).Elem() -} - -type HostMemberHealthCheckResult struct { - DynamicData - - Summary string `xml:"summary,omitempty"` -} - -func init() { - t["HostMemberHealthCheckResult"] = reflect.TypeOf((*HostMemberHealthCheckResult)(nil)).Elem() -} - -type HostMemberRuntimeInfo struct { - DynamicData - - Host ManagedObjectReference `xml:"host"` - Status string `xml:"status,omitempty"` - StatusDetail string `xml:"statusDetail,omitempty"` - HealthCheckResult []BaseHostMemberHealthCheckResult `xml:"healthCheckResult,omitempty,typeattr"` -} - -func init() { - t["HostMemberRuntimeInfo"] = reflect.TypeOf((*HostMemberRuntimeInfo)(nil)).Elem() -} - -type HostMemberUplinkHealthCheckResult struct { - HostMemberHealthCheckResult - - UplinkPortKey string `xml:"uplinkPortKey"` -} - -func init() { - t["HostMemberUplinkHealthCheckResult"] = reflect.TypeOf((*HostMemberUplinkHealthCheckResult)(nil)).Elem() -} - -type HostMemoryProfile struct { - ApplyProfile -} - -func init() { - t["HostMemoryProfile"] = reflect.TypeOf((*HostMemoryProfile)(nil)).Elem() -} - -type HostMemorySpec struct { - DynamicData - - ServiceConsoleReservation int64 `xml:"serviceConsoleReservation,omitempty"` -} - -func init() { - t["HostMemorySpec"] = reflect.TypeOf((*HostMemorySpec)(nil)).Elem() -} - -type HostMissingNetworksEvent struct { - HostDasEvent - - Ips string `xml:"ips,omitempty"` -} - -func init() { - t["HostMissingNetworksEvent"] = reflect.TypeOf((*HostMissingNetworksEvent)(nil)).Elem() -} - -type HostMonitoringStateChangedEvent struct { - ClusterEvent - - State string `xml:"state"` -} - -func init() { - t["HostMonitoringStateChangedEvent"] = reflect.TypeOf((*HostMonitoringStateChangedEvent)(nil)).Elem() -} - -type HostMountInfo struct { - DynamicData - - Path string `xml:"path,omitempty"` - AccessMode string `xml:"accessMode"` - Mounted *bool `xml:"mounted"` - Accessible *bool `xml:"accessible"` - InaccessibleReason string `xml:"inaccessibleReason,omitempty"` -} - -func init() { - t["HostMountInfo"] = reflect.TypeOf((*HostMountInfo)(nil)).Elem() -} - -type HostMultipathInfo struct { - DynamicData - - Lun []HostMultipathInfoLogicalUnit `xml:"lun,omitempty"` -} - -func init() { - t["HostMultipathInfo"] = reflect.TypeOf((*HostMultipathInfo)(nil)).Elem() -} - -type HostMultipathInfoFixedLogicalUnitPolicy struct { - HostMultipathInfoLogicalUnitPolicy - - Prefer string `xml:"prefer"` -} - -func init() { - t["HostMultipathInfoFixedLogicalUnitPolicy"] = reflect.TypeOf((*HostMultipathInfoFixedLogicalUnitPolicy)(nil)).Elem() -} - -type HostMultipathInfoLogicalUnit struct { - DynamicData - - Key string `xml:"key"` - Id string `xml:"id"` - Lun string `xml:"lun"` - Path []HostMultipathInfoPath `xml:"path"` - Policy BaseHostMultipathInfoLogicalUnitPolicy `xml:"policy,typeattr"` - StorageArrayTypePolicy *HostMultipathInfoLogicalUnitStorageArrayTypePolicy `xml:"storageArrayTypePolicy,omitempty"` -} - -func init() { - t["HostMultipathInfoLogicalUnit"] = reflect.TypeOf((*HostMultipathInfoLogicalUnit)(nil)).Elem() -} - -type HostMultipathInfoLogicalUnitPolicy struct { - DynamicData - - Policy string `xml:"policy"` -} - -func init() { - t["HostMultipathInfoLogicalUnitPolicy"] = reflect.TypeOf((*HostMultipathInfoLogicalUnitPolicy)(nil)).Elem() -} - -type HostMultipathInfoLogicalUnitStorageArrayTypePolicy struct { - DynamicData - - Policy string `xml:"policy"` -} - -func init() { - t["HostMultipathInfoLogicalUnitStorageArrayTypePolicy"] = reflect.TypeOf((*HostMultipathInfoLogicalUnitStorageArrayTypePolicy)(nil)).Elem() -} - -type HostMultipathInfoPath struct { - DynamicData - - Key string `xml:"key"` - Name string `xml:"name"` - PathState string `xml:"pathState"` - State string `xml:"state,omitempty"` - IsWorkingPath *bool `xml:"isWorkingPath"` - Adapter string `xml:"adapter"` - Lun string `xml:"lun"` - Transport BaseHostTargetTransport `xml:"transport,omitempty,typeattr"` -} - -func init() { - t["HostMultipathInfoPath"] = reflect.TypeOf((*HostMultipathInfoPath)(nil)).Elem() -} - -type HostMultipathStateInfo struct { - DynamicData - - Path []HostMultipathStateInfoPath `xml:"path,omitempty"` -} - -func init() { - t["HostMultipathStateInfo"] = reflect.TypeOf((*HostMultipathStateInfo)(nil)).Elem() -} - -type HostMultipathStateInfoPath struct { - DynamicData - - Name string `xml:"name"` - PathState string `xml:"pathState"` -} - -func init() { - t["HostMultipathStateInfoPath"] = reflect.TypeOf((*HostMultipathStateInfoPath)(nil)).Elem() -} - -type HostNasVolume struct { - HostFileSystemVolume - - RemoteHost string `xml:"remoteHost"` - RemotePath string `xml:"remotePath"` - UserName string `xml:"userName,omitempty"` - RemoteHostNames []string `xml:"remoteHostNames,omitempty"` - SecurityType string `xml:"securityType,omitempty"` - ProtocolEndpoint *bool `xml:"protocolEndpoint"` -} - -func init() { - t["HostNasVolume"] = reflect.TypeOf((*HostNasVolume)(nil)).Elem() -} - -type HostNasVolumeConfig struct { - DynamicData - - ChangeOperation string `xml:"changeOperation,omitempty"` - Spec *HostNasVolumeSpec `xml:"spec,omitempty"` -} - -func init() { - t["HostNasVolumeConfig"] = reflect.TypeOf((*HostNasVolumeConfig)(nil)).Elem() -} - -type HostNasVolumeSpec struct { - DynamicData - - RemoteHost string `xml:"remoteHost"` - RemotePath string `xml:"remotePath"` - LocalPath string `xml:"localPath"` - AccessMode string `xml:"accessMode"` - Type string `xml:"type,omitempty"` - UserName string `xml:"userName,omitempty"` - Password string `xml:"password,omitempty"` - RemoteHostNames []string `xml:"remoteHostNames,omitempty"` - SecurityType string `xml:"securityType,omitempty"` -} - -func init() { - t["HostNasVolumeSpec"] = reflect.TypeOf((*HostNasVolumeSpec)(nil)).Elem() -} - -type HostNasVolumeUserInfo struct { - DynamicData - - User string `xml:"user"` -} - -func init() { - t["HostNasVolumeUserInfo"] = reflect.TypeOf((*HostNasVolumeUserInfo)(nil)).Elem() -} - -type HostNatService struct { - DynamicData - - Key string `xml:"key"` - Spec HostNatServiceSpec `xml:"spec"` -} - -func init() { - t["HostNatService"] = reflect.TypeOf((*HostNatService)(nil)).Elem() -} - -type HostNatServiceConfig struct { - DynamicData - - ChangeOperation string `xml:"changeOperation,omitempty"` - Key string `xml:"key"` - Spec HostNatServiceSpec `xml:"spec"` -} - -func init() { - t["HostNatServiceConfig"] = reflect.TypeOf((*HostNatServiceConfig)(nil)).Elem() -} - -type HostNatServiceNameServiceSpec struct { - DynamicData - - DnsAutoDetect bool `xml:"dnsAutoDetect"` - DnsPolicy string `xml:"dnsPolicy"` - DnsRetries int32 `xml:"dnsRetries"` - DnsTimeout int32 `xml:"dnsTimeout"` - DnsNameServer []string `xml:"dnsNameServer,omitempty"` - NbdsTimeout int32 `xml:"nbdsTimeout"` - NbnsRetries int32 `xml:"nbnsRetries"` - NbnsTimeout int32 `xml:"nbnsTimeout"` -} - -func init() { - t["HostNatServiceNameServiceSpec"] = reflect.TypeOf((*HostNatServiceNameServiceSpec)(nil)).Elem() -} - -type HostNatServicePortForwardSpec struct { - DynamicData - - Type string `xml:"type"` - Name string `xml:"name"` - HostPort int32 `xml:"hostPort"` - GuestPort int32 `xml:"guestPort"` - GuestIpAddress string `xml:"guestIpAddress"` -} - -func init() { - t["HostNatServicePortForwardSpec"] = reflect.TypeOf((*HostNatServicePortForwardSpec)(nil)).Elem() -} - -type HostNatServiceSpec struct { - DynamicData - - VirtualSwitch string `xml:"virtualSwitch"` - ActiveFtp bool `xml:"activeFtp"` - AllowAnyOui bool `xml:"allowAnyOui"` - ConfigPort bool `xml:"configPort"` - IpGatewayAddress string `xml:"ipGatewayAddress"` - UdpTimeout int32 `xml:"udpTimeout"` - PortForward []HostNatServicePortForwardSpec `xml:"portForward,omitempty"` - NameService *HostNatServiceNameServiceSpec `xml:"nameService,omitempty"` -} - -func init() { - t["HostNatServiceSpec"] = reflect.TypeOf((*HostNatServiceSpec)(nil)).Elem() -} - -type HostNetCapabilities struct { - DynamicData - - CanSetPhysicalNicLinkSpeed bool `xml:"canSetPhysicalNicLinkSpeed"` - SupportsNicTeaming bool `xml:"supportsNicTeaming"` - NicTeamingPolicy []string `xml:"nicTeamingPolicy,omitempty"` - SupportsVlan bool `xml:"supportsVlan"` - UsesServiceConsoleNic bool `xml:"usesServiceConsoleNic"` - SupportsNetworkHints bool `xml:"supportsNetworkHints"` - MaxPortGroupsPerVswitch int32 `xml:"maxPortGroupsPerVswitch,omitempty"` - VswitchConfigSupported bool `xml:"vswitchConfigSupported"` - VnicConfigSupported bool `xml:"vnicConfigSupported"` - IpRouteConfigSupported bool `xml:"ipRouteConfigSupported"` - DnsConfigSupported bool `xml:"dnsConfigSupported"` - DhcpOnVnicSupported bool `xml:"dhcpOnVnicSupported"` - IpV6Supported *bool `xml:"ipV6Supported"` -} - -func init() { - t["HostNetCapabilities"] = reflect.TypeOf((*HostNetCapabilities)(nil)).Elem() -} - -type HostNetOffloadCapabilities struct { - DynamicData - - CsumOffload *bool `xml:"csumOffload"` - TcpSegmentation *bool `xml:"tcpSegmentation"` - ZeroCopyXmit *bool `xml:"zeroCopyXmit"` -} - -func init() { - t["HostNetOffloadCapabilities"] = reflect.TypeOf((*HostNetOffloadCapabilities)(nil)).Elem() -} - -type HostNetStackInstance struct { - DynamicData - - Key string `xml:"key,omitempty"` - Name string `xml:"name,omitempty"` - DnsConfig BaseHostDnsConfig `xml:"dnsConfig,omitempty,typeattr"` - IpRouteConfig BaseHostIpRouteConfig `xml:"ipRouteConfig,omitempty,typeattr"` - RequestedMaxNumberOfConnections int32 `xml:"requestedMaxNumberOfConnections,omitempty"` - CongestionControlAlgorithm string `xml:"congestionControlAlgorithm,omitempty"` - IpV6Enabled *bool `xml:"ipV6Enabled"` - RouteTableConfig *HostIpRouteTableConfig `xml:"routeTableConfig,omitempty"` -} - -func init() { - t["HostNetStackInstance"] = reflect.TypeOf((*HostNetStackInstance)(nil)).Elem() -} - -type HostNetworkConfig struct { - DynamicData - - Vswitch []HostVirtualSwitchConfig `xml:"vswitch,omitempty"` - ProxySwitch []HostProxySwitchConfig `xml:"proxySwitch,omitempty"` - Portgroup []HostPortGroupConfig `xml:"portgroup,omitempty"` - Pnic []PhysicalNicConfig `xml:"pnic,omitempty"` - Vnic []HostVirtualNicConfig `xml:"vnic,omitempty"` - ConsoleVnic []HostVirtualNicConfig `xml:"consoleVnic,omitempty"` - DnsConfig BaseHostDnsConfig `xml:"dnsConfig,omitempty,typeattr"` - IpRouteConfig BaseHostIpRouteConfig `xml:"ipRouteConfig,omitempty,typeattr"` - ConsoleIpRouteConfig BaseHostIpRouteConfig `xml:"consoleIpRouteConfig,omitempty,typeattr"` - RouteTableConfig *HostIpRouteTableConfig `xml:"routeTableConfig,omitempty"` - Dhcp []HostDhcpServiceConfig `xml:"dhcp,omitempty"` - Nat []HostNatServiceConfig `xml:"nat,omitempty"` - IpV6Enabled *bool `xml:"ipV6Enabled"` - NetStackSpec []HostNetworkConfigNetStackSpec `xml:"netStackSpec,omitempty"` -} - -func init() { - t["HostNetworkConfig"] = reflect.TypeOf((*HostNetworkConfig)(nil)).Elem() -} - -type HostNetworkConfigNetStackSpec struct { - DynamicData - - NetStackInstance HostNetStackInstance `xml:"netStackInstance"` - Operation string `xml:"operation,omitempty"` -} - -func init() { - t["HostNetworkConfigNetStackSpec"] = reflect.TypeOf((*HostNetworkConfigNetStackSpec)(nil)).Elem() -} - -type HostNetworkConfigResult struct { - DynamicData - - VnicDevice []string `xml:"vnicDevice,omitempty"` - ConsoleVnicDevice []string `xml:"consoleVnicDevice,omitempty"` -} - -func init() { - t["HostNetworkConfigResult"] = reflect.TypeOf((*HostNetworkConfigResult)(nil)).Elem() -} - -type HostNetworkInfo struct { - DynamicData - - Vswitch []HostVirtualSwitch `xml:"vswitch,omitempty"` - ProxySwitch []HostProxySwitch `xml:"proxySwitch,omitempty"` - Portgroup []HostPortGroup `xml:"portgroup,omitempty"` - Pnic []PhysicalNic `xml:"pnic,omitempty"` - Vnic []HostVirtualNic `xml:"vnic,omitempty"` - ConsoleVnic []HostVirtualNic `xml:"consoleVnic,omitempty"` - DnsConfig BaseHostDnsConfig `xml:"dnsConfig,omitempty,typeattr"` - IpRouteConfig BaseHostIpRouteConfig `xml:"ipRouteConfig,omitempty,typeattr"` - ConsoleIpRouteConfig BaseHostIpRouteConfig `xml:"consoleIpRouteConfig,omitempty,typeattr"` - RouteTableInfo *HostIpRouteTableInfo `xml:"routeTableInfo,omitempty"` - Dhcp []HostDhcpService `xml:"dhcp,omitempty"` - Nat []HostNatService `xml:"nat,omitempty"` - IpV6Enabled *bool `xml:"ipV6Enabled"` - AtBootIpV6Enabled *bool `xml:"atBootIpV6Enabled"` - NetStackInstance []HostNetStackInstance `xml:"netStackInstance,omitempty"` - OpaqueSwitch []HostOpaqueSwitch `xml:"opaqueSwitch,omitempty"` - OpaqueNetwork []HostOpaqueNetworkInfo `xml:"opaqueNetwork,omitempty"` -} - -func init() { - t["HostNetworkInfo"] = reflect.TypeOf((*HostNetworkInfo)(nil)).Elem() -} - -type HostNetworkPolicy struct { - DynamicData - - Security *HostNetworkSecurityPolicy `xml:"security,omitempty"` - NicTeaming *HostNicTeamingPolicy `xml:"nicTeaming,omitempty"` - OffloadPolicy *HostNetOffloadCapabilities `xml:"offloadPolicy,omitempty"` - ShapingPolicy *HostNetworkTrafficShapingPolicy `xml:"shapingPolicy,omitempty"` -} - -func init() { - t["HostNetworkPolicy"] = reflect.TypeOf((*HostNetworkPolicy)(nil)).Elem() -} - -type HostNetworkResourceRuntime struct { - DynamicData - - PnicResourceInfo []HostPnicNetworkResourceInfo `xml:"pnicResourceInfo"` -} - -func init() { - t["HostNetworkResourceRuntime"] = reflect.TypeOf((*HostNetworkResourceRuntime)(nil)).Elem() -} - -type HostNetworkSecurityPolicy struct { - DynamicData - - AllowPromiscuous *bool `xml:"allowPromiscuous"` - MacChanges *bool `xml:"macChanges"` - ForgedTransmits *bool `xml:"forgedTransmits"` -} - -func init() { - t["HostNetworkSecurityPolicy"] = reflect.TypeOf((*HostNetworkSecurityPolicy)(nil)).Elem() -} - -type HostNetworkTrafficShapingPolicy struct { - DynamicData - - Enabled *bool `xml:"enabled"` - AverageBandwidth int64 `xml:"averageBandwidth,omitempty"` - PeakBandwidth int64 `xml:"peakBandwidth,omitempty"` - BurstSize int64 `xml:"burstSize,omitempty"` -} - -func init() { - t["HostNetworkTrafficShapingPolicy"] = reflect.TypeOf((*HostNetworkTrafficShapingPolicy)(nil)).Elem() -} - -type HostNewNetworkConnectInfo struct { - HostConnectInfoNetworkInfo -} - -func init() { - t["HostNewNetworkConnectInfo"] = reflect.TypeOf((*HostNewNetworkConnectInfo)(nil)).Elem() -} - -type HostNicFailureCriteria struct { - DynamicData - - CheckSpeed string `xml:"checkSpeed,omitempty"` - Speed int32 `xml:"speed,omitempty"` - CheckDuplex *bool `xml:"checkDuplex"` - FullDuplex *bool `xml:"fullDuplex"` - CheckErrorPercent *bool `xml:"checkErrorPercent"` - Percentage int32 `xml:"percentage,omitempty"` - CheckBeacon *bool `xml:"checkBeacon"` -} - -func init() { - t["HostNicFailureCriteria"] = reflect.TypeOf((*HostNicFailureCriteria)(nil)).Elem() -} - -type HostNicOrderPolicy struct { - DynamicData - - ActiveNic []string `xml:"activeNic,omitempty"` - StandbyNic []string `xml:"standbyNic,omitempty"` -} - -func init() { - t["HostNicOrderPolicy"] = reflect.TypeOf((*HostNicOrderPolicy)(nil)).Elem() -} - -type HostNicTeamingPolicy struct { - DynamicData - - Policy string `xml:"policy,omitempty"` - ReversePolicy *bool `xml:"reversePolicy"` - NotifySwitches *bool `xml:"notifySwitches"` - RollingOrder *bool `xml:"rollingOrder"` - FailureCriteria *HostNicFailureCriteria `xml:"failureCriteria,omitempty"` - NicOrder *HostNicOrderPolicy `xml:"nicOrder,omitempty"` -} - -func init() { - t["HostNicTeamingPolicy"] = reflect.TypeOf((*HostNicTeamingPolicy)(nil)).Elem() -} - -type HostNoAvailableNetworksEvent struct { - HostDasEvent - - Ips string `xml:"ips,omitempty"` -} - -func init() { - t["HostNoAvailableNetworksEvent"] = reflect.TypeOf((*HostNoAvailableNetworksEvent)(nil)).Elem() -} - -type HostNoHAEnabledPortGroupsEvent struct { - HostDasEvent -} - -func init() { - t["HostNoHAEnabledPortGroupsEvent"] = reflect.TypeOf((*HostNoHAEnabledPortGroupsEvent)(nil)).Elem() -} - -type HostNoRedundantManagementNetworkEvent struct { - HostDasEvent -} - -func init() { - t["HostNoRedundantManagementNetworkEvent"] = reflect.TypeOf((*HostNoRedundantManagementNetworkEvent)(nil)).Elem() -} - -type HostNonCompliantEvent struct { - HostEvent -} - -func init() { - t["HostNonCompliantEvent"] = reflect.TypeOf((*HostNonCompliantEvent)(nil)).Elem() -} - -type HostNotConnected struct { - HostCommunication -} - -func init() { - t["HostNotConnected"] = reflect.TypeOf((*HostNotConnected)(nil)).Elem() -} - -type HostNotConnectedFault HostNotConnected - -func init() { - t["HostNotConnectedFault"] = reflect.TypeOf((*HostNotConnectedFault)(nil)).Elem() -} - -type HostNotInClusterEvent struct { - HostDasEvent -} - -func init() { - t["HostNotInClusterEvent"] = reflect.TypeOf((*HostNotInClusterEvent)(nil)).Elem() -} - -type HostNotReachable struct { - HostCommunication -} - -func init() { - t["HostNotReachable"] = reflect.TypeOf((*HostNotReachable)(nil)).Elem() -} - -type HostNotReachableFault HostNotReachable - -func init() { - t["HostNotReachableFault"] = reflect.TypeOf((*HostNotReachableFault)(nil)).Elem() -} - -type HostNtpConfig struct { - DynamicData - - Server []string `xml:"server,omitempty"` - ConfigFile []string `xml:"configFile,omitempty"` -} - -func init() { - t["HostNtpConfig"] = reflect.TypeOf((*HostNtpConfig)(nil)).Elem() -} - -type HostNumaInfo struct { - DynamicData - - Type string `xml:"type"` - NumNodes int32 `xml:"numNodes"` - NumaNode []HostNumaNode `xml:"numaNode,omitempty"` -} - -func init() { - t["HostNumaInfo"] = reflect.TypeOf((*HostNumaInfo)(nil)).Elem() -} - -type HostNumaNode struct { - DynamicData - - TypeId byte `xml:"typeId"` - CpuID []int16 `xml:"cpuID"` - MemoryRangeBegin int64 `xml:"memoryRangeBegin"` - MemoryRangeLength int64 `xml:"memoryRangeLength"` -} - -func init() { - t["HostNumaNode"] = reflect.TypeOf((*HostNumaNode)(nil)).Elem() -} - -type HostNumericSensorInfo struct { - DynamicData - - Name string `xml:"name"` - HealthState BaseElementDescription `xml:"healthState,omitempty,typeattr"` - CurrentReading int64 `xml:"currentReading"` - UnitModifier int32 `xml:"unitModifier"` - BaseUnits string `xml:"baseUnits"` - RateUnits string `xml:"rateUnits,omitempty"` - SensorType string `xml:"sensorType"` -} - -func init() { - t["HostNumericSensorInfo"] = reflect.TypeOf((*HostNumericSensorInfo)(nil)).Elem() -} - -type HostOpaqueNetworkInfo struct { - DynamicData - - OpaqueNetworkId string `xml:"opaqueNetworkId"` - OpaqueNetworkName string `xml:"opaqueNetworkName"` - OpaqueNetworkType string `xml:"opaqueNetworkType"` - PnicZone []string `xml:"pnicZone,omitempty"` -} - -func init() { - t["HostOpaqueNetworkInfo"] = reflect.TypeOf((*HostOpaqueNetworkInfo)(nil)).Elem() -} - -type HostOpaqueSwitch struct { - DynamicData - - Key string `xml:"key"` - Name string `xml:"name,omitempty"` - Pnic []string `xml:"pnic,omitempty"` - PnicZone []HostOpaqueSwitchPhysicalNicZone `xml:"pnicZone,omitempty"` - Status string `xml:"status,omitempty"` - Vtep []HostVirtualNic `xml:"vtep,omitempty"` -} - -func init() { - t["HostOpaqueSwitch"] = reflect.TypeOf((*HostOpaqueSwitch)(nil)).Elem() -} - -type HostOpaqueSwitchPhysicalNicZone struct { - DynamicData - - Key string `xml:"key"` - PnicDevice []string `xml:"pnicDevice,omitempty"` -} - -func init() { - t["HostOpaqueSwitchPhysicalNicZone"] = reflect.TypeOf((*HostOpaqueSwitchPhysicalNicZone)(nil)).Elem() -} - -type HostOvercommittedEvent struct { - ClusterOvercommittedEvent -} - -func init() { - t["HostOvercommittedEvent"] = reflect.TypeOf((*HostOvercommittedEvent)(nil)).Elem() -} - -type HostParallelScsiHba struct { - HostHostBusAdapter -} - -func init() { - t["HostParallelScsiHba"] = reflect.TypeOf((*HostParallelScsiHba)(nil)).Elem() -} - -type HostParallelScsiTargetTransport struct { - HostTargetTransport -} - -func init() { - t["HostParallelScsiTargetTransport"] = reflect.TypeOf((*HostParallelScsiTargetTransport)(nil)).Elem() -} - -type HostPatchManagerLocator struct { - DynamicData - - Url string `xml:"url"` - Proxy string `xml:"proxy,omitempty"` -} - -func init() { - t["HostPatchManagerLocator"] = reflect.TypeOf((*HostPatchManagerLocator)(nil)).Elem() -} - -type HostPatchManagerPatchManagerOperationSpec struct { - DynamicData - - Proxy string `xml:"proxy,omitempty"` - Port int32 `xml:"port,omitempty"` - UserName string `xml:"userName,omitempty"` - Password string `xml:"password,omitempty"` - CmdOption string `xml:"cmdOption,omitempty"` -} - -func init() { - t["HostPatchManagerPatchManagerOperationSpec"] = reflect.TypeOf((*HostPatchManagerPatchManagerOperationSpec)(nil)).Elem() -} - -type HostPatchManagerResult struct { - DynamicData - - Version string `xml:"version"` - Status []HostPatchManagerStatus `xml:"status,omitempty"` - XmlResult string `xml:"xmlResult,omitempty"` -} - -func init() { - t["HostPatchManagerResult"] = reflect.TypeOf((*HostPatchManagerResult)(nil)).Elem() -} - -type HostPatchManagerStatus struct { - DynamicData - - Id string `xml:"id"` - Applicable bool `xml:"applicable"` - Reason []string `xml:"reason,omitempty"` - Integrity string `xml:"integrity,omitempty"` - Installed bool `xml:"installed"` - InstallState []string `xml:"installState,omitempty"` - PrerequisitePatch []HostPatchManagerStatusPrerequisitePatch `xml:"prerequisitePatch,omitempty"` - RestartRequired bool `xml:"restartRequired"` - ReconnectRequired bool `xml:"reconnectRequired"` - VmOffRequired bool `xml:"vmOffRequired"` - SupersededPatchIds []string `xml:"supersededPatchIds,omitempty"` -} - -func init() { - t["HostPatchManagerStatus"] = reflect.TypeOf((*HostPatchManagerStatus)(nil)).Elem() -} - -type HostPatchManagerStatusPrerequisitePatch struct { - DynamicData - - Id string `xml:"id"` - InstallState []string `xml:"installState,omitempty"` -} - -func init() { - t["HostPatchManagerStatusPrerequisitePatch"] = reflect.TypeOf((*HostPatchManagerStatusPrerequisitePatch)(nil)).Elem() -} - -type HostPathSelectionPolicyOption struct { - DynamicData - - Policy BaseElementDescription `xml:"policy,typeattr"` -} - -func init() { - t["HostPathSelectionPolicyOption"] = reflect.TypeOf((*HostPathSelectionPolicyOption)(nil)).Elem() -} - -type HostPciDevice struct { - DynamicData - - Id string `xml:"id"` - ClassId int16 `xml:"classId"` - Bus byte `xml:"bus"` - Slot byte `xml:"slot"` - Function byte `xml:"function"` - VendorId int16 `xml:"vendorId"` - SubVendorId int16 `xml:"subVendorId"` - VendorName string `xml:"vendorName"` - DeviceId int16 `xml:"deviceId"` - SubDeviceId int16 `xml:"subDeviceId"` - ParentBridge string `xml:"parentBridge,omitempty"` - DeviceName string `xml:"deviceName"` -} - -func init() { - t["HostPciDevice"] = reflect.TypeOf((*HostPciDevice)(nil)).Elem() -} - -type HostPciPassthruConfig struct { - DynamicData - - Id string `xml:"id"` - PassthruEnabled bool `xml:"passthruEnabled"` -} - -func init() { - t["HostPciPassthruConfig"] = reflect.TypeOf((*HostPciPassthruConfig)(nil)).Elem() -} - -type HostPciPassthruInfo struct { - DynamicData - - Id string `xml:"id"` - DependentDevice string `xml:"dependentDevice"` - PassthruEnabled bool `xml:"passthruEnabled"` - PassthruCapable bool `xml:"passthruCapable"` - PassthruActive bool `xml:"passthruActive"` -} - -func init() { - t["HostPciPassthruInfo"] = reflect.TypeOf((*HostPciPassthruInfo)(nil)).Elem() -} - -type HostPlacedVirtualNicIdentifier struct { - DynamicData - - Vm ManagedObjectReference `xml:"vm"` - VnicKey string `xml:"vnicKey"` - Reservation int32 `xml:"reservation,omitempty"` -} - -func init() { - t["HostPlacedVirtualNicIdentifier"] = reflect.TypeOf((*HostPlacedVirtualNicIdentifier)(nil)).Elem() -} - -type HostPlugStoreTopology struct { - DynamicData - - Adapter []HostPlugStoreTopologyAdapter `xml:"adapter,omitempty"` - Path []HostPlugStoreTopologyPath `xml:"path,omitempty"` - Target []HostPlugStoreTopologyTarget `xml:"target,omitempty"` - Device []HostPlugStoreTopologyDevice `xml:"device,omitempty"` - Plugin []HostPlugStoreTopologyPlugin `xml:"plugin,omitempty"` -} - -func init() { - t["HostPlugStoreTopology"] = reflect.TypeOf((*HostPlugStoreTopology)(nil)).Elem() -} - -type HostPlugStoreTopologyAdapter struct { - DynamicData - - Key string `xml:"key"` - Adapter string `xml:"adapter"` - Path []string `xml:"path,omitempty"` -} - -func init() { - t["HostPlugStoreTopologyAdapter"] = reflect.TypeOf((*HostPlugStoreTopologyAdapter)(nil)).Elem() -} - -type HostPlugStoreTopologyDevice struct { - DynamicData - - Key string `xml:"key"` - Lun string `xml:"lun"` - Path []string `xml:"path,omitempty"` -} - -func init() { - t["HostPlugStoreTopologyDevice"] = reflect.TypeOf((*HostPlugStoreTopologyDevice)(nil)).Elem() -} - -type HostPlugStoreTopologyPath struct { - DynamicData - - Key string `xml:"key"` - Name string `xml:"name"` - ChannelNumber int32 `xml:"channelNumber,omitempty"` - TargetNumber int32 `xml:"targetNumber,omitempty"` - LunNumber int32 `xml:"lunNumber,omitempty"` - Adapter string `xml:"adapter,omitempty"` - Target string `xml:"target,omitempty"` - Device string `xml:"device,omitempty"` -} - -func init() { - t["HostPlugStoreTopologyPath"] = reflect.TypeOf((*HostPlugStoreTopologyPath)(nil)).Elem() -} - -type HostPlugStoreTopologyPlugin struct { - DynamicData - - Key string `xml:"key"` - Name string `xml:"name"` - Device []string `xml:"device,omitempty"` - ClaimedPath []string `xml:"claimedPath,omitempty"` -} - -func init() { - t["HostPlugStoreTopologyPlugin"] = reflect.TypeOf((*HostPlugStoreTopologyPlugin)(nil)).Elem() -} - -type HostPlugStoreTopologyTarget struct { - DynamicData - - Key string `xml:"key"` - Transport BaseHostTargetTransport `xml:"transport,omitempty,typeattr"` -} - -func init() { - t["HostPlugStoreTopologyTarget"] = reflect.TypeOf((*HostPlugStoreTopologyTarget)(nil)).Elem() -} - -type HostPnicNetworkResourceInfo struct { - DynamicData - - PnicDevice string `xml:"pnicDevice"` - AvailableBandwidthForVMTraffic int64 `xml:"availableBandwidthForVMTraffic,omitempty"` - UnusedBandwidthForVMTraffic int64 `xml:"unusedBandwidthForVMTraffic,omitempty"` - PlacedVirtualNics []HostPlacedVirtualNicIdentifier `xml:"placedVirtualNics,omitempty"` -} - -func init() { - t["HostPnicNetworkResourceInfo"] = reflect.TypeOf((*HostPnicNetworkResourceInfo)(nil)).Elem() -} - -type HostPortGroup struct { - DynamicData - - Key string `xml:"key,omitempty"` - Port []HostPortGroupPort `xml:"port,omitempty"` - Vswitch string `xml:"vswitch,omitempty"` - ComputedPolicy HostNetworkPolicy `xml:"computedPolicy"` - Spec HostPortGroupSpec `xml:"spec"` -} - -func init() { - t["HostPortGroup"] = reflect.TypeOf((*HostPortGroup)(nil)).Elem() -} - -type HostPortGroupConfig struct { - DynamicData - - ChangeOperation string `xml:"changeOperation,omitempty"` - Spec *HostPortGroupSpec `xml:"spec,omitempty"` -} - -func init() { - t["HostPortGroupConfig"] = reflect.TypeOf((*HostPortGroupConfig)(nil)).Elem() -} - -type HostPortGroupPort struct { - DynamicData - - Key string `xml:"key,omitempty"` - Mac []string `xml:"mac,omitempty"` - Type string `xml:"type"` -} - -func init() { - t["HostPortGroupPort"] = reflect.TypeOf((*HostPortGroupPort)(nil)).Elem() -} - -type HostPortGroupProfile struct { - PortGroupProfile - - IpConfig IpAddressProfile `xml:"ipConfig"` -} - -func init() { - t["HostPortGroupProfile"] = reflect.TypeOf((*HostPortGroupProfile)(nil)).Elem() -} - -type HostPortGroupSpec struct { - DynamicData - - Name string `xml:"name"` - VlanId int32 `xml:"vlanId"` - VswitchName string `xml:"vswitchName"` - Policy HostNetworkPolicy `xml:"policy"` -} - -func init() { - t["HostPortGroupSpec"] = reflect.TypeOf((*HostPortGroupSpec)(nil)).Elem() -} - -type HostPosixAccountSpec struct { - HostAccountSpec - - PosixId int32 `xml:"posixId,omitempty"` - ShellAccess *bool `xml:"shellAccess"` -} - -func init() { - t["HostPosixAccountSpec"] = reflect.TypeOf((*HostPosixAccountSpec)(nil)).Elem() -} - -type HostPowerOpFailed struct { - VimFault -} - -func init() { - t["HostPowerOpFailed"] = reflect.TypeOf((*HostPowerOpFailed)(nil)).Elem() -} - -type HostPowerOpFailedFault BaseHostPowerOpFailed - -func init() { - t["HostPowerOpFailedFault"] = reflect.TypeOf((*HostPowerOpFailedFault)(nil)).Elem() -} - -type HostPowerPolicy struct { - DynamicData - - Key int32 `xml:"key"` - Name string `xml:"name"` - ShortName string `xml:"shortName"` - Description string `xml:"description"` -} - -func init() { - t["HostPowerPolicy"] = reflect.TypeOf((*HostPowerPolicy)(nil)).Elem() -} - -type HostPrimaryAgentNotShortNameEvent struct { - HostDasEvent - - PrimaryAgent string `xml:"primaryAgent"` -} - -func init() { - t["HostPrimaryAgentNotShortNameEvent"] = reflect.TypeOf((*HostPrimaryAgentNotShortNameEvent)(nil)).Elem() -} - -type HostProfileAppliedEvent struct { - HostEvent - - Profile ProfileEventArgument `xml:"profile"` -} - -func init() { - t["HostProfileAppliedEvent"] = reflect.TypeOf((*HostProfileAppliedEvent)(nil)).Elem() -} - -type HostProfileCompleteConfigSpec struct { - HostProfileConfigSpec - - ApplyProfile *HostApplyProfile `xml:"applyProfile,omitempty"` - CustomComplyProfile *ComplianceProfile `xml:"customComplyProfile,omitempty"` - DisabledExpressionListChanged bool `xml:"disabledExpressionListChanged"` - DisabledExpressionList []string `xml:"disabledExpressionList,omitempty"` - ValidatorHost *ManagedObjectReference `xml:"validatorHost,omitempty"` - Validating *bool `xml:"validating"` -} - -func init() { - t["HostProfileCompleteConfigSpec"] = reflect.TypeOf((*HostProfileCompleteConfigSpec)(nil)).Elem() -} - -type HostProfileConfigInfo struct { - ProfileConfigInfo - - ApplyProfile *HostApplyProfile `xml:"applyProfile,omitempty"` - DefaultComplyProfile *ComplianceProfile `xml:"defaultComplyProfile,omitempty"` - DefaultComplyLocator []ComplianceLocator `xml:"defaultComplyLocator,omitempty"` - CustomComplyProfile *ComplianceProfile `xml:"customComplyProfile,omitempty"` - DisabledExpressionList []string `xml:"disabledExpressionList,omitempty"` -} - -func init() { - t["HostProfileConfigInfo"] = reflect.TypeOf((*HostProfileConfigInfo)(nil)).Elem() -} - -type HostProfileConfigSpec struct { - ProfileCreateSpec -} - -func init() { - t["HostProfileConfigSpec"] = reflect.TypeOf((*HostProfileConfigSpec)(nil)).Elem() -} - -type HostProfileHostBasedConfigSpec struct { - HostProfileConfigSpec - - Host ManagedObjectReference `xml:"host"` - UseHostProfileEngine *bool `xml:"useHostProfileEngine"` -} - -func init() { - t["HostProfileHostBasedConfigSpec"] = reflect.TypeOf((*HostProfileHostBasedConfigSpec)(nil)).Elem() -} - -type HostProfileManagerConfigTaskList struct { - DynamicData - - ConfigSpec *HostConfigSpec `xml:"configSpec,omitempty"` - TaskDescription []LocalizableMessage `xml:"taskDescription,omitempty"` - TaskListRequirement []string `xml:"taskListRequirement,omitempty"` -} - -func init() { - t["HostProfileManagerConfigTaskList"] = reflect.TypeOf((*HostProfileManagerConfigTaskList)(nil)).Elem() -} - -type HostProfileSerializedHostProfileSpec struct { - ProfileSerializedCreateSpec - - ValidatorHost *ManagedObjectReference `xml:"validatorHost,omitempty"` - Validating *bool `xml:"validating"` -} - -func init() { - t["HostProfileSerializedHostProfileSpec"] = reflect.TypeOf((*HostProfileSerializedHostProfileSpec)(nil)).Elem() -} - -type HostProtocolEndpoint struct { - DynamicData - - PeType string `xml:"peType"` - Uuid string `xml:"uuid"` - HostKey []ManagedObjectReference `xml:"hostKey,omitempty"` - StorageArray string `xml:"storageArray,omitempty"` - NfsServer string `xml:"nfsServer,omitempty"` - NfsDir string `xml:"nfsDir,omitempty"` - DeviceId string `xml:"deviceId,omitempty"` -} - -func init() { - t["HostProtocolEndpoint"] = reflect.TypeOf((*HostProtocolEndpoint)(nil)).Elem() -} - -type HostProxySwitch struct { - DynamicData - - DvsUuid string `xml:"dvsUuid"` - DvsName string `xml:"dvsName"` - Key string `xml:"key"` - NumPorts int32 `xml:"numPorts"` - ConfigNumPorts int32 `xml:"configNumPorts,omitempty"` - NumPortsAvailable int32 `xml:"numPortsAvailable"` - UplinkPort []KeyValue `xml:"uplinkPort,omitempty"` - Mtu int32 `xml:"mtu,omitempty"` - Pnic []string `xml:"pnic,omitempty"` - Spec HostProxySwitchSpec `xml:"spec"` - HostLag []HostProxySwitchHostLagConfig `xml:"hostLag,omitempty"` - NetworkReservationSupported *bool `xml:"networkReservationSupported"` -} - -func init() { - t["HostProxySwitch"] = reflect.TypeOf((*HostProxySwitch)(nil)).Elem() -} - -type HostProxySwitchConfig struct { - DynamicData - - ChangeOperation string `xml:"changeOperation,omitempty"` - Uuid string `xml:"uuid"` - Spec *HostProxySwitchSpec `xml:"spec,omitempty"` -} - -func init() { - t["HostProxySwitchConfig"] = reflect.TypeOf((*HostProxySwitchConfig)(nil)).Elem() -} - -type HostProxySwitchHostLagConfig struct { - DynamicData - - LagKey string `xml:"lagKey"` - LagName string `xml:"lagName,omitempty"` - UplinkPort []KeyValue `xml:"uplinkPort,omitempty"` -} - -func init() { - t["HostProxySwitchHostLagConfig"] = reflect.TypeOf((*HostProxySwitchHostLagConfig)(nil)).Elem() -} - -type HostProxySwitchSpec struct { - DynamicData - - Backing BaseDistributedVirtualSwitchHostMemberBacking `xml:"backing,omitempty,typeattr"` -} - -func init() { - t["HostProxySwitchSpec"] = reflect.TypeOf((*HostProxySwitchSpec)(nil)).Elem() -} - -type HostReconnectionFailedEvent struct { - HostEvent -} - -func init() { - t["HostReconnectionFailedEvent"] = reflect.TypeOf((*HostReconnectionFailedEvent)(nil)).Elem() -} - -type HostReliableMemoryInfo struct { - DynamicData - - MemorySize int64 `xml:"memorySize"` -} - -func init() { - t["HostReliableMemoryInfo"] = reflect.TypeOf((*HostReliableMemoryInfo)(nil)).Elem() -} - -type HostRemoveVFlashResource HostRemoveVFlashResourceRequestType - -func init() { - t["HostRemoveVFlashResource"] = reflect.TypeOf((*HostRemoveVFlashResource)(nil)).Elem() -} - -type HostRemoveVFlashResourceRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["HostRemoveVFlashResourceRequestType"] = reflect.TypeOf((*HostRemoveVFlashResourceRequestType)(nil)).Elem() -} - -type HostRemoveVFlashResourceResponse struct { -} - -type HostRemovedEvent struct { - HostEvent -} - -func init() { - t["HostRemovedEvent"] = reflect.TypeOf((*HostRemovedEvent)(nil)).Elem() -} - -type HostResignatureRescanResult struct { - DynamicData - - Rescan []HostVmfsRescanResult `xml:"rescan,omitempty"` - Result ManagedObjectReference `xml:"result"` -} - -func init() { - t["HostResignatureRescanResult"] = reflect.TypeOf((*HostResignatureRescanResult)(nil)).Elem() -} - -type HostRuntimeInfo struct { - DynamicData - - ConnectionState HostSystemConnectionState `xml:"connectionState"` - PowerState HostSystemPowerState `xml:"powerState"` - StandbyMode string `xml:"standbyMode,omitempty"` - InMaintenanceMode bool `xml:"inMaintenanceMode"` - BootTime *time.Time `xml:"bootTime"` - HealthSystemRuntime *HealthSystemRuntime `xml:"healthSystemRuntime,omitempty"` - DasHostState *ClusterDasFdmHostState `xml:"dasHostState,omitempty"` - TpmPcrValues []HostTpmDigestInfo `xml:"tpmPcrValues,omitempty"` - VsanRuntimeInfo *VsanHostRuntimeInfo `xml:"vsanRuntimeInfo,omitempty"` - NetworkRuntimeInfo *HostRuntimeInfoNetworkRuntimeInfo `xml:"networkRuntimeInfo,omitempty"` - VFlashResourceRuntimeInfo *HostVFlashManagerVFlashResourceRunTimeInfo `xml:"vFlashResourceRuntimeInfo,omitempty"` - HostMaxVirtualDiskCapacity int64 `xml:"hostMaxVirtualDiskCapacity,omitempty"` -} - -func init() { - t["HostRuntimeInfo"] = reflect.TypeOf((*HostRuntimeInfo)(nil)).Elem() -} - -type HostRuntimeInfoNetStackInstanceRuntimeInfo struct { - DynamicData - - NetStackInstanceKey string `xml:"netStackInstanceKey"` - State string `xml:"state,omitempty"` - VmknicKeys []string `xml:"vmknicKeys,omitempty"` - MaxNumberOfConnections int32 `xml:"maxNumberOfConnections,omitempty"` - CurrentIpV6Enabled *bool `xml:"currentIpV6Enabled"` -} - -func init() { - t["HostRuntimeInfoNetStackInstanceRuntimeInfo"] = reflect.TypeOf((*HostRuntimeInfoNetStackInstanceRuntimeInfo)(nil)).Elem() -} - -type HostRuntimeInfoNetworkRuntimeInfo struct { - DynamicData - - NetStackInstanceRuntimeInfo []HostRuntimeInfoNetStackInstanceRuntimeInfo `xml:"netStackInstanceRuntimeInfo,omitempty"` - NetworkResourceRuntime *HostNetworkResourceRuntime `xml:"networkResourceRuntime,omitempty"` -} - -func init() { - t["HostRuntimeInfoNetworkRuntimeInfo"] = reflect.TypeOf((*HostRuntimeInfoNetworkRuntimeInfo)(nil)).Elem() -} - -type HostScsiDisk struct { - ScsiLun - - Capacity HostDiskDimensionsLba `xml:"capacity"` - DevicePath string `xml:"devicePath"` - Ssd *bool `xml:"ssd"` - LocalDisk *bool `xml:"localDisk"` - PhysicalLocation []string `xml:"physicalLocation,omitempty"` - EmulatedDIXDIFEnabled *bool `xml:"emulatedDIXDIFEnabled"` - VsanDiskInfo *VsanHostVsanDiskInfo `xml:"vsanDiskInfo,omitempty"` -} - -func init() { - t["HostScsiDisk"] = reflect.TypeOf((*HostScsiDisk)(nil)).Elem() -} - -type HostScsiDiskPartition struct { - DynamicData - - DiskName string `xml:"diskName"` - Partition int32 `xml:"partition"` -} - -func init() { - t["HostScsiDiskPartition"] = reflect.TypeOf((*HostScsiDiskPartition)(nil)).Elem() -} - -type HostScsiTopology struct { - DynamicData - - Adapter []HostScsiTopologyInterface `xml:"adapter,omitempty"` -} - -func init() { - t["HostScsiTopology"] = reflect.TypeOf((*HostScsiTopology)(nil)).Elem() -} - -type HostScsiTopologyInterface struct { - DynamicData - - Key string `xml:"key"` - Adapter string `xml:"adapter"` - Target []HostScsiTopologyTarget `xml:"target,omitempty"` -} - -func init() { - t["HostScsiTopologyInterface"] = reflect.TypeOf((*HostScsiTopologyInterface)(nil)).Elem() -} - -type HostScsiTopologyLun struct { - DynamicData - - Key string `xml:"key"` - Lun int32 `xml:"lun"` - ScsiLun string `xml:"scsiLun"` -} - -func init() { - t["HostScsiTopologyLun"] = reflect.TypeOf((*HostScsiTopologyLun)(nil)).Elem() -} - -type HostScsiTopologyTarget struct { - DynamicData - - Key string `xml:"key"` - Target int32 `xml:"target"` - Lun []HostScsiTopologyLun `xml:"lun,omitempty"` - Transport BaseHostTargetTransport `xml:"transport,omitempty,typeattr"` -} - -func init() { - t["HostScsiTopologyTarget"] = reflect.TypeOf((*HostScsiTopologyTarget)(nil)).Elem() -} - -type HostSecuritySpec struct { - DynamicData - - AdminPassword string `xml:"adminPassword,omitempty"` - RemovePermission []Permission `xml:"removePermission,omitempty"` - AddPermission []Permission `xml:"addPermission,omitempty"` -} - -func init() { - t["HostSecuritySpec"] = reflect.TypeOf((*HostSecuritySpec)(nil)).Elem() -} - -type HostService struct { - DynamicData - - Key string `xml:"key"` - Label string `xml:"label"` - Required bool `xml:"required"` - Uninstallable bool `xml:"uninstallable"` - Running bool `xml:"running"` - Ruleset []string `xml:"ruleset,omitempty"` - Policy string `xml:"policy"` - SourcePackage *HostServiceSourcePackage `xml:"sourcePackage,omitempty"` -} - -func init() { - t["HostService"] = reflect.TypeOf((*HostService)(nil)).Elem() -} - -type HostServiceConfig struct { - DynamicData - - ServiceId string `xml:"serviceId"` - StartupPolicy string `xml:"startupPolicy"` -} - -func init() { - t["HostServiceConfig"] = reflect.TypeOf((*HostServiceConfig)(nil)).Elem() -} - -type HostServiceInfo struct { - DynamicData - - Service []HostService `xml:"service,omitempty"` -} - -func init() { - t["HostServiceInfo"] = reflect.TypeOf((*HostServiceInfo)(nil)).Elem() -} - -type HostServiceSourcePackage struct { - DynamicData - - SourcePackageName string `xml:"sourcePackageName"` - Description string `xml:"description"` -} - -func init() { - t["HostServiceSourcePackage"] = reflect.TypeOf((*HostServiceSourcePackage)(nil)).Elem() -} - -type HostServiceTicket struct { - DynamicData - - Host string `xml:"host,omitempty"` - Port int32 `xml:"port,omitempty"` - SslThumbprint string `xml:"sslThumbprint,omitempty"` - Service string `xml:"service"` - ServiceVersion string `xml:"serviceVersion"` - SessionId string `xml:"sessionId"` -} - -func init() { - t["HostServiceTicket"] = reflect.TypeOf((*HostServiceTicket)(nil)).Elem() -} - -type HostShortNameInconsistentEvent struct { - HostDasEvent - - ShortName string `xml:"shortName"` - ShortName2 string `xml:"shortName2"` -} - -func init() { - t["HostShortNameInconsistentEvent"] = reflect.TypeOf((*HostShortNameInconsistentEvent)(nil)).Elem() -} - -type HostShortNameToIpFailedEvent struct { - HostEvent - - ShortName string `xml:"shortName"` -} - -func init() { - t["HostShortNameToIpFailedEvent"] = reflect.TypeOf((*HostShortNameToIpFailedEvent)(nil)).Elem() -} - -type HostShutdownEvent struct { - HostEvent - - Reason string `xml:"reason"` -} - -func init() { - t["HostShutdownEvent"] = reflect.TypeOf((*HostShutdownEvent)(nil)).Elem() -} - -type HostSnmpConfigSpec struct { - DynamicData - - Enabled *bool `xml:"enabled"` - Port int32 `xml:"port,omitempty"` - ReadOnlyCommunities []string `xml:"readOnlyCommunities,omitempty"` - TrapTargets []HostSnmpDestination `xml:"trapTargets,omitempty"` - Option []KeyValue `xml:"option,omitempty"` -} - -func init() { - t["HostSnmpConfigSpec"] = reflect.TypeOf((*HostSnmpConfigSpec)(nil)).Elem() -} - -type HostSnmpDestination struct { - DynamicData - - HostName string `xml:"hostName"` - Port int32 `xml:"port"` - Community string `xml:"community"` -} - -func init() { - t["HostSnmpDestination"] = reflect.TypeOf((*HostSnmpDestination)(nil)).Elem() -} - -type HostSnmpSystemAgentLimits struct { - DynamicData - - MaxReadOnlyCommunities int32 `xml:"maxReadOnlyCommunities"` - MaxTrapDestinations int32 `xml:"maxTrapDestinations"` - MaxCommunityLength int32 `xml:"maxCommunityLength"` - MaxBufferSize int32 `xml:"maxBufferSize"` - Capability HostSnmpAgentCapability `xml:"capability,omitempty"` -} - -func init() { - t["HostSnmpSystemAgentLimits"] = reflect.TypeOf((*HostSnmpSystemAgentLimits)(nil)).Elem() -} - -type HostSriovConfig struct { - HostPciPassthruConfig - - SriovEnabled bool `xml:"sriovEnabled"` - NumVirtualFunction int32 `xml:"numVirtualFunction"` -} - -func init() { - t["HostSriovConfig"] = reflect.TypeOf((*HostSriovConfig)(nil)).Elem() -} - -type HostSriovInfo struct { - HostPciPassthruInfo - - SriovEnabled bool `xml:"sriovEnabled"` - SriovCapable bool `xml:"sriovCapable"` - SriovActive bool `xml:"sriovActive"` - NumVirtualFunctionRequested int32 `xml:"numVirtualFunctionRequested"` - NumVirtualFunction int32 `xml:"numVirtualFunction"` - MaxVirtualFunctionSupported int32 `xml:"maxVirtualFunctionSupported"` -} - -func init() { - t["HostSriovInfo"] = reflect.TypeOf((*HostSriovInfo)(nil)).Elem() -} - -type HostSslThumbprintInfo struct { - DynamicData - - Principal string `xml:"principal"` - OwnerTag string `xml:"ownerTag,omitempty"` - SslThumbprints []string `xml:"sslThumbprints,omitempty"` -} - -func init() { - t["HostSslThumbprintInfo"] = reflect.TypeOf((*HostSslThumbprintInfo)(nil)).Elem() -} - -type HostStatusChangedEvent struct { - ClusterStatusChangedEvent -} - -func init() { - t["HostStatusChangedEvent"] = reflect.TypeOf((*HostStatusChangedEvent)(nil)).Elem() -} - -type HostStorageArrayTypePolicyOption struct { - DynamicData - - Policy BaseElementDescription `xml:"policy,typeattr"` -} - -func init() { - t["HostStorageArrayTypePolicyOption"] = reflect.TypeOf((*HostStorageArrayTypePolicyOption)(nil)).Elem() -} - -type HostStorageDeviceInfo struct { - DynamicData - - HostBusAdapter []BaseHostHostBusAdapter `xml:"hostBusAdapter,omitempty,typeattr"` - ScsiLun []BaseScsiLun `xml:"scsiLun,omitempty,typeattr"` - ScsiTopology *HostScsiTopology `xml:"scsiTopology,omitempty"` - MultipathInfo *HostMultipathInfo `xml:"multipathInfo,omitempty"` - PlugStoreTopology *HostPlugStoreTopology `xml:"plugStoreTopology,omitempty"` - SoftwareInternetScsiEnabled bool `xml:"softwareInternetScsiEnabled"` -} - -func init() { - t["HostStorageDeviceInfo"] = reflect.TypeOf((*HostStorageDeviceInfo)(nil)).Elem() -} - -type HostStorageElementInfo struct { - HostHardwareElementInfo - - OperationalInfo []HostStorageOperationalInfo `xml:"operationalInfo,omitempty"` -} - -func init() { - t["HostStorageElementInfo"] = reflect.TypeOf((*HostStorageElementInfo)(nil)).Elem() -} - -type HostStorageOperationalInfo struct { - DynamicData - - Property string `xml:"property"` - Value string `xml:"value"` -} - -func init() { - t["HostStorageOperationalInfo"] = reflect.TypeOf((*HostStorageOperationalInfo)(nil)).Elem() -} - -type HostStorageSystemDiskLocatorLedResult struct { - DynamicData - - Key string `xml:"key"` - Fault LocalizedMethodFault `xml:"fault"` -} - -func init() { - t["HostStorageSystemDiskLocatorLedResult"] = reflect.TypeOf((*HostStorageSystemDiskLocatorLedResult)(nil)).Elem() -} - -type HostStorageSystemScsiLunResult struct { - DynamicData - - Key string `xml:"key"` - Fault *LocalizedMethodFault `xml:"fault,omitempty"` -} - -func init() { - t["HostStorageSystemScsiLunResult"] = reflect.TypeOf((*HostStorageSystemScsiLunResult)(nil)).Elem() -} - -type HostStorageSystemVmfsVolumeResult struct { - DynamicData - - Key string `xml:"key"` - Fault *LocalizedMethodFault `xml:"fault,omitempty"` -} - -func init() { - t["HostStorageSystemVmfsVolumeResult"] = reflect.TypeOf((*HostStorageSystemVmfsVolumeResult)(nil)).Elem() -} - -type HostSyncFailedEvent struct { - HostEvent - - Reason LocalizedMethodFault `xml:"reason"` -} - -func init() { - t["HostSyncFailedEvent"] = reflect.TypeOf((*HostSyncFailedEvent)(nil)).Elem() -} - -type HostSystemHealthInfo struct { - DynamicData - - NumericSensorInfo []HostNumericSensorInfo `xml:"numericSensorInfo,omitempty"` -} - -func init() { - t["HostSystemHealthInfo"] = reflect.TypeOf((*HostSystemHealthInfo)(nil)).Elem() -} - -type HostSystemIdentificationInfo struct { - DynamicData - - IdentifierValue string `xml:"identifierValue"` - IdentifierType BaseElementDescription `xml:"identifierType,typeattr"` -} - -func init() { - t["HostSystemIdentificationInfo"] = reflect.TypeOf((*HostSystemIdentificationInfo)(nil)).Elem() -} - -type HostSystemInfo struct { - DynamicData - - Vendor string `xml:"vendor"` - Model string `xml:"model"` - Uuid string `xml:"uuid"` - OtherIdentifyingInfo []HostSystemIdentificationInfo `xml:"otherIdentifyingInfo,omitempty"` -} - -func init() { - t["HostSystemInfo"] = reflect.TypeOf((*HostSystemInfo)(nil)).Elem() -} - -type HostSystemReconnectSpec struct { - DynamicData - - SyncState *bool `xml:"syncState"` -} - -func init() { - t["HostSystemReconnectSpec"] = reflect.TypeOf((*HostSystemReconnectSpec)(nil)).Elem() -} - -type HostSystemResourceInfo struct { - DynamicData - - Key string `xml:"key"` - Config *ResourceConfigSpec `xml:"config,omitempty"` - Child []HostSystemResourceInfo `xml:"child,omitempty"` -} - -func init() { - t["HostSystemResourceInfo"] = reflect.TypeOf((*HostSystemResourceInfo)(nil)).Elem() -} - -type HostSystemSwapConfiguration struct { - DynamicData - - Option []BaseHostSystemSwapConfigurationSystemSwapOption `xml:"option,omitempty,typeattr"` -} - -func init() { - t["HostSystemSwapConfiguration"] = reflect.TypeOf((*HostSystemSwapConfiguration)(nil)).Elem() -} - -type HostSystemSwapConfigurationDatastoreOption struct { - HostSystemSwapConfigurationSystemSwapOption - - Datastore string `xml:"datastore"` -} - -func init() { - t["HostSystemSwapConfigurationDatastoreOption"] = reflect.TypeOf((*HostSystemSwapConfigurationDatastoreOption)(nil)).Elem() -} - -type HostSystemSwapConfigurationDisabledOption struct { - HostSystemSwapConfigurationSystemSwapOption -} - -func init() { - t["HostSystemSwapConfigurationDisabledOption"] = reflect.TypeOf((*HostSystemSwapConfigurationDisabledOption)(nil)).Elem() -} - -type HostSystemSwapConfigurationHostCacheOption struct { - HostSystemSwapConfigurationSystemSwapOption -} - -func init() { - t["HostSystemSwapConfigurationHostCacheOption"] = reflect.TypeOf((*HostSystemSwapConfigurationHostCacheOption)(nil)).Elem() -} - -type HostSystemSwapConfigurationHostLocalSwapOption struct { - HostSystemSwapConfigurationSystemSwapOption -} - -func init() { - t["HostSystemSwapConfigurationHostLocalSwapOption"] = reflect.TypeOf((*HostSystemSwapConfigurationHostLocalSwapOption)(nil)).Elem() -} - -type HostSystemSwapConfigurationSystemSwapOption struct { - DynamicData - - Key int32 `xml:"key"` -} - -func init() { - t["HostSystemSwapConfigurationSystemSwapOption"] = reflect.TypeOf((*HostSystemSwapConfigurationSystemSwapOption)(nil)).Elem() -} - -type HostTargetTransport struct { - DynamicData -} - -func init() { - t["HostTargetTransport"] = reflect.TypeOf((*HostTargetTransport)(nil)).Elem() -} - -type HostTpmAttestationReport struct { - DynamicData - - TpmPcrValues []HostTpmDigestInfo `xml:"tpmPcrValues"` - TpmEvents []HostTpmEventLogEntry `xml:"tpmEvents"` - TpmLogReliable bool `xml:"tpmLogReliable"` -} - -func init() { - t["HostTpmAttestationReport"] = reflect.TypeOf((*HostTpmAttestationReport)(nil)).Elem() -} - -type HostTpmBootSecurityOptionEventDetails struct { - HostTpmEventDetails - - BootSecurityOption string `xml:"bootSecurityOption"` -} - -func init() { - t["HostTpmBootSecurityOptionEventDetails"] = reflect.TypeOf((*HostTpmBootSecurityOptionEventDetails)(nil)).Elem() -} - -type HostTpmCommandEventDetails struct { - HostTpmEventDetails - - CommandLine string `xml:"commandLine"` -} - -func init() { - t["HostTpmCommandEventDetails"] = reflect.TypeOf((*HostTpmCommandEventDetails)(nil)).Elem() -} - -type HostTpmDigestInfo struct { - HostDigestInfo - - PcrNumber int32 `xml:"pcrNumber"` -} - -func init() { - t["HostTpmDigestInfo"] = reflect.TypeOf((*HostTpmDigestInfo)(nil)).Elem() -} - -type HostTpmEventDetails struct { - DynamicData - - DataHash []byte `xml:"dataHash"` -} - -func init() { - t["HostTpmEventDetails"] = reflect.TypeOf((*HostTpmEventDetails)(nil)).Elem() -} - -type HostTpmEventLogEntry struct { - DynamicData - - PcrIndex int32 `xml:"pcrIndex"` - EventDetails BaseHostTpmEventDetails `xml:"eventDetails,typeattr"` -} - -func init() { - t["HostTpmEventLogEntry"] = reflect.TypeOf((*HostTpmEventLogEntry)(nil)).Elem() -} - -type HostTpmOptionEventDetails struct { - HostTpmEventDetails - - OptionsFileName string `xml:"optionsFileName"` - BootOptions []byte `xml:"bootOptions,omitempty"` -} - -func init() { - t["HostTpmOptionEventDetails"] = reflect.TypeOf((*HostTpmOptionEventDetails)(nil)).Elem() -} - -type HostTpmSoftwareComponentEventDetails struct { - HostTpmEventDetails - - ComponentName string `xml:"componentName"` - VibName string `xml:"vibName"` - VibVersion string `xml:"vibVersion"` - VibVendor string `xml:"vibVendor"` -} - -func init() { - t["HostTpmSoftwareComponentEventDetails"] = reflect.TypeOf((*HostTpmSoftwareComponentEventDetails)(nil)).Elem() -} - -type HostUnresolvedVmfsExtent struct { - DynamicData - - Device HostScsiDiskPartition `xml:"device"` - DevicePath string `xml:"devicePath"` - VmfsUuid string `xml:"vmfsUuid"` - IsHeadExtent bool `xml:"isHeadExtent"` - Ordinal int32 `xml:"ordinal"` - StartBlock int32 `xml:"startBlock"` - EndBlock int32 `xml:"endBlock"` - Reason string `xml:"reason"` -} - -func init() { - t["HostUnresolvedVmfsExtent"] = reflect.TypeOf((*HostUnresolvedVmfsExtent)(nil)).Elem() -} - -type HostUnresolvedVmfsResignatureSpec struct { - DynamicData - - ExtentDevicePath []string `xml:"extentDevicePath"` -} - -func init() { - t["HostUnresolvedVmfsResignatureSpec"] = reflect.TypeOf((*HostUnresolvedVmfsResignatureSpec)(nil)).Elem() -} - -type HostUnresolvedVmfsResolutionResult struct { - DynamicData - - Spec HostUnresolvedVmfsResolutionSpec `xml:"spec"` - Vmfs *HostVmfsVolume `xml:"vmfs,omitempty"` - Fault *LocalizedMethodFault `xml:"fault,omitempty"` -} - -func init() { - t["HostUnresolvedVmfsResolutionResult"] = reflect.TypeOf((*HostUnresolvedVmfsResolutionResult)(nil)).Elem() -} - -type HostUnresolvedVmfsResolutionSpec struct { - DynamicData - - ExtentDevicePath []string `xml:"extentDevicePath"` - UuidResolution string `xml:"uuidResolution"` -} - -func init() { - t["HostUnresolvedVmfsResolutionSpec"] = reflect.TypeOf((*HostUnresolvedVmfsResolutionSpec)(nil)).Elem() -} - -type HostUnresolvedVmfsVolume struct { - DynamicData - - Extent []HostUnresolvedVmfsExtent `xml:"extent"` - VmfsLabel string `xml:"vmfsLabel"` - VmfsUuid string `xml:"vmfsUuid"` - TotalBlocks int32 `xml:"totalBlocks"` - ResolveStatus HostUnresolvedVmfsVolumeResolveStatus `xml:"resolveStatus"` -} - -func init() { - t["HostUnresolvedVmfsVolume"] = reflect.TypeOf((*HostUnresolvedVmfsVolume)(nil)).Elem() -} - -type HostUnresolvedVmfsVolumeResolveStatus struct { - DynamicData - - Resolvable bool `xml:"resolvable"` - IncompleteExtents *bool `xml:"incompleteExtents"` - MultipleCopies *bool `xml:"multipleCopies"` -} - -func init() { - t["HostUnresolvedVmfsVolumeResolveStatus"] = reflect.TypeOf((*HostUnresolvedVmfsVolumeResolveStatus)(nil)).Elem() -} - -type HostUpgradeFailedEvent struct { - HostEvent -} - -func init() { - t["HostUpgradeFailedEvent"] = reflect.TypeOf((*HostUpgradeFailedEvent)(nil)).Elem() -} - -type HostUserWorldSwapNotEnabledEvent struct { - HostEvent -} - -func init() { - t["HostUserWorldSwapNotEnabledEvent"] = reflect.TypeOf((*HostUserWorldSwapNotEnabledEvent)(nil)).Elem() -} - -type HostVFlashManagerVFlashCacheConfigInfo struct { - DynamicData - - VFlashModuleConfigOption []HostVFlashManagerVFlashCacheConfigInfoVFlashModuleConfigOption `xml:"vFlashModuleConfigOption,omitempty"` - DefaultVFlashModule string `xml:"defaultVFlashModule,omitempty"` - SwapCacheReservationInGB int64 `xml:"swapCacheReservationInGB,omitempty"` -} - -func init() { - t["HostVFlashManagerVFlashCacheConfigInfo"] = reflect.TypeOf((*HostVFlashManagerVFlashCacheConfigInfo)(nil)).Elem() -} - -type HostVFlashManagerVFlashCacheConfigInfoVFlashModuleConfigOption struct { - DynamicData - - VFlashModule string `xml:"vFlashModule"` - VFlashModuleVersion string `xml:"vFlashModuleVersion"` - MinSupportedModuleVersion string `xml:"minSupportedModuleVersion"` - CacheConsistencyType ChoiceOption `xml:"cacheConsistencyType"` - CacheMode ChoiceOption `xml:"cacheMode"` - BlockSizeInKBOption LongOption `xml:"blockSizeInKBOption"` - ReservationInMBOption LongOption `xml:"reservationInMBOption"` - MaxDiskSizeInKB int64 `xml:"maxDiskSizeInKB"` -} - -func init() { - t["HostVFlashManagerVFlashCacheConfigInfoVFlashModuleConfigOption"] = reflect.TypeOf((*HostVFlashManagerVFlashCacheConfigInfoVFlashModuleConfigOption)(nil)).Elem() -} - -type HostVFlashManagerVFlashCacheConfigSpec struct { - DynamicData - - DefaultVFlashModule string `xml:"defaultVFlashModule"` - SwapCacheReservationInGB int64 `xml:"swapCacheReservationInGB"` -} - -func init() { - t["HostVFlashManagerVFlashCacheConfigSpec"] = reflect.TypeOf((*HostVFlashManagerVFlashCacheConfigSpec)(nil)).Elem() -} - -type HostVFlashManagerVFlashConfigInfo struct { - DynamicData - - VFlashResourceConfigInfo *HostVFlashManagerVFlashResourceConfigInfo `xml:"vFlashResourceConfigInfo,omitempty"` - VFlashCacheConfigInfo *HostVFlashManagerVFlashCacheConfigInfo `xml:"vFlashCacheConfigInfo,omitempty"` -} - -func init() { - t["HostVFlashManagerVFlashConfigInfo"] = reflect.TypeOf((*HostVFlashManagerVFlashConfigInfo)(nil)).Elem() -} - -type HostVFlashManagerVFlashResourceConfigInfo struct { - DynamicData - - Vffs *HostVffsVolume `xml:"vffs,omitempty"` - Capacity int64 `xml:"capacity"` -} - -func init() { - t["HostVFlashManagerVFlashResourceConfigInfo"] = reflect.TypeOf((*HostVFlashManagerVFlashResourceConfigInfo)(nil)).Elem() -} - -type HostVFlashManagerVFlashResourceConfigSpec struct { - DynamicData - - VffsUuid string `xml:"vffsUuid"` -} - -func init() { - t["HostVFlashManagerVFlashResourceConfigSpec"] = reflect.TypeOf((*HostVFlashManagerVFlashResourceConfigSpec)(nil)).Elem() -} - -type HostVFlashManagerVFlashResourceRunTimeInfo struct { - DynamicData - - Usage int64 `xml:"usage"` - Capacity int64 `xml:"capacity"` - Accessible bool `xml:"accessible"` - CapacityForVmCache int64 `xml:"capacityForVmCache"` - FreeForVmCache int64 `xml:"freeForVmCache"` -} - -func init() { - t["HostVFlashManagerVFlashResourceRunTimeInfo"] = reflect.TypeOf((*HostVFlashManagerVFlashResourceRunTimeInfo)(nil)).Elem() -} - -type HostVFlashResourceConfigurationResult struct { - DynamicData - - DevicePath []string `xml:"devicePath,omitempty"` - Vffs *HostVffsVolume `xml:"vffs,omitempty"` - DiskConfigurationResult []HostDiskConfigurationResult `xml:"diskConfigurationResult,omitempty"` -} - -func init() { - t["HostVFlashResourceConfigurationResult"] = reflect.TypeOf((*HostVFlashResourceConfigurationResult)(nil)).Elem() -} - -type HostVMotionCompatibility struct { - DynamicData - - Host ManagedObjectReference `xml:"host"` - Compatibility []string `xml:"compatibility,omitempty"` -} - -func init() { - t["HostVMotionCompatibility"] = reflect.TypeOf((*HostVMotionCompatibility)(nil)).Elem() -} - -type HostVMotionConfig struct { - DynamicData - - VmotionNicKey string `xml:"vmotionNicKey,omitempty"` - Enabled bool `xml:"enabled"` -} - -func init() { - t["HostVMotionConfig"] = reflect.TypeOf((*HostVMotionConfig)(nil)).Elem() -} - -type HostVMotionInfo struct { - DynamicData - - NetConfig *HostVMotionNetConfig `xml:"netConfig,omitempty"` - IpConfig *HostIpConfig `xml:"ipConfig,omitempty"` -} - -func init() { - t["HostVMotionInfo"] = reflect.TypeOf((*HostVMotionInfo)(nil)).Elem() -} - -type HostVMotionNetConfig struct { - DynamicData - - CandidateVnic []HostVirtualNic `xml:"candidateVnic,omitempty"` - SelectedVnic string `xml:"selectedVnic,omitempty"` -} - -func init() { - t["HostVMotionNetConfig"] = reflect.TypeOf((*HostVMotionNetConfig)(nil)).Elem() -} - -type HostVfatVolume struct { - HostFileSystemVolume -} - -func init() { - t["HostVfatVolume"] = reflect.TypeOf((*HostVfatVolume)(nil)).Elem() -} - -type HostVffsSpec struct { - DynamicData - - DevicePath string `xml:"devicePath"` - Partition *HostDiskPartitionSpec `xml:"partition,omitempty"` - MajorVersion int32 `xml:"majorVersion"` - VolumeName string `xml:"volumeName"` -} - -func init() { - t["HostVffsSpec"] = reflect.TypeOf((*HostVffsSpec)(nil)).Elem() -} - -type HostVffsVolume struct { - HostFileSystemVolume - - MajorVersion int32 `xml:"majorVersion"` - Version string `xml:"version"` - Uuid string `xml:"uuid"` - Extent []HostScsiDiskPartition `xml:"extent"` -} - -func init() { - t["HostVffsVolume"] = reflect.TypeOf((*HostVffsVolume)(nil)).Elem() -} - -type HostVirtualNic struct { - DynamicData - - Device string `xml:"device"` - Key string `xml:"key"` - Portgroup string `xml:"portgroup"` - Spec HostVirtualNicSpec `xml:"spec"` - Port string `xml:"port,omitempty"` -} - -func init() { - t["HostVirtualNic"] = reflect.TypeOf((*HostVirtualNic)(nil)).Elem() -} - -type HostVirtualNicConfig struct { - DynamicData - - ChangeOperation string `xml:"changeOperation,omitempty"` - Device string `xml:"device,omitempty"` - Portgroup string `xml:"portgroup"` - Spec *HostVirtualNicSpec `xml:"spec,omitempty"` -} - -func init() { - t["HostVirtualNicConfig"] = reflect.TypeOf((*HostVirtualNicConfig)(nil)).Elem() -} - -type HostVirtualNicConnection struct { - DynamicData - - Portgroup string `xml:"portgroup,omitempty"` - DvPort *DistributedVirtualSwitchPortConnection `xml:"dvPort,omitempty"` -} - -func init() { - t["HostVirtualNicConnection"] = reflect.TypeOf((*HostVirtualNicConnection)(nil)).Elem() -} - -type HostVirtualNicManagerInfo struct { - DynamicData - - NetConfig []VirtualNicManagerNetConfig `xml:"netConfig,omitempty"` -} - -func init() { - t["HostVirtualNicManagerInfo"] = reflect.TypeOf((*HostVirtualNicManagerInfo)(nil)).Elem() -} - -type HostVirtualNicManagerNicTypeSelection struct { - DynamicData - - Vnic HostVirtualNicConnection `xml:"vnic"` - NicType []string `xml:"nicType,omitempty"` -} - -func init() { - t["HostVirtualNicManagerNicTypeSelection"] = reflect.TypeOf((*HostVirtualNicManagerNicTypeSelection)(nil)).Elem() -} - -type HostVirtualNicOpaqueNetworkSpec struct { - DynamicData - - OpaqueNetworkId string `xml:"opaqueNetworkId"` - OpaqueNetworkType string `xml:"opaqueNetworkType"` -} - -func init() { - t["HostVirtualNicOpaqueNetworkSpec"] = reflect.TypeOf((*HostVirtualNicOpaqueNetworkSpec)(nil)).Elem() -} - -type HostVirtualNicSpec struct { - DynamicData - - Ip *HostIpConfig `xml:"ip,omitempty"` - Mac string `xml:"mac,omitempty"` - DistributedVirtualPort *DistributedVirtualSwitchPortConnection `xml:"distributedVirtualPort,omitempty"` - Portgroup string `xml:"portgroup,omitempty"` - Mtu int32 `xml:"mtu,omitempty"` - TsoEnabled *bool `xml:"tsoEnabled"` - NetStackInstanceKey string `xml:"netStackInstanceKey,omitempty"` - OpaqueNetwork *HostVirtualNicOpaqueNetworkSpec `xml:"opaqueNetwork,omitempty"` - ExternalId string `xml:"externalId,omitempty"` - PinnedPnic string `xml:"pinnedPnic,omitempty"` -} - -func init() { - t["HostVirtualNicSpec"] = reflect.TypeOf((*HostVirtualNicSpec)(nil)).Elem() -} - -type HostVirtualSwitch struct { - DynamicData - - Name string `xml:"name"` - Key string `xml:"key"` - NumPorts int32 `xml:"numPorts"` - NumPortsAvailable int32 `xml:"numPortsAvailable"` - Mtu int32 `xml:"mtu,omitempty"` - Portgroup []string `xml:"portgroup,omitempty"` - Pnic []string `xml:"pnic,omitempty"` - Spec HostVirtualSwitchSpec `xml:"spec"` -} - -func init() { - t["HostVirtualSwitch"] = reflect.TypeOf((*HostVirtualSwitch)(nil)).Elem() -} - -type HostVirtualSwitchAutoBridge struct { - HostVirtualSwitchBridge - - ExcludedNicDevice []string `xml:"excludedNicDevice,omitempty"` -} - -func init() { - t["HostVirtualSwitchAutoBridge"] = reflect.TypeOf((*HostVirtualSwitchAutoBridge)(nil)).Elem() -} - -type HostVirtualSwitchBeaconConfig struct { - DynamicData - - Interval int32 `xml:"interval"` -} - -func init() { - t["HostVirtualSwitchBeaconConfig"] = reflect.TypeOf((*HostVirtualSwitchBeaconConfig)(nil)).Elem() -} - -type HostVirtualSwitchBondBridge struct { - HostVirtualSwitchBridge - - NicDevice []string `xml:"nicDevice"` - Beacon *HostVirtualSwitchBeaconConfig `xml:"beacon,omitempty"` - LinkDiscoveryProtocolConfig *LinkDiscoveryProtocolConfig `xml:"linkDiscoveryProtocolConfig,omitempty"` -} - -func init() { - t["HostVirtualSwitchBondBridge"] = reflect.TypeOf((*HostVirtualSwitchBondBridge)(nil)).Elem() -} - -type HostVirtualSwitchBridge struct { - DynamicData -} - -func init() { - t["HostVirtualSwitchBridge"] = reflect.TypeOf((*HostVirtualSwitchBridge)(nil)).Elem() -} - -type HostVirtualSwitchConfig struct { - DynamicData - - ChangeOperation string `xml:"changeOperation,omitempty"` - Name string `xml:"name"` - Spec *HostVirtualSwitchSpec `xml:"spec,omitempty"` -} - -func init() { - t["HostVirtualSwitchConfig"] = reflect.TypeOf((*HostVirtualSwitchConfig)(nil)).Elem() -} - -type HostVirtualSwitchSimpleBridge struct { - HostVirtualSwitchBridge - - NicDevice string `xml:"nicDevice"` -} - -func init() { - t["HostVirtualSwitchSimpleBridge"] = reflect.TypeOf((*HostVirtualSwitchSimpleBridge)(nil)).Elem() -} - -type HostVirtualSwitchSpec struct { - DynamicData - - NumPorts int32 `xml:"numPorts"` - Bridge BaseHostVirtualSwitchBridge `xml:"bridge,omitempty,typeattr"` - Policy *HostNetworkPolicy `xml:"policy,omitempty"` - Mtu int32 `xml:"mtu,omitempty"` -} - -func init() { - t["HostVirtualSwitchSpec"] = reflect.TypeOf((*HostVirtualSwitchSpec)(nil)).Elem() -} - -type HostVmciAccessManagerAccessSpec struct { - DynamicData - - Vm ManagedObjectReference `xml:"vm"` - Services []string `xml:"services,omitempty"` - Mode string `xml:"mode"` -} - -func init() { - t["HostVmciAccessManagerAccessSpec"] = reflect.TypeOf((*HostVmciAccessManagerAccessSpec)(nil)).Elem() -} - -type HostVmfsRescanResult struct { - DynamicData - - Host ManagedObjectReference `xml:"host"` - Fault *LocalizedMethodFault `xml:"fault,omitempty"` -} - -func init() { - t["HostVmfsRescanResult"] = reflect.TypeOf((*HostVmfsRescanResult)(nil)).Elem() -} - -type HostVmfsSpec struct { - DynamicData - - Extent HostScsiDiskPartition `xml:"extent"` - BlockSizeMb int32 `xml:"blockSizeMb,omitempty"` - MajorVersion int32 `xml:"majorVersion"` - VolumeName string `xml:"volumeName"` -} - -func init() { - t["HostVmfsSpec"] = reflect.TypeOf((*HostVmfsSpec)(nil)).Elem() -} - -type HostVmfsVolume struct { - HostFileSystemVolume - - BlockSizeMb int32 `xml:"blockSizeMb"` - MaxBlocks int32 `xml:"maxBlocks"` - MajorVersion int32 `xml:"majorVersion"` - Version string `xml:"version"` - Uuid string `xml:"uuid"` - Extent []HostScsiDiskPartition `xml:"extent"` - VmfsUpgradable bool `xml:"vmfsUpgradable"` - ForceMountedInfo *HostForceMountedInfo `xml:"forceMountedInfo,omitempty"` - Ssd *bool `xml:"ssd"` - Local *bool `xml:"local"` -} - -func init() { - t["HostVmfsVolume"] = reflect.TypeOf((*HostVmfsVolume)(nil)).Elem() -} - -type HostVnicConnectedToCustomizedDVPortEvent struct { - HostEvent - - Vnic VnicPortArgument `xml:"vnic"` -} - -func init() { - t["HostVnicConnectedToCustomizedDVPortEvent"] = reflect.TypeOf((*HostVnicConnectedToCustomizedDVPortEvent)(nil)).Elem() -} - -type HostVsanInternalSystemCmmdsQuery struct { - DynamicData - - Type string `xml:"type,omitempty"` - Uuid string `xml:"uuid,omitempty"` - Owner string `xml:"owner,omitempty"` -} - -func init() { - t["HostVsanInternalSystemCmmdsQuery"] = reflect.TypeOf((*HostVsanInternalSystemCmmdsQuery)(nil)).Elem() -} - -type HostVsanInternalSystemDeleteVsanObjectsResult struct { - DynamicData - - Uuid string `xml:"uuid"` - Success bool `xml:"success"` - FailureReason []LocalizableMessage `xml:"failureReason,omitempty"` -} - -func init() { - t["HostVsanInternalSystemDeleteVsanObjectsResult"] = reflect.TypeOf((*HostVsanInternalSystemDeleteVsanObjectsResult)(nil)).Elem() -} - -type HostVsanInternalSystemVsanObjectOperationResult struct { - DynamicData - - Uuid string `xml:"uuid"` - FailureReason []LocalizableMessage `xml:"failureReason,omitempty"` -} - -func init() { - t["HostVsanInternalSystemVsanObjectOperationResult"] = reflect.TypeOf((*HostVsanInternalSystemVsanObjectOperationResult)(nil)).Elem() -} - -type HostVsanInternalSystemVsanPhysicalDiskDiagnosticsResult struct { - DynamicData - - DiskUuid string `xml:"diskUuid"` - Success bool `xml:"success"` - FailureReason string `xml:"failureReason,omitempty"` -} - -func init() { - t["HostVsanInternalSystemVsanPhysicalDiskDiagnosticsResult"] = reflect.TypeOf((*HostVsanInternalSystemVsanPhysicalDiskDiagnosticsResult)(nil)).Elem() -} - -type HostVvolVolume struct { - HostFileSystemVolume - - ScId string `xml:"scId"` - HostPE []VVolHostPE `xml:"hostPE,omitempty"` - VasaProviderInfo []VimVasaProviderInfo `xml:"vasaProviderInfo,omitempty"` - StorageArray []VASAStorageArray `xml:"storageArray,omitempty"` -} - -func init() { - t["HostVvolVolume"] = reflect.TypeOf((*HostVvolVolume)(nil)).Elem() -} - -type HostVvolVolumeSpecification struct { - DynamicData - - MaxSizeInMB int64 `xml:"maxSizeInMB"` - VolumeName string `xml:"volumeName"` - VasaProviderInfo []VimVasaProviderInfo `xml:"vasaProviderInfo,omitempty"` - StorageArray []VASAStorageArray `xml:"storageArray,omitempty"` - Uuid string `xml:"uuid"` -} - -func init() { - t["HostVvolVolumeSpecification"] = reflect.TypeOf((*HostVvolVolumeSpecification)(nil)).Elem() -} - -type HostWwnChangedEvent struct { - HostEvent - - OldNodeWwns []int64 `xml:"oldNodeWwns,omitempty"` - OldPortWwns []int64 `xml:"oldPortWwns,omitempty"` - NewNodeWwns []int64 `xml:"newNodeWwns,omitempty"` - NewPortWwns []int64 `xml:"newPortWwns,omitempty"` -} - -func init() { - t["HostWwnChangedEvent"] = reflect.TypeOf((*HostWwnChangedEvent)(nil)).Elem() -} - -type HostWwnConflictEvent struct { - HostEvent - - ConflictedVms []VmEventArgument `xml:"conflictedVms,omitempty"` - ConflictedHosts []HostEventArgument `xml:"conflictedHosts,omitempty"` - Wwn int64 `xml:"wwn"` -} - -func init() { - t["HostWwnConflictEvent"] = reflect.TypeOf((*HostWwnConflictEvent)(nil)).Elem() -} - -type HotSnapshotMoveNotSupported struct { - SnapshotCopyNotSupported -} - -func init() { - t["HotSnapshotMoveNotSupported"] = reflect.TypeOf((*HotSnapshotMoveNotSupported)(nil)).Elem() -} - -type HotSnapshotMoveNotSupportedFault HotSnapshotMoveNotSupported - -func init() { - t["HotSnapshotMoveNotSupportedFault"] = reflect.TypeOf((*HotSnapshotMoveNotSupportedFault)(nil)).Elem() -} - -type HourlyTaskScheduler struct { - RecurrentTaskScheduler - - Minute int32 `xml:"minute"` -} - -func init() { - t["HourlyTaskScheduler"] = reflect.TypeOf((*HourlyTaskScheduler)(nil)).Elem() -} - -type HttpNfcLeaseAbort HttpNfcLeaseAbortRequestType - -func init() { - t["HttpNfcLeaseAbort"] = reflect.TypeOf((*HttpNfcLeaseAbort)(nil)).Elem() -} - -type HttpNfcLeaseAbortRequestType struct { - This ManagedObjectReference `xml:"_this"` - Fault *LocalizedMethodFault `xml:"fault,omitempty"` -} - -func init() { - t["HttpNfcLeaseAbortRequestType"] = reflect.TypeOf((*HttpNfcLeaseAbortRequestType)(nil)).Elem() -} - -type HttpNfcLeaseAbortResponse struct { -} - -type HttpNfcLeaseComplete HttpNfcLeaseCompleteRequestType - -func init() { - t["HttpNfcLeaseComplete"] = reflect.TypeOf((*HttpNfcLeaseComplete)(nil)).Elem() -} - -type HttpNfcLeaseCompleteRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["HttpNfcLeaseCompleteRequestType"] = reflect.TypeOf((*HttpNfcLeaseCompleteRequestType)(nil)).Elem() -} - -type HttpNfcLeaseCompleteResponse struct { -} - -type HttpNfcLeaseDatastoreLeaseInfo struct { - DynamicData - - DatastoreKey string `xml:"datastoreKey"` - Hosts []HttpNfcLeaseHostInfo `xml:"hosts"` -} - -func init() { - t["HttpNfcLeaseDatastoreLeaseInfo"] = reflect.TypeOf((*HttpNfcLeaseDatastoreLeaseInfo)(nil)).Elem() -} - -type HttpNfcLeaseDeviceUrl struct { - DynamicData - - Key string `xml:"key"` - ImportKey string `xml:"importKey"` - Url string `xml:"url"` - SslThumbprint string `xml:"sslThumbprint"` - Disk *bool `xml:"disk"` - TargetId string `xml:"targetId,omitempty"` - DatastoreKey string `xml:"datastoreKey,omitempty"` - FileSize int64 `xml:"fileSize,omitempty"` -} - -func init() { - t["HttpNfcLeaseDeviceUrl"] = reflect.TypeOf((*HttpNfcLeaseDeviceUrl)(nil)).Elem() -} - -type HttpNfcLeaseGetManifest HttpNfcLeaseGetManifestRequestType - -func init() { - t["HttpNfcLeaseGetManifest"] = reflect.TypeOf((*HttpNfcLeaseGetManifest)(nil)).Elem() -} - -type HttpNfcLeaseGetManifestRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["HttpNfcLeaseGetManifestRequestType"] = reflect.TypeOf((*HttpNfcLeaseGetManifestRequestType)(nil)).Elem() -} - -type HttpNfcLeaseGetManifestResponse struct { - Returnval []HttpNfcLeaseManifestEntry `xml:"returnval,omitempty"` -} - -type HttpNfcLeaseHostInfo struct { - DynamicData - - Url string `xml:"url"` - SslThumbprint string `xml:"sslThumbprint"` -} - -func init() { - t["HttpNfcLeaseHostInfo"] = reflect.TypeOf((*HttpNfcLeaseHostInfo)(nil)).Elem() -} - -type HttpNfcLeaseInfo struct { - DynamicData - - Lease ManagedObjectReference `xml:"lease"` - Entity ManagedObjectReference `xml:"entity"` - DeviceUrl []HttpNfcLeaseDeviceUrl `xml:"deviceUrl,omitempty"` - TotalDiskCapacityInKB int64 `xml:"totalDiskCapacityInKB"` - LeaseTimeout int32 `xml:"leaseTimeout"` - HostMap []HttpNfcLeaseDatastoreLeaseInfo `xml:"hostMap,omitempty"` -} - -func init() { - t["HttpNfcLeaseInfo"] = reflect.TypeOf((*HttpNfcLeaseInfo)(nil)).Elem() -} - -type HttpNfcLeaseManifestEntry struct { - DynamicData - - Key string `xml:"key"` - Sha1 string `xml:"sha1"` - Size int64 `xml:"size"` - Disk bool `xml:"disk"` - Capacity int64 `xml:"capacity,omitempty"` - PopulatedSize int64 `xml:"populatedSize,omitempty"` -} - -func init() { - t["HttpNfcLeaseManifestEntry"] = reflect.TypeOf((*HttpNfcLeaseManifestEntry)(nil)).Elem() -} - -type HttpNfcLeaseProgress HttpNfcLeaseProgressRequestType - -func init() { - t["HttpNfcLeaseProgress"] = reflect.TypeOf((*HttpNfcLeaseProgress)(nil)).Elem() -} - -type HttpNfcLeaseProgressRequestType struct { - This ManagedObjectReference `xml:"_this"` - Percent int32 `xml:"percent"` -} - -func init() { - t["HttpNfcLeaseProgressRequestType"] = reflect.TypeOf((*HttpNfcLeaseProgressRequestType)(nil)).Elem() -} - -type HttpNfcLeaseProgressResponse struct { -} - -type IDEDiskNotSupported struct { - DiskNotSupported -} - -func init() { - t["IDEDiskNotSupported"] = reflect.TypeOf((*IDEDiskNotSupported)(nil)).Elem() -} - -type IDEDiskNotSupportedFault IDEDiskNotSupported - -func init() { - t["IDEDiskNotSupportedFault"] = reflect.TypeOf((*IDEDiskNotSupportedFault)(nil)).Elem() -} - -type IORMNotSupportedHostOnDatastore struct { - VimFault - - Datastore ManagedObjectReference `xml:"datastore"` - DatastoreName string `xml:"datastoreName"` - Host []ManagedObjectReference `xml:"host,omitempty"` -} - -func init() { - t["IORMNotSupportedHostOnDatastore"] = reflect.TypeOf((*IORMNotSupportedHostOnDatastore)(nil)).Elem() -} - -type IORMNotSupportedHostOnDatastoreFault IORMNotSupportedHostOnDatastore - -func init() { - t["IORMNotSupportedHostOnDatastoreFault"] = reflect.TypeOf((*IORMNotSupportedHostOnDatastoreFault)(nil)).Elem() -} - -type IScsiBootFailureEvent struct { - HostEvent -} - -func init() { - t["IScsiBootFailureEvent"] = reflect.TypeOf((*IScsiBootFailureEvent)(nil)).Elem() -} - -type ImpersonateUser ImpersonateUserRequestType - -func init() { - t["ImpersonateUser"] = reflect.TypeOf((*ImpersonateUser)(nil)).Elem() -} - -type ImpersonateUserRequestType struct { - This ManagedObjectReference `xml:"_this"` - UserName string `xml:"userName"` - Locale string `xml:"locale,omitempty"` -} - -func init() { - t["ImpersonateUserRequestType"] = reflect.TypeOf((*ImpersonateUserRequestType)(nil)).Elem() -} - -type ImpersonateUserResponse struct { - Returnval UserSession `xml:"returnval"` -} - -type ImportCertificateForCAMRequestType struct { - This ManagedObjectReference `xml:"_this"` - CertPath string `xml:"certPath"` - CamServer string `xml:"camServer"` -} - -func init() { - t["ImportCertificateForCAMRequestType"] = reflect.TypeOf((*ImportCertificateForCAMRequestType)(nil)).Elem() -} - -type ImportCertificateForCAM_Task ImportCertificateForCAMRequestType - -func init() { - t["ImportCertificateForCAM_Task"] = reflect.TypeOf((*ImportCertificateForCAM_Task)(nil)).Elem() -} - -type ImportCertificateForCAM_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ImportHostAddFailure struct { - DvsFault - - HostIp []string `xml:"hostIp"` -} - -func init() { - t["ImportHostAddFailure"] = reflect.TypeOf((*ImportHostAddFailure)(nil)).Elem() -} - -type ImportHostAddFailureFault ImportHostAddFailure - -func init() { - t["ImportHostAddFailureFault"] = reflect.TypeOf((*ImportHostAddFailureFault)(nil)).Elem() -} - -type ImportOperationBulkFault struct { - DvsFault - - ImportFaults []ImportOperationBulkFaultFaultOnImport `xml:"importFaults"` -} - -func init() { - t["ImportOperationBulkFault"] = reflect.TypeOf((*ImportOperationBulkFault)(nil)).Elem() -} - -type ImportOperationBulkFaultFault ImportOperationBulkFault - -func init() { - t["ImportOperationBulkFaultFault"] = reflect.TypeOf((*ImportOperationBulkFaultFault)(nil)).Elem() -} - -type ImportOperationBulkFaultFaultOnImport struct { - DynamicData - - EntityType string `xml:"entityType,omitempty"` - Key string `xml:"key,omitempty"` - Fault LocalizedMethodFault `xml:"fault"` -} - -func init() { - t["ImportOperationBulkFaultFaultOnImport"] = reflect.TypeOf((*ImportOperationBulkFaultFaultOnImport)(nil)).Elem() -} - -type ImportSpec struct { - DynamicData - - EntityConfig *VAppEntityConfigInfo `xml:"entityConfig,omitempty"` - InstantiationOst *OvfConsumerOstNode `xml:"instantiationOst,omitempty"` -} - -func init() { - t["ImportSpec"] = reflect.TypeOf((*ImportSpec)(nil)).Elem() -} - -type ImportUnmanagedSnapshot ImportUnmanagedSnapshotRequestType - -func init() { - t["ImportUnmanagedSnapshot"] = reflect.TypeOf((*ImportUnmanagedSnapshot)(nil)).Elem() -} - -type ImportUnmanagedSnapshotRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vdisk string `xml:"vdisk"` - Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` - VvolId string `xml:"vvolId"` -} - -func init() { - t["ImportUnmanagedSnapshotRequestType"] = reflect.TypeOf((*ImportUnmanagedSnapshotRequestType)(nil)).Elem() -} - -type ImportUnmanagedSnapshotResponse struct { -} - -type ImportVApp ImportVAppRequestType - -func init() { - t["ImportVApp"] = reflect.TypeOf((*ImportVApp)(nil)).Elem() -} - -type ImportVAppRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec BaseImportSpec `xml:"spec,typeattr"` - Folder *ManagedObjectReference `xml:"folder,omitempty"` - Host *ManagedObjectReference `xml:"host,omitempty"` -} - -func init() { - t["ImportVAppRequestType"] = reflect.TypeOf((*ImportVAppRequestType)(nil)).Elem() -} - -type ImportVAppResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type InUseFeatureManipulationDisallowed struct { - NotEnoughLicenses -} - -func init() { - t["InUseFeatureManipulationDisallowed"] = reflect.TypeOf((*InUseFeatureManipulationDisallowed)(nil)).Elem() -} - -type InUseFeatureManipulationDisallowedFault InUseFeatureManipulationDisallowed - -func init() { - t["InUseFeatureManipulationDisallowedFault"] = reflect.TypeOf((*InUseFeatureManipulationDisallowedFault)(nil)).Elem() -} - -type InaccessibleDatastore struct { - InvalidDatastore - - Detail string `xml:"detail,omitempty"` -} - -func init() { - t["InaccessibleDatastore"] = reflect.TypeOf((*InaccessibleDatastore)(nil)).Elem() -} - -type InaccessibleDatastoreFault BaseInaccessibleDatastore - -func init() { - t["InaccessibleDatastoreFault"] = reflect.TypeOf((*InaccessibleDatastoreFault)(nil)).Elem() -} - -type InaccessibleFTMetadataDatastore struct { - InaccessibleDatastore -} - -func init() { - t["InaccessibleFTMetadataDatastore"] = reflect.TypeOf((*InaccessibleFTMetadataDatastore)(nil)).Elem() -} - -type InaccessibleFTMetadataDatastoreFault InaccessibleFTMetadataDatastore - -func init() { - t["InaccessibleFTMetadataDatastoreFault"] = reflect.TypeOf((*InaccessibleFTMetadataDatastoreFault)(nil)).Elem() -} - -type InaccessibleVFlashSource struct { - VimFault - - HostName string `xml:"hostName"` -} - -func init() { - t["InaccessibleVFlashSource"] = reflect.TypeOf((*InaccessibleVFlashSource)(nil)).Elem() -} - -type InaccessibleVFlashSourceFault InaccessibleVFlashSource - -func init() { - t["InaccessibleVFlashSourceFault"] = reflect.TypeOf((*InaccessibleVFlashSourceFault)(nil)).Elem() -} - -type IncompatibleDefaultDevice struct { - MigrationFault - - Device string `xml:"device"` -} - -func init() { - t["IncompatibleDefaultDevice"] = reflect.TypeOf((*IncompatibleDefaultDevice)(nil)).Elem() -} - -type IncompatibleDefaultDeviceFault IncompatibleDefaultDevice - -func init() { - t["IncompatibleDefaultDeviceFault"] = reflect.TypeOf((*IncompatibleDefaultDeviceFault)(nil)).Elem() -} - -type IncompatibleHostForFtSecondary struct { - VmFaultToleranceIssue - - Host ManagedObjectReference `xml:"host"` - Error []LocalizedMethodFault `xml:"error,omitempty"` -} - -func init() { - t["IncompatibleHostForFtSecondary"] = reflect.TypeOf((*IncompatibleHostForFtSecondary)(nil)).Elem() -} - -type IncompatibleHostForFtSecondaryFault IncompatibleHostForFtSecondary - -func init() { - t["IncompatibleHostForFtSecondaryFault"] = reflect.TypeOf((*IncompatibleHostForFtSecondaryFault)(nil)).Elem() -} - -type IncompatibleHostForVmReplication struct { - ReplicationFault - - VmName string `xml:"vmName"` - HostName string `xml:"hostName"` - Reason string `xml:"reason"` -} - -func init() { - t["IncompatibleHostForVmReplication"] = reflect.TypeOf((*IncompatibleHostForVmReplication)(nil)).Elem() -} - -type IncompatibleHostForVmReplicationFault IncompatibleHostForVmReplication - -func init() { - t["IncompatibleHostForVmReplicationFault"] = reflect.TypeOf((*IncompatibleHostForVmReplicationFault)(nil)).Elem() -} - -type IncompatibleSetting struct { - InvalidArgument - - ConflictingProperty string `xml:"conflictingProperty"` -} - -func init() { - t["IncompatibleSetting"] = reflect.TypeOf((*IncompatibleSetting)(nil)).Elem() -} - -type IncompatibleSettingFault IncompatibleSetting - -func init() { - t["IncompatibleSettingFault"] = reflect.TypeOf((*IncompatibleSettingFault)(nil)).Elem() -} - -type IncorrectFileType struct { - FileFault -} - -func init() { - t["IncorrectFileType"] = reflect.TypeOf((*IncorrectFileType)(nil)).Elem() -} - -type IncorrectFileTypeFault IncorrectFileType - -func init() { - t["IncorrectFileTypeFault"] = reflect.TypeOf((*IncorrectFileTypeFault)(nil)).Elem() -} - -type IncorrectHostInformation struct { - NotEnoughLicenses -} - -func init() { - t["IncorrectHostInformation"] = reflect.TypeOf((*IncorrectHostInformation)(nil)).Elem() -} - -type IncorrectHostInformationEvent struct { - LicenseEvent -} - -func init() { - t["IncorrectHostInformationEvent"] = reflect.TypeOf((*IncorrectHostInformationEvent)(nil)).Elem() -} - -type IncorrectHostInformationFault IncorrectHostInformation - -func init() { - t["IncorrectHostInformationFault"] = reflect.TypeOf((*IncorrectHostInformationFault)(nil)).Elem() -} - -type IndependentDiskVMotionNotSupported struct { - MigrationFeatureNotSupported -} - -func init() { - t["IndependentDiskVMotionNotSupported"] = reflect.TypeOf((*IndependentDiskVMotionNotSupported)(nil)).Elem() -} - -type IndependentDiskVMotionNotSupportedFault IndependentDiskVMotionNotSupported - -func init() { - t["IndependentDiskVMotionNotSupportedFault"] = reflect.TypeOf((*IndependentDiskVMotionNotSupportedFault)(nil)).Elem() -} - -type InflateVirtualDiskRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` - Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` -} - -func init() { - t["InflateVirtualDiskRequestType"] = reflect.TypeOf((*InflateVirtualDiskRequestType)(nil)).Elem() -} - -type InflateVirtualDisk_Task InflateVirtualDiskRequestType - -func init() { - t["InflateVirtualDisk_Task"] = reflect.TypeOf((*InflateVirtualDisk_Task)(nil)).Elem() -} - -type InflateVirtualDisk_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type InfoUpgradeEvent struct { - UpgradeEvent -} - -func init() { - t["InfoUpgradeEvent"] = reflect.TypeOf((*InfoUpgradeEvent)(nil)).Elem() -} - -type InheritablePolicy struct { - DynamicData - - Inherited bool `xml:"inherited"` -} - -func init() { - t["InheritablePolicy"] = reflect.TypeOf((*InheritablePolicy)(nil)).Elem() -} - -type InitializeDisksRequestType struct { - This ManagedObjectReference `xml:"_this"` - Mapping []VsanHostDiskMapping `xml:"mapping"` -} - -func init() { - t["InitializeDisksRequestType"] = reflect.TypeOf((*InitializeDisksRequestType)(nil)).Elem() -} - -type InitializeDisks_Task InitializeDisksRequestType - -func init() { - t["InitializeDisks_Task"] = reflect.TypeOf((*InitializeDisks_Task)(nil)).Elem() -} - -type InitializeDisks_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type InitiateFileTransferFromGuest InitiateFileTransferFromGuestRequestType - -func init() { - t["InitiateFileTransferFromGuest"] = reflect.TypeOf((*InitiateFileTransferFromGuest)(nil)).Elem() -} - -type InitiateFileTransferFromGuestRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Auth BaseGuestAuthentication `xml:"auth,typeattr"` - GuestFilePath string `xml:"guestFilePath"` -} - -func init() { - t["InitiateFileTransferFromGuestRequestType"] = reflect.TypeOf((*InitiateFileTransferFromGuestRequestType)(nil)).Elem() -} - -type InitiateFileTransferFromGuestResponse struct { - Returnval FileTransferInformation `xml:"returnval"` -} - -type InitiateFileTransferToGuest InitiateFileTransferToGuestRequestType - -func init() { - t["InitiateFileTransferToGuest"] = reflect.TypeOf((*InitiateFileTransferToGuest)(nil)).Elem() -} - -type InitiateFileTransferToGuestRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Auth BaseGuestAuthentication `xml:"auth,typeattr"` - GuestFilePath string `xml:"guestFilePath"` - FileAttributes BaseGuestFileAttributes `xml:"fileAttributes,typeattr"` - FileSize int64 `xml:"fileSize"` - Overwrite bool `xml:"overwrite"` -} - -func init() { - t["InitiateFileTransferToGuestRequestType"] = reflect.TypeOf((*InitiateFileTransferToGuestRequestType)(nil)).Elem() -} - -type InitiateFileTransferToGuestResponse struct { - Returnval string `xml:"returnval"` -} - -type InstallHostPatchRequestType struct { - This ManagedObjectReference `xml:"_this"` - Repository HostPatchManagerLocator `xml:"repository"` - UpdateID string `xml:"updateID"` - Force *bool `xml:"force"` -} - -func init() { - t["InstallHostPatchRequestType"] = reflect.TypeOf((*InstallHostPatchRequestType)(nil)).Elem() -} - -type InstallHostPatchV2RequestType struct { - This ManagedObjectReference `xml:"_this"` - MetaUrls []string `xml:"metaUrls,omitempty"` - BundleUrls []string `xml:"bundleUrls,omitempty"` - VibUrls []string `xml:"vibUrls,omitempty"` - Spec *HostPatchManagerPatchManagerOperationSpec `xml:"spec,omitempty"` -} - -func init() { - t["InstallHostPatchV2RequestType"] = reflect.TypeOf((*InstallHostPatchV2RequestType)(nil)).Elem() -} - -type InstallHostPatchV2_Task InstallHostPatchV2RequestType - -func init() { - t["InstallHostPatchV2_Task"] = reflect.TypeOf((*InstallHostPatchV2_Task)(nil)).Elem() -} - -type InstallHostPatchV2_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type InstallHostPatch_Task InstallHostPatchRequestType - -func init() { - t["InstallHostPatch_Task"] = reflect.TypeOf((*InstallHostPatch_Task)(nil)).Elem() -} - -type InstallHostPatch_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type InstallIoFilterRequestType struct { - This ManagedObjectReference `xml:"_this"` - VibUrl string `xml:"vibUrl"` - CompRes ManagedObjectReference `xml:"compRes"` -} - -func init() { - t["InstallIoFilterRequestType"] = reflect.TypeOf((*InstallIoFilterRequestType)(nil)).Elem() -} - -type InstallIoFilter_Task InstallIoFilterRequestType - -func init() { - t["InstallIoFilter_Task"] = reflect.TypeOf((*InstallIoFilter_Task)(nil)).Elem() -} - -type InstallIoFilter_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type InstallServerCertificate InstallServerCertificateRequestType - -func init() { - t["InstallServerCertificate"] = reflect.TypeOf((*InstallServerCertificate)(nil)).Elem() -} - -type InstallServerCertificateRequestType struct { - This ManagedObjectReference `xml:"_this"` - Cert string `xml:"cert"` -} - -func init() { - t["InstallServerCertificateRequestType"] = reflect.TypeOf((*InstallServerCertificateRequestType)(nil)).Elem() -} - -type InstallServerCertificateResponse struct { -} - -type InstallSmartCardTrustAnchor InstallSmartCardTrustAnchorRequestType - -func init() { - t["InstallSmartCardTrustAnchor"] = reflect.TypeOf((*InstallSmartCardTrustAnchor)(nil)).Elem() -} - -type InstallSmartCardTrustAnchorRequestType struct { - This ManagedObjectReference `xml:"_this"` - Cert string `xml:"cert"` -} - -func init() { - t["InstallSmartCardTrustAnchorRequestType"] = reflect.TypeOf((*InstallSmartCardTrustAnchorRequestType)(nil)).Elem() -} - -type InstallSmartCardTrustAnchorResponse struct { -} - -type InsufficientAgentVmsDeployed struct { - InsufficientResourcesFault - - HostName string `xml:"hostName"` - RequiredNumAgentVms int32 `xml:"requiredNumAgentVms"` - CurrentNumAgentVms int32 `xml:"currentNumAgentVms"` -} - -func init() { - t["InsufficientAgentVmsDeployed"] = reflect.TypeOf((*InsufficientAgentVmsDeployed)(nil)).Elem() -} - -type InsufficientAgentVmsDeployedFault InsufficientAgentVmsDeployed - -func init() { - t["InsufficientAgentVmsDeployedFault"] = reflect.TypeOf((*InsufficientAgentVmsDeployedFault)(nil)).Elem() -} - -type InsufficientCpuResourcesFault struct { - InsufficientResourcesFault - - Unreserved int64 `xml:"unreserved"` - Requested int64 `xml:"requested"` -} - -func init() { - t["InsufficientCpuResourcesFault"] = reflect.TypeOf((*InsufficientCpuResourcesFault)(nil)).Elem() -} - -type InsufficientCpuResourcesFaultFault InsufficientCpuResourcesFault - -func init() { - t["InsufficientCpuResourcesFaultFault"] = reflect.TypeOf((*InsufficientCpuResourcesFaultFault)(nil)).Elem() -} - -type InsufficientDisks struct { - VsanDiskFault -} - -func init() { - t["InsufficientDisks"] = reflect.TypeOf((*InsufficientDisks)(nil)).Elem() -} - -type InsufficientDisksFault InsufficientDisks - -func init() { - t["InsufficientDisksFault"] = reflect.TypeOf((*InsufficientDisksFault)(nil)).Elem() -} - -type InsufficientFailoverResourcesEvent struct { - ClusterEvent -} - -func init() { - t["InsufficientFailoverResourcesEvent"] = reflect.TypeOf((*InsufficientFailoverResourcesEvent)(nil)).Elem() -} - -type InsufficientFailoverResourcesFault struct { - InsufficientResourcesFault -} - -func init() { - t["InsufficientFailoverResourcesFault"] = reflect.TypeOf((*InsufficientFailoverResourcesFault)(nil)).Elem() -} - -type InsufficientFailoverResourcesFaultFault InsufficientFailoverResourcesFault - -func init() { - t["InsufficientFailoverResourcesFaultFault"] = reflect.TypeOf((*InsufficientFailoverResourcesFaultFault)(nil)).Elem() -} - -type InsufficientGraphicsResourcesFault struct { - InsufficientResourcesFault -} - -func init() { - t["InsufficientGraphicsResourcesFault"] = reflect.TypeOf((*InsufficientGraphicsResourcesFault)(nil)).Elem() -} - -type InsufficientGraphicsResourcesFaultFault InsufficientGraphicsResourcesFault - -func init() { - t["InsufficientGraphicsResourcesFaultFault"] = reflect.TypeOf((*InsufficientGraphicsResourcesFaultFault)(nil)).Elem() -} - -type InsufficientHostCapacityFault struct { - InsufficientResourcesFault - - Host *ManagedObjectReference `xml:"host,omitempty"` -} - -func init() { - t["InsufficientHostCapacityFault"] = reflect.TypeOf((*InsufficientHostCapacityFault)(nil)).Elem() -} - -type InsufficientHostCapacityFaultFault BaseInsufficientHostCapacityFault - -func init() { - t["InsufficientHostCapacityFaultFault"] = reflect.TypeOf((*InsufficientHostCapacityFaultFault)(nil)).Elem() -} - -type InsufficientHostCpuCapacityFault struct { - InsufficientHostCapacityFault - - Unreserved int64 `xml:"unreserved"` - Requested int64 `xml:"requested"` -} - -func init() { - t["InsufficientHostCpuCapacityFault"] = reflect.TypeOf((*InsufficientHostCpuCapacityFault)(nil)).Elem() -} - -type InsufficientHostCpuCapacityFaultFault InsufficientHostCpuCapacityFault - -func init() { - t["InsufficientHostCpuCapacityFaultFault"] = reflect.TypeOf((*InsufficientHostCpuCapacityFaultFault)(nil)).Elem() -} - -type InsufficientHostMemoryCapacityFault struct { - InsufficientHostCapacityFault - - Unreserved int64 `xml:"unreserved"` - Requested int64 `xml:"requested"` -} - -func init() { - t["InsufficientHostMemoryCapacityFault"] = reflect.TypeOf((*InsufficientHostMemoryCapacityFault)(nil)).Elem() -} - -type InsufficientHostMemoryCapacityFaultFault InsufficientHostMemoryCapacityFault - -func init() { - t["InsufficientHostMemoryCapacityFaultFault"] = reflect.TypeOf((*InsufficientHostMemoryCapacityFaultFault)(nil)).Elem() -} - -type InsufficientMemoryResourcesFault struct { - InsufficientResourcesFault - - Unreserved int64 `xml:"unreserved"` - Requested int64 `xml:"requested"` -} - -func init() { - t["InsufficientMemoryResourcesFault"] = reflect.TypeOf((*InsufficientMemoryResourcesFault)(nil)).Elem() -} - -type InsufficientMemoryResourcesFaultFault InsufficientMemoryResourcesFault - -func init() { - t["InsufficientMemoryResourcesFaultFault"] = reflect.TypeOf((*InsufficientMemoryResourcesFaultFault)(nil)).Elem() -} - -type InsufficientNetworkCapacity struct { - InsufficientResourcesFault -} - -func init() { - t["InsufficientNetworkCapacity"] = reflect.TypeOf((*InsufficientNetworkCapacity)(nil)).Elem() -} - -type InsufficientNetworkCapacityFault InsufficientNetworkCapacity - -func init() { - t["InsufficientNetworkCapacityFault"] = reflect.TypeOf((*InsufficientNetworkCapacityFault)(nil)).Elem() -} - -type InsufficientNetworkResourcePoolCapacity struct { - InsufficientResourcesFault - - DvsName string `xml:"dvsName"` - DvsUuid string `xml:"dvsUuid"` - ResourcePoolKey string `xml:"resourcePoolKey"` - Available int64 `xml:"available"` - Requested int64 `xml:"requested"` - Device []string `xml:"device"` -} - -func init() { - t["InsufficientNetworkResourcePoolCapacity"] = reflect.TypeOf((*InsufficientNetworkResourcePoolCapacity)(nil)).Elem() -} - -type InsufficientNetworkResourcePoolCapacityFault InsufficientNetworkResourcePoolCapacity - -func init() { - t["InsufficientNetworkResourcePoolCapacityFault"] = reflect.TypeOf((*InsufficientNetworkResourcePoolCapacityFault)(nil)).Elem() -} - -type InsufficientPerCpuCapacity struct { - InsufficientHostCapacityFault -} - -func init() { - t["InsufficientPerCpuCapacity"] = reflect.TypeOf((*InsufficientPerCpuCapacity)(nil)).Elem() -} - -type InsufficientPerCpuCapacityFault InsufficientPerCpuCapacity - -func init() { - t["InsufficientPerCpuCapacityFault"] = reflect.TypeOf((*InsufficientPerCpuCapacityFault)(nil)).Elem() -} - -type InsufficientResourcesFault struct { - VimFault -} - -func init() { - t["InsufficientResourcesFault"] = reflect.TypeOf((*InsufficientResourcesFault)(nil)).Elem() -} - -type InsufficientResourcesFaultFault BaseInsufficientResourcesFault - -func init() { - t["InsufficientResourcesFaultFault"] = reflect.TypeOf((*InsufficientResourcesFaultFault)(nil)).Elem() -} - -type InsufficientStandbyCpuResource struct { - InsufficientStandbyResource - - Available int64 `xml:"available"` - Requested int64 `xml:"requested"` -} - -func init() { - t["InsufficientStandbyCpuResource"] = reflect.TypeOf((*InsufficientStandbyCpuResource)(nil)).Elem() -} - -type InsufficientStandbyCpuResourceFault InsufficientStandbyCpuResource - -func init() { - t["InsufficientStandbyCpuResourceFault"] = reflect.TypeOf((*InsufficientStandbyCpuResourceFault)(nil)).Elem() -} - -type InsufficientStandbyMemoryResource struct { - InsufficientStandbyResource - - Available int64 `xml:"available"` - Requested int64 `xml:"requested"` -} - -func init() { - t["InsufficientStandbyMemoryResource"] = reflect.TypeOf((*InsufficientStandbyMemoryResource)(nil)).Elem() -} - -type InsufficientStandbyMemoryResourceFault InsufficientStandbyMemoryResource - -func init() { - t["InsufficientStandbyMemoryResourceFault"] = reflect.TypeOf((*InsufficientStandbyMemoryResourceFault)(nil)).Elem() -} - -type InsufficientStandbyResource struct { - InsufficientResourcesFault -} - -func init() { - t["InsufficientStandbyResource"] = reflect.TypeOf((*InsufficientStandbyResource)(nil)).Elem() -} - -type InsufficientStandbyResourceFault BaseInsufficientStandbyResource - -func init() { - t["InsufficientStandbyResourceFault"] = reflect.TypeOf((*InsufficientStandbyResourceFault)(nil)).Elem() -} - -type InsufficientStorageIops struct { - VimFault - - UnreservedIops int64 `xml:"unreservedIops"` - RequestedIops int64 `xml:"requestedIops"` - DatastoreName string `xml:"datastoreName"` -} - -func init() { - t["InsufficientStorageIops"] = reflect.TypeOf((*InsufficientStorageIops)(nil)).Elem() -} - -type InsufficientStorageIopsFault InsufficientStorageIops - -func init() { - t["InsufficientStorageIopsFault"] = reflect.TypeOf((*InsufficientStorageIopsFault)(nil)).Elem() -} - -type InsufficientStorageSpace struct { - InsufficientResourcesFault -} - -func init() { - t["InsufficientStorageSpace"] = reflect.TypeOf((*InsufficientStorageSpace)(nil)).Elem() -} - -type InsufficientStorageSpaceFault InsufficientStorageSpace - -func init() { - t["InsufficientStorageSpaceFault"] = reflect.TypeOf((*InsufficientStorageSpaceFault)(nil)).Elem() -} - -type InsufficientVFlashResourcesFault struct { - InsufficientResourcesFault - - FreeSpaceInMB int64 `xml:"freeSpaceInMB,omitempty"` - FreeSpace int64 `xml:"freeSpace"` - RequestedSpaceInMB int64 `xml:"requestedSpaceInMB,omitempty"` - RequestedSpace int64 `xml:"requestedSpace"` -} - -func init() { - t["InsufficientVFlashResourcesFault"] = reflect.TypeOf((*InsufficientVFlashResourcesFault)(nil)).Elem() -} - -type InsufficientVFlashResourcesFaultFault InsufficientVFlashResourcesFault - -func init() { - t["InsufficientVFlashResourcesFaultFault"] = reflect.TypeOf((*InsufficientVFlashResourcesFaultFault)(nil)).Elem() -} - -type IntExpression struct { - NegatableExpression - - Value int32 `xml:"value,omitempty"` -} - -func init() { - t["IntExpression"] = reflect.TypeOf((*IntExpression)(nil)).Elem() -} - -type IntOption struct { - OptionType - - Min int32 `xml:"min"` - Max int32 `xml:"max"` - DefaultValue int32 `xml:"defaultValue"` -} - -func init() { - t["IntOption"] = reflect.TypeOf((*IntOption)(nil)).Elem() -} - -type IntPolicy struct { - InheritablePolicy - - Value int32 `xml:"value,omitempty"` -} - -func init() { - t["IntPolicy"] = reflect.TypeOf((*IntPolicy)(nil)).Elem() -} - -type InvalidAffinitySettingFault struct { - VimFault -} - -func init() { - t["InvalidAffinitySettingFault"] = reflect.TypeOf((*InvalidAffinitySettingFault)(nil)).Elem() -} - -type InvalidAffinitySettingFaultFault InvalidAffinitySettingFault - -func init() { - t["InvalidAffinitySettingFaultFault"] = reflect.TypeOf((*InvalidAffinitySettingFaultFault)(nil)).Elem() -} - -type InvalidArgument struct { - RuntimeFault - - InvalidProperty string `xml:"invalidProperty,omitempty"` -} - -func init() { - t["InvalidArgument"] = reflect.TypeOf((*InvalidArgument)(nil)).Elem() -} - -type InvalidArgumentFault BaseInvalidArgument - -func init() { - t["InvalidArgumentFault"] = reflect.TypeOf((*InvalidArgumentFault)(nil)).Elem() -} - -type InvalidBmcRole struct { - VimFault -} - -func init() { - t["InvalidBmcRole"] = reflect.TypeOf((*InvalidBmcRole)(nil)).Elem() -} - -type InvalidBmcRoleFault InvalidBmcRole - -func init() { - t["InvalidBmcRoleFault"] = reflect.TypeOf((*InvalidBmcRoleFault)(nil)).Elem() -} - -type InvalidBundle struct { - PlatformConfigFault -} - -func init() { - t["InvalidBundle"] = reflect.TypeOf((*InvalidBundle)(nil)).Elem() -} - -type InvalidBundleFault InvalidBundle - -func init() { - t["InvalidBundleFault"] = reflect.TypeOf((*InvalidBundleFault)(nil)).Elem() -} - -type InvalidCAMCertificate struct { - InvalidCAMServer -} - -func init() { - t["InvalidCAMCertificate"] = reflect.TypeOf((*InvalidCAMCertificate)(nil)).Elem() -} - -type InvalidCAMCertificateFault InvalidCAMCertificate - -func init() { - t["InvalidCAMCertificateFault"] = reflect.TypeOf((*InvalidCAMCertificateFault)(nil)).Elem() -} - -type InvalidCAMServer struct { - ActiveDirectoryFault - - CamServer string `xml:"camServer"` -} - -func init() { - t["InvalidCAMServer"] = reflect.TypeOf((*InvalidCAMServer)(nil)).Elem() -} - -type InvalidCAMServerFault BaseInvalidCAMServer - -func init() { - t["InvalidCAMServerFault"] = reflect.TypeOf((*InvalidCAMServerFault)(nil)).Elem() -} - -type InvalidClientCertificate struct { - InvalidLogin -} - -func init() { - t["InvalidClientCertificate"] = reflect.TypeOf((*InvalidClientCertificate)(nil)).Elem() -} - -type InvalidClientCertificateFault InvalidClientCertificate - -func init() { - t["InvalidClientCertificateFault"] = reflect.TypeOf((*InvalidClientCertificateFault)(nil)).Elem() -} - -type InvalidCollectorVersion struct { - MethodFault -} - -func init() { - t["InvalidCollectorVersion"] = reflect.TypeOf((*InvalidCollectorVersion)(nil)).Elem() -} - -type InvalidCollectorVersionFault InvalidCollectorVersion - -func init() { - t["InvalidCollectorVersionFault"] = reflect.TypeOf((*InvalidCollectorVersionFault)(nil)).Elem() -} - -type InvalidController struct { - InvalidDeviceSpec - - ControllerKey int32 `xml:"controllerKey"` -} - -func init() { - t["InvalidController"] = reflect.TypeOf((*InvalidController)(nil)).Elem() -} - -type InvalidControllerFault InvalidController - -func init() { - t["InvalidControllerFault"] = reflect.TypeOf((*InvalidControllerFault)(nil)).Elem() -} - -type InvalidDasConfigArgument struct { - InvalidArgument - - Entry string `xml:"entry,omitempty"` - ClusterName string `xml:"clusterName,omitempty"` -} - -func init() { - t["InvalidDasConfigArgument"] = reflect.TypeOf((*InvalidDasConfigArgument)(nil)).Elem() -} - -type InvalidDasConfigArgumentFault InvalidDasConfigArgument - -func init() { - t["InvalidDasConfigArgumentFault"] = reflect.TypeOf((*InvalidDasConfigArgumentFault)(nil)).Elem() -} - -type InvalidDasRestartPriorityForFtVm struct { - InvalidArgument - - Vm ManagedObjectReference `xml:"vm"` - VmName string `xml:"vmName"` -} - -func init() { - t["InvalidDasRestartPriorityForFtVm"] = reflect.TypeOf((*InvalidDasRestartPriorityForFtVm)(nil)).Elem() -} - -type InvalidDasRestartPriorityForFtVmFault InvalidDasRestartPriorityForFtVm - -func init() { - t["InvalidDasRestartPriorityForFtVmFault"] = reflect.TypeOf((*InvalidDasRestartPriorityForFtVmFault)(nil)).Elem() -} - -type InvalidDatastore struct { - VimFault - - Datastore *ManagedObjectReference `xml:"datastore,omitempty"` - Name string `xml:"name,omitempty"` -} - -func init() { - t["InvalidDatastore"] = reflect.TypeOf((*InvalidDatastore)(nil)).Elem() -} - -type InvalidDatastoreFault BaseInvalidDatastore - -func init() { - t["InvalidDatastoreFault"] = reflect.TypeOf((*InvalidDatastoreFault)(nil)).Elem() -} - -type InvalidDatastorePath struct { - InvalidDatastore - - DatastorePath string `xml:"datastorePath"` -} - -func init() { - t["InvalidDatastorePath"] = reflect.TypeOf((*InvalidDatastorePath)(nil)).Elem() -} - -type InvalidDatastorePathFault InvalidDatastorePath - -func init() { - t["InvalidDatastorePathFault"] = reflect.TypeOf((*InvalidDatastorePathFault)(nil)).Elem() -} - -type InvalidDatastoreState struct { - InvalidState - - DatastoreName string `xml:"datastoreName,omitempty"` -} - -func init() { - t["InvalidDatastoreState"] = reflect.TypeOf((*InvalidDatastoreState)(nil)).Elem() -} - -type InvalidDatastoreStateFault InvalidDatastoreState - -func init() { - t["InvalidDatastoreStateFault"] = reflect.TypeOf((*InvalidDatastoreStateFault)(nil)).Elem() -} - -type InvalidDeviceBacking struct { - InvalidDeviceSpec -} - -func init() { - t["InvalidDeviceBacking"] = reflect.TypeOf((*InvalidDeviceBacking)(nil)).Elem() -} - -type InvalidDeviceBackingFault InvalidDeviceBacking - -func init() { - t["InvalidDeviceBackingFault"] = reflect.TypeOf((*InvalidDeviceBackingFault)(nil)).Elem() -} - -type InvalidDeviceOperation struct { - InvalidDeviceSpec - - BadOp VirtualDeviceConfigSpecOperation `xml:"badOp,omitempty"` - BadFileOp VirtualDeviceConfigSpecFileOperation `xml:"badFileOp,omitempty"` -} - -func init() { - t["InvalidDeviceOperation"] = reflect.TypeOf((*InvalidDeviceOperation)(nil)).Elem() -} - -type InvalidDeviceOperationFault InvalidDeviceOperation - -func init() { - t["InvalidDeviceOperationFault"] = reflect.TypeOf((*InvalidDeviceOperationFault)(nil)).Elem() -} - -type InvalidDeviceSpec struct { - InvalidVmConfig - - DeviceIndex int32 `xml:"deviceIndex"` -} - -func init() { - t["InvalidDeviceSpec"] = reflect.TypeOf((*InvalidDeviceSpec)(nil)).Elem() -} - -type InvalidDeviceSpecFault BaseInvalidDeviceSpec - -func init() { - t["InvalidDeviceSpecFault"] = reflect.TypeOf((*InvalidDeviceSpecFault)(nil)).Elem() -} - -type InvalidDiskFormat struct { - InvalidFormat -} - -func init() { - t["InvalidDiskFormat"] = reflect.TypeOf((*InvalidDiskFormat)(nil)).Elem() -} - -type InvalidDiskFormatFault InvalidDiskFormat - -func init() { - t["InvalidDiskFormatFault"] = reflect.TypeOf((*InvalidDiskFormatFault)(nil)).Elem() -} - -type InvalidDrsBehaviorForFtVm struct { - InvalidArgument - - Vm ManagedObjectReference `xml:"vm"` - VmName string `xml:"vmName"` -} - -func init() { - t["InvalidDrsBehaviorForFtVm"] = reflect.TypeOf((*InvalidDrsBehaviorForFtVm)(nil)).Elem() -} - -type InvalidDrsBehaviorForFtVmFault InvalidDrsBehaviorForFtVm - -func init() { - t["InvalidDrsBehaviorForFtVmFault"] = reflect.TypeOf((*InvalidDrsBehaviorForFtVmFault)(nil)).Elem() -} - -type InvalidEditionEvent struct { - LicenseEvent - - Feature string `xml:"feature"` -} - -func init() { - t["InvalidEditionEvent"] = reflect.TypeOf((*InvalidEditionEvent)(nil)).Elem() -} - -type InvalidEditionLicense struct { - NotEnoughLicenses - - Feature string `xml:"feature"` -} - -func init() { - t["InvalidEditionLicense"] = reflect.TypeOf((*InvalidEditionLicense)(nil)).Elem() -} - -type InvalidEditionLicenseFault InvalidEditionLicense - -func init() { - t["InvalidEditionLicenseFault"] = reflect.TypeOf((*InvalidEditionLicenseFault)(nil)).Elem() -} - -type InvalidEvent struct { - VimFault -} - -func init() { - t["InvalidEvent"] = reflect.TypeOf((*InvalidEvent)(nil)).Elem() -} - -type InvalidEventFault InvalidEvent - -func init() { - t["InvalidEventFault"] = reflect.TypeOf((*InvalidEventFault)(nil)).Elem() -} - -type InvalidFolder struct { - VimFault - - Target ManagedObjectReference `xml:"target"` -} - -func init() { - t["InvalidFolder"] = reflect.TypeOf((*InvalidFolder)(nil)).Elem() -} - -type InvalidFolderFault BaseInvalidFolder - -func init() { - t["InvalidFolderFault"] = reflect.TypeOf((*InvalidFolderFault)(nil)).Elem() -} - -type InvalidFormat struct { - VmConfigFault -} - -func init() { - t["InvalidFormat"] = reflect.TypeOf((*InvalidFormat)(nil)).Elem() -} - -type InvalidFormatFault BaseInvalidFormat - -func init() { - t["InvalidFormatFault"] = reflect.TypeOf((*InvalidFormatFault)(nil)).Elem() -} - -type InvalidGuestLogin struct { - GuestOperationsFault -} - -func init() { - t["InvalidGuestLogin"] = reflect.TypeOf((*InvalidGuestLogin)(nil)).Elem() -} - -type InvalidGuestLoginFault InvalidGuestLogin - -func init() { - t["InvalidGuestLoginFault"] = reflect.TypeOf((*InvalidGuestLoginFault)(nil)).Elem() -} - -type InvalidHostConnectionState struct { - InvalidHostState -} - -func init() { - t["InvalidHostConnectionState"] = reflect.TypeOf((*InvalidHostConnectionState)(nil)).Elem() -} - -type InvalidHostConnectionStateFault InvalidHostConnectionState - -func init() { - t["InvalidHostConnectionStateFault"] = reflect.TypeOf((*InvalidHostConnectionStateFault)(nil)).Elem() -} - -type InvalidHostName struct { - HostConfigFault -} - -func init() { - t["InvalidHostName"] = reflect.TypeOf((*InvalidHostName)(nil)).Elem() -} - -type InvalidHostNameFault InvalidHostName - -func init() { - t["InvalidHostNameFault"] = reflect.TypeOf((*InvalidHostNameFault)(nil)).Elem() -} - -type InvalidHostState struct { - InvalidState - - Host *ManagedObjectReference `xml:"host,omitempty"` -} - -func init() { - t["InvalidHostState"] = reflect.TypeOf((*InvalidHostState)(nil)).Elem() -} - -type InvalidHostStateFault BaseInvalidHostState - -func init() { - t["InvalidHostStateFault"] = reflect.TypeOf((*InvalidHostStateFault)(nil)).Elem() -} - -type InvalidIndexArgument struct { - InvalidArgument - - Key string `xml:"key"` -} - -func init() { - t["InvalidIndexArgument"] = reflect.TypeOf((*InvalidIndexArgument)(nil)).Elem() -} - -type InvalidIndexArgumentFault InvalidIndexArgument - -func init() { - t["InvalidIndexArgumentFault"] = reflect.TypeOf((*InvalidIndexArgumentFault)(nil)).Elem() -} - -type InvalidIpfixConfig struct { - DvsFault - - Property string `xml:"property,omitempty"` -} - -func init() { - t["InvalidIpfixConfig"] = reflect.TypeOf((*InvalidIpfixConfig)(nil)).Elem() -} - -type InvalidIpfixConfigFault InvalidIpfixConfig - -func init() { - t["InvalidIpfixConfigFault"] = reflect.TypeOf((*InvalidIpfixConfigFault)(nil)).Elem() -} - -type InvalidIpmiLoginInfo struct { - VimFault -} - -func init() { - t["InvalidIpmiLoginInfo"] = reflect.TypeOf((*InvalidIpmiLoginInfo)(nil)).Elem() -} - -type InvalidIpmiLoginInfoFault InvalidIpmiLoginInfo - -func init() { - t["InvalidIpmiLoginInfoFault"] = reflect.TypeOf((*InvalidIpmiLoginInfoFault)(nil)).Elem() -} - -type InvalidIpmiMacAddress struct { - VimFault - - UserProvidedMacAddress string `xml:"userProvidedMacAddress"` - ObservedMacAddress string `xml:"observedMacAddress"` -} - -func init() { - t["InvalidIpmiMacAddress"] = reflect.TypeOf((*InvalidIpmiMacAddress)(nil)).Elem() -} - -type InvalidIpmiMacAddressFault InvalidIpmiMacAddress - -func init() { - t["InvalidIpmiMacAddressFault"] = reflect.TypeOf((*InvalidIpmiMacAddressFault)(nil)).Elem() -} - -type InvalidLicense struct { - VimFault - - LicenseContent string `xml:"licenseContent"` -} - -func init() { - t["InvalidLicense"] = reflect.TypeOf((*InvalidLicense)(nil)).Elem() -} - -type InvalidLicenseFault InvalidLicense - -func init() { - t["InvalidLicenseFault"] = reflect.TypeOf((*InvalidLicenseFault)(nil)).Elem() -} - -type InvalidLocale struct { - VimFault -} - -func init() { - t["InvalidLocale"] = reflect.TypeOf((*InvalidLocale)(nil)).Elem() -} - -type InvalidLocaleFault InvalidLocale - -func init() { - t["InvalidLocaleFault"] = reflect.TypeOf((*InvalidLocaleFault)(nil)).Elem() -} - -type InvalidLogin struct { - VimFault -} - -func init() { - t["InvalidLogin"] = reflect.TypeOf((*InvalidLogin)(nil)).Elem() -} - -type InvalidLoginFault BaseInvalidLogin - -func init() { - t["InvalidLoginFault"] = reflect.TypeOf((*InvalidLoginFault)(nil)).Elem() -} - -type InvalidName struct { - VimFault - - Name string `xml:"name"` - Entity *ManagedObjectReference `xml:"entity,omitempty"` -} - -func init() { - t["InvalidName"] = reflect.TypeOf((*InvalidName)(nil)).Elem() -} - -type InvalidNameFault InvalidName - -func init() { - t["InvalidNameFault"] = reflect.TypeOf((*InvalidNameFault)(nil)).Elem() -} - -type InvalidNasCredentials struct { - NasConfigFault - - UserName string `xml:"userName"` -} - -func init() { - t["InvalidNasCredentials"] = reflect.TypeOf((*InvalidNasCredentials)(nil)).Elem() -} - -type InvalidNasCredentialsFault InvalidNasCredentials - -func init() { - t["InvalidNasCredentialsFault"] = reflect.TypeOf((*InvalidNasCredentialsFault)(nil)).Elem() -} - -type InvalidNetworkInType struct { - VAppPropertyFault -} - -func init() { - t["InvalidNetworkInType"] = reflect.TypeOf((*InvalidNetworkInType)(nil)).Elem() -} - -type InvalidNetworkInTypeFault InvalidNetworkInType - -func init() { - t["InvalidNetworkInTypeFault"] = reflect.TypeOf((*InvalidNetworkInTypeFault)(nil)).Elem() -} - -type InvalidNetworkResource struct { - NasConfigFault - - RemoteHost string `xml:"remoteHost"` - RemotePath string `xml:"remotePath"` -} - -func init() { - t["InvalidNetworkResource"] = reflect.TypeOf((*InvalidNetworkResource)(nil)).Elem() -} - -type InvalidNetworkResourceFault InvalidNetworkResource - -func init() { - t["InvalidNetworkResourceFault"] = reflect.TypeOf((*InvalidNetworkResourceFault)(nil)).Elem() -} - -type InvalidOperationOnSecondaryVm struct { - VmFaultToleranceIssue - - InstanceUuid string `xml:"instanceUuid,omitempty"` -} - -func init() { - t["InvalidOperationOnSecondaryVm"] = reflect.TypeOf((*InvalidOperationOnSecondaryVm)(nil)).Elem() -} - -type InvalidOperationOnSecondaryVmFault InvalidOperationOnSecondaryVm - -func init() { - t["InvalidOperationOnSecondaryVmFault"] = reflect.TypeOf((*InvalidOperationOnSecondaryVmFault)(nil)).Elem() -} - -type InvalidPowerState struct { - InvalidState - - RequestedState VirtualMachinePowerState `xml:"requestedState,omitempty"` - ExistingState VirtualMachinePowerState `xml:"existingState"` -} - -func init() { - t["InvalidPowerState"] = reflect.TypeOf((*InvalidPowerState)(nil)).Elem() -} - -type InvalidPowerStateFault InvalidPowerState - -func init() { - t["InvalidPowerStateFault"] = reflect.TypeOf((*InvalidPowerStateFault)(nil)).Elem() -} - -type InvalidPrivilege struct { - VimFault - - Privilege string `xml:"privilege"` -} - -func init() { - t["InvalidPrivilege"] = reflect.TypeOf((*InvalidPrivilege)(nil)).Elem() -} - -type InvalidPrivilegeFault InvalidPrivilege - -func init() { - t["InvalidPrivilegeFault"] = reflect.TypeOf((*InvalidPrivilegeFault)(nil)).Elem() -} - -type InvalidProfileReferenceHost struct { - RuntimeFault - - Reason string `xml:"reason,omitempty"` - Host *ManagedObjectReference `xml:"host,omitempty"` - Profile *ManagedObjectReference `xml:"profile,omitempty"` -} - -func init() { - t["InvalidProfileReferenceHost"] = reflect.TypeOf((*InvalidProfileReferenceHost)(nil)).Elem() -} - -type InvalidProfileReferenceHostFault InvalidProfileReferenceHost - -func init() { - t["InvalidProfileReferenceHostFault"] = reflect.TypeOf((*InvalidProfileReferenceHostFault)(nil)).Elem() -} - -type InvalidProperty struct { - MethodFault - - Name string `xml:"name"` -} - -func init() { - t["InvalidProperty"] = reflect.TypeOf((*InvalidProperty)(nil)).Elem() -} - -type InvalidPropertyFault InvalidProperty - -func init() { - t["InvalidPropertyFault"] = reflect.TypeOf((*InvalidPropertyFault)(nil)).Elem() -} - -type InvalidPropertyType struct { - VAppPropertyFault -} - -func init() { - t["InvalidPropertyType"] = reflect.TypeOf((*InvalidPropertyType)(nil)).Elem() -} - -type InvalidPropertyTypeFault InvalidPropertyType - -func init() { - t["InvalidPropertyTypeFault"] = reflect.TypeOf((*InvalidPropertyTypeFault)(nil)).Elem() -} - -type InvalidPropertyValue struct { - VAppPropertyFault -} - -func init() { - t["InvalidPropertyValue"] = reflect.TypeOf((*InvalidPropertyValue)(nil)).Elem() -} - -type InvalidPropertyValueFault BaseInvalidPropertyValue - -func init() { - t["InvalidPropertyValueFault"] = reflect.TypeOf((*InvalidPropertyValueFault)(nil)).Elem() -} - -type InvalidRequest struct { - RuntimeFault -} - -func init() { - t["InvalidRequest"] = reflect.TypeOf((*InvalidRequest)(nil)).Elem() -} - -type InvalidRequestFault BaseInvalidRequest - -func init() { - t["InvalidRequestFault"] = reflect.TypeOf((*InvalidRequestFault)(nil)).Elem() -} - -type InvalidResourcePoolStructureFault struct { - InsufficientResourcesFault -} - -func init() { - t["InvalidResourcePoolStructureFault"] = reflect.TypeOf((*InvalidResourcePoolStructureFault)(nil)).Elem() -} - -type InvalidResourcePoolStructureFaultFault InvalidResourcePoolStructureFault - -func init() { - t["InvalidResourcePoolStructureFaultFault"] = reflect.TypeOf((*InvalidResourcePoolStructureFaultFault)(nil)).Elem() -} - -type InvalidSnapshotFormat struct { - InvalidFormat -} - -func init() { - t["InvalidSnapshotFormat"] = reflect.TypeOf((*InvalidSnapshotFormat)(nil)).Elem() -} - -type InvalidSnapshotFormatFault InvalidSnapshotFormat - -func init() { - t["InvalidSnapshotFormatFault"] = reflect.TypeOf((*InvalidSnapshotFormatFault)(nil)).Elem() -} - -type InvalidState struct { - VimFault -} - -func init() { - t["InvalidState"] = reflect.TypeOf((*InvalidState)(nil)).Elem() -} - -type InvalidStateFault BaseInvalidState - -func init() { - t["InvalidStateFault"] = reflect.TypeOf((*InvalidStateFault)(nil)).Elem() -} - -type InvalidType struct { - InvalidRequest - - Argument string `xml:"argument,omitempty"` -} - -func init() { - t["InvalidType"] = reflect.TypeOf((*InvalidType)(nil)).Elem() -} - -type InvalidTypeFault InvalidType - -func init() { - t["InvalidTypeFault"] = reflect.TypeOf((*InvalidTypeFault)(nil)).Elem() -} - -type InvalidVmConfig struct { - VmConfigFault - - Property string `xml:"property,omitempty"` -} - -func init() { - t["InvalidVmConfig"] = reflect.TypeOf((*InvalidVmConfig)(nil)).Elem() -} - -type InvalidVmConfigFault BaseInvalidVmConfig - -func init() { - t["InvalidVmConfigFault"] = reflect.TypeOf((*InvalidVmConfigFault)(nil)).Elem() -} - -type InventoryDescription struct { - DynamicData - - NumHosts int32 `xml:"numHosts"` - NumVirtualMachines int32 `xml:"numVirtualMachines"` - NumResourcePools int32 `xml:"numResourcePools,omitempty"` - NumClusters int32 `xml:"numClusters,omitempty"` - NumCpuDev int32 `xml:"numCpuDev,omitempty"` - NumNetDev int32 `xml:"numNetDev,omitempty"` - NumDiskDev int32 `xml:"numDiskDev,omitempty"` - NumvCpuDev int32 `xml:"numvCpuDev,omitempty"` - NumvNetDev int32 `xml:"numvNetDev,omitempty"` - NumvDiskDev int32 `xml:"numvDiskDev,omitempty"` -} - -func init() { - t["InventoryDescription"] = reflect.TypeOf((*InventoryDescription)(nil)).Elem() -} - -type InventoryHasStandardAloneHosts struct { - NotEnoughLicenses - - Hosts []string `xml:"hosts"` -} - -func init() { - t["InventoryHasStandardAloneHosts"] = reflect.TypeOf((*InventoryHasStandardAloneHosts)(nil)).Elem() -} - -type InventoryHasStandardAloneHostsFault InventoryHasStandardAloneHosts - -func init() { - t["InventoryHasStandardAloneHostsFault"] = reflect.TypeOf((*InventoryHasStandardAloneHostsFault)(nil)).Elem() -} - -type IoFilterHostIssue struct { - DynamicData - - Host ManagedObjectReference `xml:"host"` - Issue []LocalizedMethodFault `xml:"issue"` -} - -func init() { - t["IoFilterHostIssue"] = reflect.TypeOf((*IoFilterHostIssue)(nil)).Elem() -} - -type IoFilterInfo struct { - DynamicData - - Id string `xml:"id"` - Name string `xml:"name"` - Vendor string `xml:"vendor"` - Version string `xml:"version"` - Summary string `xml:"summary,omitempty"` - ReleaseDate string `xml:"releaseDate,omitempty"` -} - -func init() { - t["IoFilterInfo"] = reflect.TypeOf((*IoFilterInfo)(nil)).Elem() -} - -type IoFilterQueryIssueResult struct { - DynamicData - - OpType string `xml:"opType"` - HostIssue []IoFilterHostIssue `xml:"hostIssue,omitempty"` -} - -func init() { - t["IoFilterQueryIssueResult"] = reflect.TypeOf((*IoFilterQueryIssueResult)(nil)).Elem() -} - -type IpAddress struct { - NegatableExpression -} - -func init() { - t["IpAddress"] = reflect.TypeOf((*IpAddress)(nil)).Elem() -} - -type IpAddressProfile struct { - ApplyProfile -} - -func init() { - t["IpAddressProfile"] = reflect.TypeOf((*IpAddressProfile)(nil)).Elem() -} - -type IpHostnameGeneratorError struct { - CustomizationFault -} - -func init() { - t["IpHostnameGeneratorError"] = reflect.TypeOf((*IpHostnameGeneratorError)(nil)).Elem() -} - -type IpHostnameGeneratorErrorFault IpHostnameGeneratorError - -func init() { - t["IpHostnameGeneratorErrorFault"] = reflect.TypeOf((*IpHostnameGeneratorErrorFault)(nil)).Elem() -} - -type IpPool struct { - DynamicData - - Id int32 `xml:"id,omitempty"` - Name string `xml:"name,omitempty"` - Ipv4Config *IpPoolIpPoolConfigInfo `xml:"ipv4Config,omitempty"` - Ipv6Config *IpPoolIpPoolConfigInfo `xml:"ipv6Config,omitempty"` - DnsDomain string `xml:"dnsDomain,omitempty"` - DnsSearchPath string `xml:"dnsSearchPath,omitempty"` - HostPrefix string `xml:"hostPrefix,omitempty"` - HttpProxy string `xml:"httpProxy,omitempty"` - NetworkAssociation []IpPoolAssociation `xml:"networkAssociation,omitempty"` - AvailableIpv4Addresses int32 `xml:"availableIpv4Addresses,omitempty"` - AvailableIpv6Addresses int32 `xml:"availableIpv6Addresses,omitempty"` - AllocatedIpv4Addresses int32 `xml:"allocatedIpv4Addresses,omitempty"` - AllocatedIpv6Addresses int32 `xml:"allocatedIpv6Addresses,omitempty"` -} - -func init() { - t["IpPool"] = reflect.TypeOf((*IpPool)(nil)).Elem() -} - -type IpPoolAssociation struct { - DynamicData - - Network *ManagedObjectReference `xml:"network,omitempty"` - NetworkName string `xml:"networkName"` -} - -func init() { - t["IpPoolAssociation"] = reflect.TypeOf((*IpPoolAssociation)(nil)).Elem() -} - -type IpPoolIpPoolConfigInfo struct { - DynamicData - - SubnetAddress string `xml:"subnetAddress,omitempty"` - Netmask string `xml:"netmask,omitempty"` - Gateway string `xml:"gateway,omitempty"` - Range string `xml:"range,omitempty"` - Dns []string `xml:"dns,omitempty"` - DhcpServerAvailable *bool `xml:"dhcpServerAvailable"` - IpPoolEnabled *bool `xml:"ipPoolEnabled"` -} - -func init() { - t["IpPoolIpPoolConfigInfo"] = reflect.TypeOf((*IpPoolIpPoolConfigInfo)(nil)).Elem() -} - -type IpPoolManagerIpAllocation struct { - DynamicData - - IpAddress string `xml:"ipAddress"` - AllocationId string `xml:"allocationId"` -} - -func init() { - t["IpPoolManagerIpAllocation"] = reflect.TypeOf((*IpPoolManagerIpAllocation)(nil)).Elem() -} - -type IpRange struct { - IpAddress - - AddressPrefix string `xml:"addressPrefix"` - PrefixLength int32 `xml:"prefixLength,omitempty"` -} - -func init() { - t["IpRange"] = reflect.TypeOf((*IpRange)(nil)).Elem() -} - -type IpRouteProfile struct { - ApplyProfile - - StaticRoute []StaticRouteProfile `xml:"staticRoute,omitempty"` -} - -func init() { - t["IpRouteProfile"] = reflect.TypeOf((*IpRouteProfile)(nil)).Elem() -} - -type IsSharedGraphicsActive IsSharedGraphicsActiveRequestType - -func init() { - t["IsSharedGraphicsActive"] = reflect.TypeOf((*IsSharedGraphicsActive)(nil)).Elem() -} - -type IsSharedGraphicsActiveRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["IsSharedGraphicsActiveRequestType"] = reflect.TypeOf((*IsSharedGraphicsActiveRequestType)(nil)).Elem() -} - -type IsSharedGraphicsActiveResponse struct { - Returnval bool `xml:"returnval"` -} - -type IscsiDependencyEntity struct { - DynamicData - - PnicDevice string `xml:"pnicDevice"` - VnicDevice string `xml:"vnicDevice"` - VmhbaName string `xml:"vmhbaName"` -} - -func init() { - t["IscsiDependencyEntity"] = reflect.TypeOf((*IscsiDependencyEntity)(nil)).Elem() -} - -type IscsiFault struct { - VimFault -} - -func init() { - t["IscsiFault"] = reflect.TypeOf((*IscsiFault)(nil)).Elem() -} - -type IscsiFaultFault BaseIscsiFault - -func init() { - t["IscsiFaultFault"] = reflect.TypeOf((*IscsiFaultFault)(nil)).Elem() -} - -type IscsiFaultInvalidVnic struct { - IscsiFault - - VnicDevice string `xml:"vnicDevice"` -} - -func init() { - t["IscsiFaultInvalidVnic"] = reflect.TypeOf((*IscsiFaultInvalidVnic)(nil)).Elem() -} - -type IscsiFaultInvalidVnicFault IscsiFaultInvalidVnic - -func init() { - t["IscsiFaultInvalidVnicFault"] = reflect.TypeOf((*IscsiFaultInvalidVnicFault)(nil)).Elem() -} - -type IscsiFaultPnicInUse struct { - IscsiFault - - PnicDevice string `xml:"pnicDevice"` -} - -func init() { - t["IscsiFaultPnicInUse"] = reflect.TypeOf((*IscsiFaultPnicInUse)(nil)).Elem() -} - -type IscsiFaultPnicInUseFault IscsiFaultPnicInUse - -func init() { - t["IscsiFaultPnicInUseFault"] = reflect.TypeOf((*IscsiFaultPnicInUseFault)(nil)).Elem() -} - -type IscsiFaultVnicAlreadyBound struct { - IscsiFault - - VnicDevice string `xml:"vnicDevice"` -} - -func init() { - t["IscsiFaultVnicAlreadyBound"] = reflect.TypeOf((*IscsiFaultVnicAlreadyBound)(nil)).Elem() -} - -type IscsiFaultVnicAlreadyBoundFault IscsiFaultVnicAlreadyBound - -func init() { - t["IscsiFaultVnicAlreadyBoundFault"] = reflect.TypeOf((*IscsiFaultVnicAlreadyBoundFault)(nil)).Elem() -} - -type IscsiFaultVnicHasActivePaths struct { - IscsiFault - - VnicDevice string `xml:"vnicDevice"` -} - -func init() { - t["IscsiFaultVnicHasActivePaths"] = reflect.TypeOf((*IscsiFaultVnicHasActivePaths)(nil)).Elem() -} - -type IscsiFaultVnicHasActivePathsFault IscsiFaultVnicHasActivePaths - -func init() { - t["IscsiFaultVnicHasActivePathsFault"] = reflect.TypeOf((*IscsiFaultVnicHasActivePathsFault)(nil)).Elem() -} - -type IscsiFaultVnicHasMultipleUplinks struct { - IscsiFault - - VnicDevice string `xml:"vnicDevice"` -} - -func init() { - t["IscsiFaultVnicHasMultipleUplinks"] = reflect.TypeOf((*IscsiFaultVnicHasMultipleUplinks)(nil)).Elem() -} - -type IscsiFaultVnicHasMultipleUplinksFault IscsiFaultVnicHasMultipleUplinks - -func init() { - t["IscsiFaultVnicHasMultipleUplinksFault"] = reflect.TypeOf((*IscsiFaultVnicHasMultipleUplinksFault)(nil)).Elem() -} - -type IscsiFaultVnicHasNoUplinks struct { - IscsiFault - - VnicDevice string `xml:"vnicDevice"` -} - -func init() { - t["IscsiFaultVnicHasNoUplinks"] = reflect.TypeOf((*IscsiFaultVnicHasNoUplinks)(nil)).Elem() -} - -type IscsiFaultVnicHasNoUplinksFault IscsiFaultVnicHasNoUplinks - -func init() { - t["IscsiFaultVnicHasNoUplinksFault"] = reflect.TypeOf((*IscsiFaultVnicHasNoUplinksFault)(nil)).Elem() -} - -type IscsiFaultVnicHasWrongUplink struct { - IscsiFault - - VnicDevice string `xml:"vnicDevice"` -} - -func init() { - t["IscsiFaultVnicHasWrongUplink"] = reflect.TypeOf((*IscsiFaultVnicHasWrongUplink)(nil)).Elem() -} - -type IscsiFaultVnicHasWrongUplinkFault IscsiFaultVnicHasWrongUplink - -func init() { - t["IscsiFaultVnicHasWrongUplinkFault"] = reflect.TypeOf((*IscsiFaultVnicHasWrongUplinkFault)(nil)).Elem() -} - -type IscsiFaultVnicInUse struct { - IscsiFault - - VnicDevice string `xml:"vnicDevice"` -} - -func init() { - t["IscsiFaultVnicInUse"] = reflect.TypeOf((*IscsiFaultVnicInUse)(nil)).Elem() -} - -type IscsiFaultVnicInUseFault IscsiFaultVnicInUse - -func init() { - t["IscsiFaultVnicInUseFault"] = reflect.TypeOf((*IscsiFaultVnicInUseFault)(nil)).Elem() -} - -type IscsiFaultVnicIsLastPath struct { - IscsiFault - - VnicDevice string `xml:"vnicDevice"` -} - -func init() { - t["IscsiFaultVnicIsLastPath"] = reflect.TypeOf((*IscsiFaultVnicIsLastPath)(nil)).Elem() -} - -type IscsiFaultVnicIsLastPathFault IscsiFaultVnicIsLastPath - -func init() { - t["IscsiFaultVnicIsLastPathFault"] = reflect.TypeOf((*IscsiFaultVnicIsLastPathFault)(nil)).Elem() -} - -type IscsiFaultVnicNotBound struct { - IscsiFault - - VnicDevice string `xml:"vnicDevice"` -} - -func init() { - t["IscsiFaultVnicNotBound"] = reflect.TypeOf((*IscsiFaultVnicNotBound)(nil)).Elem() -} - -type IscsiFaultVnicNotBoundFault IscsiFaultVnicNotBound - -func init() { - t["IscsiFaultVnicNotBoundFault"] = reflect.TypeOf((*IscsiFaultVnicNotBoundFault)(nil)).Elem() -} - -type IscsiFaultVnicNotFound struct { - IscsiFault - - VnicDevice string `xml:"vnicDevice"` -} - -func init() { - t["IscsiFaultVnicNotFound"] = reflect.TypeOf((*IscsiFaultVnicNotFound)(nil)).Elem() -} - -type IscsiFaultVnicNotFoundFault IscsiFaultVnicNotFound - -func init() { - t["IscsiFaultVnicNotFoundFault"] = reflect.TypeOf((*IscsiFaultVnicNotFoundFault)(nil)).Elem() -} - -type IscsiMigrationDependency struct { - DynamicData - - MigrationAllowed bool `xml:"migrationAllowed"` - DisallowReason *IscsiStatus `xml:"disallowReason,omitempty"` - Dependency []IscsiDependencyEntity `xml:"dependency,omitempty"` -} - -func init() { - t["IscsiMigrationDependency"] = reflect.TypeOf((*IscsiMigrationDependency)(nil)).Elem() -} - -type IscsiPortInfo struct { - DynamicData - - VnicDevice string `xml:"vnicDevice,omitempty"` - Vnic *HostVirtualNic `xml:"vnic,omitempty"` - PnicDevice string `xml:"pnicDevice,omitempty"` - Pnic *PhysicalNic `xml:"pnic,omitempty"` - SwitchName string `xml:"switchName,omitempty"` - SwitchUuid string `xml:"switchUuid,omitempty"` - PortgroupName string `xml:"portgroupName,omitempty"` - PortgroupKey string `xml:"portgroupKey,omitempty"` - PortKey string `xml:"portKey,omitempty"` - ComplianceStatus *IscsiStatus `xml:"complianceStatus,omitempty"` - PathStatus string `xml:"pathStatus,omitempty"` -} - -func init() { - t["IscsiPortInfo"] = reflect.TypeOf((*IscsiPortInfo)(nil)).Elem() -} - -type IscsiStatus struct { - DynamicData - - Reason []LocalizedMethodFault `xml:"reason,omitempty"` -} - -func init() { - t["IscsiStatus"] = reflect.TypeOf((*IscsiStatus)(nil)).Elem() -} - -type IsoImageFileInfo struct { - FileInfo -} - -func init() { - t["IsoImageFileInfo"] = reflect.TypeOf((*IsoImageFileInfo)(nil)).Elem() -} - -type IsoImageFileQuery struct { - FileQuery -} - -func init() { - t["IsoImageFileQuery"] = reflect.TypeOf((*IsoImageFileQuery)(nil)).Elem() -} - -type JoinDomainRequestType struct { - This ManagedObjectReference `xml:"_this"` - DomainName string `xml:"domainName"` - UserName string `xml:"userName"` - Password string `xml:"password"` -} - -func init() { - t["JoinDomainRequestType"] = reflect.TypeOf((*JoinDomainRequestType)(nil)).Elem() -} - -type JoinDomainWithCAMRequestType struct { - This ManagedObjectReference `xml:"_this"` - DomainName string `xml:"domainName"` - CamServer string `xml:"camServer"` -} - -func init() { - t["JoinDomainWithCAMRequestType"] = reflect.TypeOf((*JoinDomainWithCAMRequestType)(nil)).Elem() -} - -type JoinDomainWithCAM_Task JoinDomainWithCAMRequestType - -func init() { - t["JoinDomainWithCAM_Task"] = reflect.TypeOf((*JoinDomainWithCAM_Task)(nil)).Elem() -} - -type JoinDomainWithCAM_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type JoinDomain_Task JoinDomainRequestType - -func init() { - t["JoinDomain_Task"] = reflect.TypeOf((*JoinDomain_Task)(nil)).Elem() -} - -type JoinDomain_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type KernelModuleInfo struct { - DynamicData - - Id int32 `xml:"id"` - Name string `xml:"name"` - Version string `xml:"version"` - Filename string `xml:"filename"` - OptionString string `xml:"optionString"` - Loaded bool `xml:"loaded"` - Enabled bool `xml:"enabled"` - UseCount int32 `xml:"useCount"` - ReadOnlySection KernelModuleSectionInfo `xml:"readOnlySection"` - WritableSection KernelModuleSectionInfo `xml:"writableSection"` - TextSection KernelModuleSectionInfo `xml:"textSection"` - DataSection KernelModuleSectionInfo `xml:"dataSection"` - BssSection KernelModuleSectionInfo `xml:"bssSection"` -} - -func init() { - t["KernelModuleInfo"] = reflect.TypeOf((*KernelModuleInfo)(nil)).Elem() -} - -type KernelModuleSectionInfo struct { - DynamicData - - Address int64 `xml:"address"` - Length int32 `xml:"length,omitempty"` -} - -func init() { - t["KernelModuleSectionInfo"] = reflect.TypeOf((*KernelModuleSectionInfo)(nil)).Elem() -} - -type KeyAnyValue struct { - DynamicData - - Key string `xml:"key"` - Value AnyType `xml:"value,typeattr"` -} - -func init() { - t["KeyAnyValue"] = reflect.TypeOf((*KeyAnyValue)(nil)).Elem() -} - -type KeyValue struct { - DynamicData - - Key string `xml:"key"` - Value string `xml:"value"` -} - -func init() { - t["KeyValue"] = reflect.TypeOf((*KeyValue)(nil)).Elem() -} - -type LargeRDMConversionNotSupported struct { - MigrationFault - - Device string `xml:"device"` -} - -func init() { - t["LargeRDMConversionNotSupported"] = reflect.TypeOf((*LargeRDMConversionNotSupported)(nil)).Elem() -} - -type LargeRDMConversionNotSupportedFault LargeRDMConversionNotSupported - -func init() { - t["LargeRDMConversionNotSupportedFault"] = reflect.TypeOf((*LargeRDMConversionNotSupportedFault)(nil)).Elem() -} - -type LargeRDMNotSupportedOnDatastore struct { - VmConfigFault - - Device string `xml:"device"` - Datastore ManagedObjectReference `xml:"datastore"` - DatastoreName string `xml:"datastoreName"` -} - -func init() { - t["LargeRDMNotSupportedOnDatastore"] = reflect.TypeOf((*LargeRDMNotSupportedOnDatastore)(nil)).Elem() -} - -type LargeRDMNotSupportedOnDatastoreFault LargeRDMNotSupportedOnDatastore - -func init() { - t["LargeRDMNotSupportedOnDatastoreFault"] = reflect.TypeOf((*LargeRDMNotSupportedOnDatastoreFault)(nil)).Elem() -} - -type LatencySensitivity struct { - DynamicData - - Level LatencySensitivitySensitivityLevel `xml:"level"` - Sensitivity int32 `xml:"sensitivity,omitempty"` -} - -func init() { - t["LatencySensitivity"] = reflect.TypeOf((*LatencySensitivity)(nil)).Elem() -} - -type LeaveCurrentDomainRequestType struct { - This ManagedObjectReference `xml:"_this"` - Force bool `xml:"force"` -} - -func init() { - t["LeaveCurrentDomainRequestType"] = reflect.TypeOf((*LeaveCurrentDomainRequestType)(nil)).Elem() -} - -type LeaveCurrentDomain_Task LeaveCurrentDomainRequestType - -func init() { - t["LeaveCurrentDomain_Task"] = reflect.TypeOf((*LeaveCurrentDomain_Task)(nil)).Elem() -} - -type LeaveCurrentDomain_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type LegacyNetworkInterfaceInUse struct { - CannotAccessNetwork -} - -func init() { - t["LegacyNetworkInterfaceInUse"] = reflect.TypeOf((*LegacyNetworkInterfaceInUse)(nil)).Elem() -} - -type LegacyNetworkInterfaceInUseFault LegacyNetworkInterfaceInUse - -func init() { - t["LegacyNetworkInterfaceInUseFault"] = reflect.TypeOf((*LegacyNetworkInterfaceInUseFault)(nil)).Elem() -} - -type LicenseAssignmentFailed struct { - RuntimeFault - - Reason string `xml:"reason,omitempty"` -} - -func init() { - t["LicenseAssignmentFailed"] = reflect.TypeOf((*LicenseAssignmentFailed)(nil)).Elem() -} - -type LicenseAssignmentFailedFault LicenseAssignmentFailed - -func init() { - t["LicenseAssignmentFailedFault"] = reflect.TypeOf((*LicenseAssignmentFailedFault)(nil)).Elem() -} - -type LicenseAssignmentManagerLicenseAssignment struct { - DynamicData - - EntityId string `xml:"entityId"` - Scope string `xml:"scope,omitempty"` - EntityDisplayName string `xml:"entityDisplayName,omitempty"` - AssignedLicense LicenseManagerLicenseInfo `xml:"assignedLicense"` - Properties []KeyAnyValue `xml:"properties,omitempty"` -} - -func init() { - t["LicenseAssignmentManagerLicenseAssignment"] = reflect.TypeOf((*LicenseAssignmentManagerLicenseAssignment)(nil)).Elem() -} - -type LicenseAvailabilityInfo struct { - DynamicData - - Feature LicenseFeatureInfo `xml:"feature"` - Total int32 `xml:"total"` - Available int32 `xml:"available"` -} - -func init() { - t["LicenseAvailabilityInfo"] = reflect.TypeOf((*LicenseAvailabilityInfo)(nil)).Elem() -} - -type LicenseDiagnostics struct { - DynamicData - - SourceLastChanged time.Time `xml:"sourceLastChanged"` - SourceLost string `xml:"sourceLost"` - SourceLatency float32 `xml:"sourceLatency"` - LicenseRequests string `xml:"licenseRequests"` - LicenseRequestFailures string `xml:"licenseRequestFailures"` - LicenseFeatureUnknowns string `xml:"licenseFeatureUnknowns"` - OpState LicenseManagerState `xml:"opState"` - LastStatusUpdate time.Time `xml:"lastStatusUpdate"` - OpFailureMessage string `xml:"opFailureMessage"` -} - -func init() { - t["LicenseDiagnostics"] = reflect.TypeOf((*LicenseDiagnostics)(nil)).Elem() -} - -type LicenseDowngradeDisallowed struct { - NotEnoughLicenses - - Edition string `xml:"edition"` - EntityId string `xml:"entityId"` - Features []KeyAnyValue `xml:"features"` -} - -func init() { - t["LicenseDowngradeDisallowed"] = reflect.TypeOf((*LicenseDowngradeDisallowed)(nil)).Elem() -} - -type LicenseDowngradeDisallowedFault LicenseDowngradeDisallowed - -func init() { - t["LicenseDowngradeDisallowedFault"] = reflect.TypeOf((*LicenseDowngradeDisallowedFault)(nil)).Elem() -} - -type LicenseEntityNotFound struct { - VimFault - - EntityId string `xml:"entityId"` -} - -func init() { - t["LicenseEntityNotFound"] = reflect.TypeOf((*LicenseEntityNotFound)(nil)).Elem() -} - -type LicenseEntityNotFoundFault LicenseEntityNotFound - -func init() { - t["LicenseEntityNotFoundFault"] = reflect.TypeOf((*LicenseEntityNotFoundFault)(nil)).Elem() -} - -type LicenseEvent struct { - Event -} - -func init() { - t["LicenseEvent"] = reflect.TypeOf((*LicenseEvent)(nil)).Elem() -} - -type LicenseExpired struct { - NotEnoughLicenses - - LicenseKey string `xml:"licenseKey"` -} - -func init() { - t["LicenseExpired"] = reflect.TypeOf((*LicenseExpired)(nil)).Elem() -} - -type LicenseExpiredEvent struct { - Event - - Feature LicenseFeatureInfo `xml:"feature"` -} - -func init() { - t["LicenseExpiredEvent"] = reflect.TypeOf((*LicenseExpiredEvent)(nil)).Elem() -} - -type LicenseExpiredFault LicenseExpired - -func init() { - t["LicenseExpiredFault"] = reflect.TypeOf((*LicenseExpiredFault)(nil)).Elem() -} - -type LicenseFeatureInfo struct { - DynamicData - - Key string `xml:"key"` - FeatureName string `xml:"featureName"` - FeatureDescription string `xml:"featureDescription,omitempty"` - State LicenseFeatureInfoState `xml:"state,omitempty"` - CostUnit string `xml:"costUnit"` - SourceRestriction string `xml:"sourceRestriction,omitempty"` - DependentKey []string `xml:"dependentKey,omitempty"` - Edition *bool `xml:"edition"` - ExpiresOn *time.Time `xml:"expiresOn"` -} - -func init() { - t["LicenseFeatureInfo"] = reflect.TypeOf((*LicenseFeatureInfo)(nil)).Elem() -} - -type LicenseKeyEntityMismatch struct { - NotEnoughLicenses -} - -func init() { - t["LicenseKeyEntityMismatch"] = reflect.TypeOf((*LicenseKeyEntityMismatch)(nil)).Elem() -} - -type LicenseKeyEntityMismatchFault LicenseKeyEntityMismatch - -func init() { - t["LicenseKeyEntityMismatchFault"] = reflect.TypeOf((*LicenseKeyEntityMismatchFault)(nil)).Elem() -} - -type LicenseManagerEvaluationInfo struct { - DynamicData - - Properties []KeyAnyValue `xml:"properties"` -} - -func init() { - t["LicenseManagerEvaluationInfo"] = reflect.TypeOf((*LicenseManagerEvaluationInfo)(nil)).Elem() -} - -type LicenseManagerLicenseInfo struct { - DynamicData - - LicenseKey string `xml:"licenseKey"` - EditionKey string `xml:"editionKey"` - Name string `xml:"name"` - Total int32 `xml:"total"` - Used int32 `xml:"used,omitempty"` - CostUnit string `xml:"costUnit"` - Properties []KeyAnyValue `xml:"properties,omitempty"` - Labels []KeyValue `xml:"labels,omitempty"` -} - -func init() { - t["LicenseManagerLicenseInfo"] = reflect.TypeOf((*LicenseManagerLicenseInfo)(nil)).Elem() -} - -type LicenseNonComplianceEvent struct { - LicenseEvent - - Url string `xml:"url"` -} - -func init() { - t["LicenseNonComplianceEvent"] = reflect.TypeOf((*LicenseNonComplianceEvent)(nil)).Elem() -} - -type LicenseReservationInfo struct { - DynamicData - - Key string `xml:"key"` - State LicenseReservationInfoState `xml:"state"` - Required int32 `xml:"required"` -} - -func init() { - t["LicenseReservationInfo"] = reflect.TypeOf((*LicenseReservationInfo)(nil)).Elem() -} - -type LicenseRestricted struct { - NotEnoughLicenses -} - -func init() { - t["LicenseRestricted"] = reflect.TypeOf((*LicenseRestricted)(nil)).Elem() -} - -type LicenseRestrictedEvent struct { - LicenseEvent -} - -func init() { - t["LicenseRestrictedEvent"] = reflect.TypeOf((*LicenseRestrictedEvent)(nil)).Elem() -} - -type LicenseRestrictedFault LicenseRestricted - -func init() { - t["LicenseRestrictedFault"] = reflect.TypeOf((*LicenseRestrictedFault)(nil)).Elem() -} - -type LicenseServerAvailableEvent struct { - LicenseEvent - - LicenseServer string `xml:"licenseServer"` -} - -func init() { - t["LicenseServerAvailableEvent"] = reflect.TypeOf((*LicenseServerAvailableEvent)(nil)).Elem() -} - -type LicenseServerSource struct { - LicenseSource - - LicenseServer string `xml:"licenseServer"` -} - -func init() { - t["LicenseServerSource"] = reflect.TypeOf((*LicenseServerSource)(nil)).Elem() -} - -type LicenseServerUnavailable struct { - VimFault - - LicenseServer string `xml:"licenseServer"` -} - -func init() { - t["LicenseServerUnavailable"] = reflect.TypeOf((*LicenseServerUnavailable)(nil)).Elem() -} - -type LicenseServerUnavailableEvent struct { - LicenseEvent - - LicenseServer string `xml:"licenseServer"` -} - -func init() { - t["LicenseServerUnavailableEvent"] = reflect.TypeOf((*LicenseServerUnavailableEvent)(nil)).Elem() -} - -type LicenseServerUnavailableFault LicenseServerUnavailable - -func init() { - t["LicenseServerUnavailableFault"] = reflect.TypeOf((*LicenseServerUnavailableFault)(nil)).Elem() -} - -type LicenseSource struct { - DynamicData -} - -func init() { - t["LicenseSource"] = reflect.TypeOf((*LicenseSource)(nil)).Elem() -} - -type LicenseSourceUnavailable struct { - NotEnoughLicenses - - LicenseSource BaseLicenseSource `xml:"licenseSource,typeattr"` -} - -func init() { - t["LicenseSourceUnavailable"] = reflect.TypeOf((*LicenseSourceUnavailable)(nil)).Elem() -} - -type LicenseSourceUnavailableFault LicenseSourceUnavailable - -func init() { - t["LicenseSourceUnavailableFault"] = reflect.TypeOf((*LicenseSourceUnavailableFault)(nil)).Elem() -} - -type LicenseUsageInfo struct { - DynamicData - - Source BaseLicenseSource `xml:"source,typeattr"` - SourceAvailable bool `xml:"sourceAvailable"` - ReservationInfo []LicenseReservationInfo `xml:"reservationInfo,omitempty"` - FeatureInfo []LicenseFeatureInfo `xml:"featureInfo,omitempty"` -} - -func init() { - t["LicenseUsageInfo"] = reflect.TypeOf((*LicenseUsageInfo)(nil)).Elem() -} - -type LimitExceeded struct { - VimFault - - Property string `xml:"property,omitempty"` - Limit int32 `xml:"limit,omitempty"` -} - -func init() { - t["LimitExceeded"] = reflect.TypeOf((*LimitExceeded)(nil)).Elem() -} - -type LimitExceededFault LimitExceeded - -func init() { - t["LimitExceededFault"] = reflect.TypeOf((*LimitExceededFault)(nil)).Elem() -} - -type LinkDiscoveryProtocolConfig struct { - DynamicData - - Protocol string `xml:"protocol"` - Operation string `xml:"operation"` -} - -func init() { - t["LinkDiscoveryProtocolConfig"] = reflect.TypeOf((*LinkDiscoveryProtocolConfig)(nil)).Elem() -} - -type LinkLayerDiscoveryProtocolInfo struct { - DynamicData - - ChassisId string `xml:"chassisId"` - PortId string `xml:"portId"` - TimeToLive int32 `xml:"timeToLive"` - Parameter []KeyAnyValue `xml:"parameter,omitempty"` -} - -func init() { - t["LinkLayerDiscoveryProtocolInfo"] = reflect.TypeOf((*LinkLayerDiscoveryProtocolInfo)(nil)).Elem() -} - -type LinkProfile struct { - ApplyProfile -} - -func init() { - t["LinkProfile"] = reflect.TypeOf((*LinkProfile)(nil)).Elem() -} - -type LinuxVolumeNotClean struct { - CustomizationFault -} - -func init() { - t["LinuxVolumeNotClean"] = reflect.TypeOf((*LinuxVolumeNotClean)(nil)).Elem() -} - -type LinuxVolumeNotCleanFault LinuxVolumeNotClean - -func init() { - t["LinuxVolumeNotCleanFault"] = reflect.TypeOf((*LinuxVolumeNotCleanFault)(nil)).Elem() -} - -type ListCACertificateRevocationLists ListCACertificateRevocationListsRequestType - -func init() { - t["ListCACertificateRevocationLists"] = reflect.TypeOf((*ListCACertificateRevocationLists)(nil)).Elem() -} - -type ListCACertificateRevocationListsRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["ListCACertificateRevocationListsRequestType"] = reflect.TypeOf((*ListCACertificateRevocationListsRequestType)(nil)).Elem() -} - -type ListCACertificateRevocationListsResponse struct { - Returnval []string `xml:"returnval,omitempty"` -} - -type ListCACertificates ListCACertificatesRequestType - -func init() { - t["ListCACertificates"] = reflect.TypeOf((*ListCACertificates)(nil)).Elem() -} - -type ListCACertificatesRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["ListCACertificatesRequestType"] = reflect.TypeOf((*ListCACertificatesRequestType)(nil)).Elem() -} - -type ListCACertificatesResponse struct { - Returnval []string `xml:"returnval,omitempty"` -} - -type ListFilesInGuest ListFilesInGuestRequestType - -func init() { - t["ListFilesInGuest"] = reflect.TypeOf((*ListFilesInGuest)(nil)).Elem() -} - -type ListFilesInGuestRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Auth BaseGuestAuthentication `xml:"auth,typeattr"` - FilePath string `xml:"filePath"` - Index int32 `xml:"index,omitempty"` - MaxResults int32 `xml:"maxResults,omitempty"` - MatchPattern string `xml:"matchPattern,omitempty"` -} - -func init() { - t["ListFilesInGuestRequestType"] = reflect.TypeOf((*ListFilesInGuestRequestType)(nil)).Elem() -} - -type ListFilesInGuestResponse struct { - Returnval GuestListFileInfo `xml:"returnval"` -} - -type ListGuestAliases ListGuestAliasesRequestType - -func init() { - t["ListGuestAliases"] = reflect.TypeOf((*ListGuestAliases)(nil)).Elem() -} - -type ListGuestAliasesRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Auth BaseGuestAuthentication `xml:"auth,typeattr"` - Username string `xml:"username"` -} - -func init() { - t["ListGuestAliasesRequestType"] = reflect.TypeOf((*ListGuestAliasesRequestType)(nil)).Elem() -} - -type ListGuestAliasesResponse struct { - Returnval []GuestAliases `xml:"returnval,omitempty"` -} - -type ListGuestMappedAliases ListGuestMappedAliasesRequestType - -func init() { - t["ListGuestMappedAliases"] = reflect.TypeOf((*ListGuestMappedAliases)(nil)).Elem() -} - -type ListGuestMappedAliasesRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Auth BaseGuestAuthentication `xml:"auth,typeattr"` -} - -func init() { - t["ListGuestMappedAliasesRequestType"] = reflect.TypeOf((*ListGuestMappedAliasesRequestType)(nil)).Elem() -} - -type ListGuestMappedAliasesResponse struct { - Returnval []GuestMappedAliases `xml:"returnval,omitempty"` -} - -type ListProcessesInGuest ListProcessesInGuestRequestType - -func init() { - t["ListProcessesInGuest"] = reflect.TypeOf((*ListProcessesInGuest)(nil)).Elem() -} - -type ListProcessesInGuestRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Auth BaseGuestAuthentication `xml:"auth,typeattr"` - Pids []int64 `xml:"pids,omitempty"` -} - -func init() { - t["ListProcessesInGuestRequestType"] = reflect.TypeOf((*ListProcessesInGuestRequestType)(nil)).Elem() -} - -type ListProcessesInGuestResponse struct { - Returnval []GuestProcessInfo `xml:"returnval,omitempty"` -} - -type ListRegistryKeysInGuest ListRegistryKeysInGuestRequestType - -func init() { - t["ListRegistryKeysInGuest"] = reflect.TypeOf((*ListRegistryKeysInGuest)(nil)).Elem() -} - -type ListRegistryKeysInGuestRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Auth BaseGuestAuthentication `xml:"auth,typeattr"` - KeyName GuestRegKeyNameSpec `xml:"keyName"` - Recursive bool `xml:"recursive"` - MatchPattern string `xml:"matchPattern,omitempty"` -} - -func init() { - t["ListRegistryKeysInGuestRequestType"] = reflect.TypeOf((*ListRegistryKeysInGuestRequestType)(nil)).Elem() -} - -type ListRegistryKeysInGuestResponse struct { - Returnval []GuestRegKeyRecordSpec `xml:"returnval,omitempty"` -} - -type ListRegistryValuesInGuest ListRegistryValuesInGuestRequestType - -func init() { - t["ListRegistryValuesInGuest"] = reflect.TypeOf((*ListRegistryValuesInGuest)(nil)).Elem() -} - -type ListRegistryValuesInGuestRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Auth BaseGuestAuthentication `xml:"auth,typeattr"` - KeyName GuestRegKeyNameSpec `xml:"keyName"` - ExpandStrings bool `xml:"expandStrings"` - MatchPattern string `xml:"matchPattern,omitempty"` -} - -func init() { - t["ListRegistryValuesInGuestRequestType"] = reflect.TypeOf((*ListRegistryValuesInGuestRequestType)(nil)).Elem() -} - -type ListRegistryValuesInGuestResponse struct { - Returnval []GuestRegValueSpec `xml:"returnval,omitempty"` -} - -type ListSmartCardTrustAnchors ListSmartCardTrustAnchorsRequestType - -func init() { - t["ListSmartCardTrustAnchors"] = reflect.TypeOf((*ListSmartCardTrustAnchors)(nil)).Elem() -} - -type ListSmartCardTrustAnchorsRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["ListSmartCardTrustAnchorsRequestType"] = reflect.TypeOf((*ListSmartCardTrustAnchorsRequestType)(nil)).Elem() -} - -type ListSmartCardTrustAnchorsResponse struct { - Returnval []string `xml:"returnval,omitempty"` -} - -type LocalDatastoreCreatedEvent struct { - HostEvent - - Datastore DatastoreEventArgument `xml:"datastore"` -} - -func init() { - t["LocalDatastoreCreatedEvent"] = reflect.TypeOf((*LocalDatastoreCreatedEvent)(nil)).Elem() -} - -type LocalDatastoreInfo struct { - DatastoreInfo - - Path string `xml:"path,omitempty"` -} - -func init() { - t["LocalDatastoreInfo"] = reflect.TypeOf((*LocalDatastoreInfo)(nil)).Elem() -} - -type LocalLicenseSource struct { - LicenseSource - - LicenseKeys string `xml:"licenseKeys"` -} - -func init() { - t["LocalLicenseSource"] = reflect.TypeOf((*LocalLicenseSource)(nil)).Elem() -} - -type LocalTSMEnabledEvent struct { - HostEvent -} - -func init() { - t["LocalTSMEnabledEvent"] = reflect.TypeOf((*LocalTSMEnabledEvent)(nil)).Elem() -} - -type LocalizableMessage struct { - DynamicData - - Key string `xml:"key"` - Arg []KeyAnyValue `xml:"arg,omitempty"` - Message string `xml:"message,omitempty"` -} - -func init() { - t["LocalizableMessage"] = reflect.TypeOf((*LocalizableMessage)(nil)).Elem() -} - -type LocalizationManagerMessageCatalog struct { - DynamicData - - ModuleName string `xml:"moduleName"` - CatalogName string `xml:"catalogName"` - Locale string `xml:"locale"` - CatalogUri string `xml:"catalogUri"` - LastModified *time.Time `xml:"lastModified"` - Md5sum string `xml:"md5sum,omitempty"` - Version string `xml:"version,omitempty"` -} - -func init() { - t["LocalizationManagerMessageCatalog"] = reflect.TypeOf((*LocalizationManagerMessageCatalog)(nil)).Elem() -} - -type LocalizedMethodFault struct { - DynamicData - - Fault BaseMethodFault `xml:"fault,typeattr"` - LocalizedMessage string `xml:"localizedMessage,omitempty"` -} - -func init() { - t["LocalizedMethodFault"] = reflect.TypeOf((*LocalizedMethodFault)(nil)).Elem() -} - -type LockerMisconfiguredEvent struct { - Event - - Datastore DatastoreEventArgument `xml:"datastore"` -} - -func init() { - t["LockerMisconfiguredEvent"] = reflect.TypeOf((*LockerMisconfiguredEvent)(nil)).Elem() -} - -type LockerReconfiguredEvent struct { - Event - - OldDatastore *DatastoreEventArgument `xml:"oldDatastore,omitempty"` - NewDatastore *DatastoreEventArgument `xml:"newDatastore,omitempty"` -} - -func init() { - t["LockerReconfiguredEvent"] = reflect.TypeOf((*LockerReconfiguredEvent)(nil)).Elem() -} - -type LogBundlingFailed struct { - VimFault -} - -func init() { - t["LogBundlingFailed"] = reflect.TypeOf((*LogBundlingFailed)(nil)).Elem() -} - -type LogBundlingFailedFault LogBundlingFailed - -func init() { - t["LogBundlingFailedFault"] = reflect.TypeOf((*LogBundlingFailedFault)(nil)).Elem() -} - -type LogUserEvent LogUserEventRequestType - -func init() { - t["LogUserEvent"] = reflect.TypeOf((*LogUserEvent)(nil)).Elem() -} - -type LogUserEventRequestType struct { - This ManagedObjectReference `xml:"_this"` - Entity ManagedObjectReference `xml:"entity"` - Msg string `xml:"msg"` -} - -func init() { - t["LogUserEventRequestType"] = reflect.TypeOf((*LogUserEventRequestType)(nil)).Elem() -} - -type LogUserEventResponse struct { -} - -type Login LoginRequestType - -func init() { - t["Login"] = reflect.TypeOf((*Login)(nil)).Elem() -} - -type LoginBySSPI LoginBySSPIRequestType - -func init() { - t["LoginBySSPI"] = reflect.TypeOf((*LoginBySSPI)(nil)).Elem() -} - -type LoginBySSPIRequestType struct { - This ManagedObjectReference `xml:"_this"` - Base64Token string `xml:"base64Token"` - Locale string `xml:"locale,omitempty"` -} - -func init() { - t["LoginBySSPIRequestType"] = reflect.TypeOf((*LoginBySSPIRequestType)(nil)).Elem() -} - -type LoginBySSPIResponse struct { - Returnval UserSession `xml:"returnval"` -} - -type LoginByToken LoginByTokenRequestType - -func init() { - t["LoginByToken"] = reflect.TypeOf((*LoginByToken)(nil)).Elem() -} - -type LoginByTokenRequestType struct { - This ManagedObjectReference `xml:"_this"` - Locale string `xml:"locale,omitempty"` -} - -func init() { - t["LoginByTokenRequestType"] = reflect.TypeOf((*LoginByTokenRequestType)(nil)).Elem() -} - -type LoginByTokenResponse struct { - Returnval UserSession `xml:"returnval"` -} - -type LoginExtensionByCertificate LoginExtensionByCertificateRequestType - -func init() { - t["LoginExtensionByCertificate"] = reflect.TypeOf((*LoginExtensionByCertificate)(nil)).Elem() -} - -type LoginExtensionByCertificateRequestType struct { - This ManagedObjectReference `xml:"_this"` - ExtensionKey string `xml:"extensionKey"` - Locale string `xml:"locale,omitempty"` -} - -func init() { - t["LoginExtensionByCertificateRequestType"] = reflect.TypeOf((*LoginExtensionByCertificateRequestType)(nil)).Elem() -} - -type LoginExtensionByCertificateResponse struct { - Returnval UserSession `xml:"returnval"` -} - -type LoginExtensionBySubjectName LoginExtensionBySubjectNameRequestType - -func init() { - t["LoginExtensionBySubjectName"] = reflect.TypeOf((*LoginExtensionBySubjectName)(nil)).Elem() -} - -type LoginExtensionBySubjectNameRequestType struct { - This ManagedObjectReference `xml:"_this"` - ExtensionKey string `xml:"extensionKey"` - Locale string `xml:"locale,omitempty"` -} - -func init() { - t["LoginExtensionBySubjectNameRequestType"] = reflect.TypeOf((*LoginExtensionBySubjectNameRequestType)(nil)).Elem() -} - -type LoginExtensionBySubjectNameResponse struct { - Returnval UserSession `xml:"returnval"` -} - -type LoginRequestType struct { - This ManagedObjectReference `xml:"_this"` - UserName string `xml:"userName"` - Password string `xml:"password"` - Locale string `xml:"locale,omitempty"` -} - -func init() { - t["LoginRequestType"] = reflect.TypeOf((*LoginRequestType)(nil)).Elem() -} - -type LoginResponse struct { - Returnval UserSession `xml:"returnval"` -} - -type Logout LogoutRequestType - -func init() { - t["Logout"] = reflect.TypeOf((*Logout)(nil)).Elem() -} - -type LogoutRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["LogoutRequestType"] = reflect.TypeOf((*LogoutRequestType)(nil)).Elem() -} - -type LogoutResponse struct { -} - -type LongOption struct { - OptionType - - Min int64 `xml:"min"` - Max int64 `xml:"max"` - DefaultValue int64 `xml:"defaultValue"` -} - -func init() { - t["LongOption"] = reflect.TypeOf((*LongOption)(nil)).Elem() -} - -type LongPolicy struct { - InheritablePolicy - - Value int64 `xml:"value,omitempty"` -} - -func init() { - t["LongPolicy"] = reflect.TypeOf((*LongPolicy)(nil)).Elem() -} - -type LookupDvPortGroup LookupDvPortGroupRequestType - -func init() { - t["LookupDvPortGroup"] = reflect.TypeOf((*LookupDvPortGroup)(nil)).Elem() -} - -type LookupDvPortGroupRequestType struct { - This ManagedObjectReference `xml:"_this"` - PortgroupKey string `xml:"portgroupKey"` -} - -func init() { - t["LookupDvPortGroupRequestType"] = reflect.TypeOf((*LookupDvPortGroupRequestType)(nil)).Elem() -} - -type LookupDvPortGroupResponse struct { - Returnval *ManagedObjectReference `xml:"returnval,omitempty"` -} - -type LookupVmOverheadMemory LookupVmOverheadMemoryRequestType - -func init() { - t["LookupVmOverheadMemory"] = reflect.TypeOf((*LookupVmOverheadMemory)(nil)).Elem() -} - -type LookupVmOverheadMemoryRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Host ManagedObjectReference `xml:"host"` -} - -func init() { - t["LookupVmOverheadMemoryRequestType"] = reflect.TypeOf((*LookupVmOverheadMemoryRequestType)(nil)).Elem() -} - -type LookupVmOverheadMemoryResponse struct { - Returnval int64 `xml:"returnval"` -} - -type MacAddress struct { - NegatableExpression -} - -func init() { - t["MacAddress"] = reflect.TypeOf((*MacAddress)(nil)).Elem() -} - -type MacRange struct { - MacAddress - - Address string `xml:"address"` - Mask string `xml:"mask"` -} - -func init() { - t["MacRange"] = reflect.TypeOf((*MacRange)(nil)).Elem() -} - -type MaintenanceModeFileMove struct { - MigrationFault -} - -func init() { - t["MaintenanceModeFileMove"] = reflect.TypeOf((*MaintenanceModeFileMove)(nil)).Elem() -} - -type MaintenanceModeFileMoveFault MaintenanceModeFileMove - -func init() { - t["MaintenanceModeFileMoveFault"] = reflect.TypeOf((*MaintenanceModeFileMoveFault)(nil)).Elem() -} - -type MakeDirectory MakeDirectoryRequestType - -func init() { - t["MakeDirectory"] = reflect.TypeOf((*MakeDirectory)(nil)).Elem() -} - -type MakeDirectoryInGuest MakeDirectoryInGuestRequestType - -func init() { - t["MakeDirectoryInGuest"] = reflect.TypeOf((*MakeDirectoryInGuest)(nil)).Elem() -} - -type MakeDirectoryInGuestRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Auth BaseGuestAuthentication `xml:"auth,typeattr"` - DirectoryPath string `xml:"directoryPath"` - CreateParentDirectories bool `xml:"createParentDirectories"` -} - -func init() { - t["MakeDirectoryInGuestRequestType"] = reflect.TypeOf((*MakeDirectoryInGuestRequestType)(nil)).Elem() -} - -type MakeDirectoryInGuestResponse struct { -} - -type MakeDirectoryRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` - Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` - CreateParentDirectories *bool `xml:"createParentDirectories"` -} - -func init() { - t["MakeDirectoryRequestType"] = reflect.TypeOf((*MakeDirectoryRequestType)(nil)).Elem() -} - -type MakeDirectoryResponse struct { -} - -type MakePrimaryVMRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` -} - -func init() { - t["MakePrimaryVMRequestType"] = reflect.TypeOf((*MakePrimaryVMRequestType)(nil)).Elem() -} - -type MakePrimaryVM_Task MakePrimaryVMRequestType - -func init() { - t["MakePrimaryVM_Task"] = reflect.TypeOf((*MakePrimaryVM_Task)(nil)).Elem() -} - -type MakePrimaryVM_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ManagedByInfo struct { - DynamicData - - ExtensionKey string `xml:"extensionKey"` - Type string `xml:"type"` -} - -func init() { - t["ManagedByInfo"] = reflect.TypeOf((*ManagedByInfo)(nil)).Elem() -} - -type ManagedEntityEventArgument struct { - EntityEventArgument - - Entity ManagedObjectReference `xml:"entity"` -} - -func init() { - t["ManagedEntityEventArgument"] = reflect.TypeOf((*ManagedEntityEventArgument)(nil)).Elem() -} - -type ManagedObjectNotFound struct { - RuntimeFault - - Obj ManagedObjectReference `xml:"obj"` -} - -func init() { - t["ManagedObjectNotFound"] = reflect.TypeOf((*ManagedObjectNotFound)(nil)).Elem() -} - -type ManagedObjectNotFoundFault ManagedObjectNotFound - -func init() { - t["ManagedObjectNotFoundFault"] = reflect.TypeOf((*ManagedObjectNotFoundFault)(nil)).Elem() -} - -type ManagedObjectReference struct { - Type string `xml:"type,attr"` - Value string `xml:",chardata"` -} - -func init() { - t["ManagedObjectReference"] = reflect.TypeOf((*ManagedObjectReference)(nil)).Elem() -} - -type MarkAsLocalRequestType struct { - This ManagedObjectReference `xml:"_this"` - ScsiDiskUuid string `xml:"scsiDiskUuid"` -} - -func init() { - t["MarkAsLocalRequestType"] = reflect.TypeOf((*MarkAsLocalRequestType)(nil)).Elem() -} - -type MarkAsLocal_Task MarkAsLocalRequestType - -func init() { - t["MarkAsLocal_Task"] = reflect.TypeOf((*MarkAsLocal_Task)(nil)).Elem() -} - -type MarkAsLocal_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type MarkAsNonLocalRequestType struct { - This ManagedObjectReference `xml:"_this"` - ScsiDiskUuid string `xml:"scsiDiskUuid"` -} - -func init() { - t["MarkAsNonLocalRequestType"] = reflect.TypeOf((*MarkAsNonLocalRequestType)(nil)).Elem() -} - -type MarkAsNonLocal_Task MarkAsNonLocalRequestType - -func init() { - t["MarkAsNonLocal_Task"] = reflect.TypeOf((*MarkAsNonLocal_Task)(nil)).Elem() -} - -type MarkAsNonLocal_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type MarkAsNonSsdRequestType struct { - This ManagedObjectReference `xml:"_this"` - ScsiDiskUuid string `xml:"scsiDiskUuid"` -} - -func init() { - t["MarkAsNonSsdRequestType"] = reflect.TypeOf((*MarkAsNonSsdRequestType)(nil)).Elem() -} - -type MarkAsNonSsd_Task MarkAsNonSsdRequestType - -func init() { - t["MarkAsNonSsd_Task"] = reflect.TypeOf((*MarkAsNonSsd_Task)(nil)).Elem() -} - -type MarkAsNonSsd_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type MarkAsSsdRequestType struct { - This ManagedObjectReference `xml:"_this"` - ScsiDiskUuid string `xml:"scsiDiskUuid"` -} - -func init() { - t["MarkAsSsdRequestType"] = reflect.TypeOf((*MarkAsSsdRequestType)(nil)).Elem() -} - -type MarkAsSsd_Task MarkAsSsdRequestType - -func init() { - t["MarkAsSsd_Task"] = reflect.TypeOf((*MarkAsSsd_Task)(nil)).Elem() -} - -type MarkAsSsd_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type MarkAsTemplate MarkAsTemplateRequestType - -func init() { - t["MarkAsTemplate"] = reflect.TypeOf((*MarkAsTemplate)(nil)).Elem() -} - -type MarkAsTemplateRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["MarkAsTemplateRequestType"] = reflect.TypeOf((*MarkAsTemplateRequestType)(nil)).Elem() -} - -type MarkAsTemplateResponse struct { -} - -type MarkAsVirtualMachine MarkAsVirtualMachineRequestType - -func init() { - t["MarkAsVirtualMachine"] = reflect.TypeOf((*MarkAsVirtualMachine)(nil)).Elem() -} - -type MarkAsVirtualMachineRequestType struct { - This ManagedObjectReference `xml:"_this"` - Pool ManagedObjectReference `xml:"pool"` - Host *ManagedObjectReference `xml:"host,omitempty"` -} - -func init() { - t["MarkAsVirtualMachineRequestType"] = reflect.TypeOf((*MarkAsVirtualMachineRequestType)(nil)).Elem() -} - -type MarkAsVirtualMachineResponse struct { -} - -type MarkForRemoval MarkForRemovalRequestType - -func init() { - t["MarkForRemoval"] = reflect.TypeOf((*MarkForRemoval)(nil)).Elem() -} - -type MarkForRemovalRequestType struct { - This ManagedObjectReference `xml:"_this"` - HbaName string `xml:"hbaName"` - Remove bool `xml:"remove"` -} - -func init() { - t["MarkForRemovalRequestType"] = reflect.TypeOf((*MarkForRemovalRequestType)(nil)).Elem() -} - -type MarkForRemovalResponse struct { -} - -type MemoryFileFormatNotSupportedByDatastore struct { - UnsupportedDatastore - - DatastoreName string `xml:"datastoreName"` - Type string `xml:"type"` -} - -func init() { - t["MemoryFileFormatNotSupportedByDatastore"] = reflect.TypeOf((*MemoryFileFormatNotSupportedByDatastore)(nil)).Elem() -} - -type MemoryFileFormatNotSupportedByDatastoreFault MemoryFileFormatNotSupportedByDatastore - -func init() { - t["MemoryFileFormatNotSupportedByDatastoreFault"] = reflect.TypeOf((*MemoryFileFormatNotSupportedByDatastoreFault)(nil)).Elem() -} - -type MemoryHotPlugNotSupported struct { - VmConfigFault -} - -func init() { - t["MemoryHotPlugNotSupported"] = reflect.TypeOf((*MemoryHotPlugNotSupported)(nil)).Elem() -} - -type MemoryHotPlugNotSupportedFault MemoryHotPlugNotSupported - -func init() { - t["MemoryHotPlugNotSupportedFault"] = reflect.TypeOf((*MemoryHotPlugNotSupportedFault)(nil)).Elem() -} - -type MemorySizeNotRecommended struct { - VirtualHardwareCompatibilityIssue - - MemorySizeMB int32 `xml:"memorySizeMB"` - MinMemorySizeMB int32 `xml:"minMemorySizeMB"` - MaxMemorySizeMB int32 `xml:"maxMemorySizeMB"` -} - -func init() { - t["MemorySizeNotRecommended"] = reflect.TypeOf((*MemorySizeNotRecommended)(nil)).Elem() -} - -type MemorySizeNotRecommendedFault MemorySizeNotRecommended - -func init() { - t["MemorySizeNotRecommendedFault"] = reflect.TypeOf((*MemorySizeNotRecommendedFault)(nil)).Elem() -} - -type MemorySizeNotSupported struct { - VirtualHardwareCompatibilityIssue - - MemorySizeMB int32 `xml:"memorySizeMB"` - MinMemorySizeMB int32 `xml:"minMemorySizeMB"` - MaxMemorySizeMB int32 `xml:"maxMemorySizeMB"` -} - -func init() { - t["MemorySizeNotSupported"] = reflect.TypeOf((*MemorySizeNotSupported)(nil)).Elem() -} - -type MemorySizeNotSupportedByDatastore struct { - VirtualHardwareCompatibilityIssue - - Datastore ManagedObjectReference `xml:"datastore"` - MemorySizeMB int32 `xml:"memorySizeMB"` - MaxMemorySizeMB int32 `xml:"maxMemorySizeMB"` -} - -func init() { - t["MemorySizeNotSupportedByDatastore"] = reflect.TypeOf((*MemorySizeNotSupportedByDatastore)(nil)).Elem() -} - -type MemorySizeNotSupportedByDatastoreFault MemorySizeNotSupportedByDatastore - -func init() { - t["MemorySizeNotSupportedByDatastoreFault"] = reflect.TypeOf((*MemorySizeNotSupportedByDatastoreFault)(nil)).Elem() -} - -type MemorySizeNotSupportedFault MemorySizeNotSupported - -func init() { - t["MemorySizeNotSupportedFault"] = reflect.TypeOf((*MemorySizeNotSupportedFault)(nil)).Elem() -} - -type MemorySnapshotOnIndependentDisk struct { - SnapshotFault -} - -func init() { - t["MemorySnapshotOnIndependentDisk"] = reflect.TypeOf((*MemorySnapshotOnIndependentDisk)(nil)).Elem() -} - -type MemorySnapshotOnIndependentDiskFault MemorySnapshotOnIndependentDisk - -func init() { - t["MemorySnapshotOnIndependentDiskFault"] = reflect.TypeOf((*MemorySnapshotOnIndependentDiskFault)(nil)).Elem() -} - -type MergeDvsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Dvs ManagedObjectReference `xml:"dvs"` -} - -func init() { - t["MergeDvsRequestType"] = reflect.TypeOf((*MergeDvsRequestType)(nil)).Elem() -} - -type MergeDvs_Task MergeDvsRequestType - -func init() { - t["MergeDvs_Task"] = reflect.TypeOf((*MergeDvs_Task)(nil)).Elem() -} - -type MergeDvs_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type MergePermissions MergePermissionsRequestType - -func init() { - t["MergePermissions"] = reflect.TypeOf((*MergePermissions)(nil)).Elem() -} - -type MergePermissionsRequestType struct { - This ManagedObjectReference `xml:"_this"` - SrcRoleId int32 `xml:"srcRoleId"` - DstRoleId int32 `xml:"dstRoleId"` -} - -func init() { - t["MergePermissionsRequestType"] = reflect.TypeOf((*MergePermissionsRequestType)(nil)).Elem() -} - -type MergePermissionsResponse struct { -} - -type MethodAction struct { - Action - - Name string `xml:"name"` - Argument []MethodActionArgument `xml:"argument,omitempty"` -} - -func init() { - t["MethodAction"] = reflect.TypeOf((*MethodAction)(nil)).Elem() -} - -type MethodActionArgument struct { - DynamicData - - Value AnyType `xml:"value,omitempty,typeattr"` -} - -func init() { - t["MethodActionArgument"] = reflect.TypeOf((*MethodActionArgument)(nil)).Elem() -} - -type MethodAlreadyDisabledFault struct { - RuntimeFault - - SourceId string `xml:"sourceId"` -} - -func init() { - t["MethodAlreadyDisabledFault"] = reflect.TypeOf((*MethodAlreadyDisabledFault)(nil)).Elem() -} - -type MethodAlreadyDisabledFaultFault MethodAlreadyDisabledFault - -func init() { - t["MethodAlreadyDisabledFaultFault"] = reflect.TypeOf((*MethodAlreadyDisabledFaultFault)(nil)).Elem() -} - -type MethodDescription struct { - Description - - Key string `xml:"key"` -} - -func init() { - t["MethodDescription"] = reflect.TypeOf((*MethodDescription)(nil)).Elem() -} - -type MethodDisabled struct { - RuntimeFault - - Source string `xml:"source,omitempty"` -} - -func init() { - t["MethodDisabled"] = reflect.TypeOf((*MethodDisabled)(nil)).Elem() -} - -type MethodDisabledFault MethodDisabled - -func init() { - t["MethodDisabledFault"] = reflect.TypeOf((*MethodDisabledFault)(nil)).Elem() -} - -type MethodFault struct { - FaultCause *LocalizedMethodFault `xml:"faultCause,omitempty"` - FaultMessage []LocalizableMessage `xml:"faultMessage,omitempty"` -} - -func init() { - t["MethodFault"] = reflect.TypeOf((*MethodFault)(nil)).Elem() -} - -type MethodFaultFault BaseMethodFault - -func init() { - t["MethodFaultFault"] = reflect.TypeOf((*MethodFaultFault)(nil)).Elem() -} - -type MethodNotFound struct { - InvalidRequest - - Receiver ManagedObjectReference `xml:"receiver"` - Method string `xml:"method"` -} - -func init() { - t["MethodNotFound"] = reflect.TypeOf((*MethodNotFound)(nil)).Elem() -} - -type MethodNotFoundFault MethodNotFound - -func init() { - t["MethodNotFoundFault"] = reflect.TypeOf((*MethodNotFoundFault)(nil)).Elem() -} - -type MetricAlarmExpression struct { - AlarmExpression - - Operator MetricAlarmOperator `xml:"operator"` - Type string `xml:"type"` - Metric PerfMetricId `xml:"metric"` - Yellow int32 `xml:"yellow,omitempty"` - YellowInterval int32 `xml:"yellowInterval,omitempty"` - Red int32 `xml:"red,omitempty"` - RedInterval int32 `xml:"redInterval,omitempty"` -} - -func init() { - t["MetricAlarmExpression"] = reflect.TypeOf((*MetricAlarmExpression)(nil)).Elem() -} - -type MigrateVMRequestType struct { - This ManagedObjectReference `xml:"_this"` - Pool *ManagedObjectReference `xml:"pool,omitempty"` - Host *ManagedObjectReference `xml:"host,omitempty"` - Priority VirtualMachineMovePriority `xml:"priority"` - State VirtualMachinePowerState `xml:"state,omitempty"` -} - -func init() { - t["MigrateVMRequestType"] = reflect.TypeOf((*MigrateVMRequestType)(nil)).Elem() -} - -type MigrateVM_Task MigrateVMRequestType - -func init() { - t["MigrateVM_Task"] = reflect.TypeOf((*MigrateVM_Task)(nil)).Elem() -} - -type MigrateVM_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type MigrationDisabled struct { - MigrationFault -} - -func init() { - t["MigrationDisabled"] = reflect.TypeOf((*MigrationDisabled)(nil)).Elem() -} - -type MigrationDisabledFault MigrationDisabled - -func init() { - t["MigrationDisabledFault"] = reflect.TypeOf((*MigrationDisabledFault)(nil)).Elem() -} - -type MigrationErrorEvent struct { - MigrationEvent -} - -func init() { - t["MigrationErrorEvent"] = reflect.TypeOf((*MigrationErrorEvent)(nil)).Elem() -} - -type MigrationEvent struct { - VmEvent - - Fault LocalizedMethodFault `xml:"fault"` -} - -func init() { - t["MigrationEvent"] = reflect.TypeOf((*MigrationEvent)(nil)).Elem() -} - -type MigrationFault struct { - VimFault -} - -func init() { - t["MigrationFault"] = reflect.TypeOf((*MigrationFault)(nil)).Elem() -} - -type MigrationFaultFault BaseMigrationFault - -func init() { - t["MigrationFaultFault"] = reflect.TypeOf((*MigrationFaultFault)(nil)).Elem() -} - -type MigrationFeatureNotSupported struct { - MigrationFault - - AtSourceHost bool `xml:"atSourceHost"` - FailedHostName string `xml:"failedHostName"` - FailedHost ManagedObjectReference `xml:"failedHost"` -} - -func init() { - t["MigrationFeatureNotSupported"] = reflect.TypeOf((*MigrationFeatureNotSupported)(nil)).Elem() -} - -type MigrationFeatureNotSupportedFault BaseMigrationFeatureNotSupported - -func init() { - t["MigrationFeatureNotSupportedFault"] = reflect.TypeOf((*MigrationFeatureNotSupportedFault)(nil)).Elem() -} - -type MigrationHostErrorEvent struct { - MigrationEvent - - DstHost HostEventArgument `xml:"dstHost"` -} - -func init() { - t["MigrationHostErrorEvent"] = reflect.TypeOf((*MigrationHostErrorEvent)(nil)).Elem() -} - -type MigrationHostWarningEvent struct { - MigrationEvent - - DstHost HostEventArgument `xml:"dstHost"` -} - -func init() { - t["MigrationHostWarningEvent"] = reflect.TypeOf((*MigrationHostWarningEvent)(nil)).Elem() -} - -type MigrationNotReady struct { - MigrationFault - - Reason string `xml:"reason"` -} - -func init() { - t["MigrationNotReady"] = reflect.TypeOf((*MigrationNotReady)(nil)).Elem() -} - -type MigrationNotReadyFault MigrationNotReady - -func init() { - t["MigrationNotReadyFault"] = reflect.TypeOf((*MigrationNotReadyFault)(nil)).Elem() -} - -type MigrationResourceErrorEvent struct { - MigrationEvent - - DstPool ResourcePoolEventArgument `xml:"dstPool"` - DstHost HostEventArgument `xml:"dstHost"` -} - -func init() { - t["MigrationResourceErrorEvent"] = reflect.TypeOf((*MigrationResourceErrorEvent)(nil)).Elem() -} - -type MigrationResourceWarningEvent struct { - MigrationEvent - - DstPool ResourcePoolEventArgument `xml:"dstPool"` - DstHost HostEventArgument `xml:"dstHost"` -} - -func init() { - t["MigrationResourceWarningEvent"] = reflect.TypeOf((*MigrationResourceWarningEvent)(nil)).Elem() -} - -type MigrationWarningEvent struct { - MigrationEvent -} - -func init() { - t["MigrationWarningEvent"] = reflect.TypeOf((*MigrationWarningEvent)(nil)).Elem() -} - -type MismatchedBundle struct { - VimFault - - BundleUuid string `xml:"bundleUuid"` - HostUuid string `xml:"hostUuid"` - BundleBuildNumber int32 `xml:"bundleBuildNumber"` - HostBuildNumber int32 `xml:"hostBuildNumber"` -} - -func init() { - t["MismatchedBundle"] = reflect.TypeOf((*MismatchedBundle)(nil)).Elem() -} - -type MismatchedBundleFault MismatchedBundle - -func init() { - t["MismatchedBundleFault"] = reflect.TypeOf((*MismatchedBundleFault)(nil)).Elem() -} - -type MismatchedNetworkPolicies struct { - MigrationFault - - Device string `xml:"device"` - Backing string `xml:"backing"` - Connected bool `xml:"connected"` -} - -func init() { - t["MismatchedNetworkPolicies"] = reflect.TypeOf((*MismatchedNetworkPolicies)(nil)).Elem() -} - -type MismatchedNetworkPoliciesFault MismatchedNetworkPolicies - -func init() { - t["MismatchedNetworkPoliciesFault"] = reflect.TypeOf((*MismatchedNetworkPoliciesFault)(nil)).Elem() -} - -type MismatchedVMotionNetworkNames struct { - MigrationFault - - SourceNetwork string `xml:"sourceNetwork"` - DestNetwork string `xml:"destNetwork"` -} - -func init() { - t["MismatchedVMotionNetworkNames"] = reflect.TypeOf((*MismatchedVMotionNetworkNames)(nil)).Elem() -} - -type MismatchedVMotionNetworkNamesFault MismatchedVMotionNetworkNames - -func init() { - t["MismatchedVMotionNetworkNamesFault"] = reflect.TypeOf((*MismatchedVMotionNetworkNamesFault)(nil)).Elem() -} - -type MissingBmcSupport struct { - VimFault -} - -func init() { - t["MissingBmcSupport"] = reflect.TypeOf((*MissingBmcSupport)(nil)).Elem() -} - -type MissingBmcSupportFault MissingBmcSupport - -func init() { - t["MissingBmcSupportFault"] = reflect.TypeOf((*MissingBmcSupportFault)(nil)).Elem() -} - -type MissingController struct { - InvalidDeviceSpec -} - -func init() { - t["MissingController"] = reflect.TypeOf((*MissingController)(nil)).Elem() -} - -type MissingControllerFault MissingController - -func init() { - t["MissingControllerFault"] = reflect.TypeOf((*MissingControllerFault)(nil)).Elem() -} - -type MissingIpPool struct { - VAppPropertyFault -} - -func init() { - t["MissingIpPool"] = reflect.TypeOf((*MissingIpPool)(nil)).Elem() -} - -type MissingIpPoolFault MissingIpPool - -func init() { - t["MissingIpPoolFault"] = reflect.TypeOf((*MissingIpPoolFault)(nil)).Elem() -} - -type MissingLinuxCustResources struct { - CustomizationFault -} - -func init() { - t["MissingLinuxCustResources"] = reflect.TypeOf((*MissingLinuxCustResources)(nil)).Elem() -} - -type MissingLinuxCustResourcesFault MissingLinuxCustResources - -func init() { - t["MissingLinuxCustResourcesFault"] = reflect.TypeOf((*MissingLinuxCustResourcesFault)(nil)).Elem() -} - -type MissingNetworkIpConfig struct { - VAppPropertyFault -} - -func init() { - t["MissingNetworkIpConfig"] = reflect.TypeOf((*MissingNetworkIpConfig)(nil)).Elem() -} - -type MissingNetworkIpConfigFault MissingNetworkIpConfig - -func init() { - t["MissingNetworkIpConfigFault"] = reflect.TypeOf((*MissingNetworkIpConfigFault)(nil)).Elem() -} - -type MissingObject struct { - DynamicData - - Obj ManagedObjectReference `xml:"obj"` - Fault LocalizedMethodFault `xml:"fault"` -} - -func init() { - t["MissingObject"] = reflect.TypeOf((*MissingObject)(nil)).Elem() -} - -type MissingPowerOffConfiguration struct { - VAppConfigFault -} - -func init() { - t["MissingPowerOffConfiguration"] = reflect.TypeOf((*MissingPowerOffConfiguration)(nil)).Elem() -} - -type MissingPowerOffConfigurationFault MissingPowerOffConfiguration - -func init() { - t["MissingPowerOffConfigurationFault"] = reflect.TypeOf((*MissingPowerOffConfigurationFault)(nil)).Elem() -} - -type MissingPowerOnConfiguration struct { - VAppConfigFault -} - -func init() { - t["MissingPowerOnConfiguration"] = reflect.TypeOf((*MissingPowerOnConfiguration)(nil)).Elem() -} - -type MissingPowerOnConfigurationFault MissingPowerOnConfiguration - -func init() { - t["MissingPowerOnConfigurationFault"] = reflect.TypeOf((*MissingPowerOnConfigurationFault)(nil)).Elem() -} - -type MissingProperty struct { - DynamicData - - Path string `xml:"path"` - Fault LocalizedMethodFault `xml:"fault"` -} - -func init() { - t["MissingProperty"] = reflect.TypeOf((*MissingProperty)(nil)).Elem() -} - -type MissingWindowsCustResources struct { - CustomizationFault -} - -func init() { - t["MissingWindowsCustResources"] = reflect.TypeOf((*MissingWindowsCustResources)(nil)).Elem() -} - -type MissingWindowsCustResourcesFault MissingWindowsCustResources - -func init() { - t["MissingWindowsCustResourcesFault"] = reflect.TypeOf((*MissingWindowsCustResourcesFault)(nil)).Elem() -} - -type MksConnectionLimitReached struct { - InvalidState - - ConnectionLimit int32 `xml:"connectionLimit"` -} - -func init() { - t["MksConnectionLimitReached"] = reflect.TypeOf((*MksConnectionLimitReached)(nil)).Elem() -} - -type MksConnectionLimitReachedFault MksConnectionLimitReached - -func init() { - t["MksConnectionLimitReachedFault"] = reflect.TypeOf((*MksConnectionLimitReachedFault)(nil)).Elem() -} - -type ModeInfo struct { - DynamicData - - Browse string `xml:"browse,omitempty"` - Read string `xml:"read"` - Modify string `xml:"modify"` - Use string `xml:"use"` - Admin string `xml:"admin,omitempty"` - Full string `xml:"full"` -} - -func init() { - t["ModeInfo"] = reflect.TypeOf((*ModeInfo)(nil)).Elem() -} - -type ModifyListView ModifyListViewRequestType - -func init() { - t["ModifyListView"] = reflect.TypeOf((*ModifyListView)(nil)).Elem() -} - -type ModifyListViewRequestType struct { - This ManagedObjectReference `xml:"_this"` - Add []ManagedObjectReference `xml:"add,omitempty"` - Remove []ManagedObjectReference `xml:"remove,omitempty"` -} - -func init() { - t["ModifyListViewRequestType"] = reflect.TypeOf((*ModifyListViewRequestType)(nil)).Elem() -} - -type ModifyListViewResponse struct { - Returnval []ManagedObjectReference `xml:"returnval,omitempty"` -} - -type MonthlyByDayTaskScheduler struct { - MonthlyTaskScheduler - - Day int32 `xml:"day"` -} - -func init() { - t["MonthlyByDayTaskScheduler"] = reflect.TypeOf((*MonthlyByDayTaskScheduler)(nil)).Elem() -} - -type MonthlyByWeekdayTaskScheduler struct { - MonthlyTaskScheduler - - Offset WeekOfMonth `xml:"offset"` - Weekday DayOfWeek `xml:"weekday"` -} - -func init() { - t["MonthlyByWeekdayTaskScheduler"] = reflect.TypeOf((*MonthlyByWeekdayTaskScheduler)(nil)).Elem() -} - -type MonthlyTaskScheduler struct { - DailyTaskScheduler -} - -func init() { - t["MonthlyTaskScheduler"] = reflect.TypeOf((*MonthlyTaskScheduler)(nil)).Elem() -} - -type MountError struct { - CustomizationFault - - Vm ManagedObjectReference `xml:"vm"` - DiskIndex int32 `xml:"diskIndex"` -} - -func init() { - t["MountError"] = reflect.TypeOf((*MountError)(nil)).Elem() -} - -type MountErrorFault MountError - -func init() { - t["MountErrorFault"] = reflect.TypeOf((*MountErrorFault)(nil)).Elem() -} - -type MountToolsInstaller MountToolsInstallerRequestType - -func init() { - t["MountToolsInstaller"] = reflect.TypeOf((*MountToolsInstaller)(nil)).Elem() -} - -type MountToolsInstallerRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["MountToolsInstallerRequestType"] = reflect.TypeOf((*MountToolsInstallerRequestType)(nil)).Elem() -} - -type MountToolsInstallerResponse struct { -} - -type MountVffsVolume MountVffsVolumeRequestType - -func init() { - t["MountVffsVolume"] = reflect.TypeOf((*MountVffsVolume)(nil)).Elem() -} - -type MountVffsVolumeRequestType struct { - This ManagedObjectReference `xml:"_this"` - VffsUuid string `xml:"vffsUuid"` -} - -func init() { - t["MountVffsVolumeRequestType"] = reflect.TypeOf((*MountVffsVolumeRequestType)(nil)).Elem() -} - -type MountVffsVolumeResponse struct { -} - -type MountVmfsVolume MountVmfsVolumeRequestType - -func init() { - t["MountVmfsVolume"] = reflect.TypeOf((*MountVmfsVolume)(nil)).Elem() -} - -type MountVmfsVolumeExRequestType struct { - This ManagedObjectReference `xml:"_this"` - VmfsUuid []string `xml:"vmfsUuid"` -} - -func init() { - t["MountVmfsVolumeExRequestType"] = reflect.TypeOf((*MountVmfsVolumeExRequestType)(nil)).Elem() -} - -type MountVmfsVolumeEx_Task MountVmfsVolumeExRequestType - -func init() { - t["MountVmfsVolumeEx_Task"] = reflect.TypeOf((*MountVmfsVolumeEx_Task)(nil)).Elem() -} - -type MountVmfsVolumeEx_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type MountVmfsVolumeRequestType struct { - This ManagedObjectReference `xml:"_this"` - VmfsUuid string `xml:"vmfsUuid"` -} - -func init() { - t["MountVmfsVolumeRequestType"] = reflect.TypeOf((*MountVmfsVolumeRequestType)(nil)).Elem() -} - -type MountVmfsVolumeResponse struct { -} - -type MoveDVPortRequestType struct { - This ManagedObjectReference `xml:"_this"` - PortKey []string `xml:"portKey"` - DestinationPortgroupKey string `xml:"destinationPortgroupKey,omitempty"` -} - -func init() { - t["MoveDVPortRequestType"] = reflect.TypeOf((*MoveDVPortRequestType)(nil)).Elem() -} - -type MoveDVPort_Task MoveDVPortRequestType - -func init() { - t["MoveDVPort_Task"] = reflect.TypeOf((*MoveDVPort_Task)(nil)).Elem() -} - -type MoveDVPort_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type MoveDatastoreFileRequestType struct { - This ManagedObjectReference `xml:"_this"` - SourceName string `xml:"sourceName"` - SourceDatacenter *ManagedObjectReference `xml:"sourceDatacenter,omitempty"` - DestinationName string `xml:"destinationName"` - DestinationDatacenter *ManagedObjectReference `xml:"destinationDatacenter,omitempty"` - Force *bool `xml:"force"` -} - -func init() { - t["MoveDatastoreFileRequestType"] = reflect.TypeOf((*MoveDatastoreFileRequestType)(nil)).Elem() -} - -type MoveDatastoreFile_Task MoveDatastoreFileRequestType - -func init() { - t["MoveDatastoreFile_Task"] = reflect.TypeOf((*MoveDatastoreFile_Task)(nil)).Elem() -} - -type MoveDatastoreFile_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type MoveDirectoryInGuest MoveDirectoryInGuestRequestType - -func init() { - t["MoveDirectoryInGuest"] = reflect.TypeOf((*MoveDirectoryInGuest)(nil)).Elem() -} - -type MoveDirectoryInGuestRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Auth BaseGuestAuthentication `xml:"auth,typeattr"` - SrcDirectoryPath string `xml:"srcDirectoryPath"` - DstDirectoryPath string `xml:"dstDirectoryPath"` -} - -func init() { - t["MoveDirectoryInGuestRequestType"] = reflect.TypeOf((*MoveDirectoryInGuestRequestType)(nil)).Elem() -} - -type MoveDirectoryInGuestResponse struct { -} - -type MoveFileInGuest MoveFileInGuestRequestType - -func init() { - t["MoveFileInGuest"] = reflect.TypeOf((*MoveFileInGuest)(nil)).Elem() -} - -type MoveFileInGuestRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Auth BaseGuestAuthentication `xml:"auth,typeattr"` - SrcFilePath string `xml:"srcFilePath"` - DstFilePath string `xml:"dstFilePath"` - Overwrite bool `xml:"overwrite"` -} - -func init() { - t["MoveFileInGuestRequestType"] = reflect.TypeOf((*MoveFileInGuestRequestType)(nil)).Elem() -} - -type MoveFileInGuestResponse struct { -} - -type MoveHostIntoRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host ManagedObjectReference `xml:"host"` - ResourcePool *ManagedObjectReference `xml:"resourcePool,omitempty"` -} - -func init() { - t["MoveHostIntoRequestType"] = reflect.TypeOf((*MoveHostIntoRequestType)(nil)).Elem() -} - -type MoveHostInto_Task MoveHostIntoRequestType - -func init() { - t["MoveHostInto_Task"] = reflect.TypeOf((*MoveHostInto_Task)(nil)).Elem() -} - -type MoveHostInto_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type MoveIntoFolderRequestType struct { - This ManagedObjectReference `xml:"_this"` - List []ManagedObjectReference `xml:"list"` -} - -func init() { - t["MoveIntoFolderRequestType"] = reflect.TypeOf((*MoveIntoFolderRequestType)(nil)).Elem() -} - -type MoveIntoFolder_Task MoveIntoFolderRequestType - -func init() { - t["MoveIntoFolder_Task"] = reflect.TypeOf((*MoveIntoFolder_Task)(nil)).Elem() -} - -type MoveIntoFolder_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type MoveIntoRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host []ManagedObjectReference `xml:"host"` -} - -func init() { - t["MoveIntoRequestType"] = reflect.TypeOf((*MoveIntoRequestType)(nil)).Elem() -} - -type MoveIntoResourcePool MoveIntoResourcePoolRequestType - -func init() { - t["MoveIntoResourcePool"] = reflect.TypeOf((*MoveIntoResourcePool)(nil)).Elem() -} - -type MoveIntoResourcePoolRequestType struct { - This ManagedObjectReference `xml:"_this"` - List []ManagedObjectReference `xml:"list"` -} - -func init() { - t["MoveIntoResourcePoolRequestType"] = reflect.TypeOf((*MoveIntoResourcePoolRequestType)(nil)).Elem() -} - -type MoveIntoResourcePoolResponse struct { -} - -type MoveInto_Task MoveIntoRequestType - -func init() { - t["MoveInto_Task"] = reflect.TypeOf((*MoveInto_Task)(nil)).Elem() -} - -type MoveInto_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type MoveVirtualDiskRequestType struct { - This ManagedObjectReference `xml:"_this"` - SourceName string `xml:"sourceName"` - SourceDatacenter *ManagedObjectReference `xml:"sourceDatacenter,omitempty"` - DestName string `xml:"destName"` - DestDatacenter *ManagedObjectReference `xml:"destDatacenter,omitempty"` - Force *bool `xml:"force"` - Profile []BaseVirtualMachineProfileSpec `xml:"profile,omitempty,typeattr"` -} - -func init() { - t["MoveVirtualDiskRequestType"] = reflect.TypeOf((*MoveVirtualDiskRequestType)(nil)).Elem() -} - -type MoveVirtualDisk_Task MoveVirtualDiskRequestType - -func init() { - t["MoveVirtualDisk_Task"] = reflect.TypeOf((*MoveVirtualDisk_Task)(nil)).Elem() -} - -type MoveVirtualDisk_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type MtuMatchEvent struct { - DvsHealthStatusChangeEvent -} - -func init() { - t["MtuMatchEvent"] = reflect.TypeOf((*MtuMatchEvent)(nil)).Elem() -} - -type MtuMismatchEvent struct { - DvsHealthStatusChangeEvent -} - -func init() { - t["MtuMismatchEvent"] = reflect.TypeOf((*MtuMismatchEvent)(nil)).Elem() -} - -type MultiWriterNotSupported struct { - DeviceNotSupported -} - -func init() { - t["MultiWriterNotSupported"] = reflect.TypeOf((*MultiWriterNotSupported)(nil)).Elem() -} - -type MultiWriterNotSupportedFault MultiWriterNotSupported - -func init() { - t["MultiWriterNotSupportedFault"] = reflect.TypeOf((*MultiWriterNotSupportedFault)(nil)).Elem() -} - -type MultipleCertificatesVerifyFault struct { - HostConnectFault - - ThumbprintData []MultipleCertificatesVerifyFaultThumbprintData `xml:"thumbprintData"` -} - -func init() { - t["MultipleCertificatesVerifyFault"] = reflect.TypeOf((*MultipleCertificatesVerifyFault)(nil)).Elem() -} - -type MultipleCertificatesVerifyFaultFault MultipleCertificatesVerifyFault - -func init() { - t["MultipleCertificatesVerifyFaultFault"] = reflect.TypeOf((*MultipleCertificatesVerifyFaultFault)(nil)).Elem() -} - -type MultipleCertificatesVerifyFaultThumbprintData struct { - DynamicData - - Port int32 `xml:"port"` - Thumbprint string `xml:"thumbprint"` -} - -func init() { - t["MultipleCertificatesVerifyFaultThumbprintData"] = reflect.TypeOf((*MultipleCertificatesVerifyFaultThumbprintData)(nil)).Elem() -} - -type MultipleSnapshotsNotSupported struct { - SnapshotFault -} - -func init() { - t["MultipleSnapshotsNotSupported"] = reflect.TypeOf((*MultipleSnapshotsNotSupported)(nil)).Elem() -} - -type MultipleSnapshotsNotSupportedFault MultipleSnapshotsNotSupported - -func init() { - t["MultipleSnapshotsNotSupportedFault"] = reflect.TypeOf((*MultipleSnapshotsNotSupportedFault)(nil)).Elem() -} - -type NASDatastoreCreatedEvent struct { - HostEvent - - Datastore DatastoreEventArgument `xml:"datastore"` -} - -func init() { - t["NASDatastoreCreatedEvent"] = reflect.TypeOf((*NASDatastoreCreatedEvent)(nil)).Elem() -} - -type NamePasswordAuthentication struct { - GuestAuthentication - - Username string `xml:"username"` - Password string `xml:"password"` -} - -func init() { - t["NamePasswordAuthentication"] = reflect.TypeOf((*NamePasswordAuthentication)(nil)).Elem() -} - -type NamespaceFull struct { - VimFault - - Name string `xml:"name"` - CurrentMaxSize int64 `xml:"currentMaxSize"` - RequiredSize int64 `xml:"requiredSize,omitempty"` -} - -func init() { - t["NamespaceFull"] = reflect.TypeOf((*NamespaceFull)(nil)).Elem() -} - -type NamespaceFullFault NamespaceFull - -func init() { - t["NamespaceFullFault"] = reflect.TypeOf((*NamespaceFullFault)(nil)).Elem() -} - -type NamespaceLimitReached struct { - VimFault - - Limit int32 `xml:"limit,omitempty"` -} - -func init() { - t["NamespaceLimitReached"] = reflect.TypeOf((*NamespaceLimitReached)(nil)).Elem() -} - -type NamespaceLimitReachedFault NamespaceLimitReached - -func init() { - t["NamespaceLimitReachedFault"] = reflect.TypeOf((*NamespaceLimitReachedFault)(nil)).Elem() -} - -type NamespaceWriteProtected struct { - VimFault - - Name string `xml:"name"` -} - -func init() { - t["NamespaceWriteProtected"] = reflect.TypeOf((*NamespaceWriteProtected)(nil)).Elem() -} - -type NamespaceWriteProtectedFault NamespaceWriteProtected - -func init() { - t["NamespaceWriteProtectedFault"] = reflect.TypeOf((*NamespaceWriteProtectedFault)(nil)).Elem() -} - -type NasConfigFault struct { - HostConfigFault - - Name string `xml:"name"` -} - -func init() { - t["NasConfigFault"] = reflect.TypeOf((*NasConfigFault)(nil)).Elem() -} - -type NasConfigFaultFault BaseNasConfigFault - -func init() { - t["NasConfigFaultFault"] = reflect.TypeOf((*NasConfigFaultFault)(nil)).Elem() -} - -type NasConnectionLimitReached struct { - NasConfigFault - - RemoteHost string `xml:"remoteHost"` - RemotePath string `xml:"remotePath"` -} - -func init() { - t["NasConnectionLimitReached"] = reflect.TypeOf((*NasConnectionLimitReached)(nil)).Elem() -} - -type NasConnectionLimitReachedFault NasConnectionLimitReached - -func init() { - t["NasConnectionLimitReachedFault"] = reflect.TypeOf((*NasConnectionLimitReachedFault)(nil)).Elem() -} - -type NasDatastoreInfo struct { - DatastoreInfo - - Nas *HostNasVolume `xml:"nas,omitempty"` -} - -func init() { - t["NasDatastoreInfo"] = reflect.TypeOf((*NasDatastoreInfo)(nil)).Elem() -} - -type NasSessionCredentialConflict struct { - NasConfigFault - - RemoteHost string `xml:"remoteHost"` - RemotePath string `xml:"remotePath"` - UserName string `xml:"userName"` -} - -func init() { - t["NasSessionCredentialConflict"] = reflect.TypeOf((*NasSessionCredentialConflict)(nil)).Elem() -} - -type NasSessionCredentialConflictFault NasSessionCredentialConflict - -func init() { - t["NasSessionCredentialConflictFault"] = reflect.TypeOf((*NasSessionCredentialConflictFault)(nil)).Elem() -} - -type NasStorageProfile struct { - ApplyProfile - - Key string `xml:"key"` -} - -func init() { - t["NasStorageProfile"] = reflect.TypeOf((*NasStorageProfile)(nil)).Elem() -} - -type NasVolumeNotMounted struct { - NasConfigFault - - RemoteHost string `xml:"remoteHost"` - RemotePath string `xml:"remotePath"` -} - -func init() { - t["NasVolumeNotMounted"] = reflect.TypeOf((*NasVolumeNotMounted)(nil)).Elem() -} - -type NasVolumeNotMountedFault NasVolumeNotMounted - -func init() { - t["NasVolumeNotMountedFault"] = reflect.TypeOf((*NasVolumeNotMountedFault)(nil)).Elem() -} - -type NegatableExpression struct { - DynamicData - - Negate *bool `xml:"negate"` -} - -func init() { - t["NegatableExpression"] = reflect.TypeOf((*NegatableExpression)(nil)).Elem() -} - -type NetBIOSConfigInfo struct { - DynamicData - - Mode string `xml:"mode"` -} - -func init() { - t["NetBIOSConfigInfo"] = reflect.TypeOf((*NetBIOSConfigInfo)(nil)).Elem() -} - -type NetDhcpConfigInfo struct { - DynamicData - - Ipv6 *NetDhcpConfigInfoDhcpOptions `xml:"ipv6,omitempty"` - Ipv4 *NetDhcpConfigInfoDhcpOptions `xml:"ipv4,omitempty"` -} - -func init() { - t["NetDhcpConfigInfo"] = reflect.TypeOf((*NetDhcpConfigInfo)(nil)).Elem() -} - -type NetDhcpConfigInfoDhcpOptions struct { - DynamicData - - Enable bool `xml:"enable"` - Config []KeyValue `xml:"config,omitempty"` -} - -func init() { - t["NetDhcpConfigInfoDhcpOptions"] = reflect.TypeOf((*NetDhcpConfigInfoDhcpOptions)(nil)).Elem() -} - -type NetDhcpConfigSpec struct { - DynamicData - - Ipv6 *NetDhcpConfigSpecDhcpOptionsSpec `xml:"ipv6,omitempty"` - Ipv4 *NetDhcpConfigSpecDhcpOptionsSpec `xml:"ipv4,omitempty"` -} - -func init() { - t["NetDhcpConfigSpec"] = reflect.TypeOf((*NetDhcpConfigSpec)(nil)).Elem() -} - -type NetDhcpConfigSpecDhcpOptionsSpec struct { - DynamicData - - Enable *bool `xml:"enable"` - Config []KeyValue `xml:"config"` - Operation string `xml:"operation"` -} - -func init() { - t["NetDhcpConfigSpecDhcpOptionsSpec"] = reflect.TypeOf((*NetDhcpConfigSpecDhcpOptionsSpec)(nil)).Elem() -} - -type NetDnsConfigInfo struct { - DynamicData - - Dhcp bool `xml:"dhcp"` - HostName string `xml:"hostName"` - DomainName string `xml:"domainName"` - IpAddress []string `xml:"ipAddress,omitempty"` - SearchDomain []string `xml:"searchDomain,omitempty"` -} - -func init() { - t["NetDnsConfigInfo"] = reflect.TypeOf((*NetDnsConfigInfo)(nil)).Elem() -} - -type NetDnsConfigSpec struct { - DynamicData - - Dhcp *bool `xml:"dhcp"` - HostName string `xml:"hostName,omitempty"` - DomainName string `xml:"domainName,omitempty"` - IpAddress []string `xml:"ipAddress,omitempty"` - SearchDomain []string `xml:"searchDomain,omitempty"` -} - -func init() { - t["NetDnsConfigSpec"] = reflect.TypeOf((*NetDnsConfigSpec)(nil)).Elem() -} - -type NetIpConfigInfo struct { - DynamicData - - IpAddress []NetIpConfigInfoIpAddress `xml:"ipAddress,omitempty"` - Dhcp *NetDhcpConfigInfo `xml:"dhcp,omitempty"` - AutoConfigurationEnabled *bool `xml:"autoConfigurationEnabled"` -} - -func init() { - t["NetIpConfigInfo"] = reflect.TypeOf((*NetIpConfigInfo)(nil)).Elem() -} - -type NetIpConfigInfoIpAddress struct { - DynamicData - - IpAddress string `xml:"ipAddress"` - PrefixLength int32 `xml:"prefixLength"` - Origin string `xml:"origin,omitempty"` - State string `xml:"state,omitempty"` - Lifetime *time.Time `xml:"lifetime"` -} - -func init() { - t["NetIpConfigInfoIpAddress"] = reflect.TypeOf((*NetIpConfigInfoIpAddress)(nil)).Elem() -} - -type NetIpConfigSpec struct { - DynamicData - - IpAddress []NetIpConfigSpecIpAddressSpec `xml:"ipAddress,omitempty"` - Dhcp *NetDhcpConfigSpec `xml:"dhcp,omitempty"` - AutoConfigurationEnabled *bool `xml:"autoConfigurationEnabled"` -} - -func init() { - t["NetIpConfigSpec"] = reflect.TypeOf((*NetIpConfigSpec)(nil)).Elem() -} - -type NetIpConfigSpecIpAddressSpec struct { - DynamicData - - IpAddress string `xml:"ipAddress"` - PrefixLength int32 `xml:"prefixLength"` - Operation string `xml:"operation"` -} - -func init() { - t["NetIpConfigSpecIpAddressSpec"] = reflect.TypeOf((*NetIpConfigSpecIpAddressSpec)(nil)).Elem() -} - -type NetIpRouteConfigInfo struct { - DynamicData - - IpRoute []NetIpRouteConfigInfoIpRoute `xml:"ipRoute,omitempty"` -} - -func init() { - t["NetIpRouteConfigInfo"] = reflect.TypeOf((*NetIpRouteConfigInfo)(nil)).Elem() -} - -type NetIpRouteConfigInfoGateway struct { - DynamicData - - IpAddress string `xml:"ipAddress,omitempty"` - Device string `xml:"device,omitempty"` -} - -func init() { - t["NetIpRouteConfigInfoGateway"] = reflect.TypeOf((*NetIpRouteConfigInfoGateway)(nil)).Elem() -} - -type NetIpRouteConfigInfoIpRoute struct { - DynamicData - - Network string `xml:"network"` - PrefixLength int32 `xml:"prefixLength"` - Gateway NetIpRouteConfigInfoGateway `xml:"gateway"` -} - -func init() { - t["NetIpRouteConfigInfoIpRoute"] = reflect.TypeOf((*NetIpRouteConfigInfoIpRoute)(nil)).Elem() -} - -type NetIpRouteConfigSpec struct { - DynamicData - - IpRoute []NetIpRouteConfigSpecIpRouteSpec `xml:"ipRoute,omitempty"` -} - -func init() { - t["NetIpRouteConfigSpec"] = reflect.TypeOf((*NetIpRouteConfigSpec)(nil)).Elem() -} - -type NetIpRouteConfigSpecGatewaySpec struct { - DynamicData - - IpAddress string `xml:"ipAddress,omitempty"` - Device string `xml:"device,omitempty"` -} - -func init() { - t["NetIpRouteConfigSpecGatewaySpec"] = reflect.TypeOf((*NetIpRouteConfigSpecGatewaySpec)(nil)).Elem() -} - -type NetIpRouteConfigSpecIpRouteSpec struct { - DynamicData - - Network string `xml:"network"` - PrefixLength int32 `xml:"prefixLength"` - Gateway NetIpRouteConfigSpecGatewaySpec `xml:"gateway"` - Operation string `xml:"operation"` -} - -func init() { - t["NetIpRouteConfigSpecIpRouteSpec"] = reflect.TypeOf((*NetIpRouteConfigSpecIpRouteSpec)(nil)).Elem() -} - -type NetIpStackInfo struct { - DynamicData - - Neighbor []NetIpStackInfoNetToMedia `xml:"neighbor,omitempty"` - DefaultRouter []NetIpStackInfoDefaultRouter `xml:"defaultRouter,omitempty"` -} - -func init() { - t["NetIpStackInfo"] = reflect.TypeOf((*NetIpStackInfo)(nil)).Elem() -} - -type NetIpStackInfoDefaultRouter struct { - DynamicData - - IpAddress string `xml:"ipAddress"` - Device string `xml:"device"` - Lifetime time.Time `xml:"lifetime"` - Preference string `xml:"preference"` -} - -func init() { - t["NetIpStackInfoDefaultRouter"] = reflect.TypeOf((*NetIpStackInfoDefaultRouter)(nil)).Elem() -} - -type NetIpStackInfoNetToMedia struct { - DynamicData - - IpAddress string `xml:"ipAddress"` - PhysicalAddress string `xml:"physicalAddress"` - Device string `xml:"device"` - Type string `xml:"type"` -} - -func init() { - t["NetIpStackInfoNetToMedia"] = reflect.TypeOf((*NetIpStackInfoNetToMedia)(nil)).Elem() -} - -type NetStackInstanceProfile struct { - ApplyProfile - - Key string `xml:"key"` - DnsConfig NetworkProfileDnsConfigProfile `xml:"dnsConfig"` - IpRouteConfig IpRouteProfile `xml:"ipRouteConfig"` -} - -func init() { - t["NetStackInstanceProfile"] = reflect.TypeOf((*NetStackInstanceProfile)(nil)).Elem() -} - -type NetworkCopyFault struct { - FileFault -} - -func init() { - t["NetworkCopyFault"] = reflect.TypeOf((*NetworkCopyFault)(nil)).Elem() -} - -type NetworkCopyFaultFault NetworkCopyFault - -func init() { - t["NetworkCopyFaultFault"] = reflect.TypeOf((*NetworkCopyFaultFault)(nil)).Elem() -} - -type NetworkDisruptedAndConfigRolledBack struct { - VimFault - - Host string `xml:"host"` -} - -func init() { - t["NetworkDisruptedAndConfigRolledBack"] = reflect.TypeOf((*NetworkDisruptedAndConfigRolledBack)(nil)).Elem() -} - -type NetworkDisruptedAndConfigRolledBackFault NetworkDisruptedAndConfigRolledBack - -func init() { - t["NetworkDisruptedAndConfigRolledBackFault"] = reflect.TypeOf((*NetworkDisruptedAndConfigRolledBackFault)(nil)).Elem() -} - -type NetworkEventArgument struct { - EntityEventArgument - - Network ManagedObjectReference `xml:"network"` -} - -func init() { - t["NetworkEventArgument"] = reflect.TypeOf((*NetworkEventArgument)(nil)).Elem() -} - -type NetworkInaccessible struct { - NasConfigFault -} - -func init() { - t["NetworkInaccessible"] = reflect.TypeOf((*NetworkInaccessible)(nil)).Elem() -} - -type NetworkInaccessibleFault NetworkInaccessible - -func init() { - t["NetworkInaccessibleFault"] = reflect.TypeOf((*NetworkInaccessibleFault)(nil)).Elem() -} - -type NetworkPolicyProfile struct { - ApplyProfile -} - -func init() { - t["NetworkPolicyProfile"] = reflect.TypeOf((*NetworkPolicyProfile)(nil)).Elem() -} - -type NetworkProfile struct { - ApplyProfile - - Vswitch []VirtualSwitchProfile `xml:"vswitch,omitempty"` - VmPortGroup []VmPortGroupProfile `xml:"vmPortGroup,omitempty"` - HostPortGroup []HostPortGroupProfile `xml:"hostPortGroup,omitempty"` - ServiceConsolePortGroup []ServiceConsolePortGroupProfile `xml:"serviceConsolePortGroup,omitempty"` - DnsConfig *NetworkProfileDnsConfigProfile `xml:"dnsConfig,omitempty"` - IpRouteConfig *IpRouteProfile `xml:"ipRouteConfig,omitempty"` - ConsoleIpRouteConfig *IpRouteProfile `xml:"consoleIpRouteConfig,omitempty"` - Pnic []PhysicalNicProfile `xml:"pnic,omitempty"` - Dvswitch []DvsProfile `xml:"dvswitch,omitempty"` - DvsServiceConsoleNic []DvsServiceConsoleVNicProfile `xml:"dvsServiceConsoleNic,omitempty"` - DvsHostNic []DvsHostVNicProfile `xml:"dvsHostNic,omitempty"` - NetStackInstance []NetStackInstanceProfile `xml:"netStackInstance,omitempty"` -} - -func init() { - t["NetworkProfile"] = reflect.TypeOf((*NetworkProfile)(nil)).Elem() -} - -type NetworkProfileDnsConfigProfile struct { - ApplyProfile -} - -func init() { - t["NetworkProfileDnsConfigProfile"] = reflect.TypeOf((*NetworkProfileDnsConfigProfile)(nil)).Elem() -} - -type NetworkRollbackEvent struct { - Event - - MethodName string `xml:"methodName"` - TransactionId string `xml:"transactionId"` -} - -func init() { - t["NetworkRollbackEvent"] = reflect.TypeOf((*NetworkRollbackEvent)(nil)).Elem() -} - -type NetworkSummary struct { - DynamicData - - Network *ManagedObjectReference `xml:"network,omitempty"` - Name string `xml:"name"` - Accessible bool `xml:"accessible"` - IpPoolName string `xml:"ipPoolName,omitempty"` - IpPoolId int32 `xml:"ipPoolId,omitempty"` -} - -func init() { - t["NetworkSummary"] = reflect.TypeOf((*NetworkSummary)(nil)).Elem() -} - -type NetworksMayNotBeTheSame struct { - MigrationFault - - Name string `xml:"name,omitempty"` -} - -func init() { - t["NetworksMayNotBeTheSame"] = reflect.TypeOf((*NetworksMayNotBeTheSame)(nil)).Elem() -} - -type NetworksMayNotBeTheSameFault NetworksMayNotBeTheSame - -func init() { - t["NetworksMayNotBeTheSameFault"] = reflect.TypeOf((*NetworksMayNotBeTheSameFault)(nil)).Elem() -} - -type NicSettingMismatch struct { - CustomizationFault - - NumberOfNicsInSpec int32 `xml:"numberOfNicsInSpec"` - NumberOfNicsInVM int32 `xml:"numberOfNicsInVM"` -} - -func init() { - t["NicSettingMismatch"] = reflect.TypeOf((*NicSettingMismatch)(nil)).Elem() -} - -type NicSettingMismatchFault NicSettingMismatch - -func init() { - t["NicSettingMismatchFault"] = reflect.TypeOf((*NicSettingMismatchFault)(nil)).Elem() -} - -type NoAccessUserEvent struct { - SessionEvent - - IpAddress string `xml:"ipAddress"` -} - -func init() { - t["NoAccessUserEvent"] = reflect.TypeOf((*NoAccessUserEvent)(nil)).Elem() -} - -type NoActiveHostInCluster struct { - InvalidState - - ComputeResource ManagedObjectReference `xml:"computeResource"` -} - -func init() { - t["NoActiveHostInCluster"] = reflect.TypeOf((*NoActiveHostInCluster)(nil)).Elem() -} - -type NoActiveHostInClusterFault NoActiveHostInCluster - -func init() { - t["NoActiveHostInClusterFault"] = reflect.TypeOf((*NoActiveHostInClusterFault)(nil)).Elem() -} - -type NoAvailableIp struct { - VAppPropertyFault - - Network ManagedObjectReference `xml:"network"` -} - -func init() { - t["NoAvailableIp"] = reflect.TypeOf((*NoAvailableIp)(nil)).Elem() -} - -type NoAvailableIpFault NoAvailableIp - -func init() { - t["NoAvailableIpFault"] = reflect.TypeOf((*NoAvailableIpFault)(nil)).Elem() -} - -type NoClientCertificate struct { - VimFault -} - -func init() { - t["NoClientCertificate"] = reflect.TypeOf((*NoClientCertificate)(nil)).Elem() -} - -type NoClientCertificateFault NoClientCertificate - -func init() { - t["NoClientCertificateFault"] = reflect.TypeOf((*NoClientCertificateFault)(nil)).Elem() -} - -type NoCompatibleDatastore struct { - VimFault -} - -func init() { - t["NoCompatibleDatastore"] = reflect.TypeOf((*NoCompatibleDatastore)(nil)).Elem() -} - -type NoCompatibleDatastoreFault NoCompatibleDatastore - -func init() { - t["NoCompatibleDatastoreFault"] = reflect.TypeOf((*NoCompatibleDatastoreFault)(nil)).Elem() -} - -type NoCompatibleHardAffinityHost struct { - VmConfigFault - - VmName string `xml:"vmName"` -} - -func init() { - t["NoCompatibleHardAffinityHost"] = reflect.TypeOf((*NoCompatibleHardAffinityHost)(nil)).Elem() -} - -type NoCompatibleHardAffinityHostFault NoCompatibleHardAffinityHost - -func init() { - t["NoCompatibleHardAffinityHostFault"] = reflect.TypeOf((*NoCompatibleHardAffinityHostFault)(nil)).Elem() -} - -type NoCompatibleHost struct { - VimFault - - Host []ManagedObjectReference `xml:"host,omitempty"` - Error []LocalizedMethodFault `xml:"error,omitempty"` -} - -func init() { - t["NoCompatibleHost"] = reflect.TypeOf((*NoCompatibleHost)(nil)).Elem() -} - -type NoCompatibleHostFault BaseNoCompatibleHost - -func init() { - t["NoCompatibleHostFault"] = reflect.TypeOf((*NoCompatibleHostFault)(nil)).Elem() -} - -type NoCompatibleHostWithAccessToDevice struct { - NoCompatibleHost -} - -func init() { - t["NoCompatibleHostWithAccessToDevice"] = reflect.TypeOf((*NoCompatibleHostWithAccessToDevice)(nil)).Elem() -} - -type NoCompatibleHostWithAccessToDeviceFault NoCompatibleHostWithAccessToDevice - -func init() { - t["NoCompatibleHostWithAccessToDeviceFault"] = reflect.TypeOf((*NoCompatibleHostWithAccessToDeviceFault)(nil)).Elem() -} - -type NoCompatibleSoftAffinityHost struct { - VmConfigFault - - VmName string `xml:"vmName"` -} - -func init() { - t["NoCompatibleSoftAffinityHost"] = reflect.TypeOf((*NoCompatibleSoftAffinityHost)(nil)).Elem() -} - -type NoCompatibleSoftAffinityHostFault NoCompatibleSoftAffinityHost - -func init() { - t["NoCompatibleSoftAffinityHostFault"] = reflect.TypeOf((*NoCompatibleSoftAffinityHostFault)(nil)).Elem() -} - -type NoConnectedDatastore struct { - VimFault -} - -func init() { - t["NoConnectedDatastore"] = reflect.TypeOf((*NoConnectedDatastore)(nil)).Elem() -} - -type NoConnectedDatastoreFault NoConnectedDatastore - -func init() { - t["NoConnectedDatastoreFault"] = reflect.TypeOf((*NoConnectedDatastoreFault)(nil)).Elem() -} - -type NoDatastoresConfiguredEvent struct { - HostEvent -} - -func init() { - t["NoDatastoresConfiguredEvent"] = reflect.TypeOf((*NoDatastoresConfiguredEvent)(nil)).Elem() -} - -type NoDiskFound struct { - VimFault -} - -func init() { - t["NoDiskFound"] = reflect.TypeOf((*NoDiskFound)(nil)).Elem() -} - -type NoDiskFoundFault NoDiskFound - -func init() { - t["NoDiskFoundFault"] = reflect.TypeOf((*NoDiskFoundFault)(nil)).Elem() -} - -type NoDiskSpace struct { - FileFault - - Datastore string `xml:"datastore"` -} - -func init() { - t["NoDiskSpace"] = reflect.TypeOf((*NoDiskSpace)(nil)).Elem() -} - -type NoDiskSpaceFault NoDiskSpace - -func init() { - t["NoDiskSpaceFault"] = reflect.TypeOf((*NoDiskSpaceFault)(nil)).Elem() -} - -type NoDisksToCustomize struct { - CustomizationFault -} - -func init() { - t["NoDisksToCustomize"] = reflect.TypeOf((*NoDisksToCustomize)(nil)).Elem() -} - -type NoDisksToCustomizeFault NoDisksToCustomize - -func init() { - t["NoDisksToCustomizeFault"] = reflect.TypeOf((*NoDisksToCustomizeFault)(nil)).Elem() -} - -type NoGateway struct { - HostConfigFault -} - -func init() { - t["NoGateway"] = reflect.TypeOf((*NoGateway)(nil)).Elem() -} - -type NoGatewayFault NoGateway - -func init() { - t["NoGatewayFault"] = reflect.TypeOf((*NoGatewayFault)(nil)).Elem() -} - -type NoGuestHeartbeat struct { - MigrationFault -} - -func init() { - t["NoGuestHeartbeat"] = reflect.TypeOf((*NoGuestHeartbeat)(nil)).Elem() -} - -type NoGuestHeartbeatFault NoGuestHeartbeat - -func init() { - t["NoGuestHeartbeatFault"] = reflect.TypeOf((*NoGuestHeartbeatFault)(nil)).Elem() -} - -type NoHost struct { - HostConnectFault - - Name string `xml:"name,omitempty"` -} - -func init() { - t["NoHost"] = reflect.TypeOf((*NoHost)(nil)).Elem() -} - -type NoHostFault NoHost - -func init() { - t["NoHostFault"] = reflect.TypeOf((*NoHostFault)(nil)).Elem() -} - -type NoHostSuitableForFtSecondary struct { - VmFaultToleranceIssue - - Vm ManagedObjectReference `xml:"vm"` - VmName string `xml:"vmName"` -} - -func init() { - t["NoHostSuitableForFtSecondary"] = reflect.TypeOf((*NoHostSuitableForFtSecondary)(nil)).Elem() -} - -type NoHostSuitableForFtSecondaryFault NoHostSuitableForFtSecondary - -func init() { - t["NoHostSuitableForFtSecondaryFault"] = reflect.TypeOf((*NoHostSuitableForFtSecondaryFault)(nil)).Elem() -} - -type NoLicenseEvent struct { - LicenseEvent - - Feature LicenseFeatureInfo `xml:"feature"` -} - -func init() { - t["NoLicenseEvent"] = reflect.TypeOf((*NoLicenseEvent)(nil)).Elem() -} - -type NoLicenseServerConfigured struct { - NotEnoughLicenses -} - -func init() { - t["NoLicenseServerConfigured"] = reflect.TypeOf((*NoLicenseServerConfigured)(nil)).Elem() -} - -type NoLicenseServerConfiguredFault NoLicenseServerConfigured - -func init() { - t["NoLicenseServerConfiguredFault"] = reflect.TypeOf((*NoLicenseServerConfiguredFault)(nil)).Elem() -} - -type NoMaintenanceModeDrsRecommendationForVM struct { - VmEvent -} - -func init() { - t["NoMaintenanceModeDrsRecommendationForVM"] = reflect.TypeOf((*NoMaintenanceModeDrsRecommendationForVM)(nil)).Elem() -} - -type NoPeerHostFound struct { - HostPowerOpFailed -} - -func init() { - t["NoPeerHostFound"] = reflect.TypeOf((*NoPeerHostFound)(nil)).Elem() -} - -type NoPeerHostFoundFault NoPeerHostFound - -func init() { - t["NoPeerHostFoundFault"] = reflect.TypeOf((*NoPeerHostFoundFault)(nil)).Elem() -} - -type NoPermission struct { - SecurityError - - Object ManagedObjectReference `xml:"object"` - PrivilegeId string `xml:"privilegeId"` -} - -func init() { - t["NoPermission"] = reflect.TypeOf((*NoPermission)(nil)).Elem() -} - -type NoPermissionFault BaseNoPermission - -func init() { - t["NoPermissionFault"] = reflect.TypeOf((*NoPermissionFault)(nil)).Elem() -} - -type NoPermissionOnAD struct { - ActiveDirectoryFault -} - -func init() { - t["NoPermissionOnAD"] = reflect.TypeOf((*NoPermissionOnAD)(nil)).Elem() -} - -type NoPermissionOnADFault NoPermissionOnAD - -func init() { - t["NoPermissionOnADFault"] = reflect.TypeOf((*NoPermissionOnADFault)(nil)).Elem() -} - -type NoPermissionOnHost struct { - HostConnectFault -} - -func init() { - t["NoPermissionOnHost"] = reflect.TypeOf((*NoPermissionOnHost)(nil)).Elem() -} - -type NoPermissionOnHostFault NoPermissionOnHost - -func init() { - t["NoPermissionOnHostFault"] = reflect.TypeOf((*NoPermissionOnHostFault)(nil)).Elem() -} - -type NoPermissionOnNasVolume struct { - NasConfigFault - - UserName string `xml:"userName,omitempty"` -} - -func init() { - t["NoPermissionOnNasVolume"] = reflect.TypeOf((*NoPermissionOnNasVolume)(nil)).Elem() -} - -type NoPermissionOnNasVolumeFault NoPermissionOnNasVolume - -func init() { - t["NoPermissionOnNasVolumeFault"] = reflect.TypeOf((*NoPermissionOnNasVolumeFault)(nil)).Elem() -} - -type NoSubjectName struct { - VimFault -} - -func init() { - t["NoSubjectName"] = reflect.TypeOf((*NoSubjectName)(nil)).Elem() -} - -type NoSubjectNameFault NoSubjectName - -func init() { - t["NoSubjectNameFault"] = reflect.TypeOf((*NoSubjectNameFault)(nil)).Elem() -} - -type NoVcManagedIpConfigured struct { - VAppPropertyFault -} - -func init() { - t["NoVcManagedIpConfigured"] = reflect.TypeOf((*NoVcManagedIpConfigured)(nil)).Elem() -} - -type NoVcManagedIpConfiguredFault NoVcManagedIpConfigured - -func init() { - t["NoVcManagedIpConfiguredFault"] = reflect.TypeOf((*NoVcManagedIpConfiguredFault)(nil)).Elem() -} - -type NoVirtualNic struct { - HostConfigFault -} - -func init() { - t["NoVirtualNic"] = reflect.TypeOf((*NoVirtualNic)(nil)).Elem() -} - -type NoVirtualNicFault NoVirtualNic - -func init() { - t["NoVirtualNicFault"] = reflect.TypeOf((*NoVirtualNicFault)(nil)).Elem() -} - -type NoVmInVApp struct { - VAppConfigFault -} - -func init() { - t["NoVmInVApp"] = reflect.TypeOf((*NoVmInVApp)(nil)).Elem() -} - -type NoVmInVAppFault NoVmInVApp - -func init() { - t["NoVmInVAppFault"] = reflect.TypeOf((*NoVmInVAppFault)(nil)).Elem() -} - -type NonADUserRequired struct { - ActiveDirectoryFault -} - -func init() { - t["NonADUserRequired"] = reflect.TypeOf((*NonADUserRequired)(nil)).Elem() -} - -type NonADUserRequiredFault NonADUserRequired - -func init() { - t["NonADUserRequiredFault"] = reflect.TypeOf((*NonADUserRequiredFault)(nil)).Elem() -} - -type NonHomeRDMVMotionNotSupported struct { - MigrationFeatureNotSupported - - Device string `xml:"device"` -} - -func init() { - t["NonHomeRDMVMotionNotSupported"] = reflect.TypeOf((*NonHomeRDMVMotionNotSupported)(nil)).Elem() -} - -type NonHomeRDMVMotionNotSupportedFault NonHomeRDMVMotionNotSupported - -func init() { - t["NonHomeRDMVMotionNotSupportedFault"] = reflect.TypeOf((*NonHomeRDMVMotionNotSupportedFault)(nil)).Elem() -} - -type NonPersistentDisksNotSupported struct { - DeviceNotSupported -} - -func init() { - t["NonPersistentDisksNotSupported"] = reflect.TypeOf((*NonPersistentDisksNotSupported)(nil)).Elem() -} - -type NonPersistentDisksNotSupportedFault NonPersistentDisksNotSupported - -func init() { - t["NonPersistentDisksNotSupportedFault"] = reflect.TypeOf((*NonPersistentDisksNotSupportedFault)(nil)).Elem() -} - -type NonVIWorkloadDetectedOnDatastoreEvent struct { - DatastoreEvent -} - -func init() { - t["NonVIWorkloadDetectedOnDatastoreEvent"] = reflect.TypeOf((*NonVIWorkloadDetectedOnDatastoreEvent)(nil)).Elem() -} - -type NonVmwareOuiMacNotSupportedHost struct { - NotSupportedHost - - HostName string `xml:"hostName"` -} - -func init() { - t["NonVmwareOuiMacNotSupportedHost"] = reflect.TypeOf((*NonVmwareOuiMacNotSupportedHost)(nil)).Elem() -} - -type NonVmwareOuiMacNotSupportedHostFault NonVmwareOuiMacNotSupportedHost - -func init() { - t["NonVmwareOuiMacNotSupportedHostFault"] = reflect.TypeOf((*NonVmwareOuiMacNotSupportedHostFault)(nil)).Elem() -} - -type NotADirectory struct { - FileFault -} - -func init() { - t["NotADirectory"] = reflect.TypeOf((*NotADirectory)(nil)).Elem() -} - -type NotADirectoryFault NotADirectory - -func init() { - t["NotADirectoryFault"] = reflect.TypeOf((*NotADirectoryFault)(nil)).Elem() -} - -type NotAFile struct { - FileFault -} - -func init() { - t["NotAFile"] = reflect.TypeOf((*NotAFile)(nil)).Elem() -} - -type NotAFileFault NotAFile - -func init() { - t["NotAFileFault"] = reflect.TypeOf((*NotAFileFault)(nil)).Elem() -} - -type NotAuthenticated struct { - NoPermission -} - -func init() { - t["NotAuthenticated"] = reflect.TypeOf((*NotAuthenticated)(nil)).Elem() -} - -type NotAuthenticatedFault NotAuthenticated - -func init() { - t["NotAuthenticatedFault"] = reflect.TypeOf((*NotAuthenticatedFault)(nil)).Elem() -} - -type NotEnoughCpus struct { - VirtualHardwareCompatibilityIssue - - NumCpuDest int32 `xml:"numCpuDest"` - NumCpuVm int32 `xml:"numCpuVm"` -} - -func init() { - t["NotEnoughCpus"] = reflect.TypeOf((*NotEnoughCpus)(nil)).Elem() -} - -type NotEnoughCpusFault BaseNotEnoughCpus - -func init() { - t["NotEnoughCpusFault"] = reflect.TypeOf((*NotEnoughCpusFault)(nil)).Elem() -} - -type NotEnoughLicenses struct { - RuntimeFault -} - -func init() { - t["NotEnoughLicenses"] = reflect.TypeOf((*NotEnoughLicenses)(nil)).Elem() -} - -type NotEnoughLicensesFault BaseNotEnoughLicenses - -func init() { - t["NotEnoughLicensesFault"] = reflect.TypeOf((*NotEnoughLicensesFault)(nil)).Elem() -} - -type NotEnoughLogicalCpus struct { - NotEnoughCpus - - Host *ManagedObjectReference `xml:"host,omitempty"` -} - -func init() { - t["NotEnoughLogicalCpus"] = reflect.TypeOf((*NotEnoughLogicalCpus)(nil)).Elem() -} - -type NotEnoughLogicalCpusFault NotEnoughLogicalCpus - -func init() { - t["NotEnoughLogicalCpusFault"] = reflect.TypeOf((*NotEnoughLogicalCpusFault)(nil)).Elem() -} - -type NotEnoughResourcesToStartVmEvent struct { - VmEvent - - Reason string `xml:"reason,omitempty"` -} - -func init() { - t["NotEnoughResourcesToStartVmEvent"] = reflect.TypeOf((*NotEnoughResourcesToStartVmEvent)(nil)).Elem() -} - -type NotFound struct { - VimFault -} - -func init() { - t["NotFound"] = reflect.TypeOf((*NotFound)(nil)).Elem() -} - -type NotFoundFault NotFound - -func init() { - t["NotFoundFault"] = reflect.TypeOf((*NotFoundFault)(nil)).Elem() -} - -type NotImplemented struct { - RuntimeFault -} - -func init() { - t["NotImplemented"] = reflect.TypeOf((*NotImplemented)(nil)).Elem() -} - -type NotImplementedFault NotImplemented - -func init() { - t["NotImplementedFault"] = reflect.TypeOf((*NotImplementedFault)(nil)).Elem() -} - -type NotSupported struct { - RuntimeFault -} - -func init() { - t["NotSupported"] = reflect.TypeOf((*NotSupported)(nil)).Elem() -} - -type NotSupportedDeviceForFT struct { - VmFaultToleranceIssue - - Host ManagedObjectReference `xml:"host"` - HostName string `xml:"hostName,omitempty"` - Vm ManagedObjectReference `xml:"vm"` - VmName string `xml:"vmName,omitempty"` - DeviceType string `xml:"deviceType"` - DeviceLabel string `xml:"deviceLabel,omitempty"` -} - -func init() { - t["NotSupportedDeviceForFT"] = reflect.TypeOf((*NotSupportedDeviceForFT)(nil)).Elem() -} - -type NotSupportedDeviceForFTFault NotSupportedDeviceForFT - -func init() { - t["NotSupportedDeviceForFTFault"] = reflect.TypeOf((*NotSupportedDeviceForFTFault)(nil)).Elem() -} - -type NotSupportedFault BaseNotSupported - -func init() { - t["NotSupportedFault"] = reflect.TypeOf((*NotSupportedFault)(nil)).Elem() -} - -type NotSupportedHost struct { - HostConnectFault - - ProductName string `xml:"productName,omitempty"` - ProductVersion string `xml:"productVersion,omitempty"` -} - -func init() { - t["NotSupportedHost"] = reflect.TypeOf((*NotSupportedHost)(nil)).Elem() -} - -type NotSupportedHostFault BaseNotSupportedHost - -func init() { - t["NotSupportedHostFault"] = reflect.TypeOf((*NotSupportedHostFault)(nil)).Elem() -} - -type NotSupportedHostForChecksum struct { - VimFault -} - -func init() { - t["NotSupportedHostForChecksum"] = reflect.TypeOf((*NotSupportedHostForChecksum)(nil)).Elem() -} - -type NotSupportedHostForChecksumFault NotSupportedHostForChecksum - -func init() { - t["NotSupportedHostForChecksumFault"] = reflect.TypeOf((*NotSupportedHostForChecksumFault)(nil)).Elem() -} - -type NotSupportedHostForVFlash struct { - NotSupportedHost - - HostName string `xml:"hostName"` -} - -func init() { - t["NotSupportedHostForVFlash"] = reflect.TypeOf((*NotSupportedHostForVFlash)(nil)).Elem() -} - -type NotSupportedHostForVFlashFault NotSupportedHostForVFlash - -func init() { - t["NotSupportedHostForVFlashFault"] = reflect.TypeOf((*NotSupportedHostForVFlashFault)(nil)).Elem() -} - -type NotSupportedHostForVmcp struct { - NotSupportedHost - - HostName string `xml:"hostName"` -} - -func init() { - t["NotSupportedHostForVmcp"] = reflect.TypeOf((*NotSupportedHostForVmcp)(nil)).Elem() -} - -type NotSupportedHostForVmcpFault NotSupportedHostForVmcp - -func init() { - t["NotSupportedHostForVmcpFault"] = reflect.TypeOf((*NotSupportedHostForVmcpFault)(nil)).Elem() -} - -type NotSupportedHostForVmemFile struct { - NotSupportedHost - - HostName string `xml:"hostName"` -} - -func init() { - t["NotSupportedHostForVmemFile"] = reflect.TypeOf((*NotSupportedHostForVmemFile)(nil)).Elem() -} - -type NotSupportedHostForVmemFileFault NotSupportedHostForVmemFile - -func init() { - t["NotSupportedHostForVmemFileFault"] = reflect.TypeOf((*NotSupportedHostForVmemFileFault)(nil)).Elem() -} - -type NotSupportedHostForVsan struct { - NotSupportedHost - - HostName string `xml:"hostName"` -} - -func init() { - t["NotSupportedHostForVsan"] = reflect.TypeOf((*NotSupportedHostForVsan)(nil)).Elem() -} - -type NotSupportedHostForVsanFault NotSupportedHostForVsan - -func init() { - t["NotSupportedHostForVsanFault"] = reflect.TypeOf((*NotSupportedHostForVsanFault)(nil)).Elem() -} - -type NotSupportedHostInCluster struct { - NotSupportedHost -} - -func init() { - t["NotSupportedHostInCluster"] = reflect.TypeOf((*NotSupportedHostInCluster)(nil)).Elem() -} - -type NotSupportedHostInClusterFault BaseNotSupportedHostInCluster - -func init() { - t["NotSupportedHostInClusterFault"] = reflect.TypeOf((*NotSupportedHostInClusterFault)(nil)).Elem() -} - -type NotSupportedHostInDvs struct { - NotSupportedHost - - SwitchProductSpec DistributedVirtualSwitchProductSpec `xml:"switchProductSpec"` -} - -func init() { - t["NotSupportedHostInDvs"] = reflect.TypeOf((*NotSupportedHostInDvs)(nil)).Elem() -} - -type NotSupportedHostInDvsFault NotSupportedHostInDvs - -func init() { - t["NotSupportedHostInDvsFault"] = reflect.TypeOf((*NotSupportedHostInDvsFault)(nil)).Elem() -} - -type NotSupportedHostInHACluster struct { - NotSupportedHost - - HostName string `xml:"hostName"` - Build string `xml:"build"` -} - -func init() { - t["NotSupportedHostInHACluster"] = reflect.TypeOf((*NotSupportedHostInHACluster)(nil)).Elem() -} - -type NotSupportedHostInHAClusterFault NotSupportedHostInHACluster - -func init() { - t["NotSupportedHostInHAClusterFault"] = reflect.TypeOf((*NotSupportedHostInHAClusterFault)(nil)).Elem() -} - -type NotUserConfigurableProperty struct { - VAppPropertyFault -} - -func init() { - t["NotUserConfigurableProperty"] = reflect.TypeOf((*NotUserConfigurableProperty)(nil)).Elem() -} - -type NotUserConfigurablePropertyFault NotUserConfigurableProperty - -func init() { - t["NotUserConfigurablePropertyFault"] = reflect.TypeOf((*NotUserConfigurablePropertyFault)(nil)).Elem() -} - -type NumPortsProfile struct { - ApplyProfile -} - -func init() { - t["NumPortsProfile"] = reflect.TypeOf((*NumPortsProfile)(nil)).Elem() -} - -type NumVirtualCoresPerSocketNotSupported struct { - VirtualHardwareCompatibilityIssue - - MaxSupportedCoresPerSocketDest int32 `xml:"maxSupportedCoresPerSocketDest"` - NumCoresPerSocketVm int32 `xml:"numCoresPerSocketVm"` -} - -func init() { - t["NumVirtualCoresPerSocketNotSupported"] = reflect.TypeOf((*NumVirtualCoresPerSocketNotSupported)(nil)).Elem() -} - -type NumVirtualCoresPerSocketNotSupportedFault NumVirtualCoresPerSocketNotSupported - -func init() { - t["NumVirtualCoresPerSocketNotSupportedFault"] = reflect.TypeOf((*NumVirtualCoresPerSocketNotSupportedFault)(nil)).Elem() -} - -type NumVirtualCpusExceedsLimit struct { - InsufficientResourcesFault - - MaxSupportedVcpus int32 `xml:"maxSupportedVcpus"` -} - -func init() { - t["NumVirtualCpusExceedsLimit"] = reflect.TypeOf((*NumVirtualCpusExceedsLimit)(nil)).Elem() -} - -type NumVirtualCpusExceedsLimitFault NumVirtualCpusExceedsLimit - -func init() { - t["NumVirtualCpusExceedsLimitFault"] = reflect.TypeOf((*NumVirtualCpusExceedsLimitFault)(nil)).Elem() -} - -type NumVirtualCpusIncompatible struct { - VmConfigFault - - Reason string `xml:"reason"` - NumCpu int32 `xml:"numCpu"` -} - -func init() { - t["NumVirtualCpusIncompatible"] = reflect.TypeOf((*NumVirtualCpusIncompatible)(nil)).Elem() -} - -type NumVirtualCpusIncompatibleFault NumVirtualCpusIncompatible - -func init() { - t["NumVirtualCpusIncompatibleFault"] = reflect.TypeOf((*NumVirtualCpusIncompatibleFault)(nil)).Elem() -} - -type NumVirtualCpusNotSupported struct { - VirtualHardwareCompatibilityIssue - - MaxSupportedVcpusDest int32 `xml:"maxSupportedVcpusDest"` - NumCpuVm int32 `xml:"numCpuVm"` -} - -func init() { - t["NumVirtualCpusNotSupported"] = reflect.TypeOf((*NumVirtualCpusNotSupported)(nil)).Elem() -} - -type NumVirtualCpusNotSupportedFault NumVirtualCpusNotSupported - -func init() { - t["NumVirtualCpusNotSupportedFault"] = reflect.TypeOf((*NumVirtualCpusNotSupportedFault)(nil)).Elem() -} - -type NumericRange struct { - DynamicData - - Start int32 `xml:"start"` - End int32 `xml:"end"` -} - -func init() { - t["NumericRange"] = reflect.TypeOf((*NumericRange)(nil)).Elem() -} - -type ObjectContent struct { - DynamicData - - Obj ManagedObjectReference `xml:"obj"` - PropSet []DynamicProperty `xml:"propSet,omitempty"` - MissingSet []MissingProperty `xml:"missingSet,omitempty"` -} - -func init() { - t["ObjectContent"] = reflect.TypeOf((*ObjectContent)(nil)).Elem() -} - -type ObjectSpec struct { - DynamicData - - Obj ManagedObjectReference `xml:"obj"` - Skip *bool `xml:"skip"` - SelectSet []BaseSelectionSpec `xml:"selectSet,omitempty,typeattr"` -} - -func init() { - t["ObjectSpec"] = reflect.TypeOf((*ObjectSpec)(nil)).Elem() -} - -type ObjectUpdate struct { - DynamicData - - Kind ObjectUpdateKind `xml:"kind"` - Obj ManagedObjectReference `xml:"obj"` - ChangeSet []PropertyChange `xml:"changeSet,omitempty"` - MissingSet []MissingProperty `xml:"missingSet,omitempty"` -} - -func init() { - t["ObjectUpdate"] = reflect.TypeOf((*ObjectUpdate)(nil)).Elem() -} - -type OnceTaskScheduler struct { - TaskScheduler - - RunAt *time.Time `xml:"runAt"` -} - -func init() { - t["OnceTaskScheduler"] = reflect.TypeOf((*OnceTaskScheduler)(nil)).Elem() -} - -type OpaqueNetworkSummary struct { - NetworkSummary - - OpaqueNetworkId string `xml:"opaqueNetworkId"` - OpaqueNetworkType string `xml:"opaqueNetworkType"` -} - -func init() { - t["OpaqueNetworkSummary"] = reflect.TypeOf((*OpaqueNetworkSummary)(nil)).Elem() -} - -type OpaqueNetworkTargetInfo struct { - VirtualMachineTargetInfo - - Network OpaqueNetworkSummary `xml:"network"` - NetworkReservationSupported *bool `xml:"networkReservationSupported"` -} - -func init() { - t["OpaqueNetworkTargetInfo"] = reflect.TypeOf((*OpaqueNetworkTargetInfo)(nil)).Elem() -} - -type OpenInventoryViewFolder OpenInventoryViewFolderRequestType - -func init() { - t["OpenInventoryViewFolder"] = reflect.TypeOf((*OpenInventoryViewFolder)(nil)).Elem() -} - -type OpenInventoryViewFolderRequestType struct { - This ManagedObjectReference `xml:"_this"` - Entity []ManagedObjectReference `xml:"entity"` -} - -func init() { - t["OpenInventoryViewFolderRequestType"] = reflect.TypeOf((*OpenInventoryViewFolderRequestType)(nil)).Elem() -} - -type OpenInventoryViewFolderResponse struct { - Returnval []ManagedObjectReference `xml:"returnval,omitempty"` -} - -type OperationDisabledByGuest struct { - GuestOperationsFault -} - -func init() { - t["OperationDisabledByGuest"] = reflect.TypeOf((*OperationDisabledByGuest)(nil)).Elem() -} - -type OperationDisabledByGuestFault OperationDisabledByGuest - -func init() { - t["OperationDisabledByGuestFault"] = reflect.TypeOf((*OperationDisabledByGuestFault)(nil)).Elem() -} - -type OperationDisallowedOnHost struct { - RuntimeFault -} - -func init() { - t["OperationDisallowedOnHost"] = reflect.TypeOf((*OperationDisallowedOnHost)(nil)).Elem() -} - -type OperationDisallowedOnHostFault OperationDisallowedOnHost - -func init() { - t["OperationDisallowedOnHostFault"] = reflect.TypeOf((*OperationDisallowedOnHostFault)(nil)).Elem() -} - -type OperationNotSupportedByGuest struct { - GuestOperationsFault -} - -func init() { - t["OperationNotSupportedByGuest"] = reflect.TypeOf((*OperationNotSupportedByGuest)(nil)).Elem() -} - -type OperationNotSupportedByGuestFault OperationNotSupportedByGuest - -func init() { - t["OperationNotSupportedByGuestFault"] = reflect.TypeOf((*OperationNotSupportedByGuestFault)(nil)).Elem() -} - -type OptionDef struct { - ElementDescription - - OptionType BaseOptionType `xml:"optionType,typeattr"` -} - -func init() { - t["OptionDef"] = reflect.TypeOf((*OptionDef)(nil)).Elem() -} - -type OptionProfile struct { - ApplyProfile - - Key string `xml:"key"` -} - -func init() { - t["OptionProfile"] = reflect.TypeOf((*OptionProfile)(nil)).Elem() -} - -type OptionType struct { - DynamicData - - ValueIsReadonly *bool `xml:"valueIsReadonly"` -} - -func init() { - t["OptionType"] = reflect.TypeOf((*OptionType)(nil)).Elem() -} - -type OptionValue struct { - DynamicData - - Key string `xml:"key"` - Value AnyType `xml:"value,omitempty,typeattr"` -} - -func init() { - t["OptionValue"] = reflect.TypeOf((*OptionValue)(nil)).Elem() -} - -type OrAlarmExpression struct { - AlarmExpression - - Expression []BaseAlarmExpression `xml:"expression,typeattr"` -} - -func init() { - t["OrAlarmExpression"] = reflect.TypeOf((*OrAlarmExpression)(nil)).Elem() -} - -type OutOfBounds struct { - VimFault - - ArgumentName string `xml:"argumentName"` -} - -func init() { - t["OutOfBounds"] = reflect.TypeOf((*OutOfBounds)(nil)).Elem() -} - -type OutOfBoundsFault OutOfBounds - -func init() { - t["OutOfBoundsFault"] = reflect.TypeOf((*OutOfBoundsFault)(nil)).Elem() -} - -type OutOfSyncDvsHost struct { - DvsEvent - - HostOutOfSync []DvsOutOfSyncHostArgument `xml:"hostOutOfSync"` -} - -func init() { - t["OutOfSyncDvsHost"] = reflect.TypeOf((*OutOfSyncDvsHost)(nil)).Elem() -} - -type OverwriteCustomizationSpec OverwriteCustomizationSpecRequestType - -func init() { - t["OverwriteCustomizationSpec"] = reflect.TypeOf((*OverwriteCustomizationSpec)(nil)).Elem() -} - -type OverwriteCustomizationSpecRequestType struct { - This ManagedObjectReference `xml:"_this"` - Item CustomizationSpecItem `xml:"item"` -} - -func init() { - t["OverwriteCustomizationSpecRequestType"] = reflect.TypeOf((*OverwriteCustomizationSpecRequestType)(nil)).Elem() -} - -type OverwriteCustomizationSpecResponse struct { -} - -type OvfAttribute struct { - OvfInvalidPackage - - ElementName string `xml:"elementName"` - AttributeName string `xml:"attributeName"` -} - -func init() { - t["OvfAttribute"] = reflect.TypeOf((*OvfAttribute)(nil)).Elem() -} - -type OvfAttributeFault BaseOvfAttribute - -func init() { - t["OvfAttributeFault"] = reflect.TypeOf((*OvfAttributeFault)(nil)).Elem() -} - -type OvfConnectedDevice struct { - OvfHardwareExport -} - -func init() { - t["OvfConnectedDevice"] = reflect.TypeOf((*OvfConnectedDevice)(nil)).Elem() -} - -type OvfConnectedDeviceFault BaseOvfConnectedDevice - -func init() { - t["OvfConnectedDeviceFault"] = reflect.TypeOf((*OvfConnectedDeviceFault)(nil)).Elem() -} - -type OvfConnectedDeviceFloppy struct { - OvfConnectedDevice - - Filename string `xml:"filename"` -} - -func init() { - t["OvfConnectedDeviceFloppy"] = reflect.TypeOf((*OvfConnectedDeviceFloppy)(nil)).Elem() -} - -type OvfConnectedDeviceFloppyFault OvfConnectedDeviceFloppy - -func init() { - t["OvfConnectedDeviceFloppyFault"] = reflect.TypeOf((*OvfConnectedDeviceFloppyFault)(nil)).Elem() -} - -type OvfConnectedDeviceIso struct { - OvfConnectedDevice - - Filename string `xml:"filename"` -} - -func init() { - t["OvfConnectedDeviceIso"] = reflect.TypeOf((*OvfConnectedDeviceIso)(nil)).Elem() -} - -type OvfConnectedDeviceIsoFault OvfConnectedDeviceIso - -func init() { - t["OvfConnectedDeviceIsoFault"] = reflect.TypeOf((*OvfConnectedDeviceIsoFault)(nil)).Elem() -} - -type OvfConstraint struct { - OvfInvalidPackage - - Name string `xml:"name"` -} - -func init() { - t["OvfConstraint"] = reflect.TypeOf((*OvfConstraint)(nil)).Elem() -} - -type OvfConstraintFault BaseOvfConstraint - -func init() { - t["OvfConstraintFault"] = reflect.TypeOf((*OvfConstraintFault)(nil)).Elem() -} - -type OvfConsumerCallbackFault struct { - OvfFault - - ExtensionKey string `xml:"extensionKey"` - ExtensionName string `xml:"extensionName"` -} - -func init() { - t["OvfConsumerCallbackFault"] = reflect.TypeOf((*OvfConsumerCallbackFault)(nil)).Elem() -} - -type OvfConsumerCallbackFaultFault BaseOvfConsumerCallbackFault - -func init() { - t["OvfConsumerCallbackFaultFault"] = reflect.TypeOf((*OvfConsumerCallbackFaultFault)(nil)).Elem() -} - -type OvfConsumerCommunicationError struct { - OvfConsumerCallbackFault - - Description string `xml:"description"` -} - -func init() { - t["OvfConsumerCommunicationError"] = reflect.TypeOf((*OvfConsumerCommunicationError)(nil)).Elem() -} - -type OvfConsumerCommunicationErrorFault OvfConsumerCommunicationError - -func init() { - t["OvfConsumerCommunicationErrorFault"] = reflect.TypeOf((*OvfConsumerCommunicationErrorFault)(nil)).Elem() -} - -type OvfConsumerFault struct { - OvfConsumerCallbackFault - - ErrorKey string `xml:"errorKey"` - Message string `xml:"message"` - Params []KeyValue `xml:"params,omitempty"` -} - -func init() { - t["OvfConsumerFault"] = reflect.TypeOf((*OvfConsumerFault)(nil)).Elem() -} - -type OvfConsumerFaultFault OvfConsumerFault - -func init() { - t["OvfConsumerFaultFault"] = reflect.TypeOf((*OvfConsumerFaultFault)(nil)).Elem() -} - -type OvfConsumerInvalidSection struct { - OvfConsumerCallbackFault - - LineNumber int32 `xml:"lineNumber"` - Description string `xml:"description"` -} - -func init() { - t["OvfConsumerInvalidSection"] = reflect.TypeOf((*OvfConsumerInvalidSection)(nil)).Elem() -} - -type OvfConsumerInvalidSectionFault OvfConsumerInvalidSection - -func init() { - t["OvfConsumerInvalidSectionFault"] = reflect.TypeOf((*OvfConsumerInvalidSectionFault)(nil)).Elem() -} - -type OvfConsumerOstNode struct { - DynamicData - - Id string `xml:"id"` - Type string `xml:"type"` - Section []OvfConsumerOvfSection `xml:"section,omitempty"` - Child []OvfConsumerOstNode `xml:"child,omitempty"` - Entity *ManagedObjectReference `xml:"entity,omitempty"` -} - -func init() { - t["OvfConsumerOstNode"] = reflect.TypeOf((*OvfConsumerOstNode)(nil)).Elem() -} - -type OvfConsumerOvfSection struct { - DynamicData - - LineNumber int32 `xml:"lineNumber"` - Xml string `xml:"xml"` -} - -func init() { - t["OvfConsumerOvfSection"] = reflect.TypeOf((*OvfConsumerOvfSection)(nil)).Elem() -} - -type OvfConsumerPowerOnFault struct { - InvalidState - - ExtensionKey string `xml:"extensionKey"` - ExtensionName string `xml:"extensionName"` - Description string `xml:"description"` -} - -func init() { - t["OvfConsumerPowerOnFault"] = reflect.TypeOf((*OvfConsumerPowerOnFault)(nil)).Elem() -} - -type OvfConsumerPowerOnFaultFault OvfConsumerPowerOnFault - -func init() { - t["OvfConsumerPowerOnFaultFault"] = reflect.TypeOf((*OvfConsumerPowerOnFaultFault)(nil)).Elem() -} - -type OvfConsumerUndeclaredSection struct { - OvfConsumerCallbackFault - - QualifiedSectionType string `xml:"qualifiedSectionType"` -} - -func init() { - t["OvfConsumerUndeclaredSection"] = reflect.TypeOf((*OvfConsumerUndeclaredSection)(nil)).Elem() -} - -type OvfConsumerUndeclaredSectionFault OvfConsumerUndeclaredSection - -func init() { - t["OvfConsumerUndeclaredSectionFault"] = reflect.TypeOf((*OvfConsumerUndeclaredSectionFault)(nil)).Elem() -} - -type OvfConsumerUndefinedPrefix struct { - OvfConsumerCallbackFault - - Prefix string `xml:"prefix"` -} - -func init() { - t["OvfConsumerUndefinedPrefix"] = reflect.TypeOf((*OvfConsumerUndefinedPrefix)(nil)).Elem() -} - -type OvfConsumerUndefinedPrefixFault OvfConsumerUndefinedPrefix - -func init() { - t["OvfConsumerUndefinedPrefixFault"] = reflect.TypeOf((*OvfConsumerUndefinedPrefixFault)(nil)).Elem() -} - -type OvfConsumerValidationFault struct { - VmConfigFault - - ExtensionKey string `xml:"extensionKey"` - ExtensionName string `xml:"extensionName"` - Message string `xml:"message"` -} - -func init() { - t["OvfConsumerValidationFault"] = reflect.TypeOf((*OvfConsumerValidationFault)(nil)).Elem() -} - -type OvfConsumerValidationFaultFault OvfConsumerValidationFault - -func init() { - t["OvfConsumerValidationFaultFault"] = reflect.TypeOf((*OvfConsumerValidationFaultFault)(nil)).Elem() -} - -type OvfCpuCompatibility struct { - OvfImport - - RegisterName string `xml:"registerName"` - Level int32 `xml:"level"` - RegisterValue string `xml:"registerValue"` - DesiredRegisterValue string `xml:"desiredRegisterValue"` -} - -func init() { - t["OvfCpuCompatibility"] = reflect.TypeOf((*OvfCpuCompatibility)(nil)).Elem() -} - -type OvfCpuCompatibilityCheckNotSupported struct { - OvfImport -} - -func init() { - t["OvfCpuCompatibilityCheckNotSupported"] = reflect.TypeOf((*OvfCpuCompatibilityCheckNotSupported)(nil)).Elem() -} - -type OvfCpuCompatibilityCheckNotSupportedFault OvfCpuCompatibilityCheckNotSupported - -func init() { - t["OvfCpuCompatibilityCheckNotSupportedFault"] = reflect.TypeOf((*OvfCpuCompatibilityCheckNotSupportedFault)(nil)).Elem() -} - -type OvfCpuCompatibilityFault OvfCpuCompatibility - -func init() { - t["OvfCpuCompatibilityFault"] = reflect.TypeOf((*OvfCpuCompatibilityFault)(nil)).Elem() -} - -type OvfCreateDescriptorParams struct { - DynamicData - - OvfFiles []OvfFile `xml:"ovfFiles,omitempty"` - Name string `xml:"name,omitempty"` - Description string `xml:"description,omitempty"` - IncludeImageFiles *bool `xml:"includeImageFiles"` - ExportOption []string `xml:"exportOption,omitempty"` - Snapshot *ManagedObjectReference `xml:"snapshot,omitempty"` -} - -func init() { - t["OvfCreateDescriptorParams"] = reflect.TypeOf((*OvfCreateDescriptorParams)(nil)).Elem() -} - -type OvfCreateDescriptorResult struct { - DynamicData - - OvfDescriptor string `xml:"ovfDescriptor"` - Error []LocalizedMethodFault `xml:"error,omitempty"` - Warning []LocalizedMethodFault `xml:"warning,omitempty"` - IncludeImageFiles *bool `xml:"includeImageFiles"` -} - -func init() { - t["OvfCreateDescriptorResult"] = reflect.TypeOf((*OvfCreateDescriptorResult)(nil)).Elem() -} - -type OvfCreateImportSpecParams struct { - OvfManagerCommonParams - - EntityName string `xml:"entityName"` - HostSystem *ManagedObjectReference `xml:"hostSystem,omitempty"` - NetworkMapping []OvfNetworkMapping `xml:"networkMapping,omitempty"` - IpAllocationPolicy string `xml:"ipAllocationPolicy,omitempty"` - IpProtocol string `xml:"ipProtocol,omitempty"` - PropertyMapping []KeyValue `xml:"propertyMapping,omitempty"` - ResourceMapping []OvfResourceMap `xml:"resourceMapping,omitempty"` - DiskProvisioning string `xml:"diskProvisioning,omitempty"` - InstantiationOst *OvfConsumerOstNode `xml:"instantiationOst,omitempty"` -} - -func init() { - t["OvfCreateImportSpecParams"] = reflect.TypeOf((*OvfCreateImportSpecParams)(nil)).Elem() -} - -type OvfCreateImportSpecResult struct { - DynamicData - - ImportSpec BaseImportSpec `xml:"importSpec,omitempty,typeattr"` - FileItem []OvfFileItem `xml:"fileItem,omitempty"` - Warning []LocalizedMethodFault `xml:"warning,omitempty"` - Error []LocalizedMethodFault `xml:"error,omitempty"` -} - -func init() { - t["OvfCreateImportSpecResult"] = reflect.TypeOf((*OvfCreateImportSpecResult)(nil)).Elem() -} - -type OvfDeploymentOption struct { - DynamicData - - Key string `xml:"key"` - Label string `xml:"label"` - Description string `xml:"description"` -} - -func init() { - t["OvfDeploymentOption"] = reflect.TypeOf((*OvfDeploymentOption)(nil)).Elem() -} - -type OvfDiskMappingNotFound struct { - OvfSystemFault - - DiskName string `xml:"diskName"` - VmName string `xml:"vmName"` -} - -func init() { - t["OvfDiskMappingNotFound"] = reflect.TypeOf((*OvfDiskMappingNotFound)(nil)).Elem() -} - -type OvfDiskMappingNotFoundFault OvfDiskMappingNotFound - -func init() { - t["OvfDiskMappingNotFoundFault"] = reflect.TypeOf((*OvfDiskMappingNotFoundFault)(nil)).Elem() -} - -type OvfDiskOrderConstraint struct { - OvfConstraint -} - -func init() { - t["OvfDiskOrderConstraint"] = reflect.TypeOf((*OvfDiskOrderConstraint)(nil)).Elem() -} - -type OvfDiskOrderConstraintFault OvfDiskOrderConstraint - -func init() { - t["OvfDiskOrderConstraintFault"] = reflect.TypeOf((*OvfDiskOrderConstraintFault)(nil)).Elem() -} - -type OvfDuplicateElement struct { - OvfElement -} - -func init() { - t["OvfDuplicateElement"] = reflect.TypeOf((*OvfDuplicateElement)(nil)).Elem() -} - -type OvfDuplicateElementFault OvfDuplicateElement - -func init() { - t["OvfDuplicateElementFault"] = reflect.TypeOf((*OvfDuplicateElementFault)(nil)).Elem() -} - -type OvfDuplicatedElementBoundary struct { - OvfElement - - Boundary string `xml:"boundary"` -} - -func init() { - t["OvfDuplicatedElementBoundary"] = reflect.TypeOf((*OvfDuplicatedElementBoundary)(nil)).Elem() -} - -type OvfDuplicatedElementBoundaryFault OvfDuplicatedElementBoundary - -func init() { - t["OvfDuplicatedElementBoundaryFault"] = reflect.TypeOf((*OvfDuplicatedElementBoundaryFault)(nil)).Elem() -} - -type OvfDuplicatedPropertyIdExport struct { - OvfExport - - Fqid string `xml:"fqid"` -} - -func init() { - t["OvfDuplicatedPropertyIdExport"] = reflect.TypeOf((*OvfDuplicatedPropertyIdExport)(nil)).Elem() -} - -type OvfDuplicatedPropertyIdExportFault OvfDuplicatedPropertyIdExport - -func init() { - t["OvfDuplicatedPropertyIdExportFault"] = reflect.TypeOf((*OvfDuplicatedPropertyIdExportFault)(nil)).Elem() -} - -type OvfDuplicatedPropertyIdImport struct { - OvfExport -} - -func init() { - t["OvfDuplicatedPropertyIdImport"] = reflect.TypeOf((*OvfDuplicatedPropertyIdImport)(nil)).Elem() -} - -type OvfDuplicatedPropertyIdImportFault OvfDuplicatedPropertyIdImport - -func init() { - t["OvfDuplicatedPropertyIdImportFault"] = reflect.TypeOf((*OvfDuplicatedPropertyIdImportFault)(nil)).Elem() -} - -type OvfElement struct { - OvfInvalidPackage - - Name string `xml:"name"` -} - -func init() { - t["OvfElement"] = reflect.TypeOf((*OvfElement)(nil)).Elem() -} - -type OvfElementFault BaseOvfElement - -func init() { - t["OvfElementFault"] = reflect.TypeOf((*OvfElementFault)(nil)).Elem() -} - -type OvfElementInvalidValue struct { - OvfElement - - Value string `xml:"value"` -} - -func init() { - t["OvfElementInvalidValue"] = reflect.TypeOf((*OvfElementInvalidValue)(nil)).Elem() -} - -type OvfElementInvalidValueFault OvfElementInvalidValue - -func init() { - t["OvfElementInvalidValueFault"] = reflect.TypeOf((*OvfElementInvalidValueFault)(nil)).Elem() -} - -type OvfExport struct { - OvfFault -} - -func init() { - t["OvfExport"] = reflect.TypeOf((*OvfExport)(nil)).Elem() -} - -type OvfExportFailed struct { - OvfExport -} - -func init() { - t["OvfExportFailed"] = reflect.TypeOf((*OvfExportFailed)(nil)).Elem() -} - -type OvfExportFailedFault OvfExportFailed - -func init() { - t["OvfExportFailedFault"] = reflect.TypeOf((*OvfExportFailedFault)(nil)).Elem() -} - -type OvfExportFault BaseOvfExport - -func init() { - t["OvfExportFault"] = reflect.TypeOf((*OvfExportFault)(nil)).Elem() -} - -type OvfFault struct { - VimFault -} - -func init() { - t["OvfFault"] = reflect.TypeOf((*OvfFault)(nil)).Elem() -} - -type OvfFaultFault BaseOvfFault - -func init() { - t["OvfFaultFault"] = reflect.TypeOf((*OvfFaultFault)(nil)).Elem() -} - -type OvfFile struct { - DynamicData - - DeviceId string `xml:"deviceId"` - Path string `xml:"path"` - CompressionMethod string `xml:"compressionMethod,omitempty"` - ChunkSize int64 `xml:"chunkSize,omitempty"` - Size int64 `xml:"size"` - Capacity int64 `xml:"capacity,omitempty"` - PopulatedSize int64 `xml:"populatedSize,omitempty"` -} - -func init() { - t["OvfFile"] = reflect.TypeOf((*OvfFile)(nil)).Elem() -} - -type OvfFileItem struct { - DynamicData - - DeviceId string `xml:"deviceId"` - Path string `xml:"path"` - CompressionMethod string `xml:"compressionMethod,omitempty"` - ChunkSize int64 `xml:"chunkSize,omitempty"` - Size int64 `xml:"size,omitempty"` - CimType int32 `xml:"cimType"` - Create bool `xml:"create"` -} - -func init() { - t["OvfFileItem"] = reflect.TypeOf((*OvfFileItem)(nil)).Elem() -} - -type OvfHardwareCheck struct { - OvfImport -} - -func init() { - t["OvfHardwareCheck"] = reflect.TypeOf((*OvfHardwareCheck)(nil)).Elem() -} - -type OvfHardwareCheckFault OvfHardwareCheck - -func init() { - t["OvfHardwareCheckFault"] = reflect.TypeOf((*OvfHardwareCheckFault)(nil)).Elem() -} - -type OvfHardwareExport struct { - OvfExport - - Device BaseVirtualDevice `xml:"device,omitempty,typeattr"` - VmPath string `xml:"vmPath"` -} - -func init() { - t["OvfHardwareExport"] = reflect.TypeOf((*OvfHardwareExport)(nil)).Elem() -} - -type OvfHardwareExportFault BaseOvfHardwareExport - -func init() { - t["OvfHardwareExportFault"] = reflect.TypeOf((*OvfHardwareExportFault)(nil)).Elem() -} - -type OvfHostResourceConstraint struct { - OvfConstraint - - Value string `xml:"value"` -} - -func init() { - t["OvfHostResourceConstraint"] = reflect.TypeOf((*OvfHostResourceConstraint)(nil)).Elem() -} - -type OvfHostResourceConstraintFault OvfHostResourceConstraint - -func init() { - t["OvfHostResourceConstraintFault"] = reflect.TypeOf((*OvfHostResourceConstraintFault)(nil)).Elem() -} - -type OvfHostValueNotParsed struct { - OvfSystemFault - - Property string `xml:"property"` - Value string `xml:"value"` -} - -func init() { - t["OvfHostValueNotParsed"] = reflect.TypeOf((*OvfHostValueNotParsed)(nil)).Elem() -} - -type OvfHostValueNotParsedFault OvfHostValueNotParsed - -func init() { - t["OvfHostValueNotParsedFault"] = reflect.TypeOf((*OvfHostValueNotParsedFault)(nil)).Elem() -} - -type OvfImport struct { - OvfFault -} - -func init() { - t["OvfImport"] = reflect.TypeOf((*OvfImport)(nil)).Elem() -} - -type OvfImportFailed struct { - OvfImport -} - -func init() { - t["OvfImportFailed"] = reflect.TypeOf((*OvfImportFailed)(nil)).Elem() -} - -type OvfImportFailedFault OvfImportFailed - -func init() { - t["OvfImportFailedFault"] = reflect.TypeOf((*OvfImportFailedFault)(nil)).Elem() -} - -type OvfImportFault BaseOvfImport - -func init() { - t["OvfImportFault"] = reflect.TypeOf((*OvfImportFault)(nil)).Elem() -} - -type OvfInternalError struct { - OvfSystemFault -} - -func init() { - t["OvfInternalError"] = reflect.TypeOf((*OvfInternalError)(nil)).Elem() -} - -type OvfInternalErrorFault OvfInternalError - -func init() { - t["OvfInternalErrorFault"] = reflect.TypeOf((*OvfInternalErrorFault)(nil)).Elem() -} - -type OvfInvalidPackage struct { - OvfFault - - LineNumber int32 `xml:"lineNumber"` -} - -func init() { - t["OvfInvalidPackage"] = reflect.TypeOf((*OvfInvalidPackage)(nil)).Elem() -} - -type OvfInvalidPackageFault BaseOvfInvalidPackage - -func init() { - t["OvfInvalidPackageFault"] = reflect.TypeOf((*OvfInvalidPackageFault)(nil)).Elem() -} - -type OvfInvalidValue struct { - OvfAttribute - - Value string `xml:"value"` -} - -func init() { - t["OvfInvalidValue"] = reflect.TypeOf((*OvfInvalidValue)(nil)).Elem() -} - -type OvfInvalidValueConfiguration struct { - OvfInvalidValue -} - -func init() { - t["OvfInvalidValueConfiguration"] = reflect.TypeOf((*OvfInvalidValueConfiguration)(nil)).Elem() -} - -type OvfInvalidValueConfigurationFault OvfInvalidValueConfiguration - -func init() { - t["OvfInvalidValueConfigurationFault"] = reflect.TypeOf((*OvfInvalidValueConfigurationFault)(nil)).Elem() -} - -type OvfInvalidValueEmpty struct { - OvfInvalidValue -} - -func init() { - t["OvfInvalidValueEmpty"] = reflect.TypeOf((*OvfInvalidValueEmpty)(nil)).Elem() -} - -type OvfInvalidValueEmptyFault OvfInvalidValueEmpty - -func init() { - t["OvfInvalidValueEmptyFault"] = reflect.TypeOf((*OvfInvalidValueEmptyFault)(nil)).Elem() -} - -type OvfInvalidValueFault BaseOvfInvalidValue - -func init() { - t["OvfInvalidValueFault"] = reflect.TypeOf((*OvfInvalidValueFault)(nil)).Elem() -} - -type OvfInvalidValueFormatMalformed struct { - OvfInvalidValue -} - -func init() { - t["OvfInvalidValueFormatMalformed"] = reflect.TypeOf((*OvfInvalidValueFormatMalformed)(nil)).Elem() -} - -type OvfInvalidValueFormatMalformedFault OvfInvalidValueFormatMalformed - -func init() { - t["OvfInvalidValueFormatMalformedFault"] = reflect.TypeOf((*OvfInvalidValueFormatMalformedFault)(nil)).Elem() -} - -type OvfInvalidValueReference struct { - OvfInvalidValue -} - -func init() { - t["OvfInvalidValueReference"] = reflect.TypeOf((*OvfInvalidValueReference)(nil)).Elem() -} - -type OvfInvalidValueReferenceFault OvfInvalidValueReference - -func init() { - t["OvfInvalidValueReferenceFault"] = reflect.TypeOf((*OvfInvalidValueReferenceFault)(nil)).Elem() -} - -type OvfInvalidVmName struct { - OvfUnsupportedPackage - - Name string `xml:"name"` -} - -func init() { - t["OvfInvalidVmName"] = reflect.TypeOf((*OvfInvalidVmName)(nil)).Elem() -} - -type OvfInvalidVmNameFault OvfInvalidVmName - -func init() { - t["OvfInvalidVmNameFault"] = reflect.TypeOf((*OvfInvalidVmNameFault)(nil)).Elem() -} - -type OvfManagerCommonParams struct { - DynamicData - - Locale string `xml:"locale"` - DeploymentOption string `xml:"deploymentOption"` - MsgBundle []KeyValue `xml:"msgBundle,omitempty"` - ImportOption []string `xml:"importOption,omitempty"` -} - -func init() { - t["OvfManagerCommonParams"] = reflect.TypeOf((*OvfManagerCommonParams)(nil)).Elem() -} - -type OvfMappedOsId struct { - OvfImport - - OvfId int32 `xml:"ovfId"` - OvfDescription string `xml:"ovfDescription"` - TargetDescription string `xml:"targetDescription"` -} - -func init() { - t["OvfMappedOsId"] = reflect.TypeOf((*OvfMappedOsId)(nil)).Elem() -} - -type OvfMappedOsIdFault OvfMappedOsId - -func init() { - t["OvfMappedOsIdFault"] = reflect.TypeOf((*OvfMappedOsIdFault)(nil)).Elem() -} - -type OvfMissingAttribute struct { - OvfAttribute -} - -func init() { - t["OvfMissingAttribute"] = reflect.TypeOf((*OvfMissingAttribute)(nil)).Elem() -} - -type OvfMissingAttributeFault OvfMissingAttribute - -func init() { - t["OvfMissingAttributeFault"] = reflect.TypeOf((*OvfMissingAttributeFault)(nil)).Elem() -} - -type OvfMissingElement struct { - OvfElement -} - -func init() { - t["OvfMissingElement"] = reflect.TypeOf((*OvfMissingElement)(nil)).Elem() -} - -type OvfMissingElementFault BaseOvfMissingElement - -func init() { - t["OvfMissingElementFault"] = reflect.TypeOf((*OvfMissingElementFault)(nil)).Elem() -} - -type OvfMissingElementNormalBoundary struct { - OvfMissingElement - - Boundary string `xml:"boundary"` -} - -func init() { - t["OvfMissingElementNormalBoundary"] = reflect.TypeOf((*OvfMissingElementNormalBoundary)(nil)).Elem() -} - -type OvfMissingElementNormalBoundaryFault OvfMissingElementNormalBoundary - -func init() { - t["OvfMissingElementNormalBoundaryFault"] = reflect.TypeOf((*OvfMissingElementNormalBoundaryFault)(nil)).Elem() -} - -type OvfMissingHardware struct { - OvfImport - - Name string `xml:"name"` - ResourceType int32 `xml:"resourceType"` -} - -func init() { - t["OvfMissingHardware"] = reflect.TypeOf((*OvfMissingHardware)(nil)).Elem() -} - -type OvfMissingHardwareFault OvfMissingHardware - -func init() { - t["OvfMissingHardwareFault"] = reflect.TypeOf((*OvfMissingHardwareFault)(nil)).Elem() -} - -type OvfNetworkInfo struct { - DynamicData - - Name string `xml:"name"` - Description string `xml:"description"` -} - -func init() { - t["OvfNetworkInfo"] = reflect.TypeOf((*OvfNetworkInfo)(nil)).Elem() -} - -type OvfNetworkMapping struct { - DynamicData - - Name string `xml:"name"` - Network ManagedObjectReference `xml:"network"` -} - -func init() { - t["OvfNetworkMapping"] = reflect.TypeOf((*OvfNetworkMapping)(nil)).Elem() -} - -type OvfNetworkMappingNotSupported struct { - OvfImport -} - -func init() { - t["OvfNetworkMappingNotSupported"] = reflect.TypeOf((*OvfNetworkMappingNotSupported)(nil)).Elem() -} - -type OvfNetworkMappingNotSupportedFault OvfNetworkMappingNotSupported - -func init() { - t["OvfNetworkMappingNotSupportedFault"] = reflect.TypeOf((*OvfNetworkMappingNotSupportedFault)(nil)).Elem() -} - -type OvfNoHostNic struct { - OvfUnsupportedPackage -} - -func init() { - t["OvfNoHostNic"] = reflect.TypeOf((*OvfNoHostNic)(nil)).Elem() -} - -type OvfNoHostNicFault OvfNoHostNic - -func init() { - t["OvfNoHostNicFault"] = reflect.TypeOf((*OvfNoHostNicFault)(nil)).Elem() -} - -type OvfNoSpaceOnController struct { - OvfUnsupportedElement - - Parent string `xml:"parent"` -} - -func init() { - t["OvfNoSpaceOnController"] = reflect.TypeOf((*OvfNoSpaceOnController)(nil)).Elem() -} - -type OvfNoSpaceOnControllerFault OvfNoSpaceOnController - -func init() { - t["OvfNoSpaceOnControllerFault"] = reflect.TypeOf((*OvfNoSpaceOnControllerFault)(nil)).Elem() -} - -type OvfNoSupportedHardwareFamily struct { - OvfUnsupportedPackage - - Version string `xml:"version"` -} - -func init() { - t["OvfNoSupportedHardwareFamily"] = reflect.TypeOf((*OvfNoSupportedHardwareFamily)(nil)).Elem() -} - -type OvfNoSupportedHardwareFamilyFault OvfNoSupportedHardwareFamily - -func init() { - t["OvfNoSupportedHardwareFamilyFault"] = reflect.TypeOf((*OvfNoSupportedHardwareFamilyFault)(nil)).Elem() -} - -type OvfOptionInfo struct { - DynamicData - - Option string `xml:"option"` - Description LocalizableMessage `xml:"description"` -} - -func init() { - t["OvfOptionInfo"] = reflect.TypeOf((*OvfOptionInfo)(nil)).Elem() -} - -type OvfParseDescriptorParams struct { - OvfManagerCommonParams -} - -func init() { - t["OvfParseDescriptorParams"] = reflect.TypeOf((*OvfParseDescriptorParams)(nil)).Elem() -} - -type OvfParseDescriptorResult struct { - DynamicData - - Eula []string `xml:"eula,omitempty"` - Network []OvfNetworkInfo `xml:"network,omitempty"` - IpAllocationScheme []string `xml:"ipAllocationScheme,omitempty"` - IpProtocols []string `xml:"ipProtocols,omitempty"` - Property []VAppPropertyInfo `xml:"property,omitempty"` - ProductInfo *VAppProductInfo `xml:"productInfo,omitempty"` - Annotation string `xml:"annotation"` - ApproximateDownloadSize int64 `xml:"approximateDownloadSize,omitempty"` - ApproximateFlatDeploymentSize int64 `xml:"approximateFlatDeploymentSize,omitempty"` - ApproximateSparseDeploymentSize int64 `xml:"approximateSparseDeploymentSize,omitempty"` - DefaultEntityName string `xml:"defaultEntityName"` - VirtualApp bool `xml:"virtualApp"` - DeploymentOption []OvfDeploymentOption `xml:"deploymentOption,omitempty"` - DefaultDeploymentOption string `xml:"defaultDeploymentOption"` - EntityName []KeyValue `xml:"entityName,omitempty"` - AnnotatedOst *OvfConsumerOstNode `xml:"annotatedOst,omitempty"` - Error []LocalizedMethodFault `xml:"error,omitempty"` - Warning []LocalizedMethodFault `xml:"warning,omitempty"` -} - -func init() { - t["OvfParseDescriptorResult"] = reflect.TypeOf((*OvfParseDescriptorResult)(nil)).Elem() -} - -type OvfProperty struct { - OvfInvalidPackage - - Type string `xml:"type"` - Value string `xml:"value"` -} - -func init() { - t["OvfProperty"] = reflect.TypeOf((*OvfProperty)(nil)).Elem() -} - -type OvfPropertyExport struct { - OvfExport - - Type string `xml:"type"` - Value string `xml:"value"` -} - -func init() { - t["OvfPropertyExport"] = reflect.TypeOf((*OvfPropertyExport)(nil)).Elem() -} - -type OvfPropertyExportFault OvfPropertyExport - -func init() { - t["OvfPropertyExportFault"] = reflect.TypeOf((*OvfPropertyExportFault)(nil)).Elem() -} - -type OvfPropertyFault BaseOvfProperty - -func init() { - t["OvfPropertyFault"] = reflect.TypeOf((*OvfPropertyFault)(nil)).Elem() -} - -type OvfPropertyNetwork struct { - OvfProperty -} - -func init() { - t["OvfPropertyNetwork"] = reflect.TypeOf((*OvfPropertyNetwork)(nil)).Elem() -} - -type OvfPropertyNetworkExport struct { - OvfExport - - Network string `xml:"network"` -} - -func init() { - t["OvfPropertyNetworkExport"] = reflect.TypeOf((*OvfPropertyNetworkExport)(nil)).Elem() -} - -type OvfPropertyNetworkExportFault OvfPropertyNetworkExport - -func init() { - t["OvfPropertyNetworkExportFault"] = reflect.TypeOf((*OvfPropertyNetworkExportFault)(nil)).Elem() -} - -type OvfPropertyNetworkFault OvfPropertyNetwork - -func init() { - t["OvfPropertyNetworkFault"] = reflect.TypeOf((*OvfPropertyNetworkFault)(nil)).Elem() -} - -type OvfPropertyQualifier struct { - OvfProperty - - Qualifier string `xml:"qualifier"` -} - -func init() { - t["OvfPropertyQualifier"] = reflect.TypeOf((*OvfPropertyQualifier)(nil)).Elem() -} - -type OvfPropertyQualifierDuplicate struct { - OvfProperty - - Qualifier string `xml:"qualifier"` -} - -func init() { - t["OvfPropertyQualifierDuplicate"] = reflect.TypeOf((*OvfPropertyQualifierDuplicate)(nil)).Elem() -} - -type OvfPropertyQualifierDuplicateFault OvfPropertyQualifierDuplicate - -func init() { - t["OvfPropertyQualifierDuplicateFault"] = reflect.TypeOf((*OvfPropertyQualifierDuplicateFault)(nil)).Elem() -} - -type OvfPropertyQualifierFault OvfPropertyQualifier - -func init() { - t["OvfPropertyQualifierFault"] = reflect.TypeOf((*OvfPropertyQualifierFault)(nil)).Elem() -} - -type OvfPropertyQualifierIgnored struct { - OvfProperty - - Qualifier string `xml:"qualifier"` -} - -func init() { - t["OvfPropertyQualifierIgnored"] = reflect.TypeOf((*OvfPropertyQualifierIgnored)(nil)).Elem() -} - -type OvfPropertyQualifierIgnoredFault OvfPropertyQualifierIgnored - -func init() { - t["OvfPropertyQualifierIgnoredFault"] = reflect.TypeOf((*OvfPropertyQualifierIgnoredFault)(nil)).Elem() -} - -type OvfPropertyType struct { - OvfProperty -} - -func init() { - t["OvfPropertyType"] = reflect.TypeOf((*OvfPropertyType)(nil)).Elem() -} - -type OvfPropertyTypeFault OvfPropertyType - -func init() { - t["OvfPropertyTypeFault"] = reflect.TypeOf((*OvfPropertyTypeFault)(nil)).Elem() -} - -type OvfPropertyValue struct { - OvfProperty -} - -func init() { - t["OvfPropertyValue"] = reflect.TypeOf((*OvfPropertyValue)(nil)).Elem() -} - -type OvfPropertyValueFault OvfPropertyValue - -func init() { - t["OvfPropertyValueFault"] = reflect.TypeOf((*OvfPropertyValueFault)(nil)).Elem() -} - -type OvfResourceMap struct { - DynamicData - - Source string `xml:"source"` - Parent *ManagedObjectReference `xml:"parent,omitempty"` - ResourceSpec *ResourceConfigSpec `xml:"resourceSpec,omitempty"` - Datastore *ManagedObjectReference `xml:"datastore,omitempty"` -} - -func init() { - t["OvfResourceMap"] = reflect.TypeOf((*OvfResourceMap)(nil)).Elem() -} - -type OvfSystemFault struct { - OvfFault -} - -func init() { - t["OvfSystemFault"] = reflect.TypeOf((*OvfSystemFault)(nil)).Elem() -} - -type OvfSystemFaultFault BaseOvfSystemFault - -func init() { - t["OvfSystemFaultFault"] = reflect.TypeOf((*OvfSystemFaultFault)(nil)).Elem() -} - -type OvfToXmlUnsupportedElement struct { - OvfSystemFault - - Name string `xml:"name,omitempty"` -} - -func init() { - t["OvfToXmlUnsupportedElement"] = reflect.TypeOf((*OvfToXmlUnsupportedElement)(nil)).Elem() -} - -type OvfToXmlUnsupportedElementFault OvfToXmlUnsupportedElement - -func init() { - t["OvfToXmlUnsupportedElementFault"] = reflect.TypeOf((*OvfToXmlUnsupportedElementFault)(nil)).Elem() -} - -type OvfUnableToExportDisk struct { - OvfHardwareExport - - DiskName string `xml:"diskName"` -} - -func init() { - t["OvfUnableToExportDisk"] = reflect.TypeOf((*OvfUnableToExportDisk)(nil)).Elem() -} - -type OvfUnableToExportDiskFault OvfUnableToExportDisk - -func init() { - t["OvfUnableToExportDiskFault"] = reflect.TypeOf((*OvfUnableToExportDiskFault)(nil)).Elem() -} - -type OvfUnexpectedElement struct { - OvfElement -} - -func init() { - t["OvfUnexpectedElement"] = reflect.TypeOf((*OvfUnexpectedElement)(nil)).Elem() -} - -type OvfUnexpectedElementFault OvfUnexpectedElement - -func init() { - t["OvfUnexpectedElementFault"] = reflect.TypeOf((*OvfUnexpectedElementFault)(nil)).Elem() -} - -type OvfUnknownDevice struct { - OvfSystemFault - - Device BaseVirtualDevice `xml:"device,omitempty,typeattr"` - VmName string `xml:"vmName"` -} - -func init() { - t["OvfUnknownDevice"] = reflect.TypeOf((*OvfUnknownDevice)(nil)).Elem() -} - -type OvfUnknownDeviceBacking struct { - OvfHardwareExport - - Backing BaseVirtualDeviceBackingInfo `xml:"backing,typeattr"` -} - -func init() { - t["OvfUnknownDeviceBacking"] = reflect.TypeOf((*OvfUnknownDeviceBacking)(nil)).Elem() -} - -type OvfUnknownDeviceBackingFault OvfUnknownDeviceBacking - -func init() { - t["OvfUnknownDeviceBackingFault"] = reflect.TypeOf((*OvfUnknownDeviceBackingFault)(nil)).Elem() -} - -type OvfUnknownDeviceFault OvfUnknownDevice - -func init() { - t["OvfUnknownDeviceFault"] = reflect.TypeOf((*OvfUnknownDeviceFault)(nil)).Elem() -} - -type OvfUnknownEntity struct { - OvfSystemFault - - LineNumber int32 `xml:"lineNumber"` -} - -func init() { - t["OvfUnknownEntity"] = reflect.TypeOf((*OvfUnknownEntity)(nil)).Elem() -} - -type OvfUnknownEntityFault OvfUnknownEntity - -func init() { - t["OvfUnknownEntityFault"] = reflect.TypeOf((*OvfUnknownEntityFault)(nil)).Elem() -} - -type OvfUnsupportedAttribute struct { - OvfUnsupportedPackage - - ElementName string `xml:"elementName"` - AttributeName string `xml:"attributeName"` -} - -func init() { - t["OvfUnsupportedAttribute"] = reflect.TypeOf((*OvfUnsupportedAttribute)(nil)).Elem() -} - -type OvfUnsupportedAttributeFault BaseOvfUnsupportedAttribute - -func init() { - t["OvfUnsupportedAttributeFault"] = reflect.TypeOf((*OvfUnsupportedAttributeFault)(nil)).Elem() -} - -type OvfUnsupportedAttributeValue struct { - OvfUnsupportedAttribute - - Value string `xml:"value"` -} - -func init() { - t["OvfUnsupportedAttributeValue"] = reflect.TypeOf((*OvfUnsupportedAttributeValue)(nil)).Elem() -} - -type OvfUnsupportedAttributeValueFault OvfUnsupportedAttributeValue - -func init() { - t["OvfUnsupportedAttributeValueFault"] = reflect.TypeOf((*OvfUnsupportedAttributeValueFault)(nil)).Elem() -} - -type OvfUnsupportedDeviceBackingInfo struct { - OvfSystemFault - - ElementName string `xml:"elementName,omitempty"` - InstanceId string `xml:"instanceId,omitempty"` - DeviceName string `xml:"deviceName"` - BackingName string `xml:"backingName,omitempty"` -} - -func init() { - t["OvfUnsupportedDeviceBackingInfo"] = reflect.TypeOf((*OvfUnsupportedDeviceBackingInfo)(nil)).Elem() -} - -type OvfUnsupportedDeviceBackingInfoFault OvfUnsupportedDeviceBackingInfo - -func init() { - t["OvfUnsupportedDeviceBackingInfoFault"] = reflect.TypeOf((*OvfUnsupportedDeviceBackingInfoFault)(nil)).Elem() -} - -type OvfUnsupportedDeviceBackingOption struct { - OvfSystemFault - - ElementName string `xml:"elementName,omitempty"` - InstanceId string `xml:"instanceId,omitempty"` - DeviceName string `xml:"deviceName"` - BackingName string `xml:"backingName,omitempty"` -} - -func init() { - t["OvfUnsupportedDeviceBackingOption"] = reflect.TypeOf((*OvfUnsupportedDeviceBackingOption)(nil)).Elem() -} - -type OvfUnsupportedDeviceBackingOptionFault OvfUnsupportedDeviceBackingOption - -func init() { - t["OvfUnsupportedDeviceBackingOptionFault"] = reflect.TypeOf((*OvfUnsupportedDeviceBackingOptionFault)(nil)).Elem() -} - -type OvfUnsupportedDeviceExport struct { - OvfHardwareExport -} - -func init() { - t["OvfUnsupportedDeviceExport"] = reflect.TypeOf((*OvfUnsupportedDeviceExport)(nil)).Elem() -} - -type OvfUnsupportedDeviceExportFault OvfUnsupportedDeviceExport - -func init() { - t["OvfUnsupportedDeviceExportFault"] = reflect.TypeOf((*OvfUnsupportedDeviceExportFault)(nil)).Elem() -} - -type OvfUnsupportedDiskProvisioning struct { - OvfImport - - DiskProvisioning string `xml:"diskProvisioning"` - SupportedDiskProvisioning string `xml:"supportedDiskProvisioning"` -} - -func init() { - t["OvfUnsupportedDiskProvisioning"] = reflect.TypeOf((*OvfUnsupportedDiskProvisioning)(nil)).Elem() -} - -type OvfUnsupportedDiskProvisioningFault OvfUnsupportedDiskProvisioning - -func init() { - t["OvfUnsupportedDiskProvisioningFault"] = reflect.TypeOf((*OvfUnsupportedDiskProvisioningFault)(nil)).Elem() -} - -type OvfUnsupportedElement struct { - OvfUnsupportedPackage - - Name string `xml:"name"` -} - -func init() { - t["OvfUnsupportedElement"] = reflect.TypeOf((*OvfUnsupportedElement)(nil)).Elem() -} - -type OvfUnsupportedElementFault BaseOvfUnsupportedElement - -func init() { - t["OvfUnsupportedElementFault"] = reflect.TypeOf((*OvfUnsupportedElementFault)(nil)).Elem() -} - -type OvfUnsupportedElementValue struct { - OvfUnsupportedElement - - Value string `xml:"value"` -} - -func init() { - t["OvfUnsupportedElementValue"] = reflect.TypeOf((*OvfUnsupportedElementValue)(nil)).Elem() -} - -type OvfUnsupportedElementValueFault OvfUnsupportedElementValue - -func init() { - t["OvfUnsupportedElementValueFault"] = reflect.TypeOf((*OvfUnsupportedElementValueFault)(nil)).Elem() -} - -type OvfUnsupportedPackage struct { - OvfFault - - LineNumber int32 `xml:"lineNumber,omitempty"` -} - -func init() { - t["OvfUnsupportedPackage"] = reflect.TypeOf((*OvfUnsupportedPackage)(nil)).Elem() -} - -type OvfUnsupportedPackageFault BaseOvfUnsupportedPackage - -func init() { - t["OvfUnsupportedPackageFault"] = reflect.TypeOf((*OvfUnsupportedPackageFault)(nil)).Elem() -} - -type OvfUnsupportedSection struct { - OvfUnsupportedElement - - Info string `xml:"info"` -} - -func init() { - t["OvfUnsupportedSection"] = reflect.TypeOf((*OvfUnsupportedSection)(nil)).Elem() -} - -type OvfUnsupportedSectionFault OvfUnsupportedSection - -func init() { - t["OvfUnsupportedSectionFault"] = reflect.TypeOf((*OvfUnsupportedSectionFault)(nil)).Elem() -} - -type OvfUnsupportedSubType struct { - OvfUnsupportedPackage - - ElementName string `xml:"elementName"` - InstanceId string `xml:"instanceId"` - DeviceType int32 `xml:"deviceType"` - DeviceSubType string `xml:"deviceSubType"` -} - -func init() { - t["OvfUnsupportedSubType"] = reflect.TypeOf((*OvfUnsupportedSubType)(nil)).Elem() -} - -type OvfUnsupportedSubTypeFault OvfUnsupportedSubType - -func init() { - t["OvfUnsupportedSubTypeFault"] = reflect.TypeOf((*OvfUnsupportedSubTypeFault)(nil)).Elem() -} - -type OvfUnsupportedType struct { - OvfUnsupportedPackage - - Name string `xml:"name"` - InstanceId string `xml:"instanceId"` - DeviceType int32 `xml:"deviceType"` -} - -func init() { - t["OvfUnsupportedType"] = reflect.TypeOf((*OvfUnsupportedType)(nil)).Elem() -} - -type OvfUnsupportedTypeFault OvfUnsupportedType - -func init() { - t["OvfUnsupportedTypeFault"] = reflect.TypeOf((*OvfUnsupportedTypeFault)(nil)).Elem() -} - -type OvfValidateHostParams struct { - OvfManagerCommonParams -} - -func init() { - t["OvfValidateHostParams"] = reflect.TypeOf((*OvfValidateHostParams)(nil)).Elem() -} - -type OvfValidateHostResult struct { - DynamicData - - DownloadSize int64 `xml:"downloadSize,omitempty"` - FlatDeploymentSize int64 `xml:"flatDeploymentSize,omitempty"` - SparseDeploymentSize int64 `xml:"sparseDeploymentSize,omitempty"` - Error []LocalizedMethodFault `xml:"error,omitempty"` - Warning []LocalizedMethodFault `xml:"warning,omitempty"` - SupportedDiskProvisioning []string `xml:"supportedDiskProvisioning,omitempty"` -} - -func init() { - t["OvfValidateHostResult"] = reflect.TypeOf((*OvfValidateHostResult)(nil)).Elem() -} - -type OvfWrongElement struct { - OvfElement -} - -func init() { - t["OvfWrongElement"] = reflect.TypeOf((*OvfWrongElement)(nil)).Elem() -} - -type OvfWrongElementFault OvfWrongElement - -func init() { - t["OvfWrongElementFault"] = reflect.TypeOf((*OvfWrongElementFault)(nil)).Elem() -} - -type OvfWrongNamespace struct { - OvfInvalidPackage - - NamespaceName string `xml:"namespaceName"` -} - -func init() { - t["OvfWrongNamespace"] = reflect.TypeOf((*OvfWrongNamespace)(nil)).Elem() -} - -type OvfWrongNamespaceFault OvfWrongNamespace - -func init() { - t["OvfWrongNamespaceFault"] = reflect.TypeOf((*OvfWrongNamespaceFault)(nil)).Elem() -} - -type OvfXmlFormat struct { - OvfInvalidPackage - - Description string `xml:"description"` -} - -func init() { - t["OvfXmlFormat"] = reflect.TypeOf((*OvfXmlFormat)(nil)).Elem() -} - -type OvfXmlFormatFault OvfXmlFormat - -func init() { - t["OvfXmlFormatFault"] = reflect.TypeOf((*OvfXmlFormatFault)(nil)).Elem() -} - -type ParaVirtualSCSIController struct { - VirtualSCSIController -} - -func init() { - t["ParaVirtualSCSIController"] = reflect.TypeOf((*ParaVirtualSCSIController)(nil)).Elem() -} - -type ParaVirtualSCSIControllerOption struct { - VirtualSCSIControllerOption -} - -func init() { - t["ParaVirtualSCSIControllerOption"] = reflect.TypeOf((*ParaVirtualSCSIControllerOption)(nil)).Elem() -} - -type ParseDescriptor ParseDescriptorRequestType - -func init() { - t["ParseDescriptor"] = reflect.TypeOf((*ParseDescriptor)(nil)).Elem() -} - -type ParseDescriptorRequestType struct { - This ManagedObjectReference `xml:"_this"` - OvfDescriptor string `xml:"ovfDescriptor"` - Pdp OvfParseDescriptorParams `xml:"pdp"` -} - -func init() { - t["ParseDescriptorRequestType"] = reflect.TypeOf((*ParseDescriptorRequestType)(nil)).Elem() -} - -type ParseDescriptorResponse struct { - Returnval OvfParseDescriptorResult `xml:"returnval"` -} - -type PasswordField struct { - DynamicData - - Value string `xml:"value"` -} - -func init() { - t["PasswordField"] = reflect.TypeOf((*PasswordField)(nil)).Elem() -} - -type PatchAlreadyInstalled struct { - PatchNotApplicable -} - -func init() { - t["PatchAlreadyInstalled"] = reflect.TypeOf((*PatchAlreadyInstalled)(nil)).Elem() -} - -type PatchAlreadyInstalledFault PatchAlreadyInstalled - -func init() { - t["PatchAlreadyInstalledFault"] = reflect.TypeOf((*PatchAlreadyInstalledFault)(nil)).Elem() -} - -type PatchBinariesNotFound struct { - VimFault - - PatchID string `xml:"patchID"` - Binary []string `xml:"binary,omitempty"` -} - -func init() { - t["PatchBinariesNotFound"] = reflect.TypeOf((*PatchBinariesNotFound)(nil)).Elem() -} - -type PatchBinariesNotFoundFault PatchBinariesNotFound - -func init() { - t["PatchBinariesNotFoundFault"] = reflect.TypeOf((*PatchBinariesNotFoundFault)(nil)).Elem() -} - -type PatchInstallFailed struct { - PlatformConfigFault - - RolledBack bool `xml:"rolledBack"` -} - -func init() { - t["PatchInstallFailed"] = reflect.TypeOf((*PatchInstallFailed)(nil)).Elem() -} - -type PatchInstallFailedFault PatchInstallFailed - -func init() { - t["PatchInstallFailedFault"] = reflect.TypeOf((*PatchInstallFailedFault)(nil)).Elem() -} - -type PatchIntegrityError struct { - PlatformConfigFault -} - -func init() { - t["PatchIntegrityError"] = reflect.TypeOf((*PatchIntegrityError)(nil)).Elem() -} - -type PatchIntegrityErrorFault PatchIntegrityError - -func init() { - t["PatchIntegrityErrorFault"] = reflect.TypeOf((*PatchIntegrityErrorFault)(nil)).Elem() -} - -type PatchMetadataCorrupted struct { - PatchMetadataInvalid -} - -func init() { - t["PatchMetadataCorrupted"] = reflect.TypeOf((*PatchMetadataCorrupted)(nil)).Elem() -} - -type PatchMetadataCorruptedFault PatchMetadataCorrupted - -func init() { - t["PatchMetadataCorruptedFault"] = reflect.TypeOf((*PatchMetadataCorruptedFault)(nil)).Elem() -} - -type PatchMetadataInvalid struct { - VimFault - - PatchID string `xml:"patchID"` - MetaData []string `xml:"metaData,omitempty"` -} - -func init() { - t["PatchMetadataInvalid"] = reflect.TypeOf((*PatchMetadataInvalid)(nil)).Elem() -} - -type PatchMetadataInvalidFault BasePatchMetadataInvalid - -func init() { - t["PatchMetadataInvalidFault"] = reflect.TypeOf((*PatchMetadataInvalidFault)(nil)).Elem() -} - -type PatchMetadataNotFound struct { - PatchMetadataInvalid -} - -func init() { - t["PatchMetadataNotFound"] = reflect.TypeOf((*PatchMetadataNotFound)(nil)).Elem() -} - -type PatchMetadataNotFoundFault PatchMetadataNotFound - -func init() { - t["PatchMetadataNotFoundFault"] = reflect.TypeOf((*PatchMetadataNotFoundFault)(nil)).Elem() -} - -type PatchMissingDependencies struct { - PatchNotApplicable - - PrerequisitePatch []string `xml:"prerequisitePatch,omitempty"` - PrerequisiteLib []string `xml:"prerequisiteLib,omitempty"` -} - -func init() { - t["PatchMissingDependencies"] = reflect.TypeOf((*PatchMissingDependencies)(nil)).Elem() -} - -type PatchMissingDependenciesFault PatchMissingDependencies - -func init() { - t["PatchMissingDependenciesFault"] = reflect.TypeOf((*PatchMissingDependenciesFault)(nil)).Elem() -} - -type PatchNotApplicable struct { - VimFault - - PatchID string `xml:"patchID"` -} - -func init() { - t["PatchNotApplicable"] = reflect.TypeOf((*PatchNotApplicable)(nil)).Elem() -} - -type PatchNotApplicableFault BasePatchNotApplicable - -func init() { - t["PatchNotApplicableFault"] = reflect.TypeOf((*PatchNotApplicableFault)(nil)).Elem() -} - -type PatchSuperseded struct { - PatchNotApplicable - - Supersede []string `xml:"supersede,omitempty"` -} - -func init() { - t["PatchSuperseded"] = reflect.TypeOf((*PatchSuperseded)(nil)).Elem() -} - -type PatchSupersededFault PatchSuperseded - -func init() { - t["PatchSupersededFault"] = reflect.TypeOf((*PatchSupersededFault)(nil)).Elem() -} - -type PerfCompositeMetric struct { - DynamicData - - Entity BasePerfEntityMetricBase `xml:"entity,omitempty,typeattr"` - ChildEntity []BasePerfEntityMetricBase `xml:"childEntity,omitempty,typeattr"` -} - -func init() { - t["PerfCompositeMetric"] = reflect.TypeOf((*PerfCompositeMetric)(nil)).Elem() -} - -type PerfCounterInfo struct { - DynamicData - - Key int32 `xml:"key"` - NameInfo BaseElementDescription `xml:"nameInfo,typeattr"` - GroupInfo BaseElementDescription `xml:"groupInfo,typeattr"` - UnitInfo BaseElementDescription `xml:"unitInfo,typeattr"` - RollupType PerfSummaryType `xml:"rollupType"` - StatsType PerfStatsType `xml:"statsType"` - Level int32 `xml:"level,omitempty"` - PerDeviceLevel int32 `xml:"perDeviceLevel,omitempty"` - AssociatedCounterId []int32 `xml:"associatedCounterId,omitempty"` -} - -func init() { - t["PerfCounterInfo"] = reflect.TypeOf((*PerfCounterInfo)(nil)).Elem() -} - -type PerfEntityMetric struct { - PerfEntityMetricBase - - SampleInfo []PerfSampleInfo `xml:"sampleInfo,omitempty"` - Value []BasePerfMetricSeries `xml:"value,omitempty,typeattr"` -} - -func init() { - t["PerfEntityMetric"] = reflect.TypeOf((*PerfEntityMetric)(nil)).Elem() -} - -type PerfEntityMetricBase struct { - DynamicData - - Entity ManagedObjectReference `xml:"entity"` -} - -func init() { - t["PerfEntityMetricBase"] = reflect.TypeOf((*PerfEntityMetricBase)(nil)).Elem() -} - -type PerfEntityMetricCSV struct { - PerfEntityMetricBase - - SampleInfoCSV string `xml:"sampleInfoCSV"` - Value []PerfMetricSeriesCSV `xml:"value,omitempty"` -} - -func init() { - t["PerfEntityMetricCSV"] = reflect.TypeOf((*PerfEntityMetricCSV)(nil)).Elem() -} - -type PerfInterval struct { - DynamicData - - Key int32 `xml:"key"` - SamplingPeriod int32 `xml:"samplingPeriod"` - Name string `xml:"name"` - Length int32 `xml:"length"` - Level int32 `xml:"level,omitempty"` - Enabled bool `xml:"enabled"` -} - -func init() { - t["PerfInterval"] = reflect.TypeOf((*PerfInterval)(nil)).Elem() -} - -type PerfMetricId struct { - DynamicData - - CounterId int32 `xml:"counterId"` - Instance string `xml:"instance"` -} - -func init() { - t["PerfMetricId"] = reflect.TypeOf((*PerfMetricId)(nil)).Elem() -} - -type PerfMetricIntSeries struct { - PerfMetricSeries - - Value []int64 `xml:"value,omitempty"` -} - -func init() { - t["PerfMetricIntSeries"] = reflect.TypeOf((*PerfMetricIntSeries)(nil)).Elem() -} - -type PerfMetricSeries struct { - DynamicData - - Id PerfMetricId `xml:"id"` -} - -func init() { - t["PerfMetricSeries"] = reflect.TypeOf((*PerfMetricSeries)(nil)).Elem() -} - -type PerfMetricSeriesCSV struct { - PerfMetricSeries - - Value string `xml:"value,omitempty"` -} - -func init() { - t["PerfMetricSeriesCSV"] = reflect.TypeOf((*PerfMetricSeriesCSV)(nil)).Elem() -} - -type PerfProviderSummary struct { - DynamicData - - Entity ManagedObjectReference `xml:"entity"` - CurrentSupported bool `xml:"currentSupported"` - SummarySupported bool `xml:"summarySupported"` - RefreshRate int32 `xml:"refreshRate,omitempty"` -} - -func init() { - t["PerfProviderSummary"] = reflect.TypeOf((*PerfProviderSummary)(nil)).Elem() -} - -type PerfQuerySpec struct { - DynamicData - - Entity ManagedObjectReference `xml:"entity"` - StartTime *time.Time `xml:"startTime"` - EndTime *time.Time `xml:"endTime"` - MaxSample int32 `xml:"maxSample,omitempty"` - MetricId []PerfMetricId `xml:"metricId,omitempty"` - IntervalId int32 `xml:"intervalId,omitempty"` - Format string `xml:"format,omitempty"` -} - -func init() { - t["PerfQuerySpec"] = reflect.TypeOf((*PerfQuerySpec)(nil)).Elem() -} - -type PerfSampleInfo struct { - DynamicData - - Timestamp time.Time `xml:"timestamp"` - Interval int32 `xml:"interval"` -} - -func init() { - t["PerfSampleInfo"] = reflect.TypeOf((*PerfSampleInfo)(nil)).Elem() -} - -type PerformDvsProductSpecOperationRequestType struct { - This ManagedObjectReference `xml:"_this"` - Operation string `xml:"operation"` - ProductSpec *DistributedVirtualSwitchProductSpec `xml:"productSpec,omitempty"` -} - -func init() { - t["PerformDvsProductSpecOperationRequestType"] = reflect.TypeOf((*PerformDvsProductSpecOperationRequestType)(nil)).Elem() -} - -type PerformDvsProductSpecOperation_Task PerformDvsProductSpecOperationRequestType - -func init() { - t["PerformDvsProductSpecOperation_Task"] = reflect.TypeOf((*PerformDvsProductSpecOperation_Task)(nil)).Elem() -} - -type PerformDvsProductSpecOperation_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type PerformVsanUpgradePreflightCheck PerformVsanUpgradePreflightCheckRequestType - -func init() { - t["PerformVsanUpgradePreflightCheck"] = reflect.TypeOf((*PerformVsanUpgradePreflightCheck)(nil)).Elem() -} - -type PerformVsanUpgradePreflightCheckRequestType struct { - This ManagedObjectReference `xml:"_this"` - Cluster ManagedObjectReference `xml:"cluster"` - DowngradeFormat *bool `xml:"downgradeFormat"` -} - -func init() { - t["PerformVsanUpgradePreflightCheckRequestType"] = reflect.TypeOf((*PerformVsanUpgradePreflightCheckRequestType)(nil)).Elem() -} - -type PerformVsanUpgradePreflightCheckResponse struct { - Returnval VsanUpgradeSystemPreflightCheckResult `xml:"returnval"` -} - -type PerformVsanUpgradeRequestType struct { - This ManagedObjectReference `xml:"_this"` - Cluster ManagedObjectReference `xml:"cluster"` - PerformObjectUpgrade *bool `xml:"performObjectUpgrade"` - DowngradeFormat *bool `xml:"downgradeFormat"` - AllowReducedRedundancy *bool `xml:"allowReducedRedundancy"` - ExcludeHosts []ManagedObjectReference `xml:"excludeHosts,omitempty"` -} - -func init() { - t["PerformVsanUpgradeRequestType"] = reflect.TypeOf((*PerformVsanUpgradeRequestType)(nil)).Elem() -} - -type PerformVsanUpgrade_Task PerformVsanUpgradeRequestType - -func init() { - t["PerformVsanUpgrade_Task"] = reflect.TypeOf((*PerformVsanUpgrade_Task)(nil)).Elem() -} - -type PerformVsanUpgrade_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type PerformanceDescription struct { - DynamicData - - CounterType []BaseElementDescription `xml:"counterType,typeattr"` - StatsType []BaseElementDescription `xml:"statsType,typeattr"` -} - -func init() { - t["PerformanceDescription"] = reflect.TypeOf((*PerformanceDescription)(nil)).Elem() -} - -type PerformanceManagerCounterLevelMapping struct { - DynamicData - - CounterId int32 `xml:"counterId"` - AggregateLevel int32 `xml:"aggregateLevel,omitempty"` - PerDeviceLevel int32 `xml:"perDeviceLevel,omitempty"` -} - -func init() { - t["PerformanceManagerCounterLevelMapping"] = reflect.TypeOf((*PerformanceManagerCounterLevelMapping)(nil)).Elem() -} - -type PerformanceStatisticsDescription struct { - DynamicData - - Intervals []PerfInterval `xml:"intervals,omitempty"` -} - -func init() { - t["PerformanceStatisticsDescription"] = reflect.TypeOf((*PerformanceStatisticsDescription)(nil)).Elem() -} - -type Permission struct { - DynamicData - - Entity *ManagedObjectReference `xml:"entity,omitempty"` - Principal string `xml:"principal"` - Group bool `xml:"group"` - RoleId int32 `xml:"roleId"` - Propagate bool `xml:"propagate"` -} - -func init() { - t["Permission"] = reflect.TypeOf((*Permission)(nil)).Elem() -} - -type PermissionAddedEvent struct { - PermissionEvent - - Role RoleEventArgument `xml:"role"` - Propagate bool `xml:"propagate"` -} - -func init() { - t["PermissionAddedEvent"] = reflect.TypeOf((*PermissionAddedEvent)(nil)).Elem() -} - -type PermissionEvent struct { - AuthorizationEvent - - Entity ManagedEntityEventArgument `xml:"entity"` - Principal string `xml:"principal"` - Group bool `xml:"group"` -} - -func init() { - t["PermissionEvent"] = reflect.TypeOf((*PermissionEvent)(nil)).Elem() -} - -type PermissionProfile struct { - ApplyProfile - - Key string `xml:"key"` -} - -func init() { - t["PermissionProfile"] = reflect.TypeOf((*PermissionProfile)(nil)).Elem() -} - -type PermissionRemovedEvent struct { - PermissionEvent -} - -func init() { - t["PermissionRemovedEvent"] = reflect.TypeOf((*PermissionRemovedEvent)(nil)).Elem() -} - -type PermissionUpdatedEvent struct { - PermissionEvent - - Role RoleEventArgument `xml:"role"` - Propagate bool `xml:"propagate"` -} - -func init() { - t["PermissionUpdatedEvent"] = reflect.TypeOf((*PermissionUpdatedEvent)(nil)).Elem() -} - -type PhysCompatRDMNotSupported struct { - RDMNotSupported -} - -func init() { - t["PhysCompatRDMNotSupported"] = reflect.TypeOf((*PhysCompatRDMNotSupported)(nil)).Elem() -} - -type PhysCompatRDMNotSupportedFault PhysCompatRDMNotSupported - -func init() { - t["PhysCompatRDMNotSupportedFault"] = reflect.TypeOf((*PhysCompatRDMNotSupportedFault)(nil)).Elem() -} - -type PhysicalNic struct { - DynamicData - - Key string `xml:"key,omitempty"` - Device string `xml:"device"` - Pci string `xml:"pci"` - Driver string `xml:"driver,omitempty"` - LinkSpeed *PhysicalNicLinkInfo `xml:"linkSpeed,omitempty"` - ValidLinkSpecification []PhysicalNicLinkInfo `xml:"validLinkSpecification,omitempty"` - Spec PhysicalNicSpec `xml:"spec"` - WakeOnLanSupported bool `xml:"wakeOnLanSupported"` - Mac string `xml:"mac"` - FcoeConfiguration *FcoeConfig `xml:"fcoeConfiguration,omitempty"` - VmDirectPathGen2Supported *bool `xml:"vmDirectPathGen2Supported"` - VmDirectPathGen2SupportedMode string `xml:"vmDirectPathGen2SupportedMode,omitempty"` - ResourcePoolSchedulerAllowed *bool `xml:"resourcePoolSchedulerAllowed"` - ResourcePoolSchedulerDisallowedReason []string `xml:"resourcePoolSchedulerDisallowedReason,omitempty"` - AutoNegotiateSupported *bool `xml:"autoNegotiateSupported"` -} - -func init() { - t["PhysicalNic"] = reflect.TypeOf((*PhysicalNic)(nil)).Elem() -} - -type PhysicalNicCdpDeviceCapability struct { - DynamicData - - Router bool `xml:"router"` - TransparentBridge bool `xml:"transparentBridge"` - SourceRouteBridge bool `xml:"sourceRouteBridge"` - NetworkSwitch bool `xml:"networkSwitch"` - Host bool `xml:"host"` - IgmpEnabled bool `xml:"igmpEnabled"` - Repeater bool `xml:"repeater"` -} - -func init() { - t["PhysicalNicCdpDeviceCapability"] = reflect.TypeOf((*PhysicalNicCdpDeviceCapability)(nil)).Elem() -} - -type PhysicalNicCdpInfo struct { - DynamicData - - CdpVersion int32 `xml:"cdpVersion,omitempty"` - Timeout int32 `xml:"timeout,omitempty"` - Ttl int32 `xml:"ttl,omitempty"` - Samples int32 `xml:"samples,omitempty"` - DevId string `xml:"devId,omitempty"` - Address string `xml:"address,omitempty"` - PortId string `xml:"portId,omitempty"` - DeviceCapability *PhysicalNicCdpDeviceCapability `xml:"deviceCapability,omitempty"` - SoftwareVersion string `xml:"softwareVersion,omitempty"` - HardwarePlatform string `xml:"hardwarePlatform,omitempty"` - IpPrefix string `xml:"ipPrefix,omitempty"` - IpPrefixLen int32 `xml:"ipPrefixLen,omitempty"` - Vlan int32 `xml:"vlan,omitempty"` - FullDuplex *bool `xml:"fullDuplex"` - Mtu int32 `xml:"mtu,omitempty"` - SystemName string `xml:"systemName,omitempty"` - SystemOID string `xml:"systemOID,omitempty"` - MgmtAddr string `xml:"mgmtAddr,omitempty"` - Location string `xml:"location,omitempty"` -} - -func init() { - t["PhysicalNicCdpInfo"] = reflect.TypeOf((*PhysicalNicCdpInfo)(nil)).Elem() -} - -type PhysicalNicConfig struct { - DynamicData - - Device string `xml:"device"` - Spec PhysicalNicSpec `xml:"spec"` -} - -func init() { - t["PhysicalNicConfig"] = reflect.TypeOf((*PhysicalNicConfig)(nil)).Elem() -} - -type PhysicalNicHint struct { - DynamicData - - VlanId int32 `xml:"vlanId,omitempty"` -} - -func init() { - t["PhysicalNicHint"] = reflect.TypeOf((*PhysicalNicHint)(nil)).Elem() -} - -type PhysicalNicHintInfo struct { - DynamicData - - Device string `xml:"device"` - Subnet []PhysicalNicIpHint `xml:"subnet,omitempty"` - Network []PhysicalNicNameHint `xml:"network,omitempty"` - ConnectedSwitchPort *PhysicalNicCdpInfo `xml:"connectedSwitchPort,omitempty"` - LldpInfo *LinkLayerDiscoveryProtocolInfo `xml:"lldpInfo,omitempty"` -} - -func init() { - t["PhysicalNicHintInfo"] = reflect.TypeOf((*PhysicalNicHintInfo)(nil)).Elem() -} - -type PhysicalNicIpHint struct { - PhysicalNicHint - - IpSubnet string `xml:"ipSubnet"` -} - -func init() { - t["PhysicalNicIpHint"] = reflect.TypeOf((*PhysicalNicIpHint)(nil)).Elem() -} - -type PhysicalNicLinkInfo struct { - DynamicData - - SpeedMb int32 `xml:"speedMb"` - Duplex bool `xml:"duplex"` -} - -func init() { - t["PhysicalNicLinkInfo"] = reflect.TypeOf((*PhysicalNicLinkInfo)(nil)).Elem() -} - -type PhysicalNicNameHint struct { - PhysicalNicHint - - Network string `xml:"network"` -} - -func init() { - t["PhysicalNicNameHint"] = reflect.TypeOf((*PhysicalNicNameHint)(nil)).Elem() -} - -type PhysicalNicProfile struct { - ApplyProfile - - Key string `xml:"key"` -} - -func init() { - t["PhysicalNicProfile"] = reflect.TypeOf((*PhysicalNicProfile)(nil)).Elem() -} - -type PhysicalNicSpec struct { - DynamicData - - Ip *HostIpConfig `xml:"ip,omitempty"` - LinkSpeed *PhysicalNicLinkInfo `xml:"linkSpeed,omitempty"` -} - -func init() { - t["PhysicalNicSpec"] = reflect.TypeOf((*PhysicalNicSpec)(nil)).Elem() -} - -type PlaceVm PlaceVmRequestType - -func init() { - t["PlaceVm"] = reflect.TypeOf((*PlaceVm)(nil)).Elem() -} - -type PlaceVmRequestType struct { - This ManagedObjectReference `xml:"_this"` - PlacementSpec PlacementSpec `xml:"placementSpec"` -} - -func init() { - t["PlaceVmRequestType"] = reflect.TypeOf((*PlaceVmRequestType)(nil)).Elem() -} - -type PlaceVmResponse struct { - Returnval PlacementResult `xml:"returnval"` -} - -type PlacementAction struct { - ClusterAction - - Vm *ManagedObjectReference `xml:"vm,omitempty"` - TargetHost *ManagedObjectReference `xml:"targetHost,omitempty"` - RelocateSpec *VirtualMachineRelocateSpec `xml:"relocateSpec,omitempty"` -} - -func init() { - t["PlacementAction"] = reflect.TypeOf((*PlacementAction)(nil)).Elem() -} - -type PlacementAffinityRule struct { - DynamicData - - RuleType string `xml:"ruleType"` - RuleScope string `xml:"ruleScope"` - Vms []ManagedObjectReference `xml:"vms,omitempty"` - Keys []string `xml:"keys,omitempty"` -} - -func init() { - t["PlacementAffinityRule"] = reflect.TypeOf((*PlacementAffinityRule)(nil)).Elem() -} - -type PlacementRankResult struct { - DynamicData - - Key string `xml:"key"` - Candidate ManagedObjectReference `xml:"candidate"` - ReservedSpaceMB int64 `xml:"reservedSpaceMB"` - UsedSpaceMB int64 `xml:"usedSpaceMB"` - TotalSpaceMB int64 `xml:"totalSpaceMB"` - Utilization float64 `xml:"utilization"` - Faults []LocalizedMethodFault `xml:"faults,omitempty"` -} - -func init() { - t["PlacementRankResult"] = reflect.TypeOf((*PlacementRankResult)(nil)).Elem() -} - -type PlacementRankSpec struct { - DynamicData - - Specs []PlacementSpec `xml:"specs"` - Clusters []ManagedObjectReference `xml:"clusters"` - Rules []PlacementAffinityRule `xml:"rules,omitempty"` - PlacementRankByVm []StorageDrsPlacementRankVmSpec `xml:"placementRankByVm,omitempty"` -} - -func init() { - t["PlacementRankSpec"] = reflect.TypeOf((*PlacementRankSpec)(nil)).Elem() -} - -type PlacementResult struct { - DynamicData - - Recommendations []ClusterRecommendation `xml:"recommendations,omitempty"` - DrsFault *ClusterDrsFaults `xml:"drsFault,omitempty"` -} - -func init() { - t["PlacementResult"] = reflect.TypeOf((*PlacementResult)(nil)).Elem() -} - -type PlacementSpec struct { - DynamicData - - Priority VirtualMachineMovePriority `xml:"priority,omitempty"` - Vm *ManagedObjectReference `xml:"vm,omitempty"` - ConfigSpec *VirtualMachineConfigSpec `xml:"configSpec,omitempty"` - RelocateSpec *VirtualMachineRelocateSpec `xml:"relocateSpec,omitempty"` - Hosts []ManagedObjectReference `xml:"hosts,omitempty"` - Datastores []ManagedObjectReference `xml:"datastores,omitempty"` - StoragePods []ManagedObjectReference `xml:"storagePods,omitempty"` - DisallowPrerequisiteMoves *bool `xml:"disallowPrerequisiteMoves"` - Rules []BaseClusterRuleInfo `xml:"rules,omitempty,typeattr"` - Key string `xml:"key,omitempty"` - PlacementType string `xml:"placementType,omitempty"` - CloneSpec *VirtualMachineCloneSpec `xml:"cloneSpec,omitempty"` - CloneName string `xml:"cloneName,omitempty"` -} - -func init() { - t["PlacementSpec"] = reflect.TypeOf((*PlacementSpec)(nil)).Elem() -} - -type PlatformConfigFault struct { - HostConfigFault - - Text string `xml:"text"` -} - -func init() { - t["PlatformConfigFault"] = reflect.TypeOf((*PlatformConfigFault)(nil)).Elem() -} - -type PlatformConfigFaultFault BasePlatformConfigFault - -func init() { - t["PlatformConfigFaultFault"] = reflect.TypeOf((*PlatformConfigFaultFault)(nil)).Elem() -} - -type PnicUplinkProfile struct { - ApplyProfile - - Key string `xml:"key"` -} - -func init() { - t["PnicUplinkProfile"] = reflect.TypeOf((*PnicUplinkProfile)(nil)).Elem() -} - -type PodDiskLocator struct { - DynamicData - - DiskId int32 `xml:"diskId"` - DiskMoveType string `xml:"diskMoveType,omitempty"` - DiskBackingInfo BaseVirtualDeviceBackingInfo `xml:"diskBackingInfo,omitempty,typeattr"` - Profile []BaseVirtualMachineProfileSpec `xml:"profile,omitempty,typeattr"` -} - -func init() { - t["PodDiskLocator"] = reflect.TypeOf((*PodDiskLocator)(nil)).Elem() -} - -type PodStorageDrsEntry struct { - DynamicData - - StorageDrsConfig StorageDrsConfigInfo `xml:"storageDrsConfig"` - Recommendation []ClusterRecommendation `xml:"recommendation,omitempty"` - DrsFault []ClusterDrsFaults `xml:"drsFault,omitempty"` - ActionHistory []ClusterActionHistory `xml:"actionHistory,omitempty"` -} - -func init() { - t["PodStorageDrsEntry"] = reflect.TypeOf((*PodStorageDrsEntry)(nil)).Elem() -} - -type PolicyOption struct { - DynamicData - - Id string `xml:"id"` - Parameter []KeyAnyValue `xml:"parameter,omitempty"` -} - -func init() { - t["PolicyOption"] = reflect.TypeOf((*PolicyOption)(nil)).Elem() -} - -type PortGroupProfile struct { - ApplyProfile - - Key string `xml:"key"` - Name string `xml:"name"` - Vlan VlanProfile `xml:"vlan"` - Vswitch VirtualSwitchSelectionProfile `xml:"vswitch"` - NetworkPolicy NetworkPolicyProfile `xml:"networkPolicy"` -} - -func init() { - t["PortGroupProfile"] = reflect.TypeOf((*PortGroupProfile)(nil)).Elem() -} - -type PosixUserSearchResult struct { - UserSearchResult - - Id int32 `xml:"id"` - ShellAccess *bool `xml:"shellAccess"` -} - -func init() { - t["PosixUserSearchResult"] = reflect.TypeOf((*PosixUserSearchResult)(nil)).Elem() -} - -type PostEvent PostEventRequestType - -func init() { - t["PostEvent"] = reflect.TypeOf((*PostEvent)(nil)).Elem() -} - -type PostEventRequestType struct { - This ManagedObjectReference `xml:"_this"` - EventToPost BaseEvent `xml:"eventToPost,typeattr"` - TaskInfo *TaskInfo `xml:"taskInfo,omitempty"` -} - -func init() { - t["PostEventRequestType"] = reflect.TypeOf((*PostEventRequestType)(nil)).Elem() -} - -type PostEventResponse struct { -} - -type PowerDownHostToStandByRequestType struct { - This ManagedObjectReference `xml:"_this"` - TimeoutSec int32 `xml:"timeoutSec"` - EvacuatePoweredOffVms *bool `xml:"evacuatePoweredOffVms"` -} - -func init() { - t["PowerDownHostToStandByRequestType"] = reflect.TypeOf((*PowerDownHostToStandByRequestType)(nil)).Elem() -} - -type PowerDownHostToStandBy_Task PowerDownHostToStandByRequestType - -func init() { - t["PowerDownHostToStandBy_Task"] = reflect.TypeOf((*PowerDownHostToStandBy_Task)(nil)).Elem() -} - -type PowerDownHostToStandBy_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type PowerOffVAppRequestType struct { - This ManagedObjectReference `xml:"_this"` - Force bool `xml:"force"` -} - -func init() { - t["PowerOffVAppRequestType"] = reflect.TypeOf((*PowerOffVAppRequestType)(nil)).Elem() -} - -type PowerOffVApp_Task PowerOffVAppRequestType - -func init() { - t["PowerOffVApp_Task"] = reflect.TypeOf((*PowerOffVApp_Task)(nil)).Elem() -} - -type PowerOffVApp_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type PowerOffVMRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["PowerOffVMRequestType"] = reflect.TypeOf((*PowerOffVMRequestType)(nil)).Elem() -} - -type PowerOffVM_Task PowerOffVMRequestType - -func init() { - t["PowerOffVM_Task"] = reflect.TypeOf((*PowerOffVM_Task)(nil)).Elem() -} - -type PowerOffVM_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type PowerOnFtSecondaryFailed struct { - VmFaultToleranceIssue - - Vm ManagedObjectReference `xml:"vm"` - VmName string `xml:"vmName"` - HostSelectionBy FtIssuesOnHostHostSelectionType `xml:"hostSelectionBy"` - HostErrors []LocalizedMethodFault `xml:"hostErrors,omitempty"` - RootCause LocalizedMethodFault `xml:"rootCause"` -} - -func init() { - t["PowerOnFtSecondaryFailed"] = reflect.TypeOf((*PowerOnFtSecondaryFailed)(nil)).Elem() -} - -type PowerOnFtSecondaryFailedFault PowerOnFtSecondaryFailed - -func init() { - t["PowerOnFtSecondaryFailedFault"] = reflect.TypeOf((*PowerOnFtSecondaryFailedFault)(nil)).Elem() -} - -type PowerOnFtSecondaryTimedout struct { - Timedout - - Vm ManagedObjectReference `xml:"vm"` - VmName string `xml:"vmName"` - Timeout int32 `xml:"timeout"` -} - -func init() { - t["PowerOnFtSecondaryTimedout"] = reflect.TypeOf((*PowerOnFtSecondaryTimedout)(nil)).Elem() -} - -type PowerOnFtSecondaryTimedoutFault PowerOnFtSecondaryTimedout - -func init() { - t["PowerOnFtSecondaryTimedoutFault"] = reflect.TypeOf((*PowerOnFtSecondaryTimedoutFault)(nil)).Elem() -} - -type PowerOnMultiVMRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm []ManagedObjectReference `xml:"vm"` - Option []BaseOptionValue `xml:"option,omitempty,typeattr"` -} - -func init() { - t["PowerOnMultiVMRequestType"] = reflect.TypeOf((*PowerOnMultiVMRequestType)(nil)).Elem() -} - -type PowerOnMultiVM_Task PowerOnMultiVMRequestType - -func init() { - t["PowerOnMultiVM_Task"] = reflect.TypeOf((*PowerOnMultiVM_Task)(nil)).Elem() -} - -type PowerOnMultiVM_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type PowerOnVAppRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["PowerOnVAppRequestType"] = reflect.TypeOf((*PowerOnVAppRequestType)(nil)).Elem() -} - -type PowerOnVApp_Task PowerOnVAppRequestType - -func init() { - t["PowerOnVApp_Task"] = reflect.TypeOf((*PowerOnVApp_Task)(nil)).Elem() -} - -type PowerOnVApp_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type PowerOnVMRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host *ManagedObjectReference `xml:"host,omitempty"` -} - -func init() { - t["PowerOnVMRequestType"] = reflect.TypeOf((*PowerOnVMRequestType)(nil)).Elem() -} - -type PowerOnVM_Task PowerOnVMRequestType - -func init() { - t["PowerOnVM_Task"] = reflect.TypeOf((*PowerOnVM_Task)(nil)).Elem() -} - -type PowerOnVM_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type PowerSystemCapability struct { - DynamicData - - AvailablePolicy []HostPowerPolicy `xml:"availablePolicy"` -} - -func init() { - t["PowerSystemCapability"] = reflect.TypeOf((*PowerSystemCapability)(nil)).Elem() -} - -type PowerSystemInfo struct { - DynamicData - - CurrentPolicy HostPowerPolicy `xml:"currentPolicy"` -} - -func init() { - t["PowerSystemInfo"] = reflect.TypeOf((*PowerSystemInfo)(nil)).Elem() -} - -type PowerUpHostFromStandByRequestType struct { - This ManagedObjectReference `xml:"_this"` - TimeoutSec int32 `xml:"timeoutSec"` -} - -func init() { - t["PowerUpHostFromStandByRequestType"] = reflect.TypeOf((*PowerUpHostFromStandByRequestType)(nil)).Elem() -} - -type PowerUpHostFromStandBy_Task PowerUpHostFromStandByRequestType - -func init() { - t["PowerUpHostFromStandBy_Task"] = reflect.TypeOf((*PowerUpHostFromStandBy_Task)(nil)).Elem() -} - -type PowerUpHostFromStandBy_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type PrivilegeAvailability struct { - DynamicData - - PrivId string `xml:"privId"` - IsGranted bool `xml:"isGranted"` -} - -func init() { - t["PrivilegeAvailability"] = reflect.TypeOf((*PrivilegeAvailability)(nil)).Elem() -} - -type PrivilegePolicyDef struct { - DynamicData - - CreatePrivilege string `xml:"createPrivilege"` - ReadPrivilege string `xml:"readPrivilege"` - UpdatePrivilege string `xml:"updatePrivilege"` - DeletePrivilege string `xml:"deletePrivilege"` -} - -func init() { - t["PrivilegePolicyDef"] = reflect.TypeOf((*PrivilegePolicyDef)(nil)).Elem() -} - -type ProductComponentInfo struct { - DynamicData - - Id string `xml:"id"` - Name string `xml:"name"` - Version string `xml:"version"` - Release int32 `xml:"release"` -} - -func init() { - t["ProductComponentInfo"] = reflect.TypeOf((*ProductComponentInfo)(nil)).Elem() -} - -type ProfileApplyProfileElement struct { - ApplyProfile - - Key string `xml:"key"` -} - -func init() { - t["ProfileApplyProfileElement"] = reflect.TypeOf((*ProfileApplyProfileElement)(nil)).Elem() -} - -type ProfileApplyProfileProperty struct { - DynamicData - - PropertyName string `xml:"propertyName"` - Array bool `xml:"array"` - Profile []BaseApplyProfile `xml:"profile,omitempty,typeattr"` -} - -func init() { - t["ProfileApplyProfileProperty"] = reflect.TypeOf((*ProfileApplyProfileProperty)(nil)).Elem() -} - -type ProfileAssociatedEvent struct { - ProfileEvent -} - -func init() { - t["ProfileAssociatedEvent"] = reflect.TypeOf((*ProfileAssociatedEvent)(nil)).Elem() -} - -type ProfileChangedEvent struct { - ProfileEvent -} - -func init() { - t["ProfileChangedEvent"] = reflect.TypeOf((*ProfileChangedEvent)(nil)).Elem() -} - -type ProfileCompositeExpression struct { - ProfileExpression - - Operator string `xml:"operator"` - ExpressionName []string `xml:"expressionName"` -} - -func init() { - t["ProfileCompositeExpression"] = reflect.TypeOf((*ProfileCompositeExpression)(nil)).Elem() -} - -type ProfileCompositePolicyOptionMetadata struct { - ProfilePolicyOptionMetadata - - Option []string `xml:"option"` -} - -func init() { - t["ProfileCompositePolicyOptionMetadata"] = reflect.TypeOf((*ProfileCompositePolicyOptionMetadata)(nil)).Elem() -} - -type ProfileConfigInfo struct { - DynamicData - - Name string `xml:"name"` - Annotation string `xml:"annotation,omitempty"` - Enabled bool `xml:"enabled"` -} - -func init() { - t["ProfileConfigInfo"] = reflect.TypeOf((*ProfileConfigInfo)(nil)).Elem() -} - -type ProfileCreateSpec struct { - DynamicData - - Name string `xml:"name,omitempty"` - Annotation string `xml:"annotation,omitempty"` - Enabled *bool `xml:"enabled"` -} - -func init() { - t["ProfileCreateSpec"] = reflect.TypeOf((*ProfileCreateSpec)(nil)).Elem() -} - -type ProfileCreatedEvent struct { - ProfileEvent -} - -func init() { - t["ProfileCreatedEvent"] = reflect.TypeOf((*ProfileCreatedEvent)(nil)).Elem() -} - -type ProfileDeferredPolicyOptionParameter struct { - DynamicData - - InputPath ProfilePropertyPath `xml:"inputPath"` - Parameter []KeyAnyValue `xml:"parameter,omitempty"` -} - -func init() { - t["ProfileDeferredPolicyOptionParameter"] = reflect.TypeOf((*ProfileDeferredPolicyOptionParameter)(nil)).Elem() -} - -type ProfileDescription struct { - DynamicData - - Section []ProfileDescriptionSection `xml:"section"` -} - -func init() { - t["ProfileDescription"] = reflect.TypeOf((*ProfileDescription)(nil)).Elem() -} - -type ProfileDescriptionSection struct { - DynamicData - - Description ExtendedElementDescription `xml:"description"` - Message []LocalizableMessage `xml:"message,omitempty"` -} - -func init() { - t["ProfileDescriptionSection"] = reflect.TypeOf((*ProfileDescriptionSection)(nil)).Elem() -} - -type ProfileDissociatedEvent struct { - ProfileEvent -} - -func init() { - t["ProfileDissociatedEvent"] = reflect.TypeOf((*ProfileDissociatedEvent)(nil)).Elem() -} - -type ProfileEvent struct { - Event - - Profile ProfileEventArgument `xml:"profile"` -} - -func init() { - t["ProfileEvent"] = reflect.TypeOf((*ProfileEvent)(nil)).Elem() -} - -type ProfileEventArgument struct { - EventArgument - - Profile ManagedObjectReference `xml:"profile"` - Name string `xml:"name"` -} - -func init() { - t["ProfileEventArgument"] = reflect.TypeOf((*ProfileEventArgument)(nil)).Elem() -} - -type ProfileExecuteError struct { - DynamicData - - Path *ProfilePropertyPath `xml:"path,omitempty"` - Message LocalizableMessage `xml:"message"` -} - -func init() { - t["ProfileExecuteError"] = reflect.TypeOf((*ProfileExecuteError)(nil)).Elem() -} - -type ProfileExecuteResult struct { - DynamicData - - Status string `xml:"status"` - ConfigSpec *HostConfigSpec `xml:"configSpec,omitempty"` - InapplicablePath []string `xml:"inapplicablePath,omitempty"` - RequireInput []ProfileDeferredPolicyOptionParameter `xml:"requireInput,omitempty"` - Error []ProfileExecuteError `xml:"error,omitempty"` -} - -func init() { - t["ProfileExecuteResult"] = reflect.TypeOf((*ProfileExecuteResult)(nil)).Elem() -} - -type ProfileExpression struct { - DynamicData - - Id string `xml:"id"` - DisplayName string `xml:"displayName"` - Negated bool `xml:"negated"` -} - -func init() { - t["ProfileExpression"] = reflect.TypeOf((*ProfileExpression)(nil)).Elem() -} - -type ProfileExpressionMetadata struct { - DynamicData - - ExpressionId ExtendedElementDescription `xml:"expressionId"` - Parameter []ProfileParameterMetadata `xml:"parameter,omitempty"` -} - -func init() { - t["ProfileExpressionMetadata"] = reflect.TypeOf((*ProfileExpressionMetadata)(nil)).Elem() -} - -type ProfileMetadata struct { - DynamicData - - Key string `xml:"key"` - ProfileTypeName string `xml:"profileTypeName,omitempty"` - Description *ExtendedDescription `xml:"description,omitempty"` - SortSpec []ProfileMetadataProfileSortSpec `xml:"sortSpec,omitempty"` - ProfileCategory string `xml:"profileCategory,omitempty"` - ProfileComponent string `xml:"profileComponent,omitempty"` -} - -func init() { - t["ProfileMetadata"] = reflect.TypeOf((*ProfileMetadata)(nil)).Elem() -} - -type ProfileMetadataProfileSortSpec struct { - DynamicData - - PolicyId string `xml:"policyId"` - Parameter string `xml:"parameter"` -} - -func init() { - t["ProfileMetadataProfileSortSpec"] = reflect.TypeOf((*ProfileMetadataProfileSortSpec)(nil)).Elem() -} - -type ProfileParameterMetadata struct { - DynamicData - - Id ExtendedElementDescription `xml:"id"` - Type string `xml:"type"` - Optional bool `xml:"optional"` - DefaultValue AnyType `xml:"defaultValue,omitempty,typeattr"` -} - -func init() { - t["ProfileParameterMetadata"] = reflect.TypeOf((*ProfileParameterMetadata)(nil)).Elem() -} - -type ProfilePolicy struct { - DynamicData - - Id string `xml:"id"` - PolicyOption BasePolicyOption `xml:"policyOption,typeattr"` -} - -func init() { - t["ProfilePolicy"] = reflect.TypeOf((*ProfilePolicy)(nil)).Elem() -} - -type ProfilePolicyMetadata struct { - DynamicData - - Id ExtendedElementDescription `xml:"id"` - PossibleOption []BaseProfilePolicyOptionMetadata `xml:"possibleOption,typeattr"` -} - -func init() { - t["ProfilePolicyMetadata"] = reflect.TypeOf((*ProfilePolicyMetadata)(nil)).Elem() -} - -type ProfilePolicyOptionMetadata struct { - DynamicData - - Id ExtendedElementDescription `xml:"id"` - Parameter []ProfileParameterMetadata `xml:"parameter,omitempty"` -} - -func init() { - t["ProfilePolicyOptionMetadata"] = reflect.TypeOf((*ProfilePolicyOptionMetadata)(nil)).Elem() -} - -type ProfileProfileStructure struct { - DynamicData - - ProfileTypeName string `xml:"profileTypeName"` - Child []ProfileProfileStructureProperty `xml:"child,omitempty"` -} - -func init() { - t["ProfileProfileStructure"] = reflect.TypeOf((*ProfileProfileStructure)(nil)).Elem() -} - -type ProfileProfileStructureProperty struct { - DynamicData - - PropertyName string `xml:"propertyName"` - Array bool `xml:"array"` - Element ProfileProfileStructure `xml:"element"` -} - -func init() { - t["ProfileProfileStructureProperty"] = reflect.TypeOf((*ProfileProfileStructureProperty)(nil)).Elem() -} - -type ProfilePropertyPath struct { - DynamicData - - ProfilePath string `xml:"profilePath"` - PolicyId string `xml:"policyId,omitempty"` - ParameterId string `xml:"parameterId,omitempty"` -} - -func init() { - t["ProfilePropertyPath"] = reflect.TypeOf((*ProfilePropertyPath)(nil)).Elem() -} - -type ProfileReferenceHostChangedEvent struct { - ProfileEvent - - ReferenceHost *ManagedObjectReference `xml:"referenceHost,omitempty"` -} - -func init() { - t["ProfileReferenceHostChangedEvent"] = reflect.TypeOf((*ProfileReferenceHostChangedEvent)(nil)).Elem() -} - -type ProfileRemovedEvent struct { - ProfileEvent -} - -func init() { - t["ProfileRemovedEvent"] = reflect.TypeOf((*ProfileRemovedEvent)(nil)).Elem() -} - -type ProfileSerializedCreateSpec struct { - ProfileCreateSpec - - ProfileConfigString string `xml:"profileConfigString"` -} - -func init() { - t["ProfileSerializedCreateSpec"] = reflect.TypeOf((*ProfileSerializedCreateSpec)(nil)).Elem() -} - -type ProfileSimpleExpression struct { - ProfileExpression - - ExpressionType string `xml:"expressionType"` - Parameter []KeyAnyValue `xml:"parameter,omitempty"` -} - -func init() { - t["ProfileSimpleExpression"] = reflect.TypeOf((*ProfileSimpleExpression)(nil)).Elem() -} - -type ProfileUpdateFailed struct { - VimFault - - Failure []ProfileUpdateFailedUpdateFailure `xml:"failure"` -} - -func init() { - t["ProfileUpdateFailed"] = reflect.TypeOf((*ProfileUpdateFailed)(nil)).Elem() -} - -type ProfileUpdateFailedFault ProfileUpdateFailed - -func init() { - t["ProfileUpdateFailedFault"] = reflect.TypeOf((*ProfileUpdateFailedFault)(nil)).Elem() -} - -type ProfileUpdateFailedUpdateFailure struct { - DynamicData - - ProfilePath ProfilePropertyPath `xml:"profilePath"` - ErrMsg LocalizableMessage `xml:"errMsg"` -} - -func init() { - t["ProfileUpdateFailedUpdateFailure"] = reflect.TypeOf((*ProfileUpdateFailedUpdateFailure)(nil)).Elem() -} - -type PromoteDisksRequestType struct { - This ManagedObjectReference `xml:"_this"` - Unlink bool `xml:"unlink"` - Disks []VirtualDisk `xml:"disks,omitempty"` -} - -func init() { - t["PromoteDisksRequestType"] = reflect.TypeOf((*PromoteDisksRequestType)(nil)).Elem() -} - -type PromoteDisks_Task PromoteDisksRequestType - -func init() { - t["PromoteDisks_Task"] = reflect.TypeOf((*PromoteDisks_Task)(nil)).Elem() -} - -type PromoteDisks_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type PropertyChange struct { - DynamicData - - Name string `xml:"name"` - Op PropertyChangeOp `xml:"op"` - Val AnyType `xml:"val,omitempty,typeattr"` -} - -func init() { - t["PropertyChange"] = reflect.TypeOf((*PropertyChange)(nil)).Elem() -} - -type PropertyFilterSpec struct { - DynamicData - - PropSet []PropertySpec `xml:"propSet"` - ObjectSet []ObjectSpec `xml:"objectSet"` - ReportMissingObjectsInResults *bool `xml:"reportMissingObjectsInResults"` -} - -func init() { - t["PropertyFilterSpec"] = reflect.TypeOf((*PropertyFilterSpec)(nil)).Elem() -} - -type PropertyFilterUpdate struct { - DynamicData - - Filter ManagedObjectReference `xml:"filter"` - ObjectSet []ObjectUpdate `xml:"objectSet,omitempty"` - MissingSet []MissingObject `xml:"missingSet,omitempty"` -} - -func init() { - t["PropertyFilterUpdate"] = reflect.TypeOf((*PropertyFilterUpdate)(nil)).Elem() -} - -type PropertySpec struct { - DynamicData - - Type string `xml:"type"` - All *bool `xml:"all"` - PathSet []string `xml:"pathSet,omitempty"` -} - -func init() { - t["PropertySpec"] = reflect.TypeOf((*PropertySpec)(nil)).Elem() -} - -type QueryAnswerFileStatus QueryAnswerFileStatusRequestType - -func init() { - t["QueryAnswerFileStatus"] = reflect.TypeOf((*QueryAnswerFileStatus)(nil)).Elem() -} - -type QueryAnswerFileStatusRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host []ManagedObjectReference `xml:"host"` -} - -func init() { - t["QueryAnswerFileStatusRequestType"] = reflect.TypeOf((*QueryAnswerFileStatusRequestType)(nil)).Elem() -} - -type QueryAnswerFileStatusResponse struct { - Returnval []AnswerFileStatusResult `xml:"returnval,omitempty"` -} - -type QueryAssignedLicenses QueryAssignedLicensesRequestType - -func init() { - t["QueryAssignedLicenses"] = reflect.TypeOf((*QueryAssignedLicenses)(nil)).Elem() -} - -type QueryAssignedLicensesRequestType struct { - This ManagedObjectReference `xml:"_this"` - EntityId string `xml:"entityId,omitempty"` -} - -func init() { - t["QueryAssignedLicensesRequestType"] = reflect.TypeOf((*QueryAssignedLicensesRequestType)(nil)).Elem() -} - -type QueryAssignedLicensesResponse struct { - Returnval []LicenseAssignmentManagerLicenseAssignment `xml:"returnval"` -} - -type QueryAvailableDisksForVmfs QueryAvailableDisksForVmfsRequestType - -func init() { - t["QueryAvailableDisksForVmfs"] = reflect.TypeOf((*QueryAvailableDisksForVmfs)(nil)).Elem() -} - -type QueryAvailableDisksForVmfsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Datastore *ManagedObjectReference `xml:"datastore,omitempty"` -} - -func init() { - t["QueryAvailableDisksForVmfsRequestType"] = reflect.TypeOf((*QueryAvailableDisksForVmfsRequestType)(nil)).Elem() -} - -type QueryAvailableDisksForVmfsResponse struct { - Returnval []HostScsiDisk `xml:"returnval,omitempty"` -} - -type QueryAvailableDvsSpec QueryAvailableDvsSpecRequestType - -func init() { - t["QueryAvailableDvsSpec"] = reflect.TypeOf((*QueryAvailableDvsSpec)(nil)).Elem() -} - -type QueryAvailableDvsSpecRequestType struct { - This ManagedObjectReference `xml:"_this"` - Recommended *bool `xml:"recommended"` -} - -func init() { - t["QueryAvailableDvsSpecRequestType"] = reflect.TypeOf((*QueryAvailableDvsSpecRequestType)(nil)).Elem() -} - -type QueryAvailableDvsSpecResponse struct { - Returnval []DistributedVirtualSwitchProductSpec `xml:"returnval,omitempty"` -} - -type QueryAvailablePartition QueryAvailablePartitionRequestType - -func init() { - t["QueryAvailablePartition"] = reflect.TypeOf((*QueryAvailablePartition)(nil)).Elem() -} - -type QueryAvailablePartitionRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["QueryAvailablePartitionRequestType"] = reflect.TypeOf((*QueryAvailablePartitionRequestType)(nil)).Elem() -} - -type QueryAvailablePartitionResponse struct { - Returnval []HostDiagnosticPartition `xml:"returnval,omitempty"` -} - -type QueryAvailablePerfMetric QueryAvailablePerfMetricRequestType - -func init() { - t["QueryAvailablePerfMetric"] = reflect.TypeOf((*QueryAvailablePerfMetric)(nil)).Elem() -} - -type QueryAvailablePerfMetricRequestType struct { - This ManagedObjectReference `xml:"_this"` - Entity ManagedObjectReference `xml:"entity"` - BeginTime *time.Time `xml:"beginTime"` - EndTime *time.Time `xml:"endTime"` - IntervalId int32 `xml:"intervalId,omitempty"` -} - -func init() { - t["QueryAvailablePerfMetricRequestType"] = reflect.TypeOf((*QueryAvailablePerfMetricRequestType)(nil)).Elem() -} - -type QueryAvailablePerfMetricResponse struct { - Returnval []PerfMetricId `xml:"returnval,omitempty"` -} - -type QueryAvailableSsds QueryAvailableSsdsRequestType - -func init() { - t["QueryAvailableSsds"] = reflect.TypeOf((*QueryAvailableSsds)(nil)).Elem() -} - -type QueryAvailableSsdsRequestType struct { - This ManagedObjectReference `xml:"_this"` - VffsPath string `xml:"vffsPath,omitempty"` -} - -func init() { - t["QueryAvailableSsdsRequestType"] = reflect.TypeOf((*QueryAvailableSsdsRequestType)(nil)).Elem() -} - -type QueryAvailableSsdsResponse struct { - Returnval []HostScsiDisk `xml:"returnval,omitempty"` -} - -type QueryAvailableTimeZones QueryAvailableTimeZonesRequestType - -func init() { - t["QueryAvailableTimeZones"] = reflect.TypeOf((*QueryAvailableTimeZones)(nil)).Elem() -} - -type QueryAvailableTimeZonesRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["QueryAvailableTimeZonesRequestType"] = reflect.TypeOf((*QueryAvailableTimeZonesRequestType)(nil)).Elem() -} - -type QueryAvailableTimeZonesResponse struct { - Returnval []HostDateTimeSystemTimeZone `xml:"returnval,omitempty"` -} - -type QueryBootDevices QueryBootDevicesRequestType - -func init() { - t["QueryBootDevices"] = reflect.TypeOf((*QueryBootDevices)(nil)).Elem() -} - -type QueryBootDevicesRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["QueryBootDevicesRequestType"] = reflect.TypeOf((*QueryBootDevicesRequestType)(nil)).Elem() -} - -type QueryBootDevicesResponse struct { - Returnval *HostBootDeviceInfo `xml:"returnval,omitempty"` -} - -type QueryBoundVnics QueryBoundVnicsRequestType - -func init() { - t["QueryBoundVnics"] = reflect.TypeOf((*QueryBoundVnics)(nil)).Elem() -} - -type QueryBoundVnicsRequestType struct { - This ManagedObjectReference `xml:"_this"` - IScsiHbaName string `xml:"iScsiHbaName"` -} - -func init() { - t["QueryBoundVnicsRequestType"] = reflect.TypeOf((*QueryBoundVnicsRequestType)(nil)).Elem() -} - -type QueryBoundVnicsResponse struct { - Returnval []IscsiPortInfo `xml:"returnval,omitempty"` -} - -type QueryCandidateNics QueryCandidateNicsRequestType - -func init() { - t["QueryCandidateNics"] = reflect.TypeOf((*QueryCandidateNics)(nil)).Elem() -} - -type QueryCandidateNicsRequestType struct { - This ManagedObjectReference `xml:"_this"` - IScsiHbaName string `xml:"iScsiHbaName"` -} - -func init() { - t["QueryCandidateNicsRequestType"] = reflect.TypeOf((*QueryCandidateNicsRequestType)(nil)).Elem() -} - -type QueryCandidateNicsResponse struct { - Returnval []IscsiPortInfo `xml:"returnval,omitempty"` -} - -type QueryChangedDiskAreas QueryChangedDiskAreasRequestType - -func init() { - t["QueryChangedDiskAreas"] = reflect.TypeOf((*QueryChangedDiskAreas)(nil)).Elem() -} - -type QueryChangedDiskAreasRequestType struct { - This ManagedObjectReference `xml:"_this"` - Snapshot *ManagedObjectReference `xml:"snapshot,omitempty"` - DeviceKey int32 `xml:"deviceKey"` - StartOffset int64 `xml:"startOffset"` - ChangeId string `xml:"changeId"` -} - -func init() { - t["QueryChangedDiskAreasRequestType"] = reflect.TypeOf((*QueryChangedDiskAreasRequestType)(nil)).Elem() -} - -type QueryChangedDiskAreasResponse struct { - Returnval DiskChangeInfo `xml:"returnval"` -} - -type QueryCmmds QueryCmmdsRequestType - -func init() { - t["QueryCmmds"] = reflect.TypeOf((*QueryCmmds)(nil)).Elem() -} - -type QueryCmmdsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Queries []HostVsanInternalSystemCmmdsQuery `xml:"queries"` -} - -func init() { - t["QueryCmmdsRequestType"] = reflect.TypeOf((*QueryCmmdsRequestType)(nil)).Elem() -} - -type QueryCmmdsResponse struct { - Returnval string `xml:"returnval"` -} - -type QueryCompatibleHostForExistingDvs QueryCompatibleHostForExistingDvsRequestType - -func init() { - t["QueryCompatibleHostForExistingDvs"] = reflect.TypeOf((*QueryCompatibleHostForExistingDvs)(nil)).Elem() -} - -type QueryCompatibleHostForExistingDvsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Container ManagedObjectReference `xml:"container"` - Recursive bool `xml:"recursive"` - Dvs ManagedObjectReference `xml:"dvs"` -} - -func init() { - t["QueryCompatibleHostForExistingDvsRequestType"] = reflect.TypeOf((*QueryCompatibleHostForExistingDvsRequestType)(nil)).Elem() -} - -type QueryCompatibleHostForExistingDvsResponse struct { - Returnval []ManagedObjectReference `xml:"returnval,omitempty"` -} - -type QueryCompatibleHostForNewDvs QueryCompatibleHostForNewDvsRequestType - -func init() { - t["QueryCompatibleHostForNewDvs"] = reflect.TypeOf((*QueryCompatibleHostForNewDvs)(nil)).Elem() -} - -type QueryCompatibleHostForNewDvsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Container ManagedObjectReference `xml:"container"` - Recursive bool `xml:"recursive"` - SwitchProductSpec *DistributedVirtualSwitchProductSpec `xml:"switchProductSpec,omitempty"` -} - -func init() { - t["QueryCompatibleHostForNewDvsRequestType"] = reflect.TypeOf((*QueryCompatibleHostForNewDvsRequestType)(nil)).Elem() -} - -type QueryCompatibleHostForNewDvsResponse struct { - Returnval []ManagedObjectReference `xml:"returnval,omitempty"` -} - -type QueryComplianceStatus QueryComplianceStatusRequestType - -func init() { - t["QueryComplianceStatus"] = reflect.TypeOf((*QueryComplianceStatus)(nil)).Elem() -} - -type QueryComplianceStatusRequestType struct { - This ManagedObjectReference `xml:"_this"` - Profile []ManagedObjectReference `xml:"profile,omitempty"` - Entity []ManagedObjectReference `xml:"entity,omitempty"` -} - -func init() { - t["QueryComplianceStatusRequestType"] = reflect.TypeOf((*QueryComplianceStatusRequestType)(nil)).Elem() -} - -type QueryComplianceStatusResponse struct { - Returnval []ComplianceResult `xml:"returnval,omitempty"` -} - -type QueryConfigOption QueryConfigOptionRequestType - -func init() { - t["QueryConfigOption"] = reflect.TypeOf((*QueryConfigOption)(nil)).Elem() -} - -type QueryConfigOptionDescriptor QueryConfigOptionDescriptorRequestType - -func init() { - t["QueryConfigOptionDescriptor"] = reflect.TypeOf((*QueryConfigOptionDescriptor)(nil)).Elem() -} - -type QueryConfigOptionDescriptorRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["QueryConfigOptionDescriptorRequestType"] = reflect.TypeOf((*QueryConfigOptionDescriptorRequestType)(nil)).Elem() -} - -type QueryConfigOptionDescriptorResponse struct { - Returnval []VirtualMachineConfigOptionDescriptor `xml:"returnval,omitempty"` -} - -type QueryConfigOptionEx QueryConfigOptionExRequestType - -func init() { - t["QueryConfigOptionEx"] = reflect.TypeOf((*QueryConfigOptionEx)(nil)).Elem() -} - -type QueryConfigOptionExRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec *EnvironmentBrowserConfigOptionQuerySpec `xml:"spec,omitempty"` -} - -func init() { - t["QueryConfigOptionExRequestType"] = reflect.TypeOf((*QueryConfigOptionExRequestType)(nil)).Elem() -} - -type QueryConfigOptionExResponse struct { - Returnval *VirtualMachineConfigOption `xml:"returnval,omitempty"` -} - -type QueryConfigOptionRequestType struct { - This ManagedObjectReference `xml:"_this"` - Key string `xml:"key,omitempty"` - Host *ManagedObjectReference `xml:"host,omitempty"` -} - -func init() { - t["QueryConfigOptionRequestType"] = reflect.TypeOf((*QueryConfigOptionRequestType)(nil)).Elem() -} - -type QueryConfigOptionResponse struct { - Returnval *VirtualMachineConfigOption `xml:"returnval,omitempty"` -} - -type QueryConfigTarget QueryConfigTargetRequestType - -func init() { - t["QueryConfigTarget"] = reflect.TypeOf((*QueryConfigTarget)(nil)).Elem() -} - -type QueryConfigTargetRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host *ManagedObjectReference `xml:"host,omitempty"` -} - -func init() { - t["QueryConfigTargetRequestType"] = reflect.TypeOf((*QueryConfigTargetRequestType)(nil)).Elem() -} - -type QueryConfigTargetResponse struct { - Returnval *ConfigTarget `xml:"returnval,omitempty"` -} - -type QueryConfiguredModuleOptionString QueryConfiguredModuleOptionStringRequestType - -func init() { - t["QueryConfiguredModuleOptionString"] = reflect.TypeOf((*QueryConfiguredModuleOptionString)(nil)).Elem() -} - -type QueryConfiguredModuleOptionStringRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` -} - -func init() { - t["QueryConfiguredModuleOptionStringRequestType"] = reflect.TypeOf((*QueryConfiguredModuleOptionStringRequestType)(nil)).Elem() -} - -type QueryConfiguredModuleOptionStringResponse struct { - Returnval string `xml:"returnval"` -} - -type QueryConnectionInfo QueryConnectionInfoRequestType - -func init() { - t["QueryConnectionInfo"] = reflect.TypeOf((*QueryConnectionInfo)(nil)).Elem() -} - -type QueryConnectionInfoRequestType struct { - This ManagedObjectReference `xml:"_this"` - Hostname string `xml:"hostname"` - Port int32 `xml:"port"` - Username string `xml:"username"` - Password string `xml:"password"` - SslThumbprint string `xml:"sslThumbprint,omitempty"` -} - -func init() { - t["QueryConnectionInfoRequestType"] = reflect.TypeOf((*QueryConnectionInfoRequestType)(nil)).Elem() -} - -type QueryConnectionInfoResponse struct { - Returnval HostConnectInfo `xml:"returnval"` -} - -type QueryConnectionInfoViaSpec QueryConnectionInfoViaSpecRequestType - -func init() { - t["QueryConnectionInfoViaSpec"] = reflect.TypeOf((*QueryConnectionInfoViaSpec)(nil)).Elem() -} - -type QueryConnectionInfoViaSpecRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec HostConnectSpec `xml:"spec"` -} - -func init() { - t["QueryConnectionInfoViaSpecRequestType"] = reflect.TypeOf((*QueryConnectionInfoViaSpecRequestType)(nil)).Elem() -} - -type QueryConnectionInfoViaSpecResponse struct { - Returnval HostConnectInfo `xml:"returnval"` -} - -type QueryDatastorePerformanceSummary QueryDatastorePerformanceSummaryRequestType - -func init() { - t["QueryDatastorePerformanceSummary"] = reflect.TypeOf((*QueryDatastorePerformanceSummary)(nil)).Elem() -} - -type QueryDatastorePerformanceSummaryRequestType struct { - This ManagedObjectReference `xml:"_this"` - Datastore ManagedObjectReference `xml:"datastore"` -} - -func init() { - t["QueryDatastorePerformanceSummaryRequestType"] = reflect.TypeOf((*QueryDatastorePerformanceSummaryRequestType)(nil)).Elem() -} - -type QueryDatastorePerformanceSummaryResponse struct { - Returnval []StoragePerformanceSummary `xml:"returnval,omitempty"` -} - -type QueryDateTime QueryDateTimeRequestType - -func init() { - t["QueryDateTime"] = reflect.TypeOf((*QueryDateTime)(nil)).Elem() -} - -type QueryDateTimeRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["QueryDateTimeRequestType"] = reflect.TypeOf((*QueryDateTimeRequestType)(nil)).Elem() -} - -type QueryDateTimeResponse struct { - Returnval time.Time `xml:"returnval"` -} - -type QueryDescriptions QueryDescriptionsRequestType - -func init() { - t["QueryDescriptions"] = reflect.TypeOf((*QueryDescriptions)(nil)).Elem() -} - -type QueryDescriptionsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host *ManagedObjectReference `xml:"host,omitempty"` -} - -func init() { - t["QueryDescriptionsRequestType"] = reflect.TypeOf((*QueryDescriptionsRequestType)(nil)).Elem() -} - -type QueryDescriptionsResponse struct { - Returnval []DiagnosticManagerLogDescriptor `xml:"returnval,omitempty"` -} - -type QueryDisksForVsan QueryDisksForVsanRequestType - -func init() { - t["QueryDisksForVsan"] = reflect.TypeOf((*QueryDisksForVsan)(nil)).Elem() -} - -type QueryDisksForVsanRequestType struct { - This ManagedObjectReference `xml:"_this"` - CanonicalName []string `xml:"canonicalName,omitempty"` -} - -func init() { - t["QueryDisksForVsanRequestType"] = reflect.TypeOf((*QueryDisksForVsanRequestType)(nil)).Elem() -} - -type QueryDisksForVsanResponse struct { - Returnval []VsanHostDiskResult `xml:"returnval,omitempty"` -} - -type QueryDisksUsingFilter QueryDisksUsingFilterRequestType - -func init() { - t["QueryDisksUsingFilter"] = reflect.TypeOf((*QueryDisksUsingFilter)(nil)).Elem() -} - -type QueryDisksUsingFilterRequestType struct { - This ManagedObjectReference `xml:"_this"` - FilterId string `xml:"filterId"` - CompRes ManagedObjectReference `xml:"compRes"` -} - -func init() { - t["QueryDisksUsingFilterRequestType"] = reflect.TypeOf((*QueryDisksUsingFilterRequestType)(nil)).Elem() -} - -type QueryDisksUsingFilterResponse struct { - Returnval []VirtualDiskId `xml:"returnval"` -} - -type QueryDvsByUuid QueryDvsByUuidRequestType - -func init() { - t["QueryDvsByUuid"] = reflect.TypeOf((*QueryDvsByUuid)(nil)).Elem() -} - -type QueryDvsByUuidRequestType struct { - This ManagedObjectReference `xml:"_this"` - Uuid string `xml:"uuid"` -} - -func init() { - t["QueryDvsByUuidRequestType"] = reflect.TypeOf((*QueryDvsByUuidRequestType)(nil)).Elem() -} - -type QueryDvsByUuidResponse struct { - Returnval *ManagedObjectReference `xml:"returnval,omitempty"` -} - -type QueryDvsCheckCompatibility QueryDvsCheckCompatibilityRequestType - -func init() { - t["QueryDvsCheckCompatibility"] = reflect.TypeOf((*QueryDvsCheckCompatibility)(nil)).Elem() -} - -type QueryDvsCheckCompatibilityRequestType struct { - This ManagedObjectReference `xml:"_this"` - HostContainer DistributedVirtualSwitchManagerHostContainer `xml:"hostContainer"` - DvsProductSpec *DistributedVirtualSwitchManagerDvsProductSpec `xml:"dvsProductSpec,omitempty"` - HostFilterSpec []BaseDistributedVirtualSwitchManagerHostDvsFilterSpec `xml:"hostFilterSpec,omitempty,typeattr"` -} - -func init() { - t["QueryDvsCheckCompatibilityRequestType"] = reflect.TypeOf((*QueryDvsCheckCompatibilityRequestType)(nil)).Elem() -} - -type QueryDvsCheckCompatibilityResponse struct { - Returnval []DistributedVirtualSwitchManagerCompatibilityResult `xml:"returnval,omitempty"` -} - -type QueryDvsCompatibleHostSpec QueryDvsCompatibleHostSpecRequestType - -func init() { - t["QueryDvsCompatibleHostSpec"] = reflect.TypeOf((*QueryDvsCompatibleHostSpec)(nil)).Elem() -} - -type QueryDvsCompatibleHostSpecRequestType struct { - This ManagedObjectReference `xml:"_this"` - SwitchProductSpec *DistributedVirtualSwitchProductSpec `xml:"switchProductSpec,omitempty"` -} - -func init() { - t["QueryDvsCompatibleHostSpecRequestType"] = reflect.TypeOf((*QueryDvsCompatibleHostSpecRequestType)(nil)).Elem() -} - -type QueryDvsCompatibleHostSpecResponse struct { - Returnval []DistributedVirtualSwitchHostProductSpec `xml:"returnval,omitempty"` -} - -type QueryDvsConfigTarget QueryDvsConfigTargetRequestType - -func init() { - t["QueryDvsConfigTarget"] = reflect.TypeOf((*QueryDvsConfigTarget)(nil)).Elem() -} - -type QueryDvsConfigTargetRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host *ManagedObjectReference `xml:"host,omitempty"` - Dvs *ManagedObjectReference `xml:"dvs,omitempty"` -} - -func init() { - t["QueryDvsConfigTargetRequestType"] = reflect.TypeOf((*QueryDvsConfigTargetRequestType)(nil)).Elem() -} - -type QueryDvsConfigTargetResponse struct { - Returnval DVSManagerDvsConfigTarget `xml:"returnval"` -} - -type QueryDvsFeatureCapability QueryDvsFeatureCapabilityRequestType - -func init() { - t["QueryDvsFeatureCapability"] = reflect.TypeOf((*QueryDvsFeatureCapability)(nil)).Elem() -} - -type QueryDvsFeatureCapabilityRequestType struct { - This ManagedObjectReference `xml:"_this"` - SwitchProductSpec *DistributedVirtualSwitchProductSpec `xml:"switchProductSpec,omitempty"` -} - -func init() { - t["QueryDvsFeatureCapabilityRequestType"] = reflect.TypeOf((*QueryDvsFeatureCapabilityRequestType)(nil)).Elem() -} - -type QueryDvsFeatureCapabilityResponse struct { - Returnval BaseDVSFeatureCapability `xml:"returnval,omitempty,typeattr"` -} - -type QueryEvents QueryEventsRequestType - -func init() { - t["QueryEvents"] = reflect.TypeOf((*QueryEvents)(nil)).Elem() -} - -type QueryEventsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Filter EventFilterSpec `xml:"filter"` -} - -func init() { - t["QueryEventsRequestType"] = reflect.TypeOf((*QueryEventsRequestType)(nil)).Elem() -} - -type QueryEventsResponse struct { - Returnval []BaseEvent `xml:"returnval,omitempty,typeattr"` -} - -type QueryExpressionMetadata QueryExpressionMetadataRequestType - -func init() { - t["QueryExpressionMetadata"] = reflect.TypeOf((*QueryExpressionMetadata)(nil)).Elem() -} - -type QueryExpressionMetadataRequestType struct { - This ManagedObjectReference `xml:"_this"` - ExpressionName []string `xml:"expressionName,omitempty"` - Profile *ManagedObjectReference `xml:"profile,omitempty"` -} - -func init() { - t["QueryExpressionMetadataRequestType"] = reflect.TypeOf((*QueryExpressionMetadataRequestType)(nil)).Elem() -} - -type QueryExpressionMetadataResponse struct { - Returnval []ProfileExpressionMetadata `xml:"returnval,omitempty"` -} - -type QueryExtensionIpAllocationUsage QueryExtensionIpAllocationUsageRequestType - -func init() { - t["QueryExtensionIpAllocationUsage"] = reflect.TypeOf((*QueryExtensionIpAllocationUsage)(nil)).Elem() -} - -type QueryExtensionIpAllocationUsageRequestType struct { - This ManagedObjectReference `xml:"_this"` - ExtensionKeys []string `xml:"extensionKeys,omitempty"` -} - -func init() { - t["QueryExtensionIpAllocationUsageRequestType"] = reflect.TypeOf((*QueryExtensionIpAllocationUsageRequestType)(nil)).Elem() -} - -type QueryExtensionIpAllocationUsageResponse struct { - Returnval []ExtensionManagerIpAllocationUsage `xml:"returnval,omitempty"` -} - -type QueryFaultToleranceCompatibility QueryFaultToleranceCompatibilityRequestType - -func init() { - t["QueryFaultToleranceCompatibility"] = reflect.TypeOf((*QueryFaultToleranceCompatibility)(nil)).Elem() -} - -type QueryFaultToleranceCompatibilityEx QueryFaultToleranceCompatibilityExRequestType - -func init() { - t["QueryFaultToleranceCompatibilityEx"] = reflect.TypeOf((*QueryFaultToleranceCompatibilityEx)(nil)).Elem() -} - -type QueryFaultToleranceCompatibilityExRequestType struct { - This ManagedObjectReference `xml:"_this"` - ForLegacyFt *bool `xml:"forLegacyFt"` -} - -func init() { - t["QueryFaultToleranceCompatibilityExRequestType"] = reflect.TypeOf((*QueryFaultToleranceCompatibilityExRequestType)(nil)).Elem() -} - -type QueryFaultToleranceCompatibilityExResponse struct { - Returnval []LocalizedMethodFault `xml:"returnval,omitempty"` -} - -type QueryFaultToleranceCompatibilityRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["QueryFaultToleranceCompatibilityRequestType"] = reflect.TypeOf((*QueryFaultToleranceCompatibilityRequestType)(nil)).Elem() -} - -type QueryFaultToleranceCompatibilityResponse struct { - Returnval []LocalizedMethodFault `xml:"returnval,omitempty"` -} - -type QueryFirmwareConfigUploadURL QueryFirmwareConfigUploadURLRequestType - -func init() { - t["QueryFirmwareConfigUploadURL"] = reflect.TypeOf((*QueryFirmwareConfigUploadURL)(nil)).Elem() -} - -type QueryFirmwareConfigUploadURLRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["QueryFirmwareConfigUploadURLRequestType"] = reflect.TypeOf((*QueryFirmwareConfigUploadURLRequestType)(nil)).Elem() -} - -type QueryFirmwareConfigUploadURLResponse struct { - Returnval string `xml:"returnval"` -} - -type QueryHostConnectionInfo QueryHostConnectionInfoRequestType - -func init() { - t["QueryHostConnectionInfo"] = reflect.TypeOf((*QueryHostConnectionInfo)(nil)).Elem() -} - -type QueryHostConnectionInfoRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["QueryHostConnectionInfoRequestType"] = reflect.TypeOf((*QueryHostConnectionInfoRequestType)(nil)).Elem() -} - -type QueryHostConnectionInfoResponse struct { - Returnval HostConnectInfo `xml:"returnval"` -} - -type QueryHostPatchRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec *HostPatchManagerPatchManagerOperationSpec `xml:"spec,omitempty"` -} - -func init() { - t["QueryHostPatchRequestType"] = reflect.TypeOf((*QueryHostPatchRequestType)(nil)).Elem() -} - -type QueryHostPatch_Task QueryHostPatchRequestType - -func init() { - t["QueryHostPatch_Task"] = reflect.TypeOf((*QueryHostPatch_Task)(nil)).Elem() -} - -type QueryHostPatch_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type QueryHostProfileMetadata QueryHostProfileMetadataRequestType - -func init() { - t["QueryHostProfileMetadata"] = reflect.TypeOf((*QueryHostProfileMetadata)(nil)).Elem() -} - -type QueryHostProfileMetadataRequestType struct { - This ManagedObjectReference `xml:"_this"` - ProfileName []string `xml:"profileName,omitempty"` - Profile *ManagedObjectReference `xml:"profile,omitempty"` -} - -func init() { - t["QueryHostProfileMetadataRequestType"] = reflect.TypeOf((*QueryHostProfileMetadataRequestType)(nil)).Elem() -} - -type QueryHostProfileMetadataResponse struct { - Returnval []ProfileMetadata `xml:"returnval,omitempty"` -} - -type QueryHostStatus QueryHostStatusRequestType - -func init() { - t["QueryHostStatus"] = reflect.TypeOf((*QueryHostStatus)(nil)).Elem() -} - -type QueryHostStatusRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["QueryHostStatusRequestType"] = reflect.TypeOf((*QueryHostStatusRequestType)(nil)).Elem() -} - -type QueryHostStatusResponse struct { - Returnval VsanHostClusterStatus `xml:"returnval"` -} - -type QueryIORMConfigOption QueryIORMConfigOptionRequestType - -func init() { - t["QueryIORMConfigOption"] = reflect.TypeOf((*QueryIORMConfigOption)(nil)).Elem() -} - -type QueryIORMConfigOptionRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host ManagedObjectReference `xml:"host"` -} - -func init() { - t["QueryIORMConfigOptionRequestType"] = reflect.TypeOf((*QueryIORMConfigOptionRequestType)(nil)).Elem() -} - -type QueryIORMConfigOptionResponse struct { - Returnval StorageIORMConfigOption `xml:"returnval"` -} - -type QueryIPAllocations QueryIPAllocationsRequestType - -func init() { - t["QueryIPAllocations"] = reflect.TypeOf((*QueryIPAllocations)(nil)).Elem() -} - -type QueryIPAllocationsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Dc ManagedObjectReference `xml:"dc"` - PoolId int32 `xml:"poolId"` - ExtensionKey string `xml:"extensionKey"` -} - -func init() { - t["QueryIPAllocationsRequestType"] = reflect.TypeOf((*QueryIPAllocationsRequestType)(nil)).Elem() -} - -type QueryIPAllocationsResponse struct { - Returnval []IpPoolManagerIpAllocation `xml:"returnval"` -} - -type QueryIoFilterInfo QueryIoFilterInfoRequestType - -func init() { - t["QueryIoFilterInfo"] = reflect.TypeOf((*QueryIoFilterInfo)(nil)).Elem() -} - -type QueryIoFilterInfoRequestType struct { - This ManagedObjectReference `xml:"_this"` - CompRes ManagedObjectReference `xml:"compRes"` -} - -func init() { - t["QueryIoFilterInfoRequestType"] = reflect.TypeOf((*QueryIoFilterInfoRequestType)(nil)).Elem() -} - -type QueryIoFilterInfoResponse struct { - Returnval []ClusterIoFilterInfo `xml:"returnval,omitempty"` -} - -type QueryIoFilterIssues QueryIoFilterIssuesRequestType - -func init() { - t["QueryIoFilterIssues"] = reflect.TypeOf((*QueryIoFilterIssues)(nil)).Elem() -} - -type QueryIoFilterIssuesRequestType struct { - This ManagedObjectReference `xml:"_this"` - FilterId string `xml:"filterId"` - CompRes ManagedObjectReference `xml:"compRes"` -} - -func init() { - t["QueryIoFilterIssuesRequestType"] = reflect.TypeOf((*QueryIoFilterIssuesRequestType)(nil)).Elem() -} - -type QueryIoFilterIssuesResponse struct { - Returnval IoFilterQueryIssueResult `xml:"returnval"` -} - -type QueryIpPools QueryIpPoolsRequestType - -func init() { - t["QueryIpPools"] = reflect.TypeOf((*QueryIpPools)(nil)).Elem() -} - -type QueryIpPoolsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Dc ManagedObjectReference `xml:"dc"` -} - -func init() { - t["QueryIpPoolsRequestType"] = reflect.TypeOf((*QueryIpPoolsRequestType)(nil)).Elem() -} - -type QueryIpPoolsResponse struct { - Returnval []IpPool `xml:"returnval,omitempty"` -} - -type QueryLicenseSourceAvailability QueryLicenseSourceAvailabilityRequestType - -func init() { - t["QueryLicenseSourceAvailability"] = reflect.TypeOf((*QueryLicenseSourceAvailability)(nil)).Elem() -} - -type QueryLicenseSourceAvailabilityRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host *ManagedObjectReference `xml:"host,omitempty"` -} - -func init() { - t["QueryLicenseSourceAvailabilityRequestType"] = reflect.TypeOf((*QueryLicenseSourceAvailabilityRequestType)(nil)).Elem() -} - -type QueryLicenseSourceAvailabilityResponse struct { - Returnval []LicenseAvailabilityInfo `xml:"returnval,omitempty"` -} - -type QueryLicenseUsage QueryLicenseUsageRequestType - -func init() { - t["QueryLicenseUsage"] = reflect.TypeOf((*QueryLicenseUsage)(nil)).Elem() -} - -type QueryLicenseUsageRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host *ManagedObjectReference `xml:"host,omitempty"` -} - -func init() { - t["QueryLicenseUsageRequestType"] = reflect.TypeOf((*QueryLicenseUsageRequestType)(nil)).Elem() -} - -type QueryLicenseUsageResponse struct { - Returnval LicenseUsageInfo `xml:"returnval"` -} - -type QueryLockdownExceptions QueryLockdownExceptionsRequestType - -func init() { - t["QueryLockdownExceptions"] = reflect.TypeOf((*QueryLockdownExceptions)(nil)).Elem() -} - -type QueryLockdownExceptionsRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["QueryLockdownExceptionsRequestType"] = reflect.TypeOf((*QueryLockdownExceptionsRequestType)(nil)).Elem() -} - -type QueryLockdownExceptionsResponse struct { - Returnval []string `xml:"returnval,omitempty"` -} - -type QueryManagedBy QueryManagedByRequestType - -func init() { - t["QueryManagedBy"] = reflect.TypeOf((*QueryManagedBy)(nil)).Elem() -} - -type QueryManagedByRequestType struct { - This ManagedObjectReference `xml:"_this"` - ExtensionKey string `xml:"extensionKey"` -} - -func init() { - t["QueryManagedByRequestType"] = reflect.TypeOf((*QueryManagedByRequestType)(nil)).Elem() -} - -type QueryManagedByResponse struct { - Returnval []ManagedObjectReference `xml:"returnval,omitempty"` -} - -type QueryMemoryOverhead QueryMemoryOverheadRequestType - -func init() { - t["QueryMemoryOverhead"] = reflect.TypeOf((*QueryMemoryOverhead)(nil)).Elem() -} - -type QueryMemoryOverheadEx QueryMemoryOverheadExRequestType - -func init() { - t["QueryMemoryOverheadEx"] = reflect.TypeOf((*QueryMemoryOverheadEx)(nil)).Elem() -} - -type QueryMemoryOverheadExRequestType struct { - This ManagedObjectReference `xml:"_this"` - VmConfigInfo VirtualMachineConfigInfo `xml:"vmConfigInfo"` -} - -func init() { - t["QueryMemoryOverheadExRequestType"] = reflect.TypeOf((*QueryMemoryOverheadExRequestType)(nil)).Elem() -} - -type QueryMemoryOverheadExResponse struct { - Returnval int64 `xml:"returnval"` -} - -type QueryMemoryOverheadRequestType struct { - This ManagedObjectReference `xml:"_this"` - MemorySize int64 `xml:"memorySize"` - VideoRamSize int32 `xml:"videoRamSize,omitempty"` - NumVcpus int32 `xml:"numVcpus"` -} - -func init() { - t["QueryMemoryOverheadRequestType"] = reflect.TypeOf((*QueryMemoryOverheadRequestType)(nil)).Elem() -} - -type QueryMemoryOverheadResponse struct { - Returnval int64 `xml:"returnval"` -} - -type QueryMigrationDependencies QueryMigrationDependenciesRequestType - -func init() { - t["QueryMigrationDependencies"] = reflect.TypeOf((*QueryMigrationDependencies)(nil)).Elem() -} - -type QueryMigrationDependenciesRequestType struct { - This ManagedObjectReference `xml:"_this"` - PnicDevice []string `xml:"pnicDevice"` -} - -func init() { - t["QueryMigrationDependenciesRequestType"] = reflect.TypeOf((*QueryMigrationDependenciesRequestType)(nil)).Elem() -} - -type QueryMigrationDependenciesResponse struct { - Returnval IscsiMigrationDependency `xml:"returnval"` -} - -type QueryModules QueryModulesRequestType - -func init() { - t["QueryModules"] = reflect.TypeOf((*QueryModules)(nil)).Elem() -} - -type QueryModulesRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["QueryModulesRequestType"] = reflect.TypeOf((*QueryModulesRequestType)(nil)).Elem() -} - -type QueryModulesResponse struct { - Returnval []KernelModuleInfo `xml:"returnval,omitempty"` -} - -type QueryNFSUser QueryNFSUserRequestType - -func init() { - t["QueryNFSUser"] = reflect.TypeOf((*QueryNFSUser)(nil)).Elem() -} - -type QueryNFSUserRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["QueryNFSUserRequestType"] = reflect.TypeOf((*QueryNFSUserRequestType)(nil)).Elem() -} - -type QueryNFSUserResponse struct { - Returnval *HostNasVolumeUserInfo `xml:"returnval,omitempty"` -} - -type QueryNetConfig QueryNetConfigRequestType - -func init() { - t["QueryNetConfig"] = reflect.TypeOf((*QueryNetConfig)(nil)).Elem() -} - -type QueryNetConfigRequestType struct { - This ManagedObjectReference `xml:"_this"` - NicType string `xml:"nicType"` -} - -func init() { - t["QueryNetConfigRequestType"] = reflect.TypeOf((*QueryNetConfigRequestType)(nil)).Elem() -} - -type QueryNetConfigResponse struct { - Returnval *VirtualNicManagerNetConfig `xml:"returnval,omitempty"` -} - -type QueryNetworkHint QueryNetworkHintRequestType - -func init() { - t["QueryNetworkHint"] = reflect.TypeOf((*QueryNetworkHint)(nil)).Elem() -} - -type QueryNetworkHintRequestType struct { - This ManagedObjectReference `xml:"_this"` - Device []string `xml:"device,omitempty"` -} - -func init() { - t["QueryNetworkHintRequestType"] = reflect.TypeOf((*QueryNetworkHintRequestType)(nil)).Elem() -} - -type QueryNetworkHintResponse struct { - Returnval []PhysicalNicHintInfo `xml:"returnval,omitempty"` -} - -type QueryObjectsOnPhysicalVsanDisk QueryObjectsOnPhysicalVsanDiskRequestType - -func init() { - t["QueryObjectsOnPhysicalVsanDisk"] = reflect.TypeOf((*QueryObjectsOnPhysicalVsanDisk)(nil)).Elem() -} - -type QueryObjectsOnPhysicalVsanDiskRequestType struct { - This ManagedObjectReference `xml:"_this"` - Disks []string `xml:"disks"` -} - -func init() { - t["QueryObjectsOnPhysicalVsanDiskRequestType"] = reflect.TypeOf((*QueryObjectsOnPhysicalVsanDiskRequestType)(nil)).Elem() -} - -type QueryObjectsOnPhysicalVsanDiskResponse struct { - Returnval string `xml:"returnval"` -} - -type QueryOptions QueryOptionsRequestType - -func init() { - t["QueryOptions"] = reflect.TypeOf((*QueryOptions)(nil)).Elem() -} - -type QueryOptionsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name,omitempty"` -} - -func init() { - t["QueryOptionsRequestType"] = reflect.TypeOf((*QueryOptionsRequestType)(nil)).Elem() -} - -type QueryOptionsResponse struct { - Returnval []BaseOptionValue `xml:"returnval,omitempty,typeattr"` -} - -type QueryPartitionCreateDesc QueryPartitionCreateDescRequestType - -func init() { - t["QueryPartitionCreateDesc"] = reflect.TypeOf((*QueryPartitionCreateDesc)(nil)).Elem() -} - -type QueryPartitionCreateDescRequestType struct { - This ManagedObjectReference `xml:"_this"` - DiskUuid string `xml:"diskUuid"` - DiagnosticType string `xml:"diagnosticType"` -} - -func init() { - t["QueryPartitionCreateDescRequestType"] = reflect.TypeOf((*QueryPartitionCreateDescRequestType)(nil)).Elem() -} - -type QueryPartitionCreateDescResponse struct { - Returnval HostDiagnosticPartitionCreateDescription `xml:"returnval"` -} - -type QueryPartitionCreateOptions QueryPartitionCreateOptionsRequestType - -func init() { - t["QueryPartitionCreateOptions"] = reflect.TypeOf((*QueryPartitionCreateOptions)(nil)).Elem() -} - -type QueryPartitionCreateOptionsRequestType struct { - This ManagedObjectReference `xml:"_this"` - StorageType string `xml:"storageType"` - DiagnosticType string `xml:"diagnosticType"` -} - -func init() { - t["QueryPartitionCreateOptionsRequestType"] = reflect.TypeOf((*QueryPartitionCreateOptionsRequestType)(nil)).Elem() -} - -type QueryPartitionCreateOptionsResponse struct { - Returnval []HostDiagnosticPartitionCreateOption `xml:"returnval,omitempty"` -} - -type QueryPathSelectionPolicyOptions QueryPathSelectionPolicyOptionsRequestType - -func init() { - t["QueryPathSelectionPolicyOptions"] = reflect.TypeOf((*QueryPathSelectionPolicyOptions)(nil)).Elem() -} - -type QueryPathSelectionPolicyOptionsRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["QueryPathSelectionPolicyOptionsRequestType"] = reflect.TypeOf((*QueryPathSelectionPolicyOptionsRequestType)(nil)).Elem() -} - -type QueryPathSelectionPolicyOptionsResponse struct { - Returnval []HostPathSelectionPolicyOption `xml:"returnval,omitempty"` -} - -type QueryPerf QueryPerfRequestType - -func init() { - t["QueryPerf"] = reflect.TypeOf((*QueryPerf)(nil)).Elem() -} - -type QueryPerfComposite QueryPerfCompositeRequestType - -func init() { - t["QueryPerfComposite"] = reflect.TypeOf((*QueryPerfComposite)(nil)).Elem() -} - -type QueryPerfCompositeRequestType struct { - This ManagedObjectReference `xml:"_this"` - QuerySpec PerfQuerySpec `xml:"querySpec"` -} - -func init() { - t["QueryPerfCompositeRequestType"] = reflect.TypeOf((*QueryPerfCompositeRequestType)(nil)).Elem() -} - -type QueryPerfCompositeResponse struct { - Returnval PerfCompositeMetric `xml:"returnval"` -} - -type QueryPerfCounter QueryPerfCounterRequestType - -func init() { - t["QueryPerfCounter"] = reflect.TypeOf((*QueryPerfCounter)(nil)).Elem() -} - -type QueryPerfCounterByLevel QueryPerfCounterByLevelRequestType - -func init() { - t["QueryPerfCounterByLevel"] = reflect.TypeOf((*QueryPerfCounterByLevel)(nil)).Elem() -} - -type QueryPerfCounterByLevelRequestType struct { - This ManagedObjectReference `xml:"_this"` - Level int32 `xml:"level"` -} - -func init() { - t["QueryPerfCounterByLevelRequestType"] = reflect.TypeOf((*QueryPerfCounterByLevelRequestType)(nil)).Elem() -} - -type QueryPerfCounterByLevelResponse struct { - Returnval []PerfCounterInfo `xml:"returnval"` -} - -type QueryPerfCounterRequestType struct { - This ManagedObjectReference `xml:"_this"` - CounterId []int32 `xml:"counterId"` -} - -func init() { - t["QueryPerfCounterRequestType"] = reflect.TypeOf((*QueryPerfCounterRequestType)(nil)).Elem() -} - -type QueryPerfCounterResponse struct { - Returnval []PerfCounterInfo `xml:"returnval,omitempty"` -} - -type QueryPerfProviderSummary QueryPerfProviderSummaryRequestType - -func init() { - t["QueryPerfProviderSummary"] = reflect.TypeOf((*QueryPerfProviderSummary)(nil)).Elem() -} - -type QueryPerfProviderSummaryRequestType struct { - This ManagedObjectReference `xml:"_this"` - Entity ManagedObjectReference `xml:"entity"` -} - -func init() { - t["QueryPerfProviderSummaryRequestType"] = reflect.TypeOf((*QueryPerfProviderSummaryRequestType)(nil)).Elem() -} - -type QueryPerfProviderSummaryResponse struct { - Returnval PerfProviderSummary `xml:"returnval"` -} - -type QueryPerfRequestType struct { - This ManagedObjectReference `xml:"_this"` - QuerySpec []PerfQuerySpec `xml:"querySpec"` -} - -func init() { - t["QueryPerfRequestType"] = reflect.TypeOf((*QueryPerfRequestType)(nil)).Elem() -} - -type QueryPerfResponse struct { - Returnval []BasePerfEntityMetricBase `xml:"returnval,omitempty,typeattr"` -} - -type QueryPhysicalVsanDisks QueryPhysicalVsanDisksRequestType - -func init() { - t["QueryPhysicalVsanDisks"] = reflect.TypeOf((*QueryPhysicalVsanDisks)(nil)).Elem() -} - -type QueryPhysicalVsanDisksRequestType struct { - This ManagedObjectReference `xml:"_this"` - Props []string `xml:"props,omitempty"` -} - -func init() { - t["QueryPhysicalVsanDisksRequestType"] = reflect.TypeOf((*QueryPhysicalVsanDisksRequestType)(nil)).Elem() -} - -type QueryPhysicalVsanDisksResponse struct { - Returnval string `xml:"returnval"` -} - -type QueryPnicStatus QueryPnicStatusRequestType - -func init() { - t["QueryPnicStatus"] = reflect.TypeOf((*QueryPnicStatus)(nil)).Elem() -} - -type QueryPnicStatusRequestType struct { - This ManagedObjectReference `xml:"_this"` - PnicDevice string `xml:"pnicDevice"` -} - -func init() { - t["QueryPnicStatusRequestType"] = reflect.TypeOf((*QueryPnicStatusRequestType)(nil)).Elem() -} - -type QueryPnicStatusResponse struct { - Returnval IscsiStatus `xml:"returnval"` -} - -type QueryPolicyMetadata QueryPolicyMetadataRequestType - -func init() { - t["QueryPolicyMetadata"] = reflect.TypeOf((*QueryPolicyMetadata)(nil)).Elem() -} - -type QueryPolicyMetadataRequestType struct { - This ManagedObjectReference `xml:"_this"` - PolicyName []string `xml:"policyName,omitempty"` - Profile *ManagedObjectReference `xml:"profile,omitempty"` -} - -func init() { - t["QueryPolicyMetadataRequestType"] = reflect.TypeOf((*QueryPolicyMetadataRequestType)(nil)).Elem() -} - -type QueryPolicyMetadataResponse struct { - Returnval []ProfilePolicyMetadata `xml:"returnval,omitempty"` -} - -type QueryProfileStructure QueryProfileStructureRequestType - -func init() { - t["QueryProfileStructure"] = reflect.TypeOf((*QueryProfileStructure)(nil)).Elem() -} - -type QueryProfileStructureRequestType struct { - This ManagedObjectReference `xml:"_this"` - Profile *ManagedObjectReference `xml:"profile,omitempty"` -} - -func init() { - t["QueryProfileStructureRequestType"] = reflect.TypeOf((*QueryProfileStructureRequestType)(nil)).Elem() -} - -type QueryProfileStructureResponse struct { - Returnval ProfileProfileStructure `xml:"returnval"` -} - -type QueryResourceConfigOption QueryResourceConfigOptionRequestType - -func init() { - t["QueryResourceConfigOption"] = reflect.TypeOf((*QueryResourceConfigOption)(nil)).Elem() -} - -type QueryResourceConfigOptionRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["QueryResourceConfigOptionRequestType"] = reflect.TypeOf((*QueryResourceConfigOptionRequestType)(nil)).Elem() -} - -type QueryResourceConfigOptionResponse struct { - Returnval ResourceConfigOption `xml:"returnval"` -} - -type QueryServiceList QueryServiceListRequestType - -func init() { - t["QueryServiceList"] = reflect.TypeOf((*QueryServiceList)(nil)).Elem() -} - -type QueryServiceListRequestType struct { - This ManagedObjectReference `xml:"_this"` - ServiceName string `xml:"serviceName,omitempty"` - Location []string `xml:"location,omitempty"` -} - -func init() { - t["QueryServiceListRequestType"] = reflect.TypeOf((*QueryServiceListRequestType)(nil)).Elem() -} - -type QueryServiceListResponse struct { - Returnval []ServiceManagerServiceInfo `xml:"returnval,omitempty"` -} - -type QueryStorageArrayTypePolicyOptions QueryStorageArrayTypePolicyOptionsRequestType - -func init() { - t["QueryStorageArrayTypePolicyOptions"] = reflect.TypeOf((*QueryStorageArrayTypePolicyOptions)(nil)).Elem() -} - -type QueryStorageArrayTypePolicyOptionsRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["QueryStorageArrayTypePolicyOptionsRequestType"] = reflect.TypeOf((*QueryStorageArrayTypePolicyOptionsRequestType)(nil)).Elem() -} - -type QueryStorageArrayTypePolicyOptionsResponse struct { - Returnval []HostStorageArrayTypePolicyOption `xml:"returnval,omitempty"` -} - -type QuerySupportedFeatures QuerySupportedFeaturesRequestType - -func init() { - t["QuerySupportedFeatures"] = reflect.TypeOf((*QuerySupportedFeatures)(nil)).Elem() -} - -type QuerySupportedFeaturesRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host *ManagedObjectReference `xml:"host,omitempty"` -} - -func init() { - t["QuerySupportedFeaturesRequestType"] = reflect.TypeOf((*QuerySupportedFeaturesRequestType)(nil)).Elem() -} - -type QuerySupportedFeaturesResponse struct { - Returnval []LicenseFeatureInfo `xml:"returnval,omitempty"` -} - -type QuerySyncingVsanObjects QuerySyncingVsanObjectsRequestType - -func init() { - t["QuerySyncingVsanObjects"] = reflect.TypeOf((*QuerySyncingVsanObjects)(nil)).Elem() -} - -type QuerySyncingVsanObjectsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Uuids []string `xml:"uuids,omitempty"` -} - -func init() { - t["QuerySyncingVsanObjectsRequestType"] = reflect.TypeOf((*QuerySyncingVsanObjectsRequestType)(nil)).Elem() -} - -type QuerySyncingVsanObjectsResponse struct { - Returnval string `xml:"returnval"` -} - -type QuerySystemUsers QuerySystemUsersRequestType - -func init() { - t["QuerySystemUsers"] = reflect.TypeOf((*QuerySystemUsers)(nil)).Elem() -} - -type QuerySystemUsersRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["QuerySystemUsersRequestType"] = reflect.TypeOf((*QuerySystemUsersRequestType)(nil)).Elem() -} - -type QuerySystemUsersResponse struct { - Returnval []string `xml:"returnval,omitempty"` -} - -type QueryTargetCapabilities QueryTargetCapabilitiesRequestType - -func init() { - t["QueryTargetCapabilities"] = reflect.TypeOf((*QueryTargetCapabilities)(nil)).Elem() -} - -type QueryTargetCapabilitiesRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host *ManagedObjectReference `xml:"host,omitempty"` -} - -func init() { - t["QueryTargetCapabilitiesRequestType"] = reflect.TypeOf((*QueryTargetCapabilitiesRequestType)(nil)).Elem() -} - -type QueryTargetCapabilitiesResponse struct { - Returnval *HostCapability `xml:"returnval,omitempty"` -} - -type QueryTpmAttestationReport QueryTpmAttestationReportRequestType - -func init() { - t["QueryTpmAttestationReport"] = reflect.TypeOf((*QueryTpmAttestationReport)(nil)).Elem() -} - -type QueryTpmAttestationReportRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["QueryTpmAttestationReportRequestType"] = reflect.TypeOf((*QueryTpmAttestationReportRequestType)(nil)).Elem() -} - -type QueryTpmAttestationReportResponse struct { - Returnval *HostTpmAttestationReport `xml:"returnval,omitempty"` -} - -type QueryUnownedFiles QueryUnownedFilesRequestType - -func init() { - t["QueryUnownedFiles"] = reflect.TypeOf((*QueryUnownedFiles)(nil)).Elem() -} - -type QueryUnownedFilesRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["QueryUnownedFilesRequestType"] = reflect.TypeOf((*QueryUnownedFilesRequestType)(nil)).Elem() -} - -type QueryUnownedFilesResponse struct { - Returnval []string `xml:"returnval,omitempty"` -} - -type QueryUnresolvedVmfsVolume QueryUnresolvedVmfsVolumeRequestType - -func init() { - t["QueryUnresolvedVmfsVolume"] = reflect.TypeOf((*QueryUnresolvedVmfsVolume)(nil)).Elem() -} - -type QueryUnresolvedVmfsVolumeRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["QueryUnresolvedVmfsVolumeRequestType"] = reflect.TypeOf((*QueryUnresolvedVmfsVolumeRequestType)(nil)).Elem() -} - -type QueryUnresolvedVmfsVolumeResponse struct { - Returnval []HostUnresolvedVmfsVolume `xml:"returnval,omitempty"` -} - -type QueryUnresolvedVmfsVolumes QueryUnresolvedVmfsVolumesRequestType - -func init() { - t["QueryUnresolvedVmfsVolumes"] = reflect.TypeOf((*QueryUnresolvedVmfsVolumes)(nil)).Elem() -} - -type QueryUnresolvedVmfsVolumesRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["QueryUnresolvedVmfsVolumesRequestType"] = reflect.TypeOf((*QueryUnresolvedVmfsVolumesRequestType)(nil)).Elem() -} - -type QueryUnresolvedVmfsVolumesResponse struct { - Returnval []HostUnresolvedVmfsVolume `xml:"returnval,omitempty"` -} - -type QueryUsedVlanIdInDvs QueryUsedVlanIdInDvsRequestType - -func init() { - t["QueryUsedVlanIdInDvs"] = reflect.TypeOf((*QueryUsedVlanIdInDvs)(nil)).Elem() -} - -type QueryUsedVlanIdInDvsRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["QueryUsedVlanIdInDvsRequestType"] = reflect.TypeOf((*QueryUsedVlanIdInDvsRequestType)(nil)).Elem() -} - -type QueryUsedVlanIdInDvsResponse struct { - Returnval []int32 `xml:"returnval,omitempty"` -} - -type QueryVMotionCompatibility QueryVMotionCompatibilityRequestType - -func init() { - t["QueryVMotionCompatibility"] = reflect.TypeOf((*QueryVMotionCompatibility)(nil)).Elem() -} - -type QueryVMotionCompatibilityExRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm []ManagedObjectReference `xml:"vm"` - Host []ManagedObjectReference `xml:"host"` -} - -func init() { - t["QueryVMotionCompatibilityExRequestType"] = reflect.TypeOf((*QueryVMotionCompatibilityExRequestType)(nil)).Elem() -} - -type QueryVMotionCompatibilityEx_Task QueryVMotionCompatibilityExRequestType - -func init() { - t["QueryVMotionCompatibilityEx_Task"] = reflect.TypeOf((*QueryVMotionCompatibilityEx_Task)(nil)).Elem() -} - -type QueryVMotionCompatibilityEx_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type QueryVMotionCompatibilityRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Host []ManagedObjectReference `xml:"host"` - Compatibility []string `xml:"compatibility,omitempty"` -} - -func init() { - t["QueryVMotionCompatibilityRequestType"] = reflect.TypeOf((*QueryVMotionCompatibilityRequestType)(nil)).Elem() -} - -type QueryVMotionCompatibilityResponse struct { - Returnval []HostVMotionCompatibility `xml:"returnval,omitempty"` -} - -type QueryVirtualDiskFragmentation QueryVirtualDiskFragmentationRequestType - -func init() { - t["QueryVirtualDiskFragmentation"] = reflect.TypeOf((*QueryVirtualDiskFragmentation)(nil)).Elem() -} - -type QueryVirtualDiskFragmentationRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` - Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` -} - -func init() { - t["QueryVirtualDiskFragmentationRequestType"] = reflect.TypeOf((*QueryVirtualDiskFragmentationRequestType)(nil)).Elem() -} - -type QueryVirtualDiskFragmentationResponse struct { - Returnval int32 `xml:"returnval"` -} - -type QueryVirtualDiskGeometry QueryVirtualDiskGeometryRequestType - -func init() { - t["QueryVirtualDiskGeometry"] = reflect.TypeOf((*QueryVirtualDiskGeometry)(nil)).Elem() -} - -type QueryVirtualDiskGeometryRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` - Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` -} - -func init() { - t["QueryVirtualDiskGeometryRequestType"] = reflect.TypeOf((*QueryVirtualDiskGeometryRequestType)(nil)).Elem() -} - -type QueryVirtualDiskGeometryResponse struct { - Returnval HostDiskDimensionsChs `xml:"returnval"` -} - -type QueryVirtualDiskUuid QueryVirtualDiskUuidRequestType - -func init() { - t["QueryVirtualDiskUuid"] = reflect.TypeOf((*QueryVirtualDiskUuid)(nil)).Elem() -} - -type QueryVirtualDiskUuidRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` - Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` -} - -func init() { - t["QueryVirtualDiskUuidRequestType"] = reflect.TypeOf((*QueryVirtualDiskUuidRequestType)(nil)).Elem() -} - -type QueryVirtualDiskUuidResponse struct { - Returnval string `xml:"returnval"` -} - -type QueryVmfsDatastoreCreateOptions QueryVmfsDatastoreCreateOptionsRequestType - -func init() { - t["QueryVmfsDatastoreCreateOptions"] = reflect.TypeOf((*QueryVmfsDatastoreCreateOptions)(nil)).Elem() -} - -type QueryVmfsDatastoreCreateOptionsRequestType struct { - This ManagedObjectReference `xml:"_this"` - DevicePath string `xml:"devicePath"` - VmfsMajorVersion int32 `xml:"vmfsMajorVersion,omitempty"` -} - -func init() { - t["QueryVmfsDatastoreCreateOptionsRequestType"] = reflect.TypeOf((*QueryVmfsDatastoreCreateOptionsRequestType)(nil)).Elem() -} - -type QueryVmfsDatastoreCreateOptionsResponse struct { - Returnval []VmfsDatastoreOption `xml:"returnval,omitempty"` -} - -type QueryVmfsDatastoreExpandOptions QueryVmfsDatastoreExpandOptionsRequestType - -func init() { - t["QueryVmfsDatastoreExpandOptions"] = reflect.TypeOf((*QueryVmfsDatastoreExpandOptions)(nil)).Elem() -} - -type QueryVmfsDatastoreExpandOptionsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Datastore ManagedObjectReference `xml:"datastore"` -} - -func init() { - t["QueryVmfsDatastoreExpandOptionsRequestType"] = reflect.TypeOf((*QueryVmfsDatastoreExpandOptionsRequestType)(nil)).Elem() -} - -type QueryVmfsDatastoreExpandOptionsResponse struct { - Returnval []VmfsDatastoreOption `xml:"returnval,omitempty"` -} - -type QueryVmfsDatastoreExtendOptions QueryVmfsDatastoreExtendOptionsRequestType - -func init() { - t["QueryVmfsDatastoreExtendOptions"] = reflect.TypeOf((*QueryVmfsDatastoreExtendOptions)(nil)).Elem() -} - -type QueryVmfsDatastoreExtendOptionsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Datastore ManagedObjectReference `xml:"datastore"` - DevicePath string `xml:"devicePath"` - SuppressExpandCandidates *bool `xml:"suppressExpandCandidates"` -} - -func init() { - t["QueryVmfsDatastoreExtendOptionsRequestType"] = reflect.TypeOf((*QueryVmfsDatastoreExtendOptionsRequestType)(nil)).Elem() -} - -type QueryVmfsDatastoreExtendOptionsResponse struct { - Returnval []VmfsDatastoreOption `xml:"returnval,omitempty"` -} - -type QueryVnicStatus QueryVnicStatusRequestType - -func init() { - t["QueryVnicStatus"] = reflect.TypeOf((*QueryVnicStatus)(nil)).Elem() -} - -type QueryVnicStatusRequestType struct { - This ManagedObjectReference `xml:"_this"` - VnicDevice string `xml:"vnicDevice"` -} - -func init() { - t["QueryVnicStatusRequestType"] = reflect.TypeOf((*QueryVnicStatusRequestType)(nil)).Elem() -} - -type QueryVnicStatusResponse struct { - Returnval IscsiStatus `xml:"returnval"` -} - -type QueryVsanObjectUuidsByFilter QueryVsanObjectUuidsByFilterRequestType - -func init() { - t["QueryVsanObjectUuidsByFilter"] = reflect.TypeOf((*QueryVsanObjectUuidsByFilter)(nil)).Elem() -} - -type QueryVsanObjectUuidsByFilterRequestType struct { - This ManagedObjectReference `xml:"_this"` - Uuids []string `xml:"uuids,omitempty"` - Limit int32 `xml:"limit,omitempty"` - Version int32 `xml:"version,omitempty"` -} - -func init() { - t["QueryVsanObjectUuidsByFilterRequestType"] = reflect.TypeOf((*QueryVsanObjectUuidsByFilterRequestType)(nil)).Elem() -} - -type QueryVsanObjectUuidsByFilterResponse struct { - Returnval []string `xml:"returnval,omitempty"` -} - -type QueryVsanObjects QueryVsanObjectsRequestType - -func init() { - t["QueryVsanObjects"] = reflect.TypeOf((*QueryVsanObjects)(nil)).Elem() -} - -type QueryVsanObjectsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Uuids []string `xml:"uuids,omitempty"` -} - -func init() { - t["QueryVsanObjectsRequestType"] = reflect.TypeOf((*QueryVsanObjectsRequestType)(nil)).Elem() -} - -type QueryVsanObjectsResponse struct { - Returnval string `xml:"returnval"` -} - -type QueryVsanStatistics QueryVsanStatisticsRequestType - -func init() { - t["QueryVsanStatistics"] = reflect.TypeOf((*QueryVsanStatistics)(nil)).Elem() -} - -type QueryVsanStatisticsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Labels []string `xml:"labels"` -} - -func init() { - t["QueryVsanStatisticsRequestType"] = reflect.TypeOf((*QueryVsanStatisticsRequestType)(nil)).Elem() -} - -type QueryVsanStatisticsResponse struct { - Returnval string `xml:"returnval"` -} - -type QueryVsanUpgradeStatus QueryVsanUpgradeStatusRequestType - -func init() { - t["QueryVsanUpgradeStatus"] = reflect.TypeOf((*QueryVsanUpgradeStatus)(nil)).Elem() -} - -type QueryVsanUpgradeStatusRequestType struct { - This ManagedObjectReference `xml:"_this"` - Cluster ManagedObjectReference `xml:"cluster"` -} - -func init() { - t["QueryVsanUpgradeStatusRequestType"] = reflect.TypeOf((*QueryVsanUpgradeStatusRequestType)(nil)).Elem() -} - -type QueryVsanUpgradeStatusResponse struct { - Returnval VsanUpgradeSystemUpgradeStatus `xml:"returnval"` -} - -type QuestionPending struct { - InvalidState - - Text string `xml:"text"` -} - -func init() { - t["QuestionPending"] = reflect.TypeOf((*QuestionPending)(nil)).Elem() -} - -type QuestionPendingFault QuestionPending - -func init() { - t["QuestionPendingFault"] = reflect.TypeOf((*QuestionPendingFault)(nil)).Elem() -} - -type QuiesceDatastoreIOForHAFailed struct { - ResourceInUse - - Host ManagedObjectReference `xml:"host"` - HostName string `xml:"hostName"` - Ds ManagedObjectReference `xml:"ds"` - DsName string `xml:"dsName"` -} - -func init() { - t["QuiesceDatastoreIOForHAFailed"] = reflect.TypeOf((*QuiesceDatastoreIOForHAFailed)(nil)).Elem() -} - -type QuiesceDatastoreIOForHAFailedFault QuiesceDatastoreIOForHAFailed - -func init() { - t["QuiesceDatastoreIOForHAFailedFault"] = reflect.TypeOf((*QuiesceDatastoreIOForHAFailedFault)(nil)).Elem() -} - -type RDMConversionNotSupported struct { - MigrationFault - - Device string `xml:"device"` -} - -func init() { - t["RDMConversionNotSupported"] = reflect.TypeOf((*RDMConversionNotSupported)(nil)).Elem() -} - -type RDMConversionNotSupportedFault RDMConversionNotSupported - -func init() { - t["RDMConversionNotSupportedFault"] = reflect.TypeOf((*RDMConversionNotSupportedFault)(nil)).Elem() -} - -type RDMNotPreserved struct { - MigrationFault - - Device string `xml:"device"` -} - -func init() { - t["RDMNotPreserved"] = reflect.TypeOf((*RDMNotPreserved)(nil)).Elem() -} - -type RDMNotPreservedFault RDMNotPreserved - -func init() { - t["RDMNotPreservedFault"] = reflect.TypeOf((*RDMNotPreservedFault)(nil)).Elem() -} - -type RDMNotSupported struct { - DeviceNotSupported -} - -func init() { - t["RDMNotSupported"] = reflect.TypeOf((*RDMNotSupported)(nil)).Elem() -} - -type RDMNotSupportedFault BaseRDMNotSupported - -func init() { - t["RDMNotSupportedFault"] = reflect.TypeOf((*RDMNotSupportedFault)(nil)).Elem() -} - -type RDMNotSupportedOnDatastore struct { - VmConfigFault - - Device string `xml:"device"` - Datastore ManagedObjectReference `xml:"datastore"` - DatastoreName string `xml:"datastoreName"` -} - -func init() { - t["RDMNotSupportedOnDatastore"] = reflect.TypeOf((*RDMNotSupportedOnDatastore)(nil)).Elem() -} - -type RDMNotSupportedOnDatastoreFault RDMNotSupportedOnDatastore - -func init() { - t["RDMNotSupportedOnDatastoreFault"] = reflect.TypeOf((*RDMNotSupportedOnDatastoreFault)(nil)).Elem() -} - -type RDMPointsToInaccessibleDisk struct { - CannotAccessVmDisk -} - -func init() { - t["RDMPointsToInaccessibleDisk"] = reflect.TypeOf((*RDMPointsToInaccessibleDisk)(nil)).Elem() -} - -type RDMPointsToInaccessibleDiskFault RDMPointsToInaccessibleDisk - -func init() { - t["RDMPointsToInaccessibleDiskFault"] = reflect.TypeOf((*RDMPointsToInaccessibleDiskFault)(nil)).Elem() -} - -type RawDiskNotSupported struct { - DeviceNotSupported -} - -func init() { - t["RawDiskNotSupported"] = reflect.TypeOf((*RawDiskNotSupported)(nil)).Elem() -} - -type RawDiskNotSupportedFault RawDiskNotSupported - -func init() { - t["RawDiskNotSupportedFault"] = reflect.TypeOf((*RawDiskNotSupportedFault)(nil)).Elem() -} - -type ReadEnvironmentVariableInGuest ReadEnvironmentVariableInGuestRequestType - -func init() { - t["ReadEnvironmentVariableInGuest"] = reflect.TypeOf((*ReadEnvironmentVariableInGuest)(nil)).Elem() -} - -type ReadEnvironmentVariableInGuestRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Auth BaseGuestAuthentication `xml:"auth,typeattr"` - Names []string `xml:"names,omitempty"` -} - -func init() { - t["ReadEnvironmentVariableInGuestRequestType"] = reflect.TypeOf((*ReadEnvironmentVariableInGuestRequestType)(nil)).Elem() -} - -type ReadEnvironmentVariableInGuestResponse struct { - Returnval []string `xml:"returnval,omitempty"` -} - -type ReadHostResourcePoolTreeFailed struct { - HostConnectFault -} - -func init() { - t["ReadHostResourcePoolTreeFailed"] = reflect.TypeOf((*ReadHostResourcePoolTreeFailed)(nil)).Elem() -} - -type ReadHostResourcePoolTreeFailedFault ReadHostResourcePoolTreeFailed - -func init() { - t["ReadHostResourcePoolTreeFailedFault"] = reflect.TypeOf((*ReadHostResourcePoolTreeFailedFault)(nil)).Elem() -} - -type ReadNextEvents ReadNextEventsRequestType - -func init() { - t["ReadNextEvents"] = reflect.TypeOf((*ReadNextEvents)(nil)).Elem() -} - -type ReadNextEventsRequestType struct { - This ManagedObjectReference `xml:"_this"` - MaxCount int32 `xml:"maxCount"` -} - -func init() { - t["ReadNextEventsRequestType"] = reflect.TypeOf((*ReadNextEventsRequestType)(nil)).Elem() -} - -type ReadNextEventsResponse struct { - Returnval []BaseEvent `xml:"returnval,omitempty,typeattr"` -} - -type ReadNextTasks ReadNextTasksRequestType - -func init() { - t["ReadNextTasks"] = reflect.TypeOf((*ReadNextTasks)(nil)).Elem() -} - -type ReadNextTasksRequestType struct { - This ManagedObjectReference `xml:"_this"` - MaxCount int32 `xml:"maxCount"` -} - -func init() { - t["ReadNextTasksRequestType"] = reflect.TypeOf((*ReadNextTasksRequestType)(nil)).Elem() -} - -type ReadNextTasksResponse struct { - Returnval []TaskInfo `xml:"returnval,omitempty"` -} - -type ReadOnlyDisksWithLegacyDestination struct { - MigrationFault - - RoDiskCount int32 `xml:"roDiskCount"` - TimeoutDanger bool `xml:"timeoutDanger"` -} - -func init() { - t["ReadOnlyDisksWithLegacyDestination"] = reflect.TypeOf((*ReadOnlyDisksWithLegacyDestination)(nil)).Elem() -} - -type ReadOnlyDisksWithLegacyDestinationFault ReadOnlyDisksWithLegacyDestination - -func init() { - t["ReadOnlyDisksWithLegacyDestinationFault"] = reflect.TypeOf((*ReadOnlyDisksWithLegacyDestinationFault)(nil)).Elem() -} - -type ReadPreviousEvents ReadPreviousEventsRequestType - -func init() { - t["ReadPreviousEvents"] = reflect.TypeOf((*ReadPreviousEvents)(nil)).Elem() -} - -type ReadPreviousEventsRequestType struct { - This ManagedObjectReference `xml:"_this"` - MaxCount int32 `xml:"maxCount"` -} - -func init() { - t["ReadPreviousEventsRequestType"] = reflect.TypeOf((*ReadPreviousEventsRequestType)(nil)).Elem() -} - -type ReadPreviousEventsResponse struct { - Returnval []BaseEvent `xml:"returnval,omitempty,typeattr"` -} - -type ReadPreviousTasks ReadPreviousTasksRequestType - -func init() { - t["ReadPreviousTasks"] = reflect.TypeOf((*ReadPreviousTasks)(nil)).Elem() -} - -type ReadPreviousTasksRequestType struct { - This ManagedObjectReference `xml:"_this"` - MaxCount int32 `xml:"maxCount"` -} - -func init() { - t["ReadPreviousTasksRequestType"] = reflect.TypeOf((*ReadPreviousTasksRequestType)(nil)).Elem() -} - -type ReadPreviousTasksResponse struct { - Returnval []TaskInfo `xml:"returnval,omitempty"` -} - -type RebootGuest RebootGuestRequestType - -func init() { - t["RebootGuest"] = reflect.TypeOf((*RebootGuest)(nil)).Elem() -} - -type RebootGuestRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["RebootGuestRequestType"] = reflect.TypeOf((*RebootGuestRequestType)(nil)).Elem() -} - -type RebootGuestResponse struct { -} - -type RebootHostRequestType struct { - This ManagedObjectReference `xml:"_this"` - Force bool `xml:"force"` -} - -func init() { - t["RebootHostRequestType"] = reflect.TypeOf((*RebootHostRequestType)(nil)).Elem() -} - -type RebootHost_Task RebootHostRequestType - -func init() { - t["RebootHost_Task"] = reflect.TypeOf((*RebootHost_Task)(nil)).Elem() -} - -type RebootHost_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type RebootRequired struct { - VimFault - - Patch string `xml:"patch,omitempty"` -} - -func init() { - t["RebootRequired"] = reflect.TypeOf((*RebootRequired)(nil)).Elem() -} - -type RebootRequiredFault RebootRequired - -func init() { - t["RebootRequiredFault"] = reflect.TypeOf((*RebootRequiredFault)(nil)).Elem() -} - -type RecommendDatastores RecommendDatastoresRequestType - -func init() { - t["RecommendDatastores"] = reflect.TypeOf((*RecommendDatastores)(nil)).Elem() -} - -type RecommendDatastoresRequestType struct { - This ManagedObjectReference `xml:"_this"` - StorageSpec StoragePlacementSpec `xml:"storageSpec"` -} - -func init() { - t["RecommendDatastoresRequestType"] = reflect.TypeOf((*RecommendDatastoresRequestType)(nil)).Elem() -} - -type RecommendDatastoresResponse struct { - Returnval StoragePlacementResult `xml:"returnval"` -} - -type RecommendHostsForVm RecommendHostsForVmRequestType - -func init() { - t["RecommendHostsForVm"] = reflect.TypeOf((*RecommendHostsForVm)(nil)).Elem() -} - -type RecommendHostsForVmRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Pool *ManagedObjectReference `xml:"pool,omitempty"` -} - -func init() { - t["RecommendHostsForVmRequestType"] = reflect.TypeOf((*RecommendHostsForVmRequestType)(nil)).Elem() -} - -type RecommendHostsForVmResponse struct { - Returnval []ClusterHostRecommendation `xml:"returnval,omitempty"` -} - -type RecommissionVsanNodeRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["RecommissionVsanNodeRequestType"] = reflect.TypeOf((*RecommissionVsanNodeRequestType)(nil)).Elem() -} - -type RecommissionVsanNode_Task RecommissionVsanNodeRequestType - -func init() { - t["RecommissionVsanNode_Task"] = reflect.TypeOf((*RecommissionVsanNode_Task)(nil)).Elem() -} - -type RecommissionVsanNode_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ReconfigVMRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec VirtualMachineConfigSpec `xml:"spec"` -} - -func init() { - t["ReconfigVMRequestType"] = reflect.TypeOf((*ReconfigVMRequestType)(nil)).Elem() -} - -type ReconfigVM_Task ReconfigVMRequestType - -func init() { - t["ReconfigVM_Task"] = reflect.TypeOf((*ReconfigVM_Task)(nil)).Elem() -} - -type ReconfigVM_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ReconfigurationSatisfiable ReconfigurationSatisfiableRequestType - -func init() { - t["ReconfigurationSatisfiable"] = reflect.TypeOf((*ReconfigurationSatisfiable)(nil)).Elem() -} - -type ReconfigurationSatisfiableRequestType struct { - This ManagedObjectReference `xml:"_this"` - Pcbs []VsanPolicyChangeBatch `xml:"pcbs"` - IgnoreSatisfiability *bool `xml:"ignoreSatisfiability"` -} - -func init() { - t["ReconfigurationSatisfiableRequestType"] = reflect.TypeOf((*ReconfigurationSatisfiableRequestType)(nil)).Elem() -} - -type ReconfigurationSatisfiableResponse struct { - Returnval []VsanPolicySatisfiability `xml:"returnval"` -} - -type ReconfigureAlarm ReconfigureAlarmRequestType - -func init() { - t["ReconfigureAlarm"] = reflect.TypeOf((*ReconfigureAlarm)(nil)).Elem() -} - -type ReconfigureAlarmRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec BaseAlarmSpec `xml:"spec,typeattr"` -} - -func init() { - t["ReconfigureAlarmRequestType"] = reflect.TypeOf((*ReconfigureAlarmRequestType)(nil)).Elem() -} - -type ReconfigureAlarmResponse struct { -} - -type ReconfigureAutostart ReconfigureAutostartRequestType - -func init() { - t["ReconfigureAutostart"] = reflect.TypeOf((*ReconfigureAutostart)(nil)).Elem() -} - -type ReconfigureAutostartRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec HostAutoStartManagerConfig `xml:"spec"` -} - -func init() { - t["ReconfigureAutostartRequestType"] = reflect.TypeOf((*ReconfigureAutostartRequestType)(nil)).Elem() -} - -type ReconfigureAutostartResponse struct { -} - -type ReconfigureClusterRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec ClusterConfigSpec `xml:"spec"` - Modify bool `xml:"modify"` -} - -func init() { - t["ReconfigureClusterRequestType"] = reflect.TypeOf((*ReconfigureClusterRequestType)(nil)).Elem() -} - -type ReconfigureCluster_Task ReconfigureClusterRequestType - -func init() { - t["ReconfigureCluster_Task"] = reflect.TypeOf((*ReconfigureCluster_Task)(nil)).Elem() -} - -type ReconfigureCluster_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ReconfigureComputeResourceRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec BaseComputeResourceConfigSpec `xml:"spec,typeattr"` - Modify bool `xml:"modify"` -} - -func init() { - t["ReconfigureComputeResourceRequestType"] = reflect.TypeOf((*ReconfigureComputeResourceRequestType)(nil)).Elem() -} - -type ReconfigureComputeResource_Task ReconfigureComputeResourceRequestType - -func init() { - t["ReconfigureComputeResource_Task"] = reflect.TypeOf((*ReconfigureComputeResource_Task)(nil)).Elem() -} - -type ReconfigureComputeResource_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ReconfigureDVPortRequestType struct { - This ManagedObjectReference `xml:"_this"` - Port []DVPortConfigSpec `xml:"port"` -} - -func init() { - t["ReconfigureDVPortRequestType"] = reflect.TypeOf((*ReconfigureDVPortRequestType)(nil)).Elem() -} - -type ReconfigureDVPort_Task ReconfigureDVPortRequestType - -func init() { - t["ReconfigureDVPort_Task"] = reflect.TypeOf((*ReconfigureDVPort_Task)(nil)).Elem() -} - -type ReconfigureDVPort_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ReconfigureDVPortgroupRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec DVPortgroupConfigSpec `xml:"spec"` -} - -func init() { - t["ReconfigureDVPortgroupRequestType"] = reflect.TypeOf((*ReconfigureDVPortgroupRequestType)(nil)).Elem() -} - -type ReconfigureDVPortgroup_Task ReconfigureDVPortgroupRequestType - -func init() { - t["ReconfigureDVPortgroup_Task"] = reflect.TypeOf((*ReconfigureDVPortgroup_Task)(nil)).Elem() -} - -type ReconfigureDVPortgroup_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ReconfigureDatacenterRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec DatacenterConfigSpec `xml:"spec"` - Modify bool `xml:"modify"` -} - -func init() { - t["ReconfigureDatacenterRequestType"] = reflect.TypeOf((*ReconfigureDatacenterRequestType)(nil)).Elem() -} - -type ReconfigureDatacenter_Task ReconfigureDatacenterRequestType - -func init() { - t["ReconfigureDatacenter_Task"] = reflect.TypeOf((*ReconfigureDatacenter_Task)(nil)).Elem() -} - -type ReconfigureDatacenter_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ReconfigureDomObject ReconfigureDomObjectRequestType - -func init() { - t["ReconfigureDomObject"] = reflect.TypeOf((*ReconfigureDomObject)(nil)).Elem() -} - -type ReconfigureDomObjectRequestType struct { - This ManagedObjectReference `xml:"_this"` - Uuid string `xml:"uuid"` - Policy string `xml:"policy"` -} - -func init() { - t["ReconfigureDomObjectRequestType"] = reflect.TypeOf((*ReconfigureDomObjectRequestType)(nil)).Elem() -} - -type ReconfigureDomObjectResponse struct { -} - -type ReconfigureDvsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec BaseDVSConfigSpec `xml:"spec,typeattr"` -} - -func init() { - t["ReconfigureDvsRequestType"] = reflect.TypeOf((*ReconfigureDvsRequestType)(nil)).Elem() -} - -type ReconfigureDvs_Task ReconfigureDvsRequestType - -func init() { - t["ReconfigureDvs_Task"] = reflect.TypeOf((*ReconfigureDvs_Task)(nil)).Elem() -} - -type ReconfigureDvs_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ReconfigureHostForDASRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["ReconfigureHostForDASRequestType"] = reflect.TypeOf((*ReconfigureHostForDASRequestType)(nil)).Elem() -} - -type ReconfigureHostForDAS_Task ReconfigureHostForDASRequestType - -func init() { - t["ReconfigureHostForDAS_Task"] = reflect.TypeOf((*ReconfigureHostForDAS_Task)(nil)).Elem() -} - -type ReconfigureHostForDAS_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ReconfigureScheduledTask ReconfigureScheduledTaskRequestType - -func init() { - t["ReconfigureScheduledTask"] = reflect.TypeOf((*ReconfigureScheduledTask)(nil)).Elem() -} - -type ReconfigureScheduledTaskRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec BaseScheduledTaskSpec `xml:"spec,typeattr"` -} - -func init() { - t["ReconfigureScheduledTaskRequestType"] = reflect.TypeOf((*ReconfigureScheduledTaskRequestType)(nil)).Elem() -} - -type ReconfigureScheduledTaskResponse struct { -} - -type ReconfigureServiceConsoleReservation ReconfigureServiceConsoleReservationRequestType - -func init() { - t["ReconfigureServiceConsoleReservation"] = reflect.TypeOf((*ReconfigureServiceConsoleReservation)(nil)).Elem() -} - -type ReconfigureServiceConsoleReservationRequestType struct { - This ManagedObjectReference `xml:"_this"` - CfgBytes int64 `xml:"cfgBytes"` -} - -func init() { - t["ReconfigureServiceConsoleReservationRequestType"] = reflect.TypeOf((*ReconfigureServiceConsoleReservationRequestType)(nil)).Elem() -} - -type ReconfigureServiceConsoleReservationResponse struct { -} - -type ReconfigureSnmpAgent ReconfigureSnmpAgentRequestType - -func init() { - t["ReconfigureSnmpAgent"] = reflect.TypeOf((*ReconfigureSnmpAgent)(nil)).Elem() -} - -type ReconfigureSnmpAgentRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec HostSnmpConfigSpec `xml:"spec"` -} - -func init() { - t["ReconfigureSnmpAgentRequestType"] = reflect.TypeOf((*ReconfigureSnmpAgentRequestType)(nil)).Elem() -} - -type ReconfigureSnmpAgentResponse struct { -} - -type ReconfigureVirtualMachineReservation ReconfigureVirtualMachineReservationRequestType - -func init() { - t["ReconfigureVirtualMachineReservation"] = reflect.TypeOf((*ReconfigureVirtualMachineReservation)(nil)).Elem() -} - -type ReconfigureVirtualMachineReservationRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec VirtualMachineMemoryReservationSpec `xml:"spec"` -} - -func init() { - t["ReconfigureVirtualMachineReservationRequestType"] = reflect.TypeOf((*ReconfigureVirtualMachineReservationRequestType)(nil)).Elem() -} - -type ReconfigureVirtualMachineReservationResponse struct { -} - -type ReconnectHostRequestType struct { - This ManagedObjectReference `xml:"_this"` - CnxSpec *HostConnectSpec `xml:"cnxSpec,omitempty"` - ReconnectSpec *HostSystemReconnectSpec `xml:"reconnectSpec,omitempty"` -} - -func init() { - t["ReconnectHostRequestType"] = reflect.TypeOf((*ReconnectHostRequestType)(nil)).Elem() -} - -type ReconnectHost_Task ReconnectHostRequestType - -func init() { - t["ReconnectHost_Task"] = reflect.TypeOf((*ReconnectHost_Task)(nil)).Elem() -} - -type ReconnectHost_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type RecordReplayDisabled struct { - VimFault -} - -func init() { - t["RecordReplayDisabled"] = reflect.TypeOf((*RecordReplayDisabled)(nil)).Elem() -} - -type RecordReplayDisabledFault RecordReplayDisabled - -func init() { - t["RecordReplayDisabledFault"] = reflect.TypeOf((*RecordReplayDisabledFault)(nil)).Elem() -} - -type RecoveryEvent struct { - DvsEvent - - HostName string `xml:"hostName"` - PortKey string `xml:"portKey"` - DvsUuid string `xml:"dvsUuid,omitempty"` - Vnic string `xml:"vnic,omitempty"` -} - -func init() { - t["RecoveryEvent"] = reflect.TypeOf((*RecoveryEvent)(nil)).Elem() -} - -type RectifyDvsHostRequestType struct { - This ManagedObjectReference `xml:"_this"` - Hosts []ManagedObjectReference `xml:"hosts,omitempty"` -} - -func init() { - t["RectifyDvsHostRequestType"] = reflect.TypeOf((*RectifyDvsHostRequestType)(nil)).Elem() -} - -type RectifyDvsHost_Task RectifyDvsHostRequestType - -func init() { - t["RectifyDvsHost_Task"] = reflect.TypeOf((*RectifyDvsHost_Task)(nil)).Elem() -} - -type RectifyDvsHost_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type RectifyDvsOnHostRequestType struct { - This ManagedObjectReference `xml:"_this"` - Hosts []ManagedObjectReference `xml:"hosts"` -} - -func init() { - t["RectifyDvsOnHostRequestType"] = reflect.TypeOf((*RectifyDvsOnHostRequestType)(nil)).Elem() -} - -type RectifyDvsOnHost_Task RectifyDvsOnHostRequestType - -func init() { - t["RectifyDvsOnHost_Task"] = reflect.TypeOf((*RectifyDvsOnHost_Task)(nil)).Elem() -} - -type RectifyDvsOnHost_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type RecurrentTaskScheduler struct { - TaskScheduler - - Interval int32 `xml:"interval"` -} - -func init() { - t["RecurrentTaskScheduler"] = reflect.TypeOf((*RecurrentTaskScheduler)(nil)).Elem() -} - -type Refresh RefreshRequestType - -func init() { - t["Refresh"] = reflect.TypeOf((*Refresh)(nil)).Elem() -} - -type RefreshDVPortState RefreshDVPortStateRequestType - -func init() { - t["RefreshDVPortState"] = reflect.TypeOf((*RefreshDVPortState)(nil)).Elem() -} - -type RefreshDVPortStateRequestType struct { - This ManagedObjectReference `xml:"_this"` - PortKeys []string `xml:"portKeys,omitempty"` -} - -func init() { - t["RefreshDVPortStateRequestType"] = reflect.TypeOf((*RefreshDVPortStateRequestType)(nil)).Elem() -} - -type RefreshDVPortStateResponse struct { -} - -type RefreshDatastore RefreshDatastoreRequestType - -func init() { - t["RefreshDatastore"] = reflect.TypeOf((*RefreshDatastore)(nil)).Elem() -} - -type RefreshDatastoreRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["RefreshDatastoreRequestType"] = reflect.TypeOf((*RefreshDatastoreRequestType)(nil)).Elem() -} - -type RefreshDatastoreResponse struct { -} - -type RefreshDatastoreStorageInfo RefreshDatastoreStorageInfoRequestType - -func init() { - t["RefreshDatastoreStorageInfo"] = reflect.TypeOf((*RefreshDatastoreStorageInfo)(nil)).Elem() -} - -type RefreshDatastoreStorageInfoRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["RefreshDatastoreStorageInfoRequestType"] = reflect.TypeOf((*RefreshDatastoreStorageInfoRequestType)(nil)).Elem() -} - -type RefreshDatastoreStorageInfoResponse struct { -} - -type RefreshDateTimeSystem RefreshDateTimeSystemRequestType - -func init() { - t["RefreshDateTimeSystem"] = reflect.TypeOf((*RefreshDateTimeSystem)(nil)).Elem() -} - -type RefreshDateTimeSystemRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["RefreshDateTimeSystemRequestType"] = reflect.TypeOf((*RefreshDateTimeSystemRequestType)(nil)).Elem() -} - -type RefreshDateTimeSystemResponse struct { -} - -type RefreshFirewall RefreshFirewallRequestType - -func init() { - t["RefreshFirewall"] = reflect.TypeOf((*RefreshFirewall)(nil)).Elem() -} - -type RefreshFirewallRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["RefreshFirewallRequestType"] = reflect.TypeOf((*RefreshFirewallRequestType)(nil)).Elem() -} - -type RefreshFirewallResponse struct { -} - -type RefreshGraphicsManager RefreshGraphicsManagerRequestType - -func init() { - t["RefreshGraphicsManager"] = reflect.TypeOf((*RefreshGraphicsManager)(nil)).Elem() -} - -type RefreshGraphicsManagerRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["RefreshGraphicsManagerRequestType"] = reflect.TypeOf((*RefreshGraphicsManagerRequestType)(nil)).Elem() -} - -type RefreshGraphicsManagerResponse struct { -} - -type RefreshHealthStatusSystem RefreshHealthStatusSystemRequestType - -func init() { - t["RefreshHealthStatusSystem"] = reflect.TypeOf((*RefreshHealthStatusSystem)(nil)).Elem() -} - -type RefreshHealthStatusSystemRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["RefreshHealthStatusSystemRequestType"] = reflect.TypeOf((*RefreshHealthStatusSystemRequestType)(nil)).Elem() -} - -type RefreshHealthStatusSystemResponse struct { -} - -type RefreshNetworkSystem RefreshNetworkSystemRequestType - -func init() { - t["RefreshNetworkSystem"] = reflect.TypeOf((*RefreshNetworkSystem)(nil)).Elem() -} - -type RefreshNetworkSystemRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["RefreshNetworkSystemRequestType"] = reflect.TypeOf((*RefreshNetworkSystemRequestType)(nil)).Elem() -} - -type RefreshNetworkSystemResponse struct { -} - -type RefreshRecommendation RefreshRecommendationRequestType - -func init() { - t["RefreshRecommendation"] = reflect.TypeOf((*RefreshRecommendation)(nil)).Elem() -} - -type RefreshRecommendationRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["RefreshRecommendationRequestType"] = reflect.TypeOf((*RefreshRecommendationRequestType)(nil)).Elem() -} - -type RefreshRecommendationResponse struct { -} - -type RefreshRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["RefreshRequestType"] = reflect.TypeOf((*RefreshRequestType)(nil)).Elem() -} - -type RefreshResponse struct { -} - -type RefreshRuntime RefreshRuntimeRequestType - -func init() { - t["RefreshRuntime"] = reflect.TypeOf((*RefreshRuntime)(nil)).Elem() -} - -type RefreshRuntimeRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["RefreshRuntimeRequestType"] = reflect.TypeOf((*RefreshRuntimeRequestType)(nil)).Elem() -} - -type RefreshRuntimeResponse struct { -} - -type RefreshServices RefreshServicesRequestType - -func init() { - t["RefreshServices"] = reflect.TypeOf((*RefreshServices)(nil)).Elem() -} - -type RefreshServicesRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["RefreshServicesRequestType"] = reflect.TypeOf((*RefreshServicesRequestType)(nil)).Elem() -} - -type RefreshServicesResponse struct { -} - -type RefreshStorageDrsRecommendation RefreshStorageDrsRecommendationRequestType - -func init() { - t["RefreshStorageDrsRecommendation"] = reflect.TypeOf((*RefreshStorageDrsRecommendation)(nil)).Elem() -} - -type RefreshStorageDrsRecommendationRequestType struct { - This ManagedObjectReference `xml:"_this"` - Pod ManagedObjectReference `xml:"pod"` -} - -func init() { - t["RefreshStorageDrsRecommendationRequestType"] = reflect.TypeOf((*RefreshStorageDrsRecommendationRequestType)(nil)).Elem() -} - -type RefreshStorageDrsRecommendationResponse struct { -} - -type RefreshStorageInfo RefreshStorageInfoRequestType - -func init() { - t["RefreshStorageInfo"] = reflect.TypeOf((*RefreshStorageInfo)(nil)).Elem() -} - -type RefreshStorageInfoRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["RefreshStorageInfoRequestType"] = reflect.TypeOf((*RefreshStorageInfoRequestType)(nil)).Elem() -} - -type RefreshStorageInfoResponse struct { -} - -type RefreshStorageSystem RefreshStorageSystemRequestType - -func init() { - t["RefreshStorageSystem"] = reflect.TypeOf((*RefreshStorageSystem)(nil)).Elem() -} - -type RefreshStorageSystemRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["RefreshStorageSystemRequestType"] = reflect.TypeOf((*RefreshStorageSystemRequestType)(nil)).Elem() -} - -type RefreshStorageSystemResponse struct { -} - -type RegisterChildVMRequestType struct { - This ManagedObjectReference `xml:"_this"` - Path string `xml:"path"` - Name string `xml:"name,omitempty"` - Host *ManagedObjectReference `xml:"host,omitempty"` -} - -func init() { - t["RegisterChildVMRequestType"] = reflect.TypeOf((*RegisterChildVMRequestType)(nil)).Elem() -} - -type RegisterChildVM_Task RegisterChildVMRequestType - -func init() { - t["RegisterChildVM_Task"] = reflect.TypeOf((*RegisterChildVM_Task)(nil)).Elem() -} - -type RegisterChildVM_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type RegisterExtension RegisterExtensionRequestType - -func init() { - t["RegisterExtension"] = reflect.TypeOf((*RegisterExtension)(nil)).Elem() -} - -type RegisterExtensionRequestType struct { - This ManagedObjectReference `xml:"_this"` - Extension Extension `xml:"extension"` -} - -func init() { - t["RegisterExtensionRequestType"] = reflect.TypeOf((*RegisterExtensionRequestType)(nil)).Elem() -} - -type RegisterExtensionResponse struct { -} - -type RegisterVMRequestType struct { - This ManagedObjectReference `xml:"_this"` - Path string `xml:"path"` - Name string `xml:"name,omitempty"` - AsTemplate bool `xml:"asTemplate"` - Pool *ManagedObjectReference `xml:"pool,omitempty"` - Host *ManagedObjectReference `xml:"host,omitempty"` -} - -func init() { - t["RegisterVMRequestType"] = reflect.TypeOf((*RegisterVMRequestType)(nil)).Elem() -} - -type RegisterVM_Task RegisterVMRequestType - -func init() { - t["RegisterVM_Task"] = reflect.TypeOf((*RegisterVM_Task)(nil)).Elem() -} - -type RegisterVM_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ReleaseCredentialsInGuest ReleaseCredentialsInGuestRequestType - -func init() { - t["ReleaseCredentialsInGuest"] = reflect.TypeOf((*ReleaseCredentialsInGuest)(nil)).Elem() -} - -type ReleaseCredentialsInGuestRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Auth BaseGuestAuthentication `xml:"auth,typeattr"` -} - -func init() { - t["ReleaseCredentialsInGuestRequestType"] = reflect.TypeOf((*ReleaseCredentialsInGuestRequestType)(nil)).Elem() -} - -type ReleaseCredentialsInGuestResponse struct { -} - -type ReleaseIpAllocation ReleaseIpAllocationRequestType - -func init() { - t["ReleaseIpAllocation"] = reflect.TypeOf((*ReleaseIpAllocation)(nil)).Elem() -} - -type ReleaseIpAllocationRequestType struct { - This ManagedObjectReference `xml:"_this"` - Dc ManagedObjectReference `xml:"dc"` - PoolId int32 `xml:"poolId"` - AllocationId string `xml:"allocationId"` -} - -func init() { - t["ReleaseIpAllocationRequestType"] = reflect.TypeOf((*ReleaseIpAllocationRequestType)(nil)).Elem() -} - -type ReleaseIpAllocationResponse struct { -} - -type Reload ReloadRequestType - -func init() { - t["Reload"] = reflect.TypeOf((*Reload)(nil)).Elem() -} - -type ReloadRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["ReloadRequestType"] = reflect.TypeOf((*ReloadRequestType)(nil)).Elem() -} - -type ReloadResponse struct { -} - -type RelocateVMRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec VirtualMachineRelocateSpec `xml:"spec"` - Priority VirtualMachineMovePriority `xml:"priority,omitempty"` -} - -func init() { - t["RelocateVMRequestType"] = reflect.TypeOf((*RelocateVMRequestType)(nil)).Elem() -} - -type RelocateVM_Task RelocateVMRequestType - -func init() { - t["RelocateVM_Task"] = reflect.TypeOf((*RelocateVM_Task)(nil)).Elem() -} - -type RelocateVM_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type RemoteDeviceNotSupported struct { - DeviceNotSupported -} - -func init() { - t["RemoteDeviceNotSupported"] = reflect.TypeOf((*RemoteDeviceNotSupported)(nil)).Elem() -} - -type RemoteDeviceNotSupportedFault RemoteDeviceNotSupported - -func init() { - t["RemoteDeviceNotSupportedFault"] = reflect.TypeOf((*RemoteDeviceNotSupportedFault)(nil)).Elem() -} - -type RemoteTSMEnabledEvent struct { - HostEvent -} - -func init() { - t["RemoteTSMEnabledEvent"] = reflect.TypeOf((*RemoteTSMEnabledEvent)(nil)).Elem() -} - -type RemoveAlarm RemoveAlarmRequestType - -func init() { - t["RemoveAlarm"] = reflect.TypeOf((*RemoveAlarm)(nil)).Elem() -} - -type RemoveAlarmRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["RemoveAlarmRequestType"] = reflect.TypeOf((*RemoveAlarmRequestType)(nil)).Elem() -} - -type RemoveAlarmResponse struct { -} - -type RemoveAllSnapshotsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Consolidate *bool `xml:"consolidate"` -} - -func init() { - t["RemoveAllSnapshotsRequestType"] = reflect.TypeOf((*RemoveAllSnapshotsRequestType)(nil)).Elem() -} - -type RemoveAllSnapshots_Task RemoveAllSnapshotsRequestType - -func init() { - t["RemoveAllSnapshots_Task"] = reflect.TypeOf((*RemoveAllSnapshots_Task)(nil)).Elem() -} - -type RemoveAllSnapshots_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type RemoveAssignedLicense RemoveAssignedLicenseRequestType - -func init() { - t["RemoveAssignedLicense"] = reflect.TypeOf((*RemoveAssignedLicense)(nil)).Elem() -} - -type RemoveAssignedLicenseRequestType struct { - This ManagedObjectReference `xml:"_this"` - EntityId string `xml:"entityId"` -} - -func init() { - t["RemoveAssignedLicenseRequestType"] = reflect.TypeOf((*RemoveAssignedLicenseRequestType)(nil)).Elem() -} - -type RemoveAssignedLicenseResponse struct { -} - -type RemoveAuthorizationRole RemoveAuthorizationRoleRequestType - -func init() { - t["RemoveAuthorizationRole"] = reflect.TypeOf((*RemoveAuthorizationRole)(nil)).Elem() -} - -type RemoveAuthorizationRoleRequestType struct { - This ManagedObjectReference `xml:"_this"` - RoleId int32 `xml:"roleId"` - FailIfUsed bool `xml:"failIfUsed"` -} - -func init() { - t["RemoveAuthorizationRoleRequestType"] = reflect.TypeOf((*RemoveAuthorizationRoleRequestType)(nil)).Elem() -} - -type RemoveAuthorizationRoleResponse struct { -} - -type RemoveCustomFieldDef RemoveCustomFieldDefRequestType - -func init() { - t["RemoveCustomFieldDef"] = reflect.TypeOf((*RemoveCustomFieldDef)(nil)).Elem() -} - -type RemoveCustomFieldDefRequestType struct { - This ManagedObjectReference `xml:"_this"` - Key int32 `xml:"key"` -} - -func init() { - t["RemoveCustomFieldDefRequestType"] = reflect.TypeOf((*RemoveCustomFieldDefRequestType)(nil)).Elem() -} - -type RemoveCustomFieldDefResponse struct { -} - -type RemoveDatastore RemoveDatastoreRequestType - -func init() { - t["RemoveDatastore"] = reflect.TypeOf((*RemoveDatastore)(nil)).Elem() -} - -type RemoveDatastoreExRequestType struct { - This ManagedObjectReference `xml:"_this"` - Datastore []ManagedObjectReference `xml:"datastore"` -} - -func init() { - t["RemoveDatastoreExRequestType"] = reflect.TypeOf((*RemoveDatastoreExRequestType)(nil)).Elem() -} - -type RemoveDatastoreEx_Task RemoveDatastoreExRequestType - -func init() { - t["RemoveDatastoreEx_Task"] = reflect.TypeOf((*RemoveDatastoreEx_Task)(nil)).Elem() -} - -type RemoveDatastoreEx_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type RemoveDatastoreRequestType struct { - This ManagedObjectReference `xml:"_this"` - Datastore ManagedObjectReference `xml:"datastore"` -} - -func init() { - t["RemoveDatastoreRequestType"] = reflect.TypeOf((*RemoveDatastoreRequestType)(nil)).Elem() -} - -type RemoveDatastoreResponse struct { -} - -type RemoveDiskMappingRequestType struct { - This ManagedObjectReference `xml:"_this"` - Mapping []VsanHostDiskMapping `xml:"mapping"` - MaintenanceSpec *HostMaintenanceSpec `xml:"maintenanceSpec,omitempty"` - Timeout int32 `xml:"timeout,omitempty"` -} - -func init() { - t["RemoveDiskMappingRequestType"] = reflect.TypeOf((*RemoveDiskMappingRequestType)(nil)).Elem() -} - -type RemoveDiskMapping_Task RemoveDiskMappingRequestType - -func init() { - t["RemoveDiskMapping_Task"] = reflect.TypeOf((*RemoveDiskMapping_Task)(nil)).Elem() -} - -type RemoveDiskMapping_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type RemoveDiskRequestType struct { - This ManagedObjectReference `xml:"_this"` - Disk []HostScsiDisk `xml:"disk"` - MaintenanceSpec *HostMaintenanceSpec `xml:"maintenanceSpec,omitempty"` - Timeout int32 `xml:"timeout,omitempty"` -} - -func init() { - t["RemoveDiskRequestType"] = reflect.TypeOf((*RemoveDiskRequestType)(nil)).Elem() -} - -type RemoveDisk_Task RemoveDiskRequestType - -func init() { - t["RemoveDisk_Task"] = reflect.TypeOf((*RemoveDisk_Task)(nil)).Elem() -} - -type RemoveDisk_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type RemoveEntityPermission RemoveEntityPermissionRequestType - -func init() { - t["RemoveEntityPermission"] = reflect.TypeOf((*RemoveEntityPermission)(nil)).Elem() -} - -type RemoveEntityPermissionRequestType struct { - This ManagedObjectReference `xml:"_this"` - Entity ManagedObjectReference `xml:"entity"` - User string `xml:"user"` - IsGroup bool `xml:"isGroup"` -} - -func init() { - t["RemoveEntityPermissionRequestType"] = reflect.TypeOf((*RemoveEntityPermissionRequestType)(nil)).Elem() -} - -type RemoveEntityPermissionResponse struct { -} - -type RemoveFailed struct { - VimFault -} - -func init() { - t["RemoveFailed"] = reflect.TypeOf((*RemoveFailed)(nil)).Elem() -} - -type RemoveFailedFault RemoveFailed - -func init() { - t["RemoveFailedFault"] = reflect.TypeOf((*RemoveFailedFault)(nil)).Elem() -} - -type RemoveGroup RemoveGroupRequestType - -func init() { - t["RemoveGroup"] = reflect.TypeOf((*RemoveGroup)(nil)).Elem() -} - -type RemoveGroupRequestType struct { - This ManagedObjectReference `xml:"_this"` - GroupName string `xml:"groupName"` -} - -func init() { - t["RemoveGroupRequestType"] = reflect.TypeOf((*RemoveGroupRequestType)(nil)).Elem() -} - -type RemoveGroupResponse struct { -} - -type RemoveGuestAlias RemoveGuestAliasRequestType - -func init() { - t["RemoveGuestAlias"] = reflect.TypeOf((*RemoveGuestAlias)(nil)).Elem() -} - -type RemoveGuestAliasByCert RemoveGuestAliasByCertRequestType - -func init() { - t["RemoveGuestAliasByCert"] = reflect.TypeOf((*RemoveGuestAliasByCert)(nil)).Elem() -} - -type RemoveGuestAliasByCertRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Auth BaseGuestAuthentication `xml:"auth,typeattr"` - Username string `xml:"username"` - Base64Cert string `xml:"base64Cert"` -} - -func init() { - t["RemoveGuestAliasByCertRequestType"] = reflect.TypeOf((*RemoveGuestAliasByCertRequestType)(nil)).Elem() -} - -type RemoveGuestAliasByCertResponse struct { -} - -type RemoveGuestAliasRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Auth BaseGuestAuthentication `xml:"auth,typeattr"` - Username string `xml:"username"` - Base64Cert string `xml:"base64Cert"` - Subject BaseGuestAuthSubject `xml:"subject,typeattr"` -} - -func init() { - t["RemoveGuestAliasRequestType"] = reflect.TypeOf((*RemoveGuestAliasRequestType)(nil)).Elem() -} - -type RemoveGuestAliasResponse struct { -} - -type RemoveInternetScsiSendTargets RemoveInternetScsiSendTargetsRequestType - -func init() { - t["RemoveInternetScsiSendTargets"] = reflect.TypeOf((*RemoveInternetScsiSendTargets)(nil)).Elem() -} - -type RemoveInternetScsiSendTargetsRequestType struct { - This ManagedObjectReference `xml:"_this"` - IScsiHbaDevice string `xml:"iScsiHbaDevice"` - Targets []HostInternetScsiHbaSendTarget `xml:"targets"` -} - -func init() { - t["RemoveInternetScsiSendTargetsRequestType"] = reflect.TypeOf((*RemoveInternetScsiSendTargetsRequestType)(nil)).Elem() -} - -type RemoveInternetScsiSendTargetsResponse struct { -} - -type RemoveInternetScsiStaticTargets RemoveInternetScsiStaticTargetsRequestType - -func init() { - t["RemoveInternetScsiStaticTargets"] = reflect.TypeOf((*RemoveInternetScsiStaticTargets)(nil)).Elem() -} - -type RemoveInternetScsiStaticTargetsRequestType struct { - This ManagedObjectReference `xml:"_this"` - IScsiHbaDevice string `xml:"iScsiHbaDevice"` - Targets []HostInternetScsiHbaStaticTarget `xml:"targets"` -} - -func init() { - t["RemoveInternetScsiStaticTargetsRequestType"] = reflect.TypeOf((*RemoveInternetScsiStaticTargetsRequestType)(nil)).Elem() -} - -type RemoveInternetScsiStaticTargetsResponse struct { -} - -type RemoveLicense RemoveLicenseRequestType - -func init() { - t["RemoveLicense"] = reflect.TypeOf((*RemoveLicense)(nil)).Elem() -} - -type RemoveLicenseLabel RemoveLicenseLabelRequestType - -func init() { - t["RemoveLicenseLabel"] = reflect.TypeOf((*RemoveLicenseLabel)(nil)).Elem() -} - -type RemoveLicenseLabelRequestType struct { - This ManagedObjectReference `xml:"_this"` - LicenseKey string `xml:"licenseKey"` - LabelKey string `xml:"labelKey"` -} - -func init() { - t["RemoveLicenseLabelRequestType"] = reflect.TypeOf((*RemoveLicenseLabelRequestType)(nil)).Elem() -} - -type RemoveLicenseLabelResponse struct { -} - -type RemoveLicenseRequestType struct { - This ManagedObjectReference `xml:"_this"` - LicenseKey string `xml:"licenseKey"` -} - -func init() { - t["RemoveLicenseRequestType"] = reflect.TypeOf((*RemoveLicenseRequestType)(nil)).Elem() -} - -type RemoveLicenseResponse struct { -} - -type RemoveNetworkResourcePool RemoveNetworkResourcePoolRequestType - -func init() { - t["RemoveNetworkResourcePool"] = reflect.TypeOf((*RemoveNetworkResourcePool)(nil)).Elem() -} - -type RemoveNetworkResourcePoolRequestType struct { - This ManagedObjectReference `xml:"_this"` - Key []string `xml:"key"` -} - -func init() { - t["RemoveNetworkResourcePoolRequestType"] = reflect.TypeOf((*RemoveNetworkResourcePoolRequestType)(nil)).Elem() -} - -type RemoveNetworkResourcePoolResponse struct { -} - -type RemovePerfInterval RemovePerfIntervalRequestType - -func init() { - t["RemovePerfInterval"] = reflect.TypeOf((*RemovePerfInterval)(nil)).Elem() -} - -type RemovePerfIntervalRequestType struct { - This ManagedObjectReference `xml:"_this"` - SamplePeriod int32 `xml:"samplePeriod"` -} - -func init() { - t["RemovePerfIntervalRequestType"] = reflect.TypeOf((*RemovePerfIntervalRequestType)(nil)).Elem() -} - -type RemovePerfIntervalResponse struct { -} - -type RemovePortGroup RemovePortGroupRequestType - -func init() { - t["RemovePortGroup"] = reflect.TypeOf((*RemovePortGroup)(nil)).Elem() -} - -type RemovePortGroupRequestType struct { - This ManagedObjectReference `xml:"_this"` - PgName string `xml:"pgName"` -} - -func init() { - t["RemovePortGroupRequestType"] = reflect.TypeOf((*RemovePortGroupRequestType)(nil)).Elem() -} - -type RemovePortGroupResponse struct { -} - -type RemoveScheduledTask RemoveScheduledTaskRequestType - -func init() { - t["RemoveScheduledTask"] = reflect.TypeOf((*RemoveScheduledTask)(nil)).Elem() -} - -type RemoveScheduledTaskRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["RemoveScheduledTaskRequestType"] = reflect.TypeOf((*RemoveScheduledTaskRequestType)(nil)).Elem() -} - -type RemoveScheduledTaskResponse struct { -} - -type RemoveServiceConsoleVirtualNic RemoveServiceConsoleVirtualNicRequestType - -func init() { - t["RemoveServiceConsoleVirtualNic"] = reflect.TypeOf((*RemoveServiceConsoleVirtualNic)(nil)).Elem() -} - -type RemoveServiceConsoleVirtualNicRequestType struct { - This ManagedObjectReference `xml:"_this"` - Device string `xml:"device"` -} - -func init() { - t["RemoveServiceConsoleVirtualNicRequestType"] = reflect.TypeOf((*RemoveServiceConsoleVirtualNicRequestType)(nil)).Elem() -} - -type RemoveServiceConsoleVirtualNicResponse struct { -} - -type RemoveSmartCardTrustAnchor RemoveSmartCardTrustAnchorRequestType - -func init() { - t["RemoveSmartCardTrustAnchor"] = reflect.TypeOf((*RemoveSmartCardTrustAnchor)(nil)).Elem() -} - -type RemoveSmartCardTrustAnchorByFingerprint RemoveSmartCardTrustAnchorByFingerprintRequestType - -func init() { - t["RemoveSmartCardTrustAnchorByFingerprint"] = reflect.TypeOf((*RemoveSmartCardTrustAnchorByFingerprint)(nil)).Elem() -} - -type RemoveSmartCardTrustAnchorByFingerprintRequestType struct { - This ManagedObjectReference `xml:"_this"` - Fingerprint string `xml:"fingerprint"` - Digest string `xml:"digest"` -} - -func init() { - t["RemoveSmartCardTrustAnchorByFingerprintRequestType"] = reflect.TypeOf((*RemoveSmartCardTrustAnchorByFingerprintRequestType)(nil)).Elem() -} - -type RemoveSmartCardTrustAnchorByFingerprintResponse struct { -} - -type RemoveSmartCardTrustAnchorRequestType struct { - This ManagedObjectReference `xml:"_this"` - Issuer string `xml:"issuer"` - Serial string `xml:"serial"` -} - -func init() { - t["RemoveSmartCardTrustAnchorRequestType"] = reflect.TypeOf((*RemoveSmartCardTrustAnchorRequestType)(nil)).Elem() -} - -type RemoveSmartCardTrustAnchorResponse struct { -} - -type RemoveSnapshotRequestType struct { - This ManagedObjectReference `xml:"_this"` - RemoveChildren bool `xml:"removeChildren"` - Consolidate *bool `xml:"consolidate"` -} - -func init() { - t["RemoveSnapshotRequestType"] = reflect.TypeOf((*RemoveSnapshotRequestType)(nil)).Elem() -} - -type RemoveSnapshot_Task RemoveSnapshotRequestType - -func init() { - t["RemoveSnapshot_Task"] = reflect.TypeOf((*RemoveSnapshot_Task)(nil)).Elem() -} - -type RemoveSnapshot_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type RemoveUser RemoveUserRequestType - -func init() { - t["RemoveUser"] = reflect.TypeOf((*RemoveUser)(nil)).Elem() -} - -type RemoveUserRequestType struct { - This ManagedObjectReference `xml:"_this"` - UserName string `xml:"userName"` -} - -func init() { - t["RemoveUserRequestType"] = reflect.TypeOf((*RemoveUserRequestType)(nil)).Elem() -} - -type RemoveUserResponse struct { -} - -type RemoveVirtualNic RemoveVirtualNicRequestType - -func init() { - t["RemoveVirtualNic"] = reflect.TypeOf((*RemoveVirtualNic)(nil)).Elem() -} - -type RemoveVirtualNicRequestType struct { - This ManagedObjectReference `xml:"_this"` - Device string `xml:"device"` -} - -func init() { - t["RemoveVirtualNicRequestType"] = reflect.TypeOf((*RemoveVirtualNicRequestType)(nil)).Elem() -} - -type RemoveVirtualNicResponse struct { -} - -type RemoveVirtualSwitch RemoveVirtualSwitchRequestType - -func init() { - t["RemoveVirtualSwitch"] = reflect.TypeOf((*RemoveVirtualSwitch)(nil)).Elem() -} - -type RemoveVirtualSwitchRequestType struct { - This ManagedObjectReference `xml:"_this"` - VswitchName string `xml:"vswitchName"` -} - -func init() { - t["RemoveVirtualSwitchRequestType"] = reflect.TypeOf((*RemoveVirtualSwitchRequestType)(nil)).Elem() -} - -type RemoveVirtualSwitchResponse struct { -} - -type RenameCustomFieldDef RenameCustomFieldDefRequestType - -func init() { - t["RenameCustomFieldDef"] = reflect.TypeOf((*RenameCustomFieldDef)(nil)).Elem() -} - -type RenameCustomFieldDefRequestType struct { - This ManagedObjectReference `xml:"_this"` - Key int32 `xml:"key"` - Name string `xml:"name"` -} - -func init() { - t["RenameCustomFieldDefRequestType"] = reflect.TypeOf((*RenameCustomFieldDefRequestType)(nil)).Elem() -} - -type RenameCustomFieldDefResponse struct { -} - -type RenameCustomizationSpec RenameCustomizationSpecRequestType - -func init() { - t["RenameCustomizationSpec"] = reflect.TypeOf((*RenameCustomizationSpec)(nil)).Elem() -} - -type RenameCustomizationSpecRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` - NewName string `xml:"newName"` -} - -func init() { - t["RenameCustomizationSpecRequestType"] = reflect.TypeOf((*RenameCustomizationSpecRequestType)(nil)).Elem() -} - -type RenameCustomizationSpecResponse struct { -} - -type RenameDatastore RenameDatastoreRequestType - -func init() { - t["RenameDatastore"] = reflect.TypeOf((*RenameDatastore)(nil)).Elem() -} - -type RenameDatastoreRequestType struct { - This ManagedObjectReference `xml:"_this"` - NewName string `xml:"newName"` -} - -func init() { - t["RenameDatastoreRequestType"] = reflect.TypeOf((*RenameDatastoreRequestType)(nil)).Elem() -} - -type RenameDatastoreResponse struct { -} - -type RenameRequestType struct { - This ManagedObjectReference `xml:"_this"` - NewName string `xml:"newName"` -} - -func init() { - t["RenameRequestType"] = reflect.TypeOf((*RenameRequestType)(nil)).Elem() -} - -type RenameSnapshot RenameSnapshotRequestType - -func init() { - t["RenameSnapshot"] = reflect.TypeOf((*RenameSnapshot)(nil)).Elem() -} - -type RenameSnapshotRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name,omitempty"` - Description string `xml:"description,omitempty"` -} - -func init() { - t["RenameSnapshotRequestType"] = reflect.TypeOf((*RenameSnapshotRequestType)(nil)).Elem() -} - -type RenameSnapshotResponse struct { -} - -type Rename_Task RenameRequestType - -func init() { - t["Rename_Task"] = reflect.TypeOf((*Rename_Task)(nil)).Elem() -} - -type Rename_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ReplaceCACertificatesAndCRLs ReplaceCACertificatesAndCRLsRequestType - -func init() { - t["ReplaceCACertificatesAndCRLs"] = reflect.TypeOf((*ReplaceCACertificatesAndCRLs)(nil)).Elem() -} - -type ReplaceCACertificatesAndCRLsRequestType struct { - This ManagedObjectReference `xml:"_this"` - CaCert []string `xml:"caCert"` - CaCrl []string `xml:"caCrl,omitempty"` -} - -func init() { - t["ReplaceCACertificatesAndCRLsRequestType"] = reflect.TypeOf((*ReplaceCACertificatesAndCRLsRequestType)(nil)).Elem() -} - -type ReplaceCACertificatesAndCRLsResponse struct { -} - -type ReplaceSmartCardTrustAnchors ReplaceSmartCardTrustAnchorsRequestType - -func init() { - t["ReplaceSmartCardTrustAnchors"] = reflect.TypeOf((*ReplaceSmartCardTrustAnchors)(nil)).Elem() -} - -type ReplaceSmartCardTrustAnchorsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Certs []string `xml:"certs,omitempty"` -} - -func init() { - t["ReplaceSmartCardTrustAnchorsRequestType"] = reflect.TypeOf((*ReplaceSmartCardTrustAnchorsRequestType)(nil)).Elem() -} - -type ReplaceSmartCardTrustAnchorsResponse struct { -} - -type ReplicationConfigFault struct { - ReplicationFault -} - -func init() { - t["ReplicationConfigFault"] = reflect.TypeOf((*ReplicationConfigFault)(nil)).Elem() -} - -type ReplicationConfigFaultFault BaseReplicationConfigFault - -func init() { - t["ReplicationConfigFaultFault"] = reflect.TypeOf((*ReplicationConfigFaultFault)(nil)).Elem() -} - -type ReplicationConfigSpec struct { - DynamicData - - Generation int64 `xml:"generation"` - VmReplicationId string `xml:"vmReplicationId"` - Destination string `xml:"destination"` - Port int32 `xml:"port"` - Rpo int64 `xml:"rpo"` - QuiesceGuestEnabled bool `xml:"quiesceGuestEnabled"` - Paused bool `xml:"paused"` - OppUpdatesEnabled bool `xml:"oppUpdatesEnabled"` - NetCompressionEnabled *bool `xml:"netCompressionEnabled"` - Disk []ReplicationInfoDiskSettings `xml:"disk,omitempty"` -} - -func init() { - t["ReplicationConfigSpec"] = reflect.TypeOf((*ReplicationConfigSpec)(nil)).Elem() -} - -type ReplicationDiskConfigFault struct { - ReplicationConfigFault - - Reason string `xml:"reason,omitempty"` - VmRef *ManagedObjectReference `xml:"vmRef,omitempty"` - Key int32 `xml:"key,omitempty"` -} - -func init() { - t["ReplicationDiskConfigFault"] = reflect.TypeOf((*ReplicationDiskConfigFault)(nil)).Elem() -} - -type ReplicationDiskConfigFaultFault ReplicationDiskConfigFault - -func init() { - t["ReplicationDiskConfigFaultFault"] = reflect.TypeOf((*ReplicationDiskConfigFaultFault)(nil)).Elem() -} - -type ReplicationFault struct { - VimFault -} - -func init() { - t["ReplicationFault"] = reflect.TypeOf((*ReplicationFault)(nil)).Elem() -} - -type ReplicationFaultFault BaseReplicationFault - -func init() { - t["ReplicationFaultFault"] = reflect.TypeOf((*ReplicationFaultFault)(nil)).Elem() -} - -type ReplicationIncompatibleWithFT struct { - ReplicationFault -} - -func init() { - t["ReplicationIncompatibleWithFT"] = reflect.TypeOf((*ReplicationIncompatibleWithFT)(nil)).Elem() -} - -type ReplicationIncompatibleWithFTFault ReplicationIncompatibleWithFT - -func init() { - t["ReplicationIncompatibleWithFTFault"] = reflect.TypeOf((*ReplicationIncompatibleWithFTFault)(nil)).Elem() -} - -type ReplicationInfoDiskSettings struct { - DynamicData - - Key int32 `xml:"key"` - DiskReplicationId string `xml:"diskReplicationId"` -} - -func init() { - t["ReplicationInfoDiskSettings"] = reflect.TypeOf((*ReplicationInfoDiskSettings)(nil)).Elem() -} - -type ReplicationInvalidOptions struct { - ReplicationFault - - Options string `xml:"options"` - Entity *ManagedObjectReference `xml:"entity,omitempty"` -} - -func init() { - t["ReplicationInvalidOptions"] = reflect.TypeOf((*ReplicationInvalidOptions)(nil)).Elem() -} - -type ReplicationInvalidOptionsFault ReplicationInvalidOptions - -func init() { - t["ReplicationInvalidOptionsFault"] = reflect.TypeOf((*ReplicationInvalidOptionsFault)(nil)).Elem() -} - -type ReplicationNotSupportedOnHost struct { - ReplicationFault -} - -func init() { - t["ReplicationNotSupportedOnHost"] = reflect.TypeOf((*ReplicationNotSupportedOnHost)(nil)).Elem() -} - -type ReplicationNotSupportedOnHostFault ReplicationNotSupportedOnHost - -func init() { - t["ReplicationNotSupportedOnHostFault"] = reflect.TypeOf((*ReplicationNotSupportedOnHostFault)(nil)).Elem() -} - -type ReplicationVmConfigFault struct { - ReplicationConfigFault - - Reason string `xml:"reason,omitempty"` - VmRef *ManagedObjectReference `xml:"vmRef,omitempty"` -} - -func init() { - t["ReplicationVmConfigFault"] = reflect.TypeOf((*ReplicationVmConfigFault)(nil)).Elem() -} - -type ReplicationVmConfigFaultFault ReplicationVmConfigFault - -func init() { - t["ReplicationVmConfigFaultFault"] = reflect.TypeOf((*ReplicationVmConfigFaultFault)(nil)).Elem() -} - -type ReplicationVmFault struct { - ReplicationFault - - Reason string `xml:"reason,omitempty"` - State string `xml:"state,omitempty"` - InstanceId string `xml:"instanceId,omitempty"` - Vm *ManagedObjectReference `xml:"vm,omitempty"` -} - -func init() { - t["ReplicationVmFault"] = reflect.TypeOf((*ReplicationVmFault)(nil)).Elem() -} - -type ReplicationVmFaultFault BaseReplicationVmFault - -func init() { - t["ReplicationVmFaultFault"] = reflect.TypeOf((*ReplicationVmFaultFault)(nil)).Elem() -} - -type ReplicationVmInProgressFault struct { - ReplicationVmFault - - RequestedActivity string `xml:"requestedActivity"` - InProgressActivity string `xml:"inProgressActivity"` -} - -func init() { - t["ReplicationVmInProgressFault"] = reflect.TypeOf((*ReplicationVmInProgressFault)(nil)).Elem() -} - -type ReplicationVmInProgressFaultFault ReplicationVmInProgressFault - -func init() { - t["ReplicationVmInProgressFaultFault"] = reflect.TypeOf((*ReplicationVmInProgressFaultFault)(nil)).Elem() -} - -type ReplicationVmProgressInfo struct { - DynamicData - - Progress int32 `xml:"progress"` - BytesTransferred int64 `xml:"bytesTransferred"` - BytesToTransfer int64 `xml:"bytesToTransfer"` - ChecksumTotalBytes int64 `xml:"checksumTotalBytes,omitempty"` - ChecksumComparedBytes int64 `xml:"checksumComparedBytes,omitempty"` -} - -func init() { - t["ReplicationVmProgressInfo"] = reflect.TypeOf((*ReplicationVmProgressInfo)(nil)).Elem() -} - -type RequestCanceled struct { - RuntimeFault -} - -func init() { - t["RequestCanceled"] = reflect.TypeOf((*RequestCanceled)(nil)).Elem() -} - -type RequestCanceledFault RequestCanceled - -func init() { - t["RequestCanceledFault"] = reflect.TypeOf((*RequestCanceledFault)(nil)).Elem() -} - -type RescanAllHba RescanAllHbaRequestType - -func init() { - t["RescanAllHba"] = reflect.TypeOf((*RescanAllHba)(nil)).Elem() -} - -type RescanAllHbaRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["RescanAllHbaRequestType"] = reflect.TypeOf((*RescanAllHbaRequestType)(nil)).Elem() -} - -type RescanAllHbaResponse struct { -} - -type RescanHba RescanHbaRequestType - -func init() { - t["RescanHba"] = reflect.TypeOf((*RescanHba)(nil)).Elem() -} - -type RescanHbaRequestType struct { - This ManagedObjectReference `xml:"_this"` - HbaDevice string `xml:"hbaDevice"` -} - -func init() { - t["RescanHbaRequestType"] = reflect.TypeOf((*RescanHbaRequestType)(nil)).Elem() -} - -type RescanHbaResponse struct { -} - -type RescanVffs RescanVffsRequestType - -func init() { - t["RescanVffs"] = reflect.TypeOf((*RescanVffs)(nil)).Elem() -} - -type RescanVffsRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["RescanVffsRequestType"] = reflect.TypeOf((*RescanVffsRequestType)(nil)).Elem() -} - -type RescanVffsResponse struct { -} - -type RescanVmfs RescanVmfsRequestType - -func init() { - t["RescanVmfs"] = reflect.TypeOf((*RescanVmfs)(nil)).Elem() -} - -type RescanVmfsRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["RescanVmfsRequestType"] = reflect.TypeOf((*RescanVmfsRequestType)(nil)).Elem() -} - -type RescanVmfsResponse struct { -} - -type ResetCollector ResetCollectorRequestType - -func init() { - t["ResetCollector"] = reflect.TypeOf((*ResetCollector)(nil)).Elem() -} - -type ResetCollectorRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["ResetCollectorRequestType"] = reflect.TypeOf((*ResetCollectorRequestType)(nil)).Elem() -} - -type ResetCollectorResponse struct { -} - -type ResetCounterLevelMapping ResetCounterLevelMappingRequestType - -func init() { - t["ResetCounterLevelMapping"] = reflect.TypeOf((*ResetCounterLevelMapping)(nil)).Elem() -} - -type ResetCounterLevelMappingRequestType struct { - This ManagedObjectReference `xml:"_this"` - Counters []int32 `xml:"counters"` -} - -func init() { - t["ResetCounterLevelMappingRequestType"] = reflect.TypeOf((*ResetCounterLevelMappingRequestType)(nil)).Elem() -} - -type ResetCounterLevelMappingResponse struct { -} - -type ResetEntityPermissions ResetEntityPermissionsRequestType - -func init() { - t["ResetEntityPermissions"] = reflect.TypeOf((*ResetEntityPermissions)(nil)).Elem() -} - -type ResetEntityPermissionsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Entity ManagedObjectReference `xml:"entity"` - Permission []Permission `xml:"permission,omitempty"` -} - -func init() { - t["ResetEntityPermissionsRequestType"] = reflect.TypeOf((*ResetEntityPermissionsRequestType)(nil)).Elem() -} - -type ResetEntityPermissionsResponse struct { -} - -type ResetFirmwareToFactoryDefaults ResetFirmwareToFactoryDefaultsRequestType - -func init() { - t["ResetFirmwareToFactoryDefaults"] = reflect.TypeOf((*ResetFirmwareToFactoryDefaults)(nil)).Elem() -} - -type ResetFirmwareToFactoryDefaultsRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["ResetFirmwareToFactoryDefaultsRequestType"] = reflect.TypeOf((*ResetFirmwareToFactoryDefaultsRequestType)(nil)).Elem() -} - -type ResetFirmwareToFactoryDefaultsResponse struct { -} - -type ResetGuestInformation ResetGuestInformationRequestType - -func init() { - t["ResetGuestInformation"] = reflect.TypeOf((*ResetGuestInformation)(nil)).Elem() -} - -type ResetGuestInformationRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["ResetGuestInformationRequestType"] = reflect.TypeOf((*ResetGuestInformationRequestType)(nil)).Elem() -} - -type ResetGuestInformationResponse struct { -} - -type ResetListView ResetListViewRequestType - -func init() { - t["ResetListView"] = reflect.TypeOf((*ResetListView)(nil)).Elem() -} - -type ResetListViewFromView ResetListViewFromViewRequestType - -func init() { - t["ResetListViewFromView"] = reflect.TypeOf((*ResetListViewFromView)(nil)).Elem() -} - -type ResetListViewFromViewRequestType struct { - This ManagedObjectReference `xml:"_this"` - View ManagedObjectReference `xml:"view"` -} - -func init() { - t["ResetListViewFromViewRequestType"] = reflect.TypeOf((*ResetListViewFromViewRequestType)(nil)).Elem() -} - -type ResetListViewFromViewResponse struct { -} - -type ResetListViewRequestType struct { - This ManagedObjectReference `xml:"_this"` - Obj []ManagedObjectReference `xml:"obj,omitempty"` -} - -func init() { - t["ResetListViewRequestType"] = reflect.TypeOf((*ResetListViewRequestType)(nil)).Elem() -} - -type ResetListViewResponse struct { - Returnval []ManagedObjectReference `xml:"returnval,omitempty"` -} - -type ResetSystemHealthInfo ResetSystemHealthInfoRequestType - -func init() { - t["ResetSystemHealthInfo"] = reflect.TypeOf((*ResetSystemHealthInfo)(nil)).Elem() -} - -type ResetSystemHealthInfoRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["ResetSystemHealthInfoRequestType"] = reflect.TypeOf((*ResetSystemHealthInfoRequestType)(nil)).Elem() -} - -type ResetSystemHealthInfoResponse struct { -} - -type ResetVMRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["ResetVMRequestType"] = reflect.TypeOf((*ResetVMRequestType)(nil)).Elem() -} - -type ResetVM_Task ResetVMRequestType - -func init() { - t["ResetVM_Task"] = reflect.TypeOf((*ResetVM_Task)(nil)).Elem() -} - -type ResetVM_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ResignatureUnresolvedVmfsVolumeRequestType struct { - This ManagedObjectReference `xml:"_this"` - ResolutionSpec HostUnresolvedVmfsResignatureSpec `xml:"resolutionSpec"` -} - -func init() { - t["ResignatureUnresolvedVmfsVolumeRequestType"] = reflect.TypeOf((*ResignatureUnresolvedVmfsVolumeRequestType)(nil)).Elem() -} - -type ResignatureUnresolvedVmfsVolume_Task ResignatureUnresolvedVmfsVolumeRequestType - -func init() { - t["ResignatureUnresolvedVmfsVolume_Task"] = reflect.TypeOf((*ResignatureUnresolvedVmfsVolume_Task)(nil)).Elem() -} - -type ResignatureUnresolvedVmfsVolume_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ResolveInstallationErrorsOnClusterRequestType struct { - This ManagedObjectReference `xml:"_this"` - FilterId string `xml:"filterId"` - Cluster ManagedObjectReference `xml:"cluster"` -} - -func init() { - t["ResolveInstallationErrorsOnClusterRequestType"] = reflect.TypeOf((*ResolveInstallationErrorsOnClusterRequestType)(nil)).Elem() -} - -type ResolveInstallationErrorsOnCluster_Task ResolveInstallationErrorsOnClusterRequestType - -func init() { - t["ResolveInstallationErrorsOnCluster_Task"] = reflect.TypeOf((*ResolveInstallationErrorsOnCluster_Task)(nil)).Elem() -} - -type ResolveInstallationErrorsOnCluster_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ResolveInstallationErrorsOnHostRequestType struct { - This ManagedObjectReference `xml:"_this"` - FilterId string `xml:"filterId"` - Host ManagedObjectReference `xml:"host"` -} - -func init() { - t["ResolveInstallationErrorsOnHostRequestType"] = reflect.TypeOf((*ResolveInstallationErrorsOnHostRequestType)(nil)).Elem() -} - -type ResolveInstallationErrorsOnHost_Task ResolveInstallationErrorsOnHostRequestType - -func init() { - t["ResolveInstallationErrorsOnHost_Task"] = reflect.TypeOf((*ResolveInstallationErrorsOnHost_Task)(nil)).Elem() -} - -type ResolveInstallationErrorsOnHost_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ResolveMultipleUnresolvedVmfsVolumes ResolveMultipleUnresolvedVmfsVolumesRequestType - -func init() { - t["ResolveMultipleUnresolvedVmfsVolumes"] = reflect.TypeOf((*ResolveMultipleUnresolvedVmfsVolumes)(nil)).Elem() -} - -type ResolveMultipleUnresolvedVmfsVolumesExRequestType struct { - This ManagedObjectReference `xml:"_this"` - ResolutionSpec []HostUnresolvedVmfsResolutionSpec `xml:"resolutionSpec"` -} - -func init() { - t["ResolveMultipleUnresolvedVmfsVolumesExRequestType"] = reflect.TypeOf((*ResolveMultipleUnresolvedVmfsVolumesExRequestType)(nil)).Elem() -} - -type ResolveMultipleUnresolvedVmfsVolumesEx_Task ResolveMultipleUnresolvedVmfsVolumesExRequestType - -func init() { - t["ResolveMultipleUnresolvedVmfsVolumesEx_Task"] = reflect.TypeOf((*ResolveMultipleUnresolvedVmfsVolumesEx_Task)(nil)).Elem() -} - -type ResolveMultipleUnresolvedVmfsVolumesEx_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ResolveMultipleUnresolvedVmfsVolumesRequestType struct { - This ManagedObjectReference `xml:"_this"` - ResolutionSpec []HostUnresolvedVmfsResolutionSpec `xml:"resolutionSpec"` -} - -func init() { - t["ResolveMultipleUnresolvedVmfsVolumesRequestType"] = reflect.TypeOf((*ResolveMultipleUnresolvedVmfsVolumesRequestType)(nil)).Elem() -} - -type ResolveMultipleUnresolvedVmfsVolumesResponse struct { - Returnval []HostUnresolvedVmfsResolutionResult `xml:"returnval,omitempty"` -} - -type ResourceAllocationInfo struct { - DynamicData - - Reservation int64 `xml:"reservation,omitempty"` - ExpandableReservation *bool `xml:"expandableReservation"` - Limit int64 `xml:"limit,omitempty"` - Shares *SharesInfo `xml:"shares,omitempty"` - OverheadLimit int64 `xml:"overheadLimit,omitempty"` -} - -func init() { - t["ResourceAllocationInfo"] = reflect.TypeOf((*ResourceAllocationInfo)(nil)).Elem() -} - -type ResourceAllocationOption struct { - DynamicData - - SharesOption SharesOption `xml:"sharesOption"` -} - -func init() { - t["ResourceAllocationOption"] = reflect.TypeOf((*ResourceAllocationOption)(nil)).Elem() -} - -type ResourceConfigOption struct { - DynamicData - - CpuAllocationOption ResourceAllocationOption `xml:"cpuAllocationOption"` - MemoryAllocationOption ResourceAllocationOption `xml:"memoryAllocationOption"` -} - -func init() { - t["ResourceConfigOption"] = reflect.TypeOf((*ResourceConfigOption)(nil)).Elem() -} - -type ResourceConfigSpec struct { - DynamicData - - Entity *ManagedObjectReference `xml:"entity,omitempty"` - ChangeVersion string `xml:"changeVersion,omitempty"` - LastModified *time.Time `xml:"lastModified"` - CpuAllocation BaseResourceAllocationInfo `xml:"cpuAllocation,typeattr"` - MemoryAllocation BaseResourceAllocationInfo `xml:"memoryAllocation,typeattr"` -} - -func init() { - t["ResourceConfigSpec"] = reflect.TypeOf((*ResourceConfigSpec)(nil)).Elem() -} - -type ResourceInUse struct { - VimFault - - Type string `xml:"type,omitempty"` - Name string `xml:"name,omitempty"` -} - -func init() { - t["ResourceInUse"] = reflect.TypeOf((*ResourceInUse)(nil)).Elem() -} - -type ResourceInUseFault BaseResourceInUse - -func init() { - t["ResourceInUseFault"] = reflect.TypeOf((*ResourceInUseFault)(nil)).Elem() -} - -type ResourceNotAvailable struct { - VimFault - - ContainerType string `xml:"containerType,omitempty"` - ContainerName string `xml:"containerName,omitempty"` - Type string `xml:"type,omitempty"` -} - -func init() { - t["ResourceNotAvailable"] = reflect.TypeOf((*ResourceNotAvailable)(nil)).Elem() -} - -type ResourceNotAvailableFault ResourceNotAvailable - -func init() { - t["ResourceNotAvailableFault"] = reflect.TypeOf((*ResourceNotAvailableFault)(nil)).Elem() -} - -type ResourcePoolCreatedEvent struct { - ResourcePoolEvent - - Parent ResourcePoolEventArgument `xml:"parent"` -} - -func init() { - t["ResourcePoolCreatedEvent"] = reflect.TypeOf((*ResourcePoolCreatedEvent)(nil)).Elem() -} - -type ResourcePoolDestroyedEvent struct { - ResourcePoolEvent -} - -func init() { - t["ResourcePoolDestroyedEvent"] = reflect.TypeOf((*ResourcePoolDestroyedEvent)(nil)).Elem() -} - -type ResourcePoolEvent struct { - Event - - ResourcePool ResourcePoolEventArgument `xml:"resourcePool"` -} - -func init() { - t["ResourcePoolEvent"] = reflect.TypeOf((*ResourcePoolEvent)(nil)).Elem() -} - -type ResourcePoolEventArgument struct { - EntityEventArgument - - ResourcePool ManagedObjectReference `xml:"resourcePool"` -} - -func init() { - t["ResourcePoolEventArgument"] = reflect.TypeOf((*ResourcePoolEventArgument)(nil)).Elem() -} - -type ResourcePoolMovedEvent struct { - ResourcePoolEvent - - OldParent ResourcePoolEventArgument `xml:"oldParent"` - NewParent ResourcePoolEventArgument `xml:"newParent"` -} - -func init() { - t["ResourcePoolMovedEvent"] = reflect.TypeOf((*ResourcePoolMovedEvent)(nil)).Elem() -} - -type ResourcePoolQuickStats struct { - DynamicData - - OverallCpuUsage int64 `xml:"overallCpuUsage,omitempty"` - OverallCpuDemand int64 `xml:"overallCpuDemand,omitempty"` - GuestMemoryUsage int64 `xml:"guestMemoryUsage,omitempty"` - HostMemoryUsage int64 `xml:"hostMemoryUsage,omitempty"` - DistributedCpuEntitlement int64 `xml:"distributedCpuEntitlement,omitempty"` - DistributedMemoryEntitlement int64 `xml:"distributedMemoryEntitlement,omitempty"` - StaticCpuEntitlement int32 `xml:"staticCpuEntitlement,omitempty"` - StaticMemoryEntitlement int32 `xml:"staticMemoryEntitlement,omitempty"` - PrivateMemory int64 `xml:"privateMemory,omitempty"` - SharedMemory int64 `xml:"sharedMemory,omitempty"` - SwappedMemory int64 `xml:"swappedMemory,omitempty"` - BalloonedMemory int64 `xml:"balloonedMemory,omitempty"` - OverheadMemory int64 `xml:"overheadMemory,omitempty"` - ConsumedOverheadMemory int64 `xml:"consumedOverheadMemory,omitempty"` - CompressedMemory int64 `xml:"compressedMemory,omitempty"` -} - -func init() { - t["ResourcePoolQuickStats"] = reflect.TypeOf((*ResourcePoolQuickStats)(nil)).Elem() -} - -type ResourcePoolReconfiguredEvent struct { - ResourcePoolEvent -} - -func init() { - t["ResourcePoolReconfiguredEvent"] = reflect.TypeOf((*ResourcePoolReconfiguredEvent)(nil)).Elem() -} - -type ResourcePoolResourceUsage struct { - DynamicData - - ReservationUsed int64 `xml:"reservationUsed"` - ReservationUsedForVm int64 `xml:"reservationUsedForVm"` - UnreservedForPool int64 `xml:"unreservedForPool"` - UnreservedForVm int64 `xml:"unreservedForVm"` - OverallUsage int64 `xml:"overallUsage"` - MaxUsage int64 `xml:"maxUsage"` -} - -func init() { - t["ResourcePoolResourceUsage"] = reflect.TypeOf((*ResourcePoolResourceUsage)(nil)).Elem() -} - -type ResourcePoolRuntimeInfo struct { - DynamicData - - Memory ResourcePoolResourceUsage `xml:"memory"` - Cpu ResourcePoolResourceUsage `xml:"cpu"` - OverallStatus ManagedEntityStatus `xml:"overallStatus"` -} - -func init() { - t["ResourcePoolRuntimeInfo"] = reflect.TypeOf((*ResourcePoolRuntimeInfo)(nil)).Elem() -} - -type ResourcePoolSummary struct { - DynamicData - - Name string `xml:"name"` - Config ResourceConfigSpec `xml:"config"` - Runtime ResourcePoolRuntimeInfo `xml:"runtime"` - QuickStats *ResourcePoolQuickStats `xml:"quickStats,omitempty"` - ConfiguredMemoryMB int32 `xml:"configuredMemoryMB,omitempty"` -} - -func init() { - t["ResourcePoolSummary"] = reflect.TypeOf((*ResourcePoolSummary)(nil)).Elem() -} - -type ResourceViolatedEvent struct { - ResourcePoolEvent -} - -func init() { - t["ResourceViolatedEvent"] = reflect.TypeOf((*ResourceViolatedEvent)(nil)).Elem() -} - -type RestartService RestartServiceRequestType - -func init() { - t["RestartService"] = reflect.TypeOf((*RestartService)(nil)).Elem() -} - -type RestartServiceConsoleVirtualNic RestartServiceConsoleVirtualNicRequestType - -func init() { - t["RestartServiceConsoleVirtualNic"] = reflect.TypeOf((*RestartServiceConsoleVirtualNic)(nil)).Elem() -} - -type RestartServiceConsoleVirtualNicRequestType struct { - This ManagedObjectReference `xml:"_this"` - Device string `xml:"device"` -} - -func init() { - t["RestartServiceConsoleVirtualNicRequestType"] = reflect.TypeOf((*RestartServiceConsoleVirtualNicRequestType)(nil)).Elem() -} - -type RestartServiceConsoleVirtualNicResponse struct { -} - -type RestartServiceRequestType struct { - This ManagedObjectReference `xml:"_this"` - Id string `xml:"id"` -} - -func init() { - t["RestartServiceRequestType"] = reflect.TypeOf((*RestartServiceRequestType)(nil)).Elem() -} - -type RestartServiceResponse struct { -} - -type RestoreFirmwareConfiguration RestoreFirmwareConfigurationRequestType - -func init() { - t["RestoreFirmwareConfiguration"] = reflect.TypeOf((*RestoreFirmwareConfiguration)(nil)).Elem() -} - -type RestoreFirmwareConfigurationRequestType struct { - This ManagedObjectReference `xml:"_this"` - Force bool `xml:"force"` -} - -func init() { - t["RestoreFirmwareConfigurationRequestType"] = reflect.TypeOf((*RestoreFirmwareConfigurationRequestType)(nil)).Elem() -} - -type RestoreFirmwareConfigurationResponse struct { -} - -type RestrictedByAdministrator struct { - RuntimeFault - - Details string `xml:"details"` -} - -func init() { - t["RestrictedByAdministrator"] = reflect.TypeOf((*RestrictedByAdministrator)(nil)).Elem() -} - -type RestrictedByAdministratorFault RestrictedByAdministrator - -func init() { - t["RestrictedByAdministratorFault"] = reflect.TypeOf((*RestrictedByAdministratorFault)(nil)).Elem() -} - -type RestrictedVersion struct { - SecurityError -} - -func init() { - t["RestrictedVersion"] = reflect.TypeOf((*RestrictedVersion)(nil)).Elem() -} - -type RestrictedVersionFault RestrictedVersion - -func init() { - t["RestrictedVersionFault"] = reflect.TypeOf((*RestrictedVersionFault)(nil)).Elem() -} - -type RetrieveAllPermissions RetrieveAllPermissionsRequestType - -func init() { - t["RetrieveAllPermissions"] = reflect.TypeOf((*RetrieveAllPermissions)(nil)).Elem() -} - -type RetrieveAllPermissionsRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["RetrieveAllPermissionsRequestType"] = reflect.TypeOf((*RetrieveAllPermissionsRequestType)(nil)).Elem() -} - -type RetrieveAllPermissionsResponse struct { - Returnval []Permission `xml:"returnval,omitempty"` -} - -type RetrieveAnswerFile RetrieveAnswerFileRequestType - -func init() { - t["RetrieveAnswerFile"] = reflect.TypeOf((*RetrieveAnswerFile)(nil)).Elem() -} - -type RetrieveAnswerFileForProfile RetrieveAnswerFileForProfileRequestType - -func init() { - t["RetrieveAnswerFileForProfile"] = reflect.TypeOf((*RetrieveAnswerFileForProfile)(nil)).Elem() -} - -type RetrieveAnswerFileForProfileRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host ManagedObjectReference `xml:"host"` - ApplyProfile HostApplyProfile `xml:"applyProfile"` -} - -func init() { - t["RetrieveAnswerFileForProfileRequestType"] = reflect.TypeOf((*RetrieveAnswerFileForProfileRequestType)(nil)).Elem() -} - -type RetrieveAnswerFileForProfileResponse struct { - Returnval *AnswerFile `xml:"returnval,omitempty"` -} - -type RetrieveAnswerFileRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host ManagedObjectReference `xml:"host"` -} - -func init() { - t["RetrieveAnswerFileRequestType"] = reflect.TypeOf((*RetrieveAnswerFileRequestType)(nil)).Elem() -} - -type RetrieveAnswerFileResponse struct { - Returnval *AnswerFile `xml:"returnval,omitempty"` -} - -type RetrieveArgumentDescription RetrieveArgumentDescriptionRequestType - -func init() { - t["RetrieveArgumentDescription"] = reflect.TypeOf((*RetrieveArgumentDescription)(nil)).Elem() -} - -type RetrieveArgumentDescriptionRequestType struct { - This ManagedObjectReference `xml:"_this"` - EventTypeId string `xml:"eventTypeId"` -} - -func init() { - t["RetrieveArgumentDescriptionRequestType"] = reflect.TypeOf((*RetrieveArgumentDescriptionRequestType)(nil)).Elem() -} - -type RetrieveArgumentDescriptionResponse struct { - Returnval []EventArgDesc `xml:"returnval,omitempty"` -} - -type RetrieveDasAdvancedRuntimeInfo RetrieveDasAdvancedRuntimeInfoRequestType - -func init() { - t["RetrieveDasAdvancedRuntimeInfo"] = reflect.TypeOf((*RetrieveDasAdvancedRuntimeInfo)(nil)).Elem() -} - -type RetrieveDasAdvancedRuntimeInfoRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["RetrieveDasAdvancedRuntimeInfoRequestType"] = reflect.TypeOf((*RetrieveDasAdvancedRuntimeInfoRequestType)(nil)).Elem() -} - -type RetrieveDasAdvancedRuntimeInfoResponse struct { - Returnval BaseClusterDasAdvancedRuntimeInfo `xml:"returnval,omitempty,typeattr"` -} - -type RetrieveDescription RetrieveDescriptionRequestType - -func init() { - t["RetrieveDescription"] = reflect.TypeOf((*RetrieveDescription)(nil)).Elem() -} - -type RetrieveDescriptionRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["RetrieveDescriptionRequestType"] = reflect.TypeOf((*RetrieveDescriptionRequestType)(nil)).Elem() -} - -type RetrieveDescriptionResponse struct { - Returnval *ProfileDescription `xml:"returnval,omitempty"` -} - -type RetrieveDiskPartitionInfo RetrieveDiskPartitionInfoRequestType - -func init() { - t["RetrieveDiskPartitionInfo"] = reflect.TypeOf((*RetrieveDiskPartitionInfo)(nil)).Elem() -} - -type RetrieveDiskPartitionInfoRequestType struct { - This ManagedObjectReference `xml:"_this"` - DevicePath []string `xml:"devicePath"` -} - -func init() { - t["RetrieveDiskPartitionInfoRequestType"] = reflect.TypeOf((*RetrieveDiskPartitionInfoRequestType)(nil)).Elem() -} - -type RetrieveDiskPartitionInfoResponse struct { - Returnval []HostDiskPartitionInfo `xml:"returnval,omitempty"` -} - -type RetrieveEntityPermissions RetrieveEntityPermissionsRequestType - -func init() { - t["RetrieveEntityPermissions"] = reflect.TypeOf((*RetrieveEntityPermissions)(nil)).Elem() -} - -type RetrieveEntityPermissionsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Entity ManagedObjectReference `xml:"entity"` - Inherited bool `xml:"inherited"` -} - -func init() { - t["RetrieveEntityPermissionsRequestType"] = reflect.TypeOf((*RetrieveEntityPermissionsRequestType)(nil)).Elem() -} - -type RetrieveEntityPermissionsResponse struct { - Returnval []Permission `xml:"returnval,omitempty"` -} - -type RetrieveEntityScheduledTask RetrieveEntityScheduledTaskRequestType - -func init() { - t["RetrieveEntityScheduledTask"] = reflect.TypeOf((*RetrieveEntityScheduledTask)(nil)).Elem() -} - -type RetrieveEntityScheduledTaskRequestType struct { - This ManagedObjectReference `xml:"_this"` - Entity *ManagedObjectReference `xml:"entity,omitempty"` -} - -func init() { - t["RetrieveEntityScheduledTaskRequestType"] = reflect.TypeOf((*RetrieveEntityScheduledTaskRequestType)(nil)).Elem() -} - -type RetrieveEntityScheduledTaskResponse struct { - Returnval []ManagedObjectReference `xml:"returnval,omitempty"` -} - -type RetrieveHardwareUptime RetrieveHardwareUptimeRequestType - -func init() { - t["RetrieveHardwareUptime"] = reflect.TypeOf((*RetrieveHardwareUptime)(nil)).Elem() -} - -type RetrieveHardwareUptimeRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["RetrieveHardwareUptimeRequestType"] = reflect.TypeOf((*RetrieveHardwareUptimeRequestType)(nil)).Elem() -} - -type RetrieveHardwareUptimeResponse struct { - Returnval int64 `xml:"returnval"` -} - -type RetrieveHostAccessControlEntries RetrieveHostAccessControlEntriesRequestType - -func init() { - t["RetrieveHostAccessControlEntries"] = reflect.TypeOf((*RetrieveHostAccessControlEntries)(nil)).Elem() -} - -type RetrieveHostAccessControlEntriesRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["RetrieveHostAccessControlEntriesRequestType"] = reflect.TypeOf((*RetrieveHostAccessControlEntriesRequestType)(nil)).Elem() -} - -type RetrieveHostAccessControlEntriesResponse struct { - Returnval []HostAccessControlEntry `xml:"returnval,omitempty"` -} - -type RetrieveObjectScheduledTask RetrieveObjectScheduledTaskRequestType - -func init() { - t["RetrieveObjectScheduledTask"] = reflect.TypeOf((*RetrieveObjectScheduledTask)(nil)).Elem() -} - -type RetrieveObjectScheduledTaskRequestType struct { - This ManagedObjectReference `xml:"_this"` - Obj *ManagedObjectReference `xml:"obj,omitempty"` -} - -func init() { - t["RetrieveObjectScheduledTaskRequestType"] = reflect.TypeOf((*RetrieveObjectScheduledTaskRequestType)(nil)).Elem() -} - -type RetrieveObjectScheduledTaskResponse struct { - Returnval []ManagedObjectReference `xml:"returnval,omitempty"` -} - -type RetrieveOptions struct { - DynamicData - - MaxObjects int32 `xml:"maxObjects,omitempty"` -} - -func init() { - t["RetrieveOptions"] = reflect.TypeOf((*RetrieveOptions)(nil)).Elem() -} - -type RetrieveProductComponents RetrieveProductComponentsRequestType - -func init() { - t["RetrieveProductComponents"] = reflect.TypeOf((*RetrieveProductComponents)(nil)).Elem() -} - -type RetrieveProductComponentsRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["RetrieveProductComponentsRequestType"] = reflect.TypeOf((*RetrieveProductComponentsRequestType)(nil)).Elem() -} - -type RetrieveProductComponentsResponse struct { - Returnval []ProductComponentInfo `xml:"returnval,omitempty"` -} - -type RetrieveProperties RetrievePropertiesRequestType - -func init() { - t["RetrieveProperties"] = reflect.TypeOf((*RetrieveProperties)(nil)).Elem() -} - -type RetrievePropertiesEx RetrievePropertiesExRequestType - -func init() { - t["RetrievePropertiesEx"] = reflect.TypeOf((*RetrievePropertiesEx)(nil)).Elem() -} - -type RetrievePropertiesExRequestType struct { - This ManagedObjectReference `xml:"_this"` - SpecSet []PropertyFilterSpec `xml:"specSet"` - Options RetrieveOptions `xml:"options"` -} - -func init() { - t["RetrievePropertiesExRequestType"] = reflect.TypeOf((*RetrievePropertiesExRequestType)(nil)).Elem() -} - -type RetrievePropertiesExResponse struct { - Returnval *RetrieveResult `xml:"returnval,omitempty"` -} - -type RetrievePropertiesRequestType struct { - This ManagedObjectReference `xml:"_this"` - SpecSet []PropertyFilterSpec `xml:"specSet"` -} - -func init() { - t["RetrievePropertiesRequestType"] = reflect.TypeOf((*RetrievePropertiesRequestType)(nil)).Elem() -} - -type RetrievePropertiesResponse struct { - Returnval []ObjectContent `xml:"returnval,omitempty"` -} - -type RetrieveResult struct { - DynamicData - - Token string `xml:"token,omitempty"` - Objects []ObjectContent `xml:"objects"` -} - -func init() { - t["RetrieveResult"] = reflect.TypeOf((*RetrieveResult)(nil)).Elem() -} - -type RetrieveRolePermissions RetrieveRolePermissionsRequestType - -func init() { - t["RetrieveRolePermissions"] = reflect.TypeOf((*RetrieveRolePermissions)(nil)).Elem() -} - -type RetrieveRolePermissionsRequestType struct { - This ManagedObjectReference `xml:"_this"` - RoleId int32 `xml:"roleId"` -} - -func init() { - t["RetrieveRolePermissionsRequestType"] = reflect.TypeOf((*RetrieveRolePermissionsRequestType)(nil)).Elem() -} - -type RetrieveRolePermissionsResponse struct { - Returnval []Permission `xml:"returnval,omitempty"` -} - -type RetrieveServiceContent RetrieveServiceContentRequestType - -func init() { - t["RetrieveServiceContent"] = reflect.TypeOf((*RetrieveServiceContent)(nil)).Elem() -} - -type RetrieveServiceContentRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["RetrieveServiceContentRequestType"] = reflect.TypeOf((*RetrieveServiceContentRequestType)(nil)).Elem() -} - -type RetrieveServiceContentResponse struct { - Returnval ServiceContent `xml:"returnval"` -} - -type RetrieveUserGroups RetrieveUserGroupsRequestType - -func init() { - t["RetrieveUserGroups"] = reflect.TypeOf((*RetrieveUserGroups)(nil)).Elem() -} - -type RetrieveUserGroupsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Domain string `xml:"domain,omitempty"` - SearchStr string `xml:"searchStr"` - BelongsToGroup string `xml:"belongsToGroup,omitempty"` - BelongsToUser string `xml:"belongsToUser,omitempty"` - ExactMatch bool `xml:"exactMatch"` - FindUsers bool `xml:"findUsers"` - FindGroups bool `xml:"findGroups"` -} - -func init() { - t["RetrieveUserGroupsRequestType"] = reflect.TypeOf((*RetrieveUserGroupsRequestType)(nil)).Elem() -} - -type RetrieveUserGroupsResponse struct { - Returnval []BaseUserSearchResult `xml:"returnval,omitempty,typeattr"` -} - -type RevertToCurrentSnapshotRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host *ManagedObjectReference `xml:"host,omitempty"` - SuppressPowerOn *bool `xml:"suppressPowerOn"` -} - -func init() { - t["RevertToCurrentSnapshotRequestType"] = reflect.TypeOf((*RevertToCurrentSnapshotRequestType)(nil)).Elem() -} - -type RevertToCurrentSnapshot_Task RevertToCurrentSnapshotRequestType - -func init() { - t["RevertToCurrentSnapshot_Task"] = reflect.TypeOf((*RevertToCurrentSnapshot_Task)(nil)).Elem() -} - -type RevertToCurrentSnapshot_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type RevertToSnapshotRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host *ManagedObjectReference `xml:"host,omitempty"` - SuppressPowerOn *bool `xml:"suppressPowerOn"` -} - -func init() { - t["RevertToSnapshotRequestType"] = reflect.TypeOf((*RevertToSnapshotRequestType)(nil)).Elem() -} - -type RevertToSnapshot_Task RevertToSnapshotRequestType - -func init() { - t["RevertToSnapshot_Task"] = reflect.TypeOf((*RevertToSnapshot_Task)(nil)).Elem() -} - -type RevertToSnapshot_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type RewindCollector RewindCollectorRequestType - -func init() { - t["RewindCollector"] = reflect.TypeOf((*RewindCollector)(nil)).Elem() -} - -type RewindCollectorRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["RewindCollectorRequestType"] = reflect.TypeOf((*RewindCollectorRequestType)(nil)).Elem() -} - -type RewindCollectorResponse struct { -} - -type RoleAddedEvent struct { - RoleEvent - - PrivilegeList []string `xml:"privilegeList,omitempty"` -} - -func init() { - t["RoleAddedEvent"] = reflect.TypeOf((*RoleAddedEvent)(nil)).Elem() -} - -type RoleEvent struct { - AuthorizationEvent - - Role RoleEventArgument `xml:"role"` -} - -func init() { - t["RoleEvent"] = reflect.TypeOf((*RoleEvent)(nil)).Elem() -} - -type RoleEventArgument struct { - EventArgument - - RoleId int32 `xml:"roleId"` - Name string `xml:"name"` -} - -func init() { - t["RoleEventArgument"] = reflect.TypeOf((*RoleEventArgument)(nil)).Elem() -} - -type RoleRemovedEvent struct { - RoleEvent -} - -func init() { - t["RoleRemovedEvent"] = reflect.TypeOf((*RoleRemovedEvent)(nil)).Elem() -} - -type RoleUpdatedEvent struct { - RoleEvent - - PrivilegeList []string `xml:"privilegeList,omitempty"` -} - -func init() { - t["RoleUpdatedEvent"] = reflect.TypeOf((*RoleUpdatedEvent)(nil)).Elem() -} - -type RollbackEvent struct { - DvsEvent - - HostName string `xml:"hostName"` - MethodName string `xml:"methodName,omitempty"` -} - -func init() { - t["RollbackEvent"] = reflect.TypeOf((*RollbackEvent)(nil)).Elem() -} - -type RollbackFailure struct { - DvsFault - - EntityName string `xml:"entityName"` - EntityType string `xml:"entityType"` -} - -func init() { - t["RollbackFailure"] = reflect.TypeOf((*RollbackFailure)(nil)).Elem() -} - -type RollbackFailureFault RollbackFailure - -func init() { - t["RollbackFailureFault"] = reflect.TypeOf((*RollbackFailureFault)(nil)).Elem() -} - -type RuleViolation struct { - VmConfigFault - - Host *ManagedObjectReference `xml:"host,omitempty"` - Rule BaseClusterRuleInfo `xml:"rule,omitempty,typeattr"` -} - -func init() { - t["RuleViolation"] = reflect.TypeOf((*RuleViolation)(nil)).Elem() -} - -type RuleViolationFault RuleViolation - -func init() { - t["RuleViolationFault"] = reflect.TypeOf((*RuleViolationFault)(nil)).Elem() -} - -type RunScheduledTask RunScheduledTaskRequestType - -func init() { - t["RunScheduledTask"] = reflect.TypeOf((*RunScheduledTask)(nil)).Elem() -} - -type RunScheduledTaskRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["RunScheduledTaskRequestType"] = reflect.TypeOf((*RunScheduledTaskRequestType)(nil)).Elem() -} - -type RunScheduledTaskResponse struct { -} - -type RunScriptAction struct { - Action - - Script string `xml:"script"` -} - -func init() { - t["RunScriptAction"] = reflect.TypeOf((*RunScriptAction)(nil)).Elem() -} - -type RunVsanPhysicalDiskDiagnostics RunVsanPhysicalDiskDiagnosticsRequestType - -func init() { - t["RunVsanPhysicalDiskDiagnostics"] = reflect.TypeOf((*RunVsanPhysicalDiskDiagnostics)(nil)).Elem() -} - -type RunVsanPhysicalDiskDiagnosticsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Disks []string `xml:"disks,omitempty"` -} - -func init() { - t["RunVsanPhysicalDiskDiagnosticsRequestType"] = reflect.TypeOf((*RunVsanPhysicalDiskDiagnosticsRequestType)(nil)).Elem() -} - -type RunVsanPhysicalDiskDiagnosticsResponse struct { - Returnval []HostVsanInternalSystemVsanPhysicalDiskDiagnosticsResult `xml:"returnval"` -} - -type RuntimeFault struct { - MethodFault -} - -func init() { - t["RuntimeFault"] = reflect.TypeOf((*RuntimeFault)(nil)).Elem() -} - -type RuntimeFaultFault BaseRuntimeFault - -func init() { - t["RuntimeFaultFault"] = reflect.TypeOf((*RuntimeFaultFault)(nil)).Elem() -} - -type SAMLTokenAuthentication struct { - GuestAuthentication - - Token string `xml:"token"` - Username string `xml:"username,omitempty"` -} - -func init() { - t["SAMLTokenAuthentication"] = reflect.TypeOf((*SAMLTokenAuthentication)(nil)).Elem() -} - -type SSLDisabledFault struct { - HostConnectFault -} - -func init() { - t["SSLDisabledFault"] = reflect.TypeOf((*SSLDisabledFault)(nil)).Elem() -} - -type SSLDisabledFaultFault SSLDisabledFault - -func init() { - t["SSLDisabledFaultFault"] = reflect.TypeOf((*SSLDisabledFaultFault)(nil)).Elem() -} - -type SSLVerifyFault struct { - HostConnectFault - - SelfSigned bool `xml:"selfSigned"` - Thumbprint string `xml:"thumbprint"` -} - -func init() { - t["SSLVerifyFault"] = reflect.TypeOf((*SSLVerifyFault)(nil)).Elem() -} - -type SSLVerifyFaultFault SSLVerifyFault - -func init() { - t["SSLVerifyFaultFault"] = reflect.TypeOf((*SSLVerifyFaultFault)(nil)).Elem() -} - -type SSPIAuthentication struct { - GuestAuthentication - - SspiToken string `xml:"sspiToken"` -} - -func init() { - t["SSPIAuthentication"] = reflect.TypeOf((*SSPIAuthentication)(nil)).Elem() -} - -type SSPIChallenge struct { - VimFault - - Base64Token string `xml:"base64Token"` -} - -func init() { - t["SSPIChallenge"] = reflect.TypeOf((*SSPIChallenge)(nil)).Elem() -} - -type SSPIChallengeFault SSPIChallenge - -func init() { - t["SSPIChallengeFault"] = reflect.TypeOf((*SSPIChallengeFault)(nil)).Elem() -} - -type ScanHostPatchRequestType struct { - This ManagedObjectReference `xml:"_this"` - Repository HostPatchManagerLocator `xml:"repository"` - UpdateID []string `xml:"updateID,omitempty"` -} - -func init() { - t["ScanHostPatchRequestType"] = reflect.TypeOf((*ScanHostPatchRequestType)(nil)).Elem() -} - -type ScanHostPatchV2RequestType struct { - This ManagedObjectReference `xml:"_this"` - MetaUrls []string `xml:"metaUrls,omitempty"` - BundleUrls []string `xml:"bundleUrls,omitempty"` - Spec *HostPatchManagerPatchManagerOperationSpec `xml:"spec,omitempty"` -} - -func init() { - t["ScanHostPatchV2RequestType"] = reflect.TypeOf((*ScanHostPatchV2RequestType)(nil)).Elem() -} - -type ScanHostPatchV2_Task ScanHostPatchV2RequestType - -func init() { - t["ScanHostPatchV2_Task"] = reflect.TypeOf((*ScanHostPatchV2_Task)(nil)).Elem() -} - -type ScanHostPatchV2_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ScanHostPatch_Task ScanHostPatchRequestType - -func init() { - t["ScanHostPatch_Task"] = reflect.TypeOf((*ScanHostPatch_Task)(nil)).Elem() -} - -type ScanHostPatch_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ScheduledHardwareUpgradeInfo struct { - DynamicData - - UpgradePolicy string `xml:"upgradePolicy,omitempty"` - VersionKey string `xml:"versionKey,omitempty"` - ScheduledHardwareUpgradeStatus string `xml:"scheduledHardwareUpgradeStatus,omitempty"` - Fault *LocalizedMethodFault `xml:"fault,omitempty"` -} - -func init() { - t["ScheduledHardwareUpgradeInfo"] = reflect.TypeOf((*ScheduledHardwareUpgradeInfo)(nil)).Elem() -} - -type ScheduledTaskCompletedEvent struct { - ScheduledTaskEvent -} - -func init() { - t["ScheduledTaskCompletedEvent"] = reflect.TypeOf((*ScheduledTaskCompletedEvent)(nil)).Elem() -} - -type ScheduledTaskCreatedEvent struct { - ScheduledTaskEvent -} - -func init() { - t["ScheduledTaskCreatedEvent"] = reflect.TypeOf((*ScheduledTaskCreatedEvent)(nil)).Elem() -} - -type ScheduledTaskDescription struct { - DynamicData - - Action []BaseTypeDescription `xml:"action,typeattr"` - SchedulerInfo []ScheduledTaskDetail `xml:"schedulerInfo"` - State []BaseElementDescription `xml:"state,typeattr"` - DayOfWeek []BaseElementDescription `xml:"dayOfWeek,typeattr"` - WeekOfMonth []BaseElementDescription `xml:"weekOfMonth,typeattr"` -} - -func init() { - t["ScheduledTaskDescription"] = reflect.TypeOf((*ScheduledTaskDescription)(nil)).Elem() -} - -type ScheduledTaskDetail struct { - TypeDescription - - Frequency string `xml:"frequency"` -} - -func init() { - t["ScheduledTaskDetail"] = reflect.TypeOf((*ScheduledTaskDetail)(nil)).Elem() -} - -type ScheduledTaskEmailCompletedEvent struct { - ScheduledTaskEvent - - To string `xml:"to"` -} - -func init() { - t["ScheduledTaskEmailCompletedEvent"] = reflect.TypeOf((*ScheduledTaskEmailCompletedEvent)(nil)).Elem() -} - -type ScheduledTaskEmailFailedEvent struct { - ScheduledTaskEvent - - To string `xml:"to"` - Reason LocalizedMethodFault `xml:"reason"` -} - -func init() { - t["ScheduledTaskEmailFailedEvent"] = reflect.TypeOf((*ScheduledTaskEmailFailedEvent)(nil)).Elem() -} - -type ScheduledTaskEvent struct { - Event - - ScheduledTask ScheduledTaskEventArgument `xml:"scheduledTask"` - Entity ManagedEntityEventArgument `xml:"entity"` -} - -func init() { - t["ScheduledTaskEvent"] = reflect.TypeOf((*ScheduledTaskEvent)(nil)).Elem() -} - -type ScheduledTaskEventArgument struct { - EntityEventArgument - - ScheduledTask ManagedObjectReference `xml:"scheduledTask"` -} - -func init() { - t["ScheduledTaskEventArgument"] = reflect.TypeOf((*ScheduledTaskEventArgument)(nil)).Elem() -} - -type ScheduledTaskFailedEvent struct { - ScheduledTaskEvent - - Reason LocalizedMethodFault `xml:"reason"` -} - -func init() { - t["ScheduledTaskFailedEvent"] = reflect.TypeOf((*ScheduledTaskFailedEvent)(nil)).Elem() -} - -type ScheduledTaskInfo struct { - ScheduledTaskSpec - - ScheduledTask ManagedObjectReference `xml:"scheduledTask"` - Entity ManagedObjectReference `xml:"entity"` - LastModifiedTime time.Time `xml:"lastModifiedTime"` - LastModifiedUser string `xml:"lastModifiedUser"` - NextRunTime *time.Time `xml:"nextRunTime"` - PrevRunTime *time.Time `xml:"prevRunTime"` - State TaskInfoState `xml:"state"` - Error *LocalizedMethodFault `xml:"error,omitempty"` - Result AnyType `xml:"result,omitempty,typeattr"` - Progress int32 `xml:"progress,omitempty"` - ActiveTask *ManagedObjectReference `xml:"activeTask,omitempty"` - TaskObject *ManagedObjectReference `xml:"taskObject,omitempty"` -} - -func init() { - t["ScheduledTaskInfo"] = reflect.TypeOf((*ScheduledTaskInfo)(nil)).Elem() -} - -type ScheduledTaskReconfiguredEvent struct { - ScheduledTaskEvent -} - -func init() { - t["ScheduledTaskReconfiguredEvent"] = reflect.TypeOf((*ScheduledTaskReconfiguredEvent)(nil)).Elem() -} - -type ScheduledTaskRemovedEvent struct { - ScheduledTaskEvent -} - -func init() { - t["ScheduledTaskRemovedEvent"] = reflect.TypeOf((*ScheduledTaskRemovedEvent)(nil)).Elem() -} - -type ScheduledTaskSpec struct { - DynamicData - - Name string `xml:"name"` - Description string `xml:"description"` - Enabled bool `xml:"enabled"` - Scheduler BaseTaskScheduler `xml:"scheduler,typeattr"` - Action BaseAction `xml:"action,typeattr"` - Notification string `xml:"notification,omitempty"` -} - -func init() { - t["ScheduledTaskSpec"] = reflect.TypeOf((*ScheduledTaskSpec)(nil)).Elem() -} - -type ScheduledTaskStartedEvent struct { - ScheduledTaskEvent -} - -func init() { - t["ScheduledTaskStartedEvent"] = reflect.TypeOf((*ScheduledTaskStartedEvent)(nil)).Elem() -} - -type ScsiLun struct { - HostDevice - - Key string `xml:"key,omitempty"` - Uuid string `xml:"uuid"` - Descriptor []ScsiLunDescriptor `xml:"descriptor,omitempty"` - CanonicalName string `xml:"canonicalName,omitempty"` - DisplayName string `xml:"displayName,omitempty"` - LunType string `xml:"lunType"` - Vendor string `xml:"vendor,omitempty"` - Model string `xml:"model,omitempty"` - Revision string `xml:"revision,omitempty"` - ScsiLevel int32 `xml:"scsiLevel,omitempty"` - SerialNumber string `xml:"serialNumber,omitempty"` - DurableName *ScsiLunDurableName `xml:"durableName,omitempty"` - AlternateName []ScsiLunDurableName `xml:"alternateName,omitempty"` - StandardInquiry []byte `xml:"standardInquiry,omitempty"` - QueueDepth int32 `xml:"queueDepth,omitempty"` - OperationalState []string `xml:"operationalState"` - Capabilities *ScsiLunCapabilities `xml:"capabilities,omitempty"` - VStorageSupport string `xml:"vStorageSupport,omitempty"` - ProtocolEndpoint *bool `xml:"protocolEndpoint"` -} - -func init() { - t["ScsiLun"] = reflect.TypeOf((*ScsiLun)(nil)).Elem() -} - -type ScsiLunCapabilities struct { - DynamicData - - UpdateDisplayNameSupported bool `xml:"updateDisplayNameSupported"` -} - -func init() { - t["ScsiLunCapabilities"] = reflect.TypeOf((*ScsiLunCapabilities)(nil)).Elem() -} - -type ScsiLunDescriptor struct { - DynamicData - - Quality string `xml:"quality"` - Id string `xml:"id"` -} - -func init() { - t["ScsiLunDescriptor"] = reflect.TypeOf((*ScsiLunDescriptor)(nil)).Elem() -} - -type ScsiLunDurableName struct { - DynamicData - - Namespace string `xml:"namespace"` - NamespaceId byte `xml:"namespaceId"` - Data []byte `xml:"data,omitempty"` -} - -func init() { - t["ScsiLunDurableName"] = reflect.TypeOf((*ScsiLunDurableName)(nil)).Elem() -} - -type SeSparseVirtualDiskSpec struct { - FileBackedVirtualDiskSpec - - GrainSizeKb int32 `xml:"grainSizeKb,omitempty"` -} - -func init() { - t["SeSparseVirtualDiskSpec"] = reflect.TypeOf((*SeSparseVirtualDiskSpec)(nil)).Elem() -} - -type SearchDatastoreRequestType struct { - This ManagedObjectReference `xml:"_this"` - DatastorePath string `xml:"datastorePath"` - SearchSpec *HostDatastoreBrowserSearchSpec `xml:"searchSpec,omitempty"` -} - -func init() { - t["SearchDatastoreRequestType"] = reflect.TypeOf((*SearchDatastoreRequestType)(nil)).Elem() -} - -type SearchDatastoreSubFoldersRequestType struct { - This ManagedObjectReference `xml:"_this"` - DatastorePath string `xml:"datastorePath"` - SearchSpec *HostDatastoreBrowserSearchSpec `xml:"searchSpec,omitempty"` -} - -func init() { - t["SearchDatastoreSubFoldersRequestType"] = reflect.TypeOf((*SearchDatastoreSubFoldersRequestType)(nil)).Elem() -} - -type SearchDatastoreSubFolders_Task SearchDatastoreSubFoldersRequestType - -func init() { - t["SearchDatastoreSubFolders_Task"] = reflect.TypeOf((*SearchDatastoreSubFolders_Task)(nil)).Elem() -} - -type SearchDatastoreSubFolders_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type SearchDatastore_Task SearchDatastoreRequestType - -func init() { - t["SearchDatastore_Task"] = reflect.TypeOf((*SearchDatastore_Task)(nil)).Elem() -} - -type SearchDatastore_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type SecondaryVmAlreadyDisabled struct { - VmFaultToleranceIssue - - InstanceUuid string `xml:"instanceUuid"` -} - -func init() { - t["SecondaryVmAlreadyDisabled"] = reflect.TypeOf((*SecondaryVmAlreadyDisabled)(nil)).Elem() -} - -type SecondaryVmAlreadyDisabledFault SecondaryVmAlreadyDisabled - -func init() { - t["SecondaryVmAlreadyDisabledFault"] = reflect.TypeOf((*SecondaryVmAlreadyDisabledFault)(nil)).Elem() -} - -type SecondaryVmAlreadyEnabled struct { - VmFaultToleranceIssue - - InstanceUuid string `xml:"instanceUuid"` -} - -func init() { - t["SecondaryVmAlreadyEnabled"] = reflect.TypeOf((*SecondaryVmAlreadyEnabled)(nil)).Elem() -} - -type SecondaryVmAlreadyEnabledFault SecondaryVmAlreadyEnabled - -func init() { - t["SecondaryVmAlreadyEnabledFault"] = reflect.TypeOf((*SecondaryVmAlreadyEnabledFault)(nil)).Elem() -} - -type SecondaryVmAlreadyRegistered struct { - VmFaultToleranceIssue - - InstanceUuid string `xml:"instanceUuid,omitempty"` -} - -func init() { - t["SecondaryVmAlreadyRegistered"] = reflect.TypeOf((*SecondaryVmAlreadyRegistered)(nil)).Elem() -} - -type SecondaryVmAlreadyRegisteredFault SecondaryVmAlreadyRegistered - -func init() { - t["SecondaryVmAlreadyRegisteredFault"] = reflect.TypeOf((*SecondaryVmAlreadyRegisteredFault)(nil)).Elem() -} - -type SecondaryVmNotRegistered struct { - VmFaultToleranceIssue - - InstanceUuid string `xml:"instanceUuid,omitempty"` -} - -func init() { - t["SecondaryVmNotRegistered"] = reflect.TypeOf((*SecondaryVmNotRegistered)(nil)).Elem() -} - -type SecondaryVmNotRegisteredFault SecondaryVmNotRegistered - -func init() { - t["SecondaryVmNotRegisteredFault"] = reflect.TypeOf((*SecondaryVmNotRegisteredFault)(nil)).Elem() -} - -type SecurityError struct { - RuntimeFault -} - -func init() { - t["SecurityError"] = reflect.TypeOf((*SecurityError)(nil)).Elem() -} - -type SecurityErrorFault BaseSecurityError - -func init() { - t["SecurityErrorFault"] = reflect.TypeOf((*SecurityErrorFault)(nil)).Elem() -} - -type SecurityProfile struct { - ApplyProfile - - Permission []PermissionProfile `xml:"permission,omitempty"` -} - -func init() { - t["SecurityProfile"] = reflect.TypeOf((*SecurityProfile)(nil)).Elem() -} - -type SelectActivePartition SelectActivePartitionRequestType - -func init() { - t["SelectActivePartition"] = reflect.TypeOf((*SelectActivePartition)(nil)).Elem() -} - -type SelectActivePartitionRequestType struct { - This ManagedObjectReference `xml:"_this"` - Partition *HostScsiDiskPartition `xml:"partition,omitempty"` -} - -func init() { - t["SelectActivePartitionRequestType"] = reflect.TypeOf((*SelectActivePartitionRequestType)(nil)).Elem() -} - -type SelectActivePartitionResponse struct { -} - -type SelectVnic SelectVnicRequestType - -func init() { - t["SelectVnic"] = reflect.TypeOf((*SelectVnic)(nil)).Elem() -} - -type SelectVnicForNicType SelectVnicForNicTypeRequestType - -func init() { - t["SelectVnicForNicType"] = reflect.TypeOf((*SelectVnicForNicType)(nil)).Elem() -} - -type SelectVnicForNicTypeRequestType struct { - This ManagedObjectReference `xml:"_this"` - NicType string `xml:"nicType"` - Device string `xml:"device"` -} - -func init() { - t["SelectVnicForNicTypeRequestType"] = reflect.TypeOf((*SelectVnicForNicTypeRequestType)(nil)).Elem() -} - -type SelectVnicForNicTypeResponse struct { -} - -type SelectVnicRequestType struct { - This ManagedObjectReference `xml:"_this"` - Device string `xml:"device"` -} - -func init() { - t["SelectVnicRequestType"] = reflect.TypeOf((*SelectVnicRequestType)(nil)).Elem() -} - -type SelectVnicResponse struct { -} - -type SelectionSet struct { - DynamicData -} - -func init() { - t["SelectionSet"] = reflect.TypeOf((*SelectionSet)(nil)).Elem() -} - -type SelectionSpec struct { - DynamicData - - Name string `xml:"name,omitempty"` -} - -func init() { - t["SelectionSpec"] = reflect.TypeOf((*SelectionSpec)(nil)).Elem() -} - -type SendEmailAction struct { - Action - - ToList string `xml:"toList"` - CcList string `xml:"ccList"` - Subject string `xml:"subject"` - Body string `xml:"body"` -} - -func init() { - t["SendEmailAction"] = reflect.TypeOf((*SendEmailAction)(nil)).Elem() -} - -type SendNMI SendNMIRequestType - -func init() { - t["SendNMI"] = reflect.TypeOf((*SendNMI)(nil)).Elem() -} - -type SendNMIRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["SendNMIRequestType"] = reflect.TypeOf((*SendNMIRequestType)(nil)).Elem() -} - -type SendNMIResponse struct { -} - -type SendSNMPAction struct { - Action -} - -func init() { - t["SendSNMPAction"] = reflect.TypeOf((*SendSNMPAction)(nil)).Elem() -} - -type SendTestNotification SendTestNotificationRequestType - -func init() { - t["SendTestNotification"] = reflect.TypeOf((*SendTestNotification)(nil)).Elem() -} - -type SendTestNotificationRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["SendTestNotificationRequestType"] = reflect.TypeOf((*SendTestNotificationRequestType)(nil)).Elem() -} - -type SendTestNotificationResponse struct { -} - -type ServerLicenseExpiredEvent struct { - LicenseEvent - - Product string `xml:"product"` -} - -func init() { - t["ServerLicenseExpiredEvent"] = reflect.TypeOf((*ServerLicenseExpiredEvent)(nil)).Elem() -} - -type ServerStartedSessionEvent struct { - SessionEvent -} - -func init() { - t["ServerStartedSessionEvent"] = reflect.TypeOf((*ServerStartedSessionEvent)(nil)).Elem() -} - -type ServiceConsolePortGroupProfile struct { - PortGroupProfile - - IpConfig IpAddressProfile `xml:"ipConfig"` -} - -func init() { - t["ServiceConsolePortGroupProfile"] = reflect.TypeOf((*ServiceConsolePortGroupProfile)(nil)).Elem() -} - -type ServiceConsoleReservationInfo struct { - DynamicData - - ServiceConsoleReservedCfg int64 `xml:"serviceConsoleReservedCfg"` - ServiceConsoleReserved int64 `xml:"serviceConsoleReserved"` - Unreserved int64 `xml:"unreserved"` -} - -func init() { - t["ServiceConsoleReservationInfo"] = reflect.TypeOf((*ServiceConsoleReservationInfo)(nil)).Elem() -} - -type ServiceContent struct { - DynamicData - - RootFolder ManagedObjectReference `xml:"rootFolder"` - PropertyCollector ManagedObjectReference `xml:"propertyCollector"` - ViewManager *ManagedObjectReference `xml:"viewManager,omitempty"` - About AboutInfo `xml:"about"` - Setting *ManagedObjectReference `xml:"setting,omitempty"` - UserDirectory *ManagedObjectReference `xml:"userDirectory,omitempty"` - SessionManager *ManagedObjectReference `xml:"sessionManager,omitempty"` - AuthorizationManager *ManagedObjectReference `xml:"authorizationManager,omitempty"` - ServiceManager *ManagedObjectReference `xml:"serviceManager,omitempty"` - PerfManager *ManagedObjectReference `xml:"perfManager,omitempty"` - ScheduledTaskManager *ManagedObjectReference `xml:"scheduledTaskManager,omitempty"` - AlarmManager *ManagedObjectReference `xml:"alarmManager,omitempty"` - EventManager *ManagedObjectReference `xml:"eventManager,omitempty"` - TaskManager *ManagedObjectReference `xml:"taskManager,omitempty"` - ExtensionManager *ManagedObjectReference `xml:"extensionManager,omitempty"` - CustomizationSpecManager *ManagedObjectReference `xml:"customizationSpecManager,omitempty"` - CustomFieldsManager *ManagedObjectReference `xml:"customFieldsManager,omitempty"` - AccountManager *ManagedObjectReference `xml:"accountManager,omitempty"` - DiagnosticManager *ManagedObjectReference `xml:"diagnosticManager,omitempty"` - LicenseManager *ManagedObjectReference `xml:"licenseManager,omitempty"` - SearchIndex *ManagedObjectReference `xml:"searchIndex,omitempty"` - FileManager *ManagedObjectReference `xml:"fileManager,omitempty"` - DatastoreNamespaceManager *ManagedObjectReference `xml:"datastoreNamespaceManager,omitempty"` - VirtualDiskManager *ManagedObjectReference `xml:"virtualDiskManager,omitempty"` - VirtualizationManager *ManagedObjectReference `xml:"virtualizationManager,omitempty"` - SnmpSystem *ManagedObjectReference `xml:"snmpSystem,omitempty"` - VmProvisioningChecker *ManagedObjectReference `xml:"vmProvisioningChecker,omitempty"` - VmCompatibilityChecker *ManagedObjectReference `xml:"vmCompatibilityChecker,omitempty"` - OvfManager *ManagedObjectReference `xml:"ovfManager,omitempty"` - IpPoolManager *ManagedObjectReference `xml:"ipPoolManager,omitempty"` - DvSwitchManager *ManagedObjectReference `xml:"dvSwitchManager,omitempty"` - HostProfileManager *ManagedObjectReference `xml:"hostProfileManager,omitempty"` - ClusterProfileManager *ManagedObjectReference `xml:"clusterProfileManager,omitempty"` - ComplianceManager *ManagedObjectReference `xml:"complianceManager,omitempty"` - LocalizationManager *ManagedObjectReference `xml:"localizationManager,omitempty"` - StorageResourceManager *ManagedObjectReference `xml:"storageResourceManager,omitempty"` - GuestOperationsManager *ManagedObjectReference `xml:"guestOperationsManager,omitempty"` - OverheadMemoryManager *ManagedObjectReference `xml:"overheadMemoryManager,omitempty"` - CertificateManager *ManagedObjectReference `xml:"certificateManager,omitempty"` - IoFilterManager *ManagedObjectReference `xml:"ioFilterManager,omitempty"` -} - -func init() { - t["ServiceContent"] = reflect.TypeOf((*ServiceContent)(nil)).Elem() -} - -type ServiceLocator struct { - DynamicData - - InstanceUuid string `xml:"instanceUuid"` - Url string `xml:"url"` - Credential BaseServiceLocatorCredential `xml:"credential,typeattr"` - SslThumbprint string `xml:"sslThumbprint,omitempty"` -} - -func init() { - t["ServiceLocator"] = reflect.TypeOf((*ServiceLocator)(nil)).Elem() -} - -type ServiceLocatorCredential struct { - DynamicData -} - -func init() { - t["ServiceLocatorCredential"] = reflect.TypeOf((*ServiceLocatorCredential)(nil)).Elem() -} - -type ServiceLocatorNamePassword struct { - ServiceLocatorCredential - - Username string `xml:"username"` - Password string `xml:"password"` -} - -func init() { - t["ServiceLocatorNamePassword"] = reflect.TypeOf((*ServiceLocatorNamePassword)(nil)).Elem() -} - -type ServiceLocatorSAMLCredential struct { - ServiceLocatorCredential - - Token string `xml:"token,omitempty"` -} - -func init() { - t["ServiceLocatorSAMLCredential"] = reflect.TypeOf((*ServiceLocatorSAMLCredential)(nil)).Elem() -} - -type ServiceManagerServiceInfo struct { - DynamicData - - ServiceName string `xml:"serviceName"` - Location []string `xml:"location,omitempty"` - Service ManagedObjectReference `xml:"service"` - Description string `xml:"description"` -} - -func init() { - t["ServiceManagerServiceInfo"] = reflect.TypeOf((*ServiceManagerServiceInfo)(nil)).Elem() -} - -type ServiceProfile struct { - ApplyProfile - - Key string `xml:"key"` -} - -func init() { - t["ServiceProfile"] = reflect.TypeOf((*ServiceProfile)(nil)).Elem() -} - -type SessionEvent struct { - Event -} - -func init() { - t["SessionEvent"] = reflect.TypeOf((*SessionEvent)(nil)).Elem() -} - -type SessionIsActive SessionIsActiveRequestType - -func init() { - t["SessionIsActive"] = reflect.TypeOf((*SessionIsActive)(nil)).Elem() -} - -type SessionIsActiveRequestType struct { - This ManagedObjectReference `xml:"_this"` - SessionID string `xml:"sessionID"` - UserName string `xml:"userName"` -} - -func init() { - t["SessionIsActiveRequestType"] = reflect.TypeOf((*SessionIsActiveRequestType)(nil)).Elem() -} - -type SessionIsActiveResponse struct { - Returnval bool `xml:"returnval"` -} - -type SessionManagerGenericServiceTicket struct { - DynamicData - - Id string `xml:"id"` - HostName string `xml:"hostName,omitempty"` - SslThumbprint string `xml:"sslThumbprint,omitempty"` -} - -func init() { - t["SessionManagerGenericServiceTicket"] = reflect.TypeOf((*SessionManagerGenericServiceTicket)(nil)).Elem() -} - -type SessionManagerHttpServiceRequestSpec struct { - SessionManagerServiceRequestSpec - - Method string `xml:"method,omitempty"` - Url string `xml:"url"` -} - -func init() { - t["SessionManagerHttpServiceRequestSpec"] = reflect.TypeOf((*SessionManagerHttpServiceRequestSpec)(nil)).Elem() -} - -type SessionManagerLocalTicket struct { - DynamicData - - UserName string `xml:"userName"` - PasswordFilePath string `xml:"passwordFilePath"` -} - -func init() { - t["SessionManagerLocalTicket"] = reflect.TypeOf((*SessionManagerLocalTicket)(nil)).Elem() -} - -type SessionManagerServiceRequestSpec struct { - DynamicData -} - -func init() { - t["SessionManagerServiceRequestSpec"] = reflect.TypeOf((*SessionManagerServiceRequestSpec)(nil)).Elem() -} - -type SessionManagerVmomiServiceRequestSpec struct { - SessionManagerServiceRequestSpec - - Method string `xml:"method"` -} - -func init() { - t["SessionManagerVmomiServiceRequestSpec"] = reflect.TypeOf((*SessionManagerVmomiServiceRequestSpec)(nil)).Elem() -} - -type SessionTerminatedEvent struct { - SessionEvent - - SessionId string `xml:"sessionId"` - TerminatedUsername string `xml:"terminatedUsername"` -} - -func init() { - t["SessionTerminatedEvent"] = reflect.TypeOf((*SessionTerminatedEvent)(nil)).Elem() -} - -type SetCollectorPageSize SetCollectorPageSizeRequestType - -func init() { - t["SetCollectorPageSize"] = reflect.TypeOf((*SetCollectorPageSize)(nil)).Elem() -} - -type SetCollectorPageSizeRequestType struct { - This ManagedObjectReference `xml:"_this"` - MaxCount int32 `xml:"maxCount"` -} - -func init() { - t["SetCollectorPageSizeRequestType"] = reflect.TypeOf((*SetCollectorPageSizeRequestType)(nil)).Elem() -} - -type SetCollectorPageSizeResponse struct { -} - -type SetDisplayTopology SetDisplayTopologyRequestType - -func init() { - t["SetDisplayTopology"] = reflect.TypeOf((*SetDisplayTopology)(nil)).Elem() -} - -type SetDisplayTopologyRequestType struct { - This ManagedObjectReference `xml:"_this"` - Displays []VirtualMachineDisplayTopology `xml:"displays"` -} - -func init() { - t["SetDisplayTopologyRequestType"] = reflect.TypeOf((*SetDisplayTopologyRequestType)(nil)).Elem() -} - -type SetDisplayTopologyResponse struct { -} - -type SetEntityPermissions SetEntityPermissionsRequestType - -func init() { - t["SetEntityPermissions"] = reflect.TypeOf((*SetEntityPermissions)(nil)).Elem() -} - -type SetEntityPermissionsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Entity ManagedObjectReference `xml:"entity"` - Permission []Permission `xml:"permission,omitempty"` -} - -func init() { - t["SetEntityPermissionsRequestType"] = reflect.TypeOf((*SetEntityPermissionsRequestType)(nil)).Elem() -} - -type SetEntityPermissionsResponse struct { -} - -type SetExtensionCertificate SetExtensionCertificateRequestType - -func init() { - t["SetExtensionCertificate"] = reflect.TypeOf((*SetExtensionCertificate)(nil)).Elem() -} - -type SetExtensionCertificateRequestType struct { - This ManagedObjectReference `xml:"_this"` - ExtensionKey string `xml:"extensionKey"` - CertificatePem string `xml:"certificatePem,omitempty"` -} - -func init() { - t["SetExtensionCertificateRequestType"] = reflect.TypeOf((*SetExtensionCertificateRequestType)(nil)).Elem() -} - -type SetExtensionCertificateResponse struct { -} - -type SetField SetFieldRequestType - -func init() { - t["SetField"] = reflect.TypeOf((*SetField)(nil)).Elem() -} - -type SetFieldRequestType struct { - This ManagedObjectReference `xml:"_this"` - Entity ManagedObjectReference `xml:"entity"` - Key int32 `xml:"key"` - Value string `xml:"value"` -} - -func init() { - t["SetFieldRequestType"] = reflect.TypeOf((*SetFieldRequestType)(nil)).Elem() -} - -type SetFieldResponse struct { -} - -type SetLicenseEdition SetLicenseEditionRequestType - -func init() { - t["SetLicenseEdition"] = reflect.TypeOf((*SetLicenseEdition)(nil)).Elem() -} - -type SetLicenseEditionRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host *ManagedObjectReference `xml:"host,omitempty"` - FeatureKey string `xml:"featureKey,omitempty"` -} - -func init() { - t["SetLicenseEditionRequestType"] = reflect.TypeOf((*SetLicenseEditionRequestType)(nil)).Elem() -} - -type SetLicenseEditionResponse struct { -} - -type SetLocale SetLocaleRequestType - -func init() { - t["SetLocale"] = reflect.TypeOf((*SetLocale)(nil)).Elem() -} - -type SetLocaleRequestType struct { - This ManagedObjectReference `xml:"_this"` - Locale string `xml:"locale"` -} - -func init() { - t["SetLocaleRequestType"] = reflect.TypeOf((*SetLocaleRequestType)(nil)).Elem() -} - -type SetLocaleResponse struct { -} - -type SetMultipathLunPolicy SetMultipathLunPolicyRequestType - -func init() { - t["SetMultipathLunPolicy"] = reflect.TypeOf((*SetMultipathLunPolicy)(nil)).Elem() -} - -type SetMultipathLunPolicyRequestType struct { - This ManagedObjectReference `xml:"_this"` - LunId string `xml:"lunId"` - Policy BaseHostMultipathInfoLogicalUnitPolicy `xml:"policy,typeattr"` -} - -func init() { - t["SetMultipathLunPolicyRequestType"] = reflect.TypeOf((*SetMultipathLunPolicyRequestType)(nil)).Elem() -} - -type SetMultipathLunPolicyResponse struct { -} - -type SetNFSUser SetNFSUserRequestType - -func init() { - t["SetNFSUser"] = reflect.TypeOf((*SetNFSUser)(nil)).Elem() -} - -type SetNFSUserRequestType struct { - This ManagedObjectReference `xml:"_this"` - User string `xml:"user"` - Password string `xml:"password"` -} - -func init() { - t["SetNFSUserRequestType"] = reflect.TypeOf((*SetNFSUserRequestType)(nil)).Elem() -} - -type SetNFSUserResponse struct { -} - -type SetPublicKey SetPublicKeyRequestType - -func init() { - t["SetPublicKey"] = reflect.TypeOf((*SetPublicKey)(nil)).Elem() -} - -type SetPublicKeyRequestType struct { - This ManagedObjectReference `xml:"_this"` - ExtensionKey string `xml:"extensionKey"` - PublicKey string `xml:"publicKey"` -} - -func init() { - t["SetPublicKeyRequestType"] = reflect.TypeOf((*SetPublicKeyRequestType)(nil)).Elem() -} - -type SetPublicKeyResponse struct { -} - -type SetRegistryValueInGuest SetRegistryValueInGuestRequestType - -func init() { - t["SetRegistryValueInGuest"] = reflect.TypeOf((*SetRegistryValueInGuest)(nil)).Elem() -} - -type SetRegistryValueInGuestRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Auth BaseGuestAuthentication `xml:"auth,typeattr"` - Value GuestRegValueSpec `xml:"value"` -} - -func init() { - t["SetRegistryValueInGuestRequestType"] = reflect.TypeOf((*SetRegistryValueInGuestRequestType)(nil)).Elem() -} - -type SetRegistryValueInGuestResponse struct { -} - -type SetScreenResolution SetScreenResolutionRequestType - -func init() { - t["SetScreenResolution"] = reflect.TypeOf((*SetScreenResolution)(nil)).Elem() -} - -type SetScreenResolutionRequestType struct { - This ManagedObjectReference `xml:"_this"` - Width int32 `xml:"width"` - Height int32 `xml:"height"` -} - -func init() { - t["SetScreenResolutionRequestType"] = reflect.TypeOf((*SetScreenResolutionRequestType)(nil)).Elem() -} - -type SetScreenResolutionResponse struct { -} - -type SetTaskDescription SetTaskDescriptionRequestType - -func init() { - t["SetTaskDescription"] = reflect.TypeOf((*SetTaskDescription)(nil)).Elem() -} - -type SetTaskDescriptionRequestType struct { - This ManagedObjectReference `xml:"_this"` - Description LocalizableMessage `xml:"description"` -} - -func init() { - t["SetTaskDescriptionRequestType"] = reflect.TypeOf((*SetTaskDescriptionRequestType)(nil)).Elem() -} - -type SetTaskDescriptionResponse struct { -} - -type SetTaskState SetTaskStateRequestType - -func init() { - t["SetTaskState"] = reflect.TypeOf((*SetTaskState)(nil)).Elem() -} - -type SetTaskStateRequestType struct { - This ManagedObjectReference `xml:"_this"` - State TaskInfoState `xml:"state"` - Result AnyType `xml:"result,omitempty,typeattr"` - Fault *LocalizedMethodFault `xml:"fault,omitempty"` -} - -func init() { - t["SetTaskStateRequestType"] = reflect.TypeOf((*SetTaskStateRequestType)(nil)).Elem() -} - -type SetTaskStateResponse struct { -} - -type SetVirtualDiskUuid SetVirtualDiskUuidRequestType - -func init() { - t["SetVirtualDiskUuid"] = reflect.TypeOf((*SetVirtualDiskUuid)(nil)).Elem() -} - -type SetVirtualDiskUuidRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` - Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` - Uuid string `xml:"uuid"` -} - -func init() { - t["SetVirtualDiskUuidRequestType"] = reflect.TypeOf((*SetVirtualDiskUuidRequestType)(nil)).Elem() -} - -type SetVirtualDiskUuidResponse struct { -} - -type SharedBusControllerNotSupported struct { - DeviceNotSupported -} - -func init() { - t["SharedBusControllerNotSupported"] = reflect.TypeOf((*SharedBusControllerNotSupported)(nil)).Elem() -} - -type SharedBusControllerNotSupportedFault SharedBusControllerNotSupported - -func init() { - t["SharedBusControllerNotSupportedFault"] = reflect.TypeOf((*SharedBusControllerNotSupportedFault)(nil)).Elem() -} - -type SharesInfo struct { - DynamicData - - Shares int32 `xml:"shares"` - Level SharesLevel `xml:"level"` -} - -func init() { - t["SharesInfo"] = reflect.TypeOf((*SharesInfo)(nil)).Elem() -} - -type SharesOption struct { - DynamicData - - SharesOption IntOption `xml:"sharesOption"` - DefaultLevel SharesLevel `xml:"defaultLevel"` -} - -func init() { - t["SharesOption"] = reflect.TypeOf((*SharesOption)(nil)).Elem() -} - -type ShrinkDiskFault struct { - VimFault - - DiskId int32 `xml:"diskId,omitempty"` -} - -func init() { - t["ShrinkDiskFault"] = reflect.TypeOf((*ShrinkDiskFault)(nil)).Elem() -} - -type ShrinkDiskFaultFault ShrinkDiskFault - -func init() { - t["ShrinkDiskFaultFault"] = reflect.TypeOf((*ShrinkDiskFaultFault)(nil)).Elem() -} - -type ShrinkVirtualDiskRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` - Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` - Copy *bool `xml:"copy"` -} - -func init() { - t["ShrinkVirtualDiskRequestType"] = reflect.TypeOf((*ShrinkVirtualDiskRequestType)(nil)).Elem() -} - -type ShrinkVirtualDisk_Task ShrinkVirtualDiskRequestType - -func init() { - t["ShrinkVirtualDisk_Task"] = reflect.TypeOf((*ShrinkVirtualDisk_Task)(nil)).Elem() -} - -type ShrinkVirtualDisk_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type ShutdownGuest ShutdownGuestRequestType - -func init() { - t["ShutdownGuest"] = reflect.TypeOf((*ShutdownGuest)(nil)).Elem() -} - -type ShutdownGuestRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["ShutdownGuestRequestType"] = reflect.TypeOf((*ShutdownGuestRequestType)(nil)).Elem() -} - -type ShutdownGuestResponse struct { -} - -type ShutdownHostRequestType struct { - This ManagedObjectReference `xml:"_this"` - Force bool `xml:"force"` -} - -func init() { - t["ShutdownHostRequestType"] = reflect.TypeOf((*ShutdownHostRequestType)(nil)).Elem() -} - -type ShutdownHost_Task ShutdownHostRequestType - -func init() { - t["ShutdownHost_Task"] = reflect.TypeOf((*ShutdownHost_Task)(nil)).Elem() -} - -type ShutdownHost_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type SingleIp struct { - IpAddress - - Address string `xml:"address"` -} - -func init() { - t["SingleIp"] = reflect.TypeOf((*SingleIp)(nil)).Elem() -} - -type SingleMac struct { - MacAddress - - Address string `xml:"address"` -} - -func init() { - t["SingleMac"] = reflect.TypeOf((*SingleMac)(nil)).Elem() -} - -type SnapshotCloneNotSupported struct { - SnapshotCopyNotSupported -} - -func init() { - t["SnapshotCloneNotSupported"] = reflect.TypeOf((*SnapshotCloneNotSupported)(nil)).Elem() -} - -type SnapshotCloneNotSupportedFault SnapshotCloneNotSupported - -func init() { - t["SnapshotCloneNotSupportedFault"] = reflect.TypeOf((*SnapshotCloneNotSupportedFault)(nil)).Elem() -} - -type SnapshotCopyNotSupported struct { - MigrationFault -} - -func init() { - t["SnapshotCopyNotSupported"] = reflect.TypeOf((*SnapshotCopyNotSupported)(nil)).Elem() -} - -type SnapshotCopyNotSupportedFault BaseSnapshotCopyNotSupported - -func init() { - t["SnapshotCopyNotSupportedFault"] = reflect.TypeOf((*SnapshotCopyNotSupportedFault)(nil)).Elem() -} - -type SnapshotDisabled struct { - SnapshotFault -} - -func init() { - t["SnapshotDisabled"] = reflect.TypeOf((*SnapshotDisabled)(nil)).Elem() -} - -type SnapshotDisabledFault SnapshotDisabled - -func init() { - t["SnapshotDisabledFault"] = reflect.TypeOf((*SnapshotDisabledFault)(nil)).Elem() -} - -type SnapshotFault struct { - VimFault -} - -func init() { - t["SnapshotFault"] = reflect.TypeOf((*SnapshotFault)(nil)).Elem() -} - -type SnapshotFaultFault BaseSnapshotFault - -func init() { - t["SnapshotFaultFault"] = reflect.TypeOf((*SnapshotFaultFault)(nil)).Elem() -} - -type SnapshotIncompatibleDeviceInVm struct { - SnapshotFault - - Fault LocalizedMethodFault `xml:"fault"` -} - -func init() { - t["SnapshotIncompatibleDeviceInVm"] = reflect.TypeOf((*SnapshotIncompatibleDeviceInVm)(nil)).Elem() -} - -type SnapshotIncompatibleDeviceInVmFault SnapshotIncompatibleDeviceInVm - -func init() { - t["SnapshotIncompatibleDeviceInVmFault"] = reflect.TypeOf((*SnapshotIncompatibleDeviceInVmFault)(nil)).Elem() -} - -type SnapshotLocked struct { - SnapshotFault -} - -func init() { - t["SnapshotLocked"] = reflect.TypeOf((*SnapshotLocked)(nil)).Elem() -} - -type SnapshotLockedFault SnapshotLocked - -func init() { - t["SnapshotLockedFault"] = reflect.TypeOf((*SnapshotLockedFault)(nil)).Elem() -} - -type SnapshotMoveFromNonHomeNotSupported struct { - SnapshotCopyNotSupported -} - -func init() { - t["SnapshotMoveFromNonHomeNotSupported"] = reflect.TypeOf((*SnapshotMoveFromNonHomeNotSupported)(nil)).Elem() -} - -type SnapshotMoveFromNonHomeNotSupportedFault SnapshotMoveFromNonHomeNotSupported - -func init() { - t["SnapshotMoveFromNonHomeNotSupportedFault"] = reflect.TypeOf((*SnapshotMoveFromNonHomeNotSupportedFault)(nil)).Elem() -} - -type SnapshotMoveNotSupported struct { - SnapshotCopyNotSupported -} - -func init() { - t["SnapshotMoveNotSupported"] = reflect.TypeOf((*SnapshotMoveNotSupported)(nil)).Elem() -} - -type SnapshotMoveNotSupportedFault SnapshotMoveNotSupported - -func init() { - t["SnapshotMoveNotSupportedFault"] = reflect.TypeOf((*SnapshotMoveNotSupportedFault)(nil)).Elem() -} - -type SnapshotMoveToNonHomeNotSupported struct { - SnapshotCopyNotSupported -} - -func init() { - t["SnapshotMoveToNonHomeNotSupported"] = reflect.TypeOf((*SnapshotMoveToNonHomeNotSupported)(nil)).Elem() -} - -type SnapshotMoveToNonHomeNotSupportedFault SnapshotMoveToNonHomeNotSupported - -func init() { - t["SnapshotMoveToNonHomeNotSupportedFault"] = reflect.TypeOf((*SnapshotMoveToNonHomeNotSupportedFault)(nil)).Elem() -} - -type SnapshotNoChange struct { - SnapshotFault -} - -func init() { - t["SnapshotNoChange"] = reflect.TypeOf((*SnapshotNoChange)(nil)).Elem() -} - -type SnapshotNoChangeFault SnapshotNoChange - -func init() { - t["SnapshotNoChangeFault"] = reflect.TypeOf((*SnapshotNoChangeFault)(nil)).Elem() -} - -type SnapshotRevertIssue struct { - MigrationFault - - SnapshotName string `xml:"snapshotName,omitempty"` - Event []BaseEvent `xml:"event,omitempty,typeattr"` - Errors bool `xml:"errors"` -} - -func init() { - t["SnapshotRevertIssue"] = reflect.TypeOf((*SnapshotRevertIssue)(nil)).Elem() -} - -type SnapshotRevertIssueFault SnapshotRevertIssue - -func init() { - t["SnapshotRevertIssueFault"] = reflect.TypeOf((*SnapshotRevertIssueFault)(nil)).Elem() -} - -type SoftRuleVioCorrectionDisallowed struct { - VmConfigFault - - VmName string `xml:"vmName"` -} - -func init() { - t["SoftRuleVioCorrectionDisallowed"] = reflect.TypeOf((*SoftRuleVioCorrectionDisallowed)(nil)).Elem() -} - -type SoftRuleVioCorrectionDisallowedFault SoftRuleVioCorrectionDisallowed - -func init() { - t["SoftRuleVioCorrectionDisallowedFault"] = reflect.TypeOf((*SoftRuleVioCorrectionDisallowedFault)(nil)).Elem() -} - -type SoftRuleVioCorrectionImpact struct { - VmConfigFault - - VmName string `xml:"vmName"` -} - -func init() { - t["SoftRuleVioCorrectionImpact"] = reflect.TypeOf((*SoftRuleVioCorrectionImpact)(nil)).Elem() -} - -type SoftRuleVioCorrectionImpactFault SoftRuleVioCorrectionImpact - -func init() { - t["SoftRuleVioCorrectionImpactFault"] = reflect.TypeOf((*SoftRuleVioCorrectionImpactFault)(nil)).Elem() -} - -type SsdDiskNotAvailable struct { - VimFault - - DevicePath string `xml:"devicePath"` -} - -func init() { - t["SsdDiskNotAvailable"] = reflect.TypeOf((*SsdDiskNotAvailable)(nil)).Elem() -} - -type SsdDiskNotAvailableFault SsdDiskNotAvailable - -func init() { - t["SsdDiskNotAvailableFault"] = reflect.TypeOf((*SsdDiskNotAvailableFault)(nil)).Elem() -} - -type StageHostPatchRequestType struct { - This ManagedObjectReference `xml:"_this"` - MetaUrls []string `xml:"metaUrls,omitempty"` - BundleUrls []string `xml:"bundleUrls,omitempty"` - VibUrls []string `xml:"vibUrls,omitempty"` - Spec *HostPatchManagerPatchManagerOperationSpec `xml:"spec,omitempty"` -} - -func init() { - t["StageHostPatchRequestType"] = reflect.TypeOf((*StageHostPatchRequestType)(nil)).Elem() -} - -type StageHostPatch_Task StageHostPatchRequestType - -func init() { - t["StageHostPatch_Task"] = reflect.TypeOf((*StageHostPatch_Task)(nil)).Elem() -} - -type StageHostPatch_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type StampAllRulesWithUuidRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["StampAllRulesWithUuidRequestType"] = reflect.TypeOf((*StampAllRulesWithUuidRequestType)(nil)).Elem() -} - -type StampAllRulesWithUuid_Task StampAllRulesWithUuidRequestType - -func init() { - t["StampAllRulesWithUuid_Task"] = reflect.TypeOf((*StampAllRulesWithUuid_Task)(nil)).Elem() -} - -type StampAllRulesWithUuid_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type StandbyGuest StandbyGuestRequestType - -func init() { - t["StandbyGuest"] = reflect.TypeOf((*StandbyGuest)(nil)).Elem() -} - -type StandbyGuestRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["StandbyGuestRequestType"] = reflect.TypeOf((*StandbyGuestRequestType)(nil)).Elem() -} - -type StandbyGuestResponse struct { -} - -type StartProgramInGuest StartProgramInGuestRequestType - -func init() { - t["StartProgramInGuest"] = reflect.TypeOf((*StartProgramInGuest)(nil)).Elem() -} - -type StartProgramInGuestRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Auth BaseGuestAuthentication `xml:"auth,typeattr"` - Spec BaseGuestProgramSpec `xml:"spec,typeattr"` -} - -func init() { - t["StartProgramInGuestRequestType"] = reflect.TypeOf((*StartProgramInGuestRequestType)(nil)).Elem() -} - -type StartProgramInGuestResponse struct { - Returnval int64 `xml:"returnval"` -} - -type StartRecordingRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` - Description string `xml:"description,omitempty"` -} - -func init() { - t["StartRecordingRequestType"] = reflect.TypeOf((*StartRecordingRequestType)(nil)).Elem() -} - -type StartRecording_Task StartRecordingRequestType - -func init() { - t["StartRecording_Task"] = reflect.TypeOf((*StartRecording_Task)(nil)).Elem() -} - -type StartRecording_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type StartReplayingRequestType struct { - This ManagedObjectReference `xml:"_this"` - ReplaySnapshot ManagedObjectReference `xml:"replaySnapshot"` -} - -func init() { - t["StartReplayingRequestType"] = reflect.TypeOf((*StartReplayingRequestType)(nil)).Elem() -} - -type StartReplaying_Task StartReplayingRequestType - -func init() { - t["StartReplaying_Task"] = reflect.TypeOf((*StartReplaying_Task)(nil)).Elem() -} - -type StartReplaying_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type StartService StartServiceRequestType - -func init() { - t["StartService"] = reflect.TypeOf((*StartService)(nil)).Elem() -} - -type StartServiceRequestType struct { - This ManagedObjectReference `xml:"_this"` - Id string `xml:"id"` -} - -func init() { - t["StartServiceRequestType"] = reflect.TypeOf((*StartServiceRequestType)(nil)).Elem() -} - -type StartServiceResponse struct { -} - -type StateAlarmExpression struct { - AlarmExpression - - Operator StateAlarmOperator `xml:"operator"` - Type string `xml:"type"` - StatePath string `xml:"statePath"` - Yellow string `xml:"yellow,omitempty"` - Red string `xml:"red,omitempty"` -} - -func init() { - t["StateAlarmExpression"] = reflect.TypeOf((*StateAlarmExpression)(nil)).Elem() -} - -type StaticRouteProfile struct { - ApplyProfile - - Key string `xml:"key,omitempty"` -} - -func init() { - t["StaticRouteProfile"] = reflect.TypeOf((*StaticRouteProfile)(nil)).Elem() -} - -type StopRecordingRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["StopRecordingRequestType"] = reflect.TypeOf((*StopRecordingRequestType)(nil)).Elem() -} - -type StopRecording_Task StopRecordingRequestType - -func init() { - t["StopRecording_Task"] = reflect.TypeOf((*StopRecording_Task)(nil)).Elem() -} - -type StopRecording_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type StopReplayingRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["StopReplayingRequestType"] = reflect.TypeOf((*StopReplayingRequestType)(nil)).Elem() -} - -type StopReplaying_Task StopReplayingRequestType - -func init() { - t["StopReplaying_Task"] = reflect.TypeOf((*StopReplaying_Task)(nil)).Elem() -} - -type StopReplaying_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type StopService StopServiceRequestType - -func init() { - t["StopService"] = reflect.TypeOf((*StopService)(nil)).Elem() -} - -type StopServiceRequestType struct { - This ManagedObjectReference `xml:"_this"` - Id string `xml:"id"` -} - -func init() { - t["StopServiceRequestType"] = reflect.TypeOf((*StopServiceRequestType)(nil)).Elem() -} - -type StopServiceResponse struct { -} - -type StorageDrsAutomationConfig struct { - DynamicData - - SpaceLoadBalanceAutomationMode string `xml:"spaceLoadBalanceAutomationMode,omitempty"` - IoLoadBalanceAutomationMode string `xml:"ioLoadBalanceAutomationMode,omitempty"` - RuleEnforcementAutomationMode string `xml:"ruleEnforcementAutomationMode,omitempty"` - PolicyEnforcementAutomationMode string `xml:"policyEnforcementAutomationMode,omitempty"` - VmEvacuationAutomationMode string `xml:"vmEvacuationAutomationMode,omitempty"` -} - -func init() { - t["StorageDrsAutomationConfig"] = reflect.TypeOf((*StorageDrsAutomationConfig)(nil)).Elem() -} - -type StorageDrsCannotMoveDiskInMultiWriterMode struct { - VimFault -} - -func init() { - t["StorageDrsCannotMoveDiskInMultiWriterMode"] = reflect.TypeOf((*StorageDrsCannotMoveDiskInMultiWriterMode)(nil)).Elem() -} - -type StorageDrsCannotMoveDiskInMultiWriterModeFault StorageDrsCannotMoveDiskInMultiWriterMode - -func init() { - t["StorageDrsCannotMoveDiskInMultiWriterModeFault"] = reflect.TypeOf((*StorageDrsCannotMoveDiskInMultiWriterModeFault)(nil)).Elem() -} - -type StorageDrsCannotMoveFTVm struct { - VimFault -} - -func init() { - t["StorageDrsCannotMoveFTVm"] = reflect.TypeOf((*StorageDrsCannotMoveFTVm)(nil)).Elem() -} - -type StorageDrsCannotMoveFTVmFault StorageDrsCannotMoveFTVm - -func init() { - t["StorageDrsCannotMoveFTVmFault"] = reflect.TypeOf((*StorageDrsCannotMoveFTVmFault)(nil)).Elem() -} - -type StorageDrsCannotMoveIndependentDisk struct { - VimFault -} - -func init() { - t["StorageDrsCannotMoveIndependentDisk"] = reflect.TypeOf((*StorageDrsCannotMoveIndependentDisk)(nil)).Elem() -} - -type StorageDrsCannotMoveIndependentDiskFault StorageDrsCannotMoveIndependentDisk - -func init() { - t["StorageDrsCannotMoveIndependentDiskFault"] = reflect.TypeOf((*StorageDrsCannotMoveIndependentDiskFault)(nil)).Elem() -} - -type StorageDrsCannotMoveManuallyPlacedSwapFile struct { - VimFault -} - -func init() { - t["StorageDrsCannotMoveManuallyPlacedSwapFile"] = reflect.TypeOf((*StorageDrsCannotMoveManuallyPlacedSwapFile)(nil)).Elem() -} - -type StorageDrsCannotMoveManuallyPlacedSwapFileFault StorageDrsCannotMoveManuallyPlacedSwapFile - -func init() { - t["StorageDrsCannotMoveManuallyPlacedSwapFileFault"] = reflect.TypeOf((*StorageDrsCannotMoveManuallyPlacedSwapFileFault)(nil)).Elem() -} - -type StorageDrsCannotMoveManuallyPlacedVm struct { - VimFault -} - -func init() { - t["StorageDrsCannotMoveManuallyPlacedVm"] = reflect.TypeOf((*StorageDrsCannotMoveManuallyPlacedVm)(nil)).Elem() -} - -type StorageDrsCannotMoveManuallyPlacedVmFault StorageDrsCannotMoveManuallyPlacedVm - -func init() { - t["StorageDrsCannotMoveManuallyPlacedVmFault"] = reflect.TypeOf((*StorageDrsCannotMoveManuallyPlacedVmFault)(nil)).Elem() -} - -type StorageDrsCannotMoveSharedDisk struct { - VimFault -} - -func init() { - t["StorageDrsCannotMoveSharedDisk"] = reflect.TypeOf((*StorageDrsCannotMoveSharedDisk)(nil)).Elem() -} - -type StorageDrsCannotMoveSharedDiskFault StorageDrsCannotMoveSharedDisk - -func init() { - t["StorageDrsCannotMoveSharedDiskFault"] = reflect.TypeOf((*StorageDrsCannotMoveSharedDiskFault)(nil)).Elem() -} - -type StorageDrsCannotMoveTemplate struct { - VimFault -} - -func init() { - t["StorageDrsCannotMoveTemplate"] = reflect.TypeOf((*StorageDrsCannotMoveTemplate)(nil)).Elem() -} - -type StorageDrsCannotMoveTemplateFault StorageDrsCannotMoveTemplate - -func init() { - t["StorageDrsCannotMoveTemplateFault"] = reflect.TypeOf((*StorageDrsCannotMoveTemplateFault)(nil)).Elem() -} - -type StorageDrsCannotMoveVmInUserFolder struct { - VimFault -} - -func init() { - t["StorageDrsCannotMoveVmInUserFolder"] = reflect.TypeOf((*StorageDrsCannotMoveVmInUserFolder)(nil)).Elem() -} - -type StorageDrsCannotMoveVmInUserFolderFault StorageDrsCannotMoveVmInUserFolder - -func init() { - t["StorageDrsCannotMoveVmInUserFolderFault"] = reflect.TypeOf((*StorageDrsCannotMoveVmInUserFolderFault)(nil)).Elem() -} - -type StorageDrsCannotMoveVmWithMountedCDROM struct { - VimFault -} - -func init() { - t["StorageDrsCannotMoveVmWithMountedCDROM"] = reflect.TypeOf((*StorageDrsCannotMoveVmWithMountedCDROM)(nil)).Elem() -} - -type StorageDrsCannotMoveVmWithMountedCDROMFault StorageDrsCannotMoveVmWithMountedCDROM - -func init() { - t["StorageDrsCannotMoveVmWithMountedCDROMFault"] = reflect.TypeOf((*StorageDrsCannotMoveVmWithMountedCDROMFault)(nil)).Elem() -} - -type StorageDrsCannotMoveVmWithNoFilesInLayout struct { - VimFault -} - -func init() { - t["StorageDrsCannotMoveVmWithNoFilesInLayout"] = reflect.TypeOf((*StorageDrsCannotMoveVmWithNoFilesInLayout)(nil)).Elem() -} - -type StorageDrsCannotMoveVmWithNoFilesInLayoutFault StorageDrsCannotMoveVmWithNoFilesInLayout - -func init() { - t["StorageDrsCannotMoveVmWithNoFilesInLayoutFault"] = reflect.TypeOf((*StorageDrsCannotMoveVmWithNoFilesInLayoutFault)(nil)).Elem() -} - -type StorageDrsConfigInfo struct { - DynamicData - - PodConfig StorageDrsPodConfigInfo `xml:"podConfig"` - VmConfig []StorageDrsVmConfigInfo `xml:"vmConfig,omitempty"` -} - -func init() { - t["StorageDrsConfigInfo"] = reflect.TypeOf((*StorageDrsConfigInfo)(nil)).Elem() -} - -type StorageDrsConfigSpec struct { - DynamicData - - PodConfigSpec *StorageDrsPodConfigSpec `xml:"podConfigSpec,omitempty"` - VmConfigSpec []StorageDrsVmConfigSpec `xml:"vmConfigSpec,omitempty"` -} - -func init() { - t["StorageDrsConfigSpec"] = reflect.TypeOf((*StorageDrsConfigSpec)(nil)).Elem() -} - -type StorageDrsDatacentersCannotShareDatastore struct { - VimFault -} - -func init() { - t["StorageDrsDatacentersCannotShareDatastore"] = reflect.TypeOf((*StorageDrsDatacentersCannotShareDatastore)(nil)).Elem() -} - -type StorageDrsDatacentersCannotShareDatastoreFault StorageDrsDatacentersCannotShareDatastore - -func init() { - t["StorageDrsDatacentersCannotShareDatastoreFault"] = reflect.TypeOf((*StorageDrsDatacentersCannotShareDatastoreFault)(nil)).Elem() -} - -type StorageDrsDisabledOnVm struct { - VimFault -} - -func init() { - t["StorageDrsDisabledOnVm"] = reflect.TypeOf((*StorageDrsDisabledOnVm)(nil)).Elem() -} - -type StorageDrsDisabledOnVmFault StorageDrsDisabledOnVm - -func init() { - t["StorageDrsDisabledOnVmFault"] = reflect.TypeOf((*StorageDrsDisabledOnVmFault)(nil)).Elem() -} - -type StorageDrsHbrDiskNotMovable struct { - VimFault - - NonMovableDiskIds string `xml:"nonMovableDiskIds"` -} - -func init() { - t["StorageDrsHbrDiskNotMovable"] = reflect.TypeOf((*StorageDrsHbrDiskNotMovable)(nil)).Elem() -} - -type StorageDrsHbrDiskNotMovableFault StorageDrsHbrDiskNotMovable - -func init() { - t["StorageDrsHbrDiskNotMovableFault"] = reflect.TypeOf((*StorageDrsHbrDiskNotMovableFault)(nil)).Elem() -} - -type StorageDrsHmsMoveInProgress struct { - VimFault -} - -func init() { - t["StorageDrsHmsMoveInProgress"] = reflect.TypeOf((*StorageDrsHmsMoveInProgress)(nil)).Elem() -} - -type StorageDrsHmsMoveInProgressFault StorageDrsHmsMoveInProgress - -func init() { - t["StorageDrsHmsMoveInProgressFault"] = reflect.TypeOf((*StorageDrsHmsMoveInProgressFault)(nil)).Elem() -} - -type StorageDrsHmsUnreachable struct { - VimFault -} - -func init() { - t["StorageDrsHmsUnreachable"] = reflect.TypeOf((*StorageDrsHmsUnreachable)(nil)).Elem() -} - -type StorageDrsHmsUnreachableFault StorageDrsHmsUnreachable - -func init() { - t["StorageDrsHmsUnreachableFault"] = reflect.TypeOf((*StorageDrsHmsUnreachableFault)(nil)).Elem() -} - -type StorageDrsIoLoadBalanceConfig struct { - DynamicData - - ReservablePercentThreshold int32 `xml:"reservablePercentThreshold,omitempty"` - ReservableIopsThreshold int32 `xml:"reservableIopsThreshold,omitempty"` - ReservableThresholdMode string `xml:"reservableThresholdMode,omitempty"` - IoLatencyThreshold int32 `xml:"ioLatencyThreshold,omitempty"` - IoLoadImbalanceThreshold int32 `xml:"ioLoadImbalanceThreshold,omitempty"` -} - -func init() { - t["StorageDrsIoLoadBalanceConfig"] = reflect.TypeOf((*StorageDrsIoLoadBalanceConfig)(nil)).Elem() -} - -type StorageDrsIolbDisabledInternally struct { - VimFault -} - -func init() { - t["StorageDrsIolbDisabledInternally"] = reflect.TypeOf((*StorageDrsIolbDisabledInternally)(nil)).Elem() -} - -type StorageDrsIolbDisabledInternallyFault StorageDrsIolbDisabledInternally - -func init() { - t["StorageDrsIolbDisabledInternallyFault"] = reflect.TypeOf((*StorageDrsIolbDisabledInternallyFault)(nil)).Elem() -} - -type StorageDrsOptionSpec struct { - ArrayUpdateSpec - - Option BaseOptionValue `xml:"option,omitempty,typeattr"` -} - -func init() { - t["StorageDrsOptionSpec"] = reflect.TypeOf((*StorageDrsOptionSpec)(nil)).Elem() -} - -type StorageDrsPlacementRankVmSpec struct { - DynamicData - - VmPlacementSpec PlacementSpec `xml:"vmPlacementSpec"` - VmClusters []ManagedObjectReference `xml:"vmClusters"` -} - -func init() { - t["StorageDrsPlacementRankVmSpec"] = reflect.TypeOf((*StorageDrsPlacementRankVmSpec)(nil)).Elem() -} - -type StorageDrsPodConfigInfo struct { - DynamicData - - Enabled bool `xml:"enabled"` - IoLoadBalanceEnabled bool `xml:"ioLoadBalanceEnabled"` - DefaultVmBehavior string `xml:"defaultVmBehavior"` - LoadBalanceInterval int32 `xml:"loadBalanceInterval,omitempty"` - DefaultIntraVmAffinity *bool `xml:"defaultIntraVmAffinity"` - SpaceLoadBalanceConfig *StorageDrsSpaceLoadBalanceConfig `xml:"spaceLoadBalanceConfig,omitempty"` - IoLoadBalanceConfig *StorageDrsIoLoadBalanceConfig `xml:"ioLoadBalanceConfig,omitempty"` - AutomationOverrides *StorageDrsAutomationConfig `xml:"automationOverrides,omitempty"` - Rule []BaseClusterRuleInfo `xml:"rule,omitempty,typeattr"` - Option []BaseOptionValue `xml:"option,omitempty,typeattr"` -} - -func init() { - t["StorageDrsPodConfigInfo"] = reflect.TypeOf((*StorageDrsPodConfigInfo)(nil)).Elem() -} - -type StorageDrsPodConfigSpec struct { - DynamicData - - Enabled *bool `xml:"enabled"` - IoLoadBalanceEnabled *bool `xml:"ioLoadBalanceEnabled"` - DefaultVmBehavior string `xml:"defaultVmBehavior,omitempty"` - LoadBalanceInterval int32 `xml:"loadBalanceInterval,omitempty"` - DefaultIntraVmAffinity *bool `xml:"defaultIntraVmAffinity"` - SpaceLoadBalanceConfig *StorageDrsSpaceLoadBalanceConfig `xml:"spaceLoadBalanceConfig,omitempty"` - IoLoadBalanceConfig *StorageDrsIoLoadBalanceConfig `xml:"ioLoadBalanceConfig,omitempty"` - AutomationOverrides *StorageDrsAutomationConfig `xml:"automationOverrides,omitempty"` - Rule []ClusterRuleSpec `xml:"rule,omitempty"` - Option []StorageDrsOptionSpec `xml:"option,omitempty"` -} - -func init() { - t["StorageDrsPodConfigSpec"] = reflect.TypeOf((*StorageDrsPodConfigSpec)(nil)).Elem() -} - -type StorageDrsPodSelectionSpec struct { - DynamicData - - InitialVmConfig []VmPodConfigForPlacement `xml:"initialVmConfig,omitempty"` - StoragePod *ManagedObjectReference `xml:"storagePod,omitempty"` -} - -func init() { - t["StorageDrsPodSelectionSpec"] = reflect.TypeOf((*StorageDrsPodSelectionSpec)(nil)).Elem() -} - -type StorageDrsRelocateDisabled struct { - VimFault -} - -func init() { - t["StorageDrsRelocateDisabled"] = reflect.TypeOf((*StorageDrsRelocateDisabled)(nil)).Elem() -} - -type StorageDrsRelocateDisabledFault StorageDrsRelocateDisabled - -func init() { - t["StorageDrsRelocateDisabledFault"] = reflect.TypeOf((*StorageDrsRelocateDisabledFault)(nil)).Elem() -} - -type StorageDrsSpaceLoadBalanceConfig struct { - DynamicData - - SpaceThresholdMode string `xml:"spaceThresholdMode,omitempty"` - SpaceUtilizationThreshold int32 `xml:"spaceUtilizationThreshold,omitempty"` - FreeSpaceThresholdGB int32 `xml:"freeSpaceThresholdGB,omitempty"` - MinSpaceUtilizationDifference int32 `xml:"minSpaceUtilizationDifference,omitempty"` -} - -func init() { - t["StorageDrsSpaceLoadBalanceConfig"] = reflect.TypeOf((*StorageDrsSpaceLoadBalanceConfig)(nil)).Elem() -} - -type StorageDrsStaleHmsCollection struct { - VimFault -} - -func init() { - t["StorageDrsStaleHmsCollection"] = reflect.TypeOf((*StorageDrsStaleHmsCollection)(nil)).Elem() -} - -type StorageDrsStaleHmsCollectionFault StorageDrsStaleHmsCollection - -func init() { - t["StorageDrsStaleHmsCollectionFault"] = reflect.TypeOf((*StorageDrsStaleHmsCollectionFault)(nil)).Elem() -} - -type StorageDrsUnableToMoveFiles struct { - VimFault -} - -func init() { - t["StorageDrsUnableToMoveFiles"] = reflect.TypeOf((*StorageDrsUnableToMoveFiles)(nil)).Elem() -} - -type StorageDrsUnableToMoveFilesFault StorageDrsUnableToMoveFiles - -func init() { - t["StorageDrsUnableToMoveFilesFault"] = reflect.TypeOf((*StorageDrsUnableToMoveFilesFault)(nil)).Elem() -} - -type StorageDrsVmConfigInfo struct { - DynamicData - - Vm *ManagedObjectReference `xml:"vm,omitempty"` - Enabled *bool `xml:"enabled"` - Behavior string `xml:"behavior,omitempty"` - IntraVmAffinity *bool `xml:"intraVmAffinity"` - IntraVmAntiAffinity *VirtualDiskAntiAffinityRuleSpec `xml:"intraVmAntiAffinity,omitempty"` -} - -func init() { - t["StorageDrsVmConfigInfo"] = reflect.TypeOf((*StorageDrsVmConfigInfo)(nil)).Elem() -} - -type StorageDrsVmConfigSpec struct { - ArrayUpdateSpec - - Info *StorageDrsVmConfigInfo `xml:"info,omitempty"` -} - -func init() { - t["StorageDrsVmConfigSpec"] = reflect.TypeOf((*StorageDrsVmConfigSpec)(nil)).Elem() -} - -type StorageIOAllocationInfo struct { - DynamicData - - Limit int64 `xml:"limit,omitempty"` - Shares *SharesInfo `xml:"shares,omitempty"` - Reservation int32 `xml:"reservation,omitempty"` -} - -func init() { - t["StorageIOAllocationInfo"] = reflect.TypeOf((*StorageIOAllocationInfo)(nil)).Elem() -} - -type StorageIOAllocationOption struct { - DynamicData - - LimitOption LongOption `xml:"limitOption"` - SharesOption SharesOption `xml:"sharesOption"` -} - -func init() { - t["StorageIOAllocationOption"] = reflect.TypeOf((*StorageIOAllocationOption)(nil)).Elem() -} - -type StorageIORMConfigOption struct { - DynamicData - - EnabledOption BoolOption `xml:"enabledOption"` - CongestionThresholdOption IntOption `xml:"congestionThresholdOption"` - StatsCollectionEnabledOption *BoolOption `xml:"statsCollectionEnabledOption,omitempty"` - ReservationEnabledOption *BoolOption `xml:"reservationEnabledOption,omitempty"` -} - -func init() { - t["StorageIORMConfigOption"] = reflect.TypeOf((*StorageIORMConfigOption)(nil)).Elem() -} - -type StorageIORMConfigSpec struct { - DynamicData - - Enabled *bool `xml:"enabled"` - CongestionThresholdMode string `xml:"congestionThresholdMode,omitempty"` - CongestionThreshold int32 `xml:"congestionThreshold,omitempty"` - PercentOfPeakThroughput int32 `xml:"percentOfPeakThroughput,omitempty"` - StatsCollectionEnabled *bool `xml:"statsCollectionEnabled"` - ReservationEnabled *bool `xml:"reservationEnabled"` - StatsAggregationDisabled *bool `xml:"statsAggregationDisabled"` - ReservableIopsThreshold int32 `xml:"reservableIopsThreshold,omitempty"` -} - -func init() { - t["StorageIORMConfigSpec"] = reflect.TypeOf((*StorageIORMConfigSpec)(nil)).Elem() -} - -type StorageIORMInfo struct { - DynamicData - - Enabled bool `xml:"enabled"` - CongestionThresholdMode string `xml:"congestionThresholdMode,omitempty"` - CongestionThreshold int32 `xml:"congestionThreshold"` - PercentOfPeakThroughput int32 `xml:"percentOfPeakThroughput,omitempty"` - StatsCollectionEnabled *bool `xml:"statsCollectionEnabled"` - ReservationEnabled *bool `xml:"reservationEnabled"` - StatsAggregationDisabled *bool `xml:"statsAggregationDisabled"` - ReservableIopsThreshold int32 `xml:"reservableIopsThreshold,omitempty"` -} - -func init() { - t["StorageIORMInfo"] = reflect.TypeOf((*StorageIORMInfo)(nil)).Elem() -} - -type StorageMigrationAction struct { - ClusterAction - - Vm ManagedObjectReference `xml:"vm"` - RelocateSpec VirtualMachineRelocateSpec `xml:"relocateSpec"` - Source ManagedObjectReference `xml:"source"` - Destination ManagedObjectReference `xml:"destination"` - SizeTransferred int64 `xml:"sizeTransferred"` - SpaceUtilSrcBefore float32 `xml:"spaceUtilSrcBefore,omitempty"` - SpaceUtilDstBefore float32 `xml:"spaceUtilDstBefore,omitempty"` - SpaceUtilSrcAfter float32 `xml:"spaceUtilSrcAfter,omitempty"` - SpaceUtilDstAfter float32 `xml:"spaceUtilDstAfter,omitempty"` - IoLatencySrcBefore float32 `xml:"ioLatencySrcBefore,omitempty"` - IoLatencyDstBefore float32 `xml:"ioLatencyDstBefore,omitempty"` -} - -func init() { - t["StorageMigrationAction"] = reflect.TypeOf((*StorageMigrationAction)(nil)).Elem() -} - -type StoragePerformanceSummary struct { - DynamicData - - Interval int32 `xml:"interval"` - Percentile []int32 `xml:"percentile"` - DatastoreReadLatency []float64 `xml:"datastoreReadLatency"` - DatastoreWriteLatency []float64 `xml:"datastoreWriteLatency"` - DatastoreVmLatency []float64 `xml:"datastoreVmLatency"` - DatastoreReadIops []float64 `xml:"datastoreReadIops"` - DatastoreWriteIops []float64 `xml:"datastoreWriteIops"` - SiocActivityDuration int32 `xml:"siocActivityDuration"` -} - -func init() { - t["StoragePerformanceSummary"] = reflect.TypeOf((*StoragePerformanceSummary)(nil)).Elem() -} - -type StoragePlacementAction struct { - ClusterAction - - Vm *ManagedObjectReference `xml:"vm,omitempty"` - RelocateSpec VirtualMachineRelocateSpec `xml:"relocateSpec"` - Destination ManagedObjectReference `xml:"destination"` - SpaceUtilBefore float32 `xml:"spaceUtilBefore,omitempty"` - SpaceDemandBefore float32 `xml:"spaceDemandBefore,omitempty"` - SpaceUtilAfter float32 `xml:"spaceUtilAfter,omitempty"` - SpaceDemandAfter float32 `xml:"spaceDemandAfter,omitempty"` - IoLatencyBefore float32 `xml:"ioLatencyBefore,omitempty"` -} - -func init() { - t["StoragePlacementAction"] = reflect.TypeOf((*StoragePlacementAction)(nil)).Elem() -} - -type StoragePlacementResult struct { - DynamicData - - Recommendations []ClusterRecommendation `xml:"recommendations,omitempty"` - DrsFault *ClusterDrsFaults `xml:"drsFault,omitempty"` - Task *ManagedObjectReference `xml:"task,omitempty"` -} - -func init() { - t["StoragePlacementResult"] = reflect.TypeOf((*StoragePlacementResult)(nil)).Elem() -} - -type StoragePlacementSpec struct { - DynamicData - - Type string `xml:"type"` - Priority VirtualMachineMovePriority `xml:"priority,omitempty"` - Vm *ManagedObjectReference `xml:"vm,omitempty"` - PodSelectionSpec StorageDrsPodSelectionSpec `xml:"podSelectionSpec"` - CloneSpec *VirtualMachineCloneSpec `xml:"cloneSpec,omitempty"` - CloneName string `xml:"cloneName,omitempty"` - ConfigSpec *VirtualMachineConfigSpec `xml:"configSpec,omitempty"` - RelocateSpec *VirtualMachineRelocateSpec `xml:"relocateSpec,omitempty"` - ResourcePool *ManagedObjectReference `xml:"resourcePool,omitempty"` - Host *ManagedObjectReference `xml:"host,omitempty"` - Folder *ManagedObjectReference `xml:"folder,omitempty"` - DisallowPrerequisiteMoves *bool `xml:"disallowPrerequisiteMoves"` - ResourceLeaseDurationSec int32 `xml:"resourceLeaseDurationSec,omitempty"` -} - -func init() { - t["StoragePlacementSpec"] = reflect.TypeOf((*StoragePlacementSpec)(nil)).Elem() -} - -type StoragePodSummary struct { - DynamicData - - Name string `xml:"name"` - Capacity int64 `xml:"capacity"` - FreeSpace int64 `xml:"freeSpace"` -} - -func init() { - t["StoragePodSummary"] = reflect.TypeOf((*StoragePodSummary)(nil)).Elem() -} - -type StorageProfile struct { - ApplyProfile - - NasStorage []NasStorageProfile `xml:"nasStorage,omitempty"` -} - -func init() { - t["StorageProfile"] = reflect.TypeOf((*StorageProfile)(nil)).Elem() -} - -type StorageRequirement struct { - DynamicData - - Datastore ManagedObjectReference `xml:"datastore"` - FreeSpaceRequiredInKb int64 `xml:"freeSpaceRequiredInKb"` -} - -func init() { - t["StorageRequirement"] = reflect.TypeOf((*StorageRequirement)(nil)).Elem() -} - -type StorageResourceManagerStorageProfileStatistics struct { - DynamicData - - ProfileId string `xml:"profileId"` - TotalSpaceMB int64 `xml:"totalSpaceMB"` - UsedSpaceMB int64 `xml:"usedSpaceMB"` -} - -func init() { - t["StorageResourceManagerStorageProfileStatistics"] = reflect.TypeOf((*StorageResourceManagerStorageProfileStatistics)(nil)).Elem() -} - -type StorageVMotionNotSupported struct { - MigrationFeatureNotSupported -} - -func init() { - t["StorageVMotionNotSupported"] = reflect.TypeOf((*StorageVMotionNotSupported)(nil)).Elem() -} - -type StorageVMotionNotSupportedFault StorageVMotionNotSupported - -func init() { - t["StorageVMotionNotSupportedFault"] = reflect.TypeOf((*StorageVMotionNotSupportedFault)(nil)).Elem() -} - -type StorageVmotionIncompatible struct { - VirtualHardwareCompatibilityIssue - - Datastore *ManagedObjectReference `xml:"datastore,omitempty"` -} - -func init() { - t["StorageVmotionIncompatible"] = reflect.TypeOf((*StorageVmotionIncompatible)(nil)).Elem() -} - -type StorageVmotionIncompatibleFault StorageVmotionIncompatible - -func init() { - t["StorageVmotionIncompatibleFault"] = reflect.TypeOf((*StorageVmotionIncompatibleFault)(nil)).Elem() -} - -type StringExpression struct { - NegatableExpression - - Value string `xml:"value,omitempty"` -} - -func init() { - t["StringExpression"] = reflect.TypeOf((*StringExpression)(nil)).Elem() -} - -type StringOption struct { - OptionType - - DefaultValue string `xml:"defaultValue"` - ValidCharacters string `xml:"validCharacters,omitempty"` -} - -func init() { - t["StringOption"] = reflect.TypeOf((*StringOption)(nil)).Elem() -} - -type StringPolicy struct { - InheritablePolicy - - Value string `xml:"value,omitempty"` -} - -func init() { - t["StringPolicy"] = reflect.TypeOf((*StringPolicy)(nil)).Elem() -} - -type SuspendVAppRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["SuspendVAppRequestType"] = reflect.TypeOf((*SuspendVAppRequestType)(nil)).Elem() -} - -type SuspendVApp_Task SuspendVAppRequestType - -func init() { - t["SuspendVApp_Task"] = reflect.TypeOf((*SuspendVApp_Task)(nil)).Elem() -} - -type SuspendVApp_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type SuspendVMRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["SuspendVMRequestType"] = reflect.TypeOf((*SuspendVMRequestType)(nil)).Elem() -} - -type SuspendVM_Task SuspendVMRequestType - -func init() { - t["SuspendVM_Task"] = reflect.TypeOf((*SuspendVM_Task)(nil)).Elem() -} - -type SuspendVM_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type SuspendedRelocateNotSupported struct { - MigrationFault -} - -func init() { - t["SuspendedRelocateNotSupported"] = reflect.TypeOf((*SuspendedRelocateNotSupported)(nil)).Elem() -} - -type SuspendedRelocateNotSupportedFault SuspendedRelocateNotSupported - -func init() { - t["SuspendedRelocateNotSupportedFault"] = reflect.TypeOf((*SuspendedRelocateNotSupportedFault)(nil)).Elem() -} - -type SwapDatastoreNotWritableOnHost struct { - DatastoreNotWritableOnHost -} - -func init() { - t["SwapDatastoreNotWritableOnHost"] = reflect.TypeOf((*SwapDatastoreNotWritableOnHost)(nil)).Elem() -} - -type SwapDatastoreNotWritableOnHostFault SwapDatastoreNotWritableOnHost - -func init() { - t["SwapDatastoreNotWritableOnHostFault"] = reflect.TypeOf((*SwapDatastoreNotWritableOnHostFault)(nil)).Elem() -} - -type SwapDatastoreUnset struct { - VimFault -} - -func init() { - t["SwapDatastoreUnset"] = reflect.TypeOf((*SwapDatastoreUnset)(nil)).Elem() -} - -type SwapDatastoreUnsetFault SwapDatastoreUnset - -func init() { - t["SwapDatastoreUnsetFault"] = reflect.TypeOf((*SwapDatastoreUnsetFault)(nil)).Elem() -} - -type SwapPlacementOverrideNotSupported struct { - InvalidVmConfig -} - -func init() { - t["SwapPlacementOverrideNotSupported"] = reflect.TypeOf((*SwapPlacementOverrideNotSupported)(nil)).Elem() -} - -type SwapPlacementOverrideNotSupportedFault SwapPlacementOverrideNotSupported - -func init() { - t["SwapPlacementOverrideNotSupportedFault"] = reflect.TypeOf((*SwapPlacementOverrideNotSupportedFault)(nil)).Elem() -} - -type SwitchIpUnset struct { - DvsFault -} - -func init() { - t["SwitchIpUnset"] = reflect.TypeOf((*SwitchIpUnset)(nil)).Elem() -} - -type SwitchIpUnsetFault SwitchIpUnset - -func init() { - t["SwitchIpUnsetFault"] = reflect.TypeOf((*SwitchIpUnsetFault)(nil)).Elem() -} - -type SwitchNotInUpgradeMode struct { - DvsFault -} - -func init() { - t["SwitchNotInUpgradeMode"] = reflect.TypeOf((*SwitchNotInUpgradeMode)(nil)).Elem() -} - -type SwitchNotInUpgradeModeFault SwitchNotInUpgradeMode - -func init() { - t["SwitchNotInUpgradeModeFault"] = reflect.TypeOf((*SwitchNotInUpgradeModeFault)(nil)).Elem() -} - -type SystemError struct { - RuntimeFault - - Reason string `xml:"reason"` -} - -func init() { - t["SystemError"] = reflect.TypeOf((*SystemError)(nil)).Elem() -} - -type SystemErrorFault SystemError - -func init() { - t["SystemErrorFault"] = reflect.TypeOf((*SystemErrorFault)(nil)).Elem() -} - -type Tag struct { - DynamicData - - Key string `xml:"key"` -} - -func init() { - t["Tag"] = reflect.TypeOf((*Tag)(nil)).Elem() -} - -type TaskDescription struct { - DynamicData - - MethodInfo []BaseElementDescription `xml:"methodInfo,typeattr"` - State []BaseElementDescription `xml:"state,typeattr"` - Reason []BaseTypeDescription `xml:"reason,typeattr"` -} - -func init() { - t["TaskDescription"] = reflect.TypeOf((*TaskDescription)(nil)).Elem() -} - -type TaskEvent struct { - Event - - Info TaskInfo `xml:"info"` -} - -func init() { - t["TaskEvent"] = reflect.TypeOf((*TaskEvent)(nil)).Elem() -} - -type TaskFilterSpec struct { - DynamicData - - Entity *TaskFilterSpecByEntity `xml:"entity,omitempty"` - Time *TaskFilterSpecByTime `xml:"time,omitempty"` - UserName *TaskFilterSpecByUsername `xml:"userName,omitempty"` - ActivationId []string `xml:"activationId,omitempty"` - State []TaskInfoState `xml:"state,omitempty"` - Alarm *ManagedObjectReference `xml:"alarm,omitempty"` - ScheduledTask *ManagedObjectReference `xml:"scheduledTask,omitempty"` - EventChainId []int32 `xml:"eventChainId,omitempty"` - Tag []string `xml:"tag,omitempty"` - ParentTaskKey []string `xml:"parentTaskKey,omitempty"` - RootTaskKey []string `xml:"rootTaskKey,omitempty"` -} - -func init() { - t["TaskFilterSpec"] = reflect.TypeOf((*TaskFilterSpec)(nil)).Elem() -} - -type TaskFilterSpecByEntity struct { - DynamicData - - Entity ManagedObjectReference `xml:"entity"` - Recursion TaskFilterSpecRecursionOption `xml:"recursion"` -} - -func init() { - t["TaskFilterSpecByEntity"] = reflect.TypeOf((*TaskFilterSpecByEntity)(nil)).Elem() -} - -type TaskFilterSpecByTime struct { - DynamicData - - TimeType TaskFilterSpecTimeOption `xml:"timeType"` - BeginTime *time.Time `xml:"beginTime"` - EndTime *time.Time `xml:"endTime"` -} - -func init() { - t["TaskFilterSpecByTime"] = reflect.TypeOf((*TaskFilterSpecByTime)(nil)).Elem() -} - -type TaskFilterSpecByUsername struct { - DynamicData - - SystemUser bool `xml:"systemUser"` - UserList []string `xml:"userList,omitempty"` -} - -func init() { - t["TaskFilterSpecByUsername"] = reflect.TypeOf((*TaskFilterSpecByUsername)(nil)).Elem() -} - -type TaskInProgress struct { - VimFault - - Task ManagedObjectReference `xml:"task"` -} - -func init() { - t["TaskInProgress"] = reflect.TypeOf((*TaskInProgress)(nil)).Elem() -} - -type TaskInProgressFault BaseTaskInProgress - -func init() { - t["TaskInProgressFault"] = reflect.TypeOf((*TaskInProgressFault)(nil)).Elem() -} - -type TaskInfo struct { - DynamicData - - Key string `xml:"key"` - Task ManagedObjectReference `xml:"task"` - Description *LocalizableMessage `xml:"description,omitempty"` - Name string `xml:"name,omitempty"` - DescriptionId string `xml:"descriptionId"` - Entity *ManagedObjectReference `xml:"entity,omitempty"` - EntityName string `xml:"entityName,omitempty"` - Locked []ManagedObjectReference `xml:"locked,omitempty"` - State TaskInfoState `xml:"state"` - Cancelled bool `xml:"cancelled"` - Cancelable bool `xml:"cancelable"` - Error *LocalizedMethodFault `xml:"error,omitempty"` - Result AnyType `xml:"result,omitempty,typeattr"` - Progress int32 `xml:"progress,omitempty"` - Reason BaseTaskReason `xml:"reason,typeattr"` - QueueTime time.Time `xml:"queueTime"` - StartTime *time.Time `xml:"startTime"` - CompleteTime *time.Time `xml:"completeTime"` - EventChainId int32 `xml:"eventChainId"` - ChangeTag string `xml:"changeTag,omitempty"` - ParentTaskKey string `xml:"parentTaskKey,omitempty"` - RootTaskKey string `xml:"rootTaskKey,omitempty"` - ActivationId string `xml:"activationId,omitempty"` -} - -func init() { - t["TaskInfo"] = reflect.TypeOf((*TaskInfo)(nil)).Elem() -} - -type TaskReason struct { - DynamicData -} - -func init() { - t["TaskReason"] = reflect.TypeOf((*TaskReason)(nil)).Elem() -} - -type TaskReasonAlarm struct { - TaskReason - - AlarmName string `xml:"alarmName"` - Alarm ManagedObjectReference `xml:"alarm"` - EntityName string `xml:"entityName"` - Entity ManagedObjectReference `xml:"entity"` -} - -func init() { - t["TaskReasonAlarm"] = reflect.TypeOf((*TaskReasonAlarm)(nil)).Elem() -} - -type TaskReasonSchedule struct { - TaskReason - - Name string `xml:"name"` - ScheduledTask ManagedObjectReference `xml:"scheduledTask"` -} - -func init() { - t["TaskReasonSchedule"] = reflect.TypeOf((*TaskReasonSchedule)(nil)).Elem() -} - -type TaskReasonSystem struct { - TaskReason -} - -func init() { - t["TaskReasonSystem"] = reflect.TypeOf((*TaskReasonSystem)(nil)).Elem() -} - -type TaskReasonUser struct { - TaskReason - - UserName string `xml:"userName"` -} - -func init() { - t["TaskReasonUser"] = reflect.TypeOf((*TaskReasonUser)(nil)).Elem() -} - -type TaskScheduler struct { - DynamicData - - ActiveTime *time.Time `xml:"activeTime"` - ExpireTime *time.Time `xml:"expireTime"` -} - -func init() { - t["TaskScheduler"] = reflect.TypeOf((*TaskScheduler)(nil)).Elem() -} - -type TaskTimeoutEvent struct { - TaskEvent -} - -func init() { - t["TaskTimeoutEvent"] = reflect.TypeOf((*TaskTimeoutEvent)(nil)).Elem() -} - -type TeamingMatchEvent struct { - DvsHealthStatusChangeEvent -} - -func init() { - t["TeamingMatchEvent"] = reflect.TypeOf((*TeamingMatchEvent)(nil)).Elem() -} - -type TeamingMisMatchEvent struct { - DvsHealthStatusChangeEvent -} - -func init() { - t["TeamingMisMatchEvent"] = reflect.TypeOf((*TeamingMisMatchEvent)(nil)).Elem() -} - -type TemplateBeingUpgradedEvent struct { - TemplateUpgradeEvent -} - -func init() { - t["TemplateBeingUpgradedEvent"] = reflect.TypeOf((*TemplateBeingUpgradedEvent)(nil)).Elem() -} - -type TemplateConfigFileInfo struct { - VmConfigFileInfo -} - -func init() { - t["TemplateConfigFileInfo"] = reflect.TypeOf((*TemplateConfigFileInfo)(nil)).Elem() -} - -type TemplateConfigFileQuery struct { - VmConfigFileQuery -} - -func init() { - t["TemplateConfigFileQuery"] = reflect.TypeOf((*TemplateConfigFileQuery)(nil)).Elem() -} - -type TemplateUpgradeEvent struct { - Event - - LegacyTemplate string `xml:"legacyTemplate"` -} - -func init() { - t["TemplateUpgradeEvent"] = reflect.TypeOf((*TemplateUpgradeEvent)(nil)).Elem() -} - -type TemplateUpgradeFailedEvent struct { - TemplateUpgradeEvent - - Reason LocalizedMethodFault `xml:"reason"` -} - -func init() { - t["TemplateUpgradeFailedEvent"] = reflect.TypeOf((*TemplateUpgradeFailedEvent)(nil)).Elem() -} - -type TemplateUpgradedEvent struct { - TemplateUpgradeEvent -} - -func init() { - t["TemplateUpgradedEvent"] = reflect.TypeOf((*TemplateUpgradedEvent)(nil)).Elem() -} - -type TerminateFaultTolerantVMRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm *ManagedObjectReference `xml:"vm,omitempty"` -} - -func init() { - t["TerminateFaultTolerantVMRequestType"] = reflect.TypeOf((*TerminateFaultTolerantVMRequestType)(nil)).Elem() -} - -type TerminateFaultTolerantVM_Task TerminateFaultTolerantVMRequestType - -func init() { - t["TerminateFaultTolerantVM_Task"] = reflect.TypeOf((*TerminateFaultTolerantVM_Task)(nil)).Elem() -} - -type TerminateFaultTolerantVM_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type TerminateProcessInGuest TerminateProcessInGuestRequestType - -func init() { - t["TerminateProcessInGuest"] = reflect.TypeOf((*TerminateProcessInGuest)(nil)).Elem() -} - -type TerminateProcessInGuestRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Auth BaseGuestAuthentication `xml:"auth,typeattr"` - Pid int64 `xml:"pid"` -} - -func init() { - t["TerminateProcessInGuestRequestType"] = reflect.TypeOf((*TerminateProcessInGuestRequestType)(nil)).Elem() -} - -type TerminateProcessInGuestResponse struct { -} - -type TerminateSession TerminateSessionRequestType - -func init() { - t["TerminateSession"] = reflect.TypeOf((*TerminateSession)(nil)).Elem() -} - -type TerminateSessionRequestType struct { - This ManagedObjectReference `xml:"_this"` - SessionId []string `xml:"sessionId"` -} - -func init() { - t["TerminateSessionRequestType"] = reflect.TypeOf((*TerminateSessionRequestType)(nil)).Elem() -} - -type TerminateSessionResponse struct { -} - -type TerminateVM TerminateVMRequestType - -func init() { - t["TerminateVM"] = reflect.TypeOf((*TerminateVM)(nil)).Elem() -} - -type TerminateVMRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["TerminateVMRequestType"] = reflect.TypeOf((*TerminateVMRequestType)(nil)).Elem() -} - -type TerminateVMResponse struct { -} - -type ThirdPartyLicenseAssignmentFailed struct { - RuntimeFault - - Host ManagedObjectReference `xml:"host"` - Module string `xml:"module"` - Reason string `xml:"reason,omitempty"` -} - -func init() { - t["ThirdPartyLicenseAssignmentFailed"] = reflect.TypeOf((*ThirdPartyLicenseAssignmentFailed)(nil)).Elem() -} - -type ThirdPartyLicenseAssignmentFailedFault ThirdPartyLicenseAssignmentFailed - -func init() { - t["ThirdPartyLicenseAssignmentFailedFault"] = reflect.TypeOf((*ThirdPartyLicenseAssignmentFailedFault)(nil)).Elem() -} - -type TicketedSessionAuthentication struct { - GuestAuthentication - - Ticket string `xml:"ticket"` -} - -func init() { - t["TicketedSessionAuthentication"] = reflect.TypeOf((*TicketedSessionAuthentication)(nil)).Elem() -} - -type TimedOutHostOperationEvent struct { - HostEvent -} - -func init() { - t["TimedOutHostOperationEvent"] = reflect.TypeOf((*TimedOutHostOperationEvent)(nil)).Elem() -} - -type Timedout struct { - VimFault -} - -func init() { - t["Timedout"] = reflect.TypeOf((*Timedout)(nil)).Elem() -} - -type TimedoutFault BaseTimedout - -func init() { - t["TimedoutFault"] = reflect.TypeOf((*TimedoutFault)(nil)).Elem() -} - -type TooManyConcurrentNativeClones struct { - FileFault -} - -func init() { - t["TooManyConcurrentNativeClones"] = reflect.TypeOf((*TooManyConcurrentNativeClones)(nil)).Elem() -} - -type TooManyConcurrentNativeClonesFault TooManyConcurrentNativeClones - -func init() { - t["TooManyConcurrentNativeClonesFault"] = reflect.TypeOf((*TooManyConcurrentNativeClonesFault)(nil)).Elem() -} - -type TooManyConsecutiveOverrides struct { - VimFault -} - -func init() { - t["TooManyConsecutiveOverrides"] = reflect.TypeOf((*TooManyConsecutiveOverrides)(nil)).Elem() -} - -type TooManyConsecutiveOverridesFault TooManyConsecutiveOverrides - -func init() { - t["TooManyConsecutiveOverridesFault"] = reflect.TypeOf((*TooManyConsecutiveOverridesFault)(nil)).Elem() -} - -type TooManyDevices struct { - InvalidVmConfig -} - -func init() { - t["TooManyDevices"] = reflect.TypeOf((*TooManyDevices)(nil)).Elem() -} - -type TooManyDevicesFault TooManyDevices - -func init() { - t["TooManyDevicesFault"] = reflect.TypeOf((*TooManyDevicesFault)(nil)).Elem() -} - -type TooManyDisksOnLegacyHost struct { - MigrationFault - - DiskCount int32 `xml:"diskCount"` - TimeoutDanger bool `xml:"timeoutDanger"` -} - -func init() { - t["TooManyDisksOnLegacyHost"] = reflect.TypeOf((*TooManyDisksOnLegacyHost)(nil)).Elem() -} - -type TooManyDisksOnLegacyHostFault TooManyDisksOnLegacyHost - -func init() { - t["TooManyDisksOnLegacyHostFault"] = reflect.TypeOf((*TooManyDisksOnLegacyHostFault)(nil)).Elem() -} - -type TooManyGuestLogons struct { - GuestOperationsFault -} - -func init() { - t["TooManyGuestLogons"] = reflect.TypeOf((*TooManyGuestLogons)(nil)).Elem() -} - -type TooManyGuestLogonsFault TooManyGuestLogons - -func init() { - t["TooManyGuestLogonsFault"] = reflect.TypeOf((*TooManyGuestLogonsFault)(nil)).Elem() -} - -type TooManyHosts struct { - HostConnectFault -} - -func init() { - t["TooManyHosts"] = reflect.TypeOf((*TooManyHosts)(nil)).Elem() -} - -type TooManyHostsFault TooManyHosts - -func init() { - t["TooManyHostsFault"] = reflect.TypeOf((*TooManyHostsFault)(nil)).Elem() -} - -type TooManyNativeCloneLevels struct { - FileFault -} - -func init() { - t["TooManyNativeCloneLevels"] = reflect.TypeOf((*TooManyNativeCloneLevels)(nil)).Elem() -} - -type TooManyNativeCloneLevelsFault TooManyNativeCloneLevels - -func init() { - t["TooManyNativeCloneLevelsFault"] = reflect.TypeOf((*TooManyNativeCloneLevelsFault)(nil)).Elem() -} - -type TooManyNativeClonesOnFile struct { - FileFault -} - -func init() { - t["TooManyNativeClonesOnFile"] = reflect.TypeOf((*TooManyNativeClonesOnFile)(nil)).Elem() -} - -type TooManyNativeClonesOnFileFault TooManyNativeClonesOnFile - -func init() { - t["TooManyNativeClonesOnFileFault"] = reflect.TypeOf((*TooManyNativeClonesOnFileFault)(nil)).Elem() -} - -type TooManySnapshotLevels struct { - SnapshotFault -} - -func init() { - t["TooManySnapshotLevels"] = reflect.TypeOf((*TooManySnapshotLevels)(nil)).Elem() -} - -type TooManySnapshotLevelsFault TooManySnapshotLevels - -func init() { - t["TooManySnapshotLevelsFault"] = reflect.TypeOf((*TooManySnapshotLevelsFault)(nil)).Elem() -} - -type ToolsAlreadyUpgraded struct { - VmToolsUpgradeFault -} - -func init() { - t["ToolsAlreadyUpgraded"] = reflect.TypeOf((*ToolsAlreadyUpgraded)(nil)).Elem() -} - -type ToolsAlreadyUpgradedFault ToolsAlreadyUpgraded - -func init() { - t["ToolsAlreadyUpgradedFault"] = reflect.TypeOf((*ToolsAlreadyUpgradedFault)(nil)).Elem() -} - -type ToolsAutoUpgradeNotSupported struct { - VmToolsUpgradeFault -} - -func init() { - t["ToolsAutoUpgradeNotSupported"] = reflect.TypeOf((*ToolsAutoUpgradeNotSupported)(nil)).Elem() -} - -type ToolsAutoUpgradeNotSupportedFault ToolsAutoUpgradeNotSupported - -func init() { - t["ToolsAutoUpgradeNotSupportedFault"] = reflect.TypeOf((*ToolsAutoUpgradeNotSupportedFault)(nil)).Elem() -} - -type ToolsConfigInfo struct { - DynamicData - - ToolsVersion int32 `xml:"toolsVersion,omitempty"` - AfterPowerOn *bool `xml:"afterPowerOn"` - AfterResume *bool `xml:"afterResume"` - BeforeGuestStandby *bool `xml:"beforeGuestStandby"` - BeforeGuestShutdown *bool `xml:"beforeGuestShutdown"` - BeforeGuestReboot *bool `xml:"beforeGuestReboot"` - ToolsUpgradePolicy string `xml:"toolsUpgradePolicy,omitempty"` - PendingCustomization string `xml:"pendingCustomization,omitempty"` - SyncTimeWithHost *bool `xml:"syncTimeWithHost"` - LastInstallInfo *ToolsConfigInfoToolsLastInstallInfo `xml:"lastInstallInfo,omitempty"` -} - -func init() { - t["ToolsConfigInfo"] = reflect.TypeOf((*ToolsConfigInfo)(nil)).Elem() -} - -type ToolsConfigInfoToolsLastInstallInfo struct { - DynamicData - - Counter int32 `xml:"counter"` - Fault *LocalizedMethodFault `xml:"fault,omitempty"` -} - -func init() { - t["ToolsConfigInfoToolsLastInstallInfo"] = reflect.TypeOf((*ToolsConfigInfoToolsLastInstallInfo)(nil)).Elem() -} - -type ToolsImageCopyFailed struct { - VmToolsUpgradeFault -} - -func init() { - t["ToolsImageCopyFailed"] = reflect.TypeOf((*ToolsImageCopyFailed)(nil)).Elem() -} - -type ToolsImageCopyFailedFault ToolsImageCopyFailed - -func init() { - t["ToolsImageCopyFailedFault"] = reflect.TypeOf((*ToolsImageCopyFailedFault)(nil)).Elem() -} - -type ToolsImageNotAvailable struct { - VmToolsUpgradeFault -} - -func init() { - t["ToolsImageNotAvailable"] = reflect.TypeOf((*ToolsImageNotAvailable)(nil)).Elem() -} - -type ToolsImageNotAvailableFault ToolsImageNotAvailable - -func init() { - t["ToolsImageNotAvailableFault"] = reflect.TypeOf((*ToolsImageNotAvailableFault)(nil)).Elem() -} - -type ToolsImageSignatureCheckFailed struct { - VmToolsUpgradeFault -} - -func init() { - t["ToolsImageSignatureCheckFailed"] = reflect.TypeOf((*ToolsImageSignatureCheckFailed)(nil)).Elem() -} - -type ToolsImageSignatureCheckFailedFault ToolsImageSignatureCheckFailed - -func init() { - t["ToolsImageSignatureCheckFailedFault"] = reflect.TypeOf((*ToolsImageSignatureCheckFailedFault)(nil)).Elem() -} - -type ToolsInstallationInProgress struct { - MigrationFault -} - -func init() { - t["ToolsInstallationInProgress"] = reflect.TypeOf((*ToolsInstallationInProgress)(nil)).Elem() -} - -type ToolsInstallationInProgressFault ToolsInstallationInProgress - -func init() { - t["ToolsInstallationInProgressFault"] = reflect.TypeOf((*ToolsInstallationInProgressFault)(nil)).Elem() -} - -type ToolsUnavailable struct { - VimFault -} - -func init() { - t["ToolsUnavailable"] = reflect.TypeOf((*ToolsUnavailable)(nil)).Elem() -} - -type ToolsUnavailableFault ToolsUnavailable - -func init() { - t["ToolsUnavailableFault"] = reflect.TypeOf((*ToolsUnavailableFault)(nil)).Elem() -} - -type ToolsUpgradeCancelled struct { - VmToolsUpgradeFault -} - -func init() { - t["ToolsUpgradeCancelled"] = reflect.TypeOf((*ToolsUpgradeCancelled)(nil)).Elem() -} - -type ToolsUpgradeCancelledFault ToolsUpgradeCancelled - -func init() { - t["ToolsUpgradeCancelledFault"] = reflect.TypeOf((*ToolsUpgradeCancelledFault)(nil)).Elem() -} - -type TraversalSpec struct { - SelectionSpec - - Type string `xml:"type"` - Path string `xml:"path"` - Skip *bool `xml:"skip"` - SelectSet []BaseSelectionSpec `xml:"selectSet,omitempty,typeattr"` -} - -func init() { - t["TraversalSpec"] = reflect.TypeOf((*TraversalSpec)(nil)).Elem() -} - -type TurnDiskLocatorLedOffRequestType struct { - This ManagedObjectReference `xml:"_this"` - ScsiDiskUuids []string `xml:"scsiDiskUuids"` -} - -func init() { - t["TurnDiskLocatorLedOffRequestType"] = reflect.TypeOf((*TurnDiskLocatorLedOffRequestType)(nil)).Elem() -} - -type TurnDiskLocatorLedOff_Task TurnDiskLocatorLedOffRequestType - -func init() { - t["TurnDiskLocatorLedOff_Task"] = reflect.TypeOf((*TurnDiskLocatorLedOff_Task)(nil)).Elem() -} - -type TurnDiskLocatorLedOff_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type TurnDiskLocatorLedOnRequestType struct { - This ManagedObjectReference `xml:"_this"` - ScsiDiskUuids []string `xml:"scsiDiskUuids"` -} - -func init() { - t["TurnDiskLocatorLedOnRequestType"] = reflect.TypeOf((*TurnDiskLocatorLedOnRequestType)(nil)).Elem() -} - -type TurnDiskLocatorLedOn_Task TurnDiskLocatorLedOnRequestType - -func init() { - t["TurnDiskLocatorLedOn_Task"] = reflect.TypeOf((*TurnDiskLocatorLedOn_Task)(nil)).Elem() -} - -type TurnDiskLocatorLedOn_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type TurnOffFaultToleranceForVMRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["TurnOffFaultToleranceForVMRequestType"] = reflect.TypeOf((*TurnOffFaultToleranceForVMRequestType)(nil)).Elem() -} - -type TurnOffFaultToleranceForVM_Task TurnOffFaultToleranceForVMRequestType - -func init() { - t["TurnOffFaultToleranceForVM_Task"] = reflect.TypeOf((*TurnOffFaultToleranceForVM_Task)(nil)).Elem() -} - -type TurnOffFaultToleranceForVM_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type TypeDescription struct { - Description - - Key string `xml:"key"` -} - -func init() { - t["TypeDescription"] = reflect.TypeOf((*TypeDescription)(nil)).Elem() -} - -type UnSupportedDatastoreForVFlash struct { - UnsupportedDatastore - - DatastoreName string `xml:"datastoreName"` - Type string `xml:"type"` -} - -func init() { - t["UnSupportedDatastoreForVFlash"] = reflect.TypeOf((*UnSupportedDatastoreForVFlash)(nil)).Elem() -} - -type UnSupportedDatastoreForVFlashFault UnSupportedDatastoreForVFlash - -func init() { - t["UnSupportedDatastoreForVFlashFault"] = reflect.TypeOf((*UnSupportedDatastoreForVFlashFault)(nil)).Elem() -} - -type UnassignUserFromGroup UnassignUserFromGroupRequestType - -func init() { - t["UnassignUserFromGroup"] = reflect.TypeOf((*UnassignUserFromGroup)(nil)).Elem() -} - -type UnassignUserFromGroupRequestType struct { - This ManagedObjectReference `xml:"_this"` - User string `xml:"user"` - Group string `xml:"group"` -} - -func init() { - t["UnassignUserFromGroupRequestType"] = reflect.TypeOf((*UnassignUserFromGroupRequestType)(nil)).Elem() -} - -type UnassignUserFromGroupResponse struct { -} - -type UnbindVnic UnbindVnicRequestType - -func init() { - t["UnbindVnic"] = reflect.TypeOf((*UnbindVnic)(nil)).Elem() -} - -type UnbindVnicRequestType struct { - This ManagedObjectReference `xml:"_this"` - IScsiHbaName string `xml:"iScsiHbaName"` - VnicDevice string `xml:"vnicDevice"` - Force bool `xml:"force"` -} - -func init() { - t["UnbindVnicRequestType"] = reflect.TypeOf((*UnbindVnicRequestType)(nil)).Elem() -} - -type UnbindVnicResponse struct { -} - -type UncommittedUndoableDisk struct { - MigrationFault -} - -func init() { - t["UncommittedUndoableDisk"] = reflect.TypeOf((*UncommittedUndoableDisk)(nil)).Elem() -} - -type UncommittedUndoableDiskFault UncommittedUndoableDisk - -func init() { - t["UncommittedUndoableDiskFault"] = reflect.TypeOf((*UncommittedUndoableDiskFault)(nil)).Elem() -} - -type UnconfiguredPropertyValue struct { - InvalidPropertyValue -} - -func init() { - t["UnconfiguredPropertyValue"] = reflect.TypeOf((*UnconfiguredPropertyValue)(nil)).Elem() -} - -type UnconfiguredPropertyValueFault UnconfiguredPropertyValue - -func init() { - t["UnconfiguredPropertyValueFault"] = reflect.TypeOf((*UnconfiguredPropertyValueFault)(nil)).Elem() -} - -type UncustomizableGuest struct { - CustomizationFault - - UncustomizableGuestOS string `xml:"uncustomizableGuestOS"` -} - -func init() { - t["UncustomizableGuest"] = reflect.TypeOf((*UncustomizableGuest)(nil)).Elem() -} - -type UncustomizableGuestFault UncustomizableGuest - -func init() { - t["UncustomizableGuestFault"] = reflect.TypeOf((*UncustomizableGuestFault)(nil)).Elem() -} - -type UnexpectedCustomizationFault struct { - CustomizationFault -} - -func init() { - t["UnexpectedCustomizationFault"] = reflect.TypeOf((*UnexpectedCustomizationFault)(nil)).Elem() -} - -type UnexpectedCustomizationFaultFault UnexpectedCustomizationFault - -func init() { - t["UnexpectedCustomizationFaultFault"] = reflect.TypeOf((*UnexpectedCustomizationFaultFault)(nil)).Elem() -} - -type UnexpectedFault struct { - RuntimeFault - - FaultName string `xml:"faultName"` - Fault *LocalizedMethodFault `xml:"fault,omitempty"` -} - -func init() { - t["UnexpectedFault"] = reflect.TypeOf((*UnexpectedFault)(nil)).Elem() -} - -type UnexpectedFaultFault UnexpectedFault - -func init() { - t["UnexpectedFaultFault"] = reflect.TypeOf((*UnexpectedFaultFault)(nil)).Elem() -} - -type UninstallHostPatchRequestType struct { - This ManagedObjectReference `xml:"_this"` - BulletinIds []string `xml:"bulletinIds,omitempty"` - Spec *HostPatchManagerPatchManagerOperationSpec `xml:"spec,omitempty"` -} - -func init() { - t["UninstallHostPatchRequestType"] = reflect.TypeOf((*UninstallHostPatchRequestType)(nil)).Elem() -} - -type UninstallHostPatch_Task UninstallHostPatchRequestType - -func init() { - t["UninstallHostPatch_Task"] = reflect.TypeOf((*UninstallHostPatch_Task)(nil)).Elem() -} - -type UninstallHostPatch_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type UninstallIoFilterRequestType struct { - This ManagedObjectReference `xml:"_this"` - FilterId string `xml:"filterId"` - CompRes ManagedObjectReference `xml:"compRes"` -} - -func init() { - t["UninstallIoFilterRequestType"] = reflect.TypeOf((*UninstallIoFilterRequestType)(nil)).Elem() -} - -type UninstallIoFilter_Task UninstallIoFilterRequestType - -func init() { - t["UninstallIoFilter_Task"] = reflect.TypeOf((*UninstallIoFilter_Task)(nil)).Elem() -} - -type UninstallIoFilter_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type UninstallService UninstallServiceRequestType - -func init() { - t["UninstallService"] = reflect.TypeOf((*UninstallService)(nil)).Elem() -} - -type UninstallServiceRequestType struct { - This ManagedObjectReference `xml:"_this"` - Id string `xml:"id"` -} - -func init() { - t["UninstallServiceRequestType"] = reflect.TypeOf((*UninstallServiceRequestType)(nil)).Elem() -} - -type UninstallServiceResponse struct { -} - -type UnlicensedVirtualMachinesEvent struct { - LicenseEvent - - Unlicensed int32 `xml:"unlicensed"` - Available int32 `xml:"available"` -} - -func init() { - t["UnlicensedVirtualMachinesEvent"] = reflect.TypeOf((*UnlicensedVirtualMachinesEvent)(nil)).Elem() -} - -type UnlicensedVirtualMachinesFoundEvent struct { - LicenseEvent - - Available int32 `xml:"available"` -} - -func init() { - t["UnlicensedVirtualMachinesFoundEvent"] = reflect.TypeOf((*UnlicensedVirtualMachinesFoundEvent)(nil)).Elem() -} - -type UnmapVmfsVolumeExRequestType struct { - This ManagedObjectReference `xml:"_this"` - VmfsUuid []string `xml:"vmfsUuid"` -} - -func init() { - t["UnmapVmfsVolumeExRequestType"] = reflect.TypeOf((*UnmapVmfsVolumeExRequestType)(nil)).Elem() -} - -type UnmapVmfsVolumeEx_Task UnmapVmfsVolumeExRequestType - -func init() { - t["UnmapVmfsVolumeEx_Task"] = reflect.TypeOf((*UnmapVmfsVolumeEx_Task)(nil)).Elem() -} - -type UnmapVmfsVolumeEx_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type UnmountDiskMappingRequestType struct { - This ManagedObjectReference `xml:"_this"` - Mapping []VsanHostDiskMapping `xml:"mapping"` -} - -func init() { - t["UnmountDiskMappingRequestType"] = reflect.TypeOf((*UnmountDiskMappingRequestType)(nil)).Elem() -} - -type UnmountDiskMapping_Task UnmountDiskMappingRequestType - -func init() { - t["UnmountDiskMapping_Task"] = reflect.TypeOf((*UnmountDiskMapping_Task)(nil)).Elem() -} - -type UnmountDiskMapping_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type UnmountForceMountedVmfsVolume UnmountForceMountedVmfsVolumeRequestType - -func init() { - t["UnmountForceMountedVmfsVolume"] = reflect.TypeOf((*UnmountForceMountedVmfsVolume)(nil)).Elem() -} - -type UnmountForceMountedVmfsVolumeRequestType struct { - This ManagedObjectReference `xml:"_this"` - VmfsUuid string `xml:"vmfsUuid"` -} - -func init() { - t["UnmountForceMountedVmfsVolumeRequestType"] = reflect.TypeOf((*UnmountForceMountedVmfsVolumeRequestType)(nil)).Elem() -} - -type UnmountForceMountedVmfsVolumeResponse struct { -} - -type UnmountToolsInstaller UnmountToolsInstallerRequestType - -func init() { - t["UnmountToolsInstaller"] = reflect.TypeOf((*UnmountToolsInstaller)(nil)).Elem() -} - -type UnmountToolsInstallerRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["UnmountToolsInstallerRequestType"] = reflect.TypeOf((*UnmountToolsInstallerRequestType)(nil)).Elem() -} - -type UnmountToolsInstallerResponse struct { -} - -type UnmountVffsVolume UnmountVffsVolumeRequestType - -func init() { - t["UnmountVffsVolume"] = reflect.TypeOf((*UnmountVffsVolume)(nil)).Elem() -} - -type UnmountVffsVolumeRequestType struct { - This ManagedObjectReference `xml:"_this"` - VffsUuid string `xml:"vffsUuid"` -} - -func init() { - t["UnmountVffsVolumeRequestType"] = reflect.TypeOf((*UnmountVffsVolumeRequestType)(nil)).Elem() -} - -type UnmountVffsVolumeResponse struct { -} - -type UnmountVmfsVolume UnmountVmfsVolumeRequestType - -func init() { - t["UnmountVmfsVolume"] = reflect.TypeOf((*UnmountVmfsVolume)(nil)).Elem() -} - -type UnmountVmfsVolumeExRequestType struct { - This ManagedObjectReference `xml:"_this"` - VmfsUuid []string `xml:"vmfsUuid"` -} - -func init() { - t["UnmountVmfsVolumeExRequestType"] = reflect.TypeOf((*UnmountVmfsVolumeExRequestType)(nil)).Elem() -} - -type UnmountVmfsVolumeEx_Task UnmountVmfsVolumeExRequestType - -func init() { - t["UnmountVmfsVolumeEx_Task"] = reflect.TypeOf((*UnmountVmfsVolumeEx_Task)(nil)).Elem() -} - -type UnmountVmfsVolumeEx_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type UnmountVmfsVolumeRequestType struct { - This ManagedObjectReference `xml:"_this"` - VmfsUuid string `xml:"vmfsUuid"` -} - -func init() { - t["UnmountVmfsVolumeRequestType"] = reflect.TypeOf((*UnmountVmfsVolumeRequestType)(nil)).Elem() -} - -type UnmountVmfsVolumeResponse struct { -} - -type UnrecognizedHost struct { - VimFault - - HostName string `xml:"hostName"` -} - -func init() { - t["UnrecognizedHost"] = reflect.TypeOf((*UnrecognizedHost)(nil)).Elem() -} - -type UnrecognizedHostFault UnrecognizedHost - -func init() { - t["UnrecognizedHostFault"] = reflect.TypeOf((*UnrecognizedHostFault)(nil)).Elem() -} - -type UnregisterAndDestroyRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["UnregisterAndDestroyRequestType"] = reflect.TypeOf((*UnregisterAndDestroyRequestType)(nil)).Elem() -} - -type UnregisterAndDestroy_Task UnregisterAndDestroyRequestType - -func init() { - t["UnregisterAndDestroy_Task"] = reflect.TypeOf((*UnregisterAndDestroy_Task)(nil)).Elem() -} - -type UnregisterAndDestroy_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type UnregisterExtension UnregisterExtensionRequestType - -func init() { - t["UnregisterExtension"] = reflect.TypeOf((*UnregisterExtension)(nil)).Elem() -} - -type UnregisterExtensionRequestType struct { - This ManagedObjectReference `xml:"_this"` - ExtensionKey string `xml:"extensionKey"` -} - -func init() { - t["UnregisterExtensionRequestType"] = reflect.TypeOf((*UnregisterExtensionRequestType)(nil)).Elem() -} - -type UnregisterExtensionResponse struct { -} - -type UnregisterVM UnregisterVMRequestType - -func init() { - t["UnregisterVM"] = reflect.TypeOf((*UnregisterVM)(nil)).Elem() -} - -type UnregisterVMRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["UnregisterVMRequestType"] = reflect.TypeOf((*UnregisterVMRequestType)(nil)).Elem() -} - -type UnregisterVMResponse struct { -} - -type UnsharedSwapVMotionNotSupported struct { - MigrationFeatureNotSupported -} - -func init() { - t["UnsharedSwapVMotionNotSupported"] = reflect.TypeOf((*UnsharedSwapVMotionNotSupported)(nil)).Elem() -} - -type UnsharedSwapVMotionNotSupportedFault UnsharedSwapVMotionNotSupported - -func init() { - t["UnsharedSwapVMotionNotSupportedFault"] = reflect.TypeOf((*UnsharedSwapVMotionNotSupportedFault)(nil)).Elem() -} - -type UnsupportedDatastore struct { - VmConfigFault - - Datastore *ManagedObjectReference `xml:"datastore,omitempty"` -} - -func init() { - t["UnsupportedDatastore"] = reflect.TypeOf((*UnsupportedDatastore)(nil)).Elem() -} - -type UnsupportedDatastoreFault BaseUnsupportedDatastore - -func init() { - t["UnsupportedDatastoreFault"] = reflect.TypeOf((*UnsupportedDatastoreFault)(nil)).Elem() -} - -type UnsupportedGuest struct { - InvalidVmConfig - - UnsupportedGuestOS string `xml:"unsupportedGuestOS"` -} - -func init() { - t["UnsupportedGuest"] = reflect.TypeOf((*UnsupportedGuest)(nil)).Elem() -} - -type UnsupportedGuestFault UnsupportedGuest - -func init() { - t["UnsupportedGuestFault"] = reflect.TypeOf((*UnsupportedGuestFault)(nil)).Elem() -} - -type UnsupportedVimApiVersion struct { - VimFault - - Version string `xml:"version,omitempty"` -} - -func init() { - t["UnsupportedVimApiVersion"] = reflect.TypeOf((*UnsupportedVimApiVersion)(nil)).Elem() -} - -type UnsupportedVimApiVersionFault UnsupportedVimApiVersion - -func init() { - t["UnsupportedVimApiVersionFault"] = reflect.TypeOf((*UnsupportedVimApiVersionFault)(nil)).Elem() -} - -type UnsupportedVmxLocation struct { - VmConfigFault -} - -func init() { - t["UnsupportedVmxLocation"] = reflect.TypeOf((*UnsupportedVmxLocation)(nil)).Elem() -} - -type UnsupportedVmxLocationFault UnsupportedVmxLocation - -func init() { - t["UnsupportedVmxLocationFault"] = reflect.TypeOf((*UnsupportedVmxLocationFault)(nil)).Elem() -} - -type UnusedVirtualDiskBlocksNotScrubbed struct { - DeviceBackingNotSupported -} - -func init() { - t["UnusedVirtualDiskBlocksNotScrubbed"] = reflect.TypeOf((*UnusedVirtualDiskBlocksNotScrubbed)(nil)).Elem() -} - -type UnusedVirtualDiskBlocksNotScrubbedFault UnusedVirtualDiskBlocksNotScrubbed - -func init() { - t["UnusedVirtualDiskBlocksNotScrubbedFault"] = reflect.TypeOf((*UnusedVirtualDiskBlocksNotScrubbedFault)(nil)).Elem() -} - -type UpdateAnswerFileRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host ManagedObjectReference `xml:"host"` - ConfigSpec BaseAnswerFileCreateSpec `xml:"configSpec,typeattr"` -} - -func init() { - t["UpdateAnswerFileRequestType"] = reflect.TypeOf((*UpdateAnswerFileRequestType)(nil)).Elem() -} - -type UpdateAnswerFile_Task UpdateAnswerFileRequestType - -func init() { - t["UpdateAnswerFile_Task"] = reflect.TypeOf((*UpdateAnswerFile_Task)(nil)).Elem() -} - -type UpdateAnswerFile_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type UpdateAssignedLicense UpdateAssignedLicenseRequestType - -func init() { - t["UpdateAssignedLicense"] = reflect.TypeOf((*UpdateAssignedLicense)(nil)).Elem() -} - -type UpdateAssignedLicenseRequestType struct { - This ManagedObjectReference `xml:"_this"` - Entity string `xml:"entity"` - LicenseKey string `xml:"licenseKey"` - EntityDisplayName string `xml:"entityDisplayName,omitempty"` -} - -func init() { - t["UpdateAssignedLicenseRequestType"] = reflect.TypeOf((*UpdateAssignedLicenseRequestType)(nil)).Elem() -} - -type UpdateAssignedLicenseResponse struct { - Returnval LicenseManagerLicenseInfo `xml:"returnval"` -} - -type UpdateAuthorizationRole UpdateAuthorizationRoleRequestType - -func init() { - t["UpdateAuthorizationRole"] = reflect.TypeOf((*UpdateAuthorizationRole)(nil)).Elem() -} - -type UpdateAuthorizationRoleRequestType struct { - This ManagedObjectReference `xml:"_this"` - RoleId int32 `xml:"roleId"` - NewName string `xml:"newName"` - PrivIds []string `xml:"privIds,omitempty"` -} - -func init() { - t["UpdateAuthorizationRoleRequestType"] = reflect.TypeOf((*UpdateAuthorizationRoleRequestType)(nil)).Elem() -} - -type UpdateAuthorizationRoleResponse struct { -} - -type UpdateBootDevice UpdateBootDeviceRequestType - -func init() { - t["UpdateBootDevice"] = reflect.TypeOf((*UpdateBootDevice)(nil)).Elem() -} - -type UpdateBootDeviceRequestType struct { - This ManagedObjectReference `xml:"_this"` - Key string `xml:"key"` -} - -func init() { - t["UpdateBootDeviceRequestType"] = reflect.TypeOf((*UpdateBootDeviceRequestType)(nil)).Elem() -} - -type UpdateBootDeviceResponse struct { -} - -type UpdateChildResourceConfiguration UpdateChildResourceConfigurationRequestType - -func init() { - t["UpdateChildResourceConfiguration"] = reflect.TypeOf((*UpdateChildResourceConfiguration)(nil)).Elem() -} - -type UpdateChildResourceConfigurationRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec []ResourceConfigSpec `xml:"spec"` -} - -func init() { - t["UpdateChildResourceConfigurationRequestType"] = reflect.TypeOf((*UpdateChildResourceConfigurationRequestType)(nil)).Elem() -} - -type UpdateChildResourceConfigurationResponse struct { -} - -type UpdateClusterProfile UpdateClusterProfileRequestType - -func init() { - t["UpdateClusterProfile"] = reflect.TypeOf((*UpdateClusterProfile)(nil)).Elem() -} - -type UpdateClusterProfileRequestType struct { - This ManagedObjectReference `xml:"_this"` - Config BaseClusterProfileConfigSpec `xml:"config,typeattr"` -} - -func init() { - t["UpdateClusterProfileRequestType"] = reflect.TypeOf((*UpdateClusterProfileRequestType)(nil)).Elem() -} - -type UpdateClusterProfileResponse struct { -} - -type UpdateConfig UpdateConfigRequestType - -func init() { - t["UpdateConfig"] = reflect.TypeOf((*UpdateConfig)(nil)).Elem() -} - -type UpdateConfigRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name,omitempty"` - Config *ResourceConfigSpec `xml:"config,omitempty"` -} - -func init() { - t["UpdateConfigRequestType"] = reflect.TypeOf((*UpdateConfigRequestType)(nil)).Elem() -} - -type UpdateConfigResponse struct { -} - -type UpdateConsoleIpRouteConfig UpdateConsoleIpRouteConfigRequestType - -func init() { - t["UpdateConsoleIpRouteConfig"] = reflect.TypeOf((*UpdateConsoleIpRouteConfig)(nil)).Elem() -} - -type UpdateConsoleIpRouteConfigRequestType struct { - This ManagedObjectReference `xml:"_this"` - Config BaseHostIpRouteConfig `xml:"config,typeattr"` -} - -func init() { - t["UpdateConsoleIpRouteConfigRequestType"] = reflect.TypeOf((*UpdateConsoleIpRouteConfigRequestType)(nil)).Elem() -} - -type UpdateConsoleIpRouteConfigResponse struct { -} - -type UpdateCounterLevelMapping UpdateCounterLevelMappingRequestType - -func init() { - t["UpdateCounterLevelMapping"] = reflect.TypeOf((*UpdateCounterLevelMapping)(nil)).Elem() -} - -type UpdateCounterLevelMappingRequestType struct { - This ManagedObjectReference `xml:"_this"` - CounterLevelMap []PerformanceManagerCounterLevelMapping `xml:"counterLevelMap"` -} - -func init() { - t["UpdateCounterLevelMappingRequestType"] = reflect.TypeOf((*UpdateCounterLevelMappingRequestType)(nil)).Elem() -} - -type UpdateCounterLevelMappingResponse struct { -} - -type UpdateDVSHealthCheckConfigRequestType struct { - This ManagedObjectReference `xml:"_this"` - HealthCheckConfig []BaseDVSHealthCheckConfig `xml:"healthCheckConfig,typeattr"` -} - -func init() { - t["UpdateDVSHealthCheckConfigRequestType"] = reflect.TypeOf((*UpdateDVSHealthCheckConfigRequestType)(nil)).Elem() -} - -type UpdateDVSHealthCheckConfig_Task UpdateDVSHealthCheckConfigRequestType - -func init() { - t["UpdateDVSHealthCheckConfig_Task"] = reflect.TypeOf((*UpdateDVSHealthCheckConfig_Task)(nil)).Elem() -} - -type UpdateDVSHealthCheckConfig_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type UpdateDVSLacpGroupConfigRequestType struct { - This ManagedObjectReference `xml:"_this"` - LacpGroupSpec []VMwareDvsLacpGroupSpec `xml:"lacpGroupSpec"` -} - -func init() { - t["UpdateDVSLacpGroupConfigRequestType"] = reflect.TypeOf((*UpdateDVSLacpGroupConfigRequestType)(nil)).Elem() -} - -type UpdateDVSLacpGroupConfig_Task UpdateDVSLacpGroupConfigRequestType - -func init() { - t["UpdateDVSLacpGroupConfig_Task"] = reflect.TypeOf((*UpdateDVSLacpGroupConfig_Task)(nil)).Elem() -} - -type UpdateDVSLacpGroupConfig_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type UpdateDateTime UpdateDateTimeRequestType - -func init() { - t["UpdateDateTime"] = reflect.TypeOf((*UpdateDateTime)(nil)).Elem() -} - -type UpdateDateTimeConfig UpdateDateTimeConfigRequestType - -func init() { - t["UpdateDateTimeConfig"] = reflect.TypeOf((*UpdateDateTimeConfig)(nil)).Elem() -} - -type UpdateDateTimeConfigRequestType struct { - This ManagedObjectReference `xml:"_this"` - Config HostDateTimeConfig `xml:"config"` -} - -func init() { - t["UpdateDateTimeConfigRequestType"] = reflect.TypeOf((*UpdateDateTimeConfigRequestType)(nil)).Elem() -} - -type UpdateDateTimeConfigResponse struct { -} - -type UpdateDateTimeRequestType struct { - This ManagedObjectReference `xml:"_this"` - DateTime time.Time `xml:"dateTime"` -} - -func init() { - t["UpdateDateTimeRequestType"] = reflect.TypeOf((*UpdateDateTimeRequestType)(nil)).Elem() -} - -type UpdateDateTimeResponse struct { -} - -type UpdateDefaultPolicy UpdateDefaultPolicyRequestType - -func init() { - t["UpdateDefaultPolicy"] = reflect.TypeOf((*UpdateDefaultPolicy)(nil)).Elem() -} - -type UpdateDefaultPolicyRequestType struct { - This ManagedObjectReference `xml:"_this"` - DefaultPolicy HostFirewallDefaultPolicy `xml:"defaultPolicy"` -} - -func init() { - t["UpdateDefaultPolicyRequestType"] = reflect.TypeOf((*UpdateDefaultPolicyRequestType)(nil)).Elem() -} - -type UpdateDefaultPolicyResponse struct { -} - -type UpdateDiskPartitions UpdateDiskPartitionsRequestType - -func init() { - t["UpdateDiskPartitions"] = reflect.TypeOf((*UpdateDiskPartitions)(nil)).Elem() -} - -type UpdateDiskPartitionsRequestType struct { - This ManagedObjectReference `xml:"_this"` - DevicePath string `xml:"devicePath"` - Spec HostDiskPartitionSpec `xml:"spec"` -} - -func init() { - t["UpdateDiskPartitionsRequestType"] = reflect.TypeOf((*UpdateDiskPartitionsRequestType)(nil)).Elem() -} - -type UpdateDiskPartitionsResponse struct { -} - -type UpdateDnsConfig UpdateDnsConfigRequestType - -func init() { - t["UpdateDnsConfig"] = reflect.TypeOf((*UpdateDnsConfig)(nil)).Elem() -} - -type UpdateDnsConfigRequestType struct { - This ManagedObjectReference `xml:"_this"` - Config BaseHostDnsConfig `xml:"config,typeattr"` -} - -func init() { - t["UpdateDnsConfigRequestType"] = reflect.TypeOf((*UpdateDnsConfigRequestType)(nil)).Elem() -} - -type UpdateDnsConfigResponse struct { -} - -type UpdateDvsCapability UpdateDvsCapabilityRequestType - -func init() { - t["UpdateDvsCapability"] = reflect.TypeOf((*UpdateDvsCapability)(nil)).Elem() -} - -type UpdateDvsCapabilityRequestType struct { - This ManagedObjectReference `xml:"_this"` - Capability DVSCapability `xml:"capability"` -} - -func init() { - t["UpdateDvsCapabilityRequestType"] = reflect.TypeOf((*UpdateDvsCapabilityRequestType)(nil)).Elem() -} - -type UpdateDvsCapabilityResponse struct { -} - -type UpdateExtension UpdateExtensionRequestType - -func init() { - t["UpdateExtension"] = reflect.TypeOf((*UpdateExtension)(nil)).Elem() -} - -type UpdateExtensionRequestType struct { - This ManagedObjectReference `xml:"_this"` - Extension Extension `xml:"extension"` -} - -func init() { - t["UpdateExtensionRequestType"] = reflect.TypeOf((*UpdateExtensionRequestType)(nil)).Elem() -} - -type UpdateExtensionResponse struct { -} - -type UpdateFlags UpdateFlagsRequestType - -func init() { - t["UpdateFlags"] = reflect.TypeOf((*UpdateFlags)(nil)).Elem() -} - -type UpdateFlagsRequestType struct { - This ManagedObjectReference `xml:"_this"` - FlagInfo HostFlagInfo `xml:"flagInfo"` -} - -func init() { - t["UpdateFlagsRequestType"] = reflect.TypeOf((*UpdateFlagsRequestType)(nil)).Elem() -} - -type UpdateFlagsResponse struct { -} - -type UpdateHostImageAcceptanceLevel UpdateHostImageAcceptanceLevelRequestType - -func init() { - t["UpdateHostImageAcceptanceLevel"] = reflect.TypeOf((*UpdateHostImageAcceptanceLevel)(nil)).Elem() -} - -type UpdateHostImageAcceptanceLevelRequestType struct { - This ManagedObjectReference `xml:"_this"` - NewAcceptanceLevel string `xml:"newAcceptanceLevel"` -} - -func init() { - t["UpdateHostImageAcceptanceLevelRequestType"] = reflect.TypeOf((*UpdateHostImageAcceptanceLevelRequestType)(nil)).Elem() -} - -type UpdateHostImageAcceptanceLevelResponse struct { -} - -type UpdateHostProfile UpdateHostProfileRequestType - -func init() { - t["UpdateHostProfile"] = reflect.TypeOf((*UpdateHostProfile)(nil)).Elem() -} - -type UpdateHostProfileRequestType struct { - This ManagedObjectReference `xml:"_this"` - Config BaseHostProfileConfigSpec `xml:"config,typeattr"` -} - -func init() { - t["UpdateHostProfileRequestType"] = reflect.TypeOf((*UpdateHostProfileRequestType)(nil)).Elem() -} - -type UpdateHostProfileResponse struct { -} - -type UpdateInternetScsiAdvancedOptions UpdateInternetScsiAdvancedOptionsRequestType - -func init() { - t["UpdateInternetScsiAdvancedOptions"] = reflect.TypeOf((*UpdateInternetScsiAdvancedOptions)(nil)).Elem() -} - -type UpdateInternetScsiAdvancedOptionsRequestType struct { - This ManagedObjectReference `xml:"_this"` - IScsiHbaDevice string `xml:"iScsiHbaDevice"` - TargetSet *HostInternetScsiHbaTargetSet `xml:"targetSet,omitempty"` - Options []HostInternetScsiHbaParamValue `xml:"options"` -} - -func init() { - t["UpdateInternetScsiAdvancedOptionsRequestType"] = reflect.TypeOf((*UpdateInternetScsiAdvancedOptionsRequestType)(nil)).Elem() -} - -type UpdateInternetScsiAdvancedOptionsResponse struct { -} - -type UpdateInternetScsiAlias UpdateInternetScsiAliasRequestType - -func init() { - t["UpdateInternetScsiAlias"] = reflect.TypeOf((*UpdateInternetScsiAlias)(nil)).Elem() -} - -type UpdateInternetScsiAliasRequestType struct { - This ManagedObjectReference `xml:"_this"` - IScsiHbaDevice string `xml:"iScsiHbaDevice"` - IScsiAlias string `xml:"iScsiAlias"` -} - -func init() { - t["UpdateInternetScsiAliasRequestType"] = reflect.TypeOf((*UpdateInternetScsiAliasRequestType)(nil)).Elem() -} - -type UpdateInternetScsiAliasResponse struct { -} - -type UpdateInternetScsiAuthenticationProperties UpdateInternetScsiAuthenticationPropertiesRequestType - -func init() { - t["UpdateInternetScsiAuthenticationProperties"] = reflect.TypeOf((*UpdateInternetScsiAuthenticationProperties)(nil)).Elem() -} - -type UpdateInternetScsiAuthenticationPropertiesRequestType struct { - This ManagedObjectReference `xml:"_this"` - IScsiHbaDevice string `xml:"iScsiHbaDevice"` - AuthenticationProperties HostInternetScsiHbaAuthenticationProperties `xml:"authenticationProperties"` - TargetSet *HostInternetScsiHbaTargetSet `xml:"targetSet,omitempty"` -} - -func init() { - t["UpdateInternetScsiAuthenticationPropertiesRequestType"] = reflect.TypeOf((*UpdateInternetScsiAuthenticationPropertiesRequestType)(nil)).Elem() -} - -type UpdateInternetScsiAuthenticationPropertiesResponse struct { -} - -type UpdateInternetScsiDigestProperties UpdateInternetScsiDigestPropertiesRequestType - -func init() { - t["UpdateInternetScsiDigestProperties"] = reflect.TypeOf((*UpdateInternetScsiDigestProperties)(nil)).Elem() -} - -type UpdateInternetScsiDigestPropertiesRequestType struct { - This ManagedObjectReference `xml:"_this"` - IScsiHbaDevice string `xml:"iScsiHbaDevice"` - TargetSet *HostInternetScsiHbaTargetSet `xml:"targetSet,omitempty"` - DigestProperties HostInternetScsiHbaDigestProperties `xml:"digestProperties"` -} - -func init() { - t["UpdateInternetScsiDigestPropertiesRequestType"] = reflect.TypeOf((*UpdateInternetScsiDigestPropertiesRequestType)(nil)).Elem() -} - -type UpdateInternetScsiDigestPropertiesResponse struct { -} - -type UpdateInternetScsiDiscoveryProperties UpdateInternetScsiDiscoveryPropertiesRequestType - -func init() { - t["UpdateInternetScsiDiscoveryProperties"] = reflect.TypeOf((*UpdateInternetScsiDiscoveryProperties)(nil)).Elem() -} - -type UpdateInternetScsiDiscoveryPropertiesRequestType struct { - This ManagedObjectReference `xml:"_this"` - IScsiHbaDevice string `xml:"iScsiHbaDevice"` - DiscoveryProperties HostInternetScsiHbaDiscoveryProperties `xml:"discoveryProperties"` -} - -func init() { - t["UpdateInternetScsiDiscoveryPropertiesRequestType"] = reflect.TypeOf((*UpdateInternetScsiDiscoveryPropertiesRequestType)(nil)).Elem() -} - -type UpdateInternetScsiDiscoveryPropertiesResponse struct { -} - -type UpdateInternetScsiIPProperties UpdateInternetScsiIPPropertiesRequestType - -func init() { - t["UpdateInternetScsiIPProperties"] = reflect.TypeOf((*UpdateInternetScsiIPProperties)(nil)).Elem() -} - -type UpdateInternetScsiIPPropertiesRequestType struct { - This ManagedObjectReference `xml:"_this"` - IScsiHbaDevice string `xml:"iScsiHbaDevice"` - IpProperties HostInternetScsiHbaIPProperties `xml:"ipProperties"` -} - -func init() { - t["UpdateInternetScsiIPPropertiesRequestType"] = reflect.TypeOf((*UpdateInternetScsiIPPropertiesRequestType)(nil)).Elem() -} - -type UpdateInternetScsiIPPropertiesResponse struct { -} - -type UpdateInternetScsiName UpdateInternetScsiNameRequestType - -func init() { - t["UpdateInternetScsiName"] = reflect.TypeOf((*UpdateInternetScsiName)(nil)).Elem() -} - -type UpdateInternetScsiNameRequestType struct { - This ManagedObjectReference `xml:"_this"` - IScsiHbaDevice string `xml:"iScsiHbaDevice"` - IScsiName string `xml:"iScsiName"` -} - -func init() { - t["UpdateInternetScsiNameRequestType"] = reflect.TypeOf((*UpdateInternetScsiNameRequestType)(nil)).Elem() -} - -type UpdateInternetScsiNameResponse struct { -} - -type UpdateIpConfig UpdateIpConfigRequestType - -func init() { - t["UpdateIpConfig"] = reflect.TypeOf((*UpdateIpConfig)(nil)).Elem() -} - -type UpdateIpConfigRequestType struct { - This ManagedObjectReference `xml:"_this"` - IpConfig HostIpConfig `xml:"ipConfig"` -} - -func init() { - t["UpdateIpConfigRequestType"] = reflect.TypeOf((*UpdateIpConfigRequestType)(nil)).Elem() -} - -type UpdateIpConfigResponse struct { -} - -type UpdateIpPool UpdateIpPoolRequestType - -func init() { - t["UpdateIpPool"] = reflect.TypeOf((*UpdateIpPool)(nil)).Elem() -} - -type UpdateIpPoolRequestType struct { - This ManagedObjectReference `xml:"_this"` - Dc ManagedObjectReference `xml:"dc"` - Pool IpPool `xml:"pool"` -} - -func init() { - t["UpdateIpPoolRequestType"] = reflect.TypeOf((*UpdateIpPoolRequestType)(nil)).Elem() -} - -type UpdateIpPoolResponse struct { -} - -type UpdateIpRouteConfig UpdateIpRouteConfigRequestType - -func init() { - t["UpdateIpRouteConfig"] = reflect.TypeOf((*UpdateIpRouteConfig)(nil)).Elem() -} - -type UpdateIpRouteConfigRequestType struct { - This ManagedObjectReference `xml:"_this"` - Config BaseHostIpRouteConfig `xml:"config,typeattr"` -} - -func init() { - t["UpdateIpRouteConfigRequestType"] = reflect.TypeOf((*UpdateIpRouteConfigRequestType)(nil)).Elem() -} - -type UpdateIpRouteConfigResponse struct { -} - -type UpdateIpRouteTableConfig UpdateIpRouteTableConfigRequestType - -func init() { - t["UpdateIpRouteTableConfig"] = reflect.TypeOf((*UpdateIpRouteTableConfig)(nil)).Elem() -} - -type UpdateIpRouteTableConfigRequestType struct { - This ManagedObjectReference `xml:"_this"` - Config HostIpRouteTableConfig `xml:"config"` -} - -func init() { - t["UpdateIpRouteTableConfigRequestType"] = reflect.TypeOf((*UpdateIpRouteTableConfigRequestType)(nil)).Elem() -} - -type UpdateIpRouteTableConfigResponse struct { -} - -type UpdateIpmi UpdateIpmiRequestType - -func init() { - t["UpdateIpmi"] = reflect.TypeOf((*UpdateIpmi)(nil)).Elem() -} - -type UpdateIpmiRequestType struct { - This ManagedObjectReference `xml:"_this"` - IpmiInfo HostIpmiInfo `xml:"ipmiInfo"` -} - -func init() { - t["UpdateIpmiRequestType"] = reflect.TypeOf((*UpdateIpmiRequestType)(nil)).Elem() -} - -type UpdateIpmiResponse struct { -} - -type UpdateLicense UpdateLicenseRequestType - -func init() { - t["UpdateLicense"] = reflect.TypeOf((*UpdateLicense)(nil)).Elem() -} - -type UpdateLicenseLabel UpdateLicenseLabelRequestType - -func init() { - t["UpdateLicenseLabel"] = reflect.TypeOf((*UpdateLicenseLabel)(nil)).Elem() -} - -type UpdateLicenseLabelRequestType struct { - This ManagedObjectReference `xml:"_this"` - LicenseKey string `xml:"licenseKey"` - LabelKey string `xml:"labelKey"` - LabelValue string `xml:"labelValue"` -} - -func init() { - t["UpdateLicenseLabelRequestType"] = reflect.TypeOf((*UpdateLicenseLabelRequestType)(nil)).Elem() -} - -type UpdateLicenseLabelResponse struct { -} - -type UpdateLicenseRequestType struct { - This ManagedObjectReference `xml:"_this"` - LicenseKey string `xml:"licenseKey"` - Labels []KeyValue `xml:"labels,omitempty"` -} - -func init() { - t["UpdateLicenseRequestType"] = reflect.TypeOf((*UpdateLicenseRequestType)(nil)).Elem() -} - -type UpdateLicenseResponse struct { - Returnval LicenseManagerLicenseInfo `xml:"returnval"` -} - -type UpdateLinkedChildren UpdateLinkedChildrenRequestType - -func init() { - t["UpdateLinkedChildren"] = reflect.TypeOf((*UpdateLinkedChildren)(nil)).Elem() -} - -type UpdateLinkedChildrenRequestType struct { - This ManagedObjectReference `xml:"_this"` - AddChangeSet []VirtualAppLinkInfo `xml:"addChangeSet,omitempty"` - RemoveSet []ManagedObjectReference `xml:"removeSet,omitempty"` -} - -func init() { - t["UpdateLinkedChildrenRequestType"] = reflect.TypeOf((*UpdateLinkedChildrenRequestType)(nil)).Elem() -} - -type UpdateLinkedChildrenResponse struct { -} - -type UpdateLocalSwapDatastore UpdateLocalSwapDatastoreRequestType - -func init() { - t["UpdateLocalSwapDatastore"] = reflect.TypeOf((*UpdateLocalSwapDatastore)(nil)).Elem() -} - -type UpdateLocalSwapDatastoreRequestType struct { - This ManagedObjectReference `xml:"_this"` - Datastore *ManagedObjectReference `xml:"datastore,omitempty"` -} - -func init() { - t["UpdateLocalSwapDatastoreRequestType"] = reflect.TypeOf((*UpdateLocalSwapDatastoreRequestType)(nil)).Elem() -} - -type UpdateLocalSwapDatastoreResponse struct { -} - -type UpdateLockdownExceptions UpdateLockdownExceptionsRequestType - -func init() { - t["UpdateLockdownExceptions"] = reflect.TypeOf((*UpdateLockdownExceptions)(nil)).Elem() -} - -type UpdateLockdownExceptionsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Users []string `xml:"users,omitempty"` -} - -func init() { - t["UpdateLockdownExceptionsRequestType"] = reflect.TypeOf((*UpdateLockdownExceptionsRequestType)(nil)).Elem() -} - -type UpdateLockdownExceptionsResponse struct { -} - -type UpdateModuleOptionString UpdateModuleOptionStringRequestType - -func init() { - t["UpdateModuleOptionString"] = reflect.TypeOf((*UpdateModuleOptionString)(nil)).Elem() -} - -type UpdateModuleOptionStringRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` - Options string `xml:"options"` -} - -func init() { - t["UpdateModuleOptionStringRequestType"] = reflect.TypeOf((*UpdateModuleOptionStringRequestType)(nil)).Elem() -} - -type UpdateModuleOptionStringResponse struct { -} - -type UpdateNetworkConfig UpdateNetworkConfigRequestType - -func init() { - t["UpdateNetworkConfig"] = reflect.TypeOf((*UpdateNetworkConfig)(nil)).Elem() -} - -type UpdateNetworkConfigRequestType struct { - This ManagedObjectReference `xml:"_this"` - Config HostNetworkConfig `xml:"config"` - ChangeMode string `xml:"changeMode"` -} - -func init() { - t["UpdateNetworkConfigRequestType"] = reflect.TypeOf((*UpdateNetworkConfigRequestType)(nil)).Elem() -} - -type UpdateNetworkConfigResponse struct { - Returnval HostNetworkConfigResult `xml:"returnval"` -} - -type UpdateNetworkResourcePool UpdateNetworkResourcePoolRequestType - -func init() { - t["UpdateNetworkResourcePool"] = reflect.TypeOf((*UpdateNetworkResourcePool)(nil)).Elem() -} - -type UpdateNetworkResourcePoolRequestType struct { - This ManagedObjectReference `xml:"_this"` - ConfigSpec []DVSNetworkResourcePoolConfigSpec `xml:"configSpec"` -} - -func init() { - t["UpdateNetworkResourcePoolRequestType"] = reflect.TypeOf((*UpdateNetworkResourcePoolRequestType)(nil)).Elem() -} - -type UpdateNetworkResourcePoolResponse struct { -} - -type UpdateOptions UpdateOptionsRequestType - -func init() { - t["UpdateOptions"] = reflect.TypeOf((*UpdateOptions)(nil)).Elem() -} - -type UpdateOptionsRequestType struct { - This ManagedObjectReference `xml:"_this"` - ChangedValue []BaseOptionValue `xml:"changedValue,typeattr"` -} - -func init() { - t["UpdateOptionsRequestType"] = reflect.TypeOf((*UpdateOptionsRequestType)(nil)).Elem() -} - -type UpdateOptionsResponse struct { -} - -type UpdatePassthruConfig UpdatePassthruConfigRequestType - -func init() { - t["UpdatePassthruConfig"] = reflect.TypeOf((*UpdatePassthruConfig)(nil)).Elem() -} - -type UpdatePassthruConfigRequestType struct { - This ManagedObjectReference `xml:"_this"` - Config []BaseHostPciPassthruConfig `xml:"config,typeattr"` -} - -func init() { - t["UpdatePassthruConfigRequestType"] = reflect.TypeOf((*UpdatePassthruConfigRequestType)(nil)).Elem() -} - -type UpdatePassthruConfigResponse struct { -} - -type UpdatePerfInterval UpdatePerfIntervalRequestType - -func init() { - t["UpdatePerfInterval"] = reflect.TypeOf((*UpdatePerfInterval)(nil)).Elem() -} - -type UpdatePerfIntervalRequestType struct { - This ManagedObjectReference `xml:"_this"` - Interval PerfInterval `xml:"interval"` -} - -func init() { - t["UpdatePerfIntervalRequestType"] = reflect.TypeOf((*UpdatePerfIntervalRequestType)(nil)).Elem() -} - -type UpdatePerfIntervalResponse struct { -} - -type UpdatePhysicalNicLinkSpeed UpdatePhysicalNicLinkSpeedRequestType - -func init() { - t["UpdatePhysicalNicLinkSpeed"] = reflect.TypeOf((*UpdatePhysicalNicLinkSpeed)(nil)).Elem() -} - -type UpdatePhysicalNicLinkSpeedRequestType struct { - This ManagedObjectReference `xml:"_this"` - Device string `xml:"device"` - LinkSpeed *PhysicalNicLinkInfo `xml:"linkSpeed,omitempty"` -} - -func init() { - t["UpdatePhysicalNicLinkSpeedRequestType"] = reflect.TypeOf((*UpdatePhysicalNicLinkSpeedRequestType)(nil)).Elem() -} - -type UpdatePhysicalNicLinkSpeedResponse struct { -} - -type UpdatePortGroup UpdatePortGroupRequestType - -func init() { - t["UpdatePortGroup"] = reflect.TypeOf((*UpdatePortGroup)(nil)).Elem() -} - -type UpdatePortGroupRequestType struct { - This ManagedObjectReference `xml:"_this"` - PgName string `xml:"pgName"` - Portgrp HostPortGroupSpec `xml:"portgrp"` -} - -func init() { - t["UpdatePortGroupRequestType"] = reflect.TypeOf((*UpdatePortGroupRequestType)(nil)).Elem() -} - -type UpdatePortGroupResponse struct { -} - -type UpdateProgress UpdateProgressRequestType - -func init() { - t["UpdateProgress"] = reflect.TypeOf((*UpdateProgress)(nil)).Elem() -} - -type UpdateProgressRequestType struct { - This ManagedObjectReference `xml:"_this"` - PercentDone int32 `xml:"percentDone"` -} - -func init() { - t["UpdateProgressRequestType"] = reflect.TypeOf((*UpdateProgressRequestType)(nil)).Elem() -} - -type UpdateProgressResponse struct { -} - -type UpdateReferenceHost UpdateReferenceHostRequestType - -func init() { - t["UpdateReferenceHost"] = reflect.TypeOf((*UpdateReferenceHost)(nil)).Elem() -} - -type UpdateReferenceHostRequestType struct { - This ManagedObjectReference `xml:"_this"` - Host *ManagedObjectReference `xml:"host,omitempty"` -} - -func init() { - t["UpdateReferenceHostRequestType"] = reflect.TypeOf((*UpdateReferenceHostRequestType)(nil)).Elem() -} - -type UpdateReferenceHostResponse struct { -} - -type UpdateRuleset UpdateRulesetRequestType - -func init() { - t["UpdateRuleset"] = reflect.TypeOf((*UpdateRuleset)(nil)).Elem() -} - -type UpdateRulesetRequestType struct { - This ManagedObjectReference `xml:"_this"` - Id string `xml:"id"` - Spec HostFirewallRulesetRulesetSpec `xml:"spec"` -} - -func init() { - t["UpdateRulesetRequestType"] = reflect.TypeOf((*UpdateRulesetRequestType)(nil)).Elem() -} - -type UpdateRulesetResponse struct { -} - -type UpdateScsiLunDisplayName UpdateScsiLunDisplayNameRequestType - -func init() { - t["UpdateScsiLunDisplayName"] = reflect.TypeOf((*UpdateScsiLunDisplayName)(nil)).Elem() -} - -type UpdateScsiLunDisplayNameRequestType struct { - This ManagedObjectReference `xml:"_this"` - LunUuid string `xml:"lunUuid"` - DisplayName string `xml:"displayName"` -} - -func init() { - t["UpdateScsiLunDisplayNameRequestType"] = reflect.TypeOf((*UpdateScsiLunDisplayNameRequestType)(nil)).Elem() -} - -type UpdateScsiLunDisplayNameResponse struct { -} - -type UpdateServiceConsoleVirtualNic UpdateServiceConsoleVirtualNicRequestType - -func init() { - t["UpdateServiceConsoleVirtualNic"] = reflect.TypeOf((*UpdateServiceConsoleVirtualNic)(nil)).Elem() -} - -type UpdateServiceConsoleVirtualNicRequestType struct { - This ManagedObjectReference `xml:"_this"` - Device string `xml:"device"` - Nic HostVirtualNicSpec `xml:"nic"` -} - -func init() { - t["UpdateServiceConsoleVirtualNicRequestType"] = reflect.TypeOf((*UpdateServiceConsoleVirtualNicRequestType)(nil)).Elem() -} - -type UpdateServiceConsoleVirtualNicResponse struct { -} - -type UpdateServiceMessage UpdateServiceMessageRequestType - -func init() { - t["UpdateServiceMessage"] = reflect.TypeOf((*UpdateServiceMessage)(nil)).Elem() -} - -type UpdateServiceMessageRequestType struct { - This ManagedObjectReference `xml:"_this"` - Message string `xml:"message"` -} - -func init() { - t["UpdateServiceMessageRequestType"] = reflect.TypeOf((*UpdateServiceMessageRequestType)(nil)).Elem() -} - -type UpdateServiceMessageResponse struct { -} - -type UpdateServicePolicy UpdateServicePolicyRequestType - -func init() { - t["UpdateServicePolicy"] = reflect.TypeOf((*UpdateServicePolicy)(nil)).Elem() -} - -type UpdateServicePolicyRequestType struct { - This ManagedObjectReference `xml:"_this"` - Id string `xml:"id"` - Policy string `xml:"policy"` -} - -func init() { - t["UpdateServicePolicyRequestType"] = reflect.TypeOf((*UpdateServicePolicyRequestType)(nil)).Elem() -} - -type UpdateServicePolicyResponse struct { -} - -type UpdateSet struct { - DynamicData - - Version string `xml:"version"` - FilterSet []PropertyFilterUpdate `xml:"filterSet,omitempty"` - Truncated *bool `xml:"truncated"` -} - -func init() { - t["UpdateSet"] = reflect.TypeOf((*UpdateSet)(nil)).Elem() -} - -type UpdateSoftwareInternetScsiEnabled UpdateSoftwareInternetScsiEnabledRequestType - -func init() { - t["UpdateSoftwareInternetScsiEnabled"] = reflect.TypeOf((*UpdateSoftwareInternetScsiEnabled)(nil)).Elem() -} - -type UpdateSoftwareInternetScsiEnabledRequestType struct { - This ManagedObjectReference `xml:"_this"` - Enabled bool `xml:"enabled"` -} - -func init() { - t["UpdateSoftwareInternetScsiEnabledRequestType"] = reflect.TypeOf((*UpdateSoftwareInternetScsiEnabledRequestType)(nil)).Elem() -} - -type UpdateSoftwareInternetScsiEnabledResponse struct { -} - -type UpdateSystemResources UpdateSystemResourcesRequestType - -func init() { - t["UpdateSystemResources"] = reflect.TypeOf((*UpdateSystemResources)(nil)).Elem() -} - -type UpdateSystemResourcesRequestType struct { - This ManagedObjectReference `xml:"_this"` - ResourceInfo HostSystemResourceInfo `xml:"resourceInfo"` -} - -func init() { - t["UpdateSystemResourcesRequestType"] = reflect.TypeOf((*UpdateSystemResourcesRequestType)(nil)).Elem() -} - -type UpdateSystemResourcesResponse struct { -} - -type UpdateSystemSwapConfiguration UpdateSystemSwapConfigurationRequestType - -func init() { - t["UpdateSystemSwapConfiguration"] = reflect.TypeOf((*UpdateSystemSwapConfiguration)(nil)).Elem() -} - -type UpdateSystemSwapConfigurationRequestType struct { - This ManagedObjectReference `xml:"_this"` - SysSwapConfig HostSystemSwapConfiguration `xml:"sysSwapConfig"` -} - -func init() { - t["UpdateSystemSwapConfigurationRequestType"] = reflect.TypeOf((*UpdateSystemSwapConfigurationRequestType)(nil)).Elem() -} - -type UpdateSystemSwapConfigurationResponse struct { -} - -type UpdateSystemUsers UpdateSystemUsersRequestType - -func init() { - t["UpdateSystemUsers"] = reflect.TypeOf((*UpdateSystemUsers)(nil)).Elem() -} - -type UpdateSystemUsersRequestType struct { - This ManagedObjectReference `xml:"_this"` - Users []string `xml:"users,omitempty"` -} - -func init() { - t["UpdateSystemUsersRequestType"] = reflect.TypeOf((*UpdateSystemUsersRequestType)(nil)).Elem() -} - -type UpdateSystemUsersResponse struct { -} - -type UpdateUser UpdateUserRequestType - -func init() { - t["UpdateUser"] = reflect.TypeOf((*UpdateUser)(nil)).Elem() -} - -type UpdateUserRequestType struct { - This ManagedObjectReference `xml:"_this"` - User BaseHostAccountSpec `xml:"user,typeattr"` -} - -func init() { - t["UpdateUserRequestType"] = reflect.TypeOf((*UpdateUserRequestType)(nil)).Elem() -} - -type UpdateUserResponse struct { -} - -type UpdateVAppConfig UpdateVAppConfigRequestType - -func init() { - t["UpdateVAppConfig"] = reflect.TypeOf((*UpdateVAppConfig)(nil)).Elem() -} - -type UpdateVAppConfigRequestType struct { - This ManagedObjectReference `xml:"_this"` - Spec VAppConfigSpec `xml:"spec"` -} - -func init() { - t["UpdateVAppConfigRequestType"] = reflect.TypeOf((*UpdateVAppConfigRequestType)(nil)).Elem() -} - -type UpdateVAppConfigResponse struct { -} - -type UpdateVirtualMachineFilesRequestType struct { - This ManagedObjectReference `xml:"_this"` - MountPathDatastoreMapping []DatastoreMountPathDatastorePair `xml:"mountPathDatastoreMapping"` -} - -func init() { - t["UpdateVirtualMachineFilesRequestType"] = reflect.TypeOf((*UpdateVirtualMachineFilesRequestType)(nil)).Elem() -} - -type UpdateVirtualMachineFilesResult struct { - DynamicData - - FailedVmFile []UpdateVirtualMachineFilesResultFailedVmFileInfo `xml:"failedVmFile,omitempty"` -} - -func init() { - t["UpdateVirtualMachineFilesResult"] = reflect.TypeOf((*UpdateVirtualMachineFilesResult)(nil)).Elem() -} - -type UpdateVirtualMachineFilesResultFailedVmFileInfo struct { - DynamicData - - VmFile string `xml:"vmFile"` - Fault LocalizedMethodFault `xml:"fault"` -} - -func init() { - t["UpdateVirtualMachineFilesResultFailedVmFileInfo"] = reflect.TypeOf((*UpdateVirtualMachineFilesResultFailedVmFileInfo)(nil)).Elem() -} - -type UpdateVirtualMachineFiles_Task UpdateVirtualMachineFilesRequestType - -func init() { - t["UpdateVirtualMachineFiles_Task"] = reflect.TypeOf((*UpdateVirtualMachineFiles_Task)(nil)).Elem() -} - -type UpdateVirtualMachineFiles_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type UpdateVirtualNic UpdateVirtualNicRequestType - -func init() { - t["UpdateVirtualNic"] = reflect.TypeOf((*UpdateVirtualNic)(nil)).Elem() -} - -type UpdateVirtualNicRequestType struct { - This ManagedObjectReference `xml:"_this"` - Device string `xml:"device"` - Nic HostVirtualNicSpec `xml:"nic"` -} - -func init() { - t["UpdateVirtualNicRequestType"] = reflect.TypeOf((*UpdateVirtualNicRequestType)(nil)).Elem() -} - -type UpdateVirtualNicResponse struct { -} - -type UpdateVirtualSwitch UpdateVirtualSwitchRequestType - -func init() { - t["UpdateVirtualSwitch"] = reflect.TypeOf((*UpdateVirtualSwitch)(nil)).Elem() -} - -type UpdateVirtualSwitchRequestType struct { - This ManagedObjectReference `xml:"_this"` - VswitchName string `xml:"vswitchName"` - Spec HostVirtualSwitchSpec `xml:"spec"` -} - -func init() { - t["UpdateVirtualSwitchRequestType"] = reflect.TypeOf((*UpdateVirtualSwitchRequestType)(nil)).Elem() -} - -type UpdateVirtualSwitchResponse struct { -} - -type UpdateVsanRequestType struct { - This ManagedObjectReference `xml:"_this"` - Config VsanHostConfigInfo `xml:"config"` -} - -func init() { - t["UpdateVsanRequestType"] = reflect.TypeOf((*UpdateVsanRequestType)(nil)).Elem() -} - -type UpdateVsan_Task UpdateVsanRequestType - -func init() { - t["UpdateVsan_Task"] = reflect.TypeOf((*UpdateVsan_Task)(nil)).Elem() -} - -type UpdateVsan_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type UpdatedAgentBeingRestartedEvent struct { - HostEvent -} - -func init() { - t["UpdatedAgentBeingRestartedEvent"] = reflect.TypeOf((*UpdatedAgentBeingRestartedEvent)(nil)).Elem() -} - -type UpgradeEvent struct { - Event - - Message string `xml:"message"` -} - -func init() { - t["UpgradeEvent"] = reflect.TypeOf((*UpgradeEvent)(nil)).Elem() -} - -type UpgradeIoFilterRequestType struct { - This ManagedObjectReference `xml:"_this"` - FilterId string `xml:"filterId"` - CompRes ManagedObjectReference `xml:"compRes"` - VibUrl string `xml:"vibUrl"` -} - -func init() { - t["UpgradeIoFilterRequestType"] = reflect.TypeOf((*UpgradeIoFilterRequestType)(nil)).Elem() -} - -type UpgradeIoFilter_Task UpgradeIoFilterRequestType - -func init() { - t["UpgradeIoFilter_Task"] = reflect.TypeOf((*UpgradeIoFilter_Task)(nil)).Elem() -} - -type UpgradeIoFilter_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type UpgradeToolsRequestType struct { - This ManagedObjectReference `xml:"_this"` - InstallerOptions string `xml:"installerOptions,omitempty"` -} - -func init() { - t["UpgradeToolsRequestType"] = reflect.TypeOf((*UpgradeToolsRequestType)(nil)).Elem() -} - -type UpgradeTools_Task UpgradeToolsRequestType - -func init() { - t["UpgradeTools_Task"] = reflect.TypeOf((*UpgradeTools_Task)(nil)).Elem() -} - -type UpgradeTools_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type UpgradeVMRequestType struct { - This ManagedObjectReference `xml:"_this"` - Version string `xml:"version,omitempty"` -} - -func init() { - t["UpgradeVMRequestType"] = reflect.TypeOf((*UpgradeVMRequestType)(nil)).Elem() -} - -type UpgradeVM_Task UpgradeVMRequestType - -func init() { - t["UpgradeVM_Task"] = reflect.TypeOf((*UpgradeVM_Task)(nil)).Elem() -} - -type UpgradeVM_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} - -type UpgradeVmLayout UpgradeVmLayoutRequestType - -func init() { - t["UpgradeVmLayout"] = reflect.TypeOf((*UpgradeVmLayout)(nil)).Elem() -} - -type UpgradeVmLayoutRequestType struct { - This ManagedObjectReference `xml:"_this"` -} - -func init() { - t["UpgradeVmLayoutRequestType"] = reflect.TypeOf((*UpgradeVmLayoutRequestType)(nil)).Elem() -} - -type UpgradeVmLayoutResponse struct { -} - -type UpgradeVmfs UpgradeVmfsRequestType - -func init() { - t["UpgradeVmfs"] = reflect.TypeOf((*UpgradeVmfs)(nil)).Elem() -} - -type UpgradeVmfsRequestType struct { - This ManagedObjectReference `xml:"_this"` - VmfsPath string `xml:"vmfsPath"` -} - -func init() { - t["UpgradeVmfsRequestType"] = reflect.TypeOf((*UpgradeVmfsRequestType)(nil)).Elem() -} - -type UpgradeVmfsResponse struct { -} - -type UpgradeVsanObjects UpgradeVsanObjectsRequestType - -func init() { - t["UpgradeVsanObjects"] = reflect.TypeOf((*UpgradeVsanObjects)(nil)).Elem() -} - -type UpgradeVsanObjectsRequestType struct { - This ManagedObjectReference `xml:"_this"` - Uuids []string `xml:"uuids"` - NewVersion int32 `xml:"newVersion"` -} - -func init() { - t["UpgradeVsanObjectsRequestType"] = reflect.TypeOf((*UpgradeVsanObjectsRequestType)(nil)).Elem() -} - -type UpgradeVsanObjectsResponse struct { - Returnval []HostVsanInternalSystemVsanObjectOperationResult `xml:"returnval,omitempty"` -} - -type UplinkPortMtuNotSupportEvent struct { - DvsHealthStatusChangeEvent -} - -func init() { - t["UplinkPortMtuNotSupportEvent"] = reflect.TypeOf((*UplinkPortMtuNotSupportEvent)(nil)).Elem() -} - -type UplinkPortMtuSupportEvent struct { - DvsHealthStatusChangeEvent -} - -func init() { - t["UplinkPortMtuSupportEvent"] = reflect.TypeOf((*UplinkPortMtuSupportEvent)(nil)).Elem() -} - -type UplinkPortVlanTrunkedEvent struct { - DvsHealthStatusChangeEvent -} - -func init() { - t["UplinkPortVlanTrunkedEvent"] = reflect.TypeOf((*UplinkPortVlanTrunkedEvent)(nil)).Elem() -} - -type UplinkPortVlanUntrunkedEvent struct { - DvsHealthStatusChangeEvent -} - -func init() { - t["UplinkPortVlanUntrunkedEvent"] = reflect.TypeOf((*UplinkPortVlanUntrunkedEvent)(nil)).Elem() -} - -type UserAssignedToGroup struct { - HostEvent - - UserLogin string `xml:"userLogin"` - Group string `xml:"group"` -} - -func init() { - t["UserAssignedToGroup"] = reflect.TypeOf((*UserAssignedToGroup)(nil)).Elem() -} - -type UserGroupProfile struct { - ApplyProfile - - Key string `xml:"key"` -} - -func init() { - t["UserGroupProfile"] = reflect.TypeOf((*UserGroupProfile)(nil)).Elem() -} - -type UserInputRequiredParameterMetadata struct { - ProfilePolicyOptionMetadata - - UserInputParameter []ProfileParameterMetadata `xml:"userInputParameter,omitempty"` -} - -func init() { - t["UserInputRequiredParameterMetadata"] = reflect.TypeOf((*UserInputRequiredParameterMetadata)(nil)).Elem() -} - -type UserLoginSessionEvent struct { - SessionEvent - - IpAddress string `xml:"ipAddress"` - UserAgent string `xml:"userAgent,omitempty"` - Locale string `xml:"locale"` - SessionId string `xml:"sessionId"` -} - -func init() { - t["UserLoginSessionEvent"] = reflect.TypeOf((*UserLoginSessionEvent)(nil)).Elem() -} - -type UserLogoutSessionEvent struct { - SessionEvent - - IpAddress string `xml:"ipAddress,omitempty"` - UserAgent string `xml:"userAgent,omitempty"` - CallCount int64 `xml:"callCount,omitempty"` - SessionId string `xml:"sessionId,omitempty"` - LoginTime *time.Time `xml:"loginTime"` -} - -func init() { - t["UserLogoutSessionEvent"] = reflect.TypeOf((*UserLogoutSessionEvent)(nil)).Elem() -} - -type UserNotFound struct { - VimFault - - Principal string `xml:"principal"` - Unresolved bool `xml:"unresolved"` -} - -func init() { - t["UserNotFound"] = reflect.TypeOf((*UserNotFound)(nil)).Elem() -} - -type UserNotFoundFault UserNotFound - -func init() { - t["UserNotFoundFault"] = reflect.TypeOf((*UserNotFoundFault)(nil)).Elem() -} - -type UserPasswordChanged struct { - HostEvent - - UserLogin string `xml:"userLogin"` -} - -func init() { - t["UserPasswordChanged"] = reflect.TypeOf((*UserPasswordChanged)(nil)).Elem() -} - -type UserProfile struct { - ApplyProfile - - Key string `xml:"key"` -} - -func init() { - t["UserProfile"] = reflect.TypeOf((*UserProfile)(nil)).Elem() -} - -type UserSearchResult struct { - DynamicData - - Principal string `xml:"principal"` - FullName string `xml:"fullName,omitempty"` - Group bool `xml:"group"` -} - -func init() { - t["UserSearchResult"] = reflect.TypeOf((*UserSearchResult)(nil)).Elem() -} - -type UserSession struct { - DynamicData - - Key string `xml:"key"` - UserName string `xml:"userName"` - FullName string `xml:"fullName"` - LoginTime time.Time `xml:"loginTime"` - LastActiveTime time.Time `xml:"lastActiveTime"` - Locale string `xml:"locale"` - MessageLocale string `xml:"messageLocale"` - ExtensionSession *bool `xml:"extensionSession"` - IpAddress string `xml:"ipAddress,omitempty"` - UserAgent string `xml:"userAgent,omitempty"` - CallCount int64 `xml:"callCount,omitempty"` -} - -func init() { - t["UserSession"] = reflect.TypeOf((*UserSession)(nil)).Elem() -} - -type UserUnassignedFromGroup struct { - HostEvent - - UserLogin string `xml:"userLogin"` - Group string `xml:"group"` -} - -func init() { - t["UserUnassignedFromGroup"] = reflect.TypeOf((*UserUnassignedFromGroup)(nil)).Elem() -} - -type UserUpgradeEvent struct { - UpgradeEvent -} - -func init() { - t["UserUpgradeEvent"] = reflect.TypeOf((*UserUpgradeEvent)(nil)).Elem() -} - -type VASAStorageArray struct { - DynamicData - - Name string `xml:"name"` - Uuid string `xml:"uuid"` - VendorId string `xml:"vendorId"` - ModelId string `xml:"modelId"` -} - -func init() { - t["VASAStorageArray"] = reflect.TypeOf((*VASAStorageArray)(nil)).Elem() -} - -type VAppCloneSpec struct { - DynamicData - - Location ManagedObjectReference `xml:"location"` - Host *ManagedObjectReference `xml:"host,omitempty"` - ResourceSpec *ResourceConfigSpec `xml:"resourceSpec,omitempty"` - VmFolder *ManagedObjectReference `xml:"vmFolder,omitempty"` - NetworkMapping []VAppCloneSpecNetworkMappingPair `xml:"networkMapping,omitempty"` - Property []KeyValue `xml:"property,omitempty"` - ResourceMapping []VAppCloneSpecResourceMap `xml:"resourceMapping,omitempty"` - Provisioning string `xml:"provisioning,omitempty"` -} - -func init() { - t["VAppCloneSpec"] = reflect.TypeOf((*VAppCloneSpec)(nil)).Elem() -} - -type VAppCloneSpecNetworkMappingPair struct { - DynamicData - - Source ManagedObjectReference `xml:"source"` - Destination ManagedObjectReference `xml:"destination"` -} - -func init() { - t["VAppCloneSpecNetworkMappingPair"] = reflect.TypeOf((*VAppCloneSpecNetworkMappingPair)(nil)).Elem() -} - -type VAppCloneSpecResourceMap struct { - DynamicData - - Source ManagedObjectReference `xml:"source"` - Parent *ManagedObjectReference `xml:"parent,omitempty"` - ResourceSpec *ResourceConfigSpec `xml:"resourceSpec,omitempty"` - Location *ManagedObjectReference `xml:"location,omitempty"` -} - -func init() { - t["VAppCloneSpecResourceMap"] = reflect.TypeOf((*VAppCloneSpecResourceMap)(nil)).Elem() -} - -type VAppConfigFault struct { - VimFault -} - -func init() { - t["VAppConfigFault"] = reflect.TypeOf((*VAppConfigFault)(nil)).Elem() -} - -type VAppConfigFaultFault BaseVAppConfigFault - -func init() { - t["VAppConfigFaultFault"] = reflect.TypeOf((*VAppConfigFaultFault)(nil)).Elem() -} - -type VAppConfigInfo struct { - VmConfigInfo - - EntityConfig []VAppEntityConfigInfo `xml:"entityConfig,omitempty"` - Annotation string `xml:"annotation"` - InstanceUuid string `xml:"instanceUuid,omitempty"` - ManagedBy *ManagedByInfo `xml:"managedBy,omitempty"` -} - -func init() { - t["VAppConfigInfo"] = reflect.TypeOf((*VAppConfigInfo)(nil)).Elem() -} - -type VAppConfigSpec struct { - VmConfigSpec - - EntityConfig []VAppEntityConfigInfo `xml:"entityConfig,omitempty"` - Annotation string `xml:"annotation,omitempty"` - InstanceUuid string `xml:"instanceUuid,omitempty"` - ManagedBy *ManagedByInfo `xml:"managedBy,omitempty"` -} - -func init() { - t["VAppConfigSpec"] = reflect.TypeOf((*VAppConfigSpec)(nil)).Elem() -} - -type VAppEntityConfigInfo struct { - DynamicData - - Key *ManagedObjectReference `xml:"key,omitempty"` - Tag string `xml:"tag,omitempty"` - StartOrder int32 `xml:"startOrder,omitempty"` - StartDelay int32 `xml:"startDelay,omitempty"` - WaitingForGuest *bool `xml:"waitingForGuest"` - StartAction string `xml:"startAction,omitempty"` - StopDelay int32 `xml:"stopDelay,omitempty"` - StopAction string `xml:"stopAction,omitempty"` - DestroyWithParent *bool `xml:"destroyWithParent"` -} - -func init() { - t["VAppEntityConfigInfo"] = reflect.TypeOf((*VAppEntityConfigInfo)(nil)).Elem() -} - -type VAppIPAssignmentInfo struct { - DynamicData - - SupportedAllocationScheme []string `xml:"supportedAllocationScheme,omitempty"` - IpAllocationPolicy string `xml:"ipAllocationPolicy,omitempty"` - SupportedIpProtocol []string `xml:"supportedIpProtocol,omitempty"` - IpProtocol string `xml:"ipProtocol,omitempty"` -} - -func init() { - t["VAppIPAssignmentInfo"] = reflect.TypeOf((*VAppIPAssignmentInfo)(nil)).Elem() -} - -type VAppNotRunning struct { - VmConfigFault -} - -func init() { - t["VAppNotRunning"] = reflect.TypeOf((*VAppNotRunning)(nil)).Elem() -} - -type VAppNotRunningFault VAppNotRunning - -func init() { - t["VAppNotRunningFault"] = reflect.TypeOf((*VAppNotRunningFault)(nil)).Elem() -} - -type VAppOperationInProgress struct { - RuntimeFault -} - -func init() { - t["VAppOperationInProgress"] = reflect.TypeOf((*VAppOperationInProgress)(nil)).Elem() -} - -type VAppOperationInProgressFault VAppOperationInProgress - -func init() { - t["VAppOperationInProgressFault"] = reflect.TypeOf((*VAppOperationInProgressFault)(nil)).Elem() -} - -type VAppOvfSectionInfo struct { - DynamicData - - Key int32 `xml:"key,omitempty"` - Namespace string `xml:"namespace,omitempty"` - Type string `xml:"type,omitempty"` - AtEnvelopeLevel *bool `xml:"atEnvelopeLevel"` - Contents string `xml:"contents,omitempty"` -} - -func init() { - t["VAppOvfSectionInfo"] = reflect.TypeOf((*VAppOvfSectionInfo)(nil)).Elem() -} - -type VAppOvfSectionSpec struct { - ArrayUpdateSpec - - Info *VAppOvfSectionInfo `xml:"info,omitempty"` -} - -func init() { - t["VAppOvfSectionSpec"] = reflect.TypeOf((*VAppOvfSectionSpec)(nil)).Elem() -} - -type VAppProductInfo struct { - DynamicData - - Key int32 `xml:"key"` - ClassId string `xml:"classId,omitempty"` - InstanceId string `xml:"instanceId,omitempty"` - Name string `xml:"name,omitempty"` - Vendor string `xml:"vendor,omitempty"` - Version string `xml:"version,omitempty"` - FullVersion string `xml:"fullVersion,omitempty"` - VendorUrl string `xml:"vendorUrl,omitempty"` - ProductUrl string `xml:"productUrl,omitempty"` - AppUrl string `xml:"appUrl,omitempty"` -} - -func init() { - t["VAppProductInfo"] = reflect.TypeOf((*VAppProductInfo)(nil)).Elem() -} - -type VAppProductSpec struct { - ArrayUpdateSpec - - Info *VAppProductInfo `xml:"info,omitempty"` -} - -func init() { - t["VAppProductSpec"] = reflect.TypeOf((*VAppProductSpec)(nil)).Elem() -} - -type VAppPropertyFault struct { - VmConfigFault - - Id string `xml:"id"` - Category string `xml:"category"` - Label string `xml:"label"` - Type string `xml:"type"` - Value string `xml:"value"` -} - -func init() { - t["VAppPropertyFault"] = reflect.TypeOf((*VAppPropertyFault)(nil)).Elem() -} - -type VAppPropertyFaultFault BaseVAppPropertyFault - -func init() { - t["VAppPropertyFaultFault"] = reflect.TypeOf((*VAppPropertyFaultFault)(nil)).Elem() -} - -type VAppPropertyInfo struct { - DynamicData - - Key int32 `xml:"key"` - ClassId string `xml:"classId,omitempty"` - InstanceId string `xml:"instanceId,omitempty"` - Id string `xml:"id,omitempty"` - Category string `xml:"category,omitempty"` - Label string `xml:"label,omitempty"` - Type string `xml:"type,omitempty"` - TypeReference string `xml:"typeReference,omitempty"` - UserConfigurable *bool `xml:"userConfigurable"` - DefaultValue string `xml:"defaultValue,omitempty"` - Value string `xml:"value,omitempty"` - Description string `xml:"description,omitempty"` -} - -func init() { - t["VAppPropertyInfo"] = reflect.TypeOf((*VAppPropertyInfo)(nil)).Elem() -} - -type VAppPropertySpec struct { - ArrayUpdateSpec - - Info *VAppPropertyInfo `xml:"info,omitempty"` -} - -func init() { - t["VAppPropertySpec"] = reflect.TypeOf((*VAppPropertySpec)(nil)).Elem() -} - -type VAppTaskInProgress struct { - TaskInProgress -} - -func init() { - t["VAppTaskInProgress"] = reflect.TypeOf((*VAppTaskInProgress)(nil)).Elem() -} - -type VAppTaskInProgressFault VAppTaskInProgress - -func init() { - t["VAppTaskInProgressFault"] = reflect.TypeOf((*VAppTaskInProgressFault)(nil)).Elem() -} - -type VFlashCacheHotConfigNotSupported struct { - VmConfigFault -} - -func init() { - t["VFlashCacheHotConfigNotSupported"] = reflect.TypeOf((*VFlashCacheHotConfigNotSupported)(nil)).Elem() -} - -type VFlashCacheHotConfigNotSupportedFault VFlashCacheHotConfigNotSupported - -func init() { - t["VFlashCacheHotConfigNotSupportedFault"] = reflect.TypeOf((*VFlashCacheHotConfigNotSupportedFault)(nil)).Elem() -} - -type VFlashModuleNotSupported struct { - VmConfigFault - - VmName string `xml:"vmName"` - ModuleName string `xml:"moduleName"` - Reason string `xml:"reason"` - HostName string `xml:"hostName"` -} - -func init() { - t["VFlashModuleNotSupported"] = reflect.TypeOf((*VFlashModuleNotSupported)(nil)).Elem() -} - -type VFlashModuleNotSupportedFault VFlashModuleNotSupported - -func init() { - t["VFlashModuleNotSupportedFault"] = reflect.TypeOf((*VFlashModuleNotSupportedFault)(nil)).Elem() -} - -type VFlashModuleVersionIncompatible struct { - VimFault - - ModuleName string `xml:"moduleName"` - VmRequestModuleVersion string `xml:"vmRequestModuleVersion"` - HostMinSupportedVerson string `xml:"hostMinSupportedVerson"` - HostModuleVersion string `xml:"hostModuleVersion"` -} - -func init() { - t["VFlashModuleVersionIncompatible"] = reflect.TypeOf((*VFlashModuleVersionIncompatible)(nil)).Elem() -} - -type VFlashModuleVersionIncompatibleFault VFlashModuleVersionIncompatible - -func init() { - t["VFlashModuleVersionIncompatibleFault"] = reflect.TypeOf((*VFlashModuleVersionIncompatibleFault)(nil)).Elem() -} - -type VMFSDatastoreCreatedEvent struct { - HostEvent - - Datastore DatastoreEventArgument `xml:"datastore"` -} - -func init() { - t["VMFSDatastoreCreatedEvent"] = reflect.TypeOf((*VMFSDatastoreCreatedEvent)(nil)).Elem() -} - -type VMFSDatastoreExpandedEvent struct { - HostEvent - - Datastore DatastoreEventArgument `xml:"datastore"` -} - -func init() { - t["VMFSDatastoreExpandedEvent"] = reflect.TypeOf((*VMFSDatastoreExpandedEvent)(nil)).Elem() -} - -type VMFSDatastoreExtendedEvent struct { - HostEvent - - Datastore DatastoreEventArgument `xml:"datastore"` -} - -func init() { - t["VMFSDatastoreExtendedEvent"] = reflect.TypeOf((*VMFSDatastoreExtendedEvent)(nil)).Elem() -} - -type VMINotSupported struct { - DeviceNotSupported -} - -func init() { - t["VMINotSupported"] = reflect.TypeOf((*VMINotSupported)(nil)).Elem() -} - -type VMINotSupportedFault VMINotSupported - -func init() { - t["VMINotSupportedFault"] = reflect.TypeOf((*VMINotSupportedFault)(nil)).Elem() -} - -type VMOnConflictDVPort struct { - CannotAccessNetwork -} - -func init() { - t["VMOnConflictDVPort"] = reflect.TypeOf((*VMOnConflictDVPort)(nil)).Elem() -} - -type VMOnConflictDVPortFault VMOnConflictDVPort - -func init() { - t["VMOnConflictDVPortFault"] = reflect.TypeOf((*VMOnConflictDVPortFault)(nil)).Elem() -} - -type VMOnVirtualIntranet struct { - CannotAccessNetwork -} - -func init() { - t["VMOnVirtualIntranet"] = reflect.TypeOf((*VMOnVirtualIntranet)(nil)).Elem() -} - -type VMOnVirtualIntranetFault VMOnVirtualIntranet - -func init() { - t["VMOnVirtualIntranetFault"] = reflect.TypeOf((*VMOnVirtualIntranetFault)(nil)).Elem() -} - -type VMotionAcrossNetworkNotSupported struct { - MigrationFeatureNotSupported -} - -func init() { - t["VMotionAcrossNetworkNotSupported"] = reflect.TypeOf((*VMotionAcrossNetworkNotSupported)(nil)).Elem() -} - -type VMotionAcrossNetworkNotSupportedFault VMotionAcrossNetworkNotSupported - -func init() { - t["VMotionAcrossNetworkNotSupportedFault"] = reflect.TypeOf((*VMotionAcrossNetworkNotSupportedFault)(nil)).Elem() -} - -type VMotionInterfaceIssue struct { - MigrationFault - - AtSourceHost bool `xml:"atSourceHost"` - FailedHost string `xml:"failedHost"` - FailedHostEntity *ManagedObjectReference `xml:"failedHostEntity,omitempty"` -} - -func init() { - t["VMotionInterfaceIssue"] = reflect.TypeOf((*VMotionInterfaceIssue)(nil)).Elem() -} - -type VMotionInterfaceIssueFault BaseVMotionInterfaceIssue - -func init() { - t["VMotionInterfaceIssueFault"] = reflect.TypeOf((*VMotionInterfaceIssueFault)(nil)).Elem() -} - -type VMotionLicenseExpiredEvent struct { - LicenseEvent -} - -func init() { - t["VMotionLicenseExpiredEvent"] = reflect.TypeOf((*VMotionLicenseExpiredEvent)(nil)).Elem() -} - -type VMotionLinkCapacityLow struct { - VMotionInterfaceIssue - - Network string `xml:"network"` -} - -func init() { - t["VMotionLinkCapacityLow"] = reflect.TypeOf((*VMotionLinkCapacityLow)(nil)).Elem() -} - -type VMotionLinkCapacityLowFault VMotionLinkCapacityLow - -func init() { - t["VMotionLinkCapacityLowFault"] = reflect.TypeOf((*VMotionLinkCapacityLowFault)(nil)).Elem() -} - -type VMotionLinkDown struct { - VMotionInterfaceIssue - - Network string `xml:"network"` -} - -func init() { - t["VMotionLinkDown"] = reflect.TypeOf((*VMotionLinkDown)(nil)).Elem() -} - -type VMotionLinkDownFault VMotionLinkDown - -func init() { - t["VMotionLinkDownFault"] = reflect.TypeOf((*VMotionLinkDownFault)(nil)).Elem() -} - -type VMotionNotConfigured struct { - VMotionInterfaceIssue -} - -func init() { - t["VMotionNotConfigured"] = reflect.TypeOf((*VMotionNotConfigured)(nil)).Elem() -} - -type VMotionNotConfiguredFault VMotionNotConfigured - -func init() { - t["VMotionNotConfiguredFault"] = reflect.TypeOf((*VMotionNotConfiguredFault)(nil)).Elem() -} - -type VMotionNotLicensed struct { - VMotionInterfaceIssue -} - -func init() { - t["VMotionNotLicensed"] = reflect.TypeOf((*VMotionNotLicensed)(nil)).Elem() -} - -type VMotionNotLicensedFault VMotionNotLicensed - -func init() { - t["VMotionNotLicensedFault"] = reflect.TypeOf((*VMotionNotLicensedFault)(nil)).Elem() -} - -type VMotionNotSupported struct { - VMotionInterfaceIssue -} - -func init() { - t["VMotionNotSupported"] = reflect.TypeOf((*VMotionNotSupported)(nil)).Elem() -} - -type VMotionNotSupportedFault VMotionNotSupported - -func init() { - t["VMotionNotSupportedFault"] = reflect.TypeOf((*VMotionNotSupportedFault)(nil)).Elem() -} - -type VMotionProtocolIncompatible struct { - MigrationFault -} - -func init() { - t["VMotionProtocolIncompatible"] = reflect.TypeOf((*VMotionProtocolIncompatible)(nil)).Elem() -} - -type VMotionProtocolIncompatibleFault VMotionProtocolIncompatible - -func init() { - t["VMotionProtocolIncompatibleFault"] = reflect.TypeOf((*VMotionProtocolIncompatibleFault)(nil)).Elem() -} - -type VMwareDVSConfigInfo struct { - DVSConfigInfo - - VspanSession []VMwareVspanSession `xml:"vspanSession,omitempty"` - PvlanConfig []VMwareDVSPvlanMapEntry `xml:"pvlanConfig,omitempty"` - MaxMtu int32 `xml:"maxMtu"` - LinkDiscoveryProtocolConfig *LinkDiscoveryProtocolConfig `xml:"linkDiscoveryProtocolConfig,omitempty"` - IpfixConfig *VMwareIpfixConfig `xml:"ipfixConfig,omitempty"` - LacpGroupConfig []VMwareDvsLacpGroupConfig `xml:"lacpGroupConfig,omitempty"` - LacpApiVersion string `xml:"lacpApiVersion,omitempty"` - MulticastFilteringMode string `xml:"multicastFilteringMode,omitempty"` -} - -func init() { - t["VMwareDVSConfigInfo"] = reflect.TypeOf((*VMwareDVSConfigInfo)(nil)).Elem() -} - -type VMwareDVSConfigSpec struct { - DVSConfigSpec - - PvlanConfigSpec []VMwareDVSPvlanConfigSpec `xml:"pvlanConfigSpec,omitempty"` - VspanConfigSpec []VMwareDVSVspanConfigSpec `xml:"vspanConfigSpec,omitempty"` - MaxMtu int32 `xml:"maxMtu,omitempty"` - LinkDiscoveryProtocolConfig *LinkDiscoveryProtocolConfig `xml:"linkDiscoveryProtocolConfig,omitempty"` - IpfixConfig *VMwareIpfixConfig `xml:"ipfixConfig,omitempty"` - LacpApiVersion string `xml:"lacpApiVersion,omitempty"` - MulticastFilteringMode string `xml:"multicastFilteringMode,omitempty"` -} - -func init() { - t["VMwareDVSConfigSpec"] = reflect.TypeOf((*VMwareDVSConfigSpec)(nil)).Elem() -} - -type VMwareDVSFeatureCapability struct { - DVSFeatureCapability - - VspanSupported *bool `xml:"vspanSupported"` - LldpSupported *bool `xml:"lldpSupported"` - IpfixSupported *bool `xml:"ipfixSupported"` - IpfixCapability *VMwareDvsIpfixCapability `xml:"ipfixCapability,omitempty"` - MulticastSnoopingSupported *bool `xml:"multicastSnoopingSupported"` - VspanCapability *VMwareDVSVspanCapability `xml:"vspanCapability,omitempty"` - LacpCapability *VMwareDvsLacpCapability `xml:"lacpCapability,omitempty"` -} - -func init() { - t["VMwareDVSFeatureCapability"] = reflect.TypeOf((*VMwareDVSFeatureCapability)(nil)).Elem() -} - -type VMwareDVSHealthCheckCapability struct { - DVSHealthCheckCapability - - VlanMtuSupported bool `xml:"vlanMtuSupported"` - TeamingSupported bool `xml:"teamingSupported"` -} - -func init() { - t["VMwareDVSHealthCheckCapability"] = reflect.TypeOf((*VMwareDVSHealthCheckCapability)(nil)).Elem() -} - -type VMwareDVSHealthCheckConfig struct { - DVSHealthCheckConfig -} - -func init() { - t["VMwareDVSHealthCheckConfig"] = reflect.TypeOf((*VMwareDVSHealthCheckConfig)(nil)).Elem() -} - -type VMwareDVSMtuHealthCheckResult struct { - HostMemberUplinkHealthCheckResult - - MtuMismatch bool `xml:"mtuMismatch"` - VlanSupportSwitchMtu []NumericRange `xml:"vlanSupportSwitchMtu,omitempty"` - VlanNotSupportSwitchMtu []NumericRange `xml:"vlanNotSupportSwitchMtu,omitempty"` -} - -func init() { - t["VMwareDVSMtuHealthCheckResult"] = reflect.TypeOf((*VMwareDVSMtuHealthCheckResult)(nil)).Elem() -} - -type VMwareDVSPortSetting struct { - DVPortSetting - - Vlan BaseVmwareDistributedVirtualSwitchVlanSpec `xml:"vlan,omitempty,typeattr"` - QosTag *IntPolicy `xml:"qosTag,omitempty"` - UplinkTeamingPolicy *VmwareUplinkPortTeamingPolicy `xml:"uplinkTeamingPolicy,omitempty"` - SecurityPolicy *DVSSecurityPolicy `xml:"securityPolicy,omitempty"` - IpfixEnabled *BoolPolicy `xml:"ipfixEnabled,omitempty"` - TxUplink *BoolPolicy `xml:"txUplink,omitempty"` - LacpPolicy *VMwareUplinkLacpPolicy `xml:"lacpPolicy,omitempty"` -} - -func init() { - t["VMwareDVSPortSetting"] = reflect.TypeOf((*VMwareDVSPortSetting)(nil)).Elem() -} - -type VMwareDVSPortgroupPolicy struct { - DVPortgroupPolicy - - VlanOverrideAllowed bool `xml:"vlanOverrideAllowed"` - UplinkTeamingOverrideAllowed bool `xml:"uplinkTeamingOverrideAllowed"` - SecurityPolicyOverrideAllowed bool `xml:"securityPolicyOverrideAllowed"` - IpfixOverrideAllowed *bool `xml:"ipfixOverrideAllowed"` -} - -func init() { - t["VMwareDVSPortgroupPolicy"] = reflect.TypeOf((*VMwareDVSPortgroupPolicy)(nil)).Elem() -} - -type VMwareDVSPvlanConfigSpec struct { - DynamicData - - PvlanEntry VMwareDVSPvlanMapEntry `xml:"pvlanEntry"` - Operation string `xml:"operation"` -} - -func init() { - t["VMwareDVSPvlanConfigSpec"] = reflect.TypeOf((*VMwareDVSPvlanConfigSpec)(nil)).Elem() -} - -type VMwareDVSPvlanMapEntry struct { - DynamicData - - PrimaryVlanId int32 `xml:"primaryVlanId"` - SecondaryVlanId int32 `xml:"secondaryVlanId"` - PvlanType string `xml:"pvlanType"` -} - -func init() { - t["VMwareDVSPvlanMapEntry"] = reflect.TypeOf((*VMwareDVSPvlanMapEntry)(nil)).Elem() -} - -type VMwareDVSTeamingHealthCheckConfig struct { - VMwareDVSHealthCheckConfig -} - -func init() { - t["VMwareDVSTeamingHealthCheckConfig"] = reflect.TypeOf((*VMwareDVSTeamingHealthCheckConfig)(nil)).Elem() -} - -type VMwareDVSTeamingHealthCheckResult struct { - HostMemberHealthCheckResult - - TeamingStatus string `xml:"teamingStatus"` -} - -func init() { - t["VMwareDVSTeamingHealthCheckResult"] = reflect.TypeOf((*VMwareDVSTeamingHealthCheckResult)(nil)).Elem() -} - -type VMwareDVSVlanHealthCheckResult struct { - HostMemberUplinkHealthCheckResult - - TrunkedVlan []NumericRange `xml:"trunkedVlan,omitempty"` - UntrunkedVlan []NumericRange `xml:"untrunkedVlan,omitempty"` -} - -func init() { - t["VMwareDVSVlanHealthCheckResult"] = reflect.TypeOf((*VMwareDVSVlanHealthCheckResult)(nil)).Elem() -} - -type VMwareDVSVlanMtuHealthCheckConfig struct { - VMwareDVSHealthCheckConfig -} - -func init() { - t["VMwareDVSVlanMtuHealthCheckConfig"] = reflect.TypeOf((*VMwareDVSVlanMtuHealthCheckConfig)(nil)).Elem() -} - -type VMwareDVSVspanCapability struct { - DynamicData - - MixedDestSupported bool `xml:"mixedDestSupported"` - DvportSupported bool `xml:"dvportSupported"` - RemoteSourceSupported bool `xml:"remoteSourceSupported"` - RemoteDestSupported bool `xml:"remoteDestSupported"` - EncapRemoteSourceSupported bool `xml:"encapRemoteSourceSupported"` -} - -func init() { - t["VMwareDVSVspanCapability"] = reflect.TypeOf((*VMwareDVSVspanCapability)(nil)).Elem() -} - -type VMwareDVSVspanConfigSpec struct { - DynamicData - - VspanSession VMwareVspanSession `xml:"vspanSession"` - Operation string `xml:"operation"` -} - -func init() { - t["VMwareDVSVspanConfigSpec"] = reflect.TypeOf((*VMwareDVSVspanConfigSpec)(nil)).Elem() -} - -type VMwareDvsIpfixCapability struct { - DynamicData - - IpfixSupported *bool `xml:"ipfixSupported"` - Ipv6ForIpfixSupported *bool `xml:"ipv6ForIpfixSupported"` - ObservationDomainIdSupported *bool `xml:"observationDomainIdSupported"` -} - -func init() { - t["VMwareDvsIpfixCapability"] = reflect.TypeOf((*VMwareDvsIpfixCapability)(nil)).Elem() -} - -type VMwareDvsLacpCapability struct { - DynamicData - - LacpSupported *bool `xml:"lacpSupported"` - MultiLacpGroupSupported *bool `xml:"multiLacpGroupSupported"` -} - -func init() { - t["VMwareDvsLacpCapability"] = reflect.TypeOf((*VMwareDvsLacpCapability)(nil)).Elem() -} - -type VMwareDvsLacpGroupConfig struct { - DynamicData - - Key string `xml:"key,omitempty"` - Name string `xml:"name,omitempty"` - Mode string `xml:"mode,omitempty"` - UplinkNum int32 `xml:"uplinkNum,omitempty"` - LoadbalanceAlgorithm string `xml:"loadbalanceAlgorithm,omitempty"` - Vlan *VMwareDvsLagVlanConfig `xml:"vlan,omitempty"` - Ipfix *VMwareDvsLagIpfixConfig `xml:"ipfix,omitempty"` - UplinkName []string `xml:"uplinkName,omitempty"` - UplinkPortKey []string `xml:"uplinkPortKey,omitempty"` -} - -func init() { - t["VMwareDvsLacpGroupConfig"] = reflect.TypeOf((*VMwareDvsLacpGroupConfig)(nil)).Elem() -} - -type VMwareDvsLacpGroupSpec struct { - DynamicData - - LacpGroupConfig VMwareDvsLacpGroupConfig `xml:"lacpGroupConfig"` - Operation string `xml:"operation"` -} - -func init() { - t["VMwareDvsLacpGroupSpec"] = reflect.TypeOf((*VMwareDvsLacpGroupSpec)(nil)).Elem() -} - -type VMwareDvsLagIpfixConfig struct { - DynamicData - - IpfixEnabled *bool `xml:"ipfixEnabled"` -} - -func init() { - t["VMwareDvsLagIpfixConfig"] = reflect.TypeOf((*VMwareDvsLagIpfixConfig)(nil)).Elem() -} - -type VMwareDvsLagVlanConfig struct { - DynamicData - - VlanId []NumericRange `xml:"vlanId,omitempty"` -} - -func init() { - t["VMwareDvsLagVlanConfig"] = reflect.TypeOf((*VMwareDvsLagVlanConfig)(nil)).Elem() -} - -type VMwareIpfixConfig struct { - DynamicData - - CollectorIpAddress string `xml:"collectorIpAddress,omitempty"` - CollectorPort int32 `xml:"collectorPort,omitempty"` - ObservationDomainId int64 `xml:"observationDomainId,omitempty"` - ActiveFlowTimeout int32 `xml:"activeFlowTimeout"` - IdleFlowTimeout int32 `xml:"idleFlowTimeout"` - SamplingRate int32 `xml:"samplingRate"` - InternalFlowsOnly bool `xml:"internalFlowsOnly"` -} - -func init() { - t["VMwareIpfixConfig"] = reflect.TypeOf((*VMwareIpfixConfig)(nil)).Elem() -} - -type VMwareUplinkLacpPolicy struct { - InheritablePolicy - - Enable *BoolPolicy `xml:"enable,omitempty"` - Mode *StringPolicy `xml:"mode,omitempty"` -} - -func init() { - t["VMwareUplinkLacpPolicy"] = reflect.TypeOf((*VMwareUplinkLacpPolicy)(nil)).Elem() -} - -type VMwareUplinkPortOrderPolicy struct { - InheritablePolicy - - ActiveUplinkPort []string `xml:"activeUplinkPort,omitempty"` - StandbyUplinkPort []string `xml:"standbyUplinkPort,omitempty"` -} - -func init() { - t["VMwareUplinkPortOrderPolicy"] = reflect.TypeOf((*VMwareUplinkPortOrderPolicy)(nil)).Elem() -} - -type VMwareVspanPort struct { - DynamicData - - PortKey []string `xml:"portKey,omitempty"` - UplinkPortName []string `xml:"uplinkPortName,omitempty"` - WildcardPortConnecteeType []string `xml:"wildcardPortConnecteeType,omitempty"` - Vlans []int32 `xml:"vlans,omitempty"` - IpAddress []string `xml:"ipAddress,omitempty"` -} - -func init() { - t["VMwareVspanPort"] = reflect.TypeOf((*VMwareVspanPort)(nil)).Elem() -} - -type VMwareVspanSession struct { - DynamicData - - Key string `xml:"key,omitempty"` - Name string `xml:"name,omitempty"` - Description string `xml:"description,omitempty"` - Enabled bool `xml:"enabled"` - SourcePortTransmitted *VMwareVspanPort `xml:"sourcePortTransmitted,omitempty"` - SourcePortReceived *VMwareVspanPort `xml:"sourcePortReceived,omitempty"` - DestinationPort *VMwareVspanPort `xml:"destinationPort,omitempty"` - EncapsulationVlanId int32 `xml:"encapsulationVlanId,omitempty"` - StripOriginalVlan bool `xml:"stripOriginalVlan"` - MirroredPacketLength int32 `xml:"mirroredPacketLength,omitempty"` - NormalTrafficAllowed bool `xml:"normalTrafficAllowed"` - SessionType string `xml:"sessionType,omitempty"` - SamplingRate int32 `xml:"samplingRate,omitempty"` -} - -func init() { - t["VMwareVspanSession"] = reflect.TypeOf((*VMwareVspanSession)(nil)).Elem() -} - -type VRPEditSpec struct { - DynamicData - - VrpId string `xml:"vrpId"` - Description string `xml:"description,omitempty"` - CpuAllocation *VrpResourceAllocationInfo `xml:"cpuAllocation,omitempty"` - MemoryAllocation *VrpResourceAllocationInfo `xml:"memoryAllocation,omitempty"` - AddedHubs []ManagedObjectReference `xml:"addedHubs,omitempty"` - RemovedHubs []ManagedObjectReference `xml:"removedHubs,omitempty"` - ChangeVersion int64 `xml:"changeVersion,omitempty"` -} - -func init() { - t["VRPEditSpec"] = reflect.TypeOf((*VRPEditSpec)(nil)).Elem() -} - -type VVolHostPE struct { - DynamicData - - Key ManagedObjectReference `xml:"key"` - ProtocolEndpoint []HostProtocolEndpoint `xml:"protocolEndpoint"` -} - -func init() { - t["VVolHostPE"] = reflect.TypeOf((*VVolHostPE)(nil)).Elem() -} - -type ValidateCredentialsInGuest ValidateCredentialsInGuestRequestType - -func init() { - t["ValidateCredentialsInGuest"] = reflect.TypeOf((*ValidateCredentialsInGuest)(nil)).Elem() -} - -type ValidateCredentialsInGuestRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm ManagedObjectReference `xml:"vm"` - Auth BaseGuestAuthentication `xml:"auth,typeattr"` -} - -func init() { - t["ValidateCredentialsInGuestRequestType"] = reflect.TypeOf((*ValidateCredentialsInGuestRequestType)(nil)).Elem() -} - -type ValidateCredentialsInGuestResponse struct { -} - -type ValidateHost ValidateHostRequestType - -func init() { - t["ValidateHost"] = reflect.TypeOf((*ValidateHost)(nil)).Elem() -} - -type ValidateHostRequestType struct { - This ManagedObjectReference `xml:"_this"` - OvfDescriptor string `xml:"ovfDescriptor"` - Host ManagedObjectReference `xml:"host"` - Vhp OvfValidateHostParams `xml:"vhp"` -} - -func init() { - t["ValidateHostRequestType"] = reflect.TypeOf((*ValidateHostRequestType)(nil)).Elem() -} - -type ValidateHostResponse struct { - Returnval OvfValidateHostResult `xml:"returnval"` -} - -type ValidateMigration ValidateMigrationRequestType - -func init() { - t["ValidateMigration"] = reflect.TypeOf((*ValidateMigration)(nil)).Elem() -} - -type ValidateMigrationRequestType struct { - This ManagedObjectReference `xml:"_this"` - Vm []ManagedObjectReference `xml:"vm"` - State VirtualMachinePowerState `xml:"state,omitempty"` - TestType []string `xml:"testType,omitempty"` - Pool *ManagedObjectReference `xml:"pool,omitempty"` - Host *ManagedObjectReference `xml:"host,omitempty"` -} - -func init() { - t["ValidateMigrationRequestType"] = reflect.TypeOf((*ValidateMigrationRequestType)(nil)).Elem() -} - -type ValidateMigrationResponse struct { - Returnval []BaseEvent `xml:"returnval,omitempty,typeattr"` -} - -type VasaProviderContainerSpec struct { - DynamicData - - VasaProviderInfo []VimVasaProviderInfo `xml:"vasaProviderInfo,omitempty"` - ScId string `xml:"scId"` - Deleted bool `xml:"deleted"` -} - -func init() { - t["VasaProviderContainerSpec"] = reflect.TypeOf((*VasaProviderContainerSpec)(nil)).Elem() -} - -type VcAgentUninstallFailedEvent struct { - HostEvent - - Reason string `xml:"reason,omitempty"` -} - -func init() { - t["VcAgentUninstallFailedEvent"] = reflect.TypeOf((*VcAgentUninstallFailedEvent)(nil)).Elem() -} - -type VcAgentUninstalledEvent struct { - HostEvent -} - -func init() { - t["VcAgentUninstalledEvent"] = reflect.TypeOf((*VcAgentUninstalledEvent)(nil)).Elem() -} - -type VcAgentUpgradeFailedEvent struct { - HostEvent - - Reason string `xml:"reason,omitempty"` -} - -func init() { - t["VcAgentUpgradeFailedEvent"] = reflect.TypeOf((*VcAgentUpgradeFailedEvent)(nil)).Elem() -} - -type VcAgentUpgradedEvent struct { - HostEvent -} - -func init() { - t["VcAgentUpgradedEvent"] = reflect.TypeOf((*VcAgentUpgradedEvent)(nil)).Elem() -} - -type VimAccountPasswordChangedEvent struct { - HostEvent -} - -func init() { - t["VimAccountPasswordChangedEvent"] = reflect.TypeOf((*VimAccountPasswordChangedEvent)(nil)).Elem() -} - -type VimFault struct { - MethodFault -} - -func init() { - t["VimFault"] = reflect.TypeOf((*VimFault)(nil)).Elem() -} - -type VimFaultFault BaseVimFault - -func init() { - t["VimFaultFault"] = reflect.TypeOf((*VimFaultFault)(nil)).Elem() -} - -type VimVasaProvider struct { - DynamicData - - Url string `xml:"url"` - Name string `xml:"name,omitempty"` - SelfSignedCertificate string `xml:"selfSignedCertificate,omitempty"` -} - -func init() { - t["VimVasaProvider"] = reflect.TypeOf((*VimVasaProvider)(nil)).Elem() -} - -type VimVasaProviderInfo struct { - DynamicData - - Provider VimVasaProvider `xml:"provider"` - ArrayState []VimVasaProviderStatePerArray `xml:"arrayState,omitempty"` -} - -func init() { - t["VimVasaProviderInfo"] = reflect.TypeOf((*VimVasaProviderInfo)(nil)).Elem() -} - -type VimVasaProviderStatePerArray struct { - DynamicData - - Priority int32 `xml:"priority"` - ArrayId string `xml:"arrayId"` - Active bool `xml:"active"` -} - -func init() { - t["VimVasaProviderStatePerArray"] = reflect.TypeOf((*VimVasaProviderStatePerArray)(nil)).Elem() -} - -type VirtualAHCIController struct { - VirtualSATAController -} - -func init() { - t["VirtualAHCIController"] = reflect.TypeOf((*VirtualAHCIController)(nil)).Elem() -} - -type VirtualAHCIControllerOption struct { - VirtualSATAControllerOption -} - -func init() { - t["VirtualAHCIControllerOption"] = reflect.TypeOf((*VirtualAHCIControllerOption)(nil)).Elem() -} - -type VirtualAppImportSpec struct { - ImportSpec - - Name string `xml:"name"` - VAppConfigSpec VAppConfigSpec `xml:"vAppConfigSpec"` - ResourcePoolSpec ResourceConfigSpec `xml:"resourcePoolSpec"` - Child []BaseImportSpec `xml:"child,omitempty,typeattr"` -} - -func init() { - t["VirtualAppImportSpec"] = reflect.TypeOf((*VirtualAppImportSpec)(nil)).Elem() -} - -type VirtualAppLinkInfo struct { - DynamicData - - Key ManagedObjectReference `xml:"key"` - DestroyWithParent *bool `xml:"destroyWithParent"` -} - -func init() { - t["VirtualAppLinkInfo"] = reflect.TypeOf((*VirtualAppLinkInfo)(nil)).Elem() -} - -type VirtualAppSummary struct { - ResourcePoolSummary - - Product *VAppProductInfo `xml:"product,omitempty"` - VAppState VirtualAppVAppState `xml:"vAppState,omitempty"` - Suspended *bool `xml:"suspended"` - InstallBootRequired *bool `xml:"installBootRequired"` - InstanceUuid string `xml:"instanceUuid,omitempty"` -} - -func init() { - t["VirtualAppSummary"] = reflect.TypeOf((*VirtualAppSummary)(nil)).Elem() -} - -type VirtualBusLogicController struct { - VirtualSCSIController -} - -func init() { - t["VirtualBusLogicController"] = reflect.TypeOf((*VirtualBusLogicController)(nil)).Elem() -} - -type VirtualBusLogicControllerOption struct { - VirtualSCSIControllerOption -} - -func init() { - t["VirtualBusLogicControllerOption"] = reflect.TypeOf((*VirtualBusLogicControllerOption)(nil)).Elem() -} - -type VirtualCdrom struct { - VirtualDevice -} - -func init() { - t["VirtualCdrom"] = reflect.TypeOf((*VirtualCdrom)(nil)).Elem() -} - -type VirtualCdromAtapiBackingInfo struct { - VirtualDeviceDeviceBackingInfo -} - -func init() { - t["VirtualCdromAtapiBackingInfo"] = reflect.TypeOf((*VirtualCdromAtapiBackingInfo)(nil)).Elem() -} - -type VirtualCdromAtapiBackingOption struct { - VirtualDeviceDeviceBackingOption -} - -func init() { - t["VirtualCdromAtapiBackingOption"] = reflect.TypeOf((*VirtualCdromAtapiBackingOption)(nil)).Elem() -} - -type VirtualCdromIsoBackingInfo struct { - VirtualDeviceFileBackingInfo -} - -func init() { - t["VirtualCdromIsoBackingInfo"] = reflect.TypeOf((*VirtualCdromIsoBackingInfo)(nil)).Elem() -} - -type VirtualCdromIsoBackingOption struct { - VirtualDeviceFileBackingOption -} - -func init() { - t["VirtualCdromIsoBackingOption"] = reflect.TypeOf((*VirtualCdromIsoBackingOption)(nil)).Elem() -} - -type VirtualCdromOption struct { - VirtualDeviceOption -} - -func init() { - t["VirtualCdromOption"] = reflect.TypeOf((*VirtualCdromOption)(nil)).Elem() -} - -type VirtualCdromPassthroughBackingInfo struct { - VirtualDeviceDeviceBackingInfo - - Exclusive bool `xml:"exclusive"` -} - -func init() { - t["VirtualCdromPassthroughBackingInfo"] = reflect.TypeOf((*VirtualCdromPassthroughBackingInfo)(nil)).Elem() -} - -type VirtualCdromPassthroughBackingOption struct { - VirtualDeviceDeviceBackingOption - - Exclusive BoolOption `xml:"exclusive"` -} - -func init() { - t["VirtualCdromPassthroughBackingOption"] = reflect.TypeOf((*VirtualCdromPassthroughBackingOption)(nil)).Elem() -} - -type VirtualCdromRemoteAtapiBackingInfo struct { - VirtualDeviceRemoteDeviceBackingInfo -} - -func init() { - t["VirtualCdromRemoteAtapiBackingInfo"] = reflect.TypeOf((*VirtualCdromRemoteAtapiBackingInfo)(nil)).Elem() -} - -type VirtualCdromRemoteAtapiBackingOption struct { - VirtualDeviceDeviceBackingOption -} - -func init() { - t["VirtualCdromRemoteAtapiBackingOption"] = reflect.TypeOf((*VirtualCdromRemoteAtapiBackingOption)(nil)).Elem() -} - -type VirtualCdromRemotePassthroughBackingInfo struct { - VirtualDeviceRemoteDeviceBackingInfo - - Exclusive bool `xml:"exclusive"` -} - -func init() { - t["VirtualCdromRemotePassthroughBackingInfo"] = reflect.TypeOf((*VirtualCdromRemotePassthroughBackingInfo)(nil)).Elem() -} - -type VirtualCdromRemotePassthroughBackingOption struct { - VirtualDeviceRemoteDeviceBackingOption - - Exclusive BoolOption `xml:"exclusive"` -} - -func init() { - t["VirtualCdromRemotePassthroughBackingOption"] = reflect.TypeOf((*VirtualCdromRemotePassthroughBackingOption)(nil)).Elem() -} - -type VirtualController struct { - VirtualDevice - - BusNumber int32 `xml:"busNumber"` - Device []int32 `xml:"device,omitempty"` -} - -func init() { - t["VirtualController"] = reflect.TypeOf((*VirtualController)(nil)).Elem() -} - -type VirtualControllerOption struct { - VirtualDeviceOption - - Devices IntOption `xml:"devices"` - SupportedDevice []string `xml:"supportedDevice,omitempty"` -} - -func init() { - t["VirtualControllerOption"] = reflect.TypeOf((*VirtualControllerOption)(nil)).Elem() -} - -type VirtualDevice struct { - DynamicData - - Key int32 `xml:"key"` - DeviceInfo BaseDescription `xml:"deviceInfo,omitempty,typeattr"` - Backing BaseVirtualDeviceBackingInfo `xml:"backing,omitempty,typeattr"` - Connectable *VirtualDeviceConnectInfo `xml:"connectable,omitempty"` - SlotInfo BaseVirtualDeviceBusSlotInfo `xml:"slotInfo,omitempty,typeattr"` - ControllerKey int32 `xml:"controllerKey,omitempty"` - UnitNumber *int32 `xml:"unitNumber"` -} - -func init() { - t["VirtualDevice"] = reflect.TypeOf((*VirtualDevice)(nil)).Elem() -} - -type VirtualDeviceBackingInfo struct { - DynamicData -} - -func init() { - t["VirtualDeviceBackingInfo"] = reflect.TypeOf((*VirtualDeviceBackingInfo)(nil)).Elem() -} - -type VirtualDeviceBackingOption struct { - DynamicData - - Type string `xml:"type"` -} - -func init() { - t["VirtualDeviceBackingOption"] = reflect.TypeOf((*VirtualDeviceBackingOption)(nil)).Elem() -} - -type VirtualDeviceBusSlotInfo struct { - DynamicData -} - -func init() { - t["VirtualDeviceBusSlotInfo"] = reflect.TypeOf((*VirtualDeviceBusSlotInfo)(nil)).Elem() -} - -type VirtualDeviceBusSlotOption struct { - DynamicData - - Type string `xml:"type"` -} - -func init() { - t["VirtualDeviceBusSlotOption"] = reflect.TypeOf((*VirtualDeviceBusSlotOption)(nil)).Elem() -} - -type VirtualDeviceConfigSpec struct { - DynamicData - - Operation VirtualDeviceConfigSpecOperation `xml:"operation,omitempty"` - FileOperation VirtualDeviceConfigSpecFileOperation `xml:"fileOperation,omitempty"` - Device BaseVirtualDevice `xml:"device,typeattr"` - Profile []BaseVirtualMachineProfileSpec `xml:"profile,omitempty,typeattr"` -} - -func init() { - t["VirtualDeviceConfigSpec"] = reflect.TypeOf((*VirtualDeviceConfigSpec)(nil)).Elem() -} - -type VirtualDeviceConnectInfo struct { - DynamicData - - StartConnected bool `xml:"startConnected"` - AllowGuestControl bool `xml:"allowGuestControl"` - Connected bool `xml:"connected"` - Status string `xml:"status,omitempty"` -} - -func init() { - t["VirtualDeviceConnectInfo"] = reflect.TypeOf((*VirtualDeviceConnectInfo)(nil)).Elem() -} - -type VirtualDeviceConnectOption struct { - DynamicData - - StartConnected BoolOption `xml:"startConnected"` - AllowGuestControl BoolOption `xml:"allowGuestControl"` -} - -func init() { - t["VirtualDeviceConnectOption"] = reflect.TypeOf((*VirtualDeviceConnectOption)(nil)).Elem() -} - -type VirtualDeviceDeviceBackingInfo struct { - VirtualDeviceBackingInfo - - DeviceName string `xml:"deviceName"` - UseAutoDetect *bool `xml:"useAutoDetect"` -} - -func init() { - t["VirtualDeviceDeviceBackingInfo"] = reflect.TypeOf((*VirtualDeviceDeviceBackingInfo)(nil)).Elem() -} - -type VirtualDeviceDeviceBackingOption struct { - VirtualDeviceBackingOption - - AutoDetectAvailable BoolOption `xml:"autoDetectAvailable"` -} - -func init() { - t["VirtualDeviceDeviceBackingOption"] = reflect.TypeOf((*VirtualDeviceDeviceBackingOption)(nil)).Elem() -} - -type VirtualDeviceFileBackingInfo struct { - VirtualDeviceBackingInfo - - FileName string `xml:"fileName"` - Datastore *ManagedObjectReference `xml:"datastore,omitempty"` - BackingObjectId string `xml:"backingObjectId,omitempty"` -} - -func init() { - t["VirtualDeviceFileBackingInfo"] = reflect.TypeOf((*VirtualDeviceFileBackingInfo)(nil)).Elem() -} - -type VirtualDeviceFileBackingOption struct { - VirtualDeviceBackingOption - - FileNameExtensions *ChoiceOption `xml:"fileNameExtensions,omitempty"` -} - -func init() { - t["VirtualDeviceFileBackingOption"] = reflect.TypeOf((*VirtualDeviceFileBackingOption)(nil)).Elem() -} - -type VirtualDeviceOption struct { - DynamicData - - Type string `xml:"type"` - ConnectOption *VirtualDeviceConnectOption `xml:"connectOption,omitempty"` - BusSlotOption *VirtualDeviceBusSlotOption `xml:"busSlotOption,omitempty"` - ControllerType string `xml:"controllerType,omitempty"` - AutoAssignController *BoolOption `xml:"autoAssignController,omitempty"` - BackingOption []BaseVirtualDeviceBackingOption `xml:"backingOption,omitempty,typeattr"` - DefaultBackingOptionIndex int32 `xml:"defaultBackingOptionIndex,omitempty"` - LicensingLimit []string `xml:"licensingLimit,omitempty"` - Deprecated bool `xml:"deprecated"` - PlugAndPlay bool `xml:"plugAndPlay"` - HotRemoveSupported *bool `xml:"hotRemoveSupported"` -} - -func init() { - t["VirtualDeviceOption"] = reflect.TypeOf((*VirtualDeviceOption)(nil)).Elem() -} - -type VirtualDevicePciBusSlotInfo struct { - VirtualDeviceBusSlotInfo - - PciSlotNumber int32 `xml:"pciSlotNumber"` -} - -func init() { - t["VirtualDevicePciBusSlotInfo"] = reflect.TypeOf((*VirtualDevicePciBusSlotInfo)(nil)).Elem() -} - -type VirtualDevicePipeBackingInfo struct { - VirtualDeviceBackingInfo - - PipeName string `xml:"pipeName"` -} - -func init() { - t["VirtualDevicePipeBackingInfo"] = reflect.TypeOf((*VirtualDevicePipeBackingInfo)(nil)).Elem() -} - -type VirtualDevicePipeBackingOption struct { - VirtualDeviceBackingOption -} - -func init() { - t["VirtualDevicePipeBackingOption"] = reflect.TypeOf((*VirtualDevicePipeBackingOption)(nil)).Elem() -} - -type VirtualDeviceRemoteDeviceBackingInfo struct { - VirtualDeviceBackingInfo - - DeviceName string `xml:"deviceName"` - UseAutoDetect *bool `xml:"useAutoDetect"` -} - -func init() { - t["VirtualDeviceRemoteDeviceBackingInfo"] = reflect.TypeOf((*VirtualDeviceRemoteDeviceBackingInfo)(nil)).Elem() -} - -type VirtualDeviceRemoteDeviceBackingOption struct { - VirtualDeviceBackingOption - - AutoDetectAvailable BoolOption `xml:"autoDetectAvailable"` -} - -func init() { - t["VirtualDeviceRemoteDeviceBackingOption"] = reflect.TypeOf((*VirtualDeviceRemoteDeviceBackingOption)(nil)).Elem() -} - -type VirtualDeviceURIBackingInfo struct { - VirtualDeviceBackingInfo - - ServiceURI string `xml:"serviceURI"` - Direction string `xml:"direction"` - ProxyURI string `xml:"proxyURI,omitempty"` -} - -func init() { - t["VirtualDeviceURIBackingInfo"] = reflect.TypeOf((*VirtualDeviceURIBackingInfo)(nil)).Elem() -} - -type VirtualDeviceURIBackingOption struct { - VirtualDeviceBackingOption - - Directions ChoiceOption `xml:"directions"` -} - -func init() { - t["VirtualDeviceURIBackingOption"] = reflect.TypeOf((*VirtualDeviceURIBackingOption)(nil)).Elem() -} - -type VirtualDisk struct { - VirtualDevice - - CapacityInKB int64 `xml:"capacityInKB"` - CapacityInBytes int64 `xml:"capacityInBytes,omitempty"` - Shares *SharesInfo `xml:"shares,omitempty"` - StorageIOAllocation *StorageIOAllocationInfo `xml:"storageIOAllocation,omitempty"` - DiskObjectId string `xml:"diskObjectId,omitempty"` - VFlashCacheConfigInfo *VirtualDiskVFlashCacheConfigInfo `xml:"vFlashCacheConfigInfo,omitempty"` - Iofilter []string `xml:"iofilter,omitempty"` -} - -func init() { - t["VirtualDisk"] = reflect.TypeOf((*VirtualDisk)(nil)).Elem() -} - -type VirtualDiskAntiAffinityRuleSpec struct { - ClusterRuleInfo - - DiskId []int32 `xml:"diskId"` -} - -func init() { - t["VirtualDiskAntiAffinityRuleSpec"] = reflect.TypeOf((*VirtualDiskAntiAffinityRuleSpec)(nil)).Elem() -} - -type VirtualDiskBlocksNotFullyProvisioned struct { - DeviceBackingNotSupported -} - -func init() { - t["VirtualDiskBlocksNotFullyProvisioned"] = reflect.TypeOf((*VirtualDiskBlocksNotFullyProvisioned)(nil)).Elem() -} - -type VirtualDiskBlocksNotFullyProvisionedFault VirtualDiskBlocksNotFullyProvisioned - -func init() { - t["VirtualDiskBlocksNotFullyProvisionedFault"] = reflect.TypeOf((*VirtualDiskBlocksNotFullyProvisionedFault)(nil)).Elem() -} - -type VirtualDiskConfigSpec struct { - VirtualDeviceConfigSpec - - DiskMoveType string `xml:"diskMoveType,omitempty"` - MigrateCache *bool `xml:"migrateCache"` -} - -func init() { - t["VirtualDiskConfigSpec"] = reflect.TypeOf((*VirtualDiskConfigSpec)(nil)).Elem() -} - -type VirtualDiskDeltaDiskFormatsSupported struct { - DynamicData - - DatastoreType string `xml:"datastoreType"` - DeltaDiskFormat ChoiceOption `xml:"deltaDiskFormat"` -} - -func init() { - t["VirtualDiskDeltaDiskFormatsSupported"] = reflect.TypeOf((*VirtualDiskDeltaDiskFormatsSupported)(nil)).Elem() -} - -type VirtualDiskFlatVer1BackingInfo struct { - VirtualDeviceFileBackingInfo - - DiskMode string `xml:"diskMode"` - Split *bool `xml:"split"` - WriteThrough *bool `xml:"writeThrough"` - ContentId string `xml:"contentId,omitempty"` - Parent *VirtualDiskFlatVer1BackingInfo `xml:"parent,omitempty"` -} - -func init() { - t["VirtualDiskFlatVer1BackingInfo"] = reflect.TypeOf((*VirtualDiskFlatVer1BackingInfo)(nil)).Elem() -} - -type VirtualDiskFlatVer1BackingOption struct { - VirtualDeviceFileBackingOption - - DiskMode ChoiceOption `xml:"diskMode"` - Split BoolOption `xml:"split"` - WriteThrough BoolOption `xml:"writeThrough"` - Growable bool `xml:"growable"` -} - -func init() { - t["VirtualDiskFlatVer1BackingOption"] = reflect.TypeOf((*VirtualDiskFlatVer1BackingOption)(nil)).Elem() -} - -type VirtualDiskFlatVer2BackingInfo struct { - VirtualDeviceFileBackingInfo - - DiskMode string `xml:"diskMode"` - Split *bool `xml:"split"` - WriteThrough *bool `xml:"writeThrough"` - ThinProvisioned *bool `xml:"thinProvisioned"` - EagerlyScrub *bool `xml:"eagerlyScrub"` - Uuid string `xml:"uuid,omitempty"` - ContentId string `xml:"contentId,omitempty"` - ChangeId string `xml:"changeId,omitempty"` - Parent *VirtualDiskFlatVer2BackingInfo `xml:"parent,omitempty"` - DeltaDiskFormat string `xml:"deltaDiskFormat,omitempty"` - DigestEnabled *bool `xml:"digestEnabled"` - DeltaGrainSize int32 `xml:"deltaGrainSize,omitempty"` - DeltaDiskFormatVariant string `xml:"deltaDiskFormatVariant,omitempty"` - Sharing string `xml:"sharing,omitempty"` -} - -func init() { - t["VirtualDiskFlatVer2BackingInfo"] = reflect.TypeOf((*VirtualDiskFlatVer2BackingInfo)(nil)).Elem() -} - -type VirtualDiskFlatVer2BackingOption struct { - VirtualDeviceFileBackingOption - - DiskMode ChoiceOption `xml:"diskMode"` - Split BoolOption `xml:"split"` - WriteThrough BoolOption `xml:"writeThrough"` - Growable bool `xml:"growable"` - HotGrowable bool `xml:"hotGrowable"` - Uuid bool `xml:"uuid"` - ThinProvisioned *BoolOption `xml:"thinProvisioned,omitempty"` - EagerlyScrub *BoolOption `xml:"eagerlyScrub,omitempty"` - DeltaDiskFormat *ChoiceOption `xml:"deltaDiskFormat,omitempty"` - DeltaDiskFormatsSupported []VirtualDiskDeltaDiskFormatsSupported `xml:"deltaDiskFormatsSupported,omitempty"` -} - -func init() { - t["VirtualDiskFlatVer2BackingOption"] = reflect.TypeOf((*VirtualDiskFlatVer2BackingOption)(nil)).Elem() -} - -type VirtualDiskId struct { - DynamicData - - Vm ManagedObjectReference `xml:"vm"` - DiskId int32 `xml:"diskId"` -} - -func init() { - t["VirtualDiskId"] = reflect.TypeOf((*VirtualDiskId)(nil)).Elem() -} - -type VirtualDiskModeNotSupported struct { - DeviceNotSupported - - Mode string `xml:"mode"` -} - -func init() { - t["VirtualDiskModeNotSupported"] = reflect.TypeOf((*VirtualDiskModeNotSupported)(nil)).Elem() -} - -type VirtualDiskModeNotSupportedFault VirtualDiskModeNotSupported - -func init() { - t["VirtualDiskModeNotSupportedFault"] = reflect.TypeOf((*VirtualDiskModeNotSupportedFault)(nil)).Elem() -} - -type VirtualDiskOption struct { - VirtualDeviceOption - - CapacityInKB LongOption `xml:"capacityInKB"` - IoAllocationOption *StorageIOAllocationOption `xml:"ioAllocationOption,omitempty"` - VFlashCacheConfigOption *VirtualDiskOptionVFlashCacheConfigOption `xml:"vFlashCacheConfigOption,omitempty"` -} - -func init() { - t["VirtualDiskOption"] = reflect.TypeOf((*VirtualDiskOption)(nil)).Elem() -} - -type VirtualDiskOptionVFlashCacheConfigOption struct { - DynamicData - - CacheConsistencyType ChoiceOption `xml:"cacheConsistencyType"` - CacheMode ChoiceOption `xml:"cacheMode"` - ReservationInMB LongOption `xml:"reservationInMB"` - BlockSizeInKB LongOption `xml:"blockSizeInKB"` -} - -func init() { - t["VirtualDiskOptionVFlashCacheConfigOption"] = reflect.TypeOf((*VirtualDiskOptionVFlashCacheConfigOption)(nil)).Elem() -} - -type VirtualDiskPartitionedRawDiskVer2BackingInfo struct { - VirtualDiskRawDiskVer2BackingInfo - - Partition []int32 `xml:"partition"` -} - -func init() { - t["VirtualDiskPartitionedRawDiskVer2BackingInfo"] = reflect.TypeOf((*VirtualDiskPartitionedRawDiskVer2BackingInfo)(nil)).Elem() -} - -type VirtualDiskPartitionedRawDiskVer2BackingOption struct { - VirtualDiskRawDiskVer2BackingOption -} - -func init() { - t["VirtualDiskPartitionedRawDiskVer2BackingOption"] = reflect.TypeOf((*VirtualDiskPartitionedRawDiskVer2BackingOption)(nil)).Elem() -} - -type VirtualDiskRawDiskMappingVer1BackingInfo struct { - VirtualDeviceFileBackingInfo - - LunUuid string `xml:"lunUuid,omitempty"` - DeviceName string `xml:"deviceName,omitempty"` - CompatibilityMode string `xml:"compatibilityMode,omitempty"` - DiskMode string `xml:"diskMode,omitempty"` - Uuid string `xml:"uuid,omitempty"` - ContentId string `xml:"contentId,omitempty"` - ChangeId string `xml:"changeId,omitempty"` - Parent *VirtualDiskRawDiskMappingVer1BackingInfo `xml:"parent,omitempty"` - Sharing string `xml:"sharing,omitempty"` -} - -func init() { - t["VirtualDiskRawDiskMappingVer1BackingInfo"] = reflect.TypeOf((*VirtualDiskRawDiskMappingVer1BackingInfo)(nil)).Elem() -} - -type VirtualDiskRawDiskMappingVer1BackingOption struct { - VirtualDeviceDeviceBackingOption - - DescriptorFileNameExtensions *ChoiceOption `xml:"descriptorFileNameExtensions,omitempty"` - CompatibilityMode ChoiceOption `xml:"compatibilityMode"` - DiskMode ChoiceOption `xml:"diskMode"` - Uuid bool `xml:"uuid"` -} - -func init() { - t["VirtualDiskRawDiskMappingVer1BackingOption"] = reflect.TypeOf((*VirtualDiskRawDiskMappingVer1BackingOption)(nil)).Elem() -} - -type VirtualDiskRawDiskVer2BackingInfo struct { - VirtualDeviceDeviceBackingInfo - - DescriptorFileName string `xml:"descriptorFileName"` - Uuid string `xml:"uuid,omitempty"` - ChangeId string `xml:"changeId,omitempty"` - Sharing string `xml:"sharing,omitempty"` -} - -func init() { - t["VirtualDiskRawDiskVer2BackingInfo"] = reflect.TypeOf((*VirtualDiskRawDiskVer2BackingInfo)(nil)).Elem() -} - -type VirtualDiskRawDiskVer2BackingOption struct { - VirtualDeviceDeviceBackingOption - - DescriptorFileNameExtensions ChoiceOption `xml:"descriptorFileNameExtensions"` - Uuid bool `xml:"uuid"` -} - -func init() { - t["VirtualDiskRawDiskVer2BackingOption"] = reflect.TypeOf((*VirtualDiskRawDiskVer2BackingOption)(nil)).Elem() -} - -type VirtualDiskSeSparseBackingInfo struct { - VirtualDeviceFileBackingInfo - - DiskMode string `xml:"diskMode"` - WriteThrough *bool `xml:"writeThrough"` - Uuid string `xml:"uuid,omitempty"` - ContentId string `xml:"contentId,omitempty"` - ChangeId string `xml:"changeId,omitempty"` - Parent *VirtualDiskSeSparseBackingInfo `xml:"parent,omitempty"` - DeltaDiskFormat string `xml:"deltaDiskFormat,omitempty"` - DigestEnabled *bool `xml:"digestEnabled"` - GrainSize int32 `xml:"grainSize,omitempty"` -} - -func init() { - t["VirtualDiskSeSparseBackingInfo"] = reflect.TypeOf((*VirtualDiskSeSparseBackingInfo)(nil)).Elem() -} - -type VirtualDiskSeSparseBackingOption struct { - VirtualDeviceFileBackingOption - - DiskMode ChoiceOption `xml:"diskMode"` - WriteThrough BoolOption `xml:"writeThrough"` - Growable bool `xml:"growable"` - HotGrowable bool `xml:"hotGrowable"` - Uuid bool `xml:"uuid"` - DeltaDiskFormatsSupported []VirtualDiskDeltaDiskFormatsSupported `xml:"deltaDiskFormatsSupported"` -} - -func init() { - t["VirtualDiskSeSparseBackingOption"] = reflect.TypeOf((*VirtualDiskSeSparseBackingOption)(nil)).Elem() -} - -type VirtualDiskSparseVer1BackingInfo struct { - VirtualDeviceFileBackingInfo - - DiskMode string `xml:"diskMode"` - Split *bool `xml:"split"` - WriteThrough *bool `xml:"writeThrough"` - SpaceUsedInKB int64 `xml:"spaceUsedInKB,omitempty"` - ContentId string `xml:"contentId,omitempty"` - Parent *VirtualDiskSparseVer1BackingInfo `xml:"parent,omitempty"` -} - -func init() { - t["VirtualDiskSparseVer1BackingInfo"] = reflect.TypeOf((*VirtualDiskSparseVer1BackingInfo)(nil)).Elem() -} - -type VirtualDiskSparseVer1BackingOption struct { - VirtualDeviceFileBackingOption - - DiskModes ChoiceOption `xml:"diskModes"` - Split BoolOption `xml:"split"` - WriteThrough BoolOption `xml:"writeThrough"` - Growable bool `xml:"growable"` -} - -func init() { - t["VirtualDiskSparseVer1BackingOption"] = reflect.TypeOf((*VirtualDiskSparseVer1BackingOption)(nil)).Elem() -} - -type VirtualDiskSparseVer2BackingInfo struct { - VirtualDeviceFileBackingInfo - - DiskMode string `xml:"diskMode"` - Split *bool `xml:"split"` - WriteThrough *bool `xml:"writeThrough"` - SpaceUsedInKB int64 `xml:"spaceUsedInKB,omitempty"` - Uuid string `xml:"uuid,omitempty"` - ContentId string `xml:"contentId,omitempty"` - ChangeId string `xml:"changeId,omitempty"` - Parent *VirtualDiskSparseVer2BackingInfo `xml:"parent,omitempty"` -} - -func init() { - t["VirtualDiskSparseVer2BackingInfo"] = reflect.TypeOf((*VirtualDiskSparseVer2BackingInfo)(nil)).Elem() -} - -type VirtualDiskSparseVer2BackingOption struct { - VirtualDeviceFileBackingOption - - DiskMode ChoiceOption `xml:"diskMode"` - Split BoolOption `xml:"split"` - WriteThrough BoolOption `xml:"writeThrough"` - Growable bool `xml:"growable"` - HotGrowable bool `xml:"hotGrowable"` - Uuid bool `xml:"uuid"` -} - -func init() { - t["VirtualDiskSparseVer2BackingOption"] = reflect.TypeOf((*VirtualDiskSparseVer2BackingOption)(nil)).Elem() -} - -type VirtualDiskSpec struct { - DynamicData - - DiskType string `xml:"diskType"` - AdapterType string `xml:"adapterType"` -} - -func init() { - t["VirtualDiskSpec"] = reflect.TypeOf((*VirtualDiskSpec)(nil)).Elem() -} - -type VirtualDiskVFlashCacheConfigInfo struct { - DynamicData - - VFlashModule string `xml:"vFlashModule,omitempty"` - ReservationInMB int64 `xml:"reservationInMB,omitempty"` - CacheConsistencyType string `xml:"cacheConsistencyType,omitempty"` - CacheMode string `xml:"cacheMode,omitempty"` - BlockSizeInKB int64 `xml:"blockSizeInKB,omitempty"` -} - -func init() { - t["VirtualDiskVFlashCacheConfigInfo"] = reflect.TypeOf((*VirtualDiskVFlashCacheConfigInfo)(nil)).Elem() -} - -type VirtualE1000 struct { - VirtualEthernetCard -} - -func init() { - t["VirtualE1000"] = reflect.TypeOf((*VirtualE1000)(nil)).Elem() -} - -type VirtualE1000Option struct { - VirtualEthernetCardOption -} - -func init() { - t["VirtualE1000Option"] = reflect.TypeOf((*VirtualE1000Option)(nil)).Elem() -} - -type VirtualE1000e struct { - VirtualEthernetCard -} - -func init() { - t["VirtualE1000e"] = reflect.TypeOf((*VirtualE1000e)(nil)).Elem() -} - -type VirtualE1000eOption struct { - VirtualEthernetCardOption -} - -func init() { - t["VirtualE1000eOption"] = reflect.TypeOf((*VirtualE1000eOption)(nil)).Elem() -} - -type VirtualEnsoniq1371 struct { - VirtualSoundCard -} - -func init() { - t["VirtualEnsoniq1371"] = reflect.TypeOf((*VirtualEnsoniq1371)(nil)).Elem() -} - -type VirtualEnsoniq1371Option struct { - VirtualSoundCardOption -} - -func init() { - t["VirtualEnsoniq1371Option"] = reflect.TypeOf((*VirtualEnsoniq1371Option)(nil)).Elem() -} - -type VirtualEthernetCard struct { - VirtualDevice - - AddressType string `xml:"addressType,omitempty"` - MacAddress string `xml:"macAddress,omitempty"` - WakeOnLanEnabled *bool `xml:"wakeOnLanEnabled"` - ResourceAllocation *VirtualEthernetCardResourceAllocation `xml:"resourceAllocation,omitempty"` - ExternalId string `xml:"externalId,omitempty"` - UptCompatibilityEnabled *bool `xml:"uptCompatibilityEnabled"` -} - -func init() { - t["VirtualEthernetCard"] = reflect.TypeOf((*VirtualEthernetCard)(nil)).Elem() -} - -type VirtualEthernetCardDVPortBackingOption struct { - VirtualDeviceBackingOption -} - -func init() { - t["VirtualEthernetCardDVPortBackingOption"] = reflect.TypeOf((*VirtualEthernetCardDVPortBackingOption)(nil)).Elem() -} - -type VirtualEthernetCardDistributedVirtualPortBackingInfo struct { - VirtualDeviceBackingInfo - - Port DistributedVirtualSwitchPortConnection `xml:"port"` -} - -func init() { - t["VirtualEthernetCardDistributedVirtualPortBackingInfo"] = reflect.TypeOf((*VirtualEthernetCardDistributedVirtualPortBackingInfo)(nil)).Elem() -} - -type VirtualEthernetCardLegacyNetworkBackingInfo struct { - VirtualDeviceDeviceBackingInfo -} - -func init() { - t["VirtualEthernetCardLegacyNetworkBackingInfo"] = reflect.TypeOf((*VirtualEthernetCardLegacyNetworkBackingInfo)(nil)).Elem() -} - -type VirtualEthernetCardLegacyNetworkBackingOption struct { - VirtualDeviceDeviceBackingOption -} - -func init() { - t["VirtualEthernetCardLegacyNetworkBackingOption"] = reflect.TypeOf((*VirtualEthernetCardLegacyNetworkBackingOption)(nil)).Elem() -} - -type VirtualEthernetCardNetworkBackingInfo struct { - VirtualDeviceDeviceBackingInfo - - Network *ManagedObjectReference `xml:"network,omitempty"` - InPassthroughMode *bool `xml:"inPassthroughMode"` -} - -func init() { - t["VirtualEthernetCardNetworkBackingInfo"] = reflect.TypeOf((*VirtualEthernetCardNetworkBackingInfo)(nil)).Elem() -} - -type VirtualEthernetCardNetworkBackingOption struct { - VirtualDeviceDeviceBackingOption -} - -func init() { - t["VirtualEthernetCardNetworkBackingOption"] = reflect.TypeOf((*VirtualEthernetCardNetworkBackingOption)(nil)).Elem() -} - -type VirtualEthernetCardNotSupported struct { - DeviceNotSupported -} - -func init() { - t["VirtualEthernetCardNotSupported"] = reflect.TypeOf((*VirtualEthernetCardNotSupported)(nil)).Elem() -} - -type VirtualEthernetCardNotSupportedFault VirtualEthernetCardNotSupported - -func init() { - t["VirtualEthernetCardNotSupportedFault"] = reflect.TypeOf((*VirtualEthernetCardNotSupportedFault)(nil)).Elem() -} - -type VirtualEthernetCardOpaqueNetworkBackingInfo struct { - VirtualDeviceBackingInfo - - OpaqueNetworkId string `xml:"opaqueNetworkId"` - OpaqueNetworkType string `xml:"opaqueNetworkType"` -} - -func init() { - t["VirtualEthernetCardOpaqueNetworkBackingInfo"] = reflect.TypeOf((*VirtualEthernetCardOpaqueNetworkBackingInfo)(nil)).Elem() -} - -type VirtualEthernetCardOpaqueNetworkBackingOption struct { - VirtualDeviceBackingOption -} - -func init() { - t["VirtualEthernetCardOpaqueNetworkBackingOption"] = reflect.TypeOf((*VirtualEthernetCardOpaqueNetworkBackingOption)(nil)).Elem() -} - -type VirtualEthernetCardOption struct { - VirtualDeviceOption - - SupportedOUI ChoiceOption `xml:"supportedOUI"` - MacType ChoiceOption `xml:"macType"` - WakeOnLanEnabled BoolOption `xml:"wakeOnLanEnabled"` - VmDirectPathGen2Supported *bool `xml:"vmDirectPathGen2Supported"` - UptCompatibilityEnabled *BoolOption `xml:"uptCompatibilityEnabled,omitempty"` -} - -func init() { - t["VirtualEthernetCardOption"] = reflect.TypeOf((*VirtualEthernetCardOption)(nil)).Elem() -} - -type VirtualEthernetCardResourceAllocation struct { - DynamicData - - Reservation int64 `xml:"reservation,omitempty"` - Share SharesInfo `xml:"share"` - Limit int64 `xml:"limit,omitempty"` -} - -func init() { - t["VirtualEthernetCardResourceAllocation"] = reflect.TypeOf((*VirtualEthernetCardResourceAllocation)(nil)).Elem() -} - -type VirtualFloppy struct { - VirtualDevice -} - -func init() { - t["VirtualFloppy"] = reflect.TypeOf((*VirtualFloppy)(nil)).Elem() -} - -type VirtualFloppyDeviceBackingInfo struct { - VirtualDeviceDeviceBackingInfo -} - -func init() { - t["VirtualFloppyDeviceBackingInfo"] = reflect.TypeOf((*VirtualFloppyDeviceBackingInfo)(nil)).Elem() -} - -type VirtualFloppyDeviceBackingOption struct { - VirtualDeviceDeviceBackingOption -} - -func init() { - t["VirtualFloppyDeviceBackingOption"] = reflect.TypeOf((*VirtualFloppyDeviceBackingOption)(nil)).Elem() -} - -type VirtualFloppyImageBackingInfo struct { - VirtualDeviceFileBackingInfo -} - -func init() { - t["VirtualFloppyImageBackingInfo"] = reflect.TypeOf((*VirtualFloppyImageBackingInfo)(nil)).Elem() -} - -type VirtualFloppyImageBackingOption struct { - VirtualDeviceFileBackingOption -} - -func init() { - t["VirtualFloppyImageBackingOption"] = reflect.TypeOf((*VirtualFloppyImageBackingOption)(nil)).Elem() -} - -type VirtualFloppyOption struct { - VirtualDeviceOption -} - -func init() { - t["VirtualFloppyOption"] = reflect.TypeOf((*VirtualFloppyOption)(nil)).Elem() -} - -type VirtualFloppyRemoteDeviceBackingInfo struct { - VirtualDeviceRemoteDeviceBackingInfo -} - -func init() { - t["VirtualFloppyRemoteDeviceBackingInfo"] = reflect.TypeOf((*VirtualFloppyRemoteDeviceBackingInfo)(nil)).Elem() -} - -type VirtualFloppyRemoteDeviceBackingOption struct { - VirtualDeviceRemoteDeviceBackingOption -} - -func init() { - t["VirtualFloppyRemoteDeviceBackingOption"] = reflect.TypeOf((*VirtualFloppyRemoteDeviceBackingOption)(nil)).Elem() -} - -type VirtualHardware struct { - DynamicData - - NumCPU int32 `xml:"numCPU"` - NumCoresPerSocket int32 `xml:"numCoresPerSocket,omitempty"` - MemoryMB int32 `xml:"memoryMB"` - VirtualICH7MPresent *bool `xml:"virtualICH7MPresent"` - VirtualSMCPresent *bool `xml:"virtualSMCPresent"` - Device []BaseVirtualDevice `xml:"device,omitempty,typeattr"` -} - -func init() { - t["VirtualHardware"] = reflect.TypeOf((*VirtualHardware)(nil)).Elem() -} - -type VirtualHardwareCompatibilityIssue struct { - VmConfigFault -} - -func init() { - t["VirtualHardwareCompatibilityIssue"] = reflect.TypeOf((*VirtualHardwareCompatibilityIssue)(nil)).Elem() -} - -type VirtualHardwareCompatibilityIssueFault BaseVirtualHardwareCompatibilityIssue - -func init() { - t["VirtualHardwareCompatibilityIssueFault"] = reflect.TypeOf((*VirtualHardwareCompatibilityIssueFault)(nil)).Elem() -} - -type VirtualHardwareOption struct { - DynamicData - - HwVersion int32 `xml:"hwVersion"` - VirtualDeviceOption []BaseVirtualDeviceOption `xml:"virtualDeviceOption,typeattr"` - DeviceListReadonly bool `xml:"deviceListReadonly"` - NumCPU []int32 `xml:"numCPU"` - NumCoresPerSocket *IntOption `xml:"numCoresPerSocket,omitempty"` - NumCpuReadonly bool `xml:"numCpuReadonly"` - MemoryMB LongOption `xml:"memoryMB"` - NumPCIControllers IntOption `xml:"numPCIControllers"` - NumIDEControllers IntOption `xml:"numIDEControllers"` - NumUSBControllers IntOption `xml:"numUSBControllers"` - NumUSBXHCIControllers *IntOption `xml:"numUSBXHCIControllers,omitempty"` - NumSIOControllers IntOption `xml:"numSIOControllers"` - NumPS2Controllers IntOption `xml:"numPS2Controllers"` - LicensingLimit []string `xml:"licensingLimit,omitempty"` - NumSupportedWwnPorts *IntOption `xml:"numSupportedWwnPorts,omitempty"` - NumSupportedWwnNodes *IntOption `xml:"numSupportedWwnNodes,omitempty"` - ResourceConfigOption *ResourceConfigOption `xml:"resourceConfigOption,omitempty"` -} - -func init() { - t["VirtualHardwareOption"] = reflect.TypeOf((*VirtualHardwareOption)(nil)).Elem() -} - -type VirtualHardwareVersionNotSupported struct { - VirtualHardwareCompatibilityIssue - - HostName string `xml:"hostName"` - Host ManagedObjectReference `xml:"host"` -} - -func init() { - t["VirtualHardwareVersionNotSupported"] = reflect.TypeOf((*VirtualHardwareVersionNotSupported)(nil)).Elem() -} - -type VirtualHardwareVersionNotSupportedFault VirtualHardwareVersionNotSupported - -func init() { - t["VirtualHardwareVersionNotSupportedFault"] = reflect.TypeOf((*VirtualHardwareVersionNotSupportedFault)(nil)).Elem() -} - -type VirtualHdAudioCard struct { - VirtualSoundCard -} - -func init() { - t["VirtualHdAudioCard"] = reflect.TypeOf((*VirtualHdAudioCard)(nil)).Elem() -} - -type VirtualHdAudioCardOption struct { - VirtualSoundCardOption -} - -func init() { - t["VirtualHdAudioCardOption"] = reflect.TypeOf((*VirtualHdAudioCardOption)(nil)).Elem() -} - -type VirtualIDEController struct { - VirtualController -} - -func init() { - t["VirtualIDEController"] = reflect.TypeOf((*VirtualIDEController)(nil)).Elem() -} - -type VirtualIDEControllerOption struct { - VirtualControllerOption - - NumIDEDisks IntOption `xml:"numIDEDisks"` - NumIDECdroms IntOption `xml:"numIDECdroms"` -} - -func init() { - t["VirtualIDEControllerOption"] = reflect.TypeOf((*VirtualIDEControllerOption)(nil)).Elem() -} - -type VirtualKeyboard struct { - VirtualDevice -} - -func init() { - t["VirtualKeyboard"] = reflect.TypeOf((*VirtualKeyboard)(nil)).Elem() -} - -type VirtualKeyboardOption struct { - VirtualDeviceOption -} - -func init() { - t["VirtualKeyboardOption"] = reflect.TypeOf((*VirtualKeyboardOption)(nil)).Elem() -} - -type VirtualLsiLogicController struct { - VirtualSCSIController -} - -func init() { - t["VirtualLsiLogicController"] = reflect.TypeOf((*VirtualLsiLogicController)(nil)).Elem() -} - -type VirtualLsiLogicControllerOption struct { - VirtualSCSIControllerOption -} - -func init() { - t["VirtualLsiLogicControllerOption"] = reflect.TypeOf((*VirtualLsiLogicControllerOption)(nil)).Elem() -} - -type VirtualLsiLogicSASController struct { - VirtualSCSIController -} - -func init() { - t["VirtualLsiLogicSASController"] = reflect.TypeOf((*VirtualLsiLogicSASController)(nil)).Elem() -} - -type VirtualLsiLogicSASControllerOption struct { - VirtualSCSIControllerOption -} - -func init() { - t["VirtualLsiLogicSASControllerOption"] = reflect.TypeOf((*VirtualLsiLogicSASControllerOption)(nil)).Elem() -} - -type VirtualMachineAffinityInfo struct { - DynamicData - - AffinitySet []int32 `xml:"affinitySet,omitempty"` -} - -func init() { - t["VirtualMachineAffinityInfo"] = reflect.TypeOf((*VirtualMachineAffinityInfo)(nil)).Elem() -} - -type VirtualMachineBootOptions struct { - DynamicData - - BootDelay int64 `xml:"bootDelay,omitempty"` - EnterBIOSSetup *bool `xml:"enterBIOSSetup"` - BootRetryEnabled *bool `xml:"bootRetryEnabled"` - BootRetryDelay int64 `xml:"bootRetryDelay,omitempty"` - BootOrder []BaseVirtualMachineBootOptionsBootableDevice `xml:"bootOrder,omitempty,typeattr"` - NetworkBootProtocol string `xml:"networkBootProtocol,omitempty"` -} - -func init() { - t["VirtualMachineBootOptions"] = reflect.TypeOf((*VirtualMachineBootOptions)(nil)).Elem() -} - -type VirtualMachineBootOptionsBootableCdromDevice struct { - VirtualMachineBootOptionsBootableDevice -} - -func init() { - t["VirtualMachineBootOptionsBootableCdromDevice"] = reflect.TypeOf((*VirtualMachineBootOptionsBootableCdromDevice)(nil)).Elem() -} - -type VirtualMachineBootOptionsBootableDevice struct { - DynamicData -} - -func init() { - t["VirtualMachineBootOptionsBootableDevice"] = reflect.TypeOf((*VirtualMachineBootOptionsBootableDevice)(nil)).Elem() -} - -type VirtualMachineBootOptionsBootableDiskDevice struct { - VirtualMachineBootOptionsBootableDevice - - DeviceKey int32 `xml:"deviceKey"` -} - -func init() { - t["VirtualMachineBootOptionsBootableDiskDevice"] = reflect.TypeOf((*VirtualMachineBootOptionsBootableDiskDevice)(nil)).Elem() -} - -type VirtualMachineBootOptionsBootableEthernetDevice struct { - VirtualMachineBootOptionsBootableDevice - - DeviceKey int32 `xml:"deviceKey"` -} - -func init() { - t["VirtualMachineBootOptionsBootableEthernetDevice"] = reflect.TypeOf((*VirtualMachineBootOptionsBootableEthernetDevice)(nil)).Elem() -} - -type VirtualMachineBootOptionsBootableFloppyDevice struct { - VirtualMachineBootOptionsBootableDevice -} - -func init() { - t["VirtualMachineBootOptionsBootableFloppyDevice"] = reflect.TypeOf((*VirtualMachineBootOptionsBootableFloppyDevice)(nil)).Elem() -} - -type VirtualMachineCapability struct { - DynamicData - - SnapshotOperationsSupported bool `xml:"snapshotOperationsSupported"` - MultipleSnapshotsSupported bool `xml:"multipleSnapshotsSupported"` - SnapshotConfigSupported bool `xml:"snapshotConfigSupported"` - PoweredOffSnapshotsSupported bool `xml:"poweredOffSnapshotsSupported"` - MemorySnapshotsSupported bool `xml:"memorySnapshotsSupported"` - RevertToSnapshotSupported bool `xml:"revertToSnapshotSupported"` - QuiescedSnapshotsSupported bool `xml:"quiescedSnapshotsSupported"` - DisableSnapshotsSupported bool `xml:"disableSnapshotsSupported"` - LockSnapshotsSupported bool `xml:"lockSnapshotsSupported"` - ConsolePreferencesSupported bool `xml:"consolePreferencesSupported"` - CpuFeatureMaskSupported bool `xml:"cpuFeatureMaskSupported"` - S1AcpiManagementSupported bool `xml:"s1AcpiManagementSupported"` - SettingScreenResolutionSupported bool `xml:"settingScreenResolutionSupported"` - ToolsAutoUpdateSupported bool `xml:"toolsAutoUpdateSupported"` - VmNpivWwnSupported bool `xml:"vmNpivWwnSupported"` - NpivWwnOnNonRdmVmSupported bool `xml:"npivWwnOnNonRdmVmSupported"` - VmNpivWwnDisableSupported *bool `xml:"vmNpivWwnDisableSupported"` - VmNpivWwnUpdateSupported *bool `xml:"vmNpivWwnUpdateSupported"` - SwapPlacementSupported bool `xml:"swapPlacementSupported"` - ToolsSyncTimeSupported bool `xml:"toolsSyncTimeSupported"` - VirtualMmuUsageSupported bool `xml:"virtualMmuUsageSupported"` - DiskSharesSupported bool `xml:"diskSharesSupported"` - BootOptionsSupported bool `xml:"bootOptionsSupported"` - BootRetryOptionsSupported *bool `xml:"bootRetryOptionsSupported"` - SettingVideoRamSizeSupported bool `xml:"settingVideoRamSizeSupported"` - SettingDisplayTopologySupported *bool `xml:"settingDisplayTopologySupported"` - RecordReplaySupported *bool `xml:"recordReplaySupported"` - ChangeTrackingSupported *bool `xml:"changeTrackingSupported"` - MultipleCoresPerSocketSupported *bool `xml:"multipleCoresPerSocketSupported"` - HostBasedReplicationSupported *bool `xml:"hostBasedReplicationSupported"` - GuestAutoLockSupported *bool `xml:"guestAutoLockSupported"` - MemoryReservationLockSupported *bool `xml:"memoryReservationLockSupported"` - FeatureRequirementSupported *bool `xml:"featureRequirementSupported"` - PoweredOnMonitorTypeChangeSupported *bool `xml:"poweredOnMonitorTypeChangeSupported"` - SeSparseDiskSupported *bool `xml:"seSparseDiskSupported"` - NestedHVSupported *bool `xml:"nestedHVSupported"` - VPMCSupported *bool `xml:"vPMCSupported"` -} - -func init() { - t["VirtualMachineCapability"] = reflect.TypeOf((*VirtualMachineCapability)(nil)).Elem() -} - -type VirtualMachineCdromInfo struct { - VirtualMachineTargetInfo -} - -func init() { - t["VirtualMachineCdromInfo"] = reflect.TypeOf((*VirtualMachineCdromInfo)(nil)).Elem() -} - -type VirtualMachineCloneSpec struct { - DynamicData - - Location VirtualMachineRelocateSpec `xml:"location"` - Template bool `xml:"template"` - Config *VirtualMachineConfigSpec `xml:"config,omitempty"` - Customization *CustomizationSpec `xml:"customization,omitempty"` - PowerOn bool `xml:"powerOn"` - Snapshot *ManagedObjectReference `xml:"snapshot,omitempty"` - Memory *bool `xml:"memory"` -} - -func init() { - t["VirtualMachineCloneSpec"] = reflect.TypeOf((*VirtualMachineCloneSpec)(nil)).Elem() -} - -type VirtualMachineConfigInfo struct { - DynamicData - - ChangeVersion string `xml:"changeVersion"` - Modified time.Time `xml:"modified"` - Name string `xml:"name"` - GuestFullName string `xml:"guestFullName"` - Version string `xml:"version"` - Uuid string `xml:"uuid"` - InstanceUuid string `xml:"instanceUuid,omitempty"` - NpivNodeWorldWideName []int64 `xml:"npivNodeWorldWideName,omitempty"` - NpivPortWorldWideName []int64 `xml:"npivPortWorldWideName,omitempty"` - NpivWorldWideNameType string `xml:"npivWorldWideNameType,omitempty"` - NpivDesiredNodeWwns int16 `xml:"npivDesiredNodeWwns,omitempty"` - NpivDesiredPortWwns int16 `xml:"npivDesiredPortWwns,omitempty"` - NpivTemporaryDisabled *bool `xml:"npivTemporaryDisabled"` - NpivOnNonRdmDisks *bool `xml:"npivOnNonRdmDisks"` - LocationId string `xml:"locationId,omitempty"` - Template bool `xml:"template"` - GuestId string `xml:"guestId"` - AlternateGuestName string `xml:"alternateGuestName"` - Annotation string `xml:"annotation,omitempty"` - Files VirtualMachineFileInfo `xml:"files"` - Tools *ToolsConfigInfo `xml:"tools,omitempty"` - Flags VirtualMachineFlagInfo `xml:"flags"` - ConsolePreferences *VirtualMachineConsolePreferences `xml:"consolePreferences,omitempty"` - DefaultPowerOps VirtualMachineDefaultPowerOpInfo `xml:"defaultPowerOps"` - Hardware VirtualHardware `xml:"hardware"` - CpuAllocation BaseResourceAllocationInfo `xml:"cpuAllocation,omitempty,typeattr"` - MemoryAllocation BaseResourceAllocationInfo `xml:"memoryAllocation,omitempty,typeattr"` - LatencySensitivity *LatencySensitivity `xml:"latencySensitivity,omitempty"` - MemoryHotAddEnabled *bool `xml:"memoryHotAddEnabled"` - CpuHotAddEnabled *bool `xml:"cpuHotAddEnabled"` - CpuHotRemoveEnabled *bool `xml:"cpuHotRemoveEnabled"` - HotPlugMemoryLimit int64 `xml:"hotPlugMemoryLimit,omitempty"` - HotPlugMemoryIncrementSize int64 `xml:"hotPlugMemoryIncrementSize,omitempty"` - CpuAffinity *VirtualMachineAffinityInfo `xml:"cpuAffinity,omitempty"` - MemoryAffinity *VirtualMachineAffinityInfo `xml:"memoryAffinity,omitempty"` - NetworkShaper *VirtualMachineNetworkShaperInfo `xml:"networkShaper,omitempty"` - ExtraConfig []BaseOptionValue `xml:"extraConfig,omitempty,typeattr"` - CpuFeatureMask []HostCpuIdInfo `xml:"cpuFeatureMask,omitempty"` - DatastoreUrl []VirtualMachineConfigInfoDatastoreUrlPair `xml:"datastoreUrl,omitempty"` - SwapPlacement string `xml:"swapPlacement,omitempty"` - BootOptions *VirtualMachineBootOptions `xml:"bootOptions,omitempty"` - FtInfo BaseFaultToleranceConfigInfo `xml:"ftInfo,omitempty,typeattr"` - RepConfig *ReplicationConfigSpec `xml:"repConfig,omitempty"` - VAppConfig BaseVmConfigInfo `xml:"vAppConfig,omitempty,typeattr"` - VAssertsEnabled *bool `xml:"vAssertsEnabled"` - ChangeTrackingEnabled *bool `xml:"changeTrackingEnabled"` - Firmware string `xml:"firmware,omitempty"` - MaxMksConnections int32 `xml:"maxMksConnections,omitempty"` - GuestAutoLockEnabled *bool `xml:"guestAutoLockEnabled"` - ManagedBy *ManagedByInfo `xml:"managedBy,omitempty"` - MemoryReservationLockedToMax *bool `xml:"memoryReservationLockedToMax"` - InitialOverhead *VirtualMachineConfigInfoOverheadInfo `xml:"initialOverhead,omitempty"` - NestedHVEnabled *bool `xml:"nestedHVEnabled"` - VPMCEnabled *bool `xml:"vPMCEnabled"` - ScheduledHardwareUpgradeInfo *ScheduledHardwareUpgradeInfo `xml:"scheduledHardwareUpgradeInfo,omitempty"` - ForkConfigInfo *VirtualMachineForkConfigInfo `xml:"forkConfigInfo,omitempty"` - VFlashCacheReservation int64 `xml:"vFlashCacheReservation,omitempty"` - VmxConfigChecksum []byte `xml:"vmxConfigChecksum,omitempty"` - MessageBusTunnelEnabled *bool `xml:"messageBusTunnelEnabled"` - VmStorageObjectId string `xml:"vmStorageObjectId,omitempty"` - SwapStorageObjectId string `xml:"swapStorageObjectId,omitempty"` -} - -func init() { - t["VirtualMachineConfigInfo"] = reflect.TypeOf((*VirtualMachineConfigInfo)(nil)).Elem() -} - -type VirtualMachineConfigInfoDatastoreUrlPair struct { - DynamicData - - Name string `xml:"name"` - Url string `xml:"url"` -} - -func init() { - t["VirtualMachineConfigInfoDatastoreUrlPair"] = reflect.TypeOf((*VirtualMachineConfigInfoDatastoreUrlPair)(nil)).Elem() -} - -type VirtualMachineConfigInfoOverheadInfo struct { - DynamicData - - InitialMemoryReservation int64 `xml:"initialMemoryReservation,omitempty"` - InitialSwapReservation int64 `xml:"initialSwapReservation,omitempty"` -} - -func init() { - t["VirtualMachineConfigInfoOverheadInfo"] = reflect.TypeOf((*VirtualMachineConfigInfoOverheadInfo)(nil)).Elem() -} - -type VirtualMachineConfigOption struct { - DynamicData - - Version string `xml:"version"` - Description string `xml:"description"` - GuestOSDescriptor []GuestOsDescriptor `xml:"guestOSDescriptor"` - GuestOSDefaultIndex int32 `xml:"guestOSDefaultIndex"` - HardwareOptions VirtualHardwareOption `xml:"hardwareOptions"` - Capabilities VirtualMachineCapability `xml:"capabilities"` - Datastore DatastoreOption `xml:"datastore"` - DefaultDevice []BaseVirtualDevice `xml:"defaultDevice,omitempty,typeattr"` - SupportedMonitorType []string `xml:"supportedMonitorType"` - SupportedOvfEnvironmentTransport []string `xml:"supportedOvfEnvironmentTransport,omitempty"` - SupportedOvfInstallTransport []string `xml:"supportedOvfInstallTransport,omitempty"` -} - -func init() { - t["VirtualMachineConfigOption"] = reflect.TypeOf((*VirtualMachineConfigOption)(nil)).Elem() -} - -type VirtualMachineConfigOptionDescriptor struct { - DynamicData - - Key string `xml:"key"` - Description string `xml:"description,omitempty"` - Host []ManagedObjectReference `xml:"host,omitempty"` - CreateSupported *bool `xml:"createSupported"` - DefaultConfigOption *bool `xml:"defaultConfigOption"` - RunSupported *bool `xml:"runSupported"` - UpgradeSupported *bool `xml:"upgradeSupported"` -} - -func init() { - t["VirtualMachineConfigOptionDescriptor"] = reflect.TypeOf((*VirtualMachineConfigOptionDescriptor)(nil)).Elem() -} - -type VirtualMachineConfigSpec struct { - DynamicData - - ChangeVersion string `xml:"changeVersion,omitempty"` - Name string `xml:"name,omitempty"` - Version string `xml:"version,omitempty"` - Uuid string `xml:"uuid,omitempty"` - InstanceUuid string `xml:"instanceUuid,omitempty"` - NpivNodeWorldWideName []int64 `xml:"npivNodeWorldWideName,omitempty"` - NpivPortWorldWideName []int64 `xml:"npivPortWorldWideName,omitempty"` - NpivWorldWideNameType string `xml:"npivWorldWideNameType,omitempty"` - NpivDesiredNodeWwns int16 `xml:"npivDesiredNodeWwns,omitempty"` - NpivDesiredPortWwns int16 `xml:"npivDesiredPortWwns,omitempty"` - NpivTemporaryDisabled *bool `xml:"npivTemporaryDisabled"` - NpivOnNonRdmDisks *bool `xml:"npivOnNonRdmDisks"` - NpivWorldWideNameOp string `xml:"npivWorldWideNameOp,omitempty"` - LocationId string `xml:"locationId,omitempty"` - GuestId string `xml:"guestId,omitempty"` - AlternateGuestName string `xml:"alternateGuestName,omitempty"` - Annotation string `xml:"annotation,omitempty"` - Files *VirtualMachineFileInfo `xml:"files,omitempty"` - Tools *ToolsConfigInfo `xml:"tools,omitempty"` - Flags *VirtualMachineFlagInfo `xml:"flags,omitempty"` - ConsolePreferences *VirtualMachineConsolePreferences `xml:"consolePreferences,omitempty"` - PowerOpInfo *VirtualMachineDefaultPowerOpInfo `xml:"powerOpInfo,omitempty"` - NumCPUs int32 `xml:"numCPUs,omitempty"` - NumCoresPerSocket int32 `xml:"numCoresPerSocket,omitempty"` - MemoryMB int64 `xml:"memoryMB,omitempty"` - MemoryHotAddEnabled *bool `xml:"memoryHotAddEnabled"` - CpuHotAddEnabled *bool `xml:"cpuHotAddEnabled"` - CpuHotRemoveEnabled *bool `xml:"cpuHotRemoveEnabled"` - VirtualICH7MPresent *bool `xml:"virtualICH7MPresent"` - VirtualSMCPresent *bool `xml:"virtualSMCPresent"` - DeviceChange []BaseVirtualDeviceConfigSpec `xml:"deviceChange,omitempty,typeattr"` - CpuAllocation BaseResourceAllocationInfo `xml:"cpuAllocation,omitempty,typeattr"` - MemoryAllocation BaseResourceAllocationInfo `xml:"memoryAllocation,omitempty,typeattr"` - LatencySensitivity *LatencySensitivity `xml:"latencySensitivity,omitempty"` - CpuAffinity *VirtualMachineAffinityInfo `xml:"cpuAffinity,omitempty"` - MemoryAffinity *VirtualMachineAffinityInfo `xml:"memoryAffinity,omitempty"` - NetworkShaper *VirtualMachineNetworkShaperInfo `xml:"networkShaper,omitempty"` - CpuFeatureMask []VirtualMachineCpuIdInfoSpec `xml:"cpuFeatureMask,omitempty"` - ExtraConfig []BaseOptionValue `xml:"extraConfig,omitempty,typeattr"` - SwapPlacement string `xml:"swapPlacement,omitempty"` - BootOptions *VirtualMachineBootOptions `xml:"bootOptions,omitempty"` - VAppConfig BaseVmConfigSpec `xml:"vAppConfig,omitempty,typeattr"` - FtInfo BaseFaultToleranceConfigInfo `xml:"ftInfo,omitempty,typeattr"` - RepConfig *ReplicationConfigSpec `xml:"repConfig,omitempty"` - VAppConfigRemoved *bool `xml:"vAppConfigRemoved"` - VAssertsEnabled *bool `xml:"vAssertsEnabled"` - ChangeTrackingEnabled *bool `xml:"changeTrackingEnabled"` - Firmware string `xml:"firmware,omitempty"` - MaxMksConnections int32 `xml:"maxMksConnections,omitempty"` - GuestAutoLockEnabled *bool `xml:"guestAutoLockEnabled"` - ManagedBy *ManagedByInfo `xml:"managedBy,omitempty"` - MemoryReservationLockedToMax *bool `xml:"memoryReservationLockedToMax"` - NestedHVEnabled *bool `xml:"nestedHVEnabled"` - VPMCEnabled *bool `xml:"vPMCEnabled"` - ScheduledHardwareUpgradeInfo *ScheduledHardwareUpgradeInfo `xml:"scheduledHardwareUpgradeInfo,omitempty"` - VmProfile []BaseVirtualMachineProfileSpec `xml:"vmProfile,omitempty,typeattr"` - MessageBusTunnelEnabled *bool `xml:"messageBusTunnelEnabled"` -} - -func init() { - t["VirtualMachineConfigSpec"] = reflect.TypeOf((*VirtualMachineConfigSpec)(nil)).Elem() -} - -type VirtualMachineConfigSummary struct { - DynamicData - - Name string `xml:"name"` - Template bool `xml:"template"` - VmPathName string `xml:"vmPathName"` - MemorySizeMB int32 `xml:"memorySizeMB,omitempty"` - CpuReservation int32 `xml:"cpuReservation,omitempty"` - MemoryReservation int32 `xml:"memoryReservation,omitempty"` - NumCpu int32 `xml:"numCpu,omitempty"` - NumEthernetCards int32 `xml:"numEthernetCards,omitempty"` - NumVirtualDisks int32 `xml:"numVirtualDisks,omitempty"` - Uuid string `xml:"uuid,omitempty"` - InstanceUuid string `xml:"instanceUuid,omitempty"` - GuestId string `xml:"guestId,omitempty"` - GuestFullName string `xml:"guestFullName,omitempty"` - Annotation string `xml:"annotation,omitempty"` - Product *VAppProductInfo `xml:"product,omitempty"` - InstallBootRequired *bool `xml:"installBootRequired"` - FtInfo BaseFaultToleranceConfigInfo `xml:"ftInfo,omitempty,typeattr"` - ManagedBy *ManagedByInfo `xml:"managedBy,omitempty"` -} - -func init() { - t["VirtualMachineConfigSummary"] = reflect.TypeOf((*VirtualMachineConfigSummary)(nil)).Elem() -} - -type VirtualMachineConsolePreferences struct { - DynamicData - - PowerOnWhenOpened *bool `xml:"powerOnWhenOpened"` - EnterFullScreenOnPowerOn *bool `xml:"enterFullScreenOnPowerOn"` - CloseOnPowerOffOrSuspend *bool `xml:"closeOnPowerOffOrSuspend"` -} - -func init() { - t["VirtualMachineConsolePreferences"] = reflect.TypeOf((*VirtualMachineConsolePreferences)(nil)).Elem() -} - -type VirtualMachineCpuIdInfoSpec struct { - ArrayUpdateSpec - - Info *HostCpuIdInfo `xml:"info,omitempty"` -} - -func init() { - t["VirtualMachineCpuIdInfoSpec"] = reflect.TypeOf((*VirtualMachineCpuIdInfoSpec)(nil)).Elem() -} - -type VirtualMachineCreateChildSpec struct { - DynamicData - - Location *VirtualMachineRelocateSpec `xml:"location,omitempty"` - Persistent bool `xml:"persistent"` - ConfigParams []BaseOptionValue `xml:"configParams,omitempty,typeattr"` -} - -func init() { - t["VirtualMachineCreateChildSpec"] = reflect.TypeOf((*VirtualMachineCreateChildSpec)(nil)).Elem() -} - -type VirtualMachineDatastoreInfo struct { - VirtualMachineTargetInfo - - Datastore DatastoreSummary `xml:"datastore"` - Capability DatastoreCapability `xml:"capability"` - MaxFileSize int64 `xml:"maxFileSize"` - MaxVirtualDiskCapacity int64 `xml:"maxVirtualDiskCapacity,omitempty"` - MaxPhysicalRDMFileSize int64 `xml:"maxPhysicalRDMFileSize,omitempty"` - MaxVirtualRDMFileSize int64 `xml:"maxVirtualRDMFileSize,omitempty"` - Mode string `xml:"mode"` - VStorageSupport string `xml:"vStorageSupport,omitempty"` -} - -func init() { - t["VirtualMachineDatastoreInfo"] = reflect.TypeOf((*VirtualMachineDatastoreInfo)(nil)).Elem() -} - -type VirtualMachineDatastoreVolumeOption struct { - DynamicData - - FileSystemType string `xml:"fileSystemType"` - MajorVersion int32 `xml:"majorVersion,omitempty"` -} - -func init() { - t["VirtualMachineDatastoreVolumeOption"] = reflect.TypeOf((*VirtualMachineDatastoreVolumeOption)(nil)).Elem() -} - -type VirtualMachineDefaultPowerOpInfo struct { - DynamicData - - PowerOffType string `xml:"powerOffType,omitempty"` - SuspendType string `xml:"suspendType,omitempty"` - ResetType string `xml:"resetType,omitempty"` - DefaultPowerOffType string `xml:"defaultPowerOffType,omitempty"` - DefaultSuspendType string `xml:"defaultSuspendType,omitempty"` - DefaultResetType string `xml:"defaultResetType,omitempty"` - StandbyAction string `xml:"standbyAction,omitempty"` -} - -func init() { - t["VirtualMachineDefaultPowerOpInfo"] = reflect.TypeOf((*VirtualMachineDefaultPowerOpInfo)(nil)).Elem() -} - -type VirtualMachineDefaultProfileSpec struct { - VirtualMachineProfileSpec -} - -func init() { - t["VirtualMachineDefaultProfileSpec"] = reflect.TypeOf((*VirtualMachineDefaultProfileSpec)(nil)).Elem() -} - -type VirtualMachineDefinedProfileSpec struct { - VirtualMachineProfileSpec - - ProfileId string `xml:"profileId"` - ProfileData *VirtualMachineProfileRawData `xml:"profileData,omitempty"` -} - -func init() { - t["VirtualMachineDefinedProfileSpec"] = reflect.TypeOf((*VirtualMachineDefinedProfileSpec)(nil)).Elem() -} - -type VirtualMachineDeviceRuntimeInfo struct { - DynamicData - - RuntimeState BaseVirtualMachineDeviceRuntimeInfoDeviceRuntimeState `xml:"runtimeState,typeattr"` - Key int32 `xml:"key"` -} - -func init() { - t["VirtualMachineDeviceRuntimeInfo"] = reflect.TypeOf((*VirtualMachineDeviceRuntimeInfo)(nil)).Elem() -} - -type VirtualMachineDeviceRuntimeInfoDeviceRuntimeState struct { - DynamicData -} - -func init() { - t["VirtualMachineDeviceRuntimeInfoDeviceRuntimeState"] = reflect.TypeOf((*VirtualMachineDeviceRuntimeInfoDeviceRuntimeState)(nil)).Elem() -} - -type VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState struct { - VirtualMachineDeviceRuntimeInfoDeviceRuntimeState - - VmDirectPathGen2Active bool `xml:"vmDirectPathGen2Active"` - VmDirectPathGen2InactiveReasonVm []string `xml:"vmDirectPathGen2InactiveReasonVm,omitempty"` - VmDirectPathGen2InactiveReasonOther []string `xml:"vmDirectPathGen2InactiveReasonOther,omitempty"` - VmDirectPathGen2InactiveReasonExtended string `xml:"vmDirectPathGen2InactiveReasonExtended,omitempty"` - ReservationStatus string `xml:"reservationStatus,omitempty"` -} - -func init() { - t["VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState"] = reflect.TypeOf((*VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState)(nil)).Elem() -} - -type VirtualMachineDiskDeviceInfo struct { - VirtualMachineTargetInfo - - Capacity int64 `xml:"capacity,omitempty"` - Vm []ManagedObjectReference `xml:"vm,omitempty"` -} - -func init() { - t["VirtualMachineDiskDeviceInfo"] = reflect.TypeOf((*VirtualMachineDiskDeviceInfo)(nil)).Elem() -} - -type VirtualMachineDisplayTopology struct { - DynamicData - - X int32 `xml:"x"` - Y int32 `xml:"y"` - Width int32 `xml:"width"` - Height int32 `xml:"height"` -} - -func init() { - t["VirtualMachineDisplayTopology"] = reflect.TypeOf((*VirtualMachineDisplayTopology)(nil)).Elem() -} - -type VirtualMachineEmptyProfileSpec struct { - VirtualMachineProfileSpec -} - -func init() { - t["VirtualMachineEmptyProfileSpec"] = reflect.TypeOf((*VirtualMachineEmptyProfileSpec)(nil)).Elem() -} - -type VirtualMachineFeatureRequirement struct { - DynamicData - - Key string `xml:"key"` - FeatureName string `xml:"featureName"` - Value string `xml:"value"` -} - -func init() { - t["VirtualMachineFeatureRequirement"] = reflect.TypeOf((*VirtualMachineFeatureRequirement)(nil)).Elem() -} - -type VirtualMachineFileInfo struct { - DynamicData - - VmPathName string `xml:"vmPathName,omitempty"` - SnapshotDirectory string `xml:"snapshotDirectory,omitempty"` - SuspendDirectory string `xml:"suspendDirectory,omitempty"` - LogDirectory string `xml:"logDirectory,omitempty"` - FtMetadataDirectory string `xml:"ftMetadataDirectory,omitempty"` -} - -func init() { - t["VirtualMachineFileInfo"] = reflect.TypeOf((*VirtualMachineFileInfo)(nil)).Elem() -} - -type VirtualMachineFileLayout struct { - DynamicData - - ConfigFile []string `xml:"configFile,omitempty"` - LogFile []string `xml:"logFile,omitempty"` - Disk []VirtualMachineFileLayoutDiskLayout `xml:"disk,omitempty"` - Snapshot []VirtualMachineFileLayoutSnapshotLayout `xml:"snapshot,omitempty"` - SwapFile string `xml:"swapFile,omitempty"` -} - -func init() { - t["VirtualMachineFileLayout"] = reflect.TypeOf((*VirtualMachineFileLayout)(nil)).Elem() -} - -type VirtualMachineFileLayoutDiskLayout struct { - DynamicData - - Key int32 `xml:"key"` - DiskFile []string `xml:"diskFile"` -} - -func init() { - t["VirtualMachineFileLayoutDiskLayout"] = reflect.TypeOf((*VirtualMachineFileLayoutDiskLayout)(nil)).Elem() -} - -type VirtualMachineFileLayoutEx struct { - DynamicData - - File []VirtualMachineFileLayoutExFileInfo `xml:"file,omitempty"` - Disk []VirtualMachineFileLayoutExDiskLayout `xml:"disk,omitempty"` - Snapshot []VirtualMachineFileLayoutExSnapshotLayout `xml:"snapshot,omitempty"` - Timestamp time.Time `xml:"timestamp"` -} - -func init() { - t["VirtualMachineFileLayoutEx"] = reflect.TypeOf((*VirtualMachineFileLayoutEx)(nil)).Elem() -} - -type VirtualMachineFileLayoutExDiskLayout struct { - DynamicData - - Key int32 `xml:"key"` - Chain []VirtualMachineFileLayoutExDiskUnit `xml:"chain,omitempty"` -} - -func init() { - t["VirtualMachineFileLayoutExDiskLayout"] = reflect.TypeOf((*VirtualMachineFileLayoutExDiskLayout)(nil)).Elem() -} - -type VirtualMachineFileLayoutExDiskUnit struct { - DynamicData - - FileKey []int32 `xml:"fileKey"` -} - -func init() { - t["VirtualMachineFileLayoutExDiskUnit"] = reflect.TypeOf((*VirtualMachineFileLayoutExDiskUnit)(nil)).Elem() -} - -type VirtualMachineFileLayoutExFileInfo struct { - DynamicData - - Key int32 `xml:"key"` - Name string `xml:"name"` - Type string `xml:"type"` - Size int64 `xml:"size"` - UniqueSize int64 `xml:"uniqueSize,omitempty"` - BackingObjectId string `xml:"backingObjectId,omitempty"` - Accessible *bool `xml:"accessible"` -} - -func init() { - t["VirtualMachineFileLayoutExFileInfo"] = reflect.TypeOf((*VirtualMachineFileLayoutExFileInfo)(nil)).Elem() -} - -type VirtualMachineFileLayoutExSnapshotLayout struct { - DynamicData - - Key ManagedObjectReference `xml:"key"` - DataKey int32 `xml:"dataKey"` - MemoryKey int32 `xml:"memoryKey,omitempty"` - Disk []VirtualMachineFileLayoutExDiskLayout `xml:"disk,omitempty"` -} - -func init() { - t["VirtualMachineFileLayoutExSnapshotLayout"] = reflect.TypeOf((*VirtualMachineFileLayoutExSnapshotLayout)(nil)).Elem() -} - -type VirtualMachineFileLayoutSnapshotLayout struct { - DynamicData - - Key ManagedObjectReference `xml:"key"` - SnapshotFile []string `xml:"snapshotFile"` -} - -func init() { - t["VirtualMachineFileLayoutSnapshotLayout"] = reflect.TypeOf((*VirtualMachineFileLayoutSnapshotLayout)(nil)).Elem() -} - -type VirtualMachineFlagInfo struct { - DynamicData - - DisableAcceleration *bool `xml:"disableAcceleration"` - EnableLogging *bool `xml:"enableLogging"` - UseToe *bool `xml:"useToe"` - RunWithDebugInfo *bool `xml:"runWithDebugInfo"` - MonitorType string `xml:"monitorType,omitempty"` - HtSharing string `xml:"htSharing,omitempty"` - SnapshotDisabled *bool `xml:"snapshotDisabled"` - SnapshotLocked *bool `xml:"snapshotLocked"` - DiskUuidEnabled *bool `xml:"diskUuidEnabled"` - VirtualMmuUsage string `xml:"virtualMmuUsage,omitempty"` - VirtualExecUsage string `xml:"virtualExecUsage,omitempty"` - SnapshotPowerOffBehavior string `xml:"snapshotPowerOffBehavior,omitempty"` - RecordReplayEnabled *bool `xml:"recordReplayEnabled"` - FaultToleranceType string `xml:"faultToleranceType,omitempty"` -} - -func init() { - t["VirtualMachineFlagInfo"] = reflect.TypeOf((*VirtualMachineFlagInfo)(nil)).Elem() -} - -type VirtualMachineFloppyInfo struct { - VirtualMachineTargetInfo -} - -func init() { - t["VirtualMachineFloppyInfo"] = reflect.TypeOf((*VirtualMachineFloppyInfo)(nil)).Elem() -} - -type VirtualMachineForkConfigInfo struct { - DynamicData - - ParentEnabled *bool `xml:"parentEnabled"` - ChildForkGroupId string `xml:"childForkGroupId,omitempty"` - ChildType string `xml:"childType,omitempty"` -} - -func init() { - t["VirtualMachineForkConfigInfo"] = reflect.TypeOf((*VirtualMachineForkConfigInfo)(nil)).Elem() -} - -type VirtualMachineGuestSummary struct { - DynamicData - - GuestId string `xml:"guestId,omitempty"` - GuestFullName string `xml:"guestFullName,omitempty"` - ToolsStatus VirtualMachineToolsStatus `xml:"toolsStatus,omitempty"` - ToolsVersionStatus string `xml:"toolsVersionStatus,omitempty"` - ToolsVersionStatus2 string `xml:"toolsVersionStatus2,omitempty"` - ToolsRunningStatus string `xml:"toolsRunningStatus,omitempty"` - HostName string `xml:"hostName,omitempty"` - IpAddress string `xml:"ipAddress,omitempty"` -} - -func init() { - t["VirtualMachineGuestSummary"] = reflect.TypeOf((*VirtualMachineGuestSummary)(nil)).Elem() -} - -type VirtualMachineIdeDiskDeviceInfo struct { - VirtualMachineDiskDeviceInfo - - PartitionTable []VirtualMachineIdeDiskDevicePartitionInfo `xml:"partitionTable,omitempty"` -} - -func init() { - t["VirtualMachineIdeDiskDeviceInfo"] = reflect.TypeOf((*VirtualMachineIdeDiskDeviceInfo)(nil)).Elem() -} - -type VirtualMachineIdeDiskDevicePartitionInfo struct { - DynamicData - - Id int32 `xml:"id"` - Capacity int32 `xml:"capacity"` -} - -func init() { - t["VirtualMachineIdeDiskDevicePartitionInfo"] = reflect.TypeOf((*VirtualMachineIdeDiskDevicePartitionInfo)(nil)).Elem() -} - -type VirtualMachineImportSpec struct { - ImportSpec - - ConfigSpec VirtualMachineConfigSpec `xml:"configSpec"` - ResPoolEntity *ManagedObjectReference `xml:"resPoolEntity,omitempty"` -} - -func init() { - t["VirtualMachineImportSpec"] = reflect.TypeOf((*VirtualMachineImportSpec)(nil)).Elem() -} - -type VirtualMachineLegacyNetworkSwitchInfo struct { - DynamicData - - Name string `xml:"name"` -} - -func init() { - t["VirtualMachineLegacyNetworkSwitchInfo"] = reflect.TypeOf((*VirtualMachineLegacyNetworkSwitchInfo)(nil)).Elem() -} - -type VirtualMachineMemoryReservationInfo struct { - DynamicData - - VirtualMachineMin int64 `xml:"virtualMachineMin"` - VirtualMachineMax int64 `xml:"virtualMachineMax"` - VirtualMachineReserved int64 `xml:"virtualMachineReserved"` - AllocationPolicy string `xml:"allocationPolicy"` -} - -func init() { - t["VirtualMachineMemoryReservationInfo"] = reflect.TypeOf((*VirtualMachineMemoryReservationInfo)(nil)).Elem() -} - -type VirtualMachineMemoryReservationSpec struct { - DynamicData - - VirtualMachineReserved int64 `xml:"virtualMachineReserved,omitempty"` - AllocationPolicy string `xml:"allocationPolicy,omitempty"` -} - -func init() { - t["VirtualMachineMemoryReservationSpec"] = reflect.TypeOf((*VirtualMachineMemoryReservationSpec)(nil)).Elem() -} - -type VirtualMachineMessage struct { - DynamicData - - Id string `xml:"id"` - Argument []AnyType `xml:"argument,omitempty,typeattr"` - Text string `xml:"text,omitempty"` -} - -func init() { - t["VirtualMachineMessage"] = reflect.TypeOf((*VirtualMachineMessage)(nil)).Elem() -} - -type VirtualMachineMetadataManagerVmMetadata struct { - DynamicData - - VmId string `xml:"vmId"` - Metadata string `xml:"metadata,omitempty"` -} - -func init() { - t["VirtualMachineMetadataManagerVmMetadata"] = reflect.TypeOf((*VirtualMachineMetadataManagerVmMetadata)(nil)).Elem() -} - -type VirtualMachineMetadataManagerVmMetadataInput struct { - DynamicData - - Operation string `xml:"operation"` - VmMetadata VirtualMachineMetadataManagerVmMetadata `xml:"vmMetadata"` -} - -func init() { - t["VirtualMachineMetadataManagerVmMetadataInput"] = reflect.TypeOf((*VirtualMachineMetadataManagerVmMetadataInput)(nil)).Elem() -} - -type VirtualMachineMetadataManagerVmMetadataOwner struct { - DynamicData - - Name string `xml:"name"` -} - -func init() { - t["VirtualMachineMetadataManagerVmMetadataOwner"] = reflect.TypeOf((*VirtualMachineMetadataManagerVmMetadataOwner)(nil)).Elem() -} - -type VirtualMachineMetadataManagerVmMetadataResult struct { - DynamicData - - VmMetadata VirtualMachineMetadataManagerVmMetadata `xml:"vmMetadata"` - Error *LocalizedMethodFault `xml:"error,omitempty"` -} - -func init() { - t["VirtualMachineMetadataManagerVmMetadataResult"] = reflect.TypeOf((*VirtualMachineMetadataManagerVmMetadataResult)(nil)).Elem() -} - -type VirtualMachineMksTicket struct { - DynamicData - - Ticket string `xml:"ticket"` - CfgFile string `xml:"cfgFile"` - Host string `xml:"host,omitempty"` - Port int32 `xml:"port,omitempty"` - SslThumbprint string `xml:"sslThumbprint,omitempty"` -} - -func init() { - t["VirtualMachineMksTicket"] = reflect.TypeOf((*VirtualMachineMksTicket)(nil)).Elem() -} - -type VirtualMachineNetworkInfo struct { - VirtualMachineTargetInfo - - Network BaseNetworkSummary `xml:"network,typeattr"` -} - -func init() { - t["VirtualMachineNetworkInfo"] = reflect.TypeOf((*VirtualMachineNetworkInfo)(nil)).Elem() -} - -type VirtualMachineNetworkShaperInfo struct { - DynamicData - - Enabled *bool `xml:"enabled"` - PeakBps int64 `xml:"peakBps,omitempty"` - AverageBps int64 `xml:"averageBps,omitempty"` - BurstSize int64 `xml:"burstSize,omitempty"` -} - -func init() { - t["VirtualMachineNetworkShaperInfo"] = reflect.TypeOf((*VirtualMachineNetworkShaperInfo)(nil)).Elem() -} - -type VirtualMachineParallelInfo struct { - VirtualMachineTargetInfo -} - -func init() { - t["VirtualMachineParallelInfo"] = reflect.TypeOf((*VirtualMachineParallelInfo)(nil)).Elem() -} - -type VirtualMachinePciPassthroughInfo struct { - VirtualMachineTargetInfo - - PciDevice HostPciDevice `xml:"pciDevice"` - SystemId string `xml:"systemId"` -} - -func init() { - t["VirtualMachinePciPassthroughInfo"] = reflect.TypeOf((*VirtualMachinePciPassthroughInfo)(nil)).Elem() -} - -type VirtualMachinePciSharedGpuPassthroughInfo struct { - VirtualMachineTargetInfo - - Vgpu string `xml:"vgpu"` -} - -func init() { - t["VirtualMachinePciSharedGpuPassthroughInfo"] = reflect.TypeOf((*VirtualMachinePciSharedGpuPassthroughInfo)(nil)).Elem() -} - -type VirtualMachineProfileRawData struct { - DynamicData - - ExtensionKey string `xml:"extensionKey"` - ObjectData string `xml:"objectData,omitempty"` -} - -func init() { - t["VirtualMachineProfileRawData"] = reflect.TypeOf((*VirtualMachineProfileRawData)(nil)).Elem() -} - -type VirtualMachineProfileSpec struct { - DynamicData -} - -func init() { - t["VirtualMachineProfileSpec"] = reflect.TypeOf((*VirtualMachineProfileSpec)(nil)).Elem() -} - -type VirtualMachineQuestionInfo struct { - DynamicData - - Id string `xml:"id"` - Text string `xml:"text"` - Choice ChoiceOption `xml:"choice"` - Message []VirtualMachineMessage `xml:"message,omitempty"` -} - -func init() { - t["VirtualMachineQuestionInfo"] = reflect.TypeOf((*VirtualMachineQuestionInfo)(nil)).Elem() -} - -type VirtualMachineQuickStats struct { - DynamicData - - OverallCpuUsage int32 `xml:"overallCpuUsage,omitempty"` - OverallCpuDemand int32 `xml:"overallCpuDemand,omitempty"` - GuestMemoryUsage int32 `xml:"guestMemoryUsage,omitempty"` - HostMemoryUsage int32 `xml:"hostMemoryUsage,omitempty"` - GuestHeartbeatStatus ManagedEntityStatus `xml:"guestHeartbeatStatus"` - DistributedCpuEntitlement int32 `xml:"distributedCpuEntitlement,omitempty"` - DistributedMemoryEntitlement int32 `xml:"distributedMemoryEntitlement,omitempty"` - StaticCpuEntitlement int32 `xml:"staticCpuEntitlement,omitempty"` - StaticMemoryEntitlement int32 `xml:"staticMemoryEntitlement,omitempty"` - PrivateMemory int32 `xml:"privateMemory,omitempty"` - SharedMemory int32 `xml:"sharedMemory,omitempty"` - SwappedMemory int32 `xml:"swappedMemory,omitempty"` - BalloonedMemory int32 `xml:"balloonedMemory,omitempty"` - ConsumedOverheadMemory int32 `xml:"consumedOverheadMemory,omitempty"` - FtLogBandwidth int32 `xml:"ftLogBandwidth,omitempty"` - FtSecondaryLatency int32 `xml:"ftSecondaryLatency,omitempty"` - FtLatencyStatus ManagedEntityStatus `xml:"ftLatencyStatus,omitempty"` - CompressedMemory int64 `xml:"compressedMemory,omitempty"` - UptimeSeconds int32 `xml:"uptimeSeconds,omitempty"` - SsdSwappedMemory int64 `xml:"ssdSwappedMemory,omitempty"` -} - -func init() { - t["VirtualMachineQuickStats"] = reflect.TypeOf((*VirtualMachineQuickStats)(nil)).Elem() -} - -type VirtualMachineRelocateSpec struct { - DynamicData - - Service *ServiceLocator `xml:"service,omitempty"` - Folder *ManagedObjectReference `xml:"folder,omitempty"` - Datastore *ManagedObjectReference `xml:"datastore,omitempty"` - DiskMoveType string `xml:"diskMoveType,omitempty"` - Pool *ManagedObjectReference `xml:"pool,omitempty"` - Host *ManagedObjectReference `xml:"host,omitempty"` - Disk []VirtualMachineRelocateSpecDiskLocator `xml:"disk,omitempty"` - Transform VirtualMachineRelocateTransformation `xml:"transform,omitempty"` - DeviceChange []BaseVirtualDeviceConfigSpec `xml:"deviceChange,omitempty,typeattr"` - Profile []BaseVirtualMachineProfileSpec `xml:"profile,omitempty,typeattr"` -} - -func init() { - t["VirtualMachineRelocateSpec"] = reflect.TypeOf((*VirtualMachineRelocateSpec)(nil)).Elem() -} - -type VirtualMachineRelocateSpecDiskLocator struct { - DynamicData - - DiskId int32 `xml:"diskId"` - Datastore ManagedObjectReference `xml:"datastore"` - DiskMoveType string `xml:"diskMoveType,omitempty"` - DiskBackingInfo BaseVirtualDeviceBackingInfo `xml:"diskBackingInfo,omitempty,typeattr"` - Profile []BaseVirtualMachineProfileSpec `xml:"profile,omitempty,typeattr"` -} - -func init() { - t["VirtualMachineRelocateSpecDiskLocator"] = reflect.TypeOf((*VirtualMachineRelocateSpecDiskLocator)(nil)).Elem() -} - -type VirtualMachineRuntimeInfo struct { - DynamicData - - Device []VirtualMachineDeviceRuntimeInfo `xml:"device,omitempty"` - Host *ManagedObjectReference `xml:"host,omitempty"` - ConnectionState VirtualMachineConnectionState `xml:"connectionState"` - PowerState VirtualMachinePowerState `xml:"powerState"` - FaultToleranceState VirtualMachineFaultToleranceState `xml:"faultToleranceState,omitempty"` - DasVmProtection *VirtualMachineRuntimeInfoDasProtectionState `xml:"dasVmProtection,omitempty"` - ToolsInstallerMounted bool `xml:"toolsInstallerMounted"` - SuspendTime *time.Time `xml:"suspendTime"` - BootTime *time.Time `xml:"bootTime"` - SuspendInterval int64 `xml:"suspendInterval,omitempty"` - Question *VirtualMachineQuestionInfo `xml:"question,omitempty"` - MemoryOverhead int64 `xml:"memoryOverhead,omitempty"` - MaxCpuUsage int32 `xml:"maxCpuUsage,omitempty"` - MaxMemoryUsage int32 `xml:"maxMemoryUsage,omitempty"` - NumMksConnections int32 `xml:"numMksConnections"` - RecordReplayState VirtualMachineRecordReplayState `xml:"recordReplayState,omitempty"` - CleanPowerOff *bool `xml:"cleanPowerOff"` - NeedSecondaryReason string `xml:"needSecondaryReason,omitempty"` - OnlineStandby *bool `xml:"onlineStandby"` - MinRequiredEVCModeKey string `xml:"minRequiredEVCModeKey,omitempty"` - ConsolidationNeeded *bool `xml:"consolidationNeeded"` - OfflineFeatureRequirement []VirtualMachineFeatureRequirement `xml:"offlineFeatureRequirement,omitempty"` - FeatureRequirement []VirtualMachineFeatureRequirement `xml:"featureRequirement,omitempty"` - FeatureMask []HostFeatureMask `xml:"featureMask,omitempty"` - VFlashCacheAllocation int64 `xml:"vFlashCacheAllocation,omitempty"` - Paused *bool `xml:"paused"` - SnapshotInBackground *bool `xml:"snapshotInBackground"` - QuiescedForkParent *bool `xml:"quiescedForkParent"` -} - -func init() { - t["VirtualMachineRuntimeInfo"] = reflect.TypeOf((*VirtualMachineRuntimeInfo)(nil)).Elem() -} - -type VirtualMachineRuntimeInfoDasProtectionState struct { - DynamicData - - DasProtected bool `xml:"dasProtected"` -} - -func init() { - t["VirtualMachineRuntimeInfoDasProtectionState"] = reflect.TypeOf((*VirtualMachineRuntimeInfoDasProtectionState)(nil)).Elem() -} - -type VirtualMachineScsiDiskDeviceInfo struct { - VirtualMachineDiskDeviceInfo - - Disk *HostScsiDisk `xml:"disk,omitempty"` - TransportHint string `xml:"transportHint,omitempty"` - LunNumber int32 `xml:"lunNumber,omitempty"` -} - -func init() { - t["VirtualMachineScsiDiskDeviceInfo"] = reflect.TypeOf((*VirtualMachineScsiDiskDeviceInfo)(nil)).Elem() -} - -type VirtualMachineScsiPassthroughInfo struct { - VirtualMachineTargetInfo - - ScsiClass string `xml:"scsiClass"` - Vendor string `xml:"vendor"` - PhysicalUnitNumber int32 `xml:"physicalUnitNumber"` -} - -func init() { - t["VirtualMachineScsiPassthroughInfo"] = reflect.TypeOf((*VirtualMachineScsiPassthroughInfo)(nil)).Elem() -} - -type VirtualMachineSerialInfo struct { - VirtualMachineTargetInfo -} - -func init() { - t["VirtualMachineSerialInfo"] = reflect.TypeOf((*VirtualMachineSerialInfo)(nil)).Elem() -} - -type VirtualMachineSnapshotInfo struct { - DynamicData - - CurrentSnapshot *ManagedObjectReference `xml:"currentSnapshot,omitempty"` - RootSnapshotList []VirtualMachineSnapshotTree `xml:"rootSnapshotList"` -} - -func init() { - t["VirtualMachineSnapshotInfo"] = reflect.TypeOf((*VirtualMachineSnapshotInfo)(nil)).Elem() -} - -type VirtualMachineSnapshotTree struct { - DynamicData - - Snapshot ManagedObjectReference `xml:"snapshot"` - Vm ManagedObjectReference `xml:"vm"` - Name string `xml:"name"` - Description string `xml:"description"` - Id int32 `xml:"id,omitempty"` - CreateTime time.Time `xml:"createTime"` - State VirtualMachinePowerState `xml:"state"` - Quiesced bool `xml:"quiesced"` - BackupManifest string `xml:"backupManifest,omitempty"` - ChildSnapshotList []VirtualMachineSnapshotTree `xml:"childSnapshotList,omitempty"` - ReplaySupported *bool `xml:"replaySupported"` -} - -func init() { - t["VirtualMachineSnapshotTree"] = reflect.TypeOf((*VirtualMachineSnapshotTree)(nil)).Elem() -} - -type VirtualMachineSoundInfo struct { - VirtualMachineTargetInfo -} - -func init() { - t["VirtualMachineSoundInfo"] = reflect.TypeOf((*VirtualMachineSoundInfo)(nil)).Elem() -} - -type VirtualMachineSriovInfo struct { - VirtualMachinePciPassthroughInfo - - VirtualFunction bool `xml:"virtualFunction"` - Pnic string `xml:"pnic,omitempty"` -} - -func init() { - t["VirtualMachineSriovInfo"] = reflect.TypeOf((*VirtualMachineSriovInfo)(nil)).Elem() -} - -type VirtualMachineStorageInfo struct { - DynamicData - - PerDatastoreUsage []VirtualMachineUsageOnDatastore `xml:"perDatastoreUsage,omitempty"` - Timestamp time.Time `xml:"timestamp"` -} - -func init() { - t["VirtualMachineStorageInfo"] = reflect.TypeOf((*VirtualMachineStorageInfo)(nil)).Elem() -} - -type VirtualMachineStorageSummary struct { - DynamicData - - Committed int64 `xml:"committed"` - Uncommitted int64 `xml:"uncommitted"` - Unshared int64 `xml:"unshared"` - Timestamp time.Time `xml:"timestamp"` -} - -func init() { - t["VirtualMachineStorageSummary"] = reflect.TypeOf((*VirtualMachineStorageSummary)(nil)).Elem() -} - -type VirtualMachineSummary struct { - DynamicData - - Vm *ManagedObjectReference `xml:"vm,omitempty"` - Runtime VirtualMachineRuntimeInfo `xml:"runtime"` - Guest *VirtualMachineGuestSummary `xml:"guest,omitempty"` - Config VirtualMachineConfigSummary `xml:"config"` - Storage *VirtualMachineStorageSummary `xml:"storage,omitempty"` - QuickStats VirtualMachineQuickStats `xml:"quickStats"` - OverallStatus ManagedEntityStatus `xml:"overallStatus"` - CustomValue []BaseCustomFieldValue `xml:"customValue,omitempty,typeattr"` -} - -func init() { - t["VirtualMachineSummary"] = reflect.TypeOf((*VirtualMachineSummary)(nil)).Elem() -} - -type VirtualMachineTargetInfo struct { - DynamicData - - Name string `xml:"name"` - ConfigurationTag []string `xml:"configurationTag,omitempty"` -} - -func init() { - t["VirtualMachineTargetInfo"] = reflect.TypeOf((*VirtualMachineTargetInfo)(nil)).Elem() -} - -type VirtualMachineTicket struct { - DynamicData - - Ticket string `xml:"ticket"` - CfgFile string `xml:"cfgFile"` - Host string `xml:"host,omitempty"` - Port int32 `xml:"port,omitempty"` - SslThumbprint string `xml:"sslThumbprint,omitempty"` -} - -func init() { - t["VirtualMachineTicket"] = reflect.TypeOf((*VirtualMachineTicket)(nil)).Elem() -} - -type VirtualMachineUsageOnDatastore struct { - DynamicData - - Datastore ManagedObjectReference `xml:"datastore"` - Committed int64 `xml:"committed"` - Uncommitted int64 `xml:"uncommitted"` - Unshared int64 `xml:"unshared"` -} - -func init() { - t["VirtualMachineUsageOnDatastore"] = reflect.TypeOf((*VirtualMachineUsageOnDatastore)(nil)).Elem() -} - -type VirtualMachineUsbInfo struct { - VirtualMachineTargetInfo - - Description string `xml:"description"` - Vendor int32 `xml:"vendor"` - Product int32 `xml:"product"` - PhysicalPath string `xml:"physicalPath"` - Family []string `xml:"family,omitempty"` - Speed []string `xml:"speed,omitempty"` - Summary *VirtualMachineSummary `xml:"summary,omitempty"` -} - -func init() { - t["VirtualMachineUsbInfo"] = reflect.TypeOf((*VirtualMachineUsbInfo)(nil)).Elem() -} - -type VirtualMachineVFlashModuleInfo struct { - VirtualMachineTargetInfo - - VFlashModule HostVFlashManagerVFlashCacheConfigInfoVFlashModuleConfigOption `xml:"vFlashModule"` -} - -func init() { - t["VirtualMachineVFlashModuleInfo"] = reflect.TypeOf((*VirtualMachineVFlashModuleInfo)(nil)).Elem() -} - -type VirtualMachineVMCIDevice struct { - VirtualDevice - - Id int64 `xml:"id,omitempty"` - AllowUnrestrictedCommunication *bool `xml:"allowUnrestrictedCommunication"` - FilterEnable *bool `xml:"filterEnable"` - FilterInfo *VirtualMachineVMCIDeviceFilterInfo `xml:"filterInfo,omitempty"` -} - -func init() { - t["VirtualMachineVMCIDevice"] = reflect.TypeOf((*VirtualMachineVMCIDevice)(nil)).Elem() -} - -type VirtualMachineVMCIDeviceFilterInfo struct { - DynamicData - - Filters []VirtualMachineVMCIDeviceFilterSpec `xml:"filters,omitempty"` -} - -func init() { - t["VirtualMachineVMCIDeviceFilterInfo"] = reflect.TypeOf((*VirtualMachineVMCIDeviceFilterInfo)(nil)).Elem() -} - -type VirtualMachineVMCIDeviceFilterSpec struct { - DynamicData - - Rank int64 `xml:"rank"` - Action string `xml:"action"` - Protocol string `xml:"protocol"` - Direction string `xml:"direction"` - LowerDstPortBoundary int64 `xml:"lowerDstPortBoundary,omitempty"` - UpperDstPortBoundary int64 `xml:"upperDstPortBoundary,omitempty"` -} - -func init() { - t["VirtualMachineVMCIDeviceFilterSpec"] = reflect.TypeOf((*VirtualMachineVMCIDeviceFilterSpec)(nil)).Elem() -} - -type VirtualMachineVMCIDeviceOption struct { - VirtualDeviceOption - - AllowUnrestrictedCommunication BoolOption `xml:"allowUnrestrictedCommunication"` - FilterSpecOption *VirtualMachineVMCIDeviceOptionFilterSpecOption `xml:"filterSpecOption,omitempty"` - FilterSupported *BoolOption `xml:"filterSupported,omitempty"` -} - -func init() { - t["VirtualMachineVMCIDeviceOption"] = reflect.TypeOf((*VirtualMachineVMCIDeviceOption)(nil)).Elem() -} - -type VirtualMachineVMCIDeviceOptionFilterSpecOption struct { - DynamicData - - Action ChoiceOption `xml:"action"` - Protocol ChoiceOption `xml:"protocol"` - Direction ChoiceOption `xml:"direction"` - LowerDstPortBoundary LongOption `xml:"lowerDstPortBoundary"` - UpperDstPortBoundary LongOption `xml:"upperDstPortBoundary"` -} - -func init() { - t["VirtualMachineVMCIDeviceOptionFilterSpecOption"] = reflect.TypeOf((*VirtualMachineVMCIDeviceOptionFilterSpecOption)(nil)).Elem() -} - -type VirtualMachineVMIROM struct { - VirtualDevice -} - -func init() { - t["VirtualMachineVMIROM"] = reflect.TypeOf((*VirtualMachineVMIROM)(nil)).Elem() -} - -type VirtualMachineVideoCard struct { - VirtualDevice - - VideoRamSizeInKB int64 `xml:"videoRamSizeInKB,omitempty"` - NumDisplays int32 `xml:"numDisplays,omitempty"` - UseAutoDetect *bool `xml:"useAutoDetect"` - Enable3DSupport *bool `xml:"enable3DSupport"` - Use3dRenderer string `xml:"use3dRenderer,omitempty"` - GraphicsMemorySizeInKB int64 `xml:"graphicsMemorySizeInKB,omitempty"` -} - -func init() { - t["VirtualMachineVideoCard"] = reflect.TypeOf((*VirtualMachineVideoCard)(nil)).Elem() -} - -type VirtualMachineWipeResult struct { - DynamicData - - DiskId int32 `xml:"diskId"` - ShrinkableDiskSpace int64 `xml:"shrinkableDiskSpace"` -} - -func init() { - t["VirtualMachineWipeResult"] = reflect.TypeOf((*VirtualMachineWipeResult)(nil)).Elem() -} - -type VirtualNicManagerNetConfig struct { - DynamicData - - NicType string `xml:"nicType"` - MultiSelectAllowed bool `xml:"multiSelectAllowed"` - CandidateVnic []HostVirtualNic `xml:"candidateVnic,omitempty"` - SelectedVnic []string `xml:"selectedVnic,omitempty"` -} - -func init() { - t["VirtualNicManagerNetConfig"] = reflect.TypeOf((*VirtualNicManagerNetConfig)(nil)).Elem() -} - -type VirtualPCIController struct { - VirtualController -} - -func init() { - t["VirtualPCIController"] = reflect.TypeOf((*VirtualPCIController)(nil)).Elem() -} - -type VirtualPCIControllerOption struct { - VirtualControllerOption - - NumSCSIControllers IntOption `xml:"numSCSIControllers"` - NumEthernetCards IntOption `xml:"numEthernetCards"` - NumVideoCards IntOption `xml:"numVideoCards"` - NumSoundCards IntOption `xml:"numSoundCards"` - NumVmiRoms IntOption `xml:"numVmiRoms"` - NumVmciDevices *IntOption `xml:"numVmciDevices,omitempty"` - NumPCIPassthroughDevices *IntOption `xml:"numPCIPassthroughDevices,omitempty"` - NumSasSCSIControllers *IntOption `xml:"numSasSCSIControllers,omitempty"` - NumVmxnet3EthernetCards *IntOption `xml:"numVmxnet3EthernetCards,omitempty"` - NumParaVirtualSCSIControllers *IntOption `xml:"numParaVirtualSCSIControllers,omitempty"` - NumSATAControllers *IntOption `xml:"numSATAControllers,omitempty"` -} - -func init() { - t["VirtualPCIControllerOption"] = reflect.TypeOf((*VirtualPCIControllerOption)(nil)).Elem() -} - -type VirtualPCIPassthrough struct { - VirtualDevice -} - -func init() { - t["VirtualPCIPassthrough"] = reflect.TypeOf((*VirtualPCIPassthrough)(nil)).Elem() -} - -type VirtualPCIPassthroughDeviceBackingInfo struct { - VirtualDeviceDeviceBackingInfo - - Id string `xml:"id"` - DeviceId string `xml:"deviceId"` - SystemId string `xml:"systemId"` - VendorId int16 `xml:"vendorId"` -} - -func init() { - t["VirtualPCIPassthroughDeviceBackingInfo"] = reflect.TypeOf((*VirtualPCIPassthroughDeviceBackingInfo)(nil)).Elem() -} - -type VirtualPCIPassthroughDeviceBackingOption struct { - VirtualDeviceDeviceBackingOption -} - -func init() { - t["VirtualPCIPassthroughDeviceBackingOption"] = reflect.TypeOf((*VirtualPCIPassthroughDeviceBackingOption)(nil)).Elem() -} - -type VirtualPCIPassthroughOption struct { - VirtualDeviceOption -} - -func init() { - t["VirtualPCIPassthroughOption"] = reflect.TypeOf((*VirtualPCIPassthroughOption)(nil)).Elem() -} - -type VirtualPCIPassthroughPluginBackingInfo struct { - VirtualDeviceBackingInfo -} - -func init() { - t["VirtualPCIPassthroughPluginBackingInfo"] = reflect.TypeOf((*VirtualPCIPassthroughPluginBackingInfo)(nil)).Elem() -} - -type VirtualPCIPassthroughPluginBackingOption struct { - VirtualDeviceBackingOption -} - -func init() { - t["VirtualPCIPassthroughPluginBackingOption"] = reflect.TypeOf((*VirtualPCIPassthroughPluginBackingOption)(nil)).Elem() -} - -type VirtualPCIPassthroughVmiopBackingInfo struct { - VirtualPCIPassthroughPluginBackingInfo - - Vgpu string `xml:"vgpu,omitempty"` -} - -func init() { - t["VirtualPCIPassthroughVmiopBackingInfo"] = reflect.TypeOf((*VirtualPCIPassthroughVmiopBackingInfo)(nil)).Elem() -} - -type VirtualPCIPassthroughVmiopBackingOption struct { - VirtualPCIPassthroughPluginBackingOption - - Vgpu StringOption `xml:"vgpu"` - MaxInstances int32 `xml:"maxInstances"` -} - -func init() { - t["VirtualPCIPassthroughVmiopBackingOption"] = reflect.TypeOf((*VirtualPCIPassthroughVmiopBackingOption)(nil)).Elem() -} - -type VirtualPCNet32 struct { - VirtualEthernetCard -} - -func init() { - t["VirtualPCNet32"] = reflect.TypeOf((*VirtualPCNet32)(nil)).Elem() -} - -type VirtualPCNet32Option struct { - VirtualEthernetCardOption - - SupportsMorphing bool `xml:"supportsMorphing"` -} - -func init() { - t["VirtualPCNet32Option"] = reflect.TypeOf((*VirtualPCNet32Option)(nil)).Elem() -} - -type VirtualPS2Controller struct { - VirtualController -} - -func init() { - t["VirtualPS2Controller"] = reflect.TypeOf((*VirtualPS2Controller)(nil)).Elem() -} - -type VirtualPS2ControllerOption struct { - VirtualControllerOption - - NumKeyboards IntOption `xml:"numKeyboards"` - NumPointingDevices IntOption `xml:"numPointingDevices"` -} - -func init() { - t["VirtualPS2ControllerOption"] = reflect.TypeOf((*VirtualPS2ControllerOption)(nil)).Elem() -} - -type VirtualParallelPort struct { - VirtualDevice -} - -func init() { - t["VirtualParallelPort"] = reflect.TypeOf((*VirtualParallelPort)(nil)).Elem() -} - -type VirtualParallelPortDeviceBackingInfo struct { - VirtualDeviceDeviceBackingInfo -} - -func init() { - t["VirtualParallelPortDeviceBackingInfo"] = reflect.TypeOf((*VirtualParallelPortDeviceBackingInfo)(nil)).Elem() -} - -type VirtualParallelPortDeviceBackingOption struct { - VirtualDeviceDeviceBackingOption -} - -func init() { - t["VirtualParallelPortDeviceBackingOption"] = reflect.TypeOf((*VirtualParallelPortDeviceBackingOption)(nil)).Elem() -} - -type VirtualParallelPortFileBackingInfo struct { - VirtualDeviceFileBackingInfo -} - -func init() { - t["VirtualParallelPortFileBackingInfo"] = reflect.TypeOf((*VirtualParallelPortFileBackingInfo)(nil)).Elem() -} - -type VirtualParallelPortFileBackingOption struct { - VirtualDeviceFileBackingOption -} - -func init() { - t["VirtualParallelPortFileBackingOption"] = reflect.TypeOf((*VirtualParallelPortFileBackingOption)(nil)).Elem() -} - -type VirtualParallelPortOption struct { - VirtualDeviceOption -} - -func init() { - t["VirtualParallelPortOption"] = reflect.TypeOf((*VirtualParallelPortOption)(nil)).Elem() -} - -type VirtualPointingDevice struct { - VirtualDevice -} - -func init() { - t["VirtualPointingDevice"] = reflect.TypeOf((*VirtualPointingDevice)(nil)).Elem() -} - -type VirtualPointingDeviceBackingOption struct { - VirtualDeviceDeviceBackingOption - - HostPointingDevice ChoiceOption `xml:"hostPointingDevice"` -} - -func init() { - t["VirtualPointingDeviceBackingOption"] = reflect.TypeOf((*VirtualPointingDeviceBackingOption)(nil)).Elem() -} - -type VirtualPointingDeviceDeviceBackingInfo struct { - VirtualDeviceDeviceBackingInfo - - HostPointingDevice string `xml:"hostPointingDevice"` -} - -func init() { - t["VirtualPointingDeviceDeviceBackingInfo"] = reflect.TypeOf((*VirtualPointingDeviceDeviceBackingInfo)(nil)).Elem() -} - -type VirtualPointingDeviceOption struct { - VirtualDeviceOption -} - -func init() { - t["VirtualPointingDeviceOption"] = reflect.TypeOf((*VirtualPointingDeviceOption)(nil)).Elem() -} - -type VirtualResourcePoolSpec struct { - DynamicData - - VrpId string `xml:"vrpId,omitempty"` - VrpName string `xml:"vrpName,omitempty"` - Description string `xml:"description,omitempty"` - CpuAllocation VrpResourceAllocationInfo `xml:"cpuAllocation"` - MemoryAllocation VrpResourceAllocationInfo `xml:"memoryAllocation"` - RpList []ManagedObjectReference `xml:"rpList,omitempty"` - HubList []ManagedObjectReference `xml:"hubList,omitempty"` - RootVRP *bool `xml:"rootVRP"` - StaticVRP *bool `xml:"staticVRP"` - ChangeVersion int64 `xml:"changeVersion,omitempty"` -} - -func init() { - t["VirtualResourcePoolSpec"] = reflect.TypeOf((*VirtualResourcePoolSpec)(nil)).Elem() -} - -type VirtualResourcePoolUsage struct { - DynamicData - - VrpId string `xml:"vrpId"` - CpuReservationMhz int64 `xml:"cpuReservationMhz"` - MemReservationMB int64 `xml:"memReservationMB"` - CpuReservationUsedMhz int64 `xml:"cpuReservationUsedMhz"` - MemReservationUsedMB int64 `xml:"memReservationUsedMB"` -} - -func init() { - t["VirtualResourcePoolUsage"] = reflect.TypeOf((*VirtualResourcePoolUsage)(nil)).Elem() -} - -type VirtualSATAController struct { - VirtualController -} - -func init() { - t["VirtualSATAController"] = reflect.TypeOf((*VirtualSATAController)(nil)).Elem() -} - -type VirtualSATAControllerOption struct { - VirtualControllerOption - - NumSATADisks IntOption `xml:"numSATADisks"` - NumSATACdroms IntOption `xml:"numSATACdroms"` -} - -func init() { - t["VirtualSATAControllerOption"] = reflect.TypeOf((*VirtualSATAControllerOption)(nil)).Elem() -} - -type VirtualSCSIController struct { - VirtualController - - HotAddRemove *bool `xml:"hotAddRemove"` - SharedBus VirtualSCSISharing `xml:"sharedBus"` - ScsiCtlrUnitNumber int32 `xml:"scsiCtlrUnitNumber,omitempty"` -} - -func init() { - t["VirtualSCSIController"] = reflect.TypeOf((*VirtualSCSIController)(nil)).Elem() -} - -type VirtualSCSIControllerOption struct { - VirtualControllerOption - - NumSCSIDisks IntOption `xml:"numSCSIDisks"` - NumSCSICdroms IntOption `xml:"numSCSICdroms"` - NumSCSIPassthrough IntOption `xml:"numSCSIPassthrough"` - Sharing []VirtualSCSISharing `xml:"sharing"` - DefaultSharedIndex int32 `xml:"defaultSharedIndex"` - HotAddRemove BoolOption `xml:"hotAddRemove"` - ScsiCtlrUnitNumber int32 `xml:"scsiCtlrUnitNumber"` -} - -func init() { - t["VirtualSCSIControllerOption"] = reflect.TypeOf((*VirtualSCSIControllerOption)(nil)).Elem() -} - -type VirtualSCSIPassthrough struct { - VirtualDevice -} - -func init() { - t["VirtualSCSIPassthrough"] = reflect.TypeOf((*VirtualSCSIPassthrough)(nil)).Elem() -} - -type VirtualSCSIPassthroughDeviceBackingInfo struct { - VirtualDeviceDeviceBackingInfo -} - -func init() { - t["VirtualSCSIPassthroughDeviceBackingInfo"] = reflect.TypeOf((*VirtualSCSIPassthroughDeviceBackingInfo)(nil)).Elem() -} - -type VirtualSCSIPassthroughDeviceBackingOption struct { - VirtualDeviceDeviceBackingOption -} - -func init() { - t["VirtualSCSIPassthroughDeviceBackingOption"] = reflect.TypeOf((*VirtualSCSIPassthroughDeviceBackingOption)(nil)).Elem() -} - -type VirtualSCSIPassthroughOption struct { - VirtualDeviceOption -} - -func init() { - t["VirtualSCSIPassthroughOption"] = reflect.TypeOf((*VirtualSCSIPassthroughOption)(nil)).Elem() -} - -type VirtualSIOController struct { - VirtualController -} - -func init() { - t["VirtualSIOController"] = reflect.TypeOf((*VirtualSIOController)(nil)).Elem() -} - -type VirtualSIOControllerOption struct { - VirtualControllerOption - - NumFloppyDrives IntOption `xml:"numFloppyDrives"` - NumSerialPorts IntOption `xml:"numSerialPorts"` - NumParallelPorts IntOption `xml:"numParallelPorts"` -} - -func init() { - t["VirtualSIOControllerOption"] = reflect.TypeOf((*VirtualSIOControllerOption)(nil)).Elem() -} - -type VirtualSerialPort struct { - VirtualDevice - - YieldOnPoll bool `xml:"yieldOnPoll"` -} - -func init() { - t["VirtualSerialPort"] = reflect.TypeOf((*VirtualSerialPort)(nil)).Elem() -} - -type VirtualSerialPortDeviceBackingInfo struct { - VirtualDeviceDeviceBackingInfo -} - -func init() { - t["VirtualSerialPortDeviceBackingInfo"] = reflect.TypeOf((*VirtualSerialPortDeviceBackingInfo)(nil)).Elem() -} - -type VirtualSerialPortDeviceBackingOption struct { - VirtualDeviceDeviceBackingOption -} - -func init() { - t["VirtualSerialPortDeviceBackingOption"] = reflect.TypeOf((*VirtualSerialPortDeviceBackingOption)(nil)).Elem() -} - -type VirtualSerialPortFileBackingInfo struct { - VirtualDeviceFileBackingInfo -} - -func init() { - t["VirtualSerialPortFileBackingInfo"] = reflect.TypeOf((*VirtualSerialPortFileBackingInfo)(nil)).Elem() -} - -type VirtualSerialPortFileBackingOption struct { - VirtualDeviceFileBackingOption -} - -func init() { - t["VirtualSerialPortFileBackingOption"] = reflect.TypeOf((*VirtualSerialPortFileBackingOption)(nil)).Elem() -} - -type VirtualSerialPortOption struct { - VirtualDeviceOption - - YieldOnPoll BoolOption `xml:"yieldOnPoll"` -} - -func init() { - t["VirtualSerialPortOption"] = reflect.TypeOf((*VirtualSerialPortOption)(nil)).Elem() -} - -type VirtualSerialPortPipeBackingInfo struct { - VirtualDevicePipeBackingInfo - - Endpoint string `xml:"endpoint"` - NoRxLoss *bool `xml:"noRxLoss"` -} - -func init() { - t["VirtualSerialPortPipeBackingInfo"] = reflect.TypeOf((*VirtualSerialPortPipeBackingInfo)(nil)).Elem() -} - -type VirtualSerialPortPipeBackingOption struct { - VirtualDevicePipeBackingOption - - Endpoint ChoiceOption `xml:"endpoint"` - NoRxLoss BoolOption `xml:"noRxLoss"` -} - -func init() { - t["VirtualSerialPortPipeBackingOption"] = reflect.TypeOf((*VirtualSerialPortPipeBackingOption)(nil)).Elem() -} - -type VirtualSerialPortThinPrintBackingInfo struct { - VirtualDeviceBackingInfo -} - -func init() { - t["VirtualSerialPortThinPrintBackingInfo"] = reflect.TypeOf((*VirtualSerialPortThinPrintBackingInfo)(nil)).Elem() -} - -type VirtualSerialPortThinPrintBackingOption struct { - VirtualDeviceBackingOption -} - -func init() { - t["VirtualSerialPortThinPrintBackingOption"] = reflect.TypeOf((*VirtualSerialPortThinPrintBackingOption)(nil)).Elem() -} - -type VirtualSerialPortURIBackingInfo struct { - VirtualDeviceURIBackingInfo -} - -func init() { - t["VirtualSerialPortURIBackingInfo"] = reflect.TypeOf((*VirtualSerialPortURIBackingInfo)(nil)).Elem() -} - -type VirtualSerialPortURIBackingOption struct { - VirtualDeviceURIBackingOption -} - -func init() { - t["VirtualSerialPortURIBackingOption"] = reflect.TypeOf((*VirtualSerialPortURIBackingOption)(nil)).Elem() -} - -type VirtualSoundBlaster16 struct { - VirtualSoundCard -} - -func init() { - t["VirtualSoundBlaster16"] = reflect.TypeOf((*VirtualSoundBlaster16)(nil)).Elem() -} - -type VirtualSoundBlaster16Option struct { - VirtualSoundCardOption -} - -func init() { - t["VirtualSoundBlaster16Option"] = reflect.TypeOf((*VirtualSoundBlaster16Option)(nil)).Elem() -} - -type VirtualSoundCard struct { - VirtualDevice -} - -func init() { - t["VirtualSoundCard"] = reflect.TypeOf((*VirtualSoundCard)(nil)).Elem() -} - -type VirtualSoundCardDeviceBackingInfo struct { - VirtualDeviceDeviceBackingInfo -} - -func init() { - t["VirtualSoundCardDeviceBackingInfo"] = reflect.TypeOf((*VirtualSoundCardDeviceBackingInfo)(nil)).Elem() -} - -type VirtualSoundCardDeviceBackingOption struct { - VirtualDeviceDeviceBackingOption -} - -func init() { - t["VirtualSoundCardDeviceBackingOption"] = reflect.TypeOf((*VirtualSoundCardDeviceBackingOption)(nil)).Elem() -} - -type VirtualSoundCardOption struct { - VirtualDeviceOption -} - -func init() { - t["VirtualSoundCardOption"] = reflect.TypeOf((*VirtualSoundCardOption)(nil)).Elem() -} - -type VirtualSriovEthernetCard struct { - VirtualEthernetCard - - AllowGuestOSMtuChange *bool `xml:"allowGuestOSMtuChange"` - SriovBacking *VirtualSriovEthernetCardSriovBackingInfo `xml:"sriovBacking,omitempty"` -} - -func init() { - t["VirtualSriovEthernetCard"] = reflect.TypeOf((*VirtualSriovEthernetCard)(nil)).Elem() -} - -type VirtualSriovEthernetCardOption struct { - VirtualEthernetCardOption -} - -func init() { - t["VirtualSriovEthernetCardOption"] = reflect.TypeOf((*VirtualSriovEthernetCardOption)(nil)).Elem() -} - -type VirtualSriovEthernetCardSriovBackingInfo struct { - VirtualDeviceBackingInfo - - PhysicalFunctionBacking *VirtualPCIPassthroughDeviceBackingInfo `xml:"physicalFunctionBacking,omitempty"` - VirtualFunctionBacking *VirtualPCIPassthroughDeviceBackingInfo `xml:"virtualFunctionBacking,omitempty"` - VirtualFunctionIndex int32 `xml:"virtualFunctionIndex,omitempty"` -} - -func init() { - t["VirtualSriovEthernetCardSriovBackingInfo"] = reflect.TypeOf((*VirtualSriovEthernetCardSriovBackingInfo)(nil)).Elem() -} - -type VirtualSriovEthernetCardSriovBackingOption struct { - VirtualDeviceBackingOption -} - -func init() { - t["VirtualSriovEthernetCardSriovBackingOption"] = reflect.TypeOf((*VirtualSriovEthernetCardSriovBackingOption)(nil)).Elem() -} - -type VirtualSwitchProfile struct { - ApplyProfile - - Key string `xml:"key"` - Name string `xml:"name"` - Link LinkProfile `xml:"link"` - NumPorts NumPortsProfile `xml:"numPorts"` - NetworkPolicy NetworkPolicyProfile `xml:"networkPolicy"` -} - -func init() { - t["VirtualSwitchProfile"] = reflect.TypeOf((*VirtualSwitchProfile)(nil)).Elem() -} - -type VirtualSwitchSelectionProfile struct { - ApplyProfile -} - -func init() { - t["VirtualSwitchSelectionProfile"] = reflect.TypeOf((*VirtualSwitchSelectionProfile)(nil)).Elem() -} - -type VirtualUSB struct { - VirtualDevice - - Connected bool `xml:"connected"` - Vendor int32 `xml:"vendor,omitempty"` - Product int32 `xml:"product,omitempty"` - Family []string `xml:"family,omitempty"` - Speed []string `xml:"speed,omitempty"` -} - -func init() { - t["VirtualUSB"] = reflect.TypeOf((*VirtualUSB)(nil)).Elem() -} - -type VirtualUSBController struct { - VirtualController - - AutoConnectDevices *bool `xml:"autoConnectDevices"` - EhciEnabled *bool `xml:"ehciEnabled"` -} - -func init() { - t["VirtualUSBController"] = reflect.TypeOf((*VirtualUSBController)(nil)).Elem() -} - -type VirtualUSBControllerOption struct { - VirtualControllerOption - - AutoConnectDevices BoolOption `xml:"autoConnectDevices"` - EhciSupported BoolOption `xml:"ehciSupported"` - SupportedSpeeds []string `xml:"supportedSpeeds,omitempty"` -} - -func init() { - t["VirtualUSBControllerOption"] = reflect.TypeOf((*VirtualUSBControllerOption)(nil)).Elem() -} - -type VirtualUSBControllerPciBusSlotInfo struct { - VirtualDevicePciBusSlotInfo - - EhciPciSlotNumber int32 `xml:"ehciPciSlotNumber,omitempty"` -} - -func init() { - t["VirtualUSBControllerPciBusSlotInfo"] = reflect.TypeOf((*VirtualUSBControllerPciBusSlotInfo)(nil)).Elem() -} - -type VirtualUSBOption struct { - VirtualDeviceOption -} - -func init() { - t["VirtualUSBOption"] = reflect.TypeOf((*VirtualUSBOption)(nil)).Elem() -} - -type VirtualUSBRemoteClientBackingInfo struct { - VirtualDeviceRemoteDeviceBackingInfo - - Hostname string `xml:"hostname"` -} - -func init() { - t["VirtualUSBRemoteClientBackingInfo"] = reflect.TypeOf((*VirtualUSBRemoteClientBackingInfo)(nil)).Elem() -} - -type VirtualUSBRemoteClientBackingOption struct { - VirtualDeviceRemoteDeviceBackingOption -} - -func init() { - t["VirtualUSBRemoteClientBackingOption"] = reflect.TypeOf((*VirtualUSBRemoteClientBackingOption)(nil)).Elem() -} - -type VirtualUSBRemoteHostBackingInfo struct { - VirtualDeviceDeviceBackingInfo - - Hostname string `xml:"hostname"` -} - -func init() { - t["VirtualUSBRemoteHostBackingInfo"] = reflect.TypeOf((*VirtualUSBRemoteHostBackingInfo)(nil)).Elem() -} - -type VirtualUSBRemoteHostBackingOption struct { - VirtualDeviceDeviceBackingOption -} - -func init() { - t["VirtualUSBRemoteHostBackingOption"] = reflect.TypeOf((*VirtualUSBRemoteHostBackingOption)(nil)).Elem() -} - -type VirtualUSBUSBBackingInfo struct { - VirtualDeviceDeviceBackingInfo -} - -func init() { - t["VirtualUSBUSBBackingInfo"] = reflect.TypeOf((*VirtualUSBUSBBackingInfo)(nil)).Elem() -} - -type VirtualUSBUSBBackingOption struct { - VirtualDeviceDeviceBackingOption -} - -func init() { - t["VirtualUSBUSBBackingOption"] = reflect.TypeOf((*VirtualUSBUSBBackingOption)(nil)).Elem() -} - -type VirtualUSBXHCIController struct { - VirtualController - - AutoConnectDevices *bool `xml:"autoConnectDevices"` -} - -func init() { - t["VirtualUSBXHCIController"] = reflect.TypeOf((*VirtualUSBXHCIController)(nil)).Elem() -} - -type VirtualUSBXHCIControllerOption struct { - VirtualControllerOption - - AutoConnectDevices BoolOption `xml:"autoConnectDevices"` - SupportedSpeeds []string `xml:"supportedSpeeds"` -} - -func init() { - t["VirtualUSBXHCIControllerOption"] = reflect.TypeOf((*VirtualUSBXHCIControllerOption)(nil)).Elem() -} - -type VirtualVMIROMOption struct { - VirtualDeviceOption -} - -func init() { - t["VirtualVMIROMOption"] = reflect.TypeOf((*VirtualVMIROMOption)(nil)).Elem() -} - -type VirtualVideoCardOption struct { - VirtualDeviceOption - - VideoRamSizeInKB *LongOption `xml:"videoRamSizeInKB,omitempty"` - NumDisplays *IntOption `xml:"numDisplays,omitempty"` - UseAutoDetect *BoolOption `xml:"useAutoDetect,omitempty"` - Support3D *BoolOption `xml:"support3D,omitempty"` - Use3dRendererSupported *BoolOption `xml:"use3dRendererSupported,omitempty"` - GraphicsMemorySizeInKB *LongOption `xml:"graphicsMemorySizeInKB,omitempty"` - GraphicsMemorySizeSupported *BoolOption `xml:"graphicsMemorySizeSupported,omitempty"` -} - -func init() { - t["VirtualVideoCardOption"] = reflect.TypeOf((*VirtualVideoCardOption)(nil)).Elem() -} - -type VirtualVmxnet struct { - VirtualEthernetCard -} - -func init() { - t["VirtualVmxnet"] = reflect.TypeOf((*VirtualVmxnet)(nil)).Elem() -} - -type VirtualVmxnet2 struct { - VirtualVmxnet -} - -func init() { - t["VirtualVmxnet2"] = reflect.TypeOf((*VirtualVmxnet2)(nil)).Elem() -} - -type VirtualVmxnet2Option struct { - VirtualVmxnetOption -} - -func init() { - t["VirtualVmxnet2Option"] = reflect.TypeOf((*VirtualVmxnet2Option)(nil)).Elem() -} - -type VirtualVmxnet3 struct { - VirtualVmxnet -} - -func init() { - t["VirtualVmxnet3"] = reflect.TypeOf((*VirtualVmxnet3)(nil)).Elem() -} - -type VirtualVmxnet3Option struct { - VirtualVmxnetOption -} - -func init() { - t["VirtualVmxnet3Option"] = reflect.TypeOf((*VirtualVmxnet3Option)(nil)).Elem() -} - -type VirtualVmxnetOption struct { - VirtualEthernetCardOption -} - -func init() { - t["VirtualVmxnetOption"] = reflect.TypeOf((*VirtualVmxnetOption)(nil)).Elem() -} - -type VlanProfile struct { - ApplyProfile -} - -func init() { - t["VlanProfile"] = reflect.TypeOf((*VlanProfile)(nil)).Elem() -} - -type VmAcquiredMksTicketEvent struct { - VmEvent -} - -func init() { - t["VmAcquiredMksTicketEvent"] = reflect.TypeOf((*VmAcquiredMksTicketEvent)(nil)).Elem() -} - -type VmAcquiredTicketEvent struct { - VmEvent - - TicketType string `xml:"ticketType"` -} - -func init() { - t["VmAcquiredTicketEvent"] = reflect.TypeOf((*VmAcquiredTicketEvent)(nil)).Elem() -} - -type VmAlreadyExistsInDatacenter struct { - InvalidFolder - - Host ManagedObjectReference `xml:"host"` - Hostname string `xml:"hostname"` - Vm []ManagedObjectReference `xml:"vm"` -} - -func init() { - t["VmAlreadyExistsInDatacenter"] = reflect.TypeOf((*VmAlreadyExistsInDatacenter)(nil)).Elem() -} - -type VmAlreadyExistsInDatacenterFault VmAlreadyExistsInDatacenter - -func init() { - t["VmAlreadyExistsInDatacenterFault"] = reflect.TypeOf((*VmAlreadyExistsInDatacenterFault)(nil)).Elem() -} - -type VmAutoRenameEvent struct { - VmEvent - - OldName string `xml:"oldName"` - NewName string `xml:"newName"` -} - -func init() { - t["VmAutoRenameEvent"] = reflect.TypeOf((*VmAutoRenameEvent)(nil)).Elem() -} - -type VmBeingClonedEvent struct { - VmCloneEvent - - DestFolder FolderEventArgument `xml:"destFolder"` - DestName string `xml:"destName"` - DestHost HostEventArgument `xml:"destHost"` -} - -func init() { - t["VmBeingClonedEvent"] = reflect.TypeOf((*VmBeingClonedEvent)(nil)).Elem() -} - -type VmBeingClonedNoFolderEvent struct { - VmCloneEvent - - DestName string `xml:"destName"` - DestHost HostEventArgument `xml:"destHost"` -} - -func init() { - t["VmBeingClonedNoFolderEvent"] = reflect.TypeOf((*VmBeingClonedNoFolderEvent)(nil)).Elem() -} - -type VmBeingCreatedEvent struct { - VmEvent - - ConfigSpec *VirtualMachineConfigSpec `xml:"configSpec,omitempty"` -} - -func init() { - t["VmBeingCreatedEvent"] = reflect.TypeOf((*VmBeingCreatedEvent)(nil)).Elem() -} - -type VmBeingDeployedEvent struct { - VmEvent - - SrcTemplate VmEventArgument `xml:"srcTemplate"` -} - -func init() { - t["VmBeingDeployedEvent"] = reflect.TypeOf((*VmBeingDeployedEvent)(nil)).Elem() -} - -type VmBeingHotMigratedEvent struct { - VmEvent - - DestHost HostEventArgument `xml:"destHost"` - DestDatacenter *DatacenterEventArgument `xml:"destDatacenter,omitempty"` - DestDatastore *DatastoreEventArgument `xml:"destDatastore,omitempty"` -} - -func init() { - t["VmBeingHotMigratedEvent"] = reflect.TypeOf((*VmBeingHotMigratedEvent)(nil)).Elem() -} - -type VmBeingMigratedEvent struct { - VmEvent - - DestHost HostEventArgument `xml:"destHost"` - DestDatacenter *DatacenterEventArgument `xml:"destDatacenter,omitempty"` - DestDatastore *DatastoreEventArgument `xml:"destDatastore,omitempty"` -} - -func init() { - t["VmBeingMigratedEvent"] = reflect.TypeOf((*VmBeingMigratedEvent)(nil)).Elem() -} - -type VmBeingRelocatedEvent struct { - VmRelocateSpecEvent - - DestHost HostEventArgument `xml:"destHost"` - DestDatacenter *DatacenterEventArgument `xml:"destDatacenter,omitempty"` - DestDatastore *DatastoreEventArgument `xml:"destDatastore,omitempty"` -} - -func init() { - t["VmBeingRelocatedEvent"] = reflect.TypeOf((*VmBeingRelocatedEvent)(nil)).Elem() -} - -type VmCloneEvent struct { - VmEvent -} - -func init() { - t["VmCloneEvent"] = reflect.TypeOf((*VmCloneEvent)(nil)).Elem() -} - -type VmCloneFailedEvent struct { - VmCloneEvent - - DestFolder FolderEventArgument `xml:"destFolder"` - DestName string `xml:"destName"` - DestHost HostEventArgument `xml:"destHost"` - Reason LocalizedMethodFault `xml:"reason"` -} - -func init() { - t["VmCloneFailedEvent"] = reflect.TypeOf((*VmCloneFailedEvent)(nil)).Elem() -} - -type VmClonedEvent struct { - VmCloneEvent - - SourceVm VmEventArgument `xml:"sourceVm"` -} - -func init() { - t["VmClonedEvent"] = reflect.TypeOf((*VmClonedEvent)(nil)).Elem() -} - -type VmConfigFault struct { - VimFault -} - -func init() { - t["VmConfigFault"] = reflect.TypeOf((*VmConfigFault)(nil)).Elem() -} - -type VmConfigFaultFault BaseVmConfigFault - -func init() { - t["VmConfigFaultFault"] = reflect.TypeOf((*VmConfigFaultFault)(nil)).Elem() -} - -type VmConfigFileInfo struct { - FileInfo - - ConfigVersion int32 `xml:"configVersion,omitempty"` -} - -func init() { - t["VmConfigFileInfo"] = reflect.TypeOf((*VmConfigFileInfo)(nil)).Elem() -} - -type VmConfigFileQuery struct { - FileQuery - - Filter *VmConfigFileQueryFilter `xml:"filter,omitempty"` - Details *VmConfigFileQueryFlags `xml:"details,omitempty"` -} - -func init() { - t["VmConfigFileQuery"] = reflect.TypeOf((*VmConfigFileQuery)(nil)).Elem() -} - -type VmConfigFileQueryFilter struct { - DynamicData - - MatchConfigVersion []int32 `xml:"matchConfigVersion,omitempty"` -} - -func init() { - t["VmConfigFileQueryFilter"] = reflect.TypeOf((*VmConfigFileQueryFilter)(nil)).Elem() -} - -type VmConfigFileQueryFlags struct { - DynamicData - - ConfigVersion bool `xml:"configVersion"` -} - -func init() { - t["VmConfigFileQueryFlags"] = reflect.TypeOf((*VmConfigFileQueryFlags)(nil)).Elem() -} - -type VmConfigIncompatibleForFaultTolerance struct { - VmConfigFault - - Fault *LocalizedMethodFault `xml:"fault,omitempty"` -} - -func init() { - t["VmConfigIncompatibleForFaultTolerance"] = reflect.TypeOf((*VmConfigIncompatibleForFaultTolerance)(nil)).Elem() -} - -type VmConfigIncompatibleForFaultToleranceFault VmConfigIncompatibleForFaultTolerance - -func init() { - t["VmConfigIncompatibleForFaultToleranceFault"] = reflect.TypeOf((*VmConfigIncompatibleForFaultToleranceFault)(nil)).Elem() -} - -type VmConfigIncompatibleForRecordReplay struct { - VmConfigFault - - Fault *LocalizedMethodFault `xml:"fault,omitempty"` -} - -func init() { - t["VmConfigIncompatibleForRecordReplay"] = reflect.TypeOf((*VmConfigIncompatibleForRecordReplay)(nil)).Elem() -} - -type VmConfigIncompatibleForRecordReplayFault VmConfigIncompatibleForRecordReplay - -func init() { - t["VmConfigIncompatibleForRecordReplayFault"] = reflect.TypeOf((*VmConfigIncompatibleForRecordReplayFault)(nil)).Elem() -} - -type VmConfigInfo struct { - DynamicData - - Product []VAppProductInfo `xml:"product,omitempty"` - Property []VAppPropertyInfo `xml:"property,omitempty"` - IpAssignment VAppIPAssignmentInfo `xml:"ipAssignment"` - Eula []string `xml:"eula,omitempty"` - OvfSection []VAppOvfSectionInfo `xml:"ovfSection,omitempty"` - OvfEnvironmentTransport []string `xml:"ovfEnvironmentTransport,omitempty"` - InstallBootRequired bool `xml:"installBootRequired"` - InstallBootStopDelay int32 `xml:"installBootStopDelay"` -} - -func init() { - t["VmConfigInfo"] = reflect.TypeOf((*VmConfigInfo)(nil)).Elem() -} - -type VmConfigMissingEvent struct { - VmEvent -} - -func init() { - t["VmConfigMissingEvent"] = reflect.TypeOf((*VmConfigMissingEvent)(nil)).Elem() -} - -type VmConfigSpec struct { - DynamicData - - Product []VAppProductSpec `xml:"product,omitempty"` - Property []VAppPropertySpec `xml:"property,omitempty"` - IpAssignment *VAppIPAssignmentInfo `xml:"ipAssignment,omitempty"` - Eula []string `xml:"eula,omitempty"` - OvfSection []VAppOvfSectionSpec `xml:"ovfSection,omitempty"` - OvfEnvironmentTransport []string `xml:"ovfEnvironmentTransport,omitempty"` - InstallBootRequired *bool `xml:"installBootRequired"` - InstallBootStopDelay int32 `xml:"installBootStopDelay,omitempty"` -} - -func init() { - t["VmConfigSpec"] = reflect.TypeOf((*VmConfigSpec)(nil)).Elem() -} - -type VmConnectedEvent struct { - VmEvent -} - -func init() { - t["VmConnectedEvent"] = reflect.TypeOf((*VmConnectedEvent)(nil)).Elem() -} - -type VmCreatedEvent struct { - VmEvent -} - -func init() { - t["VmCreatedEvent"] = reflect.TypeOf((*VmCreatedEvent)(nil)).Elem() -} - -type VmDasBeingResetEvent struct { - VmEvent - - Reason string `xml:"reason,omitempty"` -} - -func init() { - t["VmDasBeingResetEvent"] = reflect.TypeOf((*VmDasBeingResetEvent)(nil)).Elem() -} - -type VmDasBeingResetWithScreenshotEvent struct { - VmDasBeingResetEvent - - ScreenshotFilePath string `xml:"screenshotFilePath"` -} - -func init() { - t["VmDasBeingResetWithScreenshotEvent"] = reflect.TypeOf((*VmDasBeingResetWithScreenshotEvent)(nil)).Elem() -} - -type VmDasResetFailedEvent struct { - VmEvent -} - -func init() { - t["VmDasResetFailedEvent"] = reflect.TypeOf((*VmDasResetFailedEvent)(nil)).Elem() -} - -type VmDasUpdateErrorEvent struct { - VmEvent -} - -func init() { - t["VmDasUpdateErrorEvent"] = reflect.TypeOf((*VmDasUpdateErrorEvent)(nil)).Elem() -} - -type VmDasUpdateOkEvent struct { - VmEvent -} - -func init() { - t["VmDasUpdateOkEvent"] = reflect.TypeOf((*VmDasUpdateOkEvent)(nil)).Elem() -} - -type VmDateRolledBackEvent struct { - VmEvent -} - -func init() { - t["VmDateRolledBackEvent"] = reflect.TypeOf((*VmDateRolledBackEvent)(nil)).Elem() -} - -type VmDeployFailedEvent struct { - VmEvent - - DestDatastore BaseEntityEventArgument `xml:"destDatastore,typeattr"` - Reason LocalizedMethodFault `xml:"reason"` -} - -func init() { - t["VmDeployFailedEvent"] = reflect.TypeOf((*VmDeployFailedEvent)(nil)).Elem() -} - -type VmDeployedEvent struct { - VmEvent - - SrcTemplate VmEventArgument `xml:"srcTemplate"` -} - -func init() { - t["VmDeployedEvent"] = reflect.TypeOf((*VmDeployedEvent)(nil)).Elem() -} - -type VmDisconnectedEvent struct { - VmEvent -} - -func init() { - t["VmDisconnectedEvent"] = reflect.TypeOf((*VmDisconnectedEvent)(nil)).Elem() -} - -type VmDiscoveredEvent struct { - VmEvent -} - -func init() { - t["VmDiscoveredEvent"] = reflect.TypeOf((*VmDiscoveredEvent)(nil)).Elem() -} - -type VmDiskFailedEvent struct { - VmEvent - - Disk string `xml:"disk"` - Reason LocalizedMethodFault `xml:"reason"` -} - -func init() { - t["VmDiskFailedEvent"] = reflect.TypeOf((*VmDiskFailedEvent)(nil)).Elem() -} - -type VmDiskFileInfo struct { - FileInfo - - DiskType string `xml:"diskType,omitempty"` - CapacityKb int64 `xml:"capacityKb,omitempty"` - HardwareVersion int32 `xml:"hardwareVersion,omitempty"` - ControllerType string `xml:"controllerType,omitempty"` - DiskExtents []string `xml:"diskExtents,omitempty"` - Thin *bool `xml:"thin"` -} - -func init() { - t["VmDiskFileInfo"] = reflect.TypeOf((*VmDiskFileInfo)(nil)).Elem() -} - -type VmDiskFileQuery struct { - FileQuery - - Filter *VmDiskFileQueryFilter `xml:"filter,omitempty"` - Details *VmDiskFileQueryFlags `xml:"details,omitempty"` -} - -func init() { - t["VmDiskFileQuery"] = reflect.TypeOf((*VmDiskFileQuery)(nil)).Elem() -} - -type VmDiskFileQueryFilter struct { - DynamicData - - DiskType []string `xml:"diskType,omitempty"` - MatchHardwareVersion []int32 `xml:"matchHardwareVersion,omitempty"` - ControllerType []string `xml:"controllerType,omitempty"` - Thin *bool `xml:"thin"` -} - -func init() { - t["VmDiskFileQueryFilter"] = reflect.TypeOf((*VmDiskFileQueryFilter)(nil)).Elem() -} - -type VmDiskFileQueryFlags struct { - DynamicData - - DiskType bool `xml:"diskType"` - CapacityKb bool `xml:"capacityKb"` - HardwareVersion bool `xml:"hardwareVersion"` - ControllerType *bool `xml:"controllerType"` - DiskExtents *bool `xml:"diskExtents"` - Thin *bool `xml:"thin"` -} - -func init() { - t["VmDiskFileQueryFlags"] = reflect.TypeOf((*VmDiskFileQueryFlags)(nil)).Elem() -} - -type VmEmigratingEvent struct { - VmEvent -} - -func init() { - t["VmEmigratingEvent"] = reflect.TypeOf((*VmEmigratingEvent)(nil)).Elem() -} - -type VmEndRecordingEvent struct { - VmEvent -} - -func init() { - t["VmEndRecordingEvent"] = reflect.TypeOf((*VmEndRecordingEvent)(nil)).Elem() -} - -type VmEndReplayingEvent struct { - VmEvent -} - -func init() { - t["VmEndReplayingEvent"] = reflect.TypeOf((*VmEndReplayingEvent)(nil)).Elem() -} - -type VmEvent struct { - Event - - Template bool `xml:"template"` -} - -func init() { - t["VmEvent"] = reflect.TypeOf((*VmEvent)(nil)).Elem() -} - -type VmEventArgument struct { - EntityEventArgument - - Vm ManagedObjectReference `xml:"vm"` -} - -func init() { - t["VmEventArgument"] = reflect.TypeOf((*VmEventArgument)(nil)).Elem() -} - -type VmFailedMigrateEvent struct { - VmEvent - - DestHost HostEventArgument `xml:"destHost"` - Reason LocalizedMethodFault `xml:"reason"` - DestDatacenter *DatacenterEventArgument `xml:"destDatacenter,omitempty"` - DestDatastore *DatastoreEventArgument `xml:"destDatastore,omitempty"` -} - -func init() { - t["VmFailedMigrateEvent"] = reflect.TypeOf((*VmFailedMigrateEvent)(nil)).Elem() -} - -type VmFailedRelayoutEvent struct { - VmEvent - - Reason LocalizedMethodFault `xml:"reason"` -} - -func init() { - t["VmFailedRelayoutEvent"] = reflect.TypeOf((*VmFailedRelayoutEvent)(nil)).Elem() -} - -type VmFailedRelayoutOnVmfs2DatastoreEvent struct { - VmEvent -} - -func init() { - t["VmFailedRelayoutOnVmfs2DatastoreEvent"] = reflect.TypeOf((*VmFailedRelayoutOnVmfs2DatastoreEvent)(nil)).Elem() -} - -type VmFailedStartingSecondaryEvent struct { - VmEvent - - Reason string `xml:"reason,omitempty"` -} - -func init() { - t["VmFailedStartingSecondaryEvent"] = reflect.TypeOf((*VmFailedStartingSecondaryEvent)(nil)).Elem() -} - -type VmFailedToPowerOffEvent struct { - VmEvent - - Reason LocalizedMethodFault `xml:"reason"` -} - -func init() { - t["VmFailedToPowerOffEvent"] = reflect.TypeOf((*VmFailedToPowerOffEvent)(nil)).Elem() -} - -type VmFailedToPowerOnEvent struct { - VmEvent - - Reason LocalizedMethodFault `xml:"reason"` -} - -func init() { - t["VmFailedToPowerOnEvent"] = reflect.TypeOf((*VmFailedToPowerOnEvent)(nil)).Elem() -} - -type VmFailedToRebootGuestEvent struct { - VmEvent - - Reason LocalizedMethodFault `xml:"reason"` -} - -func init() { - t["VmFailedToRebootGuestEvent"] = reflect.TypeOf((*VmFailedToRebootGuestEvent)(nil)).Elem() -} - -type VmFailedToResetEvent struct { - VmEvent - - Reason LocalizedMethodFault `xml:"reason"` -} - -func init() { - t["VmFailedToResetEvent"] = reflect.TypeOf((*VmFailedToResetEvent)(nil)).Elem() -} - -type VmFailedToShutdownGuestEvent struct { - VmEvent - - Reason LocalizedMethodFault `xml:"reason"` -} - -func init() { - t["VmFailedToShutdownGuestEvent"] = reflect.TypeOf((*VmFailedToShutdownGuestEvent)(nil)).Elem() -} - -type VmFailedToStandbyGuestEvent struct { - VmEvent - - Reason LocalizedMethodFault `xml:"reason"` -} - -func init() { - t["VmFailedToStandbyGuestEvent"] = reflect.TypeOf((*VmFailedToStandbyGuestEvent)(nil)).Elem() -} - -type VmFailedToSuspendEvent struct { - VmEvent - - Reason LocalizedMethodFault `xml:"reason"` -} - -func init() { - t["VmFailedToSuspendEvent"] = reflect.TypeOf((*VmFailedToSuspendEvent)(nil)).Elem() -} - -type VmFailedUpdatingSecondaryConfig struct { - VmEvent -} - -func init() { - t["VmFailedUpdatingSecondaryConfig"] = reflect.TypeOf((*VmFailedUpdatingSecondaryConfig)(nil)).Elem() -} - -type VmFailoverFailed struct { - VmEvent - - Reason *LocalizedMethodFault `xml:"reason,omitempty"` -} - -func init() { - t["VmFailoverFailed"] = reflect.TypeOf((*VmFailoverFailed)(nil)).Elem() -} - -type VmFaultToleranceConfigIssue struct { - VmFaultToleranceIssue - - Reason string `xml:"reason,omitempty"` - EntityName string `xml:"entityName,omitempty"` - Entity *ManagedObjectReference `xml:"entity,omitempty"` -} - -func init() { - t["VmFaultToleranceConfigIssue"] = reflect.TypeOf((*VmFaultToleranceConfigIssue)(nil)).Elem() -} - -type VmFaultToleranceConfigIssueFault VmFaultToleranceConfigIssue - -func init() { - t["VmFaultToleranceConfigIssueFault"] = reflect.TypeOf((*VmFaultToleranceConfigIssueFault)(nil)).Elem() -} - -type VmFaultToleranceConfigIssueWrapper struct { - VmFaultToleranceIssue - - EntityName string `xml:"entityName,omitempty"` - Entity *ManagedObjectReference `xml:"entity,omitempty"` - Error *LocalizedMethodFault `xml:"error,omitempty"` -} - -func init() { - t["VmFaultToleranceConfigIssueWrapper"] = reflect.TypeOf((*VmFaultToleranceConfigIssueWrapper)(nil)).Elem() -} - -type VmFaultToleranceConfigIssueWrapperFault VmFaultToleranceConfigIssueWrapper - -func init() { - t["VmFaultToleranceConfigIssueWrapperFault"] = reflect.TypeOf((*VmFaultToleranceConfigIssueWrapperFault)(nil)).Elem() -} - -type VmFaultToleranceInvalidFileBacking struct { - VmFaultToleranceIssue - - BackingType string `xml:"backingType,omitempty"` - BackingFilename string `xml:"backingFilename,omitempty"` -} - -func init() { - t["VmFaultToleranceInvalidFileBacking"] = reflect.TypeOf((*VmFaultToleranceInvalidFileBacking)(nil)).Elem() -} - -type VmFaultToleranceInvalidFileBackingFault VmFaultToleranceInvalidFileBacking - -func init() { - t["VmFaultToleranceInvalidFileBackingFault"] = reflect.TypeOf((*VmFaultToleranceInvalidFileBackingFault)(nil)).Elem() -} - -type VmFaultToleranceIssue struct { - VimFault -} - -func init() { - t["VmFaultToleranceIssue"] = reflect.TypeOf((*VmFaultToleranceIssue)(nil)).Elem() -} - -type VmFaultToleranceIssueFault BaseVmFaultToleranceIssue - -func init() { - t["VmFaultToleranceIssueFault"] = reflect.TypeOf((*VmFaultToleranceIssueFault)(nil)).Elem() -} - -type VmFaultToleranceOpIssuesList struct { - VmFaultToleranceIssue - - Errors []LocalizedMethodFault `xml:"errors,omitempty"` - Warnings []LocalizedMethodFault `xml:"warnings,omitempty"` -} - -func init() { - t["VmFaultToleranceOpIssuesList"] = reflect.TypeOf((*VmFaultToleranceOpIssuesList)(nil)).Elem() -} - -type VmFaultToleranceOpIssuesListFault VmFaultToleranceOpIssuesList - -func init() { - t["VmFaultToleranceOpIssuesListFault"] = reflect.TypeOf((*VmFaultToleranceOpIssuesListFault)(nil)).Elem() -} - -type VmFaultToleranceStateChangedEvent struct { - VmEvent - - OldState VirtualMachineFaultToleranceState `xml:"oldState"` - NewState VirtualMachineFaultToleranceState `xml:"newState"` -} - -func init() { - t["VmFaultToleranceStateChangedEvent"] = reflect.TypeOf((*VmFaultToleranceStateChangedEvent)(nil)).Elem() -} - -type VmFaultToleranceTooManyFtVcpusOnHost struct { - InsufficientResourcesFault - - HostName string `xml:"hostName,omitempty"` - MaxNumFtVcpus int32 `xml:"maxNumFtVcpus"` -} - -func init() { - t["VmFaultToleranceTooManyFtVcpusOnHost"] = reflect.TypeOf((*VmFaultToleranceTooManyFtVcpusOnHost)(nil)).Elem() -} - -type VmFaultToleranceTooManyFtVcpusOnHostFault VmFaultToleranceTooManyFtVcpusOnHost - -func init() { - t["VmFaultToleranceTooManyFtVcpusOnHostFault"] = reflect.TypeOf((*VmFaultToleranceTooManyFtVcpusOnHostFault)(nil)).Elem() -} - -type VmFaultToleranceTooManyVMsOnHost struct { - InsufficientResourcesFault - - HostName string `xml:"hostName,omitempty"` - MaxNumFtVms int32 `xml:"maxNumFtVms"` -} - -func init() { - t["VmFaultToleranceTooManyVMsOnHost"] = reflect.TypeOf((*VmFaultToleranceTooManyVMsOnHost)(nil)).Elem() -} - -type VmFaultToleranceTooManyVMsOnHostFault VmFaultToleranceTooManyVMsOnHost - -func init() { - t["VmFaultToleranceTooManyVMsOnHostFault"] = reflect.TypeOf((*VmFaultToleranceTooManyVMsOnHostFault)(nil)).Elem() -} - -type VmFaultToleranceTurnedOffEvent struct { - VmEvent -} - -func init() { - t["VmFaultToleranceTurnedOffEvent"] = reflect.TypeOf((*VmFaultToleranceTurnedOffEvent)(nil)).Elem() -} - -type VmFaultToleranceVmTerminatedEvent struct { - VmEvent - - Reason string `xml:"reason,omitempty"` -} - -func init() { - t["VmFaultToleranceVmTerminatedEvent"] = reflect.TypeOf((*VmFaultToleranceVmTerminatedEvent)(nil)).Elem() -} - -type VmGuestOSCrashedEvent struct { - VmEvent -} - -func init() { - t["VmGuestOSCrashedEvent"] = reflect.TypeOf((*VmGuestOSCrashedEvent)(nil)).Elem() -} - -type VmGuestRebootEvent struct { - VmEvent -} - -func init() { - t["VmGuestRebootEvent"] = reflect.TypeOf((*VmGuestRebootEvent)(nil)).Elem() -} - -type VmGuestShutdownEvent struct { - VmEvent -} - -func init() { - t["VmGuestShutdownEvent"] = reflect.TypeOf((*VmGuestShutdownEvent)(nil)).Elem() -} - -type VmGuestStandbyEvent struct { - VmEvent -} - -func init() { - t["VmGuestStandbyEvent"] = reflect.TypeOf((*VmGuestStandbyEvent)(nil)).Elem() -} - -type VmHealthMonitoringStateChangedEvent struct { - ClusterEvent - - State string `xml:"state"` -} - -func init() { - t["VmHealthMonitoringStateChangedEvent"] = reflect.TypeOf((*VmHealthMonitoringStateChangedEvent)(nil)).Elem() -} - -type VmHostAffinityRuleViolation struct { - VmConfigFault - - VmName string `xml:"vmName"` - HostName string `xml:"hostName"` -} - -func init() { - t["VmHostAffinityRuleViolation"] = reflect.TypeOf((*VmHostAffinityRuleViolation)(nil)).Elem() -} - -type VmHostAffinityRuleViolationFault VmHostAffinityRuleViolation - -func init() { - t["VmHostAffinityRuleViolationFault"] = reflect.TypeOf((*VmHostAffinityRuleViolationFault)(nil)).Elem() -} - -type VmInstanceUuidAssignedEvent struct { - VmEvent - - InstanceUuid string `xml:"instanceUuid"` -} - -func init() { - t["VmInstanceUuidAssignedEvent"] = reflect.TypeOf((*VmInstanceUuidAssignedEvent)(nil)).Elem() -} - -type VmInstanceUuidChangedEvent struct { - VmEvent - - OldInstanceUuid string `xml:"oldInstanceUuid"` - NewInstanceUuid string `xml:"newInstanceUuid"` -} - -func init() { - t["VmInstanceUuidChangedEvent"] = reflect.TypeOf((*VmInstanceUuidChangedEvent)(nil)).Elem() -} - -type VmInstanceUuidConflictEvent struct { - VmEvent - - ConflictedVm VmEventArgument `xml:"conflictedVm"` - InstanceUuid string `xml:"instanceUuid"` -} - -func init() { - t["VmInstanceUuidConflictEvent"] = reflect.TypeOf((*VmInstanceUuidConflictEvent)(nil)).Elem() -} - -type VmLimitLicense struct { - NotEnoughLicenses - - Limit int32 `xml:"limit"` -} - -func init() { - t["VmLimitLicense"] = reflect.TypeOf((*VmLimitLicense)(nil)).Elem() -} - -type VmLimitLicenseFault VmLimitLicense - -func init() { - t["VmLimitLicenseFault"] = reflect.TypeOf((*VmLimitLicenseFault)(nil)).Elem() -} - -type VmLogFileInfo struct { - FileInfo -} - -func init() { - t["VmLogFileInfo"] = reflect.TypeOf((*VmLogFileInfo)(nil)).Elem() -} - -type VmLogFileQuery struct { - FileQuery -} - -func init() { - t["VmLogFileQuery"] = reflect.TypeOf((*VmLogFileQuery)(nil)).Elem() -} - -type VmMacAssignedEvent struct { - VmEvent - - Adapter string `xml:"adapter"` - Mac string `xml:"mac"` -} - -func init() { - t["VmMacAssignedEvent"] = reflect.TypeOf((*VmMacAssignedEvent)(nil)).Elem() -} - -type VmMacChangedEvent struct { - VmEvent - - Adapter string `xml:"adapter"` - OldMac string `xml:"oldMac"` - NewMac string `xml:"newMac"` -} - -func init() { - t["VmMacChangedEvent"] = reflect.TypeOf((*VmMacChangedEvent)(nil)).Elem() -} - -type VmMacConflictEvent struct { - VmEvent - - ConflictedVm VmEventArgument `xml:"conflictedVm"` - Mac string `xml:"mac"` -} - -func init() { - t["VmMacConflictEvent"] = reflect.TypeOf((*VmMacConflictEvent)(nil)).Elem() -} - -type VmMaxFTRestartCountReached struct { - VmEvent -} - -func init() { - t["VmMaxFTRestartCountReached"] = reflect.TypeOf((*VmMaxFTRestartCountReached)(nil)).Elem() -} - -type VmMaxRestartCountReached struct { - VmEvent -} - -func init() { - t["VmMaxRestartCountReached"] = reflect.TypeOf((*VmMaxRestartCountReached)(nil)).Elem() -} - -type VmMessageErrorEvent struct { - VmEvent - - Message string `xml:"message"` - MessageInfo []VirtualMachineMessage `xml:"messageInfo,omitempty"` -} - -func init() { - t["VmMessageErrorEvent"] = reflect.TypeOf((*VmMessageErrorEvent)(nil)).Elem() -} - -type VmMessageEvent struct { - VmEvent - - Message string `xml:"message"` - MessageInfo []VirtualMachineMessage `xml:"messageInfo,omitempty"` -} - -func init() { - t["VmMessageEvent"] = reflect.TypeOf((*VmMessageEvent)(nil)).Elem() -} - -type VmMessageWarningEvent struct { - VmEvent - - Message string `xml:"message"` - MessageInfo []VirtualMachineMessage `xml:"messageInfo,omitempty"` -} - -func init() { - t["VmMessageWarningEvent"] = reflect.TypeOf((*VmMessageWarningEvent)(nil)).Elem() -} - -type VmMetadataManagerFault struct { - VimFault -} - -func init() { - t["VmMetadataManagerFault"] = reflect.TypeOf((*VmMetadataManagerFault)(nil)).Elem() -} - -type VmMetadataManagerFaultFault VmMetadataManagerFault - -func init() { - t["VmMetadataManagerFaultFault"] = reflect.TypeOf((*VmMetadataManagerFaultFault)(nil)).Elem() -} - -type VmMigratedEvent struct { - VmEvent - - SourceHost HostEventArgument `xml:"sourceHost"` - SourceDatacenter *DatacenterEventArgument `xml:"sourceDatacenter,omitempty"` - SourceDatastore *DatastoreEventArgument `xml:"sourceDatastore,omitempty"` -} - -func init() { - t["VmMigratedEvent"] = reflect.TypeOf((*VmMigratedEvent)(nil)).Elem() -} - -type VmMonitorIncompatibleForFaultTolerance struct { - VimFault -} - -func init() { - t["VmMonitorIncompatibleForFaultTolerance"] = reflect.TypeOf((*VmMonitorIncompatibleForFaultTolerance)(nil)).Elem() -} - -type VmMonitorIncompatibleForFaultToleranceFault VmMonitorIncompatibleForFaultTolerance - -func init() { - t["VmMonitorIncompatibleForFaultToleranceFault"] = reflect.TypeOf((*VmMonitorIncompatibleForFaultToleranceFault)(nil)).Elem() -} - -type VmNoCompatibleHostForSecondaryEvent struct { - VmEvent -} - -func init() { - t["VmNoCompatibleHostForSecondaryEvent"] = reflect.TypeOf((*VmNoCompatibleHostForSecondaryEvent)(nil)).Elem() -} - -type VmNoNetworkAccessEvent struct { - VmEvent - - DestHost HostEventArgument `xml:"destHost"` -} - -func init() { - t["VmNoNetworkAccessEvent"] = reflect.TypeOf((*VmNoNetworkAccessEvent)(nil)).Elem() -} - -type VmNvramFileInfo struct { - FileInfo -} - -func init() { - t["VmNvramFileInfo"] = reflect.TypeOf((*VmNvramFileInfo)(nil)).Elem() -} - -type VmNvramFileQuery struct { - FileQuery -} - -func init() { - t["VmNvramFileQuery"] = reflect.TypeOf((*VmNvramFileQuery)(nil)).Elem() -} - -type VmOrphanedEvent struct { - VmEvent -} - -func init() { - t["VmOrphanedEvent"] = reflect.TypeOf((*VmOrphanedEvent)(nil)).Elem() -} - -type VmPodConfigForPlacement struct { - DynamicData - - StoragePod ManagedObjectReference `xml:"storagePod"` - Disk []PodDiskLocator `xml:"disk,omitempty"` - VmConfig *StorageDrsVmConfigInfo `xml:"vmConfig,omitempty"` - InterVmRule []BaseClusterRuleInfo `xml:"interVmRule,omitempty,typeattr"` -} - -func init() { - t["VmPodConfigForPlacement"] = reflect.TypeOf((*VmPodConfigForPlacement)(nil)).Elem() -} - -type VmPortGroupProfile struct { - PortGroupProfile -} - -func init() { - t["VmPortGroupProfile"] = reflect.TypeOf((*VmPortGroupProfile)(nil)).Elem() -} - -type VmPowerOffOnIsolationEvent struct { - VmPoweredOffEvent - - IsolatedHost HostEventArgument `xml:"isolatedHost"` -} - -func init() { - t["VmPowerOffOnIsolationEvent"] = reflect.TypeOf((*VmPowerOffOnIsolationEvent)(nil)).Elem() -} - -type VmPowerOnDisabled struct { - InvalidState -} - -func init() { - t["VmPowerOnDisabled"] = reflect.TypeOf((*VmPowerOnDisabled)(nil)).Elem() -} - -type VmPowerOnDisabledFault VmPowerOnDisabled - -func init() { - t["VmPowerOnDisabledFault"] = reflect.TypeOf((*VmPowerOnDisabledFault)(nil)).Elem() -} - -type VmPoweredOffEvent struct { - VmEvent -} - -func init() { - t["VmPoweredOffEvent"] = reflect.TypeOf((*VmPoweredOffEvent)(nil)).Elem() -} - -type VmPoweredOnEvent struct { - VmEvent -} - -func init() { - t["VmPoweredOnEvent"] = reflect.TypeOf((*VmPoweredOnEvent)(nil)).Elem() -} - -type VmPoweringOnWithCustomizedDVPortEvent struct { - VmEvent - - Vnic []VnicPortArgument `xml:"vnic"` -} - -func init() { - t["VmPoweringOnWithCustomizedDVPortEvent"] = reflect.TypeOf((*VmPoweringOnWithCustomizedDVPortEvent)(nil)).Elem() -} - -type VmPrimaryFailoverEvent struct { - VmEvent - - Reason string `xml:"reason,omitempty"` -} - -func init() { - t["VmPrimaryFailoverEvent"] = reflect.TypeOf((*VmPrimaryFailoverEvent)(nil)).Elem() -} - -type VmReconfiguredEvent struct { - VmEvent - - ConfigSpec VirtualMachineConfigSpec `xml:"configSpec"` -} - -func init() { - t["VmReconfiguredEvent"] = reflect.TypeOf((*VmReconfiguredEvent)(nil)).Elem() -} - -type VmRegisteredEvent struct { - VmEvent -} - -func init() { - t["VmRegisteredEvent"] = reflect.TypeOf((*VmRegisteredEvent)(nil)).Elem() -} - -type VmRelayoutSuccessfulEvent struct { - VmEvent -} - -func init() { - t["VmRelayoutSuccessfulEvent"] = reflect.TypeOf((*VmRelayoutSuccessfulEvent)(nil)).Elem() -} - -type VmRelayoutUpToDateEvent struct { - VmEvent -} - -func init() { - t["VmRelayoutUpToDateEvent"] = reflect.TypeOf((*VmRelayoutUpToDateEvent)(nil)).Elem() -} - -type VmReloadFromPathEvent struct { - VmEvent - - ConfigPath string `xml:"configPath"` -} - -func init() { - t["VmReloadFromPathEvent"] = reflect.TypeOf((*VmReloadFromPathEvent)(nil)).Elem() -} - -type VmReloadFromPathFailedEvent struct { - VmEvent - - ConfigPath string `xml:"configPath"` -} - -func init() { - t["VmReloadFromPathFailedEvent"] = reflect.TypeOf((*VmReloadFromPathFailedEvent)(nil)).Elem() -} - -type VmRelocateFailedEvent struct { - VmRelocateSpecEvent - - DestHost HostEventArgument `xml:"destHost"` - Reason LocalizedMethodFault `xml:"reason"` - DestDatacenter *DatacenterEventArgument `xml:"destDatacenter,omitempty"` - DestDatastore *DatastoreEventArgument `xml:"destDatastore,omitempty"` -} - -func init() { - t["VmRelocateFailedEvent"] = reflect.TypeOf((*VmRelocateFailedEvent)(nil)).Elem() -} - -type VmRelocateSpecEvent struct { - VmEvent -} - -func init() { - t["VmRelocateSpecEvent"] = reflect.TypeOf((*VmRelocateSpecEvent)(nil)).Elem() -} - -type VmRelocatedEvent struct { - VmRelocateSpecEvent - - SourceHost HostEventArgument `xml:"sourceHost"` - SourceDatacenter *DatacenterEventArgument `xml:"sourceDatacenter,omitempty"` - SourceDatastore *DatastoreEventArgument `xml:"sourceDatastore,omitempty"` -} - -func init() { - t["VmRelocatedEvent"] = reflect.TypeOf((*VmRelocatedEvent)(nil)).Elem() -} - -type VmRemoteConsoleConnectedEvent struct { - VmEvent -} - -func init() { - t["VmRemoteConsoleConnectedEvent"] = reflect.TypeOf((*VmRemoteConsoleConnectedEvent)(nil)).Elem() -} - -type VmRemoteConsoleDisconnectedEvent struct { - VmEvent -} - -func init() { - t["VmRemoteConsoleDisconnectedEvent"] = reflect.TypeOf((*VmRemoteConsoleDisconnectedEvent)(nil)).Elem() -} - -type VmRemovedEvent struct { - VmEvent -} - -func init() { - t["VmRemovedEvent"] = reflect.TypeOf((*VmRemovedEvent)(nil)).Elem() -} - -type VmRenamedEvent struct { - VmEvent - - OldName string `xml:"oldName"` - NewName string `xml:"newName"` -} - -func init() { - t["VmRenamedEvent"] = reflect.TypeOf((*VmRenamedEvent)(nil)).Elem() -} - -type VmRequirementsExceedCurrentEVCModeEvent struct { - VmEvent -} - -func init() { - t["VmRequirementsExceedCurrentEVCModeEvent"] = reflect.TypeOf((*VmRequirementsExceedCurrentEVCModeEvent)(nil)).Elem() -} - -type VmResettingEvent struct { - VmEvent -} - -func init() { - t["VmResettingEvent"] = reflect.TypeOf((*VmResettingEvent)(nil)).Elem() -} - -type VmResourcePoolMovedEvent struct { - VmEvent - - OldParent ResourcePoolEventArgument `xml:"oldParent"` - NewParent ResourcePoolEventArgument `xml:"newParent"` -} - -func init() { - t["VmResourcePoolMovedEvent"] = reflect.TypeOf((*VmResourcePoolMovedEvent)(nil)).Elem() -} - -type VmResourceReallocatedEvent struct { - VmEvent -} - -func init() { - t["VmResourceReallocatedEvent"] = reflect.TypeOf((*VmResourceReallocatedEvent)(nil)).Elem() -} - -type VmRestartedOnAlternateHostEvent struct { - VmPoweredOnEvent - - SourceHost HostEventArgument `xml:"sourceHost"` -} - -func init() { - t["VmRestartedOnAlternateHostEvent"] = reflect.TypeOf((*VmRestartedOnAlternateHostEvent)(nil)).Elem() -} - -type VmResumingEvent struct { - VmEvent -} - -func init() { - t["VmResumingEvent"] = reflect.TypeOf((*VmResumingEvent)(nil)).Elem() -} - -type VmSecondaryAddedEvent struct { - VmEvent -} - -func init() { - t["VmSecondaryAddedEvent"] = reflect.TypeOf((*VmSecondaryAddedEvent)(nil)).Elem() -} - -type VmSecondaryDisabledBySystemEvent struct { - VmEvent - - Reason *LocalizedMethodFault `xml:"reason,omitempty"` -} - -func init() { - t["VmSecondaryDisabledBySystemEvent"] = reflect.TypeOf((*VmSecondaryDisabledBySystemEvent)(nil)).Elem() -} - -type VmSecondaryDisabledEvent struct { - VmEvent -} - -func init() { - t["VmSecondaryDisabledEvent"] = reflect.TypeOf((*VmSecondaryDisabledEvent)(nil)).Elem() -} - -type VmSecondaryEnabledEvent struct { - VmEvent -} - -func init() { - t["VmSecondaryEnabledEvent"] = reflect.TypeOf((*VmSecondaryEnabledEvent)(nil)).Elem() -} - -type VmSecondaryStartedEvent struct { - VmEvent -} - -func init() { - t["VmSecondaryStartedEvent"] = reflect.TypeOf((*VmSecondaryStartedEvent)(nil)).Elem() -} - -type VmShutdownOnIsolationEvent struct { - VmPoweredOffEvent - - IsolatedHost HostEventArgument `xml:"isolatedHost"` - ShutdownResult string `xml:"shutdownResult,omitempty"` -} - -func init() { - t["VmShutdownOnIsolationEvent"] = reflect.TypeOf((*VmShutdownOnIsolationEvent)(nil)).Elem() -} - -type VmSmpFaultToleranceTooManyVMsOnHost struct { - InsufficientResourcesFault - - HostName string `xml:"hostName,omitempty"` - MaxNumSmpFtVms int32 `xml:"maxNumSmpFtVms"` -} - -func init() { - t["VmSmpFaultToleranceTooManyVMsOnHost"] = reflect.TypeOf((*VmSmpFaultToleranceTooManyVMsOnHost)(nil)).Elem() -} - -type VmSmpFaultToleranceTooManyVMsOnHostFault VmSmpFaultToleranceTooManyVMsOnHost - -func init() { - t["VmSmpFaultToleranceTooManyVMsOnHostFault"] = reflect.TypeOf((*VmSmpFaultToleranceTooManyVMsOnHostFault)(nil)).Elem() -} - -type VmSnapshotFileInfo struct { - FileInfo -} - -func init() { - t["VmSnapshotFileInfo"] = reflect.TypeOf((*VmSnapshotFileInfo)(nil)).Elem() -} - -type VmSnapshotFileQuery struct { - FileQuery -} - -func init() { - t["VmSnapshotFileQuery"] = reflect.TypeOf((*VmSnapshotFileQuery)(nil)).Elem() -} - -type VmStartRecordingEvent struct { - VmEvent -} - -func init() { - t["VmStartRecordingEvent"] = reflect.TypeOf((*VmStartRecordingEvent)(nil)).Elem() -} - -type VmStartReplayingEvent struct { - VmEvent -} - -func init() { - t["VmStartReplayingEvent"] = reflect.TypeOf((*VmStartReplayingEvent)(nil)).Elem() -} - -type VmStartingEvent struct { - VmEvent -} - -func init() { - t["VmStartingEvent"] = reflect.TypeOf((*VmStartingEvent)(nil)).Elem() -} - -type VmStartingSecondaryEvent struct { - VmEvent -} - -func init() { - t["VmStartingSecondaryEvent"] = reflect.TypeOf((*VmStartingSecondaryEvent)(nil)).Elem() -} - -type VmStaticMacConflictEvent struct { - VmEvent - - ConflictedVm VmEventArgument `xml:"conflictedVm"` - Mac string `xml:"mac"` -} - -func init() { - t["VmStaticMacConflictEvent"] = reflect.TypeOf((*VmStaticMacConflictEvent)(nil)).Elem() -} - -type VmStoppingEvent struct { - VmEvent -} - -func init() { - t["VmStoppingEvent"] = reflect.TypeOf((*VmStoppingEvent)(nil)).Elem() -} - -type VmSuspendedEvent struct { - VmEvent -} - -func init() { - t["VmSuspendedEvent"] = reflect.TypeOf((*VmSuspendedEvent)(nil)).Elem() -} - -type VmSuspendingEvent struct { - VmEvent -} - -func init() { - t["VmSuspendingEvent"] = reflect.TypeOf((*VmSuspendingEvent)(nil)).Elem() -} - -type VmTimedoutStartingSecondaryEvent struct { - VmEvent - - Timeout int64 `xml:"timeout,omitempty"` -} - -func init() { - t["VmTimedoutStartingSecondaryEvent"] = reflect.TypeOf((*VmTimedoutStartingSecondaryEvent)(nil)).Elem() -} - -type VmToolsUpgradeFault struct { - VimFault -} - -func init() { - t["VmToolsUpgradeFault"] = reflect.TypeOf((*VmToolsUpgradeFault)(nil)).Elem() -} - -type VmToolsUpgradeFaultFault BaseVmToolsUpgradeFault - -func init() { - t["VmToolsUpgradeFaultFault"] = reflect.TypeOf((*VmToolsUpgradeFaultFault)(nil)).Elem() -} - -type VmUnsupportedStartingEvent struct { - VmStartingEvent - - GuestId string `xml:"guestId"` -} - -func init() { - t["VmUnsupportedStartingEvent"] = reflect.TypeOf((*VmUnsupportedStartingEvent)(nil)).Elem() -} - -type VmUpgradeCompleteEvent struct { - VmEvent - - Version string `xml:"version"` -} - -func init() { - t["VmUpgradeCompleteEvent"] = reflect.TypeOf((*VmUpgradeCompleteEvent)(nil)).Elem() -} - -type VmUpgradeFailedEvent struct { - VmEvent -} - -func init() { - t["VmUpgradeFailedEvent"] = reflect.TypeOf((*VmUpgradeFailedEvent)(nil)).Elem() -} - -type VmUpgradingEvent struct { - VmEvent - - Version string `xml:"version"` -} - -func init() { - t["VmUpgradingEvent"] = reflect.TypeOf((*VmUpgradingEvent)(nil)).Elem() -} - -type VmUuidAssignedEvent struct { - VmEvent - - Uuid string `xml:"uuid"` -} - -func init() { - t["VmUuidAssignedEvent"] = reflect.TypeOf((*VmUuidAssignedEvent)(nil)).Elem() -} - -type VmUuidChangedEvent struct { - VmEvent - - OldUuid string `xml:"oldUuid"` - NewUuid string `xml:"newUuid"` -} - -func init() { - t["VmUuidChangedEvent"] = reflect.TypeOf((*VmUuidChangedEvent)(nil)).Elem() -} - -type VmUuidConflictEvent struct { - VmEvent - - ConflictedVm VmEventArgument `xml:"conflictedVm"` - Uuid string `xml:"uuid"` -} - -func init() { - t["VmUuidConflictEvent"] = reflect.TypeOf((*VmUuidConflictEvent)(nil)).Elem() -} - -type VmValidateMaxDevice struct { - VimFault - - Device string `xml:"device"` - Max int32 `xml:"max"` - Count int32 `xml:"count"` -} - -func init() { - t["VmValidateMaxDevice"] = reflect.TypeOf((*VmValidateMaxDevice)(nil)).Elem() -} - -type VmValidateMaxDeviceFault VmValidateMaxDevice - -func init() { - t["VmValidateMaxDeviceFault"] = reflect.TypeOf((*VmValidateMaxDeviceFault)(nil)).Elem() -} - -type VmVnicPoolReservationViolationClearEvent struct { - DvsEvent - - VmVnicResourcePoolKey string `xml:"vmVnicResourcePoolKey"` - VmVnicResourcePoolName string `xml:"vmVnicResourcePoolName,omitempty"` -} - -func init() { - t["VmVnicPoolReservationViolationClearEvent"] = reflect.TypeOf((*VmVnicPoolReservationViolationClearEvent)(nil)).Elem() -} - -type VmVnicPoolReservationViolationRaiseEvent struct { - DvsEvent - - VmVnicResourcePoolKey string `xml:"vmVnicResourcePoolKey"` - VmVnicResourcePoolName string `xml:"vmVnicResourcePoolName,omitempty"` -} - -func init() { - t["VmVnicPoolReservationViolationRaiseEvent"] = reflect.TypeOf((*VmVnicPoolReservationViolationRaiseEvent)(nil)).Elem() -} - -type VmWwnAssignedEvent struct { - VmEvent - - NodeWwns []int64 `xml:"nodeWwns"` - PortWwns []int64 `xml:"portWwns"` -} - -func init() { - t["VmWwnAssignedEvent"] = reflect.TypeOf((*VmWwnAssignedEvent)(nil)).Elem() -} - -type VmWwnChangedEvent struct { - VmEvent - - OldNodeWwns []int64 `xml:"oldNodeWwns,omitempty"` - OldPortWwns []int64 `xml:"oldPortWwns,omitempty"` - NewNodeWwns []int64 `xml:"newNodeWwns,omitempty"` - NewPortWwns []int64 `xml:"newPortWwns,omitempty"` -} - -func init() { - t["VmWwnChangedEvent"] = reflect.TypeOf((*VmWwnChangedEvent)(nil)).Elem() -} - -type VmWwnConflict struct { - InvalidVmConfig - - Vm *ManagedObjectReference `xml:"vm,omitempty"` - Host *ManagedObjectReference `xml:"host,omitempty"` - Name string `xml:"name,omitempty"` - Wwn int64 `xml:"wwn,omitempty"` -} - -func init() { - t["VmWwnConflict"] = reflect.TypeOf((*VmWwnConflict)(nil)).Elem() -} - -type VmWwnConflictEvent struct { - VmEvent - - ConflictedVms []VmEventArgument `xml:"conflictedVms,omitempty"` - ConflictedHosts []HostEventArgument `xml:"conflictedHosts,omitempty"` - Wwn int64 `xml:"wwn"` -} - -func init() { - t["VmWwnConflictEvent"] = reflect.TypeOf((*VmWwnConflictEvent)(nil)).Elem() -} - -type VmWwnConflictFault VmWwnConflict - -func init() { - t["VmWwnConflictFault"] = reflect.TypeOf((*VmWwnConflictFault)(nil)).Elem() -} - -type VmfsAlreadyMounted struct { - VmfsMountFault -} - -func init() { - t["VmfsAlreadyMounted"] = reflect.TypeOf((*VmfsAlreadyMounted)(nil)).Elem() -} - -type VmfsAlreadyMountedFault VmfsAlreadyMounted - -func init() { - t["VmfsAlreadyMountedFault"] = reflect.TypeOf((*VmfsAlreadyMountedFault)(nil)).Elem() -} - -type VmfsAmbiguousMount struct { - VmfsMountFault -} - -func init() { - t["VmfsAmbiguousMount"] = reflect.TypeOf((*VmfsAmbiguousMount)(nil)).Elem() -} - -type VmfsAmbiguousMountFault VmfsAmbiguousMount - -func init() { - t["VmfsAmbiguousMountFault"] = reflect.TypeOf((*VmfsAmbiguousMountFault)(nil)).Elem() -} - -type VmfsDatastoreAllExtentOption struct { - VmfsDatastoreSingleExtentOption -} - -func init() { - t["VmfsDatastoreAllExtentOption"] = reflect.TypeOf((*VmfsDatastoreAllExtentOption)(nil)).Elem() -} - -type VmfsDatastoreBaseOption struct { - DynamicData - - Layout HostDiskPartitionLayout `xml:"layout"` - PartitionFormatChange *bool `xml:"partitionFormatChange"` -} - -func init() { - t["VmfsDatastoreBaseOption"] = reflect.TypeOf((*VmfsDatastoreBaseOption)(nil)).Elem() -} - -type VmfsDatastoreCreateSpec struct { - VmfsDatastoreSpec - - Partition HostDiskPartitionSpec `xml:"partition"` - Vmfs HostVmfsSpec `xml:"vmfs"` - Extent []HostScsiDiskPartition `xml:"extent,omitempty"` -} - -func init() { - t["VmfsDatastoreCreateSpec"] = reflect.TypeOf((*VmfsDatastoreCreateSpec)(nil)).Elem() -} - -type VmfsDatastoreExpandSpec struct { - VmfsDatastoreSpec - - Partition HostDiskPartitionSpec `xml:"partition"` - Extent HostScsiDiskPartition `xml:"extent"` -} - -func init() { - t["VmfsDatastoreExpandSpec"] = reflect.TypeOf((*VmfsDatastoreExpandSpec)(nil)).Elem() -} - -type VmfsDatastoreExtendSpec struct { - VmfsDatastoreSpec - - Partition HostDiskPartitionSpec `xml:"partition"` - Extent []HostScsiDiskPartition `xml:"extent"` -} - -func init() { - t["VmfsDatastoreExtendSpec"] = reflect.TypeOf((*VmfsDatastoreExtendSpec)(nil)).Elem() -} - -type VmfsDatastoreInfo struct { - DatastoreInfo - - MaxPhysicalRDMFileSize int64 `xml:"maxPhysicalRDMFileSize,omitempty"` - MaxVirtualRDMFileSize int64 `xml:"maxVirtualRDMFileSize,omitempty"` - Vmfs *HostVmfsVolume `xml:"vmfs,omitempty"` -} - -func init() { - t["VmfsDatastoreInfo"] = reflect.TypeOf((*VmfsDatastoreInfo)(nil)).Elem() -} - -type VmfsDatastoreMultipleExtentOption struct { - VmfsDatastoreBaseOption - - VmfsExtent []HostDiskPartitionBlockRange `xml:"vmfsExtent"` -} - -func init() { - t["VmfsDatastoreMultipleExtentOption"] = reflect.TypeOf((*VmfsDatastoreMultipleExtentOption)(nil)).Elem() -} - -type VmfsDatastoreOption struct { - DynamicData - - Info BaseVmfsDatastoreBaseOption `xml:"info,typeattr"` - Spec BaseVmfsDatastoreSpec `xml:"spec,typeattr"` -} - -func init() { - t["VmfsDatastoreOption"] = reflect.TypeOf((*VmfsDatastoreOption)(nil)).Elem() -} - -type VmfsDatastoreSingleExtentOption struct { - VmfsDatastoreBaseOption - - VmfsExtent HostDiskPartitionBlockRange `xml:"vmfsExtent"` -} - -func init() { - t["VmfsDatastoreSingleExtentOption"] = reflect.TypeOf((*VmfsDatastoreSingleExtentOption)(nil)).Elem() -} - -type VmfsDatastoreSpec struct { - DynamicData - - DiskUuid string `xml:"diskUuid"` -} - -func init() { - t["VmfsDatastoreSpec"] = reflect.TypeOf((*VmfsDatastoreSpec)(nil)).Elem() -} - -type VmfsMountFault struct { - HostConfigFault - - Uuid string `xml:"uuid"` -} - -func init() { - t["VmfsMountFault"] = reflect.TypeOf((*VmfsMountFault)(nil)).Elem() -} - -type VmfsMountFaultFault BaseVmfsMountFault - -func init() { - t["VmfsMountFaultFault"] = reflect.TypeOf((*VmfsMountFaultFault)(nil)).Elem() -} - -type VmotionInterfaceNotEnabled struct { - HostPowerOpFailed -} - -func init() { - t["VmotionInterfaceNotEnabled"] = reflect.TypeOf((*VmotionInterfaceNotEnabled)(nil)).Elem() -} - -type VmotionInterfaceNotEnabledFault VmotionInterfaceNotEnabled - -func init() { - t["VmotionInterfaceNotEnabledFault"] = reflect.TypeOf((*VmotionInterfaceNotEnabledFault)(nil)).Elem() -} - -type VmwareDistributedVirtualSwitchPvlanSpec struct { - VmwareDistributedVirtualSwitchVlanSpec - - PvlanId int32 `xml:"pvlanId"` -} - -func init() { - t["VmwareDistributedVirtualSwitchPvlanSpec"] = reflect.TypeOf((*VmwareDistributedVirtualSwitchPvlanSpec)(nil)).Elem() -} - -type VmwareDistributedVirtualSwitchTrunkVlanSpec struct { - VmwareDistributedVirtualSwitchVlanSpec - - VlanId []NumericRange `xml:"vlanId"` -} - -func init() { - t["VmwareDistributedVirtualSwitchTrunkVlanSpec"] = reflect.TypeOf((*VmwareDistributedVirtualSwitchTrunkVlanSpec)(nil)).Elem() -} - -type VmwareDistributedVirtualSwitchVlanIdSpec struct { - VmwareDistributedVirtualSwitchVlanSpec - - VlanId int32 `xml:"vlanId"` -} - -func init() { - t["VmwareDistributedVirtualSwitchVlanIdSpec"] = reflect.TypeOf((*VmwareDistributedVirtualSwitchVlanIdSpec)(nil)).Elem() -} - -type VmwareDistributedVirtualSwitchVlanSpec struct { - InheritablePolicy -} - -func init() { - t["VmwareDistributedVirtualSwitchVlanSpec"] = reflect.TypeOf((*VmwareDistributedVirtualSwitchVlanSpec)(nil)).Elem() -} - -type VmwareUplinkPortTeamingPolicy struct { - InheritablePolicy - - Policy *StringPolicy `xml:"policy,omitempty"` - ReversePolicy *BoolPolicy `xml:"reversePolicy,omitempty"` - NotifySwitches *BoolPolicy `xml:"notifySwitches,omitempty"` - RollingOrder *BoolPolicy `xml:"rollingOrder,omitempty"` - FailureCriteria *DVSFailureCriteria `xml:"failureCriteria,omitempty"` - UplinkPortOrder *VMwareUplinkPortOrderPolicy `xml:"uplinkPortOrder,omitempty"` -} - -func init() { - t["VmwareUplinkPortTeamingPolicy"] = reflect.TypeOf((*VmwareUplinkPortTeamingPolicy)(nil)).Elem() -} - -type VnicPortArgument struct { - DynamicData - - Vnic string `xml:"vnic"` - Port DistributedVirtualSwitchPortConnection `xml:"port"` -} - -func init() { - t["VnicPortArgument"] = reflect.TypeOf((*VnicPortArgument)(nil)).Elem() -} - -type VolumeEditorError struct { - CustomizationFault -} - -func init() { - t["VolumeEditorError"] = reflect.TypeOf((*VolumeEditorError)(nil)).Elem() -} - -type VolumeEditorErrorFault VolumeEditorError - -func init() { - t["VolumeEditorErrorFault"] = reflect.TypeOf((*VolumeEditorErrorFault)(nil)).Elem() -} - -type VramLimitLicense struct { - NotEnoughLicenses - - Limit int32 `xml:"limit"` -} - -func init() { - t["VramLimitLicense"] = reflect.TypeOf((*VramLimitLicense)(nil)).Elem() -} - -type VramLimitLicenseFault VramLimitLicense - -func init() { - t["VramLimitLicenseFault"] = reflect.TypeOf((*VramLimitLicenseFault)(nil)).Elem() -} - -type VrpResourceAllocationInfo struct { - ResourceAllocationInfo - - ReservationLimit int64 `xml:"reservationLimit,omitempty"` -} - -func init() { - t["VrpResourceAllocationInfo"] = reflect.TypeOf((*VrpResourceAllocationInfo)(nil)).Elem() -} - -type VsanClusterConfigInfo struct { - DynamicData - - Enabled *bool `xml:"enabled"` - DefaultConfig *VsanClusterConfigInfoHostDefaultInfo `xml:"defaultConfig,omitempty"` -} - -func init() { - t["VsanClusterConfigInfo"] = reflect.TypeOf((*VsanClusterConfigInfo)(nil)).Elem() -} - -type VsanClusterConfigInfoHostDefaultInfo struct { - DynamicData - - Uuid string `xml:"uuid,omitempty"` - AutoClaimStorage *bool `xml:"autoClaimStorage"` - ChecksumEnabled *bool `xml:"checksumEnabled"` -} - -func init() { - t["VsanClusterConfigInfoHostDefaultInfo"] = reflect.TypeOf((*VsanClusterConfigInfoHostDefaultInfo)(nil)).Elem() -} - -type VsanClusterUuidMismatch struct { - CannotMoveVsanEnabledHost - - HostClusterUuid string `xml:"hostClusterUuid"` - DestinationClusterUuid string `xml:"destinationClusterUuid"` -} - -func init() { - t["VsanClusterUuidMismatch"] = reflect.TypeOf((*VsanClusterUuidMismatch)(nil)).Elem() -} - -type VsanClusterUuidMismatchFault VsanClusterUuidMismatch - -func init() { - t["VsanClusterUuidMismatchFault"] = reflect.TypeOf((*VsanClusterUuidMismatchFault)(nil)).Elem() -} - -type VsanDiskFault struct { - VsanFault - - Device string `xml:"device,omitempty"` -} - -func init() { - t["VsanDiskFault"] = reflect.TypeOf((*VsanDiskFault)(nil)).Elem() -} - -type VsanDiskFaultFault BaseVsanDiskFault - -func init() { - t["VsanDiskFaultFault"] = reflect.TypeOf((*VsanDiskFaultFault)(nil)).Elem() -} - -type VsanFault struct { - VimFault -} - -func init() { - t["VsanFault"] = reflect.TypeOf((*VsanFault)(nil)).Elem() -} - -type VsanFaultFault BaseVsanFault - -func init() { - t["VsanFaultFault"] = reflect.TypeOf((*VsanFaultFault)(nil)).Elem() -} - -type VsanHostClusterStatus struct { - DynamicData - - Uuid string `xml:"uuid,omitempty"` - NodeUuid string `xml:"nodeUuid,omitempty"` - Health string `xml:"health"` - NodeState VsanHostClusterStatusState `xml:"nodeState"` - MemberUuid []string `xml:"memberUuid,omitempty"` -} - -func init() { - t["VsanHostClusterStatus"] = reflect.TypeOf((*VsanHostClusterStatus)(nil)).Elem() -} - -type VsanHostClusterStatusState struct { - DynamicData - - State string `xml:"state"` - Completion *VsanHostClusterStatusStateCompletionEstimate `xml:"completion,omitempty"` -} - -func init() { - t["VsanHostClusterStatusState"] = reflect.TypeOf((*VsanHostClusterStatusState)(nil)).Elem() -} - -type VsanHostClusterStatusStateCompletionEstimate struct { - DynamicData - - CompleteTime *time.Time `xml:"completeTime"` - PercentComplete int32 `xml:"percentComplete,omitempty"` -} - -func init() { - t["VsanHostClusterStatusStateCompletionEstimate"] = reflect.TypeOf((*VsanHostClusterStatusStateCompletionEstimate)(nil)).Elem() -} - -type VsanHostConfigInfo struct { - DynamicData - - Enabled *bool `xml:"enabled"` - HostSystem *ManagedObjectReference `xml:"hostSystem,omitempty"` - ClusterInfo *VsanHostConfigInfoClusterInfo `xml:"clusterInfo,omitempty"` - StorageInfo *VsanHostConfigInfoStorageInfo `xml:"storageInfo,omitempty"` - NetworkInfo *VsanHostConfigInfoNetworkInfo `xml:"networkInfo,omitempty"` - FaultDomainInfo *VsanHostFaultDomainInfo `xml:"faultDomainInfo,omitempty"` -} - -func init() { - t["VsanHostConfigInfo"] = reflect.TypeOf((*VsanHostConfigInfo)(nil)).Elem() -} - -type VsanHostConfigInfoClusterInfo struct { - DynamicData - - Uuid string `xml:"uuid,omitempty"` - NodeUuid string `xml:"nodeUuid,omitempty"` -} - -func init() { - t["VsanHostConfigInfoClusterInfo"] = reflect.TypeOf((*VsanHostConfigInfoClusterInfo)(nil)).Elem() -} - -type VsanHostConfigInfoNetworkInfo struct { - DynamicData - - Port []VsanHostConfigInfoNetworkInfoPortConfig `xml:"port,omitempty"` -} - -func init() { - t["VsanHostConfigInfoNetworkInfo"] = reflect.TypeOf((*VsanHostConfigInfoNetworkInfo)(nil)).Elem() -} - -type VsanHostConfigInfoNetworkInfoPortConfig struct { - DynamicData - - IpConfig *VsanHostIpConfig `xml:"ipConfig,omitempty"` - Device string `xml:"device"` -} - -func init() { - t["VsanHostConfigInfoNetworkInfoPortConfig"] = reflect.TypeOf((*VsanHostConfigInfoNetworkInfoPortConfig)(nil)).Elem() -} - -type VsanHostConfigInfoStorageInfo struct { - DynamicData - - AutoClaimStorage *bool `xml:"autoClaimStorage"` - DiskMapping []VsanHostDiskMapping `xml:"diskMapping,omitempty"` - DiskMapInfo []VsanHostDiskMapInfo `xml:"diskMapInfo,omitempty"` - ChecksumEnabled *bool `xml:"checksumEnabled"` -} - -func init() { - t["VsanHostConfigInfoStorageInfo"] = reflect.TypeOf((*VsanHostConfigInfoStorageInfo)(nil)).Elem() -} - -type VsanHostDecommissionMode struct { - DynamicData - - ObjectAction string `xml:"objectAction"` -} - -func init() { - t["VsanHostDecommissionMode"] = reflect.TypeOf((*VsanHostDecommissionMode)(nil)).Elem() -} - -type VsanHostDiskMapInfo struct { - DynamicData - - Mapping VsanHostDiskMapping `xml:"mapping"` - Mounted bool `xml:"mounted"` -} - -func init() { - t["VsanHostDiskMapInfo"] = reflect.TypeOf((*VsanHostDiskMapInfo)(nil)).Elem() -} - -type VsanHostDiskMapResult struct { - DynamicData - - Mapping VsanHostDiskMapping `xml:"mapping"` - DiskResult []VsanHostDiskResult `xml:"diskResult,omitempty"` - Error *LocalizedMethodFault `xml:"error,omitempty"` -} - -func init() { - t["VsanHostDiskMapResult"] = reflect.TypeOf((*VsanHostDiskMapResult)(nil)).Elem() -} - -type VsanHostDiskMapping struct { - DynamicData - - Ssd HostScsiDisk `xml:"ssd"` - NonSsd []HostScsiDisk `xml:"nonSsd"` -} - -func init() { - t["VsanHostDiskMapping"] = reflect.TypeOf((*VsanHostDiskMapping)(nil)).Elem() -} - -type VsanHostDiskResult struct { - DynamicData - - Disk HostScsiDisk `xml:"disk"` - State string `xml:"state"` - VsanUuid string `xml:"vsanUuid,omitempty"` - Error *LocalizedMethodFault `xml:"error,omitempty"` - Degraded *bool `xml:"degraded"` -} - -func init() { - t["VsanHostDiskResult"] = reflect.TypeOf((*VsanHostDiskResult)(nil)).Elem() -} - -type VsanHostFaultDomainInfo struct { - DynamicData - - Name string `xml:"name"` -} - -func init() { - t["VsanHostFaultDomainInfo"] = reflect.TypeOf((*VsanHostFaultDomainInfo)(nil)).Elem() -} - -type VsanHostIpConfig struct { - DynamicData - - UpstreamIpAddress string `xml:"upstreamIpAddress"` - DownstreamIpAddress string `xml:"downstreamIpAddress"` -} - -func init() { - t["VsanHostIpConfig"] = reflect.TypeOf((*VsanHostIpConfig)(nil)).Elem() -} - -type VsanHostMembershipInfo struct { - DynamicData - - NodeUuid string `xml:"nodeUuid"` - Hostname string `xml:"hostname"` -} - -func init() { - t["VsanHostMembershipInfo"] = reflect.TypeOf((*VsanHostMembershipInfo)(nil)).Elem() -} - -type VsanHostRuntimeInfo struct { - DynamicData - - MembershipList []VsanHostMembershipInfo `xml:"membershipList,omitempty"` - DiskIssues []VsanHostRuntimeInfoDiskIssue `xml:"diskIssues,omitempty"` - AccessGenNo int32 `xml:"accessGenNo,omitempty"` -} - -func init() { - t["VsanHostRuntimeInfo"] = reflect.TypeOf((*VsanHostRuntimeInfo)(nil)).Elem() -} - -type VsanHostRuntimeInfoDiskIssue struct { - DynamicData - - DiskId string `xml:"diskId"` - Issue string `xml:"issue"` -} - -func init() { - t["VsanHostRuntimeInfoDiskIssue"] = reflect.TypeOf((*VsanHostRuntimeInfoDiskIssue)(nil)).Elem() -} - -type VsanHostVsanDiskInfo struct { - DynamicData - - VsanUuid string `xml:"vsanUuid"` - FormatVersion int32 `xml:"formatVersion"` -} - -func init() { - t["VsanHostVsanDiskInfo"] = reflect.TypeOf((*VsanHostVsanDiskInfo)(nil)).Elem() -} - -type VsanIncompatibleDiskMapping struct { - VsanDiskFault -} - -func init() { - t["VsanIncompatibleDiskMapping"] = reflect.TypeOf((*VsanIncompatibleDiskMapping)(nil)).Elem() -} - -type VsanIncompatibleDiskMappingFault VsanIncompatibleDiskMapping - -func init() { - t["VsanIncompatibleDiskMappingFault"] = reflect.TypeOf((*VsanIncompatibleDiskMappingFault)(nil)).Elem() -} - -type VsanNewPolicyBatch struct { - DynamicData - - Size []int64 `xml:"size,omitempty"` - Policy string `xml:"policy,omitempty"` -} - -func init() { - t["VsanNewPolicyBatch"] = reflect.TypeOf((*VsanNewPolicyBatch)(nil)).Elem() -} - -type VsanPolicyChangeBatch struct { - DynamicData - - Uuid []string `xml:"uuid,omitempty"` - Policy string `xml:"policy,omitempty"` -} - -func init() { - t["VsanPolicyChangeBatch"] = reflect.TypeOf((*VsanPolicyChangeBatch)(nil)).Elem() -} - -type VsanPolicyCost struct { - DynamicData - - ChangeDataSize int64 `xml:"changeDataSize,omitempty"` - CurrentDataSize int64 `xml:"currentDataSize,omitempty"` - TempDataSize int64 `xml:"tempDataSize,omitempty"` - CopyDataSize int64 `xml:"copyDataSize,omitempty"` - ChangeFlashReadCacheSize int64 `xml:"changeFlashReadCacheSize,omitempty"` - CurrentFlashReadCacheSize int64 `xml:"currentFlashReadCacheSize,omitempty"` - CurrentDiskSpaceToAddressSpaceRatio float32 `xml:"currentDiskSpaceToAddressSpaceRatio,omitempty"` - DiskSpaceToAddressSpaceRatio float32 `xml:"diskSpaceToAddressSpaceRatio,omitempty"` -} - -func init() { - t["VsanPolicyCost"] = reflect.TypeOf((*VsanPolicyCost)(nil)).Elem() -} - -type VsanPolicySatisfiability struct { - DynamicData - - Uuid string `xml:"uuid,omitempty"` - IsSatisfiable bool `xml:"isSatisfiable"` - Reason *LocalizableMessage `xml:"reason,omitempty"` - Cost *VsanPolicyCost `xml:"cost,omitempty"` -} - -func init() { - t["VsanPolicySatisfiability"] = reflect.TypeOf((*VsanPolicySatisfiability)(nil)).Elem() -} - -type VsanUpgradeSystemAPIBrokenIssue struct { - VsanUpgradeSystemPreflightCheckIssue - - Hosts []ManagedObjectReference `xml:"hosts"` -} - -func init() { - t["VsanUpgradeSystemAPIBrokenIssue"] = reflect.TypeOf((*VsanUpgradeSystemAPIBrokenIssue)(nil)).Elem() -} - -type VsanUpgradeSystemAutoClaimEnabledOnHostsIssue struct { - VsanUpgradeSystemPreflightCheckIssue - - Hosts []ManagedObjectReference `xml:"hosts"` -} - -func init() { - t["VsanUpgradeSystemAutoClaimEnabledOnHostsIssue"] = reflect.TypeOf((*VsanUpgradeSystemAutoClaimEnabledOnHostsIssue)(nil)).Elem() -} - -type VsanUpgradeSystemHostsDisconnectedIssue struct { - VsanUpgradeSystemPreflightCheckIssue - - Hosts []ManagedObjectReference `xml:"hosts"` -} - -func init() { - t["VsanUpgradeSystemHostsDisconnectedIssue"] = reflect.TypeOf((*VsanUpgradeSystemHostsDisconnectedIssue)(nil)).Elem() -} - -type VsanUpgradeSystemMissingHostsInClusterIssue struct { - VsanUpgradeSystemPreflightCheckIssue - - Hosts []ManagedObjectReference `xml:"hosts"` -} - -func init() { - t["VsanUpgradeSystemMissingHostsInClusterIssue"] = reflect.TypeOf((*VsanUpgradeSystemMissingHostsInClusterIssue)(nil)).Elem() -} - -type VsanUpgradeSystemNetworkPartitionInfo struct { - DynamicData - - Hosts []ManagedObjectReference `xml:"hosts"` -} - -func init() { - t["VsanUpgradeSystemNetworkPartitionInfo"] = reflect.TypeOf((*VsanUpgradeSystemNetworkPartitionInfo)(nil)).Elem() -} - -type VsanUpgradeSystemNetworkPartitionIssue struct { - VsanUpgradeSystemPreflightCheckIssue - - Partitions []VsanUpgradeSystemNetworkPartitionInfo `xml:"partitions"` -} - -func init() { - t["VsanUpgradeSystemNetworkPartitionIssue"] = reflect.TypeOf((*VsanUpgradeSystemNetworkPartitionIssue)(nil)).Elem() -} - -type VsanUpgradeSystemNotEnoughFreeCapacityIssue struct { - VsanUpgradeSystemPreflightCheckIssue - - ReducedRedundancyUpgradePossible bool `xml:"reducedRedundancyUpgradePossible"` -} - -func init() { - t["VsanUpgradeSystemNotEnoughFreeCapacityIssue"] = reflect.TypeOf((*VsanUpgradeSystemNotEnoughFreeCapacityIssue)(nil)).Elem() -} - -type VsanUpgradeSystemPreflightCheckIssue struct { - DynamicData - - Msg string `xml:"msg"` -} - -func init() { - t["VsanUpgradeSystemPreflightCheckIssue"] = reflect.TypeOf((*VsanUpgradeSystemPreflightCheckIssue)(nil)).Elem() -} - -type VsanUpgradeSystemPreflightCheckResult struct { - DynamicData - - Issues []BaseVsanUpgradeSystemPreflightCheckIssue `xml:"issues,omitempty,typeattr"` - DiskMappingToRestore *VsanHostDiskMapping `xml:"diskMappingToRestore,omitempty"` -} - -func init() { - t["VsanUpgradeSystemPreflightCheckResult"] = reflect.TypeOf((*VsanUpgradeSystemPreflightCheckResult)(nil)).Elem() -} - -type VsanUpgradeSystemRogueHostsInClusterIssue struct { - VsanUpgradeSystemPreflightCheckIssue - - Uuids []string `xml:"uuids"` -} - -func init() { - t["VsanUpgradeSystemRogueHostsInClusterIssue"] = reflect.TypeOf((*VsanUpgradeSystemRogueHostsInClusterIssue)(nil)).Elem() -} - -type VsanUpgradeSystemUpgradeHistoryDiskGroupOp struct { - VsanUpgradeSystemUpgradeHistoryItem - - Operation string `xml:"operation"` - DiskMapping VsanHostDiskMapping `xml:"diskMapping"` -} - -func init() { - t["VsanUpgradeSystemUpgradeHistoryDiskGroupOp"] = reflect.TypeOf((*VsanUpgradeSystemUpgradeHistoryDiskGroupOp)(nil)).Elem() -} - -type VsanUpgradeSystemUpgradeHistoryItem struct { - DynamicData - - Timestamp time.Time `xml:"timestamp"` - Host *ManagedObjectReference `xml:"host,omitempty"` - Message string `xml:"message"` - Task *ManagedObjectReference `xml:"task,omitempty"` -} - -func init() { - t["VsanUpgradeSystemUpgradeHistoryItem"] = reflect.TypeOf((*VsanUpgradeSystemUpgradeHistoryItem)(nil)).Elem() -} - -type VsanUpgradeSystemUpgradeHistoryPreflightFail struct { - VsanUpgradeSystemUpgradeHistoryItem - - PreflightResult VsanUpgradeSystemPreflightCheckResult `xml:"preflightResult"` -} - -func init() { - t["VsanUpgradeSystemUpgradeHistoryPreflightFail"] = reflect.TypeOf((*VsanUpgradeSystemUpgradeHistoryPreflightFail)(nil)).Elem() -} - -type VsanUpgradeSystemUpgradeStatus struct { - DynamicData - - InProgress bool `xml:"inProgress"` - History []BaseVsanUpgradeSystemUpgradeHistoryItem `xml:"history,omitempty,typeattr"` - Aborted *bool `xml:"aborted"` - Completed *bool `xml:"completed"` - Progress int32 `xml:"progress,omitempty"` -} - -func init() { - t["VsanUpgradeSystemUpgradeStatus"] = reflect.TypeOf((*VsanUpgradeSystemUpgradeStatus)(nil)).Elem() -} - -type VsanUpgradeSystemV2ObjectsPresentDuringDowngradeIssue struct { - VsanUpgradeSystemPreflightCheckIssue - - Uuids []string `xml:"uuids"` -} - -func init() { - t["VsanUpgradeSystemV2ObjectsPresentDuringDowngradeIssue"] = reflect.TypeOf((*VsanUpgradeSystemV2ObjectsPresentDuringDowngradeIssue)(nil)).Elem() -} - -type VsanUpgradeSystemWrongEsxVersionIssue struct { - VsanUpgradeSystemPreflightCheckIssue - - Hosts []ManagedObjectReference `xml:"hosts"` -} - -func init() { - t["VsanUpgradeSystemWrongEsxVersionIssue"] = reflect.TypeOf((*VsanUpgradeSystemWrongEsxVersionIssue)(nil)).Elem() -} - -type VspanDestPortConflict struct { - DvsFault - - VspanSessionKey1 string `xml:"vspanSessionKey1"` - VspanSessionKey2 string `xml:"vspanSessionKey2"` - PortKey string `xml:"portKey"` -} - -func init() { - t["VspanDestPortConflict"] = reflect.TypeOf((*VspanDestPortConflict)(nil)).Elem() -} - -type VspanDestPortConflictFault VspanDestPortConflict - -func init() { - t["VspanDestPortConflictFault"] = reflect.TypeOf((*VspanDestPortConflictFault)(nil)).Elem() -} - -type VspanPortConflict struct { - DvsFault - - VspanSessionKey1 string `xml:"vspanSessionKey1"` - VspanSessionKey2 string `xml:"vspanSessionKey2"` - PortKey string `xml:"portKey"` -} - -func init() { - t["VspanPortConflict"] = reflect.TypeOf((*VspanPortConflict)(nil)).Elem() -} - -type VspanPortConflictFault VspanPortConflict - -func init() { - t["VspanPortConflictFault"] = reflect.TypeOf((*VspanPortConflictFault)(nil)).Elem() -} - -type VspanPortMoveFault struct { - DvsFault - - SrcPortgroupName string `xml:"srcPortgroupName"` - DestPortgroupName string `xml:"destPortgroupName"` - PortKey string `xml:"portKey"` -} - -func init() { - t["VspanPortMoveFault"] = reflect.TypeOf((*VspanPortMoveFault)(nil)).Elem() -} - -type VspanPortMoveFaultFault VspanPortMoveFault - -func init() { - t["VspanPortMoveFaultFault"] = reflect.TypeOf((*VspanPortMoveFaultFault)(nil)).Elem() -} - -type VspanPortPromiscChangeFault struct { - DvsFault - - PortKey string `xml:"portKey"` -} - -func init() { - t["VspanPortPromiscChangeFault"] = reflect.TypeOf((*VspanPortPromiscChangeFault)(nil)).Elem() -} - -type VspanPortPromiscChangeFaultFault VspanPortPromiscChangeFault - -func init() { - t["VspanPortPromiscChangeFaultFault"] = reflect.TypeOf((*VspanPortPromiscChangeFaultFault)(nil)).Elem() -} - -type VspanPortgroupPromiscChangeFault struct { - DvsFault - - PortgroupName string `xml:"portgroupName"` -} - -func init() { - t["VspanPortgroupPromiscChangeFault"] = reflect.TypeOf((*VspanPortgroupPromiscChangeFault)(nil)).Elem() -} - -type VspanPortgroupPromiscChangeFaultFault VspanPortgroupPromiscChangeFault - -func init() { - t["VspanPortgroupPromiscChangeFaultFault"] = reflect.TypeOf((*VspanPortgroupPromiscChangeFaultFault)(nil)).Elem() -} - -type VspanPortgroupTypeChangeFault struct { - DvsFault - - PortgroupName string `xml:"portgroupName"` -} - -func init() { - t["VspanPortgroupTypeChangeFault"] = reflect.TypeOf((*VspanPortgroupTypeChangeFault)(nil)).Elem() -} - -type VspanPortgroupTypeChangeFaultFault VspanPortgroupTypeChangeFault - -func init() { - t["VspanPortgroupTypeChangeFaultFault"] = reflect.TypeOf((*VspanPortgroupTypeChangeFaultFault)(nil)).Elem() -} - -type VspanPromiscuousPortNotSupported struct { - DvsFault - - VspanSessionKey string `xml:"vspanSessionKey"` - PortKey string `xml:"portKey"` -} - -func init() { - t["VspanPromiscuousPortNotSupported"] = reflect.TypeOf((*VspanPromiscuousPortNotSupported)(nil)).Elem() -} - -type VspanPromiscuousPortNotSupportedFault VspanPromiscuousPortNotSupported - -func init() { - t["VspanPromiscuousPortNotSupportedFault"] = reflect.TypeOf((*VspanPromiscuousPortNotSupportedFault)(nil)).Elem() -} - -type VspanSameSessionPortConflict struct { - DvsFault - - VspanSessionKey string `xml:"vspanSessionKey"` - PortKey string `xml:"portKey"` -} - -func init() { - t["VspanSameSessionPortConflict"] = reflect.TypeOf((*VspanSameSessionPortConflict)(nil)).Elem() -} - -type VspanSameSessionPortConflictFault VspanSameSessionPortConflict - -func init() { - t["VspanSameSessionPortConflictFault"] = reflect.TypeOf((*VspanSameSessionPortConflictFault)(nil)).Elem() -} - -type VvolDatastoreInfo struct { - DatastoreInfo - - VvolDS *HostVvolVolume `xml:"vvolDS,omitempty"` -} - -func init() { - t["VvolDatastoreInfo"] = reflect.TypeOf((*VvolDatastoreInfo)(nil)).Elem() -} - -type WaitForUpdates WaitForUpdatesRequestType - -func init() { - t["WaitForUpdates"] = reflect.TypeOf((*WaitForUpdates)(nil)).Elem() -} - -type WaitForUpdatesEx WaitForUpdatesExRequestType - -func init() { - t["WaitForUpdatesEx"] = reflect.TypeOf((*WaitForUpdatesEx)(nil)).Elem() -} - -type WaitForUpdatesExRequestType struct { - This ManagedObjectReference `xml:"_this"` - Version string `xml:"version,omitempty"` - Options *WaitOptions `xml:"options,omitempty"` -} - -func init() { - t["WaitForUpdatesExRequestType"] = reflect.TypeOf((*WaitForUpdatesExRequestType)(nil)).Elem() -} - -type WaitForUpdatesExResponse struct { - Returnval *UpdateSet `xml:"returnval,omitempty"` -} - -type WaitForUpdatesRequestType struct { - This ManagedObjectReference `xml:"_this"` - Version string `xml:"version,omitempty"` -} - -func init() { - t["WaitForUpdatesRequestType"] = reflect.TypeOf((*WaitForUpdatesRequestType)(nil)).Elem() -} - -type WaitForUpdatesResponse struct { - Returnval UpdateSet `xml:"returnval"` -} - -type WaitOptions struct { - DynamicData - - MaxWaitSeconds int32 `xml:"maxWaitSeconds,omitempty"` - MaxObjectUpdates int32 `xml:"maxObjectUpdates,omitempty"` -} - -func init() { - t["WaitOptions"] = reflect.TypeOf((*WaitOptions)(nil)).Elem() -} - -type WakeOnLanNotSupported struct { - VirtualHardwareCompatibilityIssue -} - -func init() { - t["WakeOnLanNotSupported"] = reflect.TypeOf((*WakeOnLanNotSupported)(nil)).Elem() -} - -type WakeOnLanNotSupportedByVmotionNIC struct { - HostPowerOpFailed -} - -func init() { - t["WakeOnLanNotSupportedByVmotionNIC"] = reflect.TypeOf((*WakeOnLanNotSupportedByVmotionNIC)(nil)).Elem() -} - -type WakeOnLanNotSupportedByVmotionNICFault WakeOnLanNotSupportedByVmotionNIC - -func init() { - t["WakeOnLanNotSupportedByVmotionNICFault"] = reflect.TypeOf((*WakeOnLanNotSupportedByVmotionNICFault)(nil)).Elem() -} - -type WakeOnLanNotSupportedFault WakeOnLanNotSupported - -func init() { - t["WakeOnLanNotSupportedFault"] = reflect.TypeOf((*WakeOnLanNotSupportedFault)(nil)).Elem() -} - -type WarningUpgradeEvent struct { - UpgradeEvent -} - -func init() { - t["WarningUpgradeEvent"] = reflect.TypeOf((*WarningUpgradeEvent)(nil)).Elem() -} - -type WeeklyTaskScheduler struct { - DailyTaskScheduler - - Sunday bool `xml:"sunday"` - Monday bool `xml:"monday"` - Tuesday bool `xml:"tuesday"` - Wednesday bool `xml:"wednesday"` - Thursday bool `xml:"thursday"` - Friday bool `xml:"friday"` - Saturday bool `xml:"saturday"` -} - -func init() { - t["WeeklyTaskScheduler"] = reflect.TypeOf((*WeeklyTaskScheduler)(nil)).Elem() -} - -type WillLoseHAProtection struct { - MigrationFault - - Resolution string `xml:"resolution"` -} - -func init() { - t["WillLoseHAProtection"] = reflect.TypeOf((*WillLoseHAProtection)(nil)).Elem() -} - -type WillLoseHAProtectionFault WillLoseHAProtection - -func init() { - t["WillLoseHAProtectionFault"] = reflect.TypeOf((*WillLoseHAProtectionFault)(nil)).Elem() -} - -type WillModifyConfigCpuRequirements struct { - MigrationFault -} - -func init() { - t["WillModifyConfigCpuRequirements"] = reflect.TypeOf((*WillModifyConfigCpuRequirements)(nil)).Elem() -} - -type WillModifyConfigCpuRequirementsFault WillModifyConfigCpuRequirements - -func init() { - t["WillModifyConfigCpuRequirementsFault"] = reflect.TypeOf((*WillModifyConfigCpuRequirementsFault)(nil)).Elem() -} - -type WillResetSnapshotDirectory struct { - MigrationFault -} - -func init() { - t["WillResetSnapshotDirectory"] = reflect.TypeOf((*WillResetSnapshotDirectory)(nil)).Elem() -} - -type WillResetSnapshotDirectoryFault WillResetSnapshotDirectory - -func init() { - t["WillResetSnapshotDirectoryFault"] = reflect.TypeOf((*WillResetSnapshotDirectoryFault)(nil)).Elem() -} - -type WinNetBIOSConfigInfo struct { - NetBIOSConfigInfo - - PrimaryWINS string `xml:"primaryWINS"` - SecondaryWINS string `xml:"secondaryWINS,omitempty"` -} - -func init() { - t["WinNetBIOSConfigInfo"] = reflect.TypeOf((*WinNetBIOSConfigInfo)(nil)).Elem() -} - -type WipeDiskFault struct { - VimFault -} - -func init() { - t["WipeDiskFault"] = reflect.TypeOf((*WipeDiskFault)(nil)).Elem() -} - -type WipeDiskFaultFault WipeDiskFault - -func init() { - t["WipeDiskFaultFault"] = reflect.TypeOf((*WipeDiskFaultFault)(nil)).Elem() -} - -type XmlToCustomizationSpecItem XmlToCustomizationSpecItemRequestType - -func init() { - t["XmlToCustomizationSpecItem"] = reflect.TypeOf((*XmlToCustomizationSpecItem)(nil)).Elem() -} - -type XmlToCustomizationSpecItemRequestType struct { - This ManagedObjectReference `xml:"_this"` - SpecItemXml string `xml:"specItemXml"` -} - -func init() { - t["XmlToCustomizationSpecItemRequestType"] = reflect.TypeOf((*XmlToCustomizationSpecItemRequestType)(nil)).Elem() -} - -type XmlToCustomizationSpecItemResponse struct { - Returnval CustomizationSpecItem `xml:"returnval"` -} - -type ZeroFillVirtualDiskRequestType struct { - This ManagedObjectReference `xml:"_this"` - Name string `xml:"name"` - Datacenter *ManagedObjectReference `xml:"datacenter,omitempty"` -} - -func init() { - t["ZeroFillVirtualDiskRequestType"] = reflect.TypeOf((*ZeroFillVirtualDiskRequestType)(nil)).Elem() -} - -type ZeroFillVirtualDisk_Task ZeroFillVirtualDiskRequestType - -func init() { - t["ZeroFillVirtualDisk_Task"] = reflect.TypeOf((*ZeroFillVirtualDisk_Task)(nil)).Elem() -} - -type ZeroFillVirtualDisk_TaskResponse struct { - Returnval ManagedObjectReference `xml:"returnval"` -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/xml/LICENSE b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/xml/LICENSE deleted file mode 100644 index 74487567..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/xml/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2012 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/xml/extras.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/xml/extras.go deleted file mode 100644 index 9f1a764d..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/xml/extras.go +++ /dev/null @@ -1,93 +0,0 @@ -/* -Copyright (c) 2014 VMware, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package xml - -import ( - "reflect" - "time" -) - -var xmlSchemaInstance = Name{Space: "http://www.w3.org/2001/XMLSchema-instance", Local: "type"} - -var stringToTypeMap = map[string]reflect.Type{ - "xsd:boolean": reflect.TypeOf((*bool)(nil)).Elem(), - "xsd:byte": reflect.TypeOf((*int8)(nil)).Elem(), - "xsd:short": reflect.TypeOf((*int16)(nil)).Elem(), - "xsd:int": reflect.TypeOf((*int32)(nil)).Elem(), - "xsd:long": reflect.TypeOf((*int64)(nil)).Elem(), - "xsd:unsignedByte": reflect.TypeOf((*uint8)(nil)).Elem(), - "xsd:unsignedShort": reflect.TypeOf((*uint16)(nil)).Elem(), - "xsd:unsignedInt": reflect.TypeOf((*uint32)(nil)).Elem(), - "xsd:unsignedLong": reflect.TypeOf((*uint64)(nil)).Elem(), - "xsd:float": reflect.TypeOf((*float32)(nil)).Elem(), - "xsd:double": reflect.TypeOf((*float64)(nil)).Elem(), - "xsd:string": reflect.TypeOf((*string)(nil)).Elem(), - "xsd:dateTime": reflect.TypeOf((*time.Time)(nil)).Elem(), - "xsd:base64Binary": reflect.TypeOf((*[]byte)(nil)).Elem(), -} - -// Return a reflect.Type for the specified type. Nil if unknown. -func stringToType(s string) reflect.Type { - return stringToTypeMap[s] -} - -// Return a string for the specified reflect.Type. Panic if unknown. -func typeToString(typ reflect.Type) string { - switch typ.Kind() { - case reflect.Bool: - return "xsd:boolean" - case reflect.Int8: - return "xsd:byte" - case reflect.Int16: - return "xsd:short" - case reflect.Int32: - return "xsd:int" - case reflect.Int, reflect.Int64: - return "xsd:long" - case reflect.Uint8: - return "xsd:unsignedByte" - case reflect.Uint16: - return "xsd:unsignedShort" - case reflect.Uint32: - return "xsd:unsignedInt" - case reflect.Uint, reflect.Uint64: - return "xsd:unsignedLong" - case reflect.Float32: - return "xsd:float" - case reflect.Float64: - return "xsd:double" - case reflect.String: - return "xsd:string" - case reflect.Struct: - if typ == stringToTypeMap["xsd:dateTime"] { - return "xsd:dateTime" - } - - // Expect any other struct to be handled... - return typ.Name() - case reflect.Slice: - if typ.Elem().Kind() == reflect.Uint8 { - return "xsd:base64Binary" - } - case reflect.Array: - if typ.Elem().Kind() == reflect.Uint8 { - return "xsd:base64Binary" - } - } - - panic("don't know what to do for type: " + typ.String()) -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/xml/marshal.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/xml/marshal.go deleted file mode 100644 index 39bbac1d..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/xml/marshal.go +++ /dev/null @@ -1,949 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package xml - -import ( - "bufio" - "bytes" - "encoding" - "fmt" - "io" - "reflect" - "strconv" - "strings" -) - -const ( - // A generic XML header suitable for use with the output of Marshal. - // This is not automatically added to any output of this package, - // it is provided as a convenience. - Header = `` + "\n" -) - -// Marshal returns the XML encoding of v. -// -// Marshal handles an array or slice by marshalling each of the elements. -// Marshal handles a pointer by marshalling the value it points at or, if the -// pointer is nil, by writing nothing. Marshal handles an interface value by -// marshalling the value it contains or, if the interface value is nil, by -// writing nothing. Marshal handles all other data by writing one or more XML -// elements containing the data. -// -// The name for the XML elements is taken from, in order of preference: -// - the tag on the XMLName field, if the data is a struct -// - the value of the XMLName field of type xml.Name -// - the tag of the struct field used to obtain the data -// - the name of the struct field used to obtain the data -// - the name of the marshalled type -// -// The XML element for a struct contains marshalled elements for each of the -// exported fields of the struct, with these exceptions: -// - the XMLName field, described above, is omitted. -// - a field with tag "-" is omitted. -// - a field with tag "name,attr" becomes an attribute with -// the given name in the XML element. -// - a field with tag ",attr" becomes an attribute with the -// field name in the XML element. -// - a field with tag ",chardata" is written as character data, -// not as an XML element. -// - a field with tag ",innerxml" is written verbatim, not subject -// to the usual marshalling procedure. -// - a field with tag ",comment" is written as an XML comment, not -// subject to the usual marshalling procedure. It must not contain -// the "--" string within it. -// - a field with a tag including the "omitempty" option is omitted -// if the field value is empty. The empty values are false, 0, any -// nil pointer or interface value, and any array, slice, map, or -// string of length zero. -// - an anonymous struct field is handled as if the fields of its -// value were part of the outer struct. -// -// If a field uses a tag "a>b>c", then the element c will be nested inside -// parent elements a and b. Fields that appear next to each other that name -// the same parent will be enclosed in one XML element. -// -// See MarshalIndent for an example. -// -// Marshal will return an error if asked to marshal a channel, function, or map. -func Marshal(v interface{}) ([]byte, error) { - var b bytes.Buffer - if err := NewEncoder(&b).Encode(v); err != nil { - return nil, err - } - return b.Bytes(), nil -} - -// Marshaler is the interface implemented by objects that can marshal -// themselves into valid XML elements. -// -// MarshalXML encodes the receiver as zero or more XML elements. -// By convention, arrays or slices are typically encoded as a sequence -// of elements, one per entry. -// Using start as the element tag is not required, but doing so -// will enable Unmarshal to match the XML elements to the correct -// struct field. -// One common implementation strategy is to construct a separate -// value with a layout corresponding to the desired XML and then -// to encode it using e.EncodeElement. -// Another common strategy is to use repeated calls to e.EncodeToken -// to generate the XML output one token at a time. -// The sequence of encoded tokens must make up zero or more valid -// XML elements. -type Marshaler interface { - MarshalXML(e *Encoder, start StartElement) error -} - -// MarshalerAttr is the interface implemented by objects that can marshal -// themselves into valid XML attributes. -// -// MarshalXMLAttr returns an XML attribute with the encoded value of the receiver. -// Using name as the attribute name is not required, but doing so -// will enable Unmarshal to match the attribute to the correct -// struct field. -// If MarshalXMLAttr returns the zero attribute Attr{}, no attribute -// will be generated in the output. -// MarshalXMLAttr is used only for struct fields with the -// "attr" option in the field tag. -type MarshalerAttr interface { - MarshalXMLAttr(name Name) (Attr, error) -} - -// MarshalIndent works like Marshal, but each XML element begins on a new -// indented line that starts with prefix and is followed by one or more -// copies of indent according to the nesting depth. -func MarshalIndent(v interface{}, prefix, indent string) ([]byte, error) { - var b bytes.Buffer - enc := NewEncoder(&b) - enc.Indent(prefix, indent) - if err := enc.Encode(v); err != nil { - return nil, err - } - return b.Bytes(), nil -} - -// An Encoder writes XML data to an output stream. -type Encoder struct { - p printer -} - -// NewEncoder returns a new encoder that writes to w. -func NewEncoder(w io.Writer) *Encoder { - e := &Encoder{printer{Writer: bufio.NewWriter(w)}} - e.p.encoder = e - return e -} - -// Indent sets the encoder to generate XML in which each element -// begins on a new indented line that starts with prefix and is followed by -// one or more copies of indent according to the nesting depth. -func (enc *Encoder) Indent(prefix, indent string) { - enc.p.prefix = prefix - enc.p.indent = indent -} - -// Encode writes the XML encoding of v to the stream. -// -// See the documentation for Marshal for details about the conversion -// of Go values to XML. -// -// Encode calls Flush before returning. -func (enc *Encoder) Encode(v interface{}) error { - err := enc.p.marshalValue(reflect.ValueOf(v), nil, nil) - if err != nil { - return err - } - return enc.p.Flush() -} - -// EncodeElement writes the XML encoding of v to the stream, -// using start as the outermost tag in the encoding. -// -// See the documentation for Marshal for details about the conversion -// of Go values to XML. -// -// EncodeElement calls Flush before returning. -func (enc *Encoder) EncodeElement(v interface{}, start StartElement) error { - err := enc.p.marshalValue(reflect.ValueOf(v), nil, &start) - if err != nil { - return err - } - return enc.p.Flush() -} - -var ( - endComment = []byte("-->") - endProcInst = []byte("?>") - endDirective = []byte(">") -) - -// EncodeToken writes the given XML token to the stream. -// It returns an error if StartElement and EndElement tokens are not properly matched. -// -// EncodeToken does not call Flush, because usually it is part of a larger operation -// such as Encode or EncodeElement (or a custom Marshaler's MarshalXML invoked -// during those), and those will call Flush when finished. -// Callers that create an Encoder and then invoke EncodeToken directly, without -// using Encode or EncodeElement, need to call Flush when finished to ensure -// that the XML is written to the underlying writer. -// -// EncodeToken allows writing a ProcInst with Target set to "xml" only as the first token -// in the stream. -func (enc *Encoder) EncodeToken(t Token) error { - p := &enc.p - switch t := t.(type) { - case StartElement: - if err := p.writeStart(&t); err != nil { - return err - } - case EndElement: - if err := p.writeEnd(t.Name); err != nil { - return err - } - case CharData: - EscapeText(p, t) - case Comment: - if bytes.Contains(t, endComment) { - return fmt.Errorf("xml: EncodeToken of Comment containing --> marker") - } - p.WriteString("") - return p.cachedWriteError() - case ProcInst: - // First token to be encoded which is also a ProcInst with target of xml - // is the xml declaration. The only ProcInst where target of xml is allowed. - if t.Target == "xml" && p.Buffered() != 0 { - return fmt.Errorf("xml: EncodeToken of ProcInst xml target only valid for xml declaration, first token encoded") - } - if !isNameString(t.Target) { - return fmt.Errorf("xml: EncodeToken of ProcInst with invalid Target") - } - if bytes.Contains(t.Inst, endProcInst) { - return fmt.Errorf("xml: EncodeToken of ProcInst containing ?> marker") - } - p.WriteString(" 0 { - p.WriteByte(' ') - p.Write(t.Inst) - } - p.WriteString("?>") - case Directive: - if bytes.Contains(t, endDirective) { - return fmt.Errorf("xml: EncodeToken of Directive containing > marker") - } - p.WriteString("") - } - return p.cachedWriteError() -} - -// Flush flushes any buffered XML to the underlying writer. -// See the EncodeToken documentation for details about when it is necessary. -func (enc *Encoder) Flush() error { - return enc.p.Flush() -} - -type printer struct { - *bufio.Writer - encoder *Encoder - seq int - indent string - prefix string - depth int - indentedIn bool - putNewline bool - attrNS map[string]string // map prefix -> name space - attrPrefix map[string]string // map name space -> prefix - prefixes []string - tags []Name -} - -// createAttrPrefix finds the name space prefix attribute to use for the given name space, -// defining a new prefix if necessary. It returns the prefix. -func (p *printer) createAttrPrefix(url string) string { - if prefix := p.attrPrefix[url]; prefix != "" { - return prefix - } - - // The "http://www.w3.org/XML/1998/namespace" name space is predefined as "xml" - // and must be referred to that way. - // (The "http://www.w3.org/2000/xmlns/" name space is also predefined as "xmlns", - // but users should not be trying to use that one directly - that's our job.) - if url == xmlURL { - return "xml" - } - - // Need to define a new name space. - if p.attrPrefix == nil { - p.attrPrefix = make(map[string]string) - p.attrNS = make(map[string]string) - } - - // Pick a name. We try to use the final element of the path - // but fall back to _. - prefix := strings.TrimRight(url, "/") - if i := strings.LastIndex(prefix, "/"); i >= 0 { - prefix = prefix[i+1:] - } - if prefix == "" || !isName([]byte(prefix)) || strings.Contains(prefix, ":") { - prefix = "_" - } - if strings.HasPrefix(prefix, "xml") { - // xmlanything is reserved. - prefix = "_" + prefix - } - if p.attrNS[prefix] != "" { - // Name is taken. Find a better one. - for p.seq++; ; p.seq++ { - if id := prefix + "_" + strconv.Itoa(p.seq); p.attrNS[id] == "" { - prefix = id - break - } - } - } - - p.attrPrefix[url] = prefix - p.attrNS[prefix] = url - - p.WriteString(`xmlns:`) - p.WriteString(prefix) - p.WriteString(`="`) - EscapeText(p, []byte(url)) - p.WriteString(`" `) - - p.prefixes = append(p.prefixes, prefix) - - return prefix -} - -// deleteAttrPrefix removes an attribute name space prefix. -func (p *printer) deleteAttrPrefix(prefix string) { - delete(p.attrPrefix, p.attrNS[prefix]) - delete(p.attrNS, prefix) -} - -func (p *printer) markPrefix() { - p.prefixes = append(p.prefixes, "") -} - -func (p *printer) popPrefix() { - for len(p.prefixes) > 0 { - prefix := p.prefixes[len(p.prefixes)-1] - p.prefixes = p.prefixes[:len(p.prefixes)-1] - if prefix == "" { - break - } - p.deleteAttrPrefix(prefix) - } -} - -var ( - marshalerType = reflect.TypeOf((*Marshaler)(nil)).Elem() - marshalerAttrType = reflect.TypeOf((*MarshalerAttr)(nil)).Elem() - textMarshalerType = reflect.TypeOf((*encoding.TextMarshaler)(nil)).Elem() -) - -// marshalValue writes one or more XML elements representing val. -// If val was obtained from a struct field, finfo must have its details. -func (p *printer) marshalValue(val reflect.Value, finfo *fieldInfo, startTemplate *StartElement) error { - if startTemplate != nil && startTemplate.Name.Local == "" { - return fmt.Errorf("xml: EncodeElement of StartElement with missing name") - } - - if !val.IsValid() { - return nil - } - if finfo != nil && finfo.flags&fOmitEmpty != 0 && isEmptyValue(val) { - return nil - } - - // Drill into interfaces and pointers. - // This can turn into an infinite loop given a cyclic chain, - // but it matches the Go 1 behavior. - for val.Kind() == reflect.Interface || val.Kind() == reflect.Ptr { - if val.IsNil() { - return nil - } - val = val.Elem() - } - - kind := val.Kind() - typ := val.Type() - - // Check for marshaler. - if val.CanInterface() && typ.Implements(marshalerType) { - return p.marshalInterface(val.Interface().(Marshaler), defaultStart(typ, finfo, startTemplate)) - } - if val.CanAddr() { - pv := val.Addr() - if pv.CanInterface() && pv.Type().Implements(marshalerType) { - return p.marshalInterface(pv.Interface().(Marshaler), defaultStart(pv.Type(), finfo, startTemplate)) - } - } - - // Check for text marshaler. - if val.CanInterface() && typ.Implements(textMarshalerType) { - return p.marshalTextInterface(val.Interface().(encoding.TextMarshaler), defaultStart(typ, finfo, startTemplate)) - } - if val.CanAddr() { - pv := val.Addr() - if pv.CanInterface() && pv.Type().Implements(textMarshalerType) { - return p.marshalTextInterface(pv.Interface().(encoding.TextMarshaler), defaultStart(pv.Type(), finfo, startTemplate)) - } - } - - // Slices and arrays iterate over the elements. They do not have an enclosing tag. - if (kind == reflect.Slice || kind == reflect.Array) && typ.Elem().Kind() != reflect.Uint8 { - for i, n := 0, val.Len(); i < n; i++ { - if err := p.marshalValue(val.Index(i), finfo, startTemplate); err != nil { - return err - } - } - return nil - } - - tinfo, err := getTypeInfo(typ) - if err != nil { - return err - } - - // Create start element. - // Precedence for the XML element name is: - // 0. startTemplate - // 1. XMLName field in underlying struct; - // 2. field name/tag in the struct field; and - // 3. type name - var start StartElement - - if startTemplate != nil { - start.Name = startTemplate.Name - start.Attr = append(start.Attr, startTemplate.Attr...) - } else if tinfo.xmlname != nil { - xmlname := tinfo.xmlname - if xmlname.name != "" { - start.Name.Space, start.Name.Local = xmlname.xmlns, xmlname.name - } else if v, ok := xmlname.value(val).Interface().(Name); ok && v.Local != "" { - start.Name = v - } - } - if start.Name.Local == "" && finfo != nil { - start.Name.Space, start.Name.Local = finfo.xmlns, finfo.name - } - if start.Name.Local == "" { - name := typ.Name() - if name == "" { - return &UnsupportedTypeError{typ} - } - start.Name.Local = name - } - - // Add type attribute if necessary - if finfo != nil && finfo.flags&fTypeAttr != 0 { - start.Attr = append(start.Attr, Attr{xmlSchemaInstance, typeToString(typ)}) - } - - // Attributes - for i := range tinfo.fields { - finfo := &tinfo.fields[i] - if finfo.flags&fAttr == 0 { - continue - } - fv := finfo.value(val) - name := Name{Space: finfo.xmlns, Local: finfo.name} - - if finfo.flags&fOmitEmpty != 0 && isEmptyValue(fv) { - continue - } - - if fv.Kind() == reflect.Interface && fv.IsNil() { - continue - } - - if fv.CanInterface() && fv.Type().Implements(marshalerAttrType) { - attr, err := fv.Interface().(MarshalerAttr).MarshalXMLAttr(name) - if err != nil { - return err - } - if attr.Name.Local != "" { - start.Attr = append(start.Attr, attr) - } - continue - } - - if fv.CanAddr() { - pv := fv.Addr() - if pv.CanInterface() && pv.Type().Implements(marshalerAttrType) { - attr, err := pv.Interface().(MarshalerAttr).MarshalXMLAttr(name) - if err != nil { - return err - } - if attr.Name.Local != "" { - start.Attr = append(start.Attr, attr) - } - continue - } - } - - if fv.CanInterface() && fv.Type().Implements(textMarshalerType) { - text, err := fv.Interface().(encoding.TextMarshaler).MarshalText() - if err != nil { - return err - } - start.Attr = append(start.Attr, Attr{name, string(text)}) - continue - } - - if fv.CanAddr() { - pv := fv.Addr() - if pv.CanInterface() && pv.Type().Implements(textMarshalerType) { - text, err := pv.Interface().(encoding.TextMarshaler).MarshalText() - if err != nil { - return err - } - start.Attr = append(start.Attr, Attr{name, string(text)}) - continue - } - } - - // Dereference or skip nil pointer, interface values. - switch fv.Kind() { - case reflect.Ptr, reflect.Interface: - if fv.IsNil() { - continue - } - fv = fv.Elem() - } - - s, b, err := p.marshalSimple(fv.Type(), fv) - if err != nil { - return err - } - if b != nil { - s = string(b) - } - start.Attr = append(start.Attr, Attr{name, s}) - } - - if err := p.writeStart(&start); err != nil { - return err - } - - if val.Kind() == reflect.Struct { - err = p.marshalStruct(tinfo, val) - } else { - s, b, err1 := p.marshalSimple(typ, val) - if err1 != nil { - err = err1 - } else if b != nil { - EscapeText(p, b) - } else { - p.EscapeString(s) - } - } - if err != nil { - return err - } - - if err := p.writeEnd(start.Name); err != nil { - return err - } - - return p.cachedWriteError() -} - -// defaultStart returns the default start element to use, -// given the reflect type, field info, and start template. -func defaultStart(typ reflect.Type, finfo *fieldInfo, startTemplate *StartElement) StartElement { - var start StartElement - // Precedence for the XML element name is as above, - // except that we do not look inside structs for the first field. - if startTemplate != nil { - start.Name = startTemplate.Name - start.Attr = append(start.Attr, startTemplate.Attr...) - } else if finfo != nil && finfo.name != "" { - start.Name.Local = finfo.name - start.Name.Space = finfo.xmlns - } else if typ.Name() != "" { - start.Name.Local = typ.Name() - } else { - // Must be a pointer to a named type, - // since it has the Marshaler methods. - start.Name.Local = typ.Elem().Name() - } - - // Add type attribute if necessary - if finfo != nil && finfo.flags&fTypeAttr != 0 { - start.Attr = append(start.Attr, Attr{xmlSchemaInstance, typeToString(typ)}) - } - - return start -} - -// marshalInterface marshals a Marshaler interface value. -func (p *printer) marshalInterface(val Marshaler, start StartElement) error { - // Push a marker onto the tag stack so that MarshalXML - // cannot close the XML tags that it did not open. - p.tags = append(p.tags, Name{}) - n := len(p.tags) - - err := val.MarshalXML(p.encoder, start) - if err != nil { - return err - } - - // Make sure MarshalXML closed all its tags. p.tags[n-1] is the mark. - if len(p.tags) > n { - return fmt.Errorf("xml: %s.MarshalXML wrote invalid XML: <%s> not closed", receiverType(val), p.tags[len(p.tags)-1].Local) - } - p.tags = p.tags[:n-1] - return nil -} - -// marshalTextInterface marshals a TextMarshaler interface value. -func (p *printer) marshalTextInterface(val encoding.TextMarshaler, start StartElement) error { - if err := p.writeStart(&start); err != nil { - return err - } - text, err := val.MarshalText() - if err != nil { - return err - } - EscapeText(p, text) - return p.writeEnd(start.Name) -} - -// writeStart writes the given start element. -func (p *printer) writeStart(start *StartElement) error { - if start.Name.Local == "" { - return fmt.Errorf("xml: start tag with no name") - } - - p.tags = append(p.tags, start.Name) - p.markPrefix() - - p.writeIndent(1) - p.WriteByte('<') - p.WriteString(start.Name.Local) - - if start.Name.Space != "" { - p.WriteString(` xmlns="`) - p.EscapeString(start.Name.Space) - p.WriteByte('"') - } - - // Attributes - for _, attr := range start.Attr { - name := attr.Name - if name.Local == "" { - continue - } - p.WriteByte(' ') - if name.Space != "" { - p.WriteString(p.createAttrPrefix(name.Space)) - p.WriteByte(':') - } - p.WriteString(name.Local) - p.WriteString(`="`) - p.EscapeString(attr.Value) - p.WriteByte('"') - } - p.WriteByte('>') - return nil -} - -func (p *printer) writeEnd(name Name) error { - if name.Local == "" { - return fmt.Errorf("xml: end tag with no name") - } - if len(p.tags) == 0 || p.tags[len(p.tags)-1].Local == "" { - return fmt.Errorf("xml: end tag without start tag", name.Local) - } - if top := p.tags[len(p.tags)-1]; top != name { - if top.Local != name.Local { - return fmt.Errorf("xml: end tag does not match start tag <%s>", name.Local, top.Local) - } - return fmt.Errorf("xml: end tag in namespace %s does not match start tag <%s> in namespace %s", name.Local, name.Space, top.Local, top.Space) - } - p.tags = p.tags[:len(p.tags)-1] - - p.writeIndent(-1) - p.WriteByte('<') - p.WriteByte('/') - p.WriteString(name.Local) - p.WriteByte('>') - p.popPrefix() - return nil -} - -func (p *printer) marshalSimple(typ reflect.Type, val reflect.Value) (string, []byte, error) { - switch val.Kind() { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return strconv.FormatInt(val.Int(), 10), nil, nil - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - return strconv.FormatUint(val.Uint(), 10), nil, nil - case reflect.Float32, reflect.Float64: - return strconv.FormatFloat(val.Float(), 'g', -1, val.Type().Bits()), nil, nil - case reflect.String: - return val.String(), nil, nil - case reflect.Bool: - return strconv.FormatBool(val.Bool()), nil, nil - case reflect.Array: - if typ.Elem().Kind() != reflect.Uint8 { - break - } - // [...]byte - var bytes []byte - if val.CanAddr() { - bytes = val.Slice(0, val.Len()).Bytes() - } else { - bytes = make([]byte, val.Len()) - reflect.Copy(reflect.ValueOf(bytes), val) - } - return "", bytes, nil - case reflect.Slice: - if typ.Elem().Kind() != reflect.Uint8 { - break - } - // []byte - return "", val.Bytes(), nil - } - return "", nil, &UnsupportedTypeError{typ} -} - -var ddBytes = []byte("--") - -func (p *printer) marshalStruct(tinfo *typeInfo, val reflect.Value) error { - s := parentStack{p: p} - for i := range tinfo.fields { - finfo := &tinfo.fields[i] - if finfo.flags&fAttr != 0 { - continue - } - vf := finfo.value(val) - - // Dereference or skip nil pointer, interface values. - switch vf.Kind() { - case reflect.Ptr, reflect.Interface: - if !vf.IsNil() { - vf = vf.Elem() - } - } - - switch finfo.flags & fMode { - case fCharData: - if vf.CanInterface() && vf.Type().Implements(textMarshalerType) { - data, err := vf.Interface().(encoding.TextMarshaler).MarshalText() - if err != nil { - return err - } - Escape(p, data) - continue - } - if vf.CanAddr() { - pv := vf.Addr() - if pv.CanInterface() && pv.Type().Implements(textMarshalerType) { - data, err := pv.Interface().(encoding.TextMarshaler).MarshalText() - if err != nil { - return err - } - Escape(p, data) - continue - } - } - var scratch [64]byte - switch vf.Kind() { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - Escape(p, strconv.AppendInt(scratch[:0], vf.Int(), 10)) - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - Escape(p, strconv.AppendUint(scratch[:0], vf.Uint(), 10)) - case reflect.Float32, reflect.Float64: - Escape(p, strconv.AppendFloat(scratch[:0], vf.Float(), 'g', -1, vf.Type().Bits())) - case reflect.Bool: - Escape(p, strconv.AppendBool(scratch[:0], vf.Bool())) - case reflect.String: - if err := EscapeText(p, []byte(vf.String())); err != nil { - return err - } - case reflect.Slice: - if elem, ok := vf.Interface().([]byte); ok { - if err := EscapeText(p, elem); err != nil { - return err - } - } - } - continue - - case fComment: - k := vf.Kind() - if !(k == reflect.String || k == reflect.Slice && vf.Type().Elem().Kind() == reflect.Uint8) { - return fmt.Errorf("xml: bad type for comment field of %s", val.Type()) - } - if vf.Len() == 0 { - continue - } - p.writeIndent(0) - p.WriteString("" is invalid grammar. Make it "- -->" - p.WriteByte(' ') - } - p.WriteString("-->") - continue - - case fInnerXml: - iface := vf.Interface() - switch raw := iface.(type) { - case []byte: - p.Write(raw) - continue - case string: - p.WriteString(raw) - continue - } - - case fElement, fElement | fAny: - if err := s.trim(finfo.parents); err != nil { - return err - } - if len(finfo.parents) > len(s.stack) { - if vf.Kind() != reflect.Ptr && vf.Kind() != reflect.Interface || !vf.IsNil() { - if err := s.push(finfo.parents[len(s.stack):]); err != nil { - return err - } - } - } - } - if err := p.marshalValue(vf, finfo, nil); err != nil { - return err - } - } - s.trim(nil) - return p.cachedWriteError() -} - -// return the bufio Writer's cached write error -func (p *printer) cachedWriteError() error { - _, err := p.Write(nil) - return err -} - -func (p *printer) writeIndent(depthDelta int) { - if len(p.prefix) == 0 && len(p.indent) == 0 { - return - } - if depthDelta < 0 { - p.depth-- - if p.indentedIn { - p.indentedIn = false - return - } - p.indentedIn = false - } - if p.putNewline { - p.WriteByte('\n') - } else { - p.putNewline = true - } - if len(p.prefix) > 0 { - p.WriteString(p.prefix) - } - if len(p.indent) > 0 { - for i := 0; i < p.depth; i++ { - p.WriteString(p.indent) - } - } - if depthDelta > 0 { - p.depth++ - p.indentedIn = true - } -} - -type parentStack struct { - p *printer - stack []string -} - -// trim updates the XML context to match the longest common prefix of the stack -// and the given parents. A closing tag will be written for every parent -// popped. Passing a zero slice or nil will close all the elements. -func (s *parentStack) trim(parents []string) error { - split := 0 - for ; split < len(parents) && split < len(s.stack); split++ { - if parents[split] != s.stack[split] { - break - } - } - for i := len(s.stack) - 1; i >= split; i-- { - if err := s.p.writeEnd(Name{Local: s.stack[i]}); err != nil { - return err - } - } - s.stack = parents[:split] - return nil -} - -// push adds parent elements to the stack and writes open tags. -func (s *parentStack) push(parents []string) error { - for i := 0; i < len(parents); i++ { - if err := s.p.writeStart(&StartElement{Name: Name{Local: parents[i]}}); err != nil { - return err - } - } - s.stack = append(s.stack, parents...) - return nil -} - -// A MarshalXMLError is returned when Marshal encounters a type -// that cannot be converted into XML. -type UnsupportedTypeError struct { - Type reflect.Type -} - -func (e *UnsupportedTypeError) Error() string { - return "xml: unsupported type: " + e.Type.String() -} - -func isEmptyValue(v reflect.Value) bool { - switch v.Kind() { - case reflect.Array, reflect.Map, reflect.Slice, reflect.String: - return v.Len() == 0 - case reflect.Bool: - return !v.Bool() - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return v.Int() == 0 - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - return v.Uint() == 0 - case reflect.Float32, reflect.Float64: - return v.Float() == 0 - case reflect.Interface, reflect.Ptr: - return v.IsNil() - } - return false -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/xml/read.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/xml/read.go deleted file mode 100644 index 5b407b79..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/xml/read.go +++ /dev/null @@ -1,779 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package xml - -import ( - "bytes" - "encoding" - "errors" - "fmt" - "reflect" - "strconv" - "strings" -) - -// BUG(rsc): Mapping between XML elements and data structures is inherently flawed: -// an XML element is an order-dependent collection of anonymous -// values, while a data structure is an order-independent collection -// of named values. -// See package json for a textual representation more suitable -// to data structures. - -// Unmarshal parses the XML-encoded data and stores the result in -// the value pointed to by v, which must be an arbitrary struct, -// slice, or string. Well-formed data that does not fit into v is -// discarded. -// -// Because Unmarshal uses the reflect package, it can only assign -// to exported (upper case) fields. Unmarshal uses a case-sensitive -// comparison to match XML element names to tag values and struct -// field names. -// -// Unmarshal maps an XML element to a struct using the following rules. -// In the rules, the tag of a field refers to the value associated with the -// key 'xml' in the struct field's tag (see the example above). -// -// * If the struct has a field of type []byte or string with tag -// ",innerxml", Unmarshal accumulates the raw XML nested inside the -// element in that field. The rest of the rules still apply. -// -// * If the struct has a field named XMLName of type xml.Name, -// Unmarshal records the element name in that field. -// -// * If the XMLName field has an associated tag of the form -// "name" or "namespace-URL name", the XML element must have -// the given name (and, optionally, name space) or else Unmarshal -// returns an error. -// -// * If the XML element has an attribute whose name matches a -// struct field name with an associated tag containing ",attr" or -// the explicit name in a struct field tag of the form "name,attr", -// Unmarshal records the attribute value in that field. -// -// * If the XML element contains character data, that data is -// accumulated in the first struct field that has tag ",chardata". -// The struct field may have type []byte or string. -// If there is no such field, the character data is discarded. -// -// * If the XML element contains comments, they are accumulated in -// the first struct field that has tag ",comment". The struct -// field may have type []byte or string. If there is no such -// field, the comments are discarded. -// -// * If the XML element contains a sub-element whose name matches -// the prefix of a tag formatted as "a" or "a>b>c", unmarshal -// will descend into the XML structure looking for elements with the -// given names, and will map the innermost elements to that struct -// field. A tag starting with ">" is equivalent to one starting -// with the field name followed by ">". -// -// * If the XML element contains a sub-element whose name matches -// a struct field's XMLName tag and the struct field has no -// explicit name tag as per the previous rule, unmarshal maps -// the sub-element to that struct field. -// -// * If the XML element contains a sub-element whose name matches a -// field without any mode flags (",attr", ",chardata", etc), Unmarshal -// maps the sub-element to that struct field. -// -// * If the XML element contains a sub-element that hasn't matched any -// of the above rules and the struct has a field with tag ",any", -// unmarshal maps the sub-element to that struct field. -// -// * An anonymous struct field is handled as if the fields of its -// value were part of the outer struct. -// -// * A struct field with tag "-" is never unmarshalled into. -// -// Unmarshal maps an XML element to a string or []byte by saving the -// concatenation of that element's character data in the string or -// []byte. The saved []byte is never nil. -// -// Unmarshal maps an attribute value to a string or []byte by saving -// the value in the string or slice. -// -// Unmarshal maps an XML element to a slice by extending the length of -// the slice and mapping the element to the newly created value. -// -// Unmarshal maps an XML element or attribute value to a bool by -// setting it to the boolean value represented by the string. -// -// Unmarshal maps an XML element or attribute value to an integer or -// floating-point field by setting the field to the result of -// interpreting the string value in decimal. There is no check for -// overflow. -// -// Unmarshal maps an XML element to an xml.Name by recording the -// element name. -// -// Unmarshal maps an XML element to a pointer by setting the pointer -// to a freshly allocated value and then mapping the element to that value. -// -func Unmarshal(data []byte, v interface{}) error { - return NewDecoder(bytes.NewReader(data)).Decode(v) -} - -// Decode works like xml.Unmarshal, except it reads the decoder -// stream to find the start element. -func (d *Decoder) Decode(v interface{}) error { - return d.DecodeElement(v, nil) -} - -// DecodeElement works like xml.Unmarshal except that it takes -// a pointer to the start XML element to decode into v. -// It is useful when a client reads some raw XML tokens itself -// but also wants to defer to Unmarshal for some elements. -func (d *Decoder) DecodeElement(v interface{}, start *StartElement) error { - val := reflect.ValueOf(v) - if val.Kind() != reflect.Ptr { - return errors.New("non-pointer passed to Unmarshal") - } - return d.unmarshal(val.Elem(), start) -} - -// An UnmarshalError represents an error in the unmarshalling process. -type UnmarshalError string - -func (e UnmarshalError) Error() string { return string(e) } - -// Unmarshaler is the interface implemented by objects that can unmarshal -// an XML element description of themselves. -// -// UnmarshalXML decodes a single XML element -// beginning with the given start element. -// If it returns an error, the outer call to Unmarshal stops and -// returns that error. -// UnmarshalXML must consume exactly one XML element. -// One common implementation strategy is to unmarshal into -// a separate value with a layout matching the expected XML -// using d.DecodeElement, and then to copy the data from -// that value into the receiver. -// Another common strategy is to use d.Token to process the -// XML object one token at a time. -// UnmarshalXML may not use d.RawToken. -type Unmarshaler interface { - UnmarshalXML(d *Decoder, start StartElement) error -} - -// UnmarshalerAttr is the interface implemented by objects that can unmarshal -// an XML attribute description of themselves. -// -// UnmarshalXMLAttr decodes a single XML attribute. -// If it returns an error, the outer call to Unmarshal stops and -// returns that error. -// UnmarshalXMLAttr is used only for struct fields with the -// "attr" option in the field tag. -type UnmarshalerAttr interface { - UnmarshalXMLAttr(attr Attr) error -} - -// receiverType returns the receiver type to use in an expression like "%s.MethodName". -func receiverType(val interface{}) string { - t := reflect.TypeOf(val) - if t.Name() != "" { - return t.String() - } - return "(" + t.String() + ")" -} - -// unmarshalInterface unmarshals a single XML element into val. -// start is the opening tag of the element. -func (p *Decoder) unmarshalInterface(val Unmarshaler, start *StartElement) error { - // Record that decoder must stop at end tag corresponding to start. - p.pushEOF() - - p.unmarshalDepth++ - err := val.UnmarshalXML(p, *start) - p.unmarshalDepth-- - if err != nil { - p.popEOF() - return err - } - - if !p.popEOF() { - return fmt.Errorf("xml: %s.UnmarshalXML did not consume entire <%s> element", receiverType(val), start.Name.Local) - } - - return nil -} - -// unmarshalTextInterface unmarshals a single XML element into val. -// The chardata contained in the element (but not its children) -// is passed to the text unmarshaler. -func (p *Decoder) unmarshalTextInterface(val encoding.TextUnmarshaler, start *StartElement) error { - var buf []byte - depth := 1 - for depth > 0 { - t, err := p.Token() - if err != nil { - return err - } - switch t := t.(type) { - case CharData: - if depth == 1 { - buf = append(buf, t...) - } - case StartElement: - depth++ - case EndElement: - depth-- - } - } - return val.UnmarshalText(buf) -} - -// unmarshalAttr unmarshals a single XML attribute into val. -func (p *Decoder) unmarshalAttr(val reflect.Value, attr Attr) error { - if val.Kind() == reflect.Ptr { - if val.IsNil() { - val.Set(reflect.New(val.Type().Elem())) - } - val = val.Elem() - } - - if val.CanInterface() && val.Type().Implements(unmarshalerAttrType) { - // This is an unmarshaler with a non-pointer receiver, - // so it's likely to be incorrect, but we do what we're told. - return val.Interface().(UnmarshalerAttr).UnmarshalXMLAttr(attr) - } - if val.CanAddr() { - pv := val.Addr() - if pv.CanInterface() && pv.Type().Implements(unmarshalerAttrType) { - return pv.Interface().(UnmarshalerAttr).UnmarshalXMLAttr(attr) - } - } - - // Not an UnmarshalerAttr; try encoding.TextUnmarshaler. - if val.CanInterface() && val.Type().Implements(textUnmarshalerType) { - // This is an unmarshaler with a non-pointer receiver, - // so it's likely to be incorrect, but we do what we're told. - return val.Interface().(encoding.TextUnmarshaler).UnmarshalText([]byte(attr.Value)) - } - if val.CanAddr() { - pv := val.Addr() - if pv.CanInterface() && pv.Type().Implements(textUnmarshalerType) { - return pv.Interface().(encoding.TextUnmarshaler).UnmarshalText([]byte(attr.Value)) - } - } - - copyValue(val, []byte(attr.Value)) - return nil -} - -var ( - unmarshalerType = reflect.TypeOf((*Unmarshaler)(nil)).Elem() - unmarshalerAttrType = reflect.TypeOf((*UnmarshalerAttr)(nil)).Elem() - textUnmarshalerType = reflect.TypeOf((*encoding.TextUnmarshaler)(nil)).Elem() -) - -// Find reflect.Type for an element's type attribute. -func (p *Decoder) typeForElement(val reflect.Value, start *StartElement) reflect.Type { - t := "" - for i, a := range start.Attr { - if a.Name == xmlSchemaInstance { - t = a.Value - // HACK: ensure xsi:type is last in the list to avoid using that value for - // a "type" attribute, such as ManagedObjectReference.Type for example. - // Note that xsi:type is already the last attribute in VC/ESX responses. - // This is only an issue with govmomi simulator generated responses. - // Proper fix will require finding a few needles in this xml package haystack. - x := len(start.Attr) - 1 - if i != x { - start.Attr[i] = start.Attr[x] - start.Attr[x] = a - } - break - } - } - - if t == "" { - // No type attribute; fall back to looking up type by interface name. - t = val.Type().Name() - } - - // Maybe the type is a basic xsd:* type. - typ := stringToType(t) - if typ != nil { - return typ - } - - // Maybe the type is a custom type. - if p.TypeFunc != nil { - if typ, ok := p.TypeFunc(t); ok { - return typ - } - } - - return nil -} - -// Unmarshal a single XML element into val. -func (p *Decoder) unmarshal(val reflect.Value, start *StartElement) error { - // Find start element if we need it. - if start == nil { - for { - tok, err := p.Token() - if err != nil { - return err - } - if t, ok := tok.(StartElement); ok { - start = &t - break - } - } - } - - // Try to figure out type for empty interface values. - if val.Kind() == reflect.Interface && val.IsNil() { - typ := p.typeForElement(val, start) - if typ != nil { - pval := reflect.New(typ).Elem() - err := p.unmarshal(pval, start) - if err != nil { - return err - } - - for i := 0; i < 2; i++ { - if typ.Implements(val.Type()) { - val.Set(pval) - return nil - } - - typ = reflect.PtrTo(typ) - pval = pval.Addr() - } - - val.Set(pval) - return nil - } - } - - // Load value from interface, but only if the result will be - // usefully addressable. - if val.Kind() == reflect.Interface && !val.IsNil() { - e := val.Elem() - if e.Kind() == reflect.Ptr && !e.IsNil() { - val = e - } - } - - if val.Kind() == reflect.Ptr { - if val.IsNil() { - val.Set(reflect.New(val.Type().Elem())) - } - val = val.Elem() - } - - if val.CanInterface() && val.Type().Implements(unmarshalerType) { - // This is an unmarshaler with a non-pointer receiver, - // so it's likely to be incorrect, but we do what we're told. - return p.unmarshalInterface(val.Interface().(Unmarshaler), start) - } - - if val.CanAddr() { - pv := val.Addr() - if pv.CanInterface() && pv.Type().Implements(unmarshalerType) { - return p.unmarshalInterface(pv.Interface().(Unmarshaler), start) - } - } - - if val.CanInterface() && val.Type().Implements(textUnmarshalerType) { - return p.unmarshalTextInterface(val.Interface().(encoding.TextUnmarshaler), start) - } - - if val.CanAddr() { - pv := val.Addr() - if pv.CanInterface() && pv.Type().Implements(textUnmarshalerType) { - return p.unmarshalTextInterface(pv.Interface().(encoding.TextUnmarshaler), start) - } - } - - var ( - data []byte - saveData reflect.Value - comment []byte - saveComment reflect.Value - saveXML reflect.Value - saveXMLIndex int - saveXMLData []byte - saveAny reflect.Value - sv reflect.Value - tinfo *typeInfo - err error - ) - - switch v := val; v.Kind() { - default: - return errors.New("unknown type " + v.Type().String()) - - case reflect.Interface: - // TODO: For now, simply ignore the field. In the near - // future we may choose to unmarshal the start - // element on it, if not nil. - return p.Skip() - - case reflect.Slice: - typ := v.Type() - if typ.Elem().Kind() == reflect.Uint8 { - // []byte - saveData = v - break - } - - // Slice of element values. - // Grow slice. - n := v.Len() - if n >= v.Cap() { - ncap := 2 * n - if ncap < 4 { - ncap = 4 - } - new := reflect.MakeSlice(typ, n, ncap) - reflect.Copy(new, v) - v.Set(new) - } - v.SetLen(n + 1) - - // Recur to read element into slice. - if err := p.unmarshal(v.Index(n), start); err != nil { - v.SetLen(n) - return err - } - return nil - - case reflect.Bool, reflect.Float32, reflect.Float64, reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr, reflect.String: - saveData = v - - case reflect.Struct: - typ := v.Type() - if typ == nameType { - v.Set(reflect.ValueOf(start.Name)) - break - } - - sv = v - tinfo, err = getTypeInfo(typ) - if err != nil { - return err - } - - // Validate and assign element name. - if tinfo.xmlname != nil { - finfo := tinfo.xmlname - if finfo.name != "" && finfo.name != start.Name.Local { - return UnmarshalError("expected element type <" + finfo.name + "> but have <" + start.Name.Local + ">") - } - if finfo.xmlns != "" && finfo.xmlns != start.Name.Space { - e := "expected element <" + finfo.name + "> in name space " + finfo.xmlns + " but have " - if start.Name.Space == "" { - e += "no name space" - } else { - e += start.Name.Space - } - return UnmarshalError(e) - } - fv := finfo.value(sv) - if _, ok := fv.Interface().(Name); ok { - fv.Set(reflect.ValueOf(start.Name)) - } - } - - // Assign attributes. - // Also, determine whether we need to save character data or comments. - for i := range tinfo.fields { - finfo := &tinfo.fields[i] - switch finfo.flags & fMode { - case fAttr: - strv := finfo.value(sv) - // Look for attribute. - for _, a := range start.Attr { - if a.Name.Local == finfo.name && (finfo.xmlns == "" || finfo.xmlns == a.Name.Space) { - if err := p.unmarshalAttr(strv, a); err != nil { - return err - } - break - } - } - - case fCharData: - if !saveData.IsValid() { - saveData = finfo.value(sv) - } - - case fComment: - if !saveComment.IsValid() { - saveComment = finfo.value(sv) - } - - case fAny, fAny | fElement: - if !saveAny.IsValid() { - saveAny = finfo.value(sv) - } - - case fInnerXml: - if !saveXML.IsValid() { - saveXML = finfo.value(sv) - if p.saved == nil { - saveXMLIndex = 0 - p.saved = new(bytes.Buffer) - } else { - saveXMLIndex = p.savedOffset() - } - } - } - } - } - - // Find end element. - // Process sub-elements along the way. -Loop: - for { - var savedOffset int - if saveXML.IsValid() { - savedOffset = p.savedOffset() - } - tok, err := p.Token() - if err != nil { - return err - } - switch t := tok.(type) { - case StartElement: - consumed := false - if sv.IsValid() { - consumed, err = p.unmarshalPath(tinfo, sv, nil, &t) - if err != nil { - return err - } - if !consumed && saveAny.IsValid() { - consumed = true - if err := p.unmarshal(saveAny, &t); err != nil { - return err - } - } - } - if !consumed { - if err := p.Skip(); err != nil { - return err - } - } - - case EndElement: - if saveXML.IsValid() { - saveXMLData = p.saved.Bytes()[saveXMLIndex:savedOffset] - if saveXMLIndex == 0 { - p.saved = nil - } - } - break Loop - - case CharData: - if saveData.IsValid() { - data = append(data, t...) - } - - case Comment: - if saveComment.IsValid() { - comment = append(comment, t...) - } - } - } - - if saveData.IsValid() && saveData.CanInterface() && saveData.Type().Implements(textUnmarshalerType) { - if err := saveData.Interface().(encoding.TextUnmarshaler).UnmarshalText(data); err != nil { - return err - } - saveData = reflect.Value{} - } - - if saveData.IsValid() && saveData.CanAddr() { - pv := saveData.Addr() - if pv.CanInterface() && pv.Type().Implements(textUnmarshalerType) { - if err := pv.Interface().(encoding.TextUnmarshaler).UnmarshalText(data); err != nil { - return err - } - saveData = reflect.Value{} - } - } - - if err := copyValue(saveData, data); err != nil { - return err - } - - switch t := saveComment; t.Kind() { - case reflect.String: - t.SetString(string(comment)) - case reflect.Slice: - t.Set(reflect.ValueOf(comment)) - } - - switch t := saveXML; t.Kind() { - case reflect.String: - t.SetString(string(saveXMLData)) - case reflect.Slice: - t.Set(reflect.ValueOf(saveXMLData)) - } - - return nil -} - -func copyValue(dst reflect.Value, src []byte) (err error) { - dst0 := dst - - if dst.Kind() == reflect.Ptr { - if dst.IsNil() { - dst.Set(reflect.New(dst.Type().Elem())) - } - dst = dst.Elem() - } - - // Save accumulated data. - switch dst.Kind() { - case reflect.Invalid: - // Probably a comment. - default: - return errors.New("cannot unmarshal into " + dst0.Type().String()) - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - itmp, err := strconv.ParseInt(string(src), 10, dst.Type().Bits()) - if err != nil { - return err - } - dst.SetInt(itmp) - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - var utmp uint64 - if len(src) > 0 && src[0] == '-' { - // Negative value for unsigned field. - // Assume it was serialized following two's complement. - itmp, err := strconv.ParseInt(string(src), 10, dst.Type().Bits()) - if err != nil { - return err - } - // Reinterpret value based on type width. - switch dst.Type().Bits() { - case 8: - utmp = uint64(uint8(itmp)) - case 16: - utmp = uint64(uint16(itmp)) - case 32: - utmp = uint64(uint32(itmp)) - case 64: - utmp = uint64(uint64(itmp)) - } - } else { - utmp, err = strconv.ParseUint(string(src), 10, dst.Type().Bits()) - if err != nil { - return err - } - } - dst.SetUint(utmp) - case reflect.Float32, reflect.Float64: - ftmp, err := strconv.ParseFloat(string(src), dst.Type().Bits()) - if err != nil { - return err - } - dst.SetFloat(ftmp) - case reflect.Bool: - value, err := strconv.ParseBool(strings.TrimSpace(string(src))) - if err != nil { - return err - } - dst.SetBool(value) - case reflect.String: - dst.SetString(string(src)) - case reflect.Slice: - if len(src) == 0 { - // non-nil to flag presence - src = []byte{} - } - dst.SetBytes(src) - } - return nil -} - -// unmarshalPath walks down an XML structure looking for wanted -// paths, and calls unmarshal on them. -// The consumed result tells whether XML elements have been consumed -// from the Decoder until start's matching end element, or if it's -// still untouched because start is uninteresting for sv's fields. -func (p *Decoder) unmarshalPath(tinfo *typeInfo, sv reflect.Value, parents []string, start *StartElement) (consumed bool, err error) { - recurse := false -Loop: - for i := range tinfo.fields { - finfo := &tinfo.fields[i] - if finfo.flags&fElement == 0 || len(finfo.parents) < len(parents) || finfo.xmlns != "" && finfo.xmlns != start.Name.Space { - continue - } - for j := range parents { - if parents[j] != finfo.parents[j] { - continue Loop - } - } - if len(finfo.parents) == len(parents) && finfo.name == start.Name.Local { - // It's a perfect match, unmarshal the field. - return true, p.unmarshal(finfo.value(sv), start) - } - if len(finfo.parents) > len(parents) && finfo.parents[len(parents)] == start.Name.Local { - // It's a prefix for the field. Break and recurse - // since it's not ok for one field path to be itself - // the prefix for another field path. - recurse = true - - // We can reuse the same slice as long as we - // don't try to append to it. - parents = finfo.parents[:len(parents)+1] - break - } - } - if !recurse { - // We have no business with this element. - return false, nil - } - // The element is not a perfect match for any field, but one - // or more fields have the path to this element as a parent - // prefix. Recurse and attempt to match these. - for { - var tok Token - tok, err = p.Token() - if err != nil { - return true, err - } - switch t := tok.(type) { - case StartElement: - consumed2, err := p.unmarshalPath(tinfo, sv, parents, &t) - if err != nil { - return true, err - } - if !consumed2 { - if err := p.Skip(); err != nil { - return true, err - } - } - case EndElement: - return true, nil - } - } -} - -// Skip reads tokens until it has consumed the end element -// matching the most recent start element already consumed. -// It recurs if it encounters a start element, so it can be used to -// skip nested structures. -// It returns nil if it finds an end element matching the start -// element; otherwise it returns an error describing the problem. -func (d *Decoder) Skip() error { - for { - tok, err := d.Token() - if err != nil { - return err - } - switch tok.(type) { - case StartElement: - if err := d.Skip(); err != nil { - return err - } - case EndElement: - return nil - } - } -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/xml/typeinfo.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/xml/typeinfo.go deleted file mode 100644 index 086e83b6..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/xml/typeinfo.go +++ /dev/null @@ -1,366 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package xml - -import ( - "fmt" - "reflect" - "strings" - "sync" -) - -// typeInfo holds details for the xml representation of a type. -type typeInfo struct { - xmlname *fieldInfo - fields []fieldInfo -} - -// fieldInfo holds details for the xml representation of a single field. -type fieldInfo struct { - idx []int - name string - xmlns string - flags fieldFlags - parents []string -} - -type fieldFlags int - -const ( - fElement fieldFlags = 1 << iota - fAttr - fCharData - fInnerXml - fComment - fAny - - fOmitEmpty - fTypeAttr - - fMode = fElement | fAttr | fCharData | fInnerXml | fComment | fAny -) - -var tinfoMap = make(map[reflect.Type]*typeInfo) -var tinfoLock sync.RWMutex - -var nameType = reflect.TypeOf(Name{}) - -// getTypeInfo returns the typeInfo structure with details necessary -// for marshalling and unmarshalling typ. -func getTypeInfo(typ reflect.Type) (*typeInfo, error) { - tinfoLock.RLock() - tinfo, ok := tinfoMap[typ] - tinfoLock.RUnlock() - if ok { - return tinfo, nil - } - tinfo = &typeInfo{} - if typ.Kind() == reflect.Struct && typ != nameType { - n := typ.NumField() - for i := 0; i < n; i++ { - f := typ.Field(i) - if f.PkgPath != "" || f.Tag.Get("xml") == "-" { - continue // Private field - } - - // For embedded structs, embed its fields. - if f.Anonymous { - t := f.Type - if t.Kind() == reflect.Ptr { - t = t.Elem() - } - if t.Kind() == reflect.Struct { - inner, err := getTypeInfo(t) - if err != nil { - return nil, err - } - if tinfo.xmlname == nil { - tinfo.xmlname = inner.xmlname - } - for _, finfo := range inner.fields { - finfo.idx = append([]int{i}, finfo.idx...) - if err := addFieldInfo(typ, tinfo, &finfo); err != nil { - return nil, err - } - } - continue - } - } - - finfo, err := structFieldInfo(typ, &f) - if err != nil { - return nil, err - } - - if f.Name == "XMLName" { - tinfo.xmlname = finfo - continue - } - - // Add the field if it doesn't conflict with other fields. - if err := addFieldInfo(typ, tinfo, finfo); err != nil { - return nil, err - } - } - } - tinfoLock.Lock() - tinfoMap[typ] = tinfo - tinfoLock.Unlock() - return tinfo, nil -} - -// structFieldInfo builds and returns a fieldInfo for f. -func structFieldInfo(typ reflect.Type, f *reflect.StructField) (*fieldInfo, error) { - finfo := &fieldInfo{idx: f.Index} - - // Split the tag from the xml namespace if necessary. - tag := f.Tag.Get("xml") - if i := strings.Index(tag, " "); i >= 0 { - finfo.xmlns, tag = tag[:i], tag[i+1:] - } - - // Parse flags. - tokens := strings.Split(tag, ",") - if len(tokens) == 1 { - finfo.flags = fElement - } else { - tag = tokens[0] - for _, flag := range tokens[1:] { - switch flag { - case "attr": - finfo.flags |= fAttr - case "chardata": - finfo.flags |= fCharData - case "innerxml": - finfo.flags |= fInnerXml - case "comment": - finfo.flags |= fComment - case "any": - finfo.flags |= fAny - case "omitempty": - finfo.flags |= fOmitEmpty - case "typeattr": - finfo.flags |= fTypeAttr - } - } - - // Validate the flags used. - valid := true - switch mode := finfo.flags & fMode; mode { - case 0: - finfo.flags |= fElement - case fAttr, fCharData, fInnerXml, fComment, fAny: - if f.Name == "XMLName" || tag != "" && mode != fAttr { - valid = false - } - default: - // This will also catch multiple modes in a single field. - valid = false - } - if finfo.flags&fMode == fAny { - finfo.flags |= fElement - } - if finfo.flags&fOmitEmpty != 0 && finfo.flags&(fElement|fAttr) == 0 { - valid = false - } - if !valid { - return nil, fmt.Errorf("xml: invalid tag in field %s of type %s: %q", - f.Name, typ, f.Tag.Get("xml")) - } - } - - // Use of xmlns without a name is not allowed. - if finfo.xmlns != "" && tag == "" { - return nil, fmt.Errorf("xml: namespace without name in field %s of type %s: %q", - f.Name, typ, f.Tag.Get("xml")) - } - - if f.Name == "XMLName" { - // The XMLName field records the XML element name. Don't - // process it as usual because its name should default to - // empty rather than to the field name. - finfo.name = tag - return finfo, nil - } - - if tag == "" { - // If the name part of the tag is completely empty, get - // default from XMLName of underlying struct if feasible, - // or field name otherwise. - if xmlname := lookupXMLName(f.Type); xmlname != nil { - finfo.xmlns, finfo.name = xmlname.xmlns, xmlname.name - } else { - finfo.name = f.Name - } - return finfo, nil - } - - // Prepare field name and parents. - parents := strings.Split(tag, ">") - if parents[0] == "" { - parents[0] = f.Name - } - if parents[len(parents)-1] == "" { - return nil, fmt.Errorf("xml: trailing '>' in field %s of type %s", f.Name, typ) - } - finfo.name = parents[len(parents)-1] - if len(parents) > 1 { - if (finfo.flags & fElement) == 0 { - return nil, fmt.Errorf("xml: %s chain not valid with %s flag", tag, strings.Join(tokens[1:], ",")) - } - finfo.parents = parents[:len(parents)-1] - } - - // If the field type has an XMLName field, the names must match - // so that the behavior of both marshalling and unmarshalling - // is straightforward and unambiguous. - if finfo.flags&fElement != 0 { - ftyp := f.Type - xmlname := lookupXMLName(ftyp) - if xmlname != nil && xmlname.name != finfo.name { - return nil, fmt.Errorf("xml: name %q in tag of %s.%s conflicts with name %q in %s.XMLName", - finfo.name, typ, f.Name, xmlname.name, ftyp) - } - } - return finfo, nil -} - -// lookupXMLName returns the fieldInfo for typ's XMLName field -// in case it exists and has a valid xml field tag, otherwise -// it returns nil. -func lookupXMLName(typ reflect.Type) (xmlname *fieldInfo) { - for typ.Kind() == reflect.Ptr { - typ = typ.Elem() - } - if typ.Kind() != reflect.Struct { - return nil - } - for i, n := 0, typ.NumField(); i < n; i++ { - f := typ.Field(i) - if f.Name != "XMLName" { - continue - } - finfo, err := structFieldInfo(typ, &f) - if finfo.name != "" && err == nil { - return finfo - } - // Also consider errors as a non-existent field tag - // and let getTypeInfo itself report the error. - break - } - return nil -} - -func min(a, b int) int { - if a <= b { - return a - } - return b -} - -// addFieldInfo adds finfo to tinfo.fields if there are no -// conflicts, or if conflicts arise from previous fields that were -// obtained from deeper embedded structures than finfo. In the latter -// case, the conflicting entries are dropped. -// A conflict occurs when the path (parent + name) to a field is -// itself a prefix of another path, or when two paths match exactly. -// It is okay for field paths to share a common, shorter prefix. -func addFieldInfo(typ reflect.Type, tinfo *typeInfo, newf *fieldInfo) error { - var conflicts []int -Loop: - // First, figure all conflicts. Most working code will have none. - for i := range tinfo.fields { - oldf := &tinfo.fields[i] - if oldf.flags&fMode != newf.flags&fMode { - continue - } - if oldf.xmlns != "" && newf.xmlns != "" && oldf.xmlns != newf.xmlns { - continue - } - minl := min(len(newf.parents), len(oldf.parents)) - for p := 0; p < minl; p++ { - if oldf.parents[p] != newf.parents[p] { - continue Loop - } - } - if len(oldf.parents) > len(newf.parents) { - if oldf.parents[len(newf.parents)] == newf.name { - conflicts = append(conflicts, i) - } - } else if len(oldf.parents) < len(newf.parents) { - if newf.parents[len(oldf.parents)] == oldf.name { - conflicts = append(conflicts, i) - } - } else { - if newf.name == oldf.name { - conflicts = append(conflicts, i) - } - } - } - // Without conflicts, add the new field and return. - if conflicts == nil { - tinfo.fields = append(tinfo.fields, *newf) - return nil - } - - // If any conflict is shallower, ignore the new field. - // This matches the Go field resolution on embedding. - for _, i := range conflicts { - if len(tinfo.fields[i].idx) < len(newf.idx) { - return nil - } - } - - // Otherwise, if any of them is at the same depth level, it's an error. - for _, i := range conflicts { - oldf := &tinfo.fields[i] - if len(oldf.idx) == len(newf.idx) { - f1 := typ.FieldByIndex(oldf.idx) - f2 := typ.FieldByIndex(newf.idx) - return &TagPathError{typ, f1.Name, f1.Tag.Get("xml"), f2.Name, f2.Tag.Get("xml")} - } - } - - // Otherwise, the new field is shallower, and thus takes precedence, - // so drop the conflicting fields from tinfo and append the new one. - for c := len(conflicts) - 1; c >= 0; c-- { - i := conflicts[c] - copy(tinfo.fields[i:], tinfo.fields[i+1:]) - tinfo.fields = tinfo.fields[:len(tinfo.fields)-1] - } - tinfo.fields = append(tinfo.fields, *newf) - return nil -} - -// A TagPathError represents an error in the unmarshalling process -// caused by the use of field tags with conflicting paths. -type TagPathError struct { - Struct reflect.Type - Field1, Tag1 string - Field2, Tag2 string -} - -func (e *TagPathError) Error() string { - return fmt.Sprintf("%s field %q with tag %q conflicts with field %q with tag %q", e.Struct, e.Field1, e.Tag1, e.Field2, e.Tag2) -} - -// value returns v's field value corresponding to finfo. -// It's equivalent to v.FieldByIndex(finfo.idx), but initializes -// and dereferences pointers as necessary. -func (finfo *fieldInfo) value(v reflect.Value) reflect.Value { - for i, x := range finfo.idx { - if i > 0 { - t := v.Type() - if t.Kind() == reflect.Ptr && t.Elem().Kind() == reflect.Struct { - if v.IsNil() { - v.Set(reflect.New(v.Type().Elem())) - } - v = v.Elem() - } - } - v = v.Field(x) - } - return v -} diff --git a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/xml/xml.go b/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/xml/xml.go deleted file mode 100644 index 6c6c5c82..00000000 --- a/vendor/github.com/docker/machine/vendor/github.com/vmware/govmomi/vim25/xml/xml.go +++ /dev/null @@ -1,1939 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package xml implements a simple XML 1.0 parser that -// understands XML name spaces. -package xml - -// References: -// Annotated XML spec: http://www.xml.com/axml/testaxml.htm -// XML name spaces: http://www.w3.org/TR/REC-xml-names/ - -// TODO(rsc): -// Test error handling. - -import ( - "bufio" - "bytes" - "errors" - "fmt" - "io" - "reflect" - "strconv" - "strings" - "unicode" - "unicode/utf8" -) - -// A SyntaxError represents a syntax error in the XML input stream. -type SyntaxError struct { - Msg string - Line int -} - -func (e *SyntaxError) Error() string { - return "XML syntax error on line " + strconv.Itoa(e.Line) + ": " + e.Msg -} - -// A Name represents an XML name (Local) annotated -// with a name space identifier (Space). -// In tokens returned by Decoder.Token, the Space identifier -// is given as a canonical URL, not the short prefix used -// in the document being parsed. -type Name struct { - Space, Local string -} - -// An Attr represents an attribute in an XML element (Name=Value). -type Attr struct { - Name Name - Value string -} - -// A Token is an interface holding one of the token types: -// StartElement, EndElement, CharData, Comment, ProcInst, or Directive. -type Token interface{} - -// A StartElement represents an XML start element. -type StartElement struct { - Name Name - Attr []Attr -} - -func (e StartElement) Copy() StartElement { - attrs := make([]Attr, len(e.Attr)) - copy(attrs, e.Attr) - e.Attr = attrs - return e -} - -// End returns the corresponding XML end element. -func (e StartElement) End() EndElement { - return EndElement{e.Name} -} - -// An EndElement represents an XML end element. -type EndElement struct { - Name Name -} - -// A CharData represents XML character data (raw text), -// in which XML escape sequences have been replaced by -// the characters they represent. -type CharData []byte - -func makeCopy(b []byte) []byte { - b1 := make([]byte, len(b)) - copy(b1, b) - return b1 -} - -func (c CharData) Copy() CharData { return CharData(makeCopy(c)) } - -// A Comment represents an XML comment of the form . -// The bytes do not include the comment markers. -type Comment []byte - -func (c Comment) Copy() Comment { return Comment(makeCopy(c)) } - -// A ProcInst represents an XML processing instruction of the form -type ProcInst struct { - Target string - Inst []byte -} - -func (p ProcInst) Copy() ProcInst { - p.Inst = makeCopy(p.Inst) - return p -} - -// A Directive represents an XML directive of the form . -// The bytes do not include the markers. -type Directive []byte - -func (d Directive) Copy() Directive { return Directive(makeCopy(d)) } - -// CopyToken returns a copy of a Token. -func CopyToken(t Token) Token { - switch v := t.(type) { - case CharData: - return v.Copy() - case Comment: - return v.Copy() - case Directive: - return v.Copy() - case ProcInst: - return v.Copy() - case StartElement: - return v.Copy() - } - return t -} - -// A Decoder represents an XML parser reading a particular input stream. -// The parser assumes that its input is encoded in UTF-8. -type Decoder struct { - // Strict defaults to true, enforcing the requirements - // of the XML specification. - // If set to false, the parser allows input containing common - // mistakes: - // * If an element is missing an end tag, the parser invents - // end tags as necessary to keep the return values from Token - // properly balanced. - // * In attribute values and character data, unknown or malformed - // character entities (sequences beginning with &) are left alone. - // - // Setting: - // - // d.Strict = false; - // d.AutoClose = HTMLAutoClose; - // d.Entity = HTMLEntity - // - // creates a parser that can handle typical HTML. - // - // Strict mode does not enforce the requirements of the XML name spaces TR. - // In particular it does not reject name space tags using undefined prefixes. - // Such tags are recorded with the unknown prefix as the name space URL. - Strict bool - - // When Strict == false, AutoClose indicates a set of elements to - // consider closed immediately after they are opened, regardless - // of whether an end element is present. - AutoClose []string - - // Entity can be used to map non-standard entity names to string replacements. - // The parser behaves as if these standard mappings are present in the map, - // regardless of the actual map content: - // - // "lt": "<", - // "gt": ">", - // "amp": "&", - // "apos": "'", - // "quot": `"`, - Entity map[string]string - - // CharsetReader, if non-nil, defines a function to generate - // charset-conversion readers, converting from the provided - // non-UTF-8 charset into UTF-8. If CharsetReader is nil or - // returns an error, parsing stops with an error. One of the - // the CharsetReader's result values must be non-nil. - CharsetReader func(charset string, input io.Reader) (io.Reader, error) - - // DefaultSpace sets the default name space used for unadorned tags, - // as if the entire XML stream were wrapped in an element containing - // the attribute xmlns="DefaultSpace". - DefaultSpace string - - // TypeFunc is used to map type names to actual types. - TypeFunc func(string) (reflect.Type, bool) - - r io.ByteReader - buf bytes.Buffer - saved *bytes.Buffer - stk *stack - free *stack - needClose bool - toClose Name - nextToken Token - nextByte int - ns map[string]string - err error - line int - unmarshalDepth int -} - -// NewDecoder creates a new XML parser reading from r. -// If r does not implement io.ByteReader, NewDecoder will -// do its own buffering. -func NewDecoder(r io.Reader) *Decoder { - d := &Decoder{ - ns: make(map[string]string), - nextByte: -1, - line: 1, - Strict: true, - } - d.switchToReader(r) - return d -} - -// Token returns the next XML token in the input stream. -// At the end of the input stream, Token returns nil, io.EOF. -// -// Slices of bytes in the returned token data refer to the -// parser's internal buffer and remain valid only until the next -// call to Token. To acquire a copy of the bytes, call CopyToken -// or the token's Copy method. -// -// Token expands self-closing elements such as
    -// into separate start and end elements returned by successive calls. -// -// Token guarantees that the StartElement and EndElement -// tokens it returns are properly nested and matched: -// if Token encounters an unexpected end element, -// it will return an error. -// -// Token implements XML name spaces as described by -// http://www.w3.org/TR/REC-xml-names/. Each of the -// Name structures contained in the Token has the Space -// set to the URL identifying its name space when known. -// If Token encounters an unrecognized name space prefix, -// it uses the prefix as the Space rather than report an error. -func (d *Decoder) Token() (t Token, err error) { - if d.stk != nil && d.stk.kind == stkEOF { - err = io.EOF - return - } - if d.nextToken != nil { - t = d.nextToken - d.nextToken = nil - } else if t, err = d.rawToken(); err != nil { - return - } - - if !d.Strict { - if t1, ok := d.autoClose(t); ok { - d.nextToken = t - t = t1 - } - } - switch t1 := t.(type) { - case StartElement: - // In XML name spaces, the translations listed in the - // attributes apply to the element name and - // to the other attribute names, so process - // the translations first. - for _, a := range t1.Attr { - if a.Name.Space == "xmlns" { - v, ok := d.ns[a.Name.Local] - d.pushNs(a.Name.Local, v, ok) - d.ns[a.Name.Local] = a.Value - } - if a.Name.Space == "" && a.Name.Local == "xmlns" { - // Default space for untagged names - v, ok := d.ns[""] - d.pushNs("", v, ok) - d.ns[""] = a.Value - } - } - - d.translate(&t1.Name, true) - for i := range t1.Attr { - d.translate(&t1.Attr[i].Name, false) - } - d.pushElement(t1.Name) - t = t1 - - case EndElement: - d.translate(&t1.Name, true) - if !d.popElement(&t1) { - return nil, d.err - } - t = t1 - } - return -} - -const xmlURL = "http://www.w3.org/XML/1998/namespace" - -// Apply name space translation to name n. -// The default name space (for Space=="") -// applies only to element names, not to attribute names. -func (d *Decoder) translate(n *Name, isElementName bool) { - switch { - case n.Space == "xmlns": - return - case n.Space == "" && !isElementName: - return - case n.Space == "xml": - n.Space = xmlURL - case n.Space == "" && n.Local == "xmlns": - return - } - if v, ok := d.ns[n.Space]; ok { - n.Space = v - } else if n.Space == "" { - n.Space = d.DefaultSpace - } -} - -func (d *Decoder) switchToReader(r io.Reader) { - // Get efficient byte at a time reader. - // Assume that if reader has its own - // ReadByte, it's efficient enough. - // Otherwise, use bufio. - if rb, ok := r.(io.ByteReader); ok { - d.r = rb - } else { - d.r = bufio.NewReader(r) - } -} - -// Parsing state - stack holds old name space translations -// and the current set of open elements. The translations to pop when -// ending a given tag are *below* it on the stack, which is -// more work but forced on us by XML. -type stack struct { - next *stack - kind int - name Name - ok bool -} - -const ( - stkStart = iota - stkNs - stkEOF -) - -func (d *Decoder) push(kind int) *stack { - s := d.free - if s != nil { - d.free = s.next - } else { - s = new(stack) - } - s.next = d.stk - s.kind = kind - d.stk = s - return s -} - -func (d *Decoder) pop() *stack { - s := d.stk - if s != nil { - d.stk = s.next - s.next = d.free - d.free = s - } - return s -} - -// Record that after the current element is finished -// (that element is already pushed on the stack) -// Token should return EOF until popEOF is called. -func (d *Decoder) pushEOF() { - // Walk down stack to find Start. - // It might not be the top, because there might be stkNs - // entries above it. - start := d.stk - for start.kind != stkStart { - start = start.next - } - // The stkNs entries below a start are associated with that - // element too; skip over them. - for start.next != nil && start.next.kind == stkNs { - start = start.next - } - s := d.free - if s != nil { - d.free = s.next - } else { - s = new(stack) - } - s.kind = stkEOF - s.next = start.next - start.next = s -} - -// Undo a pushEOF. -// The element must have been finished, so the EOF should be at the top of the stack. -func (d *Decoder) popEOF() bool { - if d.stk == nil || d.stk.kind != stkEOF { - return false - } - d.pop() - return true -} - -// Record that we are starting an element with the given name. -func (d *Decoder) pushElement(name Name) { - s := d.push(stkStart) - s.name = name -} - -// Record that we are changing the value of ns[local]. -// The old value is url, ok. -func (d *Decoder) pushNs(local string, url string, ok bool) { - s := d.push(stkNs) - s.name.Local = local - s.name.Space = url - s.ok = ok -} - -// Creates a SyntaxError with the current line number. -func (d *Decoder) syntaxError(msg string) error { - return &SyntaxError{Msg: msg, Line: d.line} -} - -// Record that we are ending an element with the given name. -// The name must match the record at the top of the stack, -// which must be a pushElement record. -// After popping the element, apply any undo records from -// the stack to restore the name translations that existed -// before we saw this element. -func (d *Decoder) popElement(t *EndElement) bool { - s := d.pop() - name := t.Name - switch { - case s == nil || s.kind != stkStart: - d.err = d.syntaxError("unexpected end element ") - return false - case s.name.Local != name.Local: - if !d.Strict { - d.needClose = true - d.toClose = t.Name - t.Name = s.name - return true - } - d.err = d.syntaxError("element <" + s.name.Local + "> closed by ") - return false - case s.name.Space != name.Space: - d.err = d.syntaxError("element <" + s.name.Local + "> in space " + s.name.Space + - "closed by in space " + name.Space) - return false - } - - // Pop stack until a Start or EOF is on the top, undoing the - // translations that were associated with the element we just closed. - for d.stk != nil && d.stk.kind != stkStart && d.stk.kind != stkEOF { - s := d.pop() - if s.ok { - d.ns[s.name.Local] = s.name.Space - } else { - delete(d.ns, s.name.Local) - } - } - - return true -} - -// If the top element on the stack is autoclosing and -// t is not the end tag, invent the end tag. -func (d *Decoder) autoClose(t Token) (Token, bool) { - if d.stk == nil || d.stk.kind != stkStart { - return nil, false - } - name := strings.ToLower(d.stk.name.Local) - for _, s := range d.AutoClose { - if strings.ToLower(s) == name { - // This one should be auto closed if t doesn't close it. - et, ok := t.(EndElement) - if !ok || et.Name.Local != name { - return EndElement{d.stk.name}, true - } - break - } - } - return nil, false -} - -var errRawToken = errors.New("xml: cannot use RawToken from UnmarshalXML method") - -// RawToken is like Token but does not verify that -// start and end elements match and does not translate -// name space prefixes to their corresponding URLs. -func (d *Decoder) RawToken() (Token, error) { - if d.unmarshalDepth > 0 { - return nil, errRawToken - } - return d.rawToken() -} - -func (d *Decoder) rawToken() (Token, error) { - if d.err != nil { - return nil, d.err - } - if d.needClose { - // The last element we read was self-closing and - // we returned just the StartElement half. - // Return the EndElement half now. - d.needClose = false - return EndElement{d.toClose}, nil - } - - b, ok := d.getc() - if !ok { - return nil, d.err - } - - if b != '<' { - // Text section. - d.ungetc(b) - data := d.text(-1, false) - if data == nil { - return nil, d.err - } - return CharData(data), nil - } - - if b, ok = d.mustgetc(); !ok { - return nil, d.err - } - switch b { - case '/': - // ' { - d.err = d.syntaxError("invalid characters between ") - return nil, d.err - } - return EndElement{name}, nil - - case '?': - // ' { - break - } - b0 = b - } - data := d.buf.Bytes() - data = data[0 : len(data)-2] // chop ?> - - if target == "xml" { - enc := procInstEncoding(string(data)) - if enc != "" && enc != "utf-8" && enc != "UTF-8" { - if d.CharsetReader == nil { - d.err = fmt.Errorf("xml: encoding %q declared but Decoder.CharsetReader is nil", enc) - return nil, d.err - } - newr, err := d.CharsetReader(enc, d.r.(io.Reader)) - if err != nil { - d.err = fmt.Errorf("xml: opening charset %q: %v", enc, err) - return nil, d.err - } - if newr == nil { - panic("CharsetReader returned a nil Reader for charset " + enc) - } - d.switchToReader(newr) - } - } - return ProcInst{target, data}, nil - - case '!': - // ' { - break - } - b0, b1 = b1, b - } - data := d.buf.Bytes() - data = data[0 : len(data)-3] // chop --> - return Comment(data), nil - - case '[': // . - data := d.text(-1, true) - if data == nil { - return nil, d.err - } - return CharData(data), nil - } - - // Probably a directive: , , etc. - // We don't care, but accumulate for caller. Quoted angle - // brackets do not count for nesting. - d.buf.Reset() - d.buf.WriteByte(b) - inquote := uint8(0) - depth := 0 - for { - if b, ok = d.mustgetc(); !ok { - return nil, d.err - } - if inquote == 0 && b == '>' && depth == 0 { - break - } - HandleB: - d.buf.WriteByte(b) - switch { - case b == inquote: - inquote = 0 - - case inquote != 0: - // in quotes, no special action - - case b == '\'' || b == '"': - inquote = b - - case b == '>' && inquote == 0: - depth-- - - case b == '<' && inquote == 0: - // Look for

    EE+qP?0puO|v%(e?Io@`Kh3m43{n&r!M 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/T&JKc@0zQxc5D0- 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/github.com/docker/machine/docs/img/machine-mac-win.png b/vendor/github.com/docker/machine/docs/img/machine-mac-win.png deleted file mode 100644 index 82415e301e4b6158aad6856012532373380f4b5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14831 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 diff --git a/vendor/github.com/docker/machine/docs/img/machine.png b/vendor/github.com/docker/machine/docs/img/machine.png deleted file mode 100644 index 666e9bef17babb595f9db9afef82b278d8e2bed6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56747 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%0D5KyKpEBPAs+o?f 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 z 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 acVxi--C!x|fdkM0q_1tPRe9Gw{67KjjKYPTwR& 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